gl-117-1.3.2/0000755000175000017500000000000010214470340011664 5ustar cedriccedricgl-117-1.3.2/aclocal.m40000644000175000017500000010433110145416176013540 0ustar cedriccedric# generated automatically by aclocal 1.8.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # 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. # -*- Autoconf -*- # Copyright (C) 2002, 2003 Free Software Foundation, Inc. # Generated from amversion.in; do not edit by hand. # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 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. AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.8.3])]) # AM_AUX_DIR_EXPAND # Copyright (C) 2001, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 6 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) 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])]) # serial 7 -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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", "GCJ", or "OBJC". # 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 ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; 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. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # 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 ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/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"]) ]) # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 7 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # 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. # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 11 # 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.58])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 # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) 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], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])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) AM_MISSING_PROG(AMTAR, tar) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. 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([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # 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_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. # Copyright (C) 2001, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # -*- Autoconf -*- # Copyright (C) 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # 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, 2002, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # 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 done .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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # 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 supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_PROG_MKDIR_P # --------------- # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. # Copyright (C) 2003, 2004 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories # created by `make install' are always world readable, even if the # installer happens to have an overly restrictive umask (e.g. 077). # This was a mistake. There are at least two reasons why we must not # use `-m 0755': # - it causes special bits like SGID to be ignored, # - it may be too restrictive (some setups expect 775 directories). # # Do not use -m 0755 and let people choose whatever they expect by # setting umask. # # We cannot accept any implementation of `mkdir' that recognizes `-p'. # Some implementations (such as Solaris 8's) are not thread-safe: if a # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' # concurrently, both version can detect that a/ is missing, but only # one can create it and the other will error out. Consequently we # restrict ourselves to GNU make (using the --version option ensures # this.) AC_DEFUN([AM_PROG_MKDIR_P], [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # Keeping the `.' argument allows $(mkdir_p) to be used without # argument. Indeed, we sometimes output rules like # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more # expensive solution, as it forces Make to start a sub-shell.) mkdir_p='mkdir -p -- .' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi AC_SUBST([mkdir_p])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # _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], [AC_FOREACH([_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])]) # # Check to make sure that the build environment is sane. # # Copyright (C) 1996, 1997, 2000, 2001, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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 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)]) # AM_PROG_INSTALL_STRIP # Copyright (C) 2001, 2003 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) gl-117-1.3.2/AUTHORS0000644000175000017500000000004410145416156012742 0ustar cedriccedricThomas A. Drexl gl-117-1.3.2/autom4te.cache/0000755000175000017500000000000010145416201014467 5ustar cedriccedricgl-117-1.3.2/autom4te.cache/output.00000644000175000017500000101752110145416176016132 0ustar cedriccedric@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.59. @%:@ @%:@ Copyright (C) 2003 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 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+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="src/main.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE EGREP LIB@&t@OBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # 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. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= 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 ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -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 | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$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 ;; -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 ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) 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 ;; -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=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 ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && 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'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac 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 echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 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 # 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 its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | 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 if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS # # 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 this package 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 \`..'] _ACEOF cat <<_ACEOF 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] --datadir=DIR read-only architecture-independent data [PREFIX/share] --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] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _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 _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-x use the X Window System --with-opengl-dir= Search for OpenGL files in --with-sdl-dir= Search for SDL files in Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style 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 elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright (C) 2003 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 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { 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` hostinfo = `(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=. echo "PATH: $as_dir" done } >&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_sep= 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX @%:@@%:@ ------------- @%:@@%:@ @%:@@%:@ Output files. @%:@@%:@ @%:@@%:@ ------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >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 # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" 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. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 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 { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 am__api_version="1.8" 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 { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # 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. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done 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. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$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' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 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 $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # Keeping the `.' argument allows $(mkdir_p) to be used without # argument. Indeed, we sometimes output rules like # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more # expensive solution, as it forces Make to start a sub-shell.) mkdir_p='mkdir -p -- .' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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=gl-117 VERSION=1.0 # 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"} AMTAR=${AMTAR-"${am_missing_run}tar"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. ac_config_headers="$ac_config_headers config.h" LIBS="$LIBS -L/usr/X11R6/lib" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-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='\' 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done 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 echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out 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. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$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 echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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 -std1 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 -std1. */ int osf4_cc_array ['\x00' == 0 ? 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 # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext 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 depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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 echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } 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 echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-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 if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; 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) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr 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/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /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 Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err 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="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `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; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # 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" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$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" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}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. cat >>confdefs.h <<\_ACEOF @%:@define X_DISPLAY_MISSING 1 _ACEOF 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 . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f 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. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* 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_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; 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. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* 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_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* 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_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* 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_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; 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 echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi # Check whether --with-opengl-dir or --without-opengl-dir was given. if test "${with_opengl_dir+set}" = set; then withval="$with_opengl_dir" fi; # Check whether --with-sdl-dir or --without-sdl-dir was given. if test "${with_sdl_dir+set}" = set; then withval="$with_sdl_dir" fi; LDFLAGS="$LDFLAGS -lm -lGL -lGLU -lglut" ac_ext=cc 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 -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$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 for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h 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= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done 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 echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$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 echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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 -std1 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 -std1. */ int osf4_cc_array ['\x00' == 0 ? 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 # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext 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 depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 # 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. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done 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. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$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' echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_bigendian=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long l; char c[sizeof (long)]; } u; u.l = 1; exit (u.c[sizeof (long) - 1] == 1); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=no else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) cat >>confdefs.h <<\_ACEOF @%:@define WORDS_BIGENDIAN 1 _ACEOF ;; no) ;; *) { { echo "$as_me:$LINENO: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&5 echo "$as_me: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac echo "$as_me:$LINENO: checking for OpenGL directory" >&5 echo $ECHO_N "checking for OpenGL directory... $ECHO_C" >&6 path="" for tmp in /usr/local /usr/X11R6 /usr $with_opengl_dir do if test -f $tmp/include/GL/gl.h ; then path=$tmp fi done if test -z $path ; then echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6 else echo "$as_me:$LINENO: result: $path" >&5 echo "${ECHO_T}$path" >&6 CPPFLAGS="$CPPFLAGS -I$path/include" CXXFLAGS="$CXXFLAGS -I$path/include" LIBS="$LIBS -L$path/lib" fi echo "$as_me:$LINENO: checking for SDL directory" >&5 echo $ECHO_N "checking for SDL directory... $ECHO_C" >&6 path="" for tmp in /usr/local /usr/X11R6 /usr $with_sdl_dir do if test -f $tmp/include/SDL/SDL.h ; then path=$tmp fi done if test -z $path ; then echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6 else echo "$as_me:$LINENO: result: $path" >&5 echo "${ECHO_T}$path" >&6 CPPFLAGS="$CPPFLAGS -I$path/include" CXXFLAGS="$CXXFLAGS -I$path/include" LIBS="$LIBS -L$path/lib" fi echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #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)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_GL_gl_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/gl.h" >&5 echo $ECHO_N "checking for GL/gl.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_gl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_gl_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_gl_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/gl.h usability" >&5 echo $ECHO_N "checking GL/gl.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/gl.h presence" >&5 echo $ECHO_N "checking GL/gl.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/gl.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/gl.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/gl.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/gl.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/gl.h" >&5 echo $ECHO_N "checking for GL/gl.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_gl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_gl_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_gl_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_gl_h" >&6 fi if test $ac_cv_header_GL_gl_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GL 1 _ACEOF else { { echo "$as_me:$LINENO: error: gl.h not found - please install OpenGL- or Mesa-devel" >&5 echo "$as_me: error: gl.h not found - please install OpenGL- or Mesa-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_GL_glu_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/glu.h" >&5 echo $ECHO_N "checking for GL/glu.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glu_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glu_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glu_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/glu.h usability" >&5 echo $ECHO_N "checking GL/glu.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/glu.h presence" >&5 echo $ECHO_N "checking GL/glu.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/glu.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/glu.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/glu.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/glu.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/glu.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/glu.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/glu.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/glu.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/glu.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/glu.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/glu.h" >&5 echo $ECHO_N "checking for GL/glu.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glu_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_glu_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glu_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glu_h" >&6 fi if test $ac_cv_header_GL_glu_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GLU 1 _ACEOF else { { echo "$as_me:$LINENO: error: glu.h not found - please install GLU- or MesaGLU-devel" >&5 echo "$as_me: error: glu.h not found - please install GLU- or MesaGLU-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_GL_glut_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/glut.h" >&5 echo $ECHO_N "checking for GL/glut.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glut_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glut_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glut_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/glut.h usability" >&5 echo $ECHO_N "checking GL/glut.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/glut.h presence" >&5 echo $ECHO_N "checking GL/glut.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/glut.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/glut.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/glut.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/glut.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/glut.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/glut.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/glut.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/glut.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/glut.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/glut.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/glut.h" >&5 echo $ECHO_N "checking for GL/glut.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glut_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_glut_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glut_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glut_h" >&6 fi if test $ac_cv_header_GL_glut_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GLUT 1 _ACEOF else { { echo "$as_me:$LINENO: error: glut.h not found - please install GLUT- or MesaGLUT-devel" >&5 echo "$as_me: error: glut.h not found - please install GLUT- or MesaGLUT-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo "$as_me:$LINENO: checking for SDL/SDL.h" >&5 echo $ECHO_N "checking for SDL/SDL.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking SDL/SDL.h usability" >&5 echo $ECHO_N "checking SDL/SDL.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking SDL/SDL.h presence" >&5 echo $ECHO_N "checking SDL/SDL.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: SDL/SDL.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: SDL/SDL.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: SDL/SDL.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: SDL/SDL.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: SDL/SDL.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: SDL/SDL.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: SDL/SDL.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: SDL/SDL.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for SDL/SDL.h" >&5 echo $ECHO_N "checking for SDL/SDL.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_SDL_SDL_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_h" >&6 fi if test $ac_cv_header_SDL_SDL_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SDL 1 _ACEOF else { echo "$as_me:$LINENO: WARNING: SDL.h not found - no sounds and no joystick available" >&5 echo "$as_me: WARNING: SDL.h not found - no sounds and no joystick available" >&2;} fi if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo "$as_me:$LINENO: checking for SDL/SDL_mixer.h" >&5 echo $ECHO_N "checking for SDL/SDL_mixer.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_mixer_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_mixer_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking SDL/SDL_mixer.h usability" >&5 echo $ECHO_N "checking SDL/SDL_mixer.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking SDL/SDL_mixer.h presence" >&5 echo $ECHO_N "checking SDL/SDL_mixer.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for SDL/SDL_mixer.h" >&5 echo $ECHO_N "checking for SDL/SDL_mixer.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_SDL_SDL_mixer_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_mixer_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_mixer_h" >&6 fi if test $ac_cv_header_SDL_SDL_mixer_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SDL_MIXER 1 _ACEOF else { echo "$as_me:$LINENO: WARNING: SDL_mixer.h not found - no advanced sounds available" >&5 echo "$as_me: WARNING: SDL_mixer.h not found - no advanced sounds available" >&2;} fi echo "$as_me:$LINENO: checking for glEnable in -lGL" >&5 echo $ECHO_N "checking for glEnable in -lGL... $ECHO_C" >&6 if test "${ac_cv_lib_GL_glEnable+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGL $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char glEnable (); int main () { glEnable (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_GL_glEnable=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GL_glEnable=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glEnable" >&5 echo "${ECHO_T}$ac_cv_lib_GL_glEnable" >&6 if test $ac_cv_lib_GL_glEnable = yes; then LIBS="$LIBS -lGL" else { echo "$as_me:$LINENO: WARNING: GL not found - please install GL or MesaGL" >&5 echo "$as_me: WARNING: GL not found - please install GL or MesaGL" >&2;} fi echo "$as_me:$LINENO: checking for gluPerspective in -lGLU" >&5 echo $ECHO_N "checking for gluPerspective in -lGLU... $ECHO_C" >&6 if test "${ac_cv_lib_GLU_gluPerspective+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGLU $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gluPerspective (); int main () { gluPerspective (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_GLU_gluPerspective=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GLU_gluPerspective=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_GLU_gluPerspective" >&5 echo "${ECHO_T}$ac_cv_lib_GLU_gluPerspective" >&6 if test $ac_cv_lib_GLU_gluPerspective = yes; then LIBS="$LIBS -lGLU" else { echo "$as_me:$LINENO: WARNING: GLU not found - please install GLU or MesaGLU" >&5 echo "$as_me: WARNING: GLU not found - please install GLU or MesaGLU" >&2;} fi echo "$as_me:$LINENO: checking for glutMainLoop in -lglut" >&5 echo $ECHO_N "checking for glutMainLoop in -lglut... $ECHO_C" >&6 if test "${ac_cv_lib_glut_glutMainLoop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lglut $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char glutMainLoop (); int main () { glutMainLoop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_glut_glutMainLoop=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_glut_glutMainLoop=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_glut_glutMainLoop" >&5 echo "${ECHO_T}$ac_cv_lib_glut_glutMainLoop" >&6 if test $ac_cv_lib_glut_glutMainLoop = yes; then LIBS="$LIBS -lglut" else { echo "$as_me:$LINENO: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&5 echo "$as_me: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&2;} fi echo "$as_me:$LINENO: checking for SDL_Init in -lSDL" >&5 echo $ECHO_N "checking for SDL_Init in -lSDL... $ECHO_C" >&6 if test "${ac_cv_lib_SDL_SDL_Init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL -lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char SDL_Init (); int main () { SDL_Init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_SDL_SDL_Init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_SDL_Init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_SDL_Init" >&5 echo "${ECHO_T}$ac_cv_lib_SDL_SDL_Init" >&6 if test $ac_cv_lib_SDL_SDL_Init = yes; then LIBS="$LIBS -lSDL -lSDLmain" else { echo "$as_me:$LINENO: WARNING: SDL not found - please install SDL" >&5 echo "$as_me: WARNING: SDL not found - please install SDL" >&2;} fi echo "$as_me:$LINENO: checking for Mix_LoadMUS in -lSDL_mixer" >&5 echo $ECHO_N "checking for Mix_LoadMUS in -lSDL_mixer... $ECHO_C" >&6 if test "${ac_cv_lib_SDL_mixer_Mix_LoadMUS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL_mixer $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char Mix_LoadMUS (); int main () { Mix_LoadMUS (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_SDL_mixer_Mix_LoadMUS=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_mixer_Mix_LoadMUS=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_mixer_Mix_LoadMUS" >&5 echo "${ECHO_T}$ac_cv_lib_SDL_mixer_Mix_LoadMUS" >&6 if test $ac_cv_lib_SDL_mixer_Mix_LoadMUS = yes; then LIBS="$LIBS -lSDL_mixer" else { echo "$as_me:$LINENO: WARNING: SDL_mixer not found - please install SDL_mixer" >&5 echo "$as_me: WARNING: SDL_mixer not found - please install SDL_mixer" >&2;} fi CFLAGS="$CFLAGS" CPPFLAGS="-DDATADIR='\"$datadir\"' -Wall -pedantic" CXXFLAGS="$CXXFLAGS" ac_config_files="$ac_config_files Makefile src/Makefile" 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, don't put newlines in cache variables' values. # 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. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *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 \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" 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}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # 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+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -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 --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_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. 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=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; 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 if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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 to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@AMTAR@,$AMTAR,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@CPP@,$CPP,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@EGREP@,$EGREP,;t t s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # 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. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #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. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # 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. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || 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 grep '^DEP_FILES *= *[^ @%:@]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # 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 ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # 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 || { (exit 1); exit 1; } fi gl-117-1.3.2/autom4te.cache/output.10000644000175000017500000101752110145416201016120 0ustar cedriccedric@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.59. @%:@ @%:@ Copyright (C) 2003 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 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+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="src/main.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE EGREP LIB@&t@OBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # 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. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= 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 ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -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 | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$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 ;; -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 ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) 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 ;; -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=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 ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && 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'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac 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 echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 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 # 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 its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | 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 if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS # # 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 this package 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 \`..'] _ACEOF cat <<_ACEOF 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] --datadir=DIR read-only architecture-independent data [PREFIX/share] --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] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _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 _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-x use the X Window System --with-opengl-dir= Search for OpenGL files in --with-sdl-dir= Search for SDL files in Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style 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 elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright (C) 2003 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 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { 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` hostinfo = `(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=. echo "PATH: $as_dir" done } >&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_sep= 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX @%:@@%:@ ------------- @%:@@%:@ @%:@@%:@ Output files. @%:@@%:@ @%:@@%:@ ------------- @%:@@%:@ _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >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 # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" 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. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 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 { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 am__api_version="1.8" 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 { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # 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. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done 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. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$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' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 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 $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # Keeping the `.' argument allows $(mkdir_p) to be used without # argument. Indeed, we sometimes output rules like # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more # expensive solution, as it forces Make to start a sub-shell.) mkdir_p='mkdir -p -- .' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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=gl-117 VERSION=1.0 # 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"} AMTAR=${AMTAR-"${am_missing_run}tar"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. ac_config_headers="$ac_config_headers config.h" LIBS="$LIBS -L/usr/X11R6/lib" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-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='\' 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done 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 echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out 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. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$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 echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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 -std1 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 -std1. */ int osf4_cc_array ['\x00' == 0 ? 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 # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext 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 depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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 echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } 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 echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-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 if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; 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) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr 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/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /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 Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err 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="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `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; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # 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" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$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" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}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. cat >>confdefs.h <<\_ACEOF @%:@define X_DISPLAY_MISSING 1 _ACEOF 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 . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f 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. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* 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_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; 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. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* 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_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* 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_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* 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_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; 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 echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi # Check whether --with-opengl-dir or --without-opengl-dir was given. if test "${with_opengl_dir+set}" = set; then withval="$with_opengl_dir" fi; # Check whether --with-sdl-dir or --without-sdl-dir was given. if test "${with_sdl_dir+set}" = set; then withval="$with_sdl_dir" fi; LDFLAGS="$LDFLAGS -lm -lGL -lGLU -lglut" ac_ext=cc 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 -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$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 for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h 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= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done 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 echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$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 echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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 -std1 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 -std1. */ int osf4_cc_array ['\x00' == 0 ? 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 # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF @%:@ifndef __cplusplus choke me @%:@endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration @%:@include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext 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 depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 # 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. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done 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. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$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' echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_bigendian=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long l; char c[sizeof (long)]; } u; u.l = 1; exit (u.c[sizeof (long) - 1] == 1); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=no else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) cat >>confdefs.h <<\_ACEOF @%:@define WORDS_BIGENDIAN 1 _ACEOF ;; no) ;; *) { { echo "$as_me:$LINENO: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&5 echo "$as_me: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac echo "$as_me:$LINENO: checking for OpenGL directory" >&5 echo $ECHO_N "checking for OpenGL directory... $ECHO_C" >&6 path="" for tmp in /usr/local /usr/X11R6 /usr $with_opengl_dir do if test -f $tmp/include/GL/gl.h ; then path=$tmp fi done if test -z $path ; then echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6 else echo "$as_me:$LINENO: result: $path" >&5 echo "${ECHO_T}$path" >&6 CPPFLAGS="$CPPFLAGS -I$path/include" CXXFLAGS="$CXXFLAGS -I$path/include" LIBS="$LIBS -L$path/lib" fi echo "$as_me:$LINENO: checking for SDL directory" >&5 echo $ECHO_N "checking for SDL directory... $ECHO_C" >&6 path="" for tmp in /usr/local /usr/X11R6 /usr $with_sdl_dir do if test -f $tmp/include/SDL/SDL.h ; then path=$tmp fi done if test -z $path ; then echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6 else echo "$as_me:$LINENO: result: $path" >&5 echo "${ECHO_T}$path" >&6 CPPFLAGS="$CPPFLAGS -I$path/include" CXXFLAGS="$CXXFLAGS -I$path/include" LIBS="$LIBS -L$path/lib" fi echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #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)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF @%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_GL_gl_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/gl.h" >&5 echo $ECHO_N "checking for GL/gl.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_gl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_gl_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_gl_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/gl.h usability" >&5 echo $ECHO_N "checking GL/gl.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/gl.h presence" >&5 echo $ECHO_N "checking GL/gl.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/gl.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/gl.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/gl.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/gl.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/gl.h" >&5 echo $ECHO_N "checking for GL/gl.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_gl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_gl_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_gl_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_gl_h" >&6 fi if test $ac_cv_header_GL_gl_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GL 1 _ACEOF else { { echo "$as_me:$LINENO: error: gl.h not found - please install OpenGL- or Mesa-devel" >&5 echo "$as_me: error: gl.h not found - please install OpenGL- or Mesa-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_GL_glu_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/glu.h" >&5 echo $ECHO_N "checking for GL/glu.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glu_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glu_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glu_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/glu.h usability" >&5 echo $ECHO_N "checking GL/glu.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/glu.h presence" >&5 echo $ECHO_N "checking GL/glu.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/glu.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/glu.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/glu.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/glu.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/glu.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/glu.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/glu.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/glu.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/glu.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/glu.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/glu.h" >&5 echo $ECHO_N "checking for GL/glu.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glu_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_glu_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glu_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glu_h" >&6 fi if test $ac_cv_header_GL_glu_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GLU 1 _ACEOF else { { echo "$as_me:$LINENO: error: glu.h not found - please install GLU- or MesaGLU-devel" >&5 echo "$as_me: error: glu.h not found - please install GLU- or MesaGLU-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_GL_glut_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/glut.h" >&5 echo $ECHO_N "checking for GL/glut.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glut_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glut_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glut_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/glut.h usability" >&5 echo $ECHO_N "checking GL/glut.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/glut.h presence" >&5 echo $ECHO_N "checking GL/glut.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/glut.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/glut.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/glut.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/glut.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/glut.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/glut.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/glut.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/glut.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/glut.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/glut.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/glut.h" >&5 echo $ECHO_N "checking for GL/glut.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glut_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_glut_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glut_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glut_h" >&6 fi if test $ac_cv_header_GL_glut_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_GLUT 1 _ACEOF else { { echo "$as_me:$LINENO: error: glut.h not found - please install GLUT- or MesaGLUT-devel" >&5 echo "$as_me: error: glut.h not found - please install GLUT- or MesaGLUT-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo "$as_me:$LINENO: checking for SDL/SDL.h" >&5 echo $ECHO_N "checking for SDL/SDL.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking SDL/SDL.h usability" >&5 echo $ECHO_N "checking SDL/SDL.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking SDL/SDL.h presence" >&5 echo $ECHO_N "checking SDL/SDL.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: SDL/SDL.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: SDL/SDL.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: SDL/SDL.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: SDL/SDL.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: SDL/SDL.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: SDL/SDL.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: SDL/SDL.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: SDL/SDL.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for SDL/SDL.h" >&5 echo $ECHO_N "checking for SDL/SDL.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_SDL_SDL_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_h" >&6 fi if test $ac_cv_header_SDL_SDL_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SDL 1 _ACEOF else { echo "$as_me:$LINENO: WARNING: SDL.h not found - no sounds and no joystick available" >&5 echo "$as_me: WARNING: SDL.h not found - no sounds and no joystick available" >&2;} fi if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo "$as_me:$LINENO: checking for SDL/SDL_mixer.h" >&5 echo $ECHO_N "checking for SDL/SDL_mixer.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_mixer_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_mixer_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking SDL/SDL_mixer.h usability" >&5 echo $ECHO_N "checking SDL/SDL_mixer.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking SDL/SDL_mixer.h presence" >&5 echo $ECHO_N "checking SDL/SDL_mixer.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX @%:@@%:@ ------------------------------------------ @%:@@%:@ @%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ @%:@@%:@ ------------------------------------------ @%:@@%:@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for SDL/SDL_mixer.h" >&5 echo $ECHO_N "checking for SDL/SDL_mixer.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_SDL_SDL_mixer_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_mixer_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_mixer_h" >&6 fi if test $ac_cv_header_SDL_SDL_mixer_h = yes; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_SDL_MIXER 1 _ACEOF else { echo "$as_me:$LINENO: WARNING: SDL_mixer.h not found - no advanced sounds available" >&5 echo "$as_me: WARNING: SDL_mixer.h not found - no advanced sounds available" >&2;} fi echo "$as_me:$LINENO: checking for glEnable in -lGL" >&5 echo $ECHO_N "checking for glEnable in -lGL... $ECHO_C" >&6 if test "${ac_cv_lib_GL_glEnable+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGL $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char glEnable (); int main () { glEnable (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_GL_glEnable=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GL_glEnable=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glEnable" >&5 echo "${ECHO_T}$ac_cv_lib_GL_glEnable" >&6 if test $ac_cv_lib_GL_glEnable = yes; then LIBS="$LIBS -lGL" else { echo "$as_me:$LINENO: WARNING: GL not found - please install GL or MesaGL" >&5 echo "$as_me: WARNING: GL not found - please install GL or MesaGL" >&2;} fi echo "$as_me:$LINENO: checking for gluPerspective in -lGLU" >&5 echo $ECHO_N "checking for gluPerspective in -lGLU... $ECHO_C" >&6 if test "${ac_cv_lib_GLU_gluPerspective+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGLU $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gluPerspective (); int main () { gluPerspective (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_GLU_gluPerspective=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GLU_gluPerspective=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_GLU_gluPerspective" >&5 echo "${ECHO_T}$ac_cv_lib_GLU_gluPerspective" >&6 if test $ac_cv_lib_GLU_gluPerspective = yes; then LIBS="$LIBS -lGLU" else { echo "$as_me:$LINENO: WARNING: GLU not found - please install GLU or MesaGLU" >&5 echo "$as_me: WARNING: GLU not found - please install GLU or MesaGLU" >&2;} fi echo "$as_me:$LINENO: checking for glutMainLoop in -lglut" >&5 echo $ECHO_N "checking for glutMainLoop in -lglut... $ECHO_C" >&6 if test "${ac_cv_lib_glut_glutMainLoop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lglut $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char glutMainLoop (); int main () { glutMainLoop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_glut_glutMainLoop=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_glut_glutMainLoop=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_glut_glutMainLoop" >&5 echo "${ECHO_T}$ac_cv_lib_glut_glutMainLoop" >&6 if test $ac_cv_lib_glut_glutMainLoop = yes; then LIBS="$LIBS -lglut" else { echo "$as_me:$LINENO: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&5 echo "$as_me: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&2;} fi echo "$as_me:$LINENO: checking for SDL_Init in -lSDL" >&5 echo $ECHO_N "checking for SDL_Init in -lSDL... $ECHO_C" >&6 if test "${ac_cv_lib_SDL_SDL_Init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL -lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char SDL_Init (); int main () { SDL_Init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_SDL_SDL_Init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_SDL_Init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_SDL_Init" >&5 echo "${ECHO_T}$ac_cv_lib_SDL_SDL_Init" >&6 if test $ac_cv_lib_SDL_SDL_Init = yes; then LIBS="$LIBS -lSDL -lSDLmain" else { echo "$as_me:$LINENO: WARNING: SDL not found - please install SDL" >&5 echo "$as_me: WARNING: SDL not found - please install SDL" >&2;} fi echo "$as_me:$LINENO: checking for Mix_LoadMUS in -lSDL_mixer" >&5 echo $ECHO_N "checking for Mix_LoadMUS in -lSDL_mixer... $ECHO_C" >&6 if test "${ac_cv_lib_SDL_mixer_Mix_LoadMUS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL_mixer $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char Mix_LoadMUS (); int main () { Mix_LoadMUS (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_SDL_mixer_Mix_LoadMUS=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_mixer_Mix_LoadMUS=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_mixer_Mix_LoadMUS" >&5 echo "${ECHO_T}$ac_cv_lib_SDL_mixer_Mix_LoadMUS" >&6 if test $ac_cv_lib_SDL_mixer_Mix_LoadMUS = yes; then LIBS="$LIBS -lSDL_mixer" else { echo "$as_me:$LINENO: WARNING: SDL_mixer not found - please install SDL_mixer" >&5 echo "$as_me: WARNING: SDL_mixer not found - please install SDL_mixer" >&2;} fi CFLAGS="$CFLAGS" CPPFLAGS="-DDATADIR='\"$datadir\"' -Wall -pedantic" CXXFLAGS="$CXXFLAGS" ac_config_files="$ac_config_files Makefile src/Makefile" 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, don't put newlines in cache variables' values. # 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. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *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 \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" 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}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # 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+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX @%:@@%:@ Running $as_me. @%:@@%:@ _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -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 --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_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. 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=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; 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 if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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 to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@AMTAR@,$AMTAR,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@CPP@,$CPP,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@EGREP@,$EGREP,;t t s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # 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. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #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. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # 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. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || 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 grep '^DEP_FILES *= *[^ @%:@]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # 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 ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # 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 || { (exit 1); exit 1; } fi gl-117-1.3.2/autom4te.cache/requests0000644000175000017500000002763210145416201016277 0ustar cedriccedric# This file was generated. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', '/usr/share/aclocal-1.8/amversion.m4', '/usr/share/aclocal-1.8/auxdir.m4', '/usr/share/aclocal-1.8/cond.m4', '/usr/share/aclocal-1.8/depend.m4', '/usr/share/aclocal-1.8/depout.m4', '/usr/share/aclocal-1.8/header.m4', '/usr/share/aclocal-1.8/init.m4', '/usr/share/aclocal-1.8/install-sh.m4', '/usr/share/aclocal-1.8/lead-dot.m4', '/usr/share/aclocal-1.8/make.m4', '/usr/share/aclocal-1.8/missing.m4', '/usr/share/aclocal-1.8/mkdirp.m4', '/usr/share/aclocal-1.8/options.m4', '/usr/share/aclocal-1.8/sanity.m4', '/usr/share/aclocal-1.8/strip.m4', 'configure.in' ], { 'm4_pattern_forbid' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_C_VOLATILE' => 1, 'AC_TYPE_OFF_T' => 1, 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_REPLACE_FNMATCH' => 1, 'AC_PROG_LIBTOOL' => 1, 'AM_PROG_MKDIR_P' => 1, 'AC_FUNC_STAT' => 1, 'AC_FUNC_WAIT3' => 1, 'AC_HEADER_TIME' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_FUNC_LSTAT' => 1, 'AC_STRUCT_TM' => 1, 'AM_MISSING_HAS_RUN' => 1, 'AC_FUNC_GETMNTENT' => 1, 'AC_TYPE_MODE_T' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRTOD' => 1, 'AM_MISSING_PROG' => 1, 'AC_FUNC_STRNLEN' => 1, 'm4_sinclude' => 1, 'AC_PROG_CXX' => 1, 'AC_PATH_X' => 1, 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, 'AM_PROG_INSTALL_STRIP' => 1, 'AC_PROG_AWK' => 1, '_m4_warn' => 1, 'AC_HEADER_STDC' => 1, 'AC_HEADER_MAJOR' => 1, 'AM_SANITY_CHECK' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, 'AC_PROG_GCC_TRADITIONAL' => 1, 'AM_DEP_TRACK' => 1, 'AC_LIBSOURCE' => 1, 'AM_CONFIG_HEADER' => 1, 'AC_FUNC_MBRTOWC' => 1, 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_TYPE_SIGNAL' => 1, '_AM_IF_OPTION' => 1, 'AC_TYPE_UID_T' => 1, 'AC_PROG_MAKE_SET' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'm4_pattern_allow' => 1, 'sinclude' => 1, 'AM_SET_LEADING_DOT' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, '_AM_DEPENDENCIES' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_PROG_CC' => 1, 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_FORK' => 1, 'AC_FUNC_STRCOLL' => 1, 'AC_FUNC_VPRINTF' => 1, 'AC_PROG_YACC' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, 'GL_PATH_CHECK' => 1, 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, 'AC_FUNC_CHOWN' => 1, 'AC_SUBST' => 1, 'AC_FUNC_ALLOCA' => 1, '_AM_SET_OPTION' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_FUNC_GETPGRP' => 1, 'AC_PROG_RANLIB' => 1, 'AC_FUNC_SETPGRP' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AC_FUNC_MMAP' => 1, 'AC_FUNC_REALLOC' => 1, 'AC_TYPE_SIZE_T' => 1, 'AC_CHECK_TYPES' => 1, 'AC_CONFIG_LINKS' => 1, 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AC_CHECK_MEMBERS' => 1, 'AM_MAINTAINER_MODE' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, 'AC_FUNC_STRFTIME' => 1, 'AC_HEADER_STAT' => 1, 'AC_C_INLINE' => 1, 'AC_PROG_CPP' => 1, 'AC_C_CONST' => 1, 'AC_PROG_LEX' => 1, 'AC_TYPE_PID_T' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AM_AUX_DIR_EXPAND' => 1, 'AC_PROG_INSTALL' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_FUNC_OBSTACK' => 1, 'AC_CHECK_LIB' => 1, 'AC_FUNC_MALLOC' => 1, '_AM_SET_OPTIONS' => 1, 'AC_FUNC_GETGROUPS' => 1, '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, 'AM_PROG_CC_C_O' => 1, '_AM_MANGLE_OPTION' => 1, 'AC_FUNC_MKTIME' => 1, 'AM_CONDITIONAL' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AC_CONFIG_HEADERS' => 1, 'AM_SET_DEPDIR' => 1, 'AC_HEADER_SYS_WAIT' => 1, 'AC_FUNC_MEMCMP' => 1, 'AC_PROG_LN_S' => 1, 'AM_PROG_INSTALL_SH' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, 'AC_CHECK_FUNCS' => 1, 'AM_MAKE_INCLUDE' => 1 } ], 'Autom4te::Request' ), bless( [ '1', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.in' ], { 'm4_pattern_forbid' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_TYPE_OFF_T' => 1, 'AC_C_VOLATILE' => 1, 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_REPLACE_FNMATCH' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_FUNC_STAT' => 1, 'AC_HEADER_TIME' => 1, 'AC_FUNC_WAIT3' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AC_STRUCT_TM' => 1, 'AC_FUNC_LSTAT' => 1, 'AC_TYPE_MODE_T' => 1, 'AC_FUNC_GETMNTENT' => 1, 'AC_FUNC_STRTOD' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRNLEN' => 1, 'm4_sinclude' => 1, 'AC_PROG_CXX' => 1, 'AC_PATH_X' => 1, 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, 'AC_PROG_AWK' => 1, '_m4_warn' => 1, 'AC_HEADER_STDC' => 1, 'AC_HEADER_MAJOR' => 1, 'AC_FUNC_ERROR_AT_LINE' => 1, 'AC_PROG_GCC_TRADITIONAL' => 1, 'AC_LIBSOURCE' => 1, 'AC_FUNC_MBRTOWC' => 1, 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_TYPE_SIGNAL' => 1, 'AC_TYPE_UID_T' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'AC_PROG_MAKE_SET' => 1, 'sinclude' => 1, 'm4_pattern_allow' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_PROG_CC' => 1, 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_FORK' => 1, 'AC_FUNC_VPRINTF' => 1, 'AC_FUNC_STRCOLL' => 1, 'AC_PROG_YACC' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, 'AC_FUNC_CHOWN' => 1, 'AC_SUBST' => 1, 'AC_FUNC_ALLOCA' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_FUNC_GETPGRP' => 1, 'AC_PROG_RANLIB' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_FUNC_SETPGRP' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AC_FUNC_MMAP' => 1, 'AC_FUNC_REALLOC' => 1, 'AC_TYPE_SIZE_T' => 1, 'AC_CONFIG_LINKS' => 1, 'AC_CHECK_TYPES' => 1, 'AC_CHECK_MEMBERS' => 1, 'AM_MAINTAINER_MODE' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, 'AC_FUNC_STRFTIME' => 1, 'AC_HEADER_STAT' => 1, 'AC_C_INLINE' => 1, 'AC_PROG_CPP' => 1, 'AM_ENABLE_MULTILIB' => 1, 'AC_TYPE_PID_T' => 1, 'AC_C_CONST' => 1, 'AC_PROG_LEX' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AC_PROG_INSTALL' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_CHECK_LIB' => 1, 'AC_FUNC_OBSTACK' => 1, 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, 'AM_PROG_CC_C_O' => 1, 'AM_CONDITIONAL' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AC_FUNC_MKTIME' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_HEADER_SYS_WAIT' => 1, 'AC_FUNC_MEMCMP' => 1, 'AC_PROG_LN_S' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_CHECK_FUNCS' => 1 } ], 'Autom4te::Request' ) ); gl-117-1.3.2/autom4te.cache/traces.00000644000175000017500000004304610145416176016053 0ustar cedriccedricm4trace:configure.in:1: -1- AC_INIT([src/main.cpp]) m4trace:configure.in:1: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:1: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:1: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:1: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:1: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:1: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:1: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.in:1: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.in:1: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.in:1: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.in:1: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.in:1: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.in:1: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.in:1: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.in:1: -1- AC_SUBST([datadir], ['${prefix}/share']) m4trace:configure.in:1: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.in:1: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.in:1: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.in:1: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:1: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.in:1: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.in:1: -1- AC_SUBST([infodir], ['${prefix}/info']) m4trace:configure.in:1: -1- AC_SUBST([mandir], ['${prefix}/man']) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.in:1: -1- AC_SUBST([build_alias]) m4trace:configure.in:1: -1- AC_SUBST([host_alias]) m4trace:configure.in:1: -1- AC_SUBST([target_alias]) m4trace:configure.in:1: -1- AC_SUBST([DEFS]) m4trace:configure.in:1: -1- AC_SUBST([ECHO_C]) m4trace:configure.in:1: -1- AC_SUBST([ECHO_N]) m4trace:configure.in:1: -1- AC_SUBST([ECHO_T]) m4trace:configure.in:1: -1- AC_SUBST([LIBS]) m4trace:configure.in:2: -1- AM_INIT_AUTOMAKE([gl-117], [1.0], [200308190000]) m4trace:configure.in:2: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:2: -1- AM_SET_CURRENT_AUTOMAKE_VERSION m4trace:configure.in:2: -1- AM_AUTOMAKE_VERSION([1.8.3]) m4trace:configure.in:2: -1- AC_PROG_INSTALL m4trace:configure.in:2: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:2: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:2: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:2: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.in:2: -1- _AM_SET_OPTION([no-define]) m4trace:configure.in:2: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE], [gl-117]) m4trace:configure.in:2: -1- AC_SUBST([VERSION], [1.0]) m4trace:configure.in:2: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) m4trace:configure.in:2: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.in:2: -1- AM_SANITY_CHECK m4trace:configure.in:2: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) m4trace:configure.in:2: -1- AM_MISSING_HAS_RUN m4trace:configure.in:2: -1- AM_AUX_DIR_EXPAND m4trace:configure.in:2: -1- AC_SUBST([ACLOCAL]) m4trace:configure.in:2: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) m4trace:configure.in:2: -1- AC_SUBST([AUTOCONF]) m4trace:configure.in:2: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) m4trace:configure.in:2: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.in:2: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) m4trace:configure.in:2: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.in:2: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) m4trace:configure.in:2: -1- AC_SUBST([MAKEINFO]) m4trace:configure.in:2: -1- AM_MISSING_PROG([AMTAR], [tar]) m4trace:configure.in:2: -1- AC_SUBST([AMTAR]) m4trace:configure.in:2: -1- AM_PROG_INSTALL_SH m4trace:configure.in:2: -1- AC_SUBST([install_sh]) m4trace:configure.in:2: -1- AM_PROG_INSTALL_STRIP m4trace:configure.in:2: -1- AC_SUBST([STRIP]) m4trace:configure.in:2: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.in:2: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:2: -1- AM_PROG_MKDIR_P m4trace:configure.in:2: -1- AC_SUBST([mkdir_p]) m4trace:configure.in:2: -1- AC_PROG_AWK m4trace:configure.in:2: -1- AC_SUBST([AWK]) m4trace:configure.in:2: -1- AC_PROG_MAKE_SET m4trace:configure.in:2: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:2: -1- AM_SET_LEADING_DOT m4trace:configure.in:2: -1- AC_SUBST([am__leading_dot]) m4trace:configure.in:2: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) m4trace:configure.in:2: -2- _AM_MANGLE_OPTION([no-dependencies]) m4trace:configure.in:3: -1- AM_CONFIG_HEADER([config.h]) m4trace:configure.in:3: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.], [/usr/share/aclocal-1.8/header.m4:23: AM_CONFIG_HEADER is expanded from... configure.in:3: the top level]) m4trace:configure.in:3: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.in:7: -1- AC_PATH_X m4trace:configure.in:7: -1- AC_PROG_CC m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:7: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.in:7: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.in:7: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.in:7: -1- AM_SET_DEPDIR m4trace:configure.in:7: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.in:7: -1- AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.in:7: -1- AM_MAKE_INCLUDE m4trace:configure.in:7: -1- AC_SUBST([am__include]) m4trace:configure.in:7: -1- AC_SUBST([am__quote]) m4trace:configure.in:7: -1- AM_DEP_TRACK m4trace:configure.in:7: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:7: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.in:7: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.in:7: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.in:7: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.in:7: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:7: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.in:7: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.in:7: -1- AC_PROG_CPP m4trace:configure.in:7: -1- AC_SUBST([CPP]) m4trace:configure.in:7: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([CPP]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) m4trace:configure.in:8: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING]) m4trace:configure.in:8: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([nsl], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([bsd], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS]) m4trace:configure.in:8: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], [], [$X_EXTRA_LIBS]) m4trace:configure.in:8: -1- AC_SUBST([X_CFLAGS]) m4trace:configure.in:8: -1- AC_SUBST([X_PRE_LIBS]) m4trace:configure.in:8: -1- AC_SUBST([X_LIBS]) m4trace:configure.in:8: -1- AC_SUBST([X_EXTRA_LIBS]) m4trace:configure.in:10: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [/usr/src/packages/BUILD/autoconf-2.59/tests/../lib/autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:10: the top level]) m4trace:configure.in:11: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [/usr/src/packages/BUILD/autoconf-2.59/tests/../lib/autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:11: the top level]) m4trace:configure.in:32: -1- AH_OUTPUT([HAVE_SDL], [/* Use SDL library */ #undef HAVE_SDL]) m4trace:configure.in:33: -1- AH_OUTPUT([HAVE_SDL_MIXER], [/* Use SDL mixer library */ #undef HAVE_SDL_MIXER]) m4trace:configure.in:34: -1- AH_OUTPUT([HAVE_GL], [/* Use GL library */ #undef HAVE_GL]) m4trace:configure.in:35: -1- AH_OUTPUT([HAVE_GLU], [/* Use GLU library */ #undef HAVE_GLU]) m4trace:configure.in:36: -1- AH_OUTPUT([HAVE_GLUT], [/* Use GLUT library */ #undef HAVE_GLUT]) m4trace:configure.in:39: -1- AC_PROG_CXX m4trace:configure.in:39: -1- AC_SUBST([CXX]) m4trace:configure.in:39: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.in:39: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:39: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:39: -1- AC_SUBST([CXX]) m4trace:configure.in:39: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.in:39: -1- _AM_DEPENDENCIES([CXX]) m4trace:configure.in:39: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.in:39: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.in:39: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.in:39: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.in:40: -1- AC_PROG_CC m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:40: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:40: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:40: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.in:40: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.in:40: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:40: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.in:40: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.in:41: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. You should run autoupdate.], [/usr/src/packages/BUILD/autoconf-2.59/tests/../lib/autoconf/c.m4:71: AC_LANG_C is expanded from... configure.in:41: the top level]) m4trace:configure.in:42: -1- AC_PROG_INSTALL m4trace:configure.in:42: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:42: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:42: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:43: -1- AC_PROG_MAKE_SET m4trace:configure.in:43: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:45: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) m4trace:configure.in:45: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN]) m4trace:configure.in:47: -1- GL_PATH_CHECK([OpenGL], [GL/gl.h], [$with_opengl_dir]) m4trace:configure.in:48: -1- GL_PATH_CHECK([SDL], [SDL/SDL.h], [$with_sdl_dir]) m4trace:configure.in:50: -2- AC_DEFINE_TRACE_LITERAL([HAVE_GL]) m4trace:configure.in:50: -1- AC_HEADER_STDC m4trace:configure.in:50: -1- AC_SUBST([EGREP]) m4trace:configure.in:50: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:50: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:50: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:51: -2- AC_DEFINE_TRACE_LITERAL([HAVE_GLU]) m4trace:configure.in:52: -2- AC_DEFINE_TRACE_LITERAL([HAVE_GLUT]) m4trace:configure.in:53: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SDL]) m4trace:configure.in:54: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SDL_MIXER]) m4trace:configure.in:56: -1- AC_CHECK_LIB([GL], [glEnable], [LIBS="$LIBS -lGL"], [{ echo "$as_me:$LINENO: WARNING: GL not found - please install GL or MesaGL" >&5 echo "$as_me: WARNING: GL not found - please install GL or MesaGL" >&2;}]) m4trace:configure.in:57: -1- AC_CHECK_LIB([GLU], [gluPerspective], [LIBS="$LIBS -lGLU"], [{ echo "$as_me:$LINENO: WARNING: GLU not found - please install GLU or MesaGLU" >&5 echo "$as_me: WARNING: GLU not found - please install GLU or MesaGLU" >&2;}]) m4trace:configure.in:58: -1- AC_CHECK_LIB([glut], [glutMainLoop], [LIBS="$LIBS -lglut"], [{ echo "$as_me:$LINENO: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&5 echo "$as_me: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&2;}]) m4trace:configure.in:59: -1- AC_CHECK_LIB([SDL], [SDL_Init], [LIBS="$LIBS -lSDL -lSDLmain"], [{ echo "$as_me:$LINENO: WARNING: SDL not found - please install SDL" >&5 echo "$as_me: WARNING: SDL not found - please install SDL" >&2;}], [-lpthread]) m4trace:configure.in:60: -1- AC_CHECK_LIB([SDL_mixer], [Mix_LoadMUS], [LIBS="$LIBS -lSDL_mixer"], [{ echo "$as_me:$LINENO: WARNING: SDL_mixer not found - please install SDL_mixer" >&5 echo "$as_me: WARNING: SDL_mixer not found - please install SDL_mixer" >&2;}]) m4trace:configure.in:69: -1- AC_CONFIG_FILES([ \ Makefile \ src/Makefile \ ]) m4trace:configure.in:69: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. You should run autoupdate.], []) m4trace:configure.in:69: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.in:69: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.in:69: -1- _AC_AM_CONFIG_HEADER_HOOK([$ac_file]) m4trace:configure.in:69: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS gl-117-1.3.2/autom4te.cache/traces.10000644000175000017500000003627110145416201016043 0ustar cedriccedricm4trace:configure.in:1: -1- AC_INIT([src/main.cpp]) m4trace:configure.in:1: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:1: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:1: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:1: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:1: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:1: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:1: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.in:1: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.in:1: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.in:1: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.in:1: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.in:1: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.in:1: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.in:1: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.in:1: -1- AC_SUBST([datadir], ['${prefix}/share']) m4trace:configure.in:1: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.in:1: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.in:1: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.in:1: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:1: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.in:1: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.in:1: -1- AC_SUBST([infodir], ['${prefix}/info']) m4trace:configure.in:1: -1- AC_SUBST([mandir], ['${prefix}/man']) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.in:1: -1- AC_SUBST([build_alias]) m4trace:configure.in:1: -1- AC_SUBST([host_alias]) m4trace:configure.in:1: -1- AC_SUBST([target_alias]) m4trace:configure.in:1: -1- AC_SUBST([DEFS]) m4trace:configure.in:1: -1- AC_SUBST([ECHO_C]) m4trace:configure.in:1: -1- AC_SUBST([ECHO_N]) m4trace:configure.in:1: -1- AC_SUBST([ECHO_T]) m4trace:configure.in:1: -1- AC_SUBST([LIBS]) m4trace:configure.in:2: -1- AM_INIT_AUTOMAKE([gl-117], [1.0], [200308190000]) m4trace:configure.in:2: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:2: -1- AM_AUTOMAKE_VERSION([1.8.3]) m4trace:configure.in:2: -1- AC_PROG_INSTALL m4trace:configure.in:2: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:2: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:2: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:2: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE], [gl-117]) m4trace:configure.in:2: -1- AC_SUBST([VERSION], [1.0]) m4trace:configure.in:2: -1- AC_SUBST([ACLOCAL]) m4trace:configure.in:2: -1- AC_SUBST([AUTOCONF]) m4trace:configure.in:2: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.in:2: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.in:2: -1- AC_SUBST([MAKEINFO]) m4trace:configure.in:2: -1- AC_SUBST([AMTAR]) m4trace:configure.in:2: -1- AC_SUBST([install_sh]) m4trace:configure.in:2: -1- AC_SUBST([STRIP]) m4trace:configure.in:2: -1- AC_SUBST([ac_ct_STRIP]) m4trace:configure.in:2: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:2: -1- AC_SUBST([mkdir_p]) m4trace:configure.in:2: -1- AC_PROG_AWK m4trace:configure.in:2: -1- AC_SUBST([AWK]) m4trace:configure.in:2: -1- AC_PROG_MAKE_SET m4trace:configure.in:2: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:2: -1- AC_SUBST([am__leading_dot]) m4trace:configure.in:3: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. You should run autoupdate.], [aclocal.m4:421: AM_CONFIG_HEADER is expanded from... configure.in:3: the top level]) m4trace:configure.in:3: -1- AC_CONFIG_HEADERS([config.h]) m4trace:configure.in:7: -1- AC_PATH_X m4trace:configure.in:7: -1- AC_PROG_CC m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([CC]) m4trace:configure.in:7: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:7: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.in:7: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.in:7: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.in:7: -1- AC_SUBST([am__include]) m4trace:configure.in:7: -1- AC_SUBST([am__quote]) m4trace:configure.in:7: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:7: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.in:7: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.in:7: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.in:7: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.in:7: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:7: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.in:7: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.in:7: -1- AC_PROG_CPP m4trace:configure.in:7: -1- AC_SUBST([CPP]) m4trace:configure.in:7: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:7: -1- AC_SUBST([CPP]) m4trace:configure.in:8: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) m4trace:configure.in:8: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING]) m4trace:configure.in:8: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([nsl], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([bsd], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS]) m4trace:configure.in:8: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"]) m4trace:configure.in:8: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], [], [$X_EXTRA_LIBS]) m4trace:configure.in:8: -1- AC_SUBST([X_CFLAGS]) m4trace:configure.in:8: -1- AC_SUBST([X_PRE_LIBS]) m4trace:configure.in:8: -1- AC_SUBST([X_LIBS]) m4trace:configure.in:8: -1- AC_SUBST([X_EXTRA_LIBS]) m4trace:configure.in:10: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [/usr/src/packages/BUILD/autoconf-2.59/tests/../lib/autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:10: the top level]) m4trace:configure.in:11: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [/usr/src/packages/BUILD/autoconf-2.59/tests/../lib/autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.in:11: the top level]) m4trace:configure.in:32: -1- AH_OUTPUT([HAVE_SDL], [/* Use SDL library */ #undef HAVE_SDL]) m4trace:configure.in:33: -1- AH_OUTPUT([HAVE_SDL_MIXER], [/* Use SDL mixer library */ #undef HAVE_SDL_MIXER]) m4trace:configure.in:34: -1- AH_OUTPUT([HAVE_GL], [/* Use GL library */ #undef HAVE_GL]) m4trace:configure.in:35: -1- AH_OUTPUT([HAVE_GLU], [/* Use GLU library */ #undef HAVE_GLU]) m4trace:configure.in:36: -1- AH_OUTPUT([HAVE_GLUT], [/* Use GLUT library */ #undef HAVE_GLUT]) m4trace:configure.in:39: -1- AC_PROG_CXX m4trace:configure.in:39: -1- AC_SUBST([CXX]) m4trace:configure.in:39: -1- AC_SUBST([CXXFLAGS]) m4trace:configure.in:39: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:39: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:39: -1- AC_SUBST([CXX]) m4trace:configure.in:39: -1- AC_SUBST([ac_ct_CXX]) m4trace:configure.in:39: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) m4trace:configure.in:39: -1- AM_CONDITIONAL([am__fastdepCXX], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) m4trace:configure.in:39: -1- AC_SUBST([am__fastdepCXX_TRUE]) m4trace:configure.in:39: -1- AC_SUBST([am__fastdepCXX_FALSE]) m4trace:configure.in:40: -1- AC_PROG_CC m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:40: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:40: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([CC]) m4trace:configure.in:40: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:40: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.in:40: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:40: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.in:40: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.in:41: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. You should run autoupdate.], [/usr/src/packages/BUILD/autoconf-2.59/tests/../lib/autoconf/c.m4:71: AC_LANG_C is expanded from... configure.in:41: the top level]) m4trace:configure.in:42: -1- AC_PROG_INSTALL m4trace:configure.in:42: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:42: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:42: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:43: -1- AC_PROG_MAKE_SET m4trace:configure.in:43: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:45: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) m4trace:configure.in:45: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN]) m4trace:configure.in:50: -2- AC_DEFINE_TRACE_LITERAL([HAVE_GL]) m4trace:configure.in:50: -1- AC_HEADER_STDC m4trace:configure.in:50: -1- AC_SUBST([EGREP]) m4trace:configure.in:50: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:50: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:50: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.in:50: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:51: -2- AC_DEFINE_TRACE_LITERAL([HAVE_GLU]) m4trace:configure.in:52: -2- AC_DEFINE_TRACE_LITERAL([HAVE_GLUT]) m4trace:configure.in:53: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SDL]) m4trace:configure.in:54: -2- AC_DEFINE_TRACE_LITERAL([HAVE_SDL_MIXER]) m4trace:configure.in:56: -1- AC_CHECK_LIB([GL], [glEnable], [LIBS="$LIBS -lGL"], [{ echo "$as_me:$LINENO: WARNING: GL not found - please install GL or MesaGL" >&5 echo "$as_me: WARNING: GL not found - please install GL or MesaGL" >&2;}]) m4trace:configure.in:57: -1- AC_CHECK_LIB([GLU], [gluPerspective], [LIBS="$LIBS -lGLU"], [{ echo "$as_me:$LINENO: WARNING: GLU not found - please install GLU or MesaGLU" >&5 echo "$as_me: WARNING: GLU not found - please install GLU or MesaGLU" >&2;}]) m4trace:configure.in:58: -1- AC_CHECK_LIB([glut], [glutMainLoop], [LIBS="$LIBS -lglut"], [{ echo "$as_me:$LINENO: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&5 echo "$as_me: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&2;}]) m4trace:configure.in:59: -1- AC_CHECK_LIB([SDL], [SDL_Init], [LIBS="$LIBS -lSDL -lSDLmain"], [{ echo "$as_me:$LINENO: WARNING: SDL not found - please install SDL" >&5 echo "$as_me: WARNING: SDL not found - please install SDL" >&2;}], [-lpthread]) m4trace:configure.in:60: -1- AC_CHECK_LIB([SDL_mixer], [Mix_LoadMUS], [LIBS="$LIBS -lSDL_mixer"], [{ echo "$as_me:$LINENO: WARNING: SDL_mixer not found - please install SDL_mixer" >&5 echo "$as_me: WARNING: SDL_mixer not found - please install SDL_mixer" >&2;}]) m4trace:configure.in:69: -1- AC_CONFIG_FILES([ \ Makefile \ src/Makefile \ ]) m4trace:configure.in:69: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. You should run autoupdate.], []) m4trace:configure.in:69: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.in:69: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) gl-117-1.3.2/ChangeLog0000644000175000017500000001331410145416156013450 0ustar cedriccedric ________ __ __ __ __________ / ___ \ /\ \ / \ / \ /\________ \ /\ /___/\_\ \ \ \ / \ / \ \/_______/\ \ \ \ \ \/_/_ \ \ \ _______ /\__/\ \ /\__/\ \ \/ / \ \ \ /\__ \ \ \ \ /\______\ \/_/\ \ \ \/_/\ \ \ / / \ \ \ \/_/\ \ \ \ \ \/______/ \ \ \ \ \ \ / / \ \ \___\/ \ \ \ \_______ \ \ \ \ \ \ /\ \ \ \________/ \ \________\ \ \_\ \ \ \ \ \_\ \/_______/ \/________/ \/_/ \/_/ \/_/ Version 1.3: - optimizations: graphics are much faster now!!! - changed quality modes: higher detail for each mode (old quality=5 is now quality=4) - enabled higher view rates - source code cleanup (#includes) and documentation - adjustments to missiles - radar improvements - logging to file Version 1.2: - map editor and examples - bugfix: "Texture XXX not found" problem - bugfix: mouse/joystick events do not occur in different controls settings - bugfix: some missions produced a seg fault when selecting a bomber Version 1.1: - new graphical user interface - new settings for video and user interface (via menu!) - AI now uses flight maneuvers (immelmann, barrel roll) - two additional tutorials - randomized tree placement - lots of visual improvements Version 1.0.1-2: - bugfix: missiles likely caused own fighter to crash, esp. DF missiles - bugfix: "Texture XXX not found" problem ignored Version 1.0.1: - major bugfixes concerning coordinates (lighting, sun) - improved 3DS loader and model textures - changed intro Version 1.0: - three more missions for the campaign - more realistic physics (optional) - new bomber "Storm" - some visual improvements - adjustments to almost everything Version 0.9: - faster rendering (occlusion culling: ray casting) - more interface options (multiple joysticks) - difficulty changes/adjustments (easier missions) - two new missions - lots of visual improvements - lots of bugfixes Version 0.8.8: - new missions (training) - AI bugfixes and improvements - soundtrack addition and improvements - new cannon sound and ammo restriction - further code cleanup and documentation - some visual improvements Version 0.8.5: - time dependant calculations (enables higher FPS rates) - improved models, replaced fighter models - level of detail: different terrain resolutions - lots of graphical improvements (trees, explosions, smoke, cannon) - added brightness option - added man page and updated documentation - lots of minor improvements and bugfixes Version 0.8.2: - major code cleanup - added debug levels - added command line parameters - added exit values according to fatal errors - more realistic physics model - added blackouts - new intro (fire) - big endian bugfixes - added plasma background Version 0.8: - important buffer overflow bugfix - chaff/flare countermeasures - radar and heat seaking missiles - complete interface remapping support by script - one new soundtrack - quit dialog - better air-ground missiles - some mission adjustments - additional cloud layer - game will start if SDL cannot find audio driver Version 0.7.5: - different HUDs for the fighters - added soundtrack - higher quality LOD - smooth rolls - greyish material at night - ambient light improvements - sun reflectance on water - brightness adjustments when gazing into the sun - nicer landscape colors - new grass texture, better tree textures - bugfix: difficulty extra points are now added to score Version 0.7: - added clouds - stable music code (no crashes, mem leaks) - added mouse reverse option - better/easier mouse interface - more bugfixes and improvements Version 0.6.8: - faster quality mode 2 - better level of detail - added dithering option - lots of bugfixes and improvements Version 0.6.5: - new quality mode 1 - new great lens flares - added last campaign mission - visual improvements at higher quality levels - important bugfix that caused the game to crash Version 0.6: - two new missions (one still missing) - list of pilots and fighters - adjusted (easier) missions - improved mouse and joystick interface - better graphics detection system Version 0.5.5: - two new missions - introduced three difficulty levels - graphics auto detection at first startup - bugfixes Version 0.5: - lots of new missions - one new soundtrack - "make install" now available for root (linux) - player specific data is stored to the home dir (linux) - lots of minor improvements Version 0.4.5: - replaced missions by the first seven official missions - added documentation - important bugfixes Version 0.4: - definition of pilots and stats - better interface: keyboard and mouse, try out the tutorial - nicer fonts - added simple desert landscape - bugfixes and minor updates Version 0.3.5: - rearranged source code - nicer Intro - two new bombers - advanced missile AI and different missile types - replaced font - updated configure.in - new "standby.s3m" - some bugfixes Version 0.3: - added audio volume control (only SDL_mixer) - enabled rolling and loopings - added moon terrain - added canyon - added cruiser - visual improvements - new demo missions Version 0.2: - SDL is now optional - added SDL mixer support, multi-cannel sound - simple background music (tracker modules) - added lightning/thunderstorm - added air defence Version 0.1: - first public release - two simple demo missions - some sound samples - joystick support gl-117-1.3.2/config.h.in0000644000175000017500000000332510145416177013725 0ustar cedriccedric/* config.h.in. Generated from configure.in by autoheader. */ /* Use GL library */ #undef HAVE_GL /* Use GLU library */ #undef HAVE_GLU /* Use GLUT library */ #undef HAVE_GLUT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Use SDL library */ #undef HAVE_SDL /* Use SDL mixer library */ #undef HAVE_SDL_MIXER /* 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 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 header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* 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 version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING gl-117-1.3.2/configure0000755000175000017500000101631510145416200013600 0ustar cedriccedric#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59. # # Copyright (C) 2003 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 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+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="src/main.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE EGREP LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # 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. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= 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 ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -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 | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$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 ;; -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 ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) 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 ;; -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=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 ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && 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'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac 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 echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 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 # 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 its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | 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 if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS # # 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 this package 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 \`..'] _ACEOF cat <<_ACEOF 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] --datadir=DIR read-only architecture-independent data [PREFIX/share] --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] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _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 _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-x use the X Window System --with-opengl-dir= Search for OpenGL files in --with-sdl-dir= Search for SDL files in Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style 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 elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright (C) 2003 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 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { 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` hostinfo = `(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=. echo "PATH: $as_dir" done } >&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_sep= 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >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 # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" 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. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 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 { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 am__api_version="1.8" 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 { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # 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. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done 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. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$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' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 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 $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # Keeping the `.' argument allows $(mkdir_p) to be used without # argument. Indeed, we sometimes output rules like # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more # expensive solution, as it forces Make to start a sub-shell.) mkdir_p='mkdir -p -- .' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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=gl-117 VERSION=1.0 # 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"} AMTAR=${AMTAR-"${am_missing_run}tar"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. ac_config_headers="$ac_config_headers config.h" LIBS="$LIBS -L/usr/X11R6/lib" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-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='\' 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done 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 echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out 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. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$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 echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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 -std1 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 -std1. */ int osf4_cc_array ['\x00' == 0 ? 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 # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext 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 depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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 echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } 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 echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6 # Check whether --with-x or --without-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 if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then # Both variables are already set. have_x=yes else if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 -fr conftest.dir if mkdir conftest.dir; then cd conftest.dir # Make sure to not put "make" in the Imakefile rules, since we grep it out. cat >Imakefile <<'_ACEOF' acfindx: @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' _ACEOF if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; 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) ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -fr 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/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /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 Intrinsic.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Intrinsic.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err 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="-lXt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { XtMalloc (0) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `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; do if test -r $ac_dir/libXt.$ac_extension; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then # Didn't find X anywhere. Cache the known absence of X. ac_cv_have_x="have_x=no" else # 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" fi fi fi eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$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" echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}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. cat >>confdefs.h <<\_ACEOF #define X_DISPLAY_MISSING 1 _ACEOF 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 . . . . case `(uname -sr) 2>/dev/null` in "SunOS 5"*) echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_nospace=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_nospace=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_nospace = yes; then echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_R_space=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_R_space=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $ac_R_space = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6 fi fi LIBS=$ac_xsave_LIBS esac 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char XOpenDisplay (); int main () { XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dnet_ntoa (); int main () { dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f 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. echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); /* 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_gethostbyname) || defined (__stub___gethostbyname) choke me #else char (*f) () = gethostbyname; #endif #ifdef __cplusplus } #endif int main () { return f != gethostbyname; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 if test $ac_cv_func_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); int main () { gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 if test $ac_cv_lib_bsd_gethostbyname = yes; 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. echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6 if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); /* 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_connect) || defined (__stub___connect) choke me #else char (*f) () = connect; #endif #ifdef __cplusplus } #endif int main () { return f != connect; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6 if test $ac_cv_func_connect = no; then echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char connect (); int main () { connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6 if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); /* 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_remove) || defined (__stub___remove) choke me #else char (*f) () = remove; #endif #ifdef __cplusplus } #endif int main () { return f != remove; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6 if test $ac_cv_func_remove = no; then echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char remove (); int main () { remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6 if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); /* 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_shmat) || defined (__stub___shmat) choke me #else char (*f) () = shmat; #endif #ifdef __cplusplus } #endif int main () { return f != shmat; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6 if test $ac_cv_func_shmat = no; then echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shmat (); int main () { shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 if test $ac_cv_lib_ipc_shmat = yes; 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 echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char IceConnectionNumber (); int main () { IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi # Check whether --with-opengl-dir or --without-opengl-dir was given. if test "${with_opengl_dir+set}" = set; then withval="$with_opengl_dir" fi; # Check whether --with-sdl-dir or --without-sdl-dir was given. if test "${with_sdl_dir+set}" = set; then withval="$with_sdl_dir" fi; LDFLAGS="$LDFLAGS -lm -lGL -lGLU -lglut" ac_ext=cc 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 -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$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 for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h 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= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done 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 echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$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 echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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 -std1 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 -std1. */ int osf4_cc_array ['\x00' == 0 ? 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 # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext 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 depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 # (even with -Werror). So we grep stderr for any message # that says an option was ignored. if grep 'ignoring option' 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 echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 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 # 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. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done 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. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$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' echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_bigendian=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () { _ascii (); _ebcdic (); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long l; char c[sizeof (long)]; } u; u.l = 1; exit (u.c[sizeof (long) - 1] == 1); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=no else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) cat >>confdefs.h <<\_ACEOF #define WORDS_BIGENDIAN 1 _ACEOF ;; no) ;; *) { { echo "$as_me:$LINENO: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&5 echo "$as_me: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac echo "$as_me:$LINENO: checking for OpenGL directory" >&5 echo $ECHO_N "checking for OpenGL directory... $ECHO_C" >&6 path="" for tmp in /usr/local /usr/X11R6 /usr $with_opengl_dir do if test -f $tmp/include/GL/gl.h ; then path=$tmp fi done if test -z $path ; then echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6 else echo "$as_me:$LINENO: result: $path" >&5 echo "${ECHO_T}$path" >&6 CPPFLAGS="$CPPFLAGS -I$path/include" CXXFLAGS="$CXXFLAGS -I$path/include" LIBS="$LIBS -L$path/lib" fi echo "$as_me:$LINENO: checking for SDL directory" >&5 echo $ECHO_N "checking for SDL directory... $ECHO_C" >&6 path="" for tmp in /usr/local /usr/X11R6 /usr $with_sdl_dir do if test -f $tmp/include/SDL/SDL.h ; then path=$tmp fi done if test -z $path ; then echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6 else echo "$as_me:$LINENO: result: $path" >&5 echo "${ECHO_T}$path" >&6 CPPFLAGS="$CPPFLAGS -I$path/include" CXXFLAGS="$CXXFLAGS -I$path/include" LIBS="$LIBS -L$path/lib" fi echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #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)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test "${ac_cv_header_GL_gl_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/gl.h" >&5 echo $ECHO_N "checking for GL/gl.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_gl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_gl_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_gl_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/gl.h usability" >&5 echo $ECHO_N "checking GL/gl.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/gl.h presence" >&5 echo $ECHO_N "checking GL/gl.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/gl.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/gl.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/gl.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/gl.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/gl.h" >&5 echo $ECHO_N "checking for GL/gl.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_gl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_gl_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_gl_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_gl_h" >&6 fi if test $ac_cv_header_GL_gl_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GL 1 _ACEOF else { { echo "$as_me:$LINENO: error: gl.h not found - please install OpenGL- or Mesa-devel" >&5 echo "$as_me: error: gl.h not found - please install OpenGL- or Mesa-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_GL_glu_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/glu.h" >&5 echo $ECHO_N "checking for GL/glu.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glu_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glu_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glu_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/glu.h usability" >&5 echo $ECHO_N "checking GL/glu.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/glu.h presence" >&5 echo $ECHO_N "checking GL/glu.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/glu.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/glu.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/glu.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/glu.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/glu.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/glu.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/glu.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/glu.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/glu.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glu.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/glu.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/glu.h" >&5 echo $ECHO_N "checking for GL/glu.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glu_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_glu_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glu_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glu_h" >&6 fi if test $ac_cv_header_GL_glu_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GLU 1 _ACEOF else { { echo "$as_me:$LINENO: error: glu.h not found - please install GLU- or MesaGLU-devel" >&5 echo "$as_me: error: glu.h not found - please install GLU- or MesaGLU-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_GL_glut_h+set}" = set; then echo "$as_me:$LINENO: checking for GL/glut.h" >&5 echo $ECHO_N "checking for GL/glut.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glut_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glut_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glut_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking GL/glut.h usability" >&5 echo $ECHO_N "checking GL/glut.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking GL/glut.h presence" >&5 echo $ECHO_N "checking GL/glut.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/glut.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/glut.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: GL/glut.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/glut.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/glut.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/glut.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: GL/glut.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: GL/glut.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/glut.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: GL/glut.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: GL/glut.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for GL/glut.h" >&5 echo $ECHO_N "checking for GL/glut.h... $ECHO_C" >&6 if test "${ac_cv_header_GL_glut_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_GL_glut_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_GL_glut_h" >&5 echo "${ECHO_T}$ac_cv_header_GL_glut_h" >&6 fi if test $ac_cv_header_GL_glut_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GLUT 1 _ACEOF else { { echo "$as_me:$LINENO: error: glut.h not found - please install GLUT- or MesaGLUT-devel" >&5 echo "$as_me: error: glut.h not found - please install GLUT- or MesaGLUT-devel" >&2;} { (exit 1); exit 1; }; } fi if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo "$as_me:$LINENO: checking for SDL/SDL.h" >&5 echo $ECHO_N "checking for SDL/SDL.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking SDL/SDL.h usability" >&5 echo $ECHO_N "checking SDL/SDL.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking SDL/SDL.h presence" >&5 echo $ECHO_N "checking SDL/SDL.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: SDL/SDL.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: SDL/SDL.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: SDL/SDL.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: SDL/SDL.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: SDL/SDL.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: SDL/SDL.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: SDL/SDL.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: SDL/SDL.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for SDL/SDL.h" >&5 echo $ECHO_N "checking for SDL/SDL.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_SDL_SDL_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_h" >&6 fi if test $ac_cv_header_SDL_SDL_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SDL 1 _ACEOF else { echo "$as_me:$LINENO: WARNING: SDL.h not found - no sounds and no joystick available" >&5 echo "$as_me: WARNING: SDL.h not found - no sounds and no joystick available" >&2;} fi if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo "$as_me:$LINENO: checking for SDL/SDL_mixer.h" >&5 echo $ECHO_N "checking for SDL/SDL_mixer.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_mixer_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_mixer_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking SDL/SDL_mixer.h usability" >&5 echo $ECHO_N "checking SDL/SDL_mixer.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking SDL/SDL_mixer.h presence" >&5 echo $ECHO_N "checking SDL/SDL_mixer.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: SDL/SDL_mixer.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: SDL/SDL_mixer.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to the AC_PACKAGE_NAME lists. ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for SDL/SDL_mixer.h" >&5 echo $ECHO_N "checking for SDL/SDL_mixer.h... $ECHO_C" >&6 if test "${ac_cv_header_SDL_SDL_mixer_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_SDL_SDL_mixer_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_SDL_SDL_mixer_h" >&5 echo "${ECHO_T}$ac_cv_header_SDL_SDL_mixer_h" >&6 fi if test $ac_cv_header_SDL_SDL_mixer_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SDL_MIXER 1 _ACEOF else { echo "$as_me:$LINENO: WARNING: SDL_mixer.h not found - no advanced sounds available" >&5 echo "$as_me: WARNING: SDL_mixer.h not found - no advanced sounds available" >&2;} fi echo "$as_me:$LINENO: checking for glEnable in -lGL" >&5 echo $ECHO_N "checking for glEnable in -lGL... $ECHO_C" >&6 if test "${ac_cv_lib_GL_glEnable+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGL $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char glEnable (); int main () { glEnable (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_GL_glEnable=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GL_glEnable=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glEnable" >&5 echo "${ECHO_T}$ac_cv_lib_GL_glEnable" >&6 if test $ac_cv_lib_GL_glEnable = yes; then LIBS="$LIBS -lGL" else { echo "$as_me:$LINENO: WARNING: GL not found - please install GL or MesaGL" >&5 echo "$as_me: WARNING: GL not found - please install GL or MesaGL" >&2;} fi echo "$as_me:$LINENO: checking for gluPerspective in -lGLU" >&5 echo $ECHO_N "checking for gluPerspective in -lGLU... $ECHO_C" >&6 if test "${ac_cv_lib_GLU_gluPerspective+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGLU $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gluPerspective (); int main () { gluPerspective (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_GLU_gluPerspective=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GLU_gluPerspective=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_GLU_gluPerspective" >&5 echo "${ECHO_T}$ac_cv_lib_GLU_gluPerspective" >&6 if test $ac_cv_lib_GLU_gluPerspective = yes; then LIBS="$LIBS -lGLU" else { echo "$as_me:$LINENO: WARNING: GLU not found - please install GLU or MesaGLU" >&5 echo "$as_me: WARNING: GLU not found - please install GLU or MesaGLU" >&2;} fi echo "$as_me:$LINENO: checking for glutMainLoop in -lglut" >&5 echo $ECHO_N "checking for glutMainLoop in -lglut... $ECHO_C" >&6 if test "${ac_cv_lib_glut_glutMainLoop+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lglut $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char glutMainLoop (); int main () { glutMainLoop (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_glut_glutMainLoop=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_glut_glutMainLoop=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_glut_glutMainLoop" >&5 echo "${ECHO_T}$ac_cv_lib_glut_glutMainLoop" >&6 if test $ac_cv_lib_glut_glutMainLoop = yes; then LIBS="$LIBS -lglut" else { echo "$as_me:$LINENO: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&5 echo "$as_me: WARNING: GLUT not found - please install GLUT or MesaGLUT" >&2;} fi echo "$as_me:$LINENO: checking for SDL_Init in -lSDL" >&5 echo $ECHO_N "checking for SDL_Init in -lSDL... $ECHO_C" >&6 if test "${ac_cv_lib_SDL_SDL_Init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL -lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char SDL_Init (); int main () { SDL_Init (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_SDL_SDL_Init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_SDL_Init=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_SDL_Init" >&5 echo "${ECHO_T}$ac_cv_lib_SDL_SDL_Init" >&6 if test $ac_cv_lib_SDL_SDL_Init = yes; then LIBS="$LIBS -lSDL -lSDLmain" else { echo "$as_me:$LINENO: WARNING: SDL not found - please install SDL" >&5 echo "$as_me: WARNING: SDL not found - please install SDL" >&2;} fi echo "$as_me:$LINENO: checking for Mix_LoadMUS in -lSDL_mixer" >&5 echo $ECHO_N "checking for Mix_LoadMUS in -lSDL_mixer... $ECHO_C" >&6 if test "${ac_cv_lib_SDL_mixer_Mix_LoadMUS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL_mixer $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char Mix_LoadMUS (); int main () { Mix_LoadMUS (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_SDL_mixer_Mix_LoadMUS=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_mixer_Mix_LoadMUS=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_mixer_Mix_LoadMUS" >&5 echo "${ECHO_T}$ac_cv_lib_SDL_mixer_Mix_LoadMUS" >&6 if test $ac_cv_lib_SDL_mixer_Mix_LoadMUS = yes; then LIBS="$LIBS -lSDL_mixer" else { echo "$as_me:$LINENO: WARNING: SDL_mixer not found - please install SDL_mixer" >&5 echo "$as_me: WARNING: SDL_mixer not found - please install SDL_mixer" >&2;} fi CFLAGS="$CFLAGS" CPPFLAGS="-DDATADIR='\"$datadir\"' -Wall -pedantic" CXXFLAGS="$CXXFLAGS" ac_config_files="$ac_config_files Makefile src/Makefile" 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, don't put newlines in cache variables' values. # 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. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *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 \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" 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}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # 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+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -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 --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_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. 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=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; 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 if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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 to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@AMTAR@,$AMTAR,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@CPP@,$CPP,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t s,@X_LIBS@,$X_LIBS,;t t s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@CXXDEPMODE@,$CXXDEPMODE,;t t s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t s,@EGREP@,$EGREP,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # 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. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #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. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # 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. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || 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 grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # 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 ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # 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 || { (exit 1); exit 1; } fi gl-117-1.3.2/configure.in0000644000175000017500000000460610145416156014213 0ustar cedriccedricAC_INIT(src/main.cpp) AM_INIT_AUTOMAKE(gl-117,1.0,200308190000) AM_CONFIG_HEADER(config.h) LIBS="$LIBS -L/usr/X11R6/lib" AC_PATH_X AC_PATH_XTRA AC_ARG_WITH(opengl-dir, AC_HELP_STRING([--with-opengl-dir=],[Search for OpenGL files in ])) AC_ARG_WITH(sdl-dir, AC_HELP_STRING([--with-sdl-dir=],[Search for SDL files in ])) AC_DEFUN(GL_PATH_CHECK, [ AC_MSG_CHECKING(for $1 directory) path="" for tmp in /usr/local /usr/X11R6 /usr $3 do if test -f $tmp/include/$2 ; then path=$tmp fi done if test -z $path ; then AC_MSG_RESULT(not found) else AC_MSG_RESULT($path) CPPFLAGS="$CPPFLAGS -I$path/include" CXXFLAGS="$CXXFLAGS -I$path/include" LIBS="$LIBS -L$path/lib" fi ]) AH_TEMPLATE([HAVE_SDL],[Use SDL library]) AH_TEMPLATE([HAVE_SDL_MIXER],[Use SDL mixer library]) AH_TEMPLATE([HAVE_GL],[Use GL library]) AH_TEMPLATE([HAVE_GLU],[Use GLU library]) AH_TEMPLATE([HAVE_GLUT],[Use GLUT library]) LDFLAGS="$LDFLAGS -lm -lGL -lGLU -lglut" AC_PROG_CXX AC_PROG_CC AC_LANG_C AC_PROG_INSTALL AC_PROG_MAKE_SET AC_C_BIGENDIAN() GL_PATH_CHECK(OpenGL,GL/gl.h,$with_opengl_dir) GL_PATH_CHECK(SDL,SDL/SDL.h,$with_sdl_dir) AC_CHECK_HEADER(GL/gl.h,AC_DEFINE(HAVE_GL),AC_MSG_ERROR(gl.h not found - please install OpenGL- or Mesa-devel)) AC_CHECK_HEADER(GL/glu.h,AC_DEFINE(HAVE_GLU),AC_MSG_ERROR(glu.h not found - please install GLU- or MesaGLU-devel)) AC_CHECK_HEADER(GL/glut.h,AC_DEFINE(HAVE_GLUT),AC_MSG_ERROR(glut.h not found - please install GLUT- or MesaGLUT-devel)) AC_CHECK_HEADER(SDL/SDL.h,AC_DEFINE(HAVE_SDL),AC_MSG_WARN(SDL.h not found - no sounds and no joystick available)) AC_CHECK_HEADER(SDL/SDL_mixer.h,AC_DEFINE(HAVE_SDL_MIXER),AC_MSG_WARN(SDL_mixer.h not found - no advanced sounds available)) AC_CHECK_LIB(GL,glEnable,LIBS="$LIBS -lGL",AC_MSG_WARN(GL not found - please install GL or MesaGL)) AC_CHECK_LIB(GLU,gluPerspective,LIBS="$LIBS -lGLU",AC_MSG_WARN(GLU not found - please install GLU or MesaGLU)) AC_CHECK_LIB(glut,glutMainLoop,LIBS="$LIBS -lglut",AC_MSG_WARN(GLUT not found - please install GLUT or MesaGLUT)) AC_CHECK_LIB(SDL,SDL_Init,LIBS="$LIBS -lSDL -lSDLmain",AC_MSG_WARN(SDL not found - please install SDL),-lpthread) AC_CHECK_LIB(SDL_mixer,Mix_LoadMUS,LIBS="$LIBS -lSDL_mixer",AC_MSG_WARN(SDL_mixer not found - please install SDL_mixer)) CFLAGS="$CFLAGS" CPPFLAGS="-DDATADIR='\"$datadir\"' -Wall -pedantic" CXXFLAGS="$CXXFLAGS" AC_OUTPUT([ \ Makefile \ src/Makefile \ ]) gl-117-1.3.2/COPYING0000644000175000017500000004311010145416156012726 0ustar cedriccedric GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, 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 or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's 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 give any other recipients of the Program a copy of this License along with the Program. 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 Program or any portion of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, 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 Program, 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 Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) 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; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, 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 executable. However, as a special exception, the source code 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. If distribution of executable or 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 counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program 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. 5. 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 Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program 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 to this License. 7. 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 Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program 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 Program. 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. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program 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. 9. The Free Software Foundation may publish revised and/or new versions of the 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 Program 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 Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, 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 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 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 Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. 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 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. gl-117-1.3.2/CVS/0000755000175000017500000000000010145416156012327 5ustar cedriccedricgl-117-1.3.2/CVS/Entries0000644000175000017500000000170710145416156013670 0ustar cedriccedric/AUTHORS/1.2/Fri Nov 14 10:53:12 2003// /COPYING/1.1.1.1/Thu Aug 1 06:14:45 2002// /ChangeLog/1.9/Sat May 22 19:10:41 2004// /FAQ/1.4/Fri Dec 12 16:16:40 2003// /INSTALL/1.5/Sat May 22 19:10:41 2004// /Makefile.am/1.2/Fri Nov 14 10:53:12 2003// /Makefile.in/1.5/Sat May 29 07:17:49 2004// /NEWS/1.7/Sat May 22 19:10:41 2004// /README/1.4/Fri Nov 14 10:53:12 2003// /aclocal.m4/1.4/Sat May 29 07:17:49 2004// /config.h/1.6/Sat May 29 07:17:50 2004// /config.h.in/1.4/Fri Nov 14 10:53:12 2003// /configure/1.7/Sat May 29 07:17:50 2004// /configure.in/1.8/Sat May 29 07:17:50 2004// /depcomp/1.4/Sat May 29 07:17:50 2004// /gl-117.spec/1.5/Fri Nov 14 10:53:12 2003// /install-sh/1.4/Sat May 29 07:17:50 2004// /missing/1.4/Sat May 29 07:17:50 2004// /mkinstalldirs/1.6/Sat May 29 07:17:50 2004// /readme.txt/1.3/Sun Apr 27 14:04:33 2003// /rebuild/1.8/Sat Jun 5 16:27:47 2004// /stamp-h.in/1.1.1.1/Thu Aug 1 06:14:44 2002// /win2unix/1.2/Tue Apr 29 13:43:09 2003// D gl-117-1.3.2/CVS/Entries.Log0000644000175000017500000000016010145416156014400 0ustar cedriccedricA D/doc//// A D/maps//// A D/models//// A D/music//// A D/saves//// A D/sounds//// A D/src//// A D/textures//// gl-117-1.3.2/CVS/Repository0000644000175000017500000000000710145416156014426 0ustar cedriccedricgl-117 gl-117-1.3.2/CVS/Root0000644000175000017500000000006310145416156013174 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/depcomp0000644000175000017500000003477110145416172013260 0ustar cedriccedric#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2003-11-08.23 # Copyright (C) 1999, 2000, 2003 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, 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. # 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'. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit 0 ;; -v | --v*) echo "depcomp $scriptversion" exit 0 ;; esac 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 # `libtool' can also be set to `yes' or `no'. if test -z "$depfile"; then base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` dir=`echo "$object" | sed 's,/.*$,/,'` if test "$dir" = "$object"; then dir= fi # FIXME: should be _deps on DOS. depfile="$dir.deps/$base" fi tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # 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 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. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## 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). ## - 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 -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## 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. tr ' ' ' ' < "$tmpdepfile" | ## 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. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -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 -eq 0; then : else 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 ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; 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. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else 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" ;; 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. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #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 $1 != '--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:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. 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 $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac 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. -*|$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" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. 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 $1 != '--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 '/^# [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, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; 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-end: "$" # End: gl-117-1.3.2/doc/0000755000175000017500000000000010145416156012441 5ustar cedriccedricgl-117-1.3.2/doc/CVS/0000755000175000017500000000000010145416156013074 5ustar cedriccedricgl-117-1.3.2/doc/CVS/Entries0000644000175000017500000000013110145416156014423 0ustar cedriccedric/gl-117.6/1.2/Fri Nov 14 10:53:12 2003// /gl-117.pdf/1.4/Sat Jun 5 16:25:54 2004/-kb/ D gl-117-1.3.2/doc/CVS/Entries.Log0000644000175000017500000000001410145416156015143 0ustar cedriccedricA D/src//// gl-117-1.3.2/doc/CVS/Repository0000644000175000017500000000001310145416156015170 0ustar cedriccedricgl-117/doc gl-117-1.3.2/doc/CVS/Root0000644000175000017500000000006310145416156013741 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/doc/gl-117.60000644000175000017500000000337410145416156013447 0ustar cedriccedric.TH GL-117 6 "27 February 2003" "" "gl-117 overview" .SH NAME gl-117 \- an OpenGL action flight simulator .SH SYNOPSIS .B gl-117 [-dlevel -h -v] .SH DESCRIPTION .PP .B gl-117 is an OpenGL and SDL based action flight simulator written in ISO C++. Enter the Eagle Squadron and succeed in several challanging missions leading though different landscapes. Five predefined levels of video quality and an amount of viewing ranges let you perfectly adjust the game to the performance of your system. The game provides joystick and mouse support, sound effects, and music. .SH OPTIONS .PP .TP .I "\-d\fIlevel\fP" Set the debug level to \fIlevel\fP in [0..5]. '0' means quiet and will avoid any output, '1' will log fatal errors causing the program to crash on stderr, '2' will also print exceptions on stderr, '3' will add warnings on stdout, '4' prints additional information (predefined) on stdout, and '5' gives developer specific messages on stdout. .TP .I "\-h" Print a short summary on stdout and then quit immediately. .TP .I "\-v" Display the version number of \fBgl-117\fP and then quit immediately. .SH CONFIGURATION .PP .B gl-117 uses a predefined working directory ".gl-117" in the user's home directory to load and store all savegame files and read the plain text configuration files "conf" and "conf.interface". If there are no config files available, .B gl-117 will create them using standard settings. The contents of the files are quite self-explanatory. .SH DOCUMENTATION .PP Please look at the .B gl-117 user manual (gl-117.pdf) for installation instructions and further gameplay related descriptions. .SH COPYRIGHT .PP .B gl-117 is distributed under the terms of the GPL. .SH AUTHORS .PP Thomas A. Drexl (tom.drexl@gmx.de) gl-117-1.3.2/doc/gl-117.pdf0000644000175000017500000155770510145416156014070 0ustar cedriccedric%PDF-1.4 8 0 obj << /Length 210 /Filter /FlateDecode >> stream xڍAkA +r=ld&ɵTK Iz<~YՇ0_( Hф pF- u <.P}7fk.Zl%“ OGOaendstream endobj 7 0 obj << /Type /Page /Contents 8 0 R /Resources 6 0 R /MediaBox [0 0 595.276 841.89] /Parent 15 0 R >> endobj 5 0 obj << /Type /XObject /Subtype /Image /Width 1200 /Height 300 /BitsPerComponent 8 /Length 84144 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDuckyd&Adobed @=H,N  `!0P17@"62#5pAB$48  !1A" Qaq2#06BRr3$t5v@P`bs4%uCSFDTE&Vf7pew8 !1` PAQa"20@qBb3pR#rCcs4!1AQaq `0P@p <܀]Z>OL,4܏茓Seۦ~@boZ,g]1z;;+nLG/P5lҧ={lu[cVJ /!3>Ǡw &0&[p!0x3|"L+C0:,}Y+? ž]$r7ToDxBiVD;7cC# zvRd 4=7N6AOCz 1ކ <ڜמ~؝9@s:Wc=< ][cƱl>IȚ r7,t0\B$ZCK~byu.ADi@^8.$QɚF`4I׮UɅXI"BqT[rᑽ8C$U(3_+[?0C;7~'ˍsVf&*93=_eQ̾[[ѯm=-{3'mLv3_UI  C6JyL+ANːG (m :/ya }O@ 3dXl^¦҄Fg(W)z4?1TykQlﮜľJ_Z?RNWgb=Zp1G<렵s%iB?´rtrԪ]'aFv[58:sEV#m39GѧQRבȀȣC`T}Ӡb0 o`T4sD.ʹʃC1PL2pɒ=sڳZReSiK\\V#@by'Wb?/֞e>Dal )!EB*dMn w;XaDcĜ)a61Jv.$$}LS5pxxvUTz0IK(*i}3N_U#'{˱ a[t e!@{@ C tI/3N) :/:?@XqaT3`VDPږs(yCo8[Ӧ1fOu3RW O)_95ΙWn;UƵ;Ѕ3Ҏz1륏rRrwͪAdO0؍mDz^eͣ?vjz_0EYGI21ϴjtu5Jgmp&X##r72t"\zrBk!+CXMPey!q&9έL*c1ZЫ9O)e-ބ4&fI6ԨiΔ%T)i|iPzmu[}EȐ<0/\Fט:)֪:!w;ϓlg6npXįw'i*k4NP9A>N_p~6t~^(Ó@6U ʝ<$&@2p~  ;#+-ĉFg)1 'r6WcuQ"S]Xvn? &a9+ь)2TwV6WOlK<}!s$ٮ?6. {Ǡ pg-Hc s")9k]_3:FR.;yun*}G)WGFڕuvm^:#g @#p !nUP}pF%0OO9!5ZfA`ʃr=N#ݡ%?YLUҪSz|.ǕFeQi>h%) ѵ3vT)֚Niwk~ b rTWno^.Ǟy@y#:Qmc1uJWmj:ӝ];E] m# 1O c%97\vE TcXMPe׹r |pR <:^. 3x_M}/FtH7NeW7K]*7#OnƟSwbJly˕Oȕj= %W|f1gWZoy(O^b6{ByMۓm߮zM,n\fڌH(:pzC[iOlƕ%,z5I=EYvٌT A®5|u U*)Bm#pri}:?FCAn߰?y͆z~Jdqֹ~ɫ1LpOP ah"pul$Ipf{IDʳǠtP uf\` E{'NtTg_WJۉDvRqf,bOnd Wۿ .0ʍ~a'4,ÞEŶ[UB^bmiڜrniw7wcߝTwTrkt&nTa2( .9MY! :2x9a5B'`E>gGeN%#@`gO>~h]z0ի9Uu[2ye[q;ˍvxue~HMpfՁ|9a5BXe*sBiul$6g`;GEe[[қ\Y\=u IqwGvn fC֧=j^Y\,|y :/1' ug1W'9!5R[=9a5Bbdh Tl"چx}wfa?sw']ixQb<\ \=@Sψ=~{r>I8,%kONsx\{ Q]PR]?_rEn}gL޻|9~sm{/<$U٩;O+EunWxrtW gesfWi*q%2|*k GKkoy<:総ޮt';Ѿi͕OU<(={w=M^tNƷL{r)xCBv|A;>#*8saӱX+[zﳿĨ[χ/cvgrղyg:9=:,ι 8;ZU{3&aq p=Dn6~]]pJvl`S;M=SQggG_zNo lh c#6kQFl\;"9"; 4Wv$͚F PvTu vGJ &{/,7BhޑF{ED b<1Н,:65mp Jcc@gbG$v QPeͺM(Q2"f{ʕiVN~7u=MM$U~uM͡jQtS\}hl?rܴKB24z4wũyiItV) fqr2QEw&{,I'SUvFzե6#ODQ{NLΈU滲#wv\*beiO۵_P%U } aɹZR/u\ɬ-S~m'dZ60»}>*RU+٩Zn;UInNtP Mblݧ`wAOW/7('x8On֬F>H'.ml'$k)ߕ)mR;U 9> 0aIƝB(0fC_K "ETҙ}Y?qduVWgg O4b?%-#,brbl'XA< 6)-af:|ܵgPnJfz> arF^=ʹ:5dr.H>LIR9c8ImߤUoEU gp3'ǿx,v<5Y5ߐpb˚!j2jΪ):꽷6}&eQ1I4o]3VKL0]L~1UVSYL~e1qScI+ OhAxnfѯ{TSeMΚli}ceAPBR\y.; (x8 sI<9U|!ڜlUW>eՍ sAg[ƽDB2ِoEpAr\HՃR bJB Ԇ$8e(;NSk0R)LQTDy)qlL3NWÓw\aɵ\_XPB'quiՊWLS!21?^%"*ZA{nm VoKVk{ 'F[y'MXԫNآWk֓r#/ {[=2ȵ\X>`vt!4>cAh[hi ;f҂ma %*x%n)7pQIHJVZH]S!1;gtJfÞ]HNj##Q%!AihHJڳIqAl%r [8t˃ʵn5EUg$uJMj[ZҡӪ_ȔY^j|12tqNe,n\hiОP40Wq܏mZ%fc}T)LN6E̬]ooooRh:ȌNtz-0b# "S /+ޝqN4:ݣLxtj rC,o=FkʴM0?SMAXdYAyYRRMfIH*sqdPū,ФF$5Kz[K>c7iW/ Y,wuHq8ާסmHJn j Pf;gUq1/1MԳ~"ZI>ioY=Gd\;JzulV&QK.Q qnFBV!i. ͽqw,ۮ .NLSY\DHOT>'X6$eYFnjenJ86&L͢,wQYdAjek'z* RmS}m)2RARg4;PZ%NjaOSն׭iԫ.g\]&NF`%϶AuB U3Pfp$D}FIJT69@9(;C&+m4 iiv!Nd£Gi^7E:Ľ)j*>83,7&g3Nă'ܜH?rq ă'ܜH(nwL)N bru qF +U@şJtJ฀['AA DgTŐKIhdeIqKdI!&1:S~#T[|HۤiqPJUBeoŵmb?5K Tq W UʴUYj ;+Ht2u( 0RթCԡjP(}Z>J RVEjȂVJ2.u”*BKr3 ^eSVЩKqͥߥ0e HY´&56#"]AՆq)I1-@fd"eDR u>KIi u[ f;Gm *zqk4j]Lbqq.kCBĈlY6Ph–Ƃ40j -GWjtwS`iQGK SگiJ|IMjDChGNoxERE;lhYr_>0DkuU!O;lC0 )$;[R5)J,fKDxAk]H̏ te*Ɛ5r&}ߝpdDџa,89G'DAh/O+6˷`ZWmS%w*hHRK^"[VN6OG ˰Fƫ~R.C-eh4L %Pfʔ3Pm$DS&b̊>Gy -k۞1t8/]y2/NԖ])tub)j8Z&Z;äVfjV[O̻U?d]Ywʡ!KQǻSJ4&1R`W9ǩS|R9v/גr*|8ykBK$_bࣴWC >_>_>_1ACQk_ *Y hD Eי?:95LbTt52aMD!h^7]K(5.ujlT]Ghq#lSb5ROj].qEI(K4Yb9N Q->Fat+m^Ȧ9̨E'k:MDiAi_/Kw7]1g%י?:hFhdG^H>zҡFnR_ Yۯ6Juڵ,DP[1V˜ɘ0}噱{E3_֞Kut}rN1Lp(-6b $Il>.BŜ:}"wir%ntHjTQ*$rtqAM'gOeͽxWi&he+̟˝pR6㕓a;{ԾzuT.>y;CI*ę55DSA;pV:dJD:Gq0N8۪6Em!-9Sj)6Rj-'cX92q֝™ V"bIv\I4qĻavad^˕zI GeԺ'\2KF.YN1D5K  ;hƼݹn*ZT2D$HJ8@Kۍu.iV ia:iZtҘuͩv-+'[2Mcj\$6‹%|qv('@So,Ճb( m.Ro,o,o,o,o,o,Ћ,J+>X)GvjG}'XH8lDR]e }1bXnNdMм9͡B?!ȤCu$UwLw֔HYPv9THL̈t#Vuk5^@F#b,U2MEbK½,2$CX/&y7+d JJw}7]2QJﲪ6TV7k);duW2cEI$0rQ2N821F lEIFk7T.Ly'*XERK59?&naYU,:KE ۤTܬصoܗ H~[ϕuԬWW(PRBGf:>I ycۭlZwowU >z*NӼtZ{~UVKxxq$+5l'_\N9udp.lG? l-$r7BhcErN\ɯ暵?rs M5[#)_̹fD.J@sBrorg+[?(q>o{;\2kO6g)<ԌMh{fZ N8WtHÏȉMJ J V][l$dx_\N R{khݵz?RP|ZzaKܰ#b#_qwa۩+&z{NxO0UxA%bRƎ9[t˧0sRףhq1ţ5sWy}Y /)K㍡[C}ZO@~K*ٙ䬡8?8rWYY r6s˹Z*Y %S FɌX7ZUfܪ-V.W@&KGON]~\mh~1[ܙ6~\_6\{VU2q_T76sWg6sf!YlN?JjfN6{:K"CT0y\et_ k-hǓ2V%2\{ƺ, n)_ɸzq ,nĢd|cje*%Klp#3ht:MH˼g|p~ ږ/SGi"#+WL+CZ| NPxvyqx]xnrg뺯B =Q߅Sx[~1+[~1f1%| Ԍ5aLwU\!t "jWW )t _HEܡ'WN؂s;=l F}Jܶ)v Q$k(KSDrĨNjQ$8ܳ[^FzStӸ{ܵDe4?4&QNr?z4R-͈qOq Tn!F?MGFqnSNUD-۾i' ek:h!!~~nJ Ahӛ\އfDw>h{`A )!d1#/;̎C%%]]Q(&GԚ0|GΠ6>F $B# 76C6 ,qk$p27Q cfICk A-$vP JA#(@ mm#rF0f⒒Jz>8n10BGl@=fNw}Մ=RiCH}ޟ'Cp*1[fGD!!-`HJCK~3 ZwC),%(76PJ=K(7EC0Y 5OHdD@ Ӂ&AiIF{7(! 0Kw(cq_33'hZV^Wui.>F[@ֵ66## J87:[B {ɳ0PDlB42;)4VG#XZ)!C IqF7;qۻIeRUHq[RCR 릣il)ըia0cj6^I'\6[1[* HDchCi 'ԋOR=:h6'R[&; y4#:fI#^0A*hډq)m_KmhYzL!큵szw#0iKar Y[m }F P푆p|C-hJR5HLvA)"n$'E>RP'%1F~OHq$qiAz))$)`f=Cnm6<+8P=4P"uJmyQjDQȁROqQ2F(,ZhiI t)0D $f5Q21 *&P\& B:Do+5:B !_kll1hsCC]BII szmQ:]K!QABO8>&A%RZ SL6҆CI:>V]h32&`FZlPE]AN/I!_唧pNxt5zM}]5/+%&Eh4?5>%4CAPeZI4x'QAŠ%ԽJA4`Ђ%FZ Q)$%:-:K_+z6 d O5gkF2?Xm*Q^V6)?rn GO@"MM)8J@>n~Ƥco B>$=ij5Zq.wOrK d4 MFp}H$5TJ'`%dKThIhj6JN0j"v0P@H!""]%%HWȍFD-"B} (:}ۀC-nZBA$2DFfMd|>&Y!ꇪ6gն}Z@j5?6QFHuOW4yB#=֝BπTFfgFTEn7ѵd4kPL 1QHVFzu$UlyOv$xdd MH#_,ڍzIB֧Hqm*4ZF'`# ! Q.Od) $nZ!~KaP:'ZSs[y=0cP]y% dcPF5Mj? !jmHxNf5h2(-AYj5SCQ){AEJ&7 zi^IJꯇR]M^K%u?C'k3ɤz u "AQ#Țg?(WJAgӏvfwGy/ M ?_vfGi4 D/R?Va˼{|7!Yj,C"Ba:0"$3E6MNiaFe&D,bTԕ7`HD{bqD"k11M"JNB&"-D@ؠ58,AQq#E8Z~mIyDT`Vb f2D[G:q7q7q7+bVm=}>_W>w>'v{ /S2H`ܘ,'!'v{ƞx;"x$FT Wp#w^,;!e$))[ "6ÐʊfR ڈR vBv< #d\mJ b 5 aJp z{r)qrL,"w "7&o!uqIpBy6l "Q]]dB1KBFy9U95Vǔ\7FRt[3۫ ,D,lC nĄHVF!JE׭."@!XDI hCQ^\7u@,&&7H) "7}",HyΝ٬R"7 b%b%br(3z0We0Z֗|Ϡ?? ' BcD: Y̛Y #FM4L#yA '@xۮ1E ؿSR= 3C2V!$+vXM:p&B3 w[mR=ƵzEIVehN&l;I0;xmϸ?_G"u~>9biS=2>JꮛT KᨺXo  gJ]!A+bVltVL%᫮o}Lo gSpsa@M661?gUկOC I،R ﷴ?է`7 )\9; !xnvfQBڝ XHYC"ZG\-ȭ! >*.^;IO&NR蝐 SnZ;#epitdd  Fᡈ'?K+'!**1 anˁM%G;F #f}{TلNwKh7Ƥ;+)%b=^ ^µ4giR8F]a:nqGZHFDxBB#:];N|Ni [ŝ%Ytrj%Y/U?{J)Z ƳQf"m2sS9bIGO5[':w)d!;# su4)dUr#hSCm΅C[arW?MVɔqo1 w]!l3"%WEYM·oVDT#DDu\!#pQIQ1hC#uG#:ə?J_Xdd㣖kVv&]mgMrlZm WQҶM9|T|̘5"4~<}E t֝EET$,vKj JO*l*(F뮙 )j(裐ImV$CRMᐔ P q6'"ֲ\9LGg;l2j>ӈ*" ©Q:4TLQy/_ VS˔I׬/u9q['녚DqUWL%Ey1e4܈c1!e^mIYuBE^o3Y-k˖aTAAEqמpl QIQ0pUȓ9a4(B9bIH@Wcǻŝ?w?; ~uu_qVLθA9jʹKI;[ b[m0e\\1 &S 4jR^d=,{Ys?' oq'F6V#)&j3dH#o S.|4fӃI*6&=,{Ys?'gx~Oǻŝ?w?;w=,{Ys?' oWpm nnM@W`U0[Х6iP&NwS5E[y/ixb[CMD9ioyDzeVė t;H2җ=AƧ7vqRCkJ$ s/ fJ6D\k©T%9'x8HWȝmvnqD/H! N7Hić\ZZ]^tv=]- JSGxSfuqm-5Ʀ:EOZkOD{nƍ*xܹ[sIei1gTu詆mQ3ho)ᯫo/e6IvfAo9MY%G|6#/0ߔ=ӻĉ|]"q6#Iv ' ލE b*c$U""x?*BLqOfع}3=nj"ןm!Q9>2(Y p822nyE-uOfm)5r1ا6ݤ{.QEZfv)*jpNNJ^+XYrD2cǎ+>Ψ,*DDJᡆ. kǬ)/ 44YMRcIRj]ּTtEUUUfBj23×bCh2k71Cm^J[-aaڬ%)ݘ?xpDvH3QgQ\ɹY1URjQeg%muu΋7yGY#:⵫Yk˕is-ȀӒ87H L)MK`_ q̈BT_boiYM%JtAjtܜ1ʃ qn6e nU["q%*v H#զ?'2r~k#h (%⊨6lH[cxe!Z k]mvY^hb 밢6;tP(\ |3Tnjbw m֫s$&j'AƑ*At[ljfkDtKo24b>h:眝ySS;H o y̏\Y5z5Mյ죌*h9yS~$5\qR.t{mM(2!DDRdfnmntIsnÑ&\^Upr7Uȋm京v$NEK$[˚|x>m!}RWH@\77Z"QnY5rΦr|U4l9rDR+;eVHfG7fiiةy'E^ع!rn-?]2%%'Spg[E΅ >C9M8'm;҈Y'JU{}l#c 66RZq!ǎ2r XqU"B C4Uʱ5iU=~'a8%UvTtW8פ^cr'3yrQGTsU'5?6\\6s޴Q㵨z90xaʭxEo/0iJcM9QUjDD9iWjWx!s𧩅h֊=&ZW5+zי@rn;MCl!: B㫖KNu?s6ӫZY^]X+IçhHҋpYK\̼#iH!E骩* D*r*.;9oP$9 m|[B&I'JCtYw /߯(gw9LbE6ksRR 4ÇDK L䑲jJ*[3Ob㻯,aLԣ>Gei8 8 I^)NS-Q)F|w_S[^Dst|ŵ9zrnN\8WfnN߾KhaфWw J8-0; +TGt^ EV>n -;]>tjʫ"0ie(rI4iV8o=fpO(e9AI/$߬..__aDm#߮>YFzZFm 1o?QAw\TNO.4dA{IOK!SdGl,{~kNh>˼QpșH׀N pUNƐx.:^"?,pr^S.-Ym.,5[=#@9/$f|'Z=]ʊ2QL 6OSv+Z)1fJ8ķܐ$ńC*Kk2ϖ6I1h\`6K㻶xvOj{ov ORm7(HoۦGȼ"LpTkZ*v] HEhfAD\ud>e3x E!e+!ǸOvb#I#j< #3zmiI5 E ̜õ]c~uuzPm?xSK'VaOq}mí`lb`UֆEk3S*pgYH8qߕ,ckӄm." zDu^c2E pOLq\8x[/^\m]OCm%ȏmiau{cm65UU<ݹ¶\V_ Wc)Z`mf ~Twzݺ#4뭶m C"R.bmâtEW!,m?S5UD\e4pTISЪ*doT4Ksyȼ>m [t9Swd_2"fw D=~ꢧ)k, 7ʋ:0G sR3n ՇEԩ\?qn }ga fzTWRU֙ %MZ>/6S}U\fJQ6D^+X^vh-<c2N:@jl[^AG?k>|vy8mn\An:0ksDQg}\h䐷QWd+Y1}> :Qolи=j~kd6k/S }VLř:QBNgGtXhmE-;j6et֊gN,/t y{↘#ŧ.UGǏw j{W{8--reDQU䶈ۍCY3>=hUUDD\i4pTISn-yZ[H +5);$ѷq]^DTf<&s#HuK%s-(+jPuEtj AS7{J &_dcTn_{2p֝- *仃QB\.?r ϸV3Ss~UQ)(Dcary{$"c8v89qˁ^-t_!%1>jJuyme of4wܵ^M8ų#V28\%f IRuJC`891W\pD7g=31_V̽K½6YЗ1Bب.(ce%UsҼ0o;Xfg)7d,fR SѓԦ BIٷcN"2_=#З2U*B`D /o lblC-u%-\sq NȀҤ)UAJ*D"Elo+$v_>!)3QaC81_aWTTEEJ*/T^TTEۑnM{Ij,Ki`z+0jV)ͭ(U<?t=_[~D\ B*gKixQE|8bsoT[k@ehqnVWV4 H>2獷:n[Ƽ;Ia)m3kao>|P6q;[ܞ[5}p O(\fZ߫*($"QLȪC6ݢ'[M[u\ W[k q:`rD>y={Wic>y={Wi``MMm\p)MڜyۢN)D5q%8QƃM:ɀ~..f wk{/Pz` 15VY9X͆URqwڼKϴwڼKϴ˅Z/$[)d+FsLJ-;ML˖E%e\adҶMxGZ簮hTq~d_JE+b W5e\'j$(1ޗ2S捱4vtˀ6běbl: 3uf y2"/iFaHvk&]IH71UL.z`-re- & Duz~bB-r޴I9tuN,4֭ŒD"4ٴMJ=%7]Ņb\7dp*$$. N8(`Hع9z.#]mR4: m&n r89\r8;;aDU QQR詇^aX4N8s ! 4*/K&rVDRhxqvI8%B*̡3%R$* @BKo+u6{"2*B뎷PHSI"D;#>8u"ME4L%TH{Wq[Qq$Jr).W^\r*zW)) )ۿx|10Q%Gl\hmb(TTJa7_u&^z'7"H}L&YOq4I|&ecYݻMKr/:Aݖȕ:7 GIWIQD%Tos S?\RrpZoI*2n qݎ&GmSuN -phG9Srbe"-:"nnKs{М7&vspDADNN.WY4:9l]=^&lrSp ֥ۜ kۚgM  PRV`eT"1hR"R"R2"^|s1/iΘuAWƓ q1D wWez9qqD\r9qˋ^ز %r>M0^HXvTRZHl8 :#Q 6S+%%yeJ!*o ؑSMk>kJ۹uFduKcqb&Y-W[i]g.8/c ت'a1T\tQJQpx|\!xq‹\y$Uƛ'\fy#̸zcڶcpOE$t U87[e#%56LiTn;Rخ.BȒx+}n3np]n7Xx۝Ueu&+8-qr.F̫Ag;~jh̋162b~q?h?+?\cq?h?j셠qB~m:|Uyp.}]lҢHөT=Og0ّg^3;,[8(LfRD. *k^fIIM23$ǹ>ۿxFc 9"ڃtWIxҲUpFH)OQ n9*_ޤ9> 7۷~iLtp\Фe E|`2z}u 3G5tT -8\ -[˜,Lr'v]z šM^N _ӥ6L]wsΑ>cZj5=6Utdh u>;kʗp`̔ϒU6l%AiSшL"rc' VexWs_BN8*:KʸR&>6**j|s7Ltˇw 3nzfEܛ%(&I(fиªo4GNz{PXuT3W鸌ߜUW ~R1 qr;p^ qRc8W/*Ep{XpO"ᶯK%qZ Ȕy h54J'w s3m+pzē"~d S72gQo6T$\ٶFbD\&{YhJ  7ohyNL˖gn\:#ۼ\t<͔u;#~=͎.nNm[yT}VԨ~l'_޶}vIUkLyy]^vיnn|g6ϊk{XzƱG/A\[WtijM<{+pc_Hml鮗6)}[~lF\JUd٥RQ3Eo2?o2?o2?o2?o2?o2?o2?BBD!!Z EEN ‚dMO*[^\_r" kʙR3JS 8Q;Honք־\z[DPr*5N(ֺiAXDml@M̗aūw# k[m-Ϙl0Re*Ȑą^X!Zr!ô\7meɸmC=Ts%ݎRl֟epB6EB(>6Uʼ"/ 1{ -L%kvxvT 0fUmuékC_YXZ#tJDŢ">CդX.(GĒ˪Ν  m ʱ.# <ӂۀm(BH="嵥hB^-B1.O]aU@cK-P_4жvBaMbܞ{L U1 YxNlC)]igŹERU28>QqBEE~/_{KqE*c^rq*G9S^#eA17xMfԶYu[)jFm֜6I|# cAEUˇȀ ;[ȃN0۳Mq! #v0uQD"*ERk $~ȘiW?|S-3[$uj!K(j9֋9aC\M:cO4e)pYofEo3_o3Mњb'kv5|YnrwZSIrnG|w/MMZ?hZHCuWn'##R2B'3f ,ŦO*EUNZ.~-d$V2~2&7'w,Kd%Jt)8"M7Y[Q jm)6ʝOc/{jc H7X`q{(onӹb&s见XۑbX' G, ʯܚW%<3ҐW@8pEKIyq0^U^/iqV]^&#adʒLFd4me'y DQThc`[<9ZV_5m]ߙqJ}-sܛ\V0s[הFMʡt8Vh7%̎Y񥷥[Ԧ΍l  }$DUUwKaQe2y14GVa\Bm]lHI8`bj+E2 jGXAh 'kDT $l::ȄѲ1tIO,Reƨz-A[TP!:[!%+0#x"tx0%{DwOp4v}H8|st2)B'Hn3UIzo;7W,UDTZs*yIg&K:H)Rͼs)Oۚ!*ʲe2"O FL]M=:ATFk\:ɸ:C)/ǍmQo=.NۈqqȓW8jF-pG)GZ^\ȭ@|U6s [m/^SfJ< ۵ ]-UԩEn}/_YqCS Yn.EJÐ \` snjKPE2"0% [ѯ$j iklJ7!lzlm. E=4ԝ'"zKd:P_mI<9>1f?ۿi-eueg)ظEdZ.["ISѠ RV9vٹDSU,xhTNT$>CC/^Ű=G;݀Wm.'SeG.'ke?j&KlM2}{(-"%GD&:""{:V+B֟Q6zR#1k93\פ%7dsQKW)<1U/,]e0 p[x/* Gn3c2O9xBQ@AO vvBĆmezlF, ےlYY-VJZxs/$Rl{aymGNOźツ^A\E)6س))S\ZzJ)i7p(Kպg# "]`ʷ(n6/2ihh UE*SNSNNE9S[T/E L"nj73Տ4p$ͧ 1^BL+T\^lQ=k} v#>v{K$HcG/r(s-9>KÏe# oK 6B* W6d >w7`0oٚ8BełmlgɂsI|'롂{ǻ}q<{tZnqkYl%(9&]5 cZ.mXe%%ȵy<0T7ge$^nUDMfFD"qgÍDu=\;[J%n߿^+}:ʶ[iG>Rە:PrYE tZzR=LpS'nO68>b 3e81alCcsnW@ !?&["n޲=\x>>7wч ~ӷ ZH޲qͿʫ~HsQM8Jг]bdGU}Lt/VC yqПfS8He||p0_&#~YݻQlm."źDsvkH9 mF 0B^mgmݵo:%F*FT!TM7kn@8R-4WO7-wǼiiZTrBIFI1|Y6 bȵ%D /'(a4?SG*s"bWՔI~h2%2 mD{ênOn9TqATh8zrW7I. )*A#ED=UeldqGF=,֙"M;͒3n8xɊq( EHVY̻-875A71 sTas6,Y%csQ1? RmXCfr$] ZzNB2?7'w@bHȖ", yÒXycZ Nc d q骯\nO68=`pZ(>7,#T(V5!#h!L4]\H{G`7vM=%1Lqُ!fvm m)d\tv" f樰H4e )i*2TpDzd׍*c+xWʘ%Qwf̂6DEi/#8}te_Bn6[UmۿxI=WQi3*+Ms-8a巟A YU0|OTHُ!fvmeȶanOÃoMvVW }+JnB+*%CPhsa\ؖ &X©+T^ͺѸ#6|\_$N.n6?-hw }':$Y~XAQx*zIpN#6,}#Ȯ::]c:~RXdsVJ**}-4'#}WU8dK:AZdt#ZQ3xǎd< 1p¢ӽT(Lr]v}b gJ|iit(Pd 8JcDQE\*]@z2Xۓ9Lg5X͵shIJFӲdm]u}dVlOhP2>cEqF2vmeeE?:5nFm{(Ә 6/Rtm$JЗ?ڒ;t> Grl{\u5ñЉ^Ƹ5-&Ga\c ^אZkn n:6)cTWk{ [NH6 0PdVGY…[\DԘ <9py< E਼Qx/d02mh2mӘ.Gbdxk%/*/^v#IT\-[|"9&dOE{VEt}lҜU *$5N"ٙkQ֘DNd8|"LmW.)ݩ_av3&LN됚}U^H{G~[Dm!gz,\;!qO/mh 3*pNbh,W0T Z_AQNMm8( %a/뚀?7/ ^ԙ_oMxڷ]&hQWH#>Г^Z"cݩwncݾy=n|ny=n|ny=n|ny-J+ c@sQRe|ˎٻnO68=<Iig,yt. ÚM(/JG5)0GjE(#R*NCue޺,nM9m̹?VD#6c/e<ۈN(ua;Ue8Ixqx]^ymC_̾Ot^sŵG_\dZɟ֭lV4磶̼P(!f\Ԯ*_@S.DOE9p-ZZ-2 & j|y K_’'rxpeý|.#nQr?g?r i+spH:~巣i7ܓgd5⿕S7W[uQ@dj͙=< 6Z`xrQ{xzPP3WYw&u\DON^eD!Z/l7+-&8vU ,o:J ApƒӱGua&eA^hM1TQ^(g Y3aɬhbCiy<[bN.Y8VĶ\nʹGR@O)Y 7_aήf du5RD/_@Gl} r}a~ wy [uQ<$ [TRݯ +yJ-zdԁ[ В'O]K)iُ!fvlqZkg~ۼό$dDx5xQW!* l;;CY_=[mhN ((u#I7fh27SԀEFTʜ‰'Ss ܜp@yU~.*\/~Dyפ^*&47 h"ޢ':&(K(WTE\-)|ʋyx2'~o> l&-Rd{I!X CB7۷+۝Ib[A!Yd~+/CܟXm߼p{H@ܷa\ #vѫ^jēPQjpN%Zk'bv,nM8_,jթg<$d3qbȮuF^)nE[VQRNm={vVq/2r*K۷݉iErgrd.L4R8'V[>|ZƋkF_|4lt:E=sx,zUPN[j%Zuo:5a:X^ӌ(:ӠMُl ;۬ηVއIr$*QI1g"́ڋmDuk#q5ƭoyr9h< 聆yqcM?_+ۭ M&+|9Hnk\IAL J)D3s5F?ݟh!lj%WinZ^/~ kΥOϬm&?QS-ybMi9( W=Di"AZTpZ$J%5 r9χ}Ulj{Honv,iG-&/+kjTs7U6e)Е;ķ#֯.W 93**f;] +dH$,cmqdyÌcBE\vp PQDFL&Bc=NrWdhk¸n&R]S6KiLxx><~n5\ZIH̩axUyp@NA#.VW&GnKq cPIFzsآP1l @Ӌ ;1#6Y GHs+bRU%_YVyubw#&->)vd6"T 31͙^&S1u曭 HcOmױ.A~noEެ uU=A )!qDDʔ }E\q̼%b I;nӸ&3f"O2I%9[FJ%(]$r%&is 9I~h\; % ~ˊ|i *p?͗X }qpxm8x*ch>XB3۠OMhSbG'cٲ曭%S".=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ia,qR12Ȣ'""6s[n渀.LY-e8-hr$q@Ux&=l{6_ic6e=l{6_ia&6޵L@&]m%s?3Nrxrihزvkt)(5*;i+D=l{6_ic6e=l{6_iavFN(CȨTT[|# xv<}6_aYyEAƝlATǸmf,{lǸmf,{l?fH7ŷ۶TTUJ B N_M }[]=.?W"N+RN Rr=%PᑴZukN"*V U̓fhHm:6.Hx5@'Ie\4vH2}^M<]\xZd:V늜bn)4ɺʙS:+^0>VвWL9>YJ;`p"\ jFd%C>J'G[Ublسi5r; b#1N=|g拔UҒ-)7^aQTAq:MB-mùB5]&nC鶴EToo2ы:ӂ6*8*~!axŦiSq\5@m*0"՞,djMrti`[T 66c1"vatT ֲ@'Ɣv+@JUrTהPR\W Ǚ>Atܒ_Ʀy6mGL:6MB +T(cUӎsg$m Sۛ\m3' u:̛oRH*TÆrʱsF+iF.:"$A8OUqˏ3/$BU{8wչ 5<-纜iƪHZDfv"J.7F=3ň5"ϨyI &^s㼉cǝ0k+!9a9#5/)mle@[iiDlMewkBHBmӂ*٢*"NLuFsTLS V&`DT68 Uc iOWm +T.yۙ#)}W\*~rkMަewälpZVg(ip6ꨞ}V(4{Ǎf.62+in$EmP &5;M , m2bM6mQ8"~ȷc*a!**n6b*BG{;`*IteUU[UN$$eLpcrv< 0$6e\i֜D!!&:ڼsGzNjřܣd$*%T㟠,6qxY`:8m#v2qWm&52HȐ%n钩*􈖪A]ӏc"N۰]3'b99TK#4ZEڢ jli]co7n=ai{,n_[Zn˼6Dq6N/mh'la Π'W;w߫%o/_76pۣG TaryjͻA1Vq|\qK޴yzUddNH;4wu\%m$,V;=P-QFIUHu\%75'2R%RU_, 6GNPX #>}^d|E dBYY$)8Aڹ4تt[ة"S ʈeFypّK&0/4 VȟSn TW^/3 ; k3Zma8e|~oO rn?yfbi`qX!~=m}]&}2$e"$Z 4߾,_},"nl4 Ҡ!Q*A]|iͰcv\̦d}n3׺Y$Hw޸̷mLJW,8M?syC6P6 1?}_ka6F 8:E$Fz [bT'pםq%Jy2}"L}LGyRq]pHUUWp}%Fw%45W %>%},^cqv+vߏǢ=~uFpt?}63es^N\%PDAAMG$EN>iiK_ZYV҅rmӈ֒ (Q1}n솛ƼW+xh̷\>֣qh(B{h^ˑl5qaW`ˇquDH{ q.!ٹTV}heu} mfffNY,XWHkZCP[L\f3tݴa.ˈM˭ ""qsܻU:by뽆9ju-*.uG$//.<8rVt!Ohc،Z}s#LwBSOOl*/'VB].LDt)n^+QMTWv"U"/9DKR"]ꪪU\m+'(ߘ-;ER4&|X}"DaRhc4oɑ!FĜy$EUU;!M~gd;3nΨ RQ%H5@5lyvUq>;A6ɪ u҃EcMu-ˌEӌH)VbC.8**|_+;6wŠZv=rlfAn@ThKodH  HNx$ ҹMkT-6FvS#5o)Qein6:4o(xpdXK3"@ɟ6lLlEC+mjf%RZ u+ͷfZQ-2ݲFb0#\z<:IVk XvXO-dr7:8fd˗=M6ͮXɷ[cIm4̩\1}2UiDkpg]vcrDBPY 1, "/*Pow=NVטmHJuo92"]˓ `3m7nUƣi*Ý#(8 0Yvw"EUۆsѵL][z<22-tnԸd٣mk+0լL,Ev~z-\/ŮM4÷Zݖޮg%˨m2Wzz[E|j%crۂkQ-V8m6c<89-DF6[ϑ* ٶƓ]:i@$>fGA"Avܰnt!1^k!>$кmԈ|t J/*CYDWr>ǎF7.9l[TE^~l˪ttk[#y 2COJT" wDWI#oۮPXd7@QDى0EPѿ9UTd} ȁi϶9Qτ١nXG%krHV[*PX̨W XlPXm4(Qҍ*USq\%32U7 UUW_wjF". E˝\(Dr6d҃6<5vrsC0%w]nU XZ&ٿ^&cTC0dMܮh2jϥ֘qL>LRolF#e:S6bjqr_O\63Vk1aRq\Fѓ~8E^\1eތo)Wlq3[6\ UZa[UDPbʊť[X)^91F”_wx1oۚH|GNTw8-WŦ?6.o\f]X|#Id^+jyrqb;vH03`cie&Dž"2bnڗړ/.u^p-7v*-Ξem>D0]Q]ds';a*sO{y񱿮L0nL(+-ҺAWUᚉ\m߃9P%lyd 4Ic`0T j5 wr y$:7b)+p|Mvԛ0}|IlC F$uiD䥚#7e1簐^݈4v/-q6h֭8!>7"r16f=A!.SS+eβ {py(_T.F@N٢>2%D3X+D*kDY#^߾B MTEnL4z֩ˉj^jNסyyب#H:ySUgwGlEv=mΐ턩>kI02أFJ]Vdžj%p6lӊ!ciz‰Bo1tx[naVE㈺P7!"Ktv6NK״Mϡ1,yHqӌHxrj4MR'F--L$q@Qy VߵB oYaf[^4َoFS1/=VCs:Ld\tz7YMd,l-7X;~iY/Mc4x,t_K#i9~*YFm ]Tu&n 2Fgد찣)y-՛>xʶ#yC&ce@\mw`Nbk3%258cG;\ȧՔ@.!oHZHPn&H|~u=~fk!y2'v#wdTROhaIaUǀgICߛ.5Ъ K=\{:| =G ScfYPRh0]Gq.XuTZ]zWB +K,YZ?.[$ڗ]3v6061x"!@MP/ W?cϾürJ]e"nenW/yo]kZt692p_5^܋'HeDk4WJ0Uڋ+3c>#M HEOW2~8j$We@(lJ$fu^u,ZlWd 'P¢1 L^ 6к,ᘢ<|u-2΂auj8lOpKE=(b(5XZ_sp*'̍'W Y $1E.H@XlP mRk)cvEud#%ݫtHCP Јd S_hp!!*"=`{ld$-5.F~3d?>SDVwXLS- (4N;+$iW=5'L[WAxGb]SwvF*̈́UOe!_)_6&l2P8 `AP){(q~*< PJ\vߺߤ"sbiz?z4݅7QǕf_)[rR&W eL%)C)IDoϚ:i#OQnvge_|dڇ?B]EȀRsJ PUZʫokj g;) iZ,8Ȧoü1BzW-ÃhP`*qx_ }蚎!6ǣ<+/`]BO?w4.fіTȩYG-u93_>\82ZRoA1}ǻ>|?-WѾ!x,գ;5ap^/,~1+t ۔^`Go+J.}e~ԅmOZ9̍[uet>sE,=8>ɗGz(qG簱i HTuwxO@[^6~1 ,x~}){|6w2D<)+IRȧ~K߅{*WbOMOPIq9-P~y\*gQ_1O f4[O= DSF6 `rgaR`\OX"2b9n_)^CTnƠfB uC^}?~t,nx Uϴ$,1[Bz ZI#geCZ6a# y '_{ "eTǪ0ߚwBB )o⮈? Y* v B 3٫S4͢J\}DuMAŊ:- &D(`PU^jy9X DŽ'@;R5|V<t&_ŧKq[ΒdqxM6;1埊-]pJ1_,=% h|McYbUDEGIs2$! irMr37 ZCj>| Qˤ|Kva]'}fK1ǬRHE@jWcZ4صQQ]b^Z/zKf:#^oPȴؠf9Wǚ6bHk==#2pB* 0xv(o+_X{3R8ŕp-ȸpB=x Bds;0n "8xag_ < ѩjxwwEp2eYt!zz,kJW.\9{&== $j0) \ҋ.\Djw(TUCIWv!YԾ{FL5*ЌTd"ce ^JRxLV{\x5GhLbw-3G%;Рٮs8aem9BZ#LZdvRQEQ&.2ݜxJ??lT >5U6c= T72)K9%BI2.w-@i ygym^z%qeG 8B"]1^2AAI¥2]Be{㤶9M2 ;R3rdVЗFT~m^7yPw}Yϣ;1ɿ23ҙ!Go{HhzG;)ec v@׽O{S| HaTǡ@9pNM O>Ώ(ɶ=u kGehVw>p#>|ݶ~ Yҹ(}},B*鼍 :`cc!4T&x(V{B; nX q*df5 îJ{J _U!4A3/w%wDapǼ8 CeÑPo/XDjop^zRg% YBUAJȥzS@hh{@޵*0A‡Fq9T'N%UJ^s/ד:cΏx#vӥs/'6gFIpыێbu0UrKt&v}OXSt?yc+kO0BGoݶ֕?eql1DɁ0X kׯ^z$-B(?BB@g2vHTo∉vh݂Z~/twP,)eE^WKo(8 r!&a(>_ڒťoC̏{=09\ /("]E{BZJCRmK{7utK s+7w.8)V9UMmu]@ ܭN=%\`NRvC+qMYγ2?ԶX|n5ܻ\U7bmbq).SA!KfPb(֕7Һڟy]-_1UwqKyؘĕt4_.sn5'p¾jWPص?8J]q]]lN3b^1`{q,]( a2z?,Au٥\럄``^W~5@,6uA\< -JχbmjHmr+8 GaWgX|fR~KCXD_M}DbY\r˗07AnF'hS(p}S 8 6h9HKsA α,`SMXJ7%WR} Q^d_ZQ6W3ACη6=E cv#Y߼8#\2> 4W]S?WX&Ǥmcv3 z%֖r쥣V `cx4 N:5*X(tϡ ̥0B tw@`0M jmPq`xnoo ސ\LO"n> k\V-q`ZuggXU?"l)Jf<(;=\Z`u ݻ}ӈ^-I~0Zke2l 4R$׺w*S2V/cl4ϻwfL6ob=цRڂt-.Jk}"~#RaB6>w3$2nW$InR8չ.>%05__tp%8ל3fS=.$҄f<$<)4e{iL, ZX[LF|jZň1^ٹsן/e~,6n=dRlHm%; T<Xp2sNYp0&1A\Ӕ~Zml%St[׬^%cb6]}dGA.#/Ob ҅z)3_rfZAQ1&Y)u; pũ)i3f GoL[hEPs׎x{z1Gf |Z~| <1H`nK(C+krp xFLL][QPA2Vspv+u}(, Q̨y{2| jV\/ (_?&0D_+Sl8T'2=B{=ܩh.6y?G'х<|>IŶ8Ae+ttǔH9RmRFePG17S͇*5uv)2}΀5҇*!@(Wc7E?Dc2T/ V.\=y17\ÊǣǬl׷po, (ӭg^={ad;Z)@{qފA215fR6՞ bvݭ,& {6~~^&T:]d ٨^ >C~@`g͆~wk!S˗.\Au0@KShr jmq@T\-Yq%KZ?>p`Kvu]zr`A95/瓩~M UYc~Dr>'ހI /78Q- P:(g}X1UC%I2xVwȢR_4yߧ⿕aj-mJ*))!/Yd\Z+dE N8}˺X`2yYZުԄ+Q*DkaoXYBhyMJ 6/0Q"&z2XE$I{D  z6XEo0 R`*>fWŊtHZ:6U]at4*fUD%gBg6r)y8"O ,LGJ@~(qV]"c:SU%Vl .sA[йΑidea/"8x Z ZUac3Lg#7}$X!8m*'7n=7D$itYB)O_j&(;Xծ#o\ƽ,JpMB⨫.Foikɿ%H"UuUU52g C )|%l8 ]~Φ6W Eb8?U%x\FԛO.Y{𧑭t]ǴU] / xgGY:d>{˂8:⪪\^_pF804Yd`渃R͓HZ]R_myK߃j=Bihnn8 DOd @ @.dj>Q5p@ N^pUP! -'Dy$OA`I=R%{I@ (i0@DŽ_+xjeFDEZUH-Wga%4_8d+]sxqiũ2R6EBOJ}9umi-[oo߿a@2s=iճmL[,P9fb[,nj\BfHj^(mI%J0ɏ lѨ~VWqEWvޑ5sFheph+Za>Y&wݍ10~,ʐ΅ĵ@ (?0 RI vgyh ̭f7tyJ@@wu634FmS(-As[jtBm뀤BȐ- 0C*|N"̩±#ʳzkn5S\bbŜa(V/|!US)0-N]A7g_h 泏ܹ5cl0l|*"W}CyJ;ѽEi`oD*iRX*J99K *+|ϧ+B!a8QKD;H2ktɂ4f4 -NB\(]4^}K)n*F L;R ϲ p-H Η FЊF*0RcYꞲ,.20MXrtCyНG%@/hI%!O)C*V[|%9$H `хs$CkTD#5Yˡ5/h rWD]DuCI3b`Z&ɲZ#dخ5ֲ(+(sqIt#Q @a>{FJ Iʫo ulNN^L5>;L"49+O_ h),6epCRh2Ų%c@,fR`UUW T8ф>XOgL8Tp cK{FYx||jE`Q4HP8dajb*xa(lᷧy <ʦiKr jrpKk1Hڇb1UP,#n3,8B)2s15Ϯ哊!-ëJIu#XN}شYydBù7"mtPCb;k5%ғĬLN&]BG¿9D1QM@<\Peg u쀙hRpOy5N684jʰ -c/t-#<<qĕ9[| fVuD` BGKhȊ'X\1TB8ϧMs4%y %a' !T4/6AP 䔺j4GK U^4hxzi@[f%[IlF*C\xhj/I %ҋA6`0X3ii1'X=QI)BEmTo#q'x!q š\)!C3(3bhVs1 5OuM$SbQqi.GY".43&@ m,h)iX.Ɛ Wk[8,y% c! ҆ .@k* ё u腥|*V =$[^EB>Z_ԑW4]$=Avpؓ!_(aqN5!q0yov1EиZ:]V$$j ۼeV735%$ ۼeV7%0ڀR3TV꣥ը 4g4V.g\PvWc[ oӥp!1؍%n6eI23 Fy^A%u=w_s_Zf<0dS)FE5(I_lp/ 1?dO?!?0 ||\PL|ү71~UCb- @ppt7 \G~0lN&:?T ?}{n#\O֥桙_~S.A,oGx{ ;VH&-J uGcTcA2QW H \@E{:3Wȇ^L7sOħ}JY?=՚r|tyG3![V>cdH\9z5l2MD: 2U_T[  Qg`;O5}}av}`q߇3??yW|! ݻO_gPk0LUii?UbIg'+1O ',Y97-$pB2K-{SYS \>"3`_j֒&]0G9[cqcN }÷bhuwײmf`lu%nh5(JtxX|jԎ]lbS6uÒ}&XA旎b6<> "CњվaZIbLf<{>UAʝjS0R T( &^ɷ;y˃HnE:W3 ? 'gz^,}3= L`f $Uq9(7  %$8y>l-HPIF9jwoٖ%rMjTi8)E mY%Cst2%옡5\ٞ$O0m&_` d o`)nTpF/?/5/bm),&Y0-잫J{2)i+"fU ^W¨ : CN%:8 6.B}5{ `MDs U"6ʏ'/n c2[ 5di䰫KrJ!a=~9O3Tt aJ4._`bZ",9Wx>ٙ$]xQF~gC5a0pa+ո a0mB3 O ;wq`,*vCo {ĽYF8cr%9eF{kį[b .Je=ZUBu=NP=\+P0vRd"fԥi0DfZ蝇E2VV`*rt͕>6e>NF'+PfT%)rӸgKL%VaTDmL-Քeї[l[&~+ÿ_ݱ Fy排Bٗ<6l GC$ *[g&l[b5F'Mߵ9A -FAq%-+\/Vk=+}!V2;9H躘%3(0 Ѝ->=[`K:j^ɁQTCʈ m 9c}ާ[FSl33 ؘBN>b_‘YRSqˊXKEcןh@k?;1Ms9Ê;vVA_@ݒ]ptfi%d+NҌ` nu>b=~zME.``XOMYvg,Q 8R ]iȼB#־tM].jZgs=r~tE0b<7 ij¿Ola5,Le{[@S͟ qQ^)~ 3ùa. I;~ᡠ~d M}b9b,ХF * x+YQl ;0A:6e,*ݥJ*ڄgqPwڲ!q+_kT b=qM95쩃3GoOlp|"ntxM| C'y6'?!ᆖsSOr|XbL?m`{?oT'0?ш #N~,cB"5fxB8X c6DDS)}_ܗ*Z ^]s2yc-?ebVX%D7^131*RQKZAnbUJԩ' 4q{xN(/H"a[I^iXfWLD"f-K%i{ya$&Q͎}쾲Q$-caLҽDz2%{oa({H2/9>JDĩbzY*oߗ+T7)3s>ʔYWGJ/م.UKGxq*?}YZLr/3.9 p=pje m? 4t2N TLSP=r 7 1Sl{bgPK k4/|2)uNjV3邜 C3r[m֠P.6 h{DzesHtj]boĿ!`hcFƧTOd0{*RH ]☑c2tcm^xɟ־~jUNyUUl&I{L}BY5`pa TmGc gvy&.&M{X&W! g 39^z.O]12&/q}ffe sr-F6WTAQB*"~zh6BaC$Gxj|1-ey5z;fC25*UZzqTN{ue3\j⏈g!(*_]_O}Y G9_sXkg'ϧHK# Qqr|B=❲.t5 mߜ26}F K CvPhV@<]cYHc;,{:g_ޚzK:Q*QR |8}}+ ^jqQëm]_ߵX~~ QtzڢRS6V>0Qi :[ݙo'Oc .Op>cz|ܜ2 G'^ Qr| FXX~-Mױ > cO}PDm 4 1WjS_Qg yP"P wv   s I$HHI$I$I$I7  I$u `?@ I @ UIY!$nn6bY:@ $@0};f: j/l4SHI $ ?z }u`>YW@  H@ ,/UK> Z5`r*@ ܔ|i]Px,;vو® @$  42\WdXRhPH $IHH$H,u:Oqs?ޡ@ @ $I .hxxlvA @Z]qT~|W:?H$@$@ H5! |jv+[<H$A$I H H` (,u@  H@ Px@C@HH$ rN"@KY$@$ A @ '0  $ HW5(H$$I$H@H$I$@hH$ 84|oG J +Li @?;$ @ :Z $I  ^8I @ @   IC$ @ @oh`?+:71ԍY ZywT-[I:̎Dȝ~,OVd957gHE|-@W-%^Yn} QGQz4*=&2WQp`c`Pܫ+Pr%]^raXW"DK2:xNQr1ɩ KJOKï'FKBg5Fʀ SU[%(\(gE6ן4i˃?w v (VdGVh-VRcR#x(DP# C PIhO|h zצP%)<)#ƌ2:+,!)֠\'q:X/z$eG$bH(1dYeN^|<-j fhz?#tՖX M#GjN 'ZJeYeYe=7TBtPH~=!E*<ؔEn @+Hp^>F_H~FQFSϯ" ;ie%( |cQ@ G'"gsہ9^ϯcXΞzoW[sLw>LKO 8 4(8&T3/a~fUثoo5x:e;v`WG){V#/h~G&@\7~f:>c~iS8߶rt[ոYkkx=bWi[$3S1?S/1<_icd>9}Y4ݗeo ee0fm5Vl&8X # ȶ,̔#eRnBb&5LZAJ2"V#XT@4xt9C\VԸB%d'".ڵs!̩ՁhVaV ۾Lu3CJW3j nEՑrar UH!>ok$@e"A,R@tK3tLC<,/}qn{M>,ouiґ sUp\5ϙO?1$ϼ (`vVkk*0.*J;\ |l_W>KUbd/TpsLFN t6*|Vuc;\i[2NdÕvp )-߮ߩAAx讅-)}%fp䂾ǹ}{+ D 1[A꫒}*$ك~ cX_-5;`6y mL-5@Oir3R(D4a3,MV mڢ*n%@RQHF) 7a3 `SAN _YHGmU"`v>7O>_oJ=}_) $#>%)TA}lE|32MiBz>z>z>x IZWvjQ=X0F P 6VW#IQ::XbXjvg<ސwL_kI6`ش OOb SEǓz h=u%OYgS؛~D`oDxQ'HKIٱ׌.<0B[VP\ۉ7[. DKV!Uק[{y TFZ;]xeЊYFq.ȜNoVeZ!3@5(feJ6 @XJ׋9r/mJ2V;a,YIˆqqOtX*ҝl@ ^hЉ qgv,AMy JT-s P NՍįEQo˝<9@[a]jhsxZqѠlE#B /Wɢ;$ܦ vGқ=:E Zxiݜ~/ `*^f9iJ"h܏\fڋU<,mw6e^({NIK_˽jdE6lPH1FߺtzLt}}ۂ%a K4=٨PP# p@ӄ`34*1bŋ>(\?,_f^bGN 0La̍s(].nu.X)d#*h w@Bx#B!T3(U6A@ L` Ѐ:`z9 z\ L(K 0ŗV[ n# 2)X;:$o m޵I~<:&utj0([1[=3tKNbm0A ch:!Dz͚G4mt9/1 JR_1"{lc>íaBpsgUR4^踥UgD@ @ dvYb!XM7cMVƂַtf.1.[_, _96…Wt2nd0.Z%-#(&[˃vR,`PEPutե ͔[*Ҏ;L'&wpW\ -M%_ t`p1zJ4.]ѲЊL-aZd"mOiQʕQȑ^wkaa.%UjKd6'#ċ"Oi:I#/I-Q&Әjp Ũ)dzM i_k D=<>ʿ1:qhMʅaջFGYОŸ<_4~ISۥ-! ,1O4 _qnAbQT h8R:F m J4@+ܕ*TvFo !Oe^HEv,bkiQԔ])J⫨\gcw?=Yrk`08ME 1U]a85ڐw@JF{ofbW>"[7E6_]Ps7PcG lN0!LPWٛaJ !󈝙:k5jjRJuV(\Zo+)-PkTR^Q% a;]-(E؆rզkXxg._Aqb޶! 4vp-=.$ TL[fs۴sXE`&<3y7غlK/v:h=5OEiuFHCVδ2dIDRjieSyX;@9-#U9m xkDම{EV uD6]Eu& /9)r! W/ R--±^媔W6bE.IX@)&dY,[3, %@"8+KnZ2XQ]WX 3kiu% b^TA`( [~+o+y-aX[~JBT{M9JP( 318"/ɛOA#8ai@`.fr$UDj`b'Qdr(˔뚱fm!;(E.adkoqȡfu>q`Qnc^y*6<lzuJ%#;FĕV!Bl F˳!| 5>]2hLoAQ[#JrppV8RabYiK#EIJg)-*>Mf-KC|uQPګPkJx ȵ 8:棓;l869ͱ]KT|D+֡aAO xPXrbdz[7p.-r.E4}G2b:KoHvU%}nG}OvR5O1[ꃌT Zk«6QTIh6=dc 2#>OsAGةBZݙitdeX _]8Bݩ≇UHhأ>XY[O|Iq7T@jl҂v +,L1PHW Lb)YYwzN;|_T?mL: ŵ9=3K@ B']+2Qx@wJ5}kCxWXVMg 01Jx^Fvpj!QR0 6QlHq W"&e]J  ,K+MJ鸐JxKk**Y!Un@R.C^Gw10ot6E_FƱ_*B (.! `4kMuXpO䃰zصp,PB+UaI٫=},}r·,}r·,}r·xj20t{!cܡOc~Ǵ= ·XxmQ Zp!0؊ TRJր F ٦țk&>");AqNk]viHVnQG.ΞQ9zAGDEUJ1ϵ$`.rſMPYx7p7sn94)H%en3F LV2׌Hf(T_ ;i%ԴVILB .G!5hPaUJ UR5B>o&IAX.Ɏh}5G$bdW=w(hqqH1o@6; )jS4f-icFiP)mKQ !Bdռ@ReE@䉎APYL8Q(MZ0b'ыX"qGu| ((6ҨEĘ4'8Y@j7x b\9bњR[TbGBƎ[&] F@f `R(-ح1-f"WU\4y-Dغh| gU[ N]e^Lrb@C`]8u3RReVv t`!m2h2]fV܃xRIf FC^Z(HD>ϴ=#HbuZGp} MeZv`,* q%Wq)8<_4~Hj Ы~| y}"fcWٔ:_ԣJ:_ԣJ:_ԣD~+){R$j6+(`S7,Ҋ#M5*/еÇgvm*k7s@u&7jt:^MIV :d1: S 5FOLv/B |Shɪ.-[ ya8'./ npm9u;jS]tK2UAe 5a* ]Є0]`hn3*mˮ|mӤKoi^XBL l[cU Z=RTXNE8j<6NỜWN#utJR$ %lB&"47+(K?RH+:(ɥ` 7Wk㳚Mc\#㜞s{4o Ѝ2i{{*¢X!i?- W,Jr 4U)^SZ%Qp ,rgc&pٱ]^~4Znec>s fmcT<0)Hd<?s LtL"8Ɯ$-U^LbGEf m2([B(rC N#hC*)FJB+pY1ԏzXK'~kvr| 2s[3>9Mma!`Ѻ(vZU"Ү~Ǵ"*͠`zB5u?~_OVP$Π$x H@yeB i8hâ`U. ά` »8ew/{N;|_˦"rcy"VWL3soR]B<m-ex  t Zw Q`W$iM[eIaC@53܅4]AI5uh-R`Fjkhjؗ  h9UI>wQQ.Eٳsr{wj`.[xJʭ^b*GGXl%ڭhU'idb'gA#$~" :&5n4G wN-ۏIwԱ0Y< ^JVPM`.IBNx&@- *retUulzTkhRkX;n1ZeS5Hك_Zћ Á$tVT [a" U.)kx5ؓ m-ܢ) "b`"҇'""CYDDZ`cK.6cq8U  `uP2z h|3m21}9LyǴI;2wfltiB_Vx|v~Ǵ!G2nGE!pQOt/5Jߐ^!uP]`V_2`Ύ] ,,;@PArE^Vѷ*Zx_:`JGcRB[Ű0$d+0#QV;,^X>܏e?Xp~Mz/L+qVmM9[ xyJ TH3 .0bW hu.^^4+ib 4H\bB./9k% e8&RkiF@uqgN#-!0졣$O&>lj2tZoR{UY]`UUq UouE+xꫠګՠ/H`H@M%[V'V3]wRw^ZAtI=.;M fӀ&DPGW!!U.utP8,iNūSq slRna}eE)(i l%9]-R j2) Da,{OY8" DB=aY5G@ n=!6Ǣr,wd$(W5%ⴌ1-\SИ=>Rɼ"O;VzNXb [K,6DGO:_ܳ:_ܳ:_^^+q>\i篺m#a#3N+ϑvȱZ:y8~֦G|PA`#': QB߆}5IBmք(L f"R#Kȃ`>b +=ZA6P}&+CAr_=Tf[*sT`ʫf߀@hMUCFM+&8! ؄1 .NḮRzҾUVVntѮR<_"FECX/9XRQ-UdEܛs~knDV¤ yFYɎ:X~Ǵ%K+mFEI}KlEl *TRHk@^zw_TP7fYEb]/Bᄚ&.ڢ1pޗVOm Zt~??ȣǿ"0EH7|/߰P#3~)&7nP*zjP@avU<eŪXJieQx8Ҳ+M"ax̕*I y%Z!CzG5ΎA8Տf IӪY$XKѺ"i,"E Ǻ(.M ƕ`# [DdN)MD7ͺVQvX-mۓ$C7f]+A ҫ\tF 6s m{G.nnV639aДec4y{ 8 )YzjTk^ۣthF\6l1 {|U0Cp3bpxcs4v#0 J*T uAU}eVx^R잽}bp| TSdV+l ҝcPaK' !Aﱬ(H(NUa^r+w\Bz9 *X eN0HweW0Er:4uN])65iZ!E/m: 9Z.>r2^7RANE%X,K-s*Q1xn)h%-EUGNX\BX\ "w#֍ȁ CܷOF[K{z;->O.Uc)91|% Ch8<_)WCPSHE@]_@TTDsn, ^-mMx%+`_?io@>RɷbS3i( z"?(?eJ>~)hNb{cM  $ IhruMfim|.]vXb!@.Qaɷ%Q!eq*"_%kԾSǿXC kZ%LHݫoyQ]UKndSYĮշlPNM6R8 ׯW .-a@P 8H8AXQEr-zu|0;9` )Hw!r)%x\׽6!ڂ&ye" e~:"O+V4ξ#*bj<<΂l Y ,(qmk.sA^PPDhP.MeFA3VSJ&@4=9(d*atqoz0BgP3F[ 9Pܫ!]P@RW>l'ȍ05f𘓔 x,% H 'ShV ב!$qǍJJ(NӖ,(T9P0xWS~= F>7xrqr--gEK%aQKۈL@fPcce,ԨkGk_X^c FL-OTZ'K΋X*.J.(J# )QuƜ;5 q68 iV.!⤹t?._n%@,o Fg~ZlYSB%3 Wg#)[ Q)ֺK̼PQy1 aVe"'T25Q2JڂD1ezFYm]JoIM+Za_0Uе|`Q:E f</Fl zzG8UWUvPJ"39#u ә&Qa=J_]*^gX]%9\ [ j¡c!ke#Ȝ?޲W ky_M@+֜y/Ƈ[1dԹ/FްR3PFaRR Dhs d.[:9k8hxNC6 Q4J?4v=!1,H)r it$$3,`T*FZQeK$AKbu;Bz0>|?pVjJsFiQ"!]7'%By@[32 8uXC2/˻< H` /.h '"EJWn0 =K+Ny t9c*]W"5 ]JX,fw D} `PCXض~L?X5^9zŶ+y/{oCBӒYgܡh' ٨f1eIUH❴Y-yBP 0(P2X-i *X񇅒Z\S/ zM"GP*k^2 )GoP)pI~֥k)K*b wS ?:.*qE?ΊxWqYqn[Y$e\ڂWdLPΒ F$Ȭ|LH5F9QQ YzF:7X5+QR!Y%EjܜM[1l 5G\G$uߪ<%֟1'A"n׷2GGUd!Ffviwe#$$4ӈ΍ CoJZLn]c;$4V/ PAǮ]5I%!bx?X`YFKQd3 &5e^9ffviwe#$$4ӈ΍ CoJ A PwO}ѵlSlN1#E*"Q_8z7hMѡ9B #a:n1Cl=o-vX/xAyek$*;l?+ Lh`zwAkCzaK`X.[be c(6'ŌMvVMV=jdg 7OޔݼԃXLue/y!N/Qbr|TƵێ)ϟx+zGyJKz(;RlI{3bWߧ?*/^ST{c VWudeV+nF`sNLOwc<_+c:^~2|V_K.doGP6DrS׎LyXgZ-#͡Ta78twG_K#BQ2D)~(X*Di93H-}7\@k~)᭎r7k5l KWMCaU^Xź/1zo^U5@ze `؎GQ4m?hWـڇ'8YbqvlY/@∠`AG*;^cS(5?ХPcoaJue^j:)ֺ`,w 8hXa/ +a辷sro+C:pkȕY9-e;(Z ~m{3f.lfwp,TdjJ2(<3u~y^1q=0[řQ&1$PZ/0UwFU*W 5*rx|uuk^.uT%pϱE8>8 r]Fحx52 "t=)U\}c BߖB;`/IN (ol̜2{4=CFFWH/PL8! b8U{@m+o t#X (VVQv<`*`%rs_x֯ Q;3/V>Kz]}?HEIϏPŝ }Y(7vÖ~ D| "2! ѯ DYlKԿNDqEx)J|rtzY_hiHo؀WWg\8}f\E <ň.%re>)ܹýpʘZYZ ʢ: 1(5(J: ~1cد`u1S9˧&o[ |"7X \2F FT&z:C*j,nE| mȆ% \,2(W@_Xo)Az3LUϩ 8Խ_C&LI=:m:xt{gn1//MiOhgɖ"\F$q1 ((% i,V6n|xűֳ(Dʜ%,DvG<%&6KX׺eZ!3g.ח g#-[|{EoLRFj8UhU底Gh3ɀ)s8AB@9|cKK+~:K/Q^A_x|[[9kh`z:yL}exb^j3[u>,0_Y8pbFZ?ThhmtI"l@]5}eoL;K&EF5dԸ:z­cX zB;iQ5@&>Px ܵCG$G3mk̪(@l+Ce Pj؁&ĭ,4-nmtAb;=th|*Kb^]:TL j֞-*#gAym 8'1;DžZ?9a [˜YÀY A4e e [xJa1jX=ì`6Y˧x eT SkQUӆSL3_̨oHzM!G|-j@/e+1frJW ^vܚA!]X+0<1FkDQ-[Vmj+'~'".ŧx 8wP_yM" E cky|*4־ + iMwj^ׄ^ۖkj!LzG¬Z^nN Ӻ2^)PYWccgϤ5&_Z9m՝Pz4k )Hʶ1i3j[N8^ Ed0\";g,3YKߤ$}EM*j֥=cabKY|׎ ˍ`UmwSaQRg"i/]Hm`Bu>MXa τPDi<·}(n:7(,+:\Ӆ+}(<9{Wߔ2uq`Un/K&zCCɨ{>&^gO^R^Q&#|FanfFSa@]P5Wˤ>_]gIC^$R~vxX:1'l3 W}|U8iHWe,⨼M WytsZuBqDzj)H440bVw㬢w[auCW=4uFMrFe\d5}CPҟ\K>M1UYܮ#^d.7jRzq BM7(mD;(Nj=eAmPXe]3hE4Ȣ,:A>B~<$TY-tE-V~qAF]b߇hBi7an[`l͛-»ٜݼ0) ȕ\+`Ťˆ[n3Kĕ(>jد ̓`2!ru=y!^"Uq&rmS5{ J$6VWs4J#yё(hDY]SHOCW7C~+@2.#5@iQR sr\-X8lu!>6M`oy,W5b@ . d,A*F:#acs,:RDMK(E*ynTG^?>rl7 ǕWp@iVf=ffB*щwÌxLa*zoPSh`;qA6,JGq]jdcEmJQYjTZ3*7F[宾vjC ^c x~φnV6_ a+,X2i൞=c`ǯh-ihx4B/+ 7ZhPx"YqԮ e@r%+{0(5ǝ}DŽ V`ֻq}¸-EPٹb5Uث־~|/΢<\(NYjh0#T*+@*C̭y|T֮ˏ , ڥɎ 0&[}푱.-X e-43Pd]Eܧ.A5ysGUECT y ga-hށQ@ T,LM*௤a RQw(.šMnܠo$W "D.Veyp"jڠM'r]T2Vh-m|aR3 ;׋z)5TpF嚃^ٛ)0p=`ʎ9 );%;|PVʾA[_>Q iF![*SPV  x (ȔYSjPZ,fƶjWCP&gkff-UBjWW%W;F!ʵ #YȻXe7GQ8!:D\2z@ٻR_xYC(=%Di`,G0 !Sbg!zM,z6R) G$v{z3Cك.\ TnwwRĩ|Zss5S*Ȩ\w av1zDXDk|T1N^mb3F2ĚFP2T"c$G\y\Ma=n KUCNGoVw= t aFM@S 7!ٵ5@,-όoHdPg< aBwזqq%,0.q/D..k۞`㨎 e1E_#r,m&k*RAKX*"|$\KpͪhS:YbLB #V\GCq]?0ܷp91m"-ef8/F.m98sKy6i. crCZb.%q6CjŝsBLhtKi/l!Mi]T7J WЅt{LVaɏcQp)0J)|}J|u sLgsfy`4bb=ry" M.#&Xx\Ub]j%ᘜL" S 2<ʨPZMbTQ+faPa[յk o/^4 W&zH ֣-q6nbn'YJTWn:Z53̲zУ]baEE / SXhyƠPh>:AXB =\'Tn' 4;K@S3X\eReFEL GE–'1'sSj]ϣTϱtTّe ڟAt[jр|2@gdG bˑgRҥ!4':4Mі(-6I2tzɞ_X@] TH&A<]BvgY㦹n׌j& ED) m7U*,ສ} 64/!xYtu2 V%[2T[іjv-#:a(3G dr'Xlhs/HȺXm,hFU'L"(†7<c-$́eQkݑ2} ¯SrxHWo^n`tzloي=q3Wc7up;us ‹A΍ˈh;wV>%pdh1  PgЈq2t^-+urjfTm2f"r=) 7,Ӭxpvh$S UNfc3N׊)V=] |'߮74w[-gZDM1pǹK7>Wl n'k,\T--B##9* Ik Х4> endobj 10 0 obj << /D [7 0 R /XYZ 81 733.028 null] >> endobj 14 0 obj << /D [7 0 R /XYZ 81 395.218 null] >> endobj 6 0 obj << /Font << /F18 13 0 R >> /XObject << /Im1 5 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 18 0 obj << /Length 148 /Filter /FlateDecode >> stream xm1 D|ˤH [ QCT\B+7cfb D8:U#D࿒j&K.paGm&I/%Cumݭ(c?0XӫBK7B7endstream endobj 17 0 obj << /Type /Page /Contents 18 0 R /Resources 16 0 R /MediaBox [0 0 595.276 841.89] /Parent 15 0 R >> endobj 19 0 obj << /D [17 0 R /XYZ 81 757.935 null] >> endobj 23 0 obj << /D [17 0 R /XYZ 81 597.536 null] >> endobj 16 0 obj << /Font << /F19 22 0 R /F15 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 29 0 obj << /Length 2070 /Filter /FlateDecode >> stream xڍXKsWj!g]c=l@ EjHʲק_)S@ zy*z?s[}iY M,,Cϛ/G]>ӹ( hwb],8r/8Dž1<>-^h'FRwg ep]'Q>]i^ t!=`.mXru?֐8Wf>> ԲNJ'aTYㆡSzAZ0(8 1aYo LC z*R* R^i3@E][&qb0vM\ L7 iZ sϿJ5:Ywx--q(${~'ܧCkjw"8KUlk9ԯEK Mݱ,0i,Aj[J{>W6`@4V `*rN"v?.l,FJtrWxfy&ʋ3 +_֞pd^r=M$p~I.-O߁r~JCdY(/NB9vc_VB_COE*˰~;\.N2n+K6\M0bf=SZw^rw/Oa^3c';b,?0qK&0뷡#kB4#|m4(fϸ( (t{^Zeç Q~'949 wއ*]7ʄeSdѦ[!|aV<*WGJxFq!@w2&/Etey#5v3q*t9bW;tX+Bܑ5ʅi_I_Cӱp9e7M'Y36jU/5AȂ\ߧC}I},}p#@5;xJ?^"7>l`7XP)2Jnp6޶\Dw*r0V܈/ ~]5Y3Y?鋑XtOICۦVy1q 4U`9 2 T? @ӴSʴV0ub%Zh6T{3e=4;E;& D8-LNl)Ⰴ> endobj 30 0 obj << /D [28 0 R /XYZ 81 757.935 null] >> endobj 31 0 obj << /D [28 0 R /XYZ 81 733.028 null] >> endobj 35 0 obj << /D [28 0 R /XYZ 81 498.493 null] >> endobj 42 0 obj << /D [28 0 R /XYZ 81 252.309 null] >> endobj 27 0 obj << /Font << /F19 22 0 R /F15 26 0 R /F22 34 0 R /F25 38 0 R /F26 41 0 R >> /ProcSet [ /PDF /Text ] >> endobj 45 0 obj << /Length 2272 /Filter /FlateDecode >> stream xڥYYoF~C-`n܅Ӑ'$4Uo=͟ F>zl=N#&x٧IXR=Lm2@Ee|=,&:pISD?~#,D##!6W)^u#۩\H#d `"q6[Je ;l.$p]r\NV7_Ƴ{qu vEݩSlM Vě@S>cN^X/Fwf ׫P 0Q]i61aG܅jJ(c}rlIOȩ\8g؉# ƴ&*͘ i\`X"_X}jh2^g,tJ*T8O癑gLdzy{ѪxXh]ۖBIA">OU4w8eȞ}g݁4 ʀzWc<]ERQ"*Z-C7x>+B'3j\"!=:1`Chօ5F)*~L_vόqҭU;K;f UǦ`>]Ɖzp8sI%,܄cv<0FEFVqwI~l+q19Aߋd}"| 0w!3j<%=d7 H@_)ڇ'_ӢIoh6}wˀEcwD (Ak7sIF\˃$ c>GQ99*6|m\XBml 겷w,}[\:=U/UP9Gkވk;DX 1 `_U\GZaعeoYUCxpOT!vOOz ɢ]n/gH:5<40a9?(CJ:?}ν%[c|k|- ˈ@J'v/ƯB!Ti/D3fëdX"ELبo٫պb\ ؇/>rYo|;c `OivDS1#>2.)wjh㺧${l6VmɜF+kPz儀Fuhe0N9ҽ1>^;wk|+Jo&3|A$S՛ٽӭ wrV:DZpH Bh#~Appz~1露Uf38B t'$ ::v[*Zpoc> endobj 46 0 obj << /D [44 0 R /XYZ 81 757.935 null] >> endobj 50 0 obj << /D [44 0 R /XYZ 81 635.364 null] >> endobj 43 0 obj << /Font << /F27 49 0 R /F15 26 0 R /F26 41 0 R /F22 34 0 R /F19 22 0 R >> /ProcSet [ /PDF /Text ] >> endobj 53 0 obj << /Length 2407 /Filter /FlateDecode >> stream xڥY[oF~PJֈ3k,؎SF*ܢ-$n)_2CQ(s=s;O9X:'` '`{d|E꧃{:HkI1EQ]^#Id:Lp<ᇡnLߏ/dy%СxGBm zU ?CDN p.8*n&9Ly5{a rġGu(࿬T*@x"oS'P%^:_pt3gp%xTQMJ!*^ Awiq,P_yi@#4M Jut`fz &'B`}ExVLN35c_$~Ҿ,gU%"ұCAh?ydjL_ZS5>|u$9.hѹ 2LwѬ{pxy͋KKء;*8ȈQv( QH 2N~Lo@IC!@y|sNjYZd~xLv:V1($G*A_Q=*!hTRݜgecˠ0u_''GS. ļ(/[dA ",W@pFbF b_Phu҅ Б1VUh ]5E{SXVeܳsO=@)MûhNp"x7mV Mz[VslfoK"D6/=jˌ*H,̳q#>YCR0s|Nߌ?s*zէYuN0#.tSpfPɆQة@P)!y#+6&IL)]n=gNVlja)oc `B/v:\ \%쬠+np^a}e=#Q0]@/Eix,=بZjim%xk y*E^"=U9T"[>MU*vzPS}YRI(lX"$D1BynximvvzT O2S/wG%YǬ#3,X:)%X,aiǩc3 =e0׉|[ _.H=e"/Ou.gu4?f]71]:|rJٕAM5]+TMdlȦizz67!-f8dYtv5 : !"۲$d!Ȝ;cnkhӞ&B2Z$2o6m"%L|6S6.ژNû}` _(C\X"{KԪCF%TE6lI X a~[{+3u"`?AQ Qh!gX{1~*_K`>/70-Gt/rgS.e8.Ҝ'x >JcKCc^5fLمeV6 `)RمfO|S9ŝAd83zx|,R;]uw"@} 8~{qLïy5F)tB*lƉm ^a5As̎8tUk,,v? `BZBcw*{-#ϷHcZ%`\Vyqݢ qWV9pNh|Utҙ X$ \͌&ʲiKZAV wM[ : gw?D|PA ~S1!ፔ_Q} ]q%"IVG' acendstream endobj 52 0 obj << /Type /Page /Contents 53 0 R /Resources 51 0 R /MediaBox [0 0 595.276 841.89] /Parent 15 0 R >> endobj 54 0 obj << /D [52 0 R /XYZ 81 757.935 null] >> endobj 55 0 obj << /D [52 0 R /XYZ 81 733.028 null] >> endobj 56 0 obj << /D [52 0 R /XYZ 81 487.276 null] >> endobj 51 0 obj << /Font << /F27 49 0 R /F15 26 0 R /F19 22 0 R /F26 41 0 R /F22 34 0 R /F30 59 0 R >> /ProcSet [ /PDF /Text ] >> endobj 63 0 obj << /Length 2226 /Filter /FlateDecode >> stream xڍ]6~EގHmpRU]VWUj7xt" ͦeC6ܵZic3*?**4jw|}|d7Mqɴ^mf?gUtof􂜷ͶX=UD?i\oTHzi8/rI1|fN[2 /I T%}u0JҀ8sq}>aX]+iG^Ύ<#svLjV cX9qFY>`pL^v?ļ2a-eă( ߈7yc~R\tC(t$tbOT\;фd!nk&`@,P8s.ж" qA>c3ޢkGTX(8@m7rU`1w]Sѥ(+30X}3 .N A/\y! ^4FiU,aiyʞ,a…P]B0@XgoiANYE HZAoBZKWnb29IL&WQ̸NX_Y#̼YZqcL^WḢ+/-o]<0 `[Y[߷ DV%aA^X_P37yؙ[_s΃+^I%Op/ĉ 9O$xt_T9)[>se*C]?iLI 72d끪Dz2`YݠA$GYzpL'Rti( eL-d ("kГ͊?0GjVV+'kq]*#LJK#I4h:EX$s]K] 8~q9C Hs?iͶ.bFmY5uFBIG7!j.>.YN:<0 ⦷'gFn|_{/J"ދj~g"|/ZnGd8S,-~OyPC*bISa> 1hE!'t2~Ca& V >;6umJ!Y L` yZKW|7#Cʼn =W9EGP U*Br&uc_N)W qHA~ef0jvQQ*#hOGwsᤌkWL" bPP )i$?1ݯe|Sx;LJ".Uio_8V)8hq*Hendstream endobj 62 0 obj << /Type /Page /Contents 63 0 R /Resources 61 0 R /MediaBox [0 0 595.276 841.89] /Parent 15 0 R >> endobj 64 0 obj << /D [62 0 R /XYZ 81 757.935 null] >> endobj 65 0 obj << /D [62 0 R /XYZ 81 733.028 null] >> endobj 66 0 obj << /D [62 0 R /XYZ 81 499.204 null] >> endobj 73 0 obj << /D [62 0 R /XYZ 81 186.702 null] >> endobj 61 0 obj << /Font << /F19 22 0 R /F15 26 0 R /F22 34 0 R /F35 69 0 R /F30 59 0 R /F28 72 0 R >> /ProcSet [ /PDF /Text ] >> endobj 80 0 obj << /Length 1841 /Filter /FlateDecode >> stream xڕXYoF~[( p/y ڴIՇ-PαK6m 0`-gfgfvH%'\FDm_$.._.UY$Q$E_m_vRk+Xi}XXʌo2PY//{zՇgobX0 Pj*?e@[6ϴRGK"Sf,rW c ~DiZ(\E~~ElG.аTZXf=Q:yjU`kLm=B S`05眏~ϼv$kE hd}sC2KiDeJ+2i]zr-ɛ/\J#e|SWhnEKZ7?~W p`w 6eP3i802ބCP7ɄCD,v΀47^)k=r^Ey|!1(䶮-&֛HS0Z(Q4Z3Ն:)DZd޲nʾv\E*jq 0 v䯉4RUZ{/^*M>~&Rt338^{ aڂ-ˆ3 Ad&C*w]O8_L9B_GR$vџ( ;:qe| Bup)t4`q1 OQ Ф\ }hOJj< =)s^~ W6)fr!m^OO{ 8Q#I嶦0"u .10=O!PDCO5YL]#fi &P`-|4ru\y Vs?E4yd) JӍX8P x_#}Ǯ EažH7'o|so>VV afa!fɧiui#Wv o=4b^`|ZI]f4g|Gcbx",L}ZQBwGn[ΰ$Rh+n݁V\訐HG\0q'& ©&Pa2$ϰ_}Pcph?U@oXGs@qMi@=B ^Sjwhb~\{7U7job\艴6miahKˣf0W/$+ᤇ&"5z+ƦN+ YJԴ" o@坥4L;S'oCF_x 429K9t`aŒ}FPaD?g򝪲wGA?ˎ\^x+m'ZΟG ;Y)z3X> endobj 60 0 obj << /Type /XObject /Subtype /Image /Width 500 /Height 317 /BitsPerComponent 8 /Length 25442 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFHH Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM 8BIM@@8BIM8BIM +pGP]0JFIFHHAdobed            Gp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?4R iVB)JwRkԟu̦a0I,<ޣnY&G0ywR3 vܻX~60v?g%c]>$T㏹ r8qm\ss|:LJ?/n %;P(gT\GHfˏQ(ׁ$:NX״gT[O 5A@-uO$Йҕ^uS4?"r>q} '&jK']ˏP2ڝ0.V+M8Ʉ1Р>I33peM>yܫ CMe%B8dɮ2e d5;vjhih4Hd;0;YC4P%> D57Yk488U8vư4I'iQ:M ѿ؄?p^Ϲ);vhVG@Sc$\NΉ3 n(icAc$'(&R%3CJ>ɦbKH\.'ONMU>>մk5ypޛ61ٷKobk}n0BUmsϠ4;lq lo3db;Z}W~wZT=?0k q@gzTr27<øSLw#be&1'7v<ѽuaip Ā<|ܯb5 Skc9Om4km*W>CDFk+H:jdiHL%2n:Y+a#p&L>Cl@k!&9|OsS,HA>~Gwe ifcec5iÂixnj7D u?cn.Ӱ=V"Ac/"Id8״zX8;&WۼXOacUѹ=:EN7# dLWK/iN{^2Twtճ*OWSH0NcW{6 ;[Gn$vXDc\dviχ`5Cr"8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              ="   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?I5OQr>9|qˮ|sTfOjآS㕛|sTfŠn.+66Nj )>9YSu>9|rb5O76R>9YE7S㚧+6|sTfOj sZW9pPIW Z‚<(||r'$c,rϪ{uy ^A@ܓFb{bݿ?!wq-ܦiMOeFnLl6F<"4NXIęDZIʛr>'V=V;a+qʞ(n*k\Yu8rvUH|N JzD⭗oN0c*&',Lo,',a r>'5[cU" OS6oRG2>j QFIC#x`w"(1qTTwN[HzToRX 04kY(M4(qT:rIŕN5S|*C~ JW4R7] }Wz`~ P#fͅ;6lںuͅiYSyiٳf͛Sybl6vlٱSf͆֝ch]H>r!͏^783R[+WH Cc\ ,jw'+26 %YXjr(1i9+[lX W-N7lu hlUs(Q*A;cٱ58Ui8r⭌uqoqG)3Lզ4e U`S\WW"Џq85=6QlO}IE*Z,ƴT3B)N [b1.*-+Q߶/tuiqTP&F=pmZ0U*5͎OwsSsZdAaUWqhJ$efliUˮ6ٳaSf͍;6l)lmi͍͕Zo6jŠv]rI(Jwf=֗uglŽY~?˅Zp[S9ܫ<#sVbI'W,"]eV{Lӱv; rq1L{@^,D4=t,Gaɓp8qǜ\Tbp;ަی@ԓV`XBp;4 N &rF#qOz"#RQl*MH1c8M?&l8|hpbl(q7QS)$Ҹc g1\Mq3[NZN71[9qbnqv IN0U=N*b6 2ۢQK5/7}9W/94c2i^W65IeIvlٰ)ٳf֝bnaefMʮ]qf͛ 6.& <xjAկ-|rҾ#wڝ )waБ<Ҽo58||rL=E@㫑9 $"d;KIɊYԧF'6N77zeA\>9Oa.-l^c FdFC`4$jw*y8nB#aoOǘCHqJ]yPҴ>#!Z™WyZ[+2k6lYhEóf͒4켬آ͕ ybo6V^+N͛66vl%$2JucWl6wr46U'T$9,w;{WS73ܮFPlu^D(r)lxe+, *ld, \}'Ae&) y':[xqVQ\i1m[P2P L?/V/5,yaB:b96?KrSۦ_̛tk=}iIˮV5O\q=q:'r4Vlَ9N61'Nje!JzTFfZT ic|81 x(GO?OC ?gK1j-Ğq?ۏƮ_ִ jJF)0Y#TU_Ƙ!<12"'b=\Gߨsϔ8<De+lcq('N^?gqG7mG342Ȋ@ӎ,M:*> 5$v}fku/vǮjLe qUEUT~_R-f_3bX9Yg Z#+ ܱ #eٷ͆{\6sefM/ZvlٱfI*BIX*/V9uy.=X#`4o|6Nu;KI=9ʊ+Rr x$p+$jI;=%4|Ӧ4t<8\BZle__5ij~mHBvшQj>QBaŨǩf 7fůj^l`TuƓїƒ*H|'0?kZGSݘ\8o{(sMM=@48?/ud^Q^fޅl+^c@1UTmo׏UƂluD늭~kfkf_Vl`;;")X쬐,[rLo6W\-7+6+M͊yH* ؜G Snhm.'%1EHz~}CR{~q$5cD@ݏ,~ű$ؒ+"fK >´;dd,wwE? _ls28"}5Je\bb{~/ħo7ѧCxߗf'OsF9 {bu06'3UEqi$$`*%2*u͛k6*֮BSynqE6Hl%1cvl܆W!.ʮl,o6UFnXڜզ\UlEv UKН:#HR%OXAV=@pvg \}p:n&JM3UؒI osS( jJ őr:b&%)PF,VZdLZJADC_!ZQ0\0)Rhrbl)*k{ɲ_P41&|L4SpUCՂ#9}ɨ C_xP8t)/Odc2,zg 21؄; E0Ko!CmY22 d 81 ֜i44IF\NcEi.)\>P=8ۮa} t!#vNY4<<NGb8~+Q1ۋ}GO̢Z@'q|2g~cb8p -3 Y=TG6 ?a鿿>/qɓyAJmі$~4ĤNT'T5_dO/?B?F 7EI\GVT27˾mlt} 舏ou~ToS&_)K=G _A6 ~%^lU0!#>ɥǫǗYO3c"oLrܚ 0ca~֭f.SSܲJ?#18 ?v$X~4-0|㊣  Q?ݿv^͊g1E!y{Į2?vۏQ1NB9$9D&P |3z|YwϬBo_eWaHj=7/]}f#_eU]Y?EJz־ 7S#|x6K1:ܝSDNX {qc?TNcg`bu?H /E-&OUc.dSb+OȔoFF? FKbpB|zcXuaS1q '|+)-|Ln- |TW U9nޜӁTT&1u ̣V@%Ȃa<9jXWUiGb(,ƀu87zwpœW݋KY_HUY)F7*[SsLτ ?KJ61޷J7uvqrA Lq8I4yAnEA7ȼ}Te'g1aE ZqnH.{lY.H~+SQM,?glkFĀu`(2UEx-xaN$Mޛ-J@T+Aڸz0c!)LjB;'jtKŽIqH+檙F0qj*qoF1p͗4dI:r3M_U]b6݅p#a w=ר|u8=TڔNJL{O~'݉"}7ZQzKdrzlh5,Ԟ OlP*ОJR ^~r-؂+ulk0E~<ۜu91@2|[;h+ 1M>X~d*((6n_zTsdЉ?%~+6j1lŭ(cAJ!(;fVyz11'eҝh$!Mme_zxdߚ) r\K@ňQ)T$ñ=O}#~LL/OE|W7#E Ҝ`W~ֻܿ=er]Ps'w?pCpj9XKʕpɲ1/6u's rr݉b_ :`v]qv-4C^,UZ$RЊI1&W22,uTSI選mS ooqS@)֘ R5늨&qb l҇ژ#ӌOگ iTn^|P6lOFG mX,v햱oS?ؓ~񂏰6K-iAe{NfS#t*T/ $"r%,ES6F|L{cXAjtKnGOƄ,}`F`Hoi3ew _шqT55qم{|GF(nWghFZuTb6|  *E k(ψLK03_RZQ%Z[WpLjc"WQ "4c:}1:NspqBH>Z:+kA lmMĊmk-7#eaH+J. . >@7e;76SK&s㜢pwx8rlǭ_]hi\BBy#t4[tqI pH)O$[OH"D?h{ ANS9q>7c_^Cj'1"tHSE0H{M~'ŤS.^ t#=DT؁̰\l.)M1ރ $j`GUTҠ`d4Flj/?u5;尋|^k7'.aY)޴ CUsQTЁQ(Q:+NnjmXRtkI,W=YHQa4}Y*/ɰl7H#f,IKKǭDɉ03^±'܏Ֆ$@hYۊdQ홨N=FKͣa]Qv-0+CA _t>=ktʫEA E#{J_On1qm6̍#w;erz.\N$R)ֳ MON?EđmU]n&olEۭ1cRMN5&JIa459nĆU٩Y ^gCPڑwqUI=I͹v.`һ6+$+bNKڥh1m i骨ݎ~Mx蛛6\TE-31)NS@9w5G{—i N9F<0P=M3F$Kωp(@v30FM/]-Jgvؤ\`ZlG`FXAL -@L'5XOl(q(֤S}ǧE_3w'1.tmFQMrej1ylcRAؖw(XcHXQGQ!Ԯ W~JB:_\9 }*V9_PtN&8d=u}2"/JU$$1A " Q rqGGO'!\'޵4 ɭ?}p}V'Arp#̇{ssׇ~H#R`v4HqY3rofs4zNOͳy$;rIBZF#) =-fMiQՃ c>aĩʊ7}(cmR~Fh%~={'΁VJ2@ L1.6 ഼ 7)I™5ɠqA\n̑*C $u‘I pSw0/^aKBrMw5q~qcJXs$ʼ{ B)pZ z3^/+y*;5+ώs 5kMo-ю0% n kqa~`7fyf#U_]Lgv8&9E 1!U\NSt&U#բX IDλt?"HEQ8c|h04ب]%{\rcKyGI1P uߡ+, e H$;dUWqjE:wƮ+q-AHzQnqec䒯#´!uh|3\M4zpH  4lgdd'ğl_rE'O}q @BBJfoTTcyk /'PR)eIpT|MJ#6XO`exƦv5ɂ6CTҌDPl MhHP~1(8삌,#]|MڂlZQJ鉁 df=e'n!o 1@:nϿEA6H^[.ӿI*܏63 ثZSV5 "pjN&,чjA\۶ ˷ɂ!O!3)k MX`hЅzZɂ/vDe*ܚYAE^wX9FCJ)\ wsmf=oGV>.57彇64sKHxeIctz0|H?LzV>7!^+IvLyŋ4aÛ&1u3$~>F>%QwxtO#C<~%Dh+\mmW {*bW4qٝ(<ПOј&O.Rdaُ[ghu⢥DR}&^816 #o!˞Aۖ2Uv,M&:Bԓ݊Z0)p+ң = jAVHҚDy$O{GĦG: ?> !MYrY?!B߳|1{oLJLМяO|֒ ӦJMO?hqYǻl2jb \r ez{kn5ƨ rU\%RscNl_Vf؁SlK- "'4 *,-:N@%ȩ0YĨ9&"9ˠx)]c81U)*;o&j)Q=*O`+bOra4X?ƭ>=%BMW8C8ːIy^pd'ڴH#Ve"RA4ᅕ^'J&[Cm& \R'o \BВԀc\*q p nMI8c5· 'c֘Spec޸'9 k܌ 0 I=J!h=Gu?S\a**Sp}D˽EYT}BqKr~6 E4 |VBHɆ`.'+y W+zw8ʔiZ%]Q0y~˗9i^"됴ZD +5 (5RDm Gޤ1g2}_)E*қtdžB:J*~lQ5S2J'CQ_w',=wt N]$"MڇdOa\FF}+S}DEQZ A4byӏ M돒%tJvVzr>n.GsrDeV&#@1G5R}Ͱ,z~)@=²5_zw7})1cm6zeW杨I[qj~'L@ Q*`@߯ȮT1]FTaSGvX'o1*w!I- tBQXaɘjG%ڒ\E TY9E%G Bܜ 2HܑN@Hǒ[[8л#Vg5wPJӧi8yw+S:}a˂9.XLH*ldfSӍ{8Ֆ1V {{iM i*ǵއESef3;SS*NĒ*qR$ӦPU~)ݎ8Ҹ0m]?Nl|5͖25'jbv-߽:<.Wdc΂;Pv'7MpAmvLP7߮&❽4^Ri^& `(~fGU j QN&Vky)BH}HF4kӭgrI u4~| {Y`e~$9BbB1fr8(55#qa+X[h,|\ӭWa^_̿kҮ́ǒgJ=E$L w; $oۮ=VY~*+ʸO lr~&S_,9{ӛwZM,&yY9#<ƘYqƔ_\ZxM]op nEs&<9M$CZ޴鋡2DJTvjccI G5\oBS&2 _Ԋ mabahj }|l'ZEw :vdj$m/8E44zqZ8AMMj[|Ns_{u-fbHN8@ޘ:Ǡ&J8^(-(BSZeVlݚBJj#p2GeZ:h"I Yabxʶ #^UOk 03Qșn'`b5:]~0Mcaѐ8 zqƼʞ&ܜpBDJ>,-XD,9' B'?u4^ϮD\I 1z?mqAjkOnaU`7iV0"QZM63A\q$Ol &@31hYDN,r BRG1XՉF$LI4AᏞy`@D܏|NA+\-AAL'.1'(8:7GHB޳Hj>IMF#`1791+;Hړ,Y!NpcA`lL Y0sƕm˰?,|Jm$a\6/ۑN,rHBD3 JCDXjݝ椓C2Y&Jv(iKFZiP:b«1߈72\Q#XW&OJbp U@X]w rxl~ƒ_kޫv+lI3\U XTPƁW+DYbrP j%F"]ѼhkYs1Ak(Ee=Mg( ϷJ VHTE,7AxT縉F"U)SOʪ[V'zbM]UbzS_滁Nǻ,Qպ( vT=Ӳ sF@H#!rUBL%p9҃9E㝞*nկL>]҃8)+4522П 41PXP"W"e5soB"-G߾)/']b<1EIg3A,mfd3nh҂O_Z \:~n z_ll5sƊ(vʨ$O#\U>5Ĝ,OAbڿ,b !xIסiȿJbl>y0[B;| tǏL ծNى!#q2MO݂Y0G&ΐ*I=lkV/ l*QK'㜵 "J`Pg0_iY*N*`!E ďlȉ @Ã%yة?QFB_QzCrѦ?5(.ZJПp UfufģREvC=<18$HI4ڿvǨK(,X}%v@w jA1ʟd9R>H @Pbg! |J8AcžЅŪHSr %c54%iPP(+nNokE^\2kQ*S\Mz镖2fz`Ze9# ٤-V0iry".bQ_,H 㑠qF2ӶGѢzrO.Yr2R2R\$|SMJvu"RmbO\.39 ^zc22& zaPRR,~(6b|M1GCw $Ĥr^{՘T' @;NB'۝Ws8# 8Jx X>.9O/=+66B@ =r1+I1?j4EEa^*WERƮ(ۀAPUEQTtg3u5"T֟/wVzӖl>n6!ܯYCSX[bos]-B4wF7zSnDŽND(^#ć!]Rj\ƓN+#aTtAaM&#ڇ e0=0I"$Zl eRi-)tMyܤr|? 88_,a2E@=r/ [8ES9ZHY)A o:qPqI8J{e 0,_$~Gf"h4 +\Fъj־8 Z RROӎc]ؓ2q3'NH(YJq|DP2\Lc"X6Pb-RVA`zbʤZdUO" EȸkR:]c Lt&N0>n$ ;S-Hl '2j݅+?َb޴@"oOLy3 TZvgF,jKDH^S 2@0HĖ$FiI5?ٗ 9R)Rh=;#)qd 8T9ThUYI?A֝㍋k\m$G zMog$"Vf4rqNf^q 敖4+V>4vNF]CnT;6E $ԓԜb.>5oA30u?g0s<#BuiGJ^1WF6Hz2̱&?*zw&G'~)@#nIYo#[!c(O^m^DƋ_ 9F28#I:{:+0=F%;1W#JȠ!X|(kCSEDBF-޽wʖeph}덺Z.ܫVG 4,{|wթfXxcJ/Mb>ʁLM=ʠiDd"RmULkӛ7}Zt6ӛ[ђI\N݃$';9{\܇kliR>d)QqE:(?p^إs:2_~Oӊ&:M=6杶(Su!kk z"KH0 $^Ier`OD um_ -+r} .D- #`Y"Oၚ'ܺ4EEN0P?v0ۖq3xq$-͗s>'U ^']8SbJ!(7?wQ+TUv.5|A8? ,M%C`wӒ(^-wMb)$4.c%q6Pi}:u0[1}($FITTP 0NԚ|\z|zeѿs?$[idנ*0|v?!'_ۗvr~H>l@ܚ゛:|O!lďqBL<| CTFtU jOெM~X߇>d=ݮ9 q?ww;=gD#ά@oޘ$W½㏏ۚ'=PoOhܾу-Iji$>}j;zoEN*.m D;(j n2OA؊0}R)_ڴMH~%D²lGڂ ^DjZeOzjiۍώ:ʊ({WT4_yIm:IcPOᏵI5ߐ֛t'lXSޘo{rPz(F>#۠1 v=?IBxN6Y2).W rZՀj:b^gvPGPrscVD*K^r*OTۃĞ4n؛ުY^~jV[<ԧ,~ϵ_endstream endobj 81 0 obj << /D [79 0 R /XYZ 81 757.935 null] >> endobj 82 0 obj << /D [79 0 R /XYZ 292.894 543.341 null] >> endobj 78 0 obj << /Font << /F27 49 0 R /F15 26 0 R /F22 34 0 R /F35 69 0 R >> /XObject << /Im2 60 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 86 0 obj << /Length 402 /Filter /FlateDecode >> stream xڝSN0+|tqkobs+}Ւ B*CZnJ*R۳]DF*bQ{4a8yb&@+g]t$N1Ui*GI|wĘɻ~N>vo8sH9 *XC,p hTEX/^i>eE`:%SĚY0-!zwg";+#E4p6rI$u*M1m22˰G2DAJ9ݏj!PWB?t?lq[c?BW.* His_-\R~f†Yga؃Ŧ\3FNvrUN> W.o*A0 㥫7}Rendstream endobj 85 0 obj << /Type /Page /Contents 86 0 R /Resources 84 0 R /MediaBox [0 0 595.276 841.89] /Parent 83 0 R >> endobj 74 0 obj << /Type /XObject /Subtype /Image /Width 500 /Height 384 /BitsPerComponent 8 /Length 20222 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFHHPhotoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM BpVPp&JFIFHHAdobed            Vp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?#Pxt졠%Xf{|Scq[\X[ݯ؜:5wc r8%Q|j>33t,htDC}H'r-NHOƈe7sa\&v@DpuDVdj|D}'iBne3Tk쮭Goi~;vjHl`?@jN9Kt"t"$/} _׳s}^RԺ4ytw\9Pyojq/K$f^~|8F2tX8a+X;_<&8G6bxVHb 8nI¯k^[BJjw8p"9q@nvƄ? +8`8<|3l~Œ І s}<@w\fnKֻ ۷HKfDo-ѧh%_&M^2cHI7uapunqqEtU "WcᔼURߣ;6DwҎq)pX’\s).>|P<=yYs H[,W~q珮|_O]VnVx'o/0` 'NPcO Nje.ĺX-kv_{mumyC-E3{8KGxʅyi#l~g(p{u!(xxrB_τncƼpWD@cIEUk_[ n!@ nmkD4 p3 cz5Vk(O?I)M%kd.d2c#SI$IS$)t$I2IRI2I) e$ФS&\I)R\I)R\I)R\I)Su$8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?Iq TJq56Ў@i-'BcG)i1&jVҢ`;PF="j=J)`\yi!"󡓪w>I\=Ρ)qchݍV>+vq-d07ӮMdIH=KI'^MW:2I!c,tlEͷgޟJ,%:6206i4f=²G # cM~p 91ޛwcZi1!}ϥ&N]Y ߡh"d}"2nu*>dD;'ډ ̦p<8 Ge&X0r}|R«-0+K`-aYEmm`ӱ$q^x (_Qksl0EF~I%R.w> &75M{RP8 8}ɠT.h:$sGr;")`% ˤjTI3-rPIԻǰDh5$83.-;%50jʜLRskӬsMs'jMsԴn2 qj`2z>>>]Jsa,$0J !;@1vi$oet ls@g3SK+o:J59m0촲}xMjqMcM f6V 4<]6`˄C冂v:&%!1^fGXLllщ[q})DXcH_V7c Zk &_Bf=3v>;v0_uUct Vˡn(ڡVH2#BG0tx*$U+x_Pޯ LARǗƛLmMU( oQR~T)zj yxU69I7/N?Ԥk~pE qZpJ]SJl3:FI0ynׇ6NTluj@Ƈ )8l9 F~ պvHsY>LDd-NeFUc .sidz}*]mneDI:ֻk˿=AU<#$(SWU3q%{?b6vOLVEL h 2f^CZ@? v0~wqЃHRKZLs5L|ts`|TE'PI[Naއs!yL5v"%OsOGm^Og i;N/(cwNRC|LԸBL|I,a|a'tvLD4NQS} ȄwC҈J2]"$H$E"nk 8n"9|2W;|Tοja`}$pSQCς(nր8 PJ=BgqX;Zh*ؐ+ƥܟ20hq(m`#P(2LbzQ1JkHc C϶i׆UB}JelD+a ĈS Z 5:}\1(Ɗ^ϸ'{ #ӯX>#誶j\4> CEg58x'BlW1lCK'&zntNjG$$Euî1?ޝGBU~N{碄lh}%IXȖ A xz.2Us~oE6TKBrf"ep%Dzz1ljrm@ YI6g$U0tMa3 H&32SP 8Ӻdp x%8t) 夐~ zxR0c ;Nk(  ;vKN[Ma\T4ΟKBAvwd;ґwܹ$gHa/+3ujkq n)ILZHñHHw~XN(xᢁ?Hyʐx))d>x& AlBx;~)*EE9+' F3"|PDl>'V52ڛYQݷx" Џ4‚V ;_0@Hs]ݼ|ԼXX 1! 1(`T) 0_B+Jacv>hy*;PVD(F[L[;*B÷0|?D|Z1fPi&ϚH?S|TJjWR%)$~TӂLט=kLkҴ5ȇv#H[^k}? 5ۨL)kx:;BF7v0>j`}R#H})SD:8x VSY!tBbuQ-L,hR)i:`xJfЦҫ_ O?Ĺc9_s~.<'# V8_E qkGګ%:.#$AktIl4}>t [z6V:ܟogrZ:ic t{KWu?b9zA-orghɒ$ڇLDB=k\-="-m FBEU%Lcq2Ï7CBstxn$.fj|[uzz8Wx  cr橏dC!D+p뱥 _U#Y9 G7  LkLX ^&%*{mO:(jI" ~T*ds"ָir%!ҚPSVk:c䙖$Lجohf%Zf6glk%8)g CsEӇ MJL6OQ`{{|B> ec@tOdvy 5 )f״8L-$!;ߺ`.iuKFMp# KF+sO;:@G*SIHrY۲}|7JJQѠr|D4htwIQwo!!Dj߂JT(2ޓĦHE*O0?))#Ð zq>) f649U}ŵԘ*h< &&L4@(9k lrvn )S뵀.&~\`!B7)W Ow$n~E9{_xwTĦ}I{t?rfPݤ y)*{N4Ec8TӬ3Ɉf=DA=Q`qm s:ꤖzĮj]ޅaY}5\쪙78R@:>Z'M']PC%>`$h{(L ->DU6LR`CZCx]hB-՗7۫2+< zyR-%kTZ<%%G!'CH4Z~I"$BxJSplAwRi%Rm4AJ]'R~Fӷ)H?>RsL)|‰NtqM `S)"NpRI7 p0tֺDy&AJ=ĔvwwP$\{%iR#l:%!%ho0HӴrt" #!M(,[7D|_[Aș׵udaC wa%q5#BW;Q%ݦTKij^ ^Y.{$H 2@?5ec- ?c[ckTzmmLa_L5~y=܂+c!U c4jnzls1 _mrr}㵺oʜ\G{ţd^+9Ohc^q6UP$cn>_k}bp?5P.is Mn^ v#Bh!I"۞ 1W< ƅQk*CnvVz+qLC=\_@PSNaZZ nr8H K&@*$1S}4/^OpTtp`\6Z'Co=ѡH#R:lcU&e0ǂ# Vv3vXA* f X5!G%Z^`ѩ 9ֳV{8Jc"u*2X̃]&9ئH|svVZ#w)>H(^ ' bO>I;ʶiCcAZɇt 0=ˋSⱻn{gV<1ú.p 0@H_T;kwnp45g{gRef;a/*Iﭐ\$Etì }QNoKd4{"XL'W]ɭ璕5>S&A?F8R<%XÚZ aNLÝE~^?]cXvVgAUDPuv$!9r,-|RUew %Y͊S2WI 䥹ӫb(;N$ɟ[ޞ0.{oOxRϳg$h6msRY?2F/`p#gLjM825]Q"A$70+&N#(p-[!Y^+Y9ctGckaGc<DJLvjV=9|1Jz;dL"}@J2ꏉVB[BB#\2 ^W6B}Kw6Ը`ti{TMJ`Q5!iik 4x5v+>^G^TDZ55jl)m=³&^ .lԢiQEps5c^UIKpM0]k&,Z;ln-HWZcQOX8g?^\JF 6(%FTŠL%ʘL 뷗2NoUW"^3&N+ X69(Ŷ3}S6;F#]lh%g^R'@ E~Ap'cHk91l)˓5ΉM}ܕMY/YdCriS j{\Iirrrr8̹624q/K6-ɷ))>i!n|H\/\@&'~)Ԗ0+ H) F@ZdQBOB ZVˌHf[-d%k6 OU!o NA +IBuS')+ $IRI$I&/cy y(\lq_35~181HS!6 ?rs$(ħV;O8O;B1'F?x`0'pXLmoS%8G;x{/#xj$0;?H@. >_yXXM'HOO!z+gՌ} 'G'׆_*I:Kt\r9  ҆ DܲJzm!5|>^@9eY9,RD4(@4`(QZXJa@pLpX9k?ϓ/e#EI$='LSVNH,xCk:s96!)|P_9e|G YT`&$%O' 8xqyσb?3z1nj xICHO2aK\@#1?Ք< ~g/CO 1⇻Öqb<<|8aR˃K/'!5"9.YLȺV)̌p<&1LHCqO)J ]%X?wpoy9n?wwxyPKҦr)p*R)J\ DQ%"TIR+Ĩ]KiLJiRLJiQ%IʁNJ*hExY$S$IL3K$'(~)דD A@) ' )†AafTBQdh'F(2e<1S;GbsYLr?9-_NIIh4N$Tc,'(e<ch7XUN+ԀT,/S44|QT)OE5xh#E.ptPKÐG&ڶ=9J؁YpأlR>(6HEpP*)Q!L +bF aTB2+o?/1^Wn0sK[!JQ"r/fyhb?r`zq~wiHS L$}R&ۅoqqb9qcr\lva:HOxq)c{X㏇7qqKmR4r8+''ǹ\DrǙ._:N4)JQ0A釶5)_gcY3r^`ݭ3QAi) b&0ẓ/Wr_5<ɞp~ 91Kڌaz?%* )Vyl("W;L#>#*RiyJTe)G4RM)p*bTe)DET)M)RE1)J*@)H,BS*%KDI% I')I$Je_i$?'-d*AC%R|?(b'#K䳝",^`uOd1OSlCD2{78ęnm"iwAi;\xMSiY^>U%2LrlDa#B#u02 2STȉjO(ぜB>(N*N?rZ/ &N<. 1)r1䨧4)R)49ٷf6L=zlA:B@_0%|cCG<*2QE3BRL-܏e)JS9M*;nG4SJ(*JR)9JT%)GTSJiJQU(Ҕ%tAjJ?V L,e#L#!Vl? ro 2A b%||> qN2?\2rٸK(1<0ܟB32%/ 5> 5$דK^yR R(cߓFxO%l_<0Gr/EK&T9+xL ƊD&>t)#mo><-<G¸dX*/qhx?.?،yhd\IjSM!1wެF bD.ԑ@d]昞e@1vQ3]棻*Ap7Hx_熗X9tU7&}(٧f#/&/3r錄ocf0iʻ$uH~say`@9qʲ28hӐԞҢ)<Rd5Џu] 3M=kt5+sw8PlwNkMMϤ~H4kªdxT SO'wwBbp Gr8"rrwMTƸRJ0SnR|JbT&%GrbeH Z(ORƎ{VR=Ež0Sr!ޏL|eiؔWϳ4]W=YUоw==M1cmY\þ#(JQs|Actx>o.C'S1> ݫ,y(nRrtMMRLZZ\=XLuxaq8&SH}Zc(>?4)mZnotWA<317^5-}IΚc 㐞 !{~à <'CeAZLwi)cȈ˭(:/)JdJI$)I$JRI$)t$cngX-l,(Ɵ F/ױ:4$iI$)$IK$dIJN$dILK>i O?P#H-,ħKP!k {rx(pbf)Q!4rR \e.S=r!64<) MnHȜ1$Q.v:id鋏Tw(i$ @} Z4n`I)6p*HKqPSOGU$G)AKr#xRnth1Oܘ8cO 2ۼwJxƚdOޛr2ң)H e)2I!4I-N)$JR kF{U49Uhɲ:)5-]h";-s纛*zӴCKZ*ݲVE1BSmth2I)}S$J]$$d%):d )I$J]2I$$I$$I)t$Z$%KP$<K#6E!C}We}dW3O#;<‹^h.=jA!~) d)$RI$RI$KZ$IjI$$Z$$I$$I)I%)$$I)I$Je_i$a)8|Sh^JIJ4L)p%}xJRL)t$)t$I)}%O*[✥IR&N?zRI)ZKT$h)d4IJ`p^N! I=yH)jd{(WXa@K |)%d./Z I6tJJV$JRZ$I$TZ&%)$hI2tL ]$RI7 )tL$IKg$$?]7t"uW r%$())^ wKIJKTIJI- JWa$R)HKHIJI/4RJ4I$ܖ.RR)y$IJ/I$$JRIIKDɯN'XhLQH~TI.QR% $_IJI.IJ$RIJKI)PR$$%)$!$IJJ<%$JW)I$KRJRILIi ]N?.I4)^ p:JWt )RRr%/:)J_IJHJVI%+DI%+TRJTI2J_T)$_$ǚoxI%+MI$|%/MIh"L%)-RKTTҟnOIRS?~Rh|H)O?Gv eJIr vR'0H$ Ij/ rS]4KI)~LJVȥ$JWI)RR KJOI)I$uJ..Фp~DJRZRIJ$)OJT)JRRI$IJJJZ|IKn$JRZ%\iIJI$J$7 ~ |RR r$'M)~))Zw ORJ_D%I%*RӲR )}}>{>i!4'ێOaףYo)\;%DZ )n ^iRKHK)mwIJ4OñJJiK%>LR#RथOx$kKOpR%- jk׎%-I>x))h-0i()nRk[/>Ka _ʔ/$]kC)nc []$Ki))ZJ4OKk[I>xJRRڥ}RRKkt+Rk-RR>xIKyx=Kk-Z'Obx\SwJR'x?Imv?$endstream endobj 75 0 obj << /Type /XObject /Subtype /Image /Width 500 /Height 376 /BitsPerComponent 8 /Length 21148 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFHH Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM pTPn@JFIFHHAdobed            Tp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?)Jb@IO0fִ֑Nwv9'h`7mPG )JTe)K )LzWeU%ؑF;4LP*ѕpYBs.Ǻ Obv[/*˭ם5Wu&Ɂ?UdNS#R/Mխmp-c 'cXݾv4;n9˿K+vD4U[ZAg9G#,e96 ,Szroqs v`+BK変 iԸ1Pve0\b$2Lt2q }_@4&IjMWd;@XaLUKRmH=?G;˱.~acݐn;ͫ& y&&H57~jFhv]vM9WcOHci? j77>oqykZR[ÿ=VmVn땹Vz S<= idֆ7 D,9U75WN΅c ]l Scu/6WJ?>b;ƺ-l5 TұocUiq$O[r>[uכ,yˉqM{ V i.ÓYk'ac7Ap:բJ(n p=Z,k]q24OpU杚h:mD tVwv5TuhX B|A3!0bҗؗ8dlſ E~}h` Аu[iw?,:ipPt;}Qņ>H> %2BXBh׏ʂ d dbDxdoq"Hj?gPVbICɪƖmݠq!th= sXPF4! a#trAp?Ts2Cih{Y @t{KL;RmZ* us:IZ5nuZ>.k?`c6 1.#EOP?iفYtY2H?m{&%J|OEIE}D8>o=QSP}@<$ vQya!KN]Aq8CO҇"1j}AǑ " YߕC/PLdp(dELRY`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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed            x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?IR=_`e [2$ߦ)IT1ˇgw~^w0zX&5'D VMٯ@dYIΩ. .kSE˯.?EʥGPK6,/y:d$$p :۸iJJ̪4 H!>/L|'%))$RRI)y$ݒAOаyLXk.IR&NI$$I*Mkh$ j9院m )$?ЕP $($I"2I*I2I*I2I*I2I*I2I*I2I*I2I"I2I*I2I*I2]TA3i`MK+3kwNu2"IیDE"S#W%_B"57QLfk3-sų ߙ5$s>3p>k=ſGW!u.o%D5C'% @FW3m]M6F>(4D ?,-q&-ox+]PDG?%GMm^Fu9?]ӴxU,'3}9uUF\I%oW0tXy*JoZuQ;foOc{Q2ܓ錟4h+/wcsP{N#'kG6Q/(xZ:f&L4O9$)4IITI$I$H$I*I$RI$I$*$I*I$RI$)I$J$I*I$RI$I$J!3g`ğڪ},l.y`&T> nɻ"m?uNFz |0?L v&ݪAV:\>rK|"TOE:`DŽ#8nvg4R." EFzm΁EIy8C`L&Dk"&_>cSO=)5ߋ+7<@t6\3ՓcS"ROCB3(&|N)꭭`GZx"K\-48r@SQ!&M$ޖ-t*U%6@C^O<1 (kFɱD S9pl( H !oy7IR_1@:S LD̒R f풅Uh$:Bu(6-(ѥ$H2I*I2I*I2I*I2I*I2I*I2I*I2IZ)t$t$u nm[ǀfCZָsN+_vj<"xdF ?50bNpq8,=S/xѿɶ']:ʩٸംyNwTHt9n[XnPx\Ϗ>oj|iyj}yFI=oc }ZəJ|eI1偄(%, Jx (*(^R.:B*XtʃyRIL]ΩĦq&Y()Rh%)w;HIEܠ~g$>$Ti2I@MeR@Jd |(B AݙwAʂtx5IL )tI%RI$JI$U)$ITI%RI$JI$U)$Oe ;"iT,?.ַgGzj[ƧWF \np5Zl.I2OŽs:x9vUe5N@{eƷn-8NU)"ZI7Ḧ́fE/N{FA.%2{mf0~F}e/.2jYfywo R ;M?5[۫0{Q{7krkՌ1iyڇEDVYfC33'OdI#ƪHDe:~;F788BEbj.Wdp$0xxqx 0>*L2 !>k]a:\!(D i`͏4w!?:?6/m&[:VŴW9#kʙ)e{%|G qs3ju߬\|1n;)b`URe0JXDr@`#~^泥ЂJК^KuagXױ\)`?yOɎ^/I<ʼnM*$Hpj$JMIK`e'ɚ:$N)cR(TR?*rd))xy>i ՌCJSYYELjI"$A:`$ )('*Y(ޣvI%)'ҒI$JI$RI$I+U)$9.qOjTzUm``Zs8GXqEn{wZi&'ReK/k5oVXu]`vVsY˼]cl!lprZ3iTڅ7L~aoR6RKp+UWf['ѵV>Oͱ#w|a K,Q%zH_3 *TO҂IWh>r{@-+ٱNUC ih_mԦ w[X]2ʛ#^%X5`([\<$$۠W{|ѬUI粖lisICBbo2^ YFO ʕaRƽ{Cjpw}sW5WcY5qc'MdzHYv ݥGvuY H qMR! 5NZ!%d9aOip1qE^h榐_0dq=DB|֎gJZȥLnlms'$kHHY6K}7k̭ =Qŗja^`wQ5=2675WeSs%=JNSf*r9 @ӞmWc@7ABBD JQݥk|VEy H$_2B!<272 +bTE!)JВI$O6?u oB\ Op G[՞cEC?DN?:P?5c8NJW9I:I)JeM2IPI'I ϚI3*ב R(=JH{Z~ J! Cj!R-!3Խ_ )8N['UNЊ] S'D`:ҒI$JI$Sc永>v4cWmekb ckwVeԿ ۵b^gP -d7c-9+AelvNux~nsGf'hTe):h?d0~!" )rjG/C{pT9 PkHA?Z|ѫl"t?D|d5x{8OuNg=TF~_%>MЕYukQߑMI${̞yq$GO 1JPt 2dO2}iX%ޟБݓ]߆{#8VH\uO(#*IstqS}/<4L!Kx4$c2q,&F!7'*M0*%H䬙I2IY"$ܫz qѧA؊dÚXr,>lr[z9.ߟ?u| D^8~%8Ku LR4NI)dIK'I2Je4ϚI)r76͖kۧ[GmV=ĵ>$8wjǹl թ:?W$ IV9d[\19ޏ9B#!G1LQ{}3(!+ *ȴiMI%a!Fu!ICָo- ѯ+];!;ϥcDn3̖A,stDAvݾ3SNgXk3q5TE~^!f(| <"')f-k,qs܆UXKk1-8Ǝ 'K?\N׺yO㋃(&N.kznC+u `|gc1[OWeT纰ߥɺMA8{<3PHLb4 d` gy2<|_N\.L&Eb}pidOKLtCl˃^9{qf}^㤵#k "> *B(2',reᴣ&O.=Ǹ>j+}9Mx-Bɯȱ1!2~'1χzNV^_ % Pzɔ$T$$)'I%+>i'ϚI%| XxgUbj{*s?pU1}gjdO|LzP)QsA" gם;U]~Ƕk 'F$ӽ8)j7cm{D}.ء֭ɠ=ճxO>;A}5 \A姂s:R9ֺY@,# LY;~Ykw0GqR+K$fȀ᧰Z]K5sHd~g)lAԺ1é!gf[2wϜ$#Y:$8&PԥJHPK_ޝ@ ?$S"lqMK#+'oPvG;&PAD~q <kryN\Qbq@ezFPwI.7ORǺXi:Corg()[LYaاGqqD_SnX!~guT%4pD(ZY9 Ś"r2,\ihCegfڍ.Ͻ" )FXc#O,+xf5G q͜+49dba.&agT2$q 4|qa18frc3⌥2m&/iotŹ_6ORNbA7.c94Kygx7rh1 A4+&^A,p|UЇ:!/d?%y% R`0c/g$!~w'.H.OnMfֈ=O \w|gq×xd!l^~u4 DH< (OxGw'20cu?{R/SXǏ V:#$8~sA PWE~}lJ?L9rÚ#)a6$ J[ФR$%,:E>i'ϚI)4 8> k,!`CYsNJl?Yx0Gū˨P-#'Sf5\c;k@oa5Fs w klKù kj&c}?#NAYcFt:Q.Mն\fH_Up͗H1Vn¢Ck C$0u3ˁʩ OuN]ǦZF G@ ; Qkv!]21}'i0gVMrxYlxAx^ǖ c~%`HjS]0 /C:T W1-ȓCy|:8'.qU!Ȯa,:u".۩c ԣhoެ_5/tWذSb9*`4~XX=HMcv gqΪO2$j()|m(v}"dZgR;RROm#w~X|L$JQ)k%IytIL%~HfA>![%MPN)&sgPktxƙ*,5adTe)M(yLJiM)%Ov߲֓N%i)S(Mh$J\'M)nIJJo#݁K GTVuiGx·õ;וg#M2~\)9 $$(™LBJbE*ߚI~g$TkZ\NwӠUu[񹤑#!kdq"ꚴ r*^-;\\~-Fe}liDvf5CT ]}⡑QsD{I:;:C\ ADv+AC6xj|S8k2 {I<'YQ>*{yM<h rrwaR|BLPu4죿pNx}m}Ѣ,6H?",,$O׷kďWu3?m0:S(sCʸ7wr2!B!čgql!{_nQE`D8B!!6K4/uoIPn[,U;,}s̝ܞg9W!&C欱:ʻ][tO)ڗWٳUY䨑)y6ͯNhC{@ "+tg9Ox*߷oq;hD7uYM b,&s"bPgqy7*w$omihK*q >N+٫[yrұe舑c1NfH_S_yU߇݇SaU~Jre$= F/&9iq%YЄMc`,Q¬Έ(.NS$οIe)Q!蔨$2O*2RC)IFS e*}*!݇EIy@y3j(JS\&<$RR'LL6%|IO-eֵFq*-W|) dl\{߼u6\;v+A*Y"<1pWݟ53dQ҄L+69ңuVĦ~hM0\t?k\yLG;i ><)f|]?EHׂQΊ>{;Wˌ@ Į\`%R?i}-BRd%FSRQࠆRFR^di%ϚI)辻[o)XӰx+1T;wbk^~>GcZ1pdfU@ps2 f5o')lk*kuj+."5&'!--(R;Ms <\8s2 z$5c&: ps#OȄ*8T: ?65IohBe}@ Mkc %y gVA5AAA ,>*.Sw =,鐯achc}obXZЫ/Xg>%\g ],{@_{|YNM`Oxt FD~e}7$%%+V̬fh<{uqXY]$J]|![4a5v׺hi0uBz~kt|,gyQ@З ,qhq:Vy䉺D($)-2W}TÊ6]3a"Vq\f͏3ϯ;*ᯋB3zH{^3A.?7ۏ/g%䚌ޱILs~(xn Xwp -lL\[D8ʞYcK\;&NTII$dRE:H]$$<))I SJI)PC)JTei&ϚI)A!Oܓ 4+^^qhΤG䢥krkξu iY$yJ@x#ՆRưtI8mw F&lәIL-;9!$w"76BpsH=0~ wG)47P;gZϜ'㹳8!%1&TГ&S8A%L3!CR58Kw,~Eӱ~Ox+o>ZelE.rE*ҠSx#T'PI'V8|iJ'@}"J"%ϳa]? P]x?D|L"#cxZ()(PI ꊔTTF)IT))4" $d)J'T))$:JRIIK$$:J]$RdC$$O):yAK%3ϚI3H'Ah8Ak,ݧr3IZx'|FߡM[8RpILj:Gp_(n)LƩ)ZNw %ϟ .0HwӸp;}F ](ANd'tC)uT]@{]QXݕ'R%#}+y`c5!":&-q`v`3P,ȴAr5LyD"WI3=84Lji윝T@"})t)RK%(&SΰJRb2JRHJ\0IJHddIJLI)I$J]2I$L%.dB&N2I)R2)RiI$3ϚII%?lKPcNHSlꣴ1{ [FͩJԌ3PT);4h;k){$hD4|'TT >|F0p_%MCwJ]͟(N$"u#E)tRbGFirJSLID%*Rv;5jg"dt$*ꦣRRItbQSiYI%(̧*))dI2tI&IJI$R'LI2I)tLI2I)tI I)t'IJN$NPBS_I7|IOH=^q$$>Gs d1/9 1*.a$虀!C8kE$Qt#RnvNn!Ӻ)) >jLt~)uRC3Q'Ay<"5EE# BϽr4P_4-D<jckxRGQН8|sA3$U> $1&pCrDCaȩ%))R # 0G2&Qv}@Ȕ:$&"S"G*I"'$xIJɒ))tɂtLSIK$HI$HRI&I*I$B'LI$R$ RtR$Ӧ BI$IL%2I7|IO_XsQkyodQLB $&FHuIK]Sx*O&4ELk&cw]骛\JX߀LǙS:CkH RvM>S  bi⒕Y:ۄh%3AmyIJp; R 1I~:Ee3i%4Sq"L(Ioub["yL|ZItSqIqgVbI)5k 6ZugH> p8 uv-+)$ü i/+9$B"\t1'gtY$8:`Y$TswniY$Gi'qY$i8HxA$T| h> I%1TEM[OURIMS$)$;)O6xBm)mwAI$xBm)$wKk I).x]PIIv $k []PAIv $SwAI%&xHO-( $]SwUIMgdSendstream endobj 76 0 obj << /Type /XObject /Subtype /Image /Width 500 /Height 382 /BitsPerComponent 8 /Length 28112 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFHH Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM pVPp JFIFHHAdobed            Vp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?%D:S*%A"T +8 XP.fYTDbϤߣwѨTsa@F3ۿZu7cg|~-M)&)M)!ĮV!|t :O~Mh\hA/ލj<p¯ZysLo!20'u.g]$UlF;ٻ笘mYjXsm3#a;{3m` ZϵI,ȱIO6&44ǎ0>w$$۪XSl*jA|-*^1@=1[X!Gb0e)O0Px1cSܖ<d7cğVi?Yw޳@RIѵ֞ 2yj<^(/{(FVvvi.ݻ`Vv'NWWsZc~5p ;Vps(`f@% cqw4_ K#.cwdeH?5*EmeZ>3ks=V`ANJm vw+DcDrdFs^̆~΍\}>lpt  A{Hw?Z_Jg4nƝGaDTtc{ #K@]l Kֻk\C q;9'n9-V˽5cKA3;}GG:A(u5:ZO#c%G[1@CGgK o๻tԨcǐ1o^`.$C]7y=7*9y[Ǣ׵ nFMuiğInƏ&Uv95`6~XH3Z,..e2+nA'ywÊ8voUt [0?\kgW0{;|7pxFVvK=%pu6%35J7.:˛'wDyqDݎ%K3)ͭ4kt$Ԩ%v薰]bD-/o'lԗ=msK7}iA܀X~t9K 2ײ4nSjZ-6S*tC6NV+Z"NE5-#dYHؐyVShAh֖OU<)1g&zj[ w4aSCfh|w= 2JRAЄfv\Ie4˫S\NUcu=%/y8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed            ~" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? 2JGJIRSII$)HTRL'))IJJI$IM'$!RSII2*TRL'1'$)R|SIN'4%%*ObOIR>)HTI$R|R$I%/%)>)I+JOdR'2I!y>)ILJ^OR|S$W┟$'2I)y>)ILJ^OR|S$┟$'2I*┟$ǹcav<@GxY[n5\ḟʎV9C8@ܑHGQ3K}M~}?T}?~쁞kZ K-{\r\{oU<  a#8Nj.,r=8$yY < JxA}OvFFB"Bs̜1K 2{QA@i%O\~)|I?mvqx$6Y_ܶl_ qqqtYlm"7||Vv,$`yC) u()$OkҒLJLJ$J'LJ$I*I$RI$I$I$I)J"9`2F'}JfNK/HwsgUя&AZ1FmN|+o`qWC쬺ƆL}FnUqΦ\]$46bުLgeL ɝkoJýMyH YOkZ%v^E՞ILyyI;<ґ2*RI&IKI$$I$)I&I)2IR'L$R$J&I$K&NR1NI)E8=EĖ y8 2ٱďk]h <<`@%?vG'Ðˏ2pދ_Hb8l>g0Oo/iT瞙x?D=~?b7kut;W|{j.bu%^q3s[ˎ` BRGjtOoſibՊ+.;wGoj: 1F2_|Sssc >F*I$*RI$I$J$I)I$J$I*I$RI$I$(\.To\`4sν^sXq/Z/lXc˔c~I&4%^S,ܹe9\2=a`U K'v5XuU.'sK4~BL7RIln]RqeI9%V6Ƴ?3,c~;Kz.<$ۻi~T}=ߴKq?{$ }ӵֱ.оx:=.(\7_wcn1Mʶ&}Cv݇+ ^RJ*RI$$$*IR$$)$ҔRI)ITdҔRbd:Xc02 DNjWL]qݻ2>-3c~!u8G3%.fc?:E #B/&r2 *#z>(#`s1">szǗ/))0$JLҝ7 Es$ʧ,?-$i\o?R?ژ?IG RN2jHH$\|oR+FUE#Gs4RzK٭"OJ\yĿ/}9χ~:I,7/NήvS{r_ybXQFy <\#)c`yp~? Q'is cHLo}H`-23s81a ssGfF%:sR~msρ(ֈz&~*O}a+9{4H1eQVtսº5iUx?$9NFr;G_jdYJI$RI$T )xHT#[7 fFχAJ5 uUltiVuT4e%`bG~[&jϑ.w6LS}`|?],119~qŒ?; '(LÅiw+(dz j\sϷo\2/cg"9?Lݗ~Sܡ 2HӨQ,>)QRFCp\FXa0a8e.Uy,ߦ6Z-gob0$S 7MQa0 ڗI2I&I2+jSre1r5,@x>p CSXLsv?5\õ0;sL:LEFXw&4-$g>_.a_۬#ܒݷU$/â??HRAz@ )(^|<`T v1<;0~!a1flnSx-e,pwsu`iwe)Yu\7&6nJde~gJil`V#{mi5إjfaxJ%YK2M(ris4rP:$HY:9cKaYuٶ;)IǿEγ:~\cXƆ@ r>r.?fNx>\я] qǕ2b7.Y噞I[KLQX&=sS"JgQeR0m:ȵ1FLI3{mK]ʚC`h26`¤I{*$b|rXel_Tm q?˜F~B$kܣ@Ǚ?I7#墐&1,#JibH)2VtLWV,aqeycUh Ϊe5^C;[Ç*nXoßD`<h?n[u cT^Oy#b<'q壧'V<˓JF'e(O` pO_A1"d6ъ&cmˬaF`=*xdˈ5 I6%iVn(-Θ?X'Ɏ|u&`z)Jfl%9N\R 9Y+'f= b<i:1L]C2֟ҒK`uwdS]gZ>ݪx}=isX'iU1qrƴI$5Jk@ތhٿhe/|YO,{lsdgڱ-`$|=gV}kIhIS\;{i#PHh?W;m fFrLeźI'~߄a kLHJeN#nMOZcvx$ѻ޶)1 )4۫%'4?M_jN$  d Ce1*5%Jo24(tZUauitl5*. !hs PyHI*JeIvmH,_k5\Um9>%C/˄7OG ~5cC!2JjA͔$$J򘔓I$)@iq * &ci۸Kxh'l(.%.?]`ʩyF[@wncC ǰJoX#Y> 5fM/ykCA?fdn5-9&{'svpl2̾8_22"~tSstyJ?Lh;=64;:G0"x7rh쿣T<r)^NI#[Zk'k@"🾡ѭv3ɒy"~V(CA?l8xN?a/&9Ȩ'`jT @VVZ:;ovvGw:y.k?!丘x* \p|X;;r,GK4 K*U.ږ6OIdb[cC{.'O 07\yn} $i)75n$')k]&A' lv2RZfaqsݒK#ܬqʬ!c=p?E:]end4h:%`8 Ru?t䭙MRBz;ݾ#)+ZWJ s]ܥp.OGjp696-[CK$&$d:7!ߐj^Oc JG::MmԁIWK]Y$x%&\8EY.e{m;IrR6 0ZYky;`}!$I>kJF87S>Qתc04aPe sƐ`H$r .ǺH`4krTg#lGi~Ϗ?U?]q~)b{4ҸSz1JR*ۊi8 %qO$AH<4̹;0üQ\Bj\23zDmU-}D@jQ:4]>&B+q;x)7Jk2HK ‚w!`vI@)u@i~~Zò8'. 8TGI~_O⯜RO a72Dh2`Ꞷj-9BX鰸Q2 ]cKk8s3j̆uj,{w6gUq0pC,ujd4ZX1sۜ7WXƆV7a(k[ʯ)id)\{)2Ruj Su,zxhAu50e")JÑS~!MS!\}?>['nVwGS]8TOM_K NW^w-} df٢:ḸB3N#$4ugzѧ`o(c,syLV=fMYč0t8F2&\ [ ˌrs;ep?Q1Q@Tpd: s]L µVcv.;[I)I1!ך`46t×]0oq$0\0"=Ą5Tvm]ӰXtH @憴 VLry)x,Cør0jUܡX4}np#YkԏLyIYɀ)a9FBYF18YwZZl% H~+8U4am\@k}ău0z{:m< T4h*s(=2<:)>R&z 녔}ӪvXw1Qx ChrX및?p@Zd.iT}hܲGx_]gQګ>=AVsa8a~G黭0*t! bL4 /:,kߎ|Q[فƊ&O+]H mnՔ!2xc7iPm { a ^5?EJvkmc6)>+*JPsp O?rd7*Żw=Rj$ Pkq  #Pŵɒux2;r`JC_4k$ G Oo/(cZ=G#e][[6<'捞1EG*FF(|Kg}TriuiiDEV K@n@Wuƈs|Jz6i FC cFhmq6~ 'R~M RGNϟI%?2SB RI'IK' Bp hNC )!5tCCcBO2`MtT(cxS{6UIv_3bsq|OnsBQ=Ǘ?=⒓S&ا$BxH'%Z<''زb>">xK87A1r fZ!i7ς O(k t9N:[F*`#|%]K<T&ӯF+`4>꽗Jq?XEwN"IM+ 3II&VIDq09K [P|a,V) OBA[~eV[֟>T!~૸COf36 SU~v@\쉄gX|ԡMi<*t#K%*li 7S2@'q3^#jKyiBRv,t`>gI` u#cZ\Lr~JNMlƪy}HiGmRI6z NUlliD³%;꣓IsLCIS<'@i ySHɏ9% ce3`ܟ U/H}*Z1@ 'D\ׇ;|ICaX>%I?vĨ[PΏOC#EAĵS@>gEO% *u E M(=Tc0lir"8ܕnCD8芏Wm|)YK][Zg~V4R,q7tGooh:P꩕j|O(|dmLmT7\xjmHkU_qGୱBGMu ߜF(HDZY:Et(d1]㦡#COҎKI6~ӧg$G(I<$P pPZR RkQZbk(ͭNM2XfVEڜ5NBd6͂P!i BPwP<3,254M66B+[0Vl5hT `(ά$9B6'>%!{@֗x~T*]tM[1鼿N' =mq*MivSvIV>:$C=Feȏ0[e=Y!Meꩂ@$\Sx%LتBFL I#J^]F͗D0_%ị{!ht|vݭ5i,ޛuЪWiv3\{X\OxfRߴz9|$yiG 1X74AN)cCLn&cIeeہC+j& S'M,K[KNcƣ_%Dicvϊ~I@ ic;:#WԘϼUp kRӧD1X $gBu\L Mls64p#NvV{&40a,hom.)X":os78MMK HYaiJTS ;BS<.O1 A;09?TџgZ5vh?* Vi14Cr#qsi#o xZҴWr"#twmII6O4'?HRQT)RZQИB!PK6-&)m'6(zmp&mW dؘ=VRQ]YPj%Fc Xe~I"FL2htJ#%T絠`"LI|OdYe񧊀{\74:$;-em/{Z9q"̼H:q*; %Ä7>Q3}r 7s˻,:|.H O;EQѸΪWtևe 's8}A'RHhpJS[@̇{t`>d@#@1c,ᕍ?f48ꪺ<5#A9 !̗ٚdeK|WR!͍{oL1%qJh;# ò)IK9nr-c.\=@0O9[7SAp=;FH^ L;f.#٨9ns,:rׂZ#U<[깻x=I^k,5<|Rk[vA(X:IcdG ե&cFHCs頏4kZ,ao \˼Q-)k(|/2m#RUrI6KKV"{/X@~|A&uU@!'UpZf&I'[QVgqAꍁU,Ԟ,R Oc#ⓞ֑>)8ǀ{'q'?ګ;${*;x0;J+͖8˻|;Z'rl-NJg횸qV]٨Z$HNs<%UoKwOrwV HR  JPR]nB*U$.Q.Pܘi 2ܖ JQ-ɥE$SIIXX%["2٥M f⠑ķ`tvH ""C^h$?"Cknᮑ2GVFYY 45q?@F!Nuu ܭY~%ϏYA_oe8dI "Ym{`] 05L4@p?Wɳ /. *,fXP+d !-ȫM1lēj)rՃzBJDzZq?ifbTINIByp:G=׎G QWt4L$S'{ѵܢ2 0y@sZϢ"41WZCy7[Z]ɞ 9ms%A7Z||)kk$fR TJ":]kŰJpA{q"]o?úFj:jvø5UӳQqWdy[y>(a)T,`|H'P=r[:6bt*l5hCÝTA 7SYp=C9@ &5FH\h$̽ιtڍcw@<d**~a|QSkt_$gQxc7<>*dBoDY#ZNT3葢覵$ʙdp5߄ok؈Miۺ7yǂJfCORfgy$J]2NqQ:dJI$:dT<$(Nb3+M%iZTk[R ʶ uQHYn{..m#4b9ξIihpwOv;"'—Ieͮ}vXZC÷7@gOSQ 9^z{= Ԃ=ϦF㱭yIh?c76Dv YL8=cdʃbXYh,nj\6{_wq^eeuN?J5ZD}Ic@.~r&S*/x pt+* "vF\@lc睭,V2yu1$&q?ƛ8qp)o3A@tS/z3Y  USVHLQjM]hpM4!*\o &^_t}vAL&t ,&0ŕ5Wַ$N+.: []n ۻ6,v.#J 1΁UEʖK`?Iժ䏱^kI)ә5HDl/.Ot@y*U+dT]4qK)7  &wh2@.ѿ%5Wti5ch$j4O5 D >)zsCZ UXH9 =vD4qW\x!Ӻyi"@n%k @I&V̇Ѱi usuU5t2%5 Xl: >e;,gQ&֠5wocD}RRN'w<ORBO٩;F+XI;N=(b)BPxO %[N Bk֒Gc<%i̭YzVLE)0lk)qe4lFɏ#Xhg2b2⳨\p.;7vϳ!Apo#{q-V7?s$Z8fݮqۏ:"LO/~F}Qk6`hwowvft4c3i vCl+6 k}7թĞvN ڈ&̞J- j]fe5hy5is6CFvO:@2Z:G8iDv|$bl6Y ;ŷvQ^w;̕_ s V$NYIbX$Bk_LltO|D#ji U8*t]}ku<5Jkٻ*Da?Y1鼿Ŋ&AB⦅iBw՜k #A~!l%»ޙ(o-\H9T_LjT#an V͛!&/0c<|R 8SF%4ȗ3.y::EcO*nC' 0IL@tςb  P#䜔uda$ df <+- hÿiG)Y`wҚ;G=qeR׿qƃFh@4Ri֍0%0Un{ᤖ e՞2׈9σ|b8s?>ŀ4;{^N Fx>HYLa|I*v@6pf#ڈ=Jov؂/ԳObUMu`?+M7o>o%HZq c,%:Ql2ǟIhul[h\ǁ3,q:v%\J eaMa jXAV(jl/Lyݠ|ԫeaGowKi4-kRGTVڕJ#i@mzVj++aJScTa]|Gc{GE)0JlkH(ͯ]y=IFddljT\"k)ZTQ-F(o |R^2{&{{׎ƚ=mȑ4U`RB bjT;-ih:En3Z~*ɬm6bb3 [o;C`ty5h A3Ru]qܧmvy*'T5nDrT͍%9ꭒ q#Xn6UfA =;4g3/!<+m^$5et]+WKr27?1L~q+/߿ W4jV0CZZ<fX1 $oM\!w"կF+=:+rfөRhϒe"I2'ru*T*={ cû--k\ hWֺT\[ß\W9X `D#1ێ1U FʙOcВNldnFv>!A7)P<'჎0R*$CE\#e#v:@E8SՕ9T"$ck"{e/-]-aݩw Peq!c۶ߥ@U"#8ΝR2]C9x$?J)>SnX;c\c8J]wG['ɬ鍺Q`=8eX`>i'N7e2!g`IH 0gu/!= P$4|3c,q繑dLu$0t;5Vlk FQ*uq:I3I1pPPp3"7ww OmTHUiNCkCb 2t 06f2PGw;%wN<9*>ڋdI ;XyD "PlHb|]P=xdA&'r Ο(ٷC[kVV'_ȼU"[m[ŞCQbuks.5OtcWB#qXYy:V.E/i2$}x)G-)oĠea׻!-KϬ]Z*f+Ԃ\~.՞Xl G(b0!$+(!nh`|74 eAx`T™XF4Qddq"tfFS\wSh@"J8>2(1]⚛}M"?!@몗e-^q'p'#4i 6v +w$^zwc0N"cGN7˲h|T@u6: "6=VnfJӶVpGxm K=@}ŬDP,vC6 1ZXkk[@/?4)S]o$<>丅!E p#{!מN ,}n?Ḱm1$-┦1$ZT\wKp<&<1I+C= 6cL %# \Zxc@B`nPc+2)& I$%Pd?6t#=۷UIhJK^<< qT+h<ƲϹ1إ3-k 1ʢokɀ_4$)H-5a>^68I;.gݽS:\.̆'a!\(IYu{Ē|~_]k `{IW ML5HW@2ݴ˜d<ی No)7Rz;Mʍ2KnMA&n^tEةر=nsGd=ʭ?H|eu ~ET}#RKIJmO*bgU'-&{)5JS@S I" JWx EiȦB3f` "{xpX@`%3ʁq6GSi̙>CE^n5ԧq(Ĥu Lxd cnN< IO ' Ƽx!^‘NZxd[{ 4 ';hdj'pz;CA'b#YjO4M< w_&sGRocwqZzTuK/`}-sf#Ae1m?i}n4?XCd\c{%Usʃv00>|!TAvozp^7Ly0w(| )pXR)\:d+YN|O$ $DJ4B讷8Q47#]lc@h"!#jd 4S>K>̷8~'-ٴn1!ILɑ~+#y8=GO Xj$i%"̭uz9Ayp9϶w>AxX{ZnlɪbDHY& h HF4B"ΪmaTi?GvKgĻ>Gg$~#gDzp )I @4tOh';hkmxn(SS4(Z-h<xG$ZB+ jkHJ()r'ό0Ҵ0~-ޅ- %>; w?"O*$‹ݤ?znD(\{G %ēN/0sg_'7qj;Lh9xD PO Z#Sdi$0ШvcGޮߺv7y!HӪc".KT\A$*ֈjD#/՝m*7c#3[ScAyՒFGyU~a.pݹĞQ+X.'5㪳O mpȗEtil>cEo50AL[H&DSIτr+Aȏ xFQ#U2| p\)H.] J`SILu t' SJAd5svC;')J :yۺh0L9WSxhqvS(FR WK^;Ax#g'9ish_e{'\MD;|AHs:΀%:+{$n)nIeD$wAR\ Z׋ tw`cYQsf ?%l2:He 'ӏ4P̉$O2N~+8Fk|nN M6}<~*n G4PCNB4~ C)ųBuR3ԓKS<Ԁt*nӘNt 9 yRR<I>xITLi'^BiH!w>Z) M9 F0]PtqC6t4VIH O#U"?&t-Of;mD#R i HV7e,we1l4h|h5LɓRPA|Vs%Ίݛ  s nTu:U,$J#B:w:Hs $*&<ިk! !A~(NB:#> stream JFIFHH |Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM pTPn@JFIFHHAdobed            Tp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ??yB/ۣ" ؞:ٛ\a ?q|-yE P Ԡ'h-:6=4<@}&9<5s?5q~ikؐ1)I9w=Hɯ]לS)I>:NkVyL EyO)XbГg~ ;}~JM2ҫуro43[jcKcvs xĪ $:W:#*#΍T>{rĐ]\oE#hm cdQ=ԫŭ릶?ƃ-@~뜦7(p yA2u DeR GokULڵԪK,ls]xʱX㸍c䢌zw5+r*% w_ۡXKyʥw0OX#.Elv2U_kV^9T>jDmyͭ%mMѷk(\9.Ni\A}n,.:s4Zla`sAy&6A#ƻ0syU+cp5xAj$6SI?noiw%j994¯˛-58q^,O4*HzU6Z[ B;Sԉߗ@̻켽%MyߎɎ/1I>=9#O*}~ ?ؼy%OioYϡ>'"DF󄖆?|E>zg|ݴo^$+2lrj+W$_8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              v"   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?܎'hV.M7ɼN_&8XxܛfĆ77񹰱!w&ߛxnl,H]ɼOߛx+6I 7ɼOߍ77񹰱!w&97d7' rox ąܛ'`Wroxn^ķɼOߗɼN76H0+7ɼNVl, MsroMr7&9asa`Wrox&Mr7Į'7&9YLK|oͅ]ɼNnMraA]ɼNnMqxX7ɼNVlxܛrb&97ͅ oxPxo͊'/x(]ɼNnMrbSffSάA;㲤%:퉫as\@Cf͒bCy!ٳfć`4- reeIj78cd Gyǿ5YhJC vcG}yV~FHcagbbn=ˈrFE/9ǩj3Y]\Uy ('a;d916}5ïoCtʕ52dS647\v^0ݏBnwkr27P+ i=e=;p}E_#ۖe1Zq\eJ?΋MSOVz}iwv<"(VHZ-~X3<z.awxN,bWs7i6Yf*I*<+3CՉcfpD ZMɰ!ٳf1!YxXٳa`CyLiٳfŠo6VlQM͛ vlٰ͕ )ٳbv^l_3fu?6 M}U|X9Lvr YbNؑlo,!XSJ`dz`D7o67~vd'Q#fͅ ćf͛$ĆeebCf͒ o6V^H1!yYxXٳd͛6ee mzD<?R~Cɟ~1'.m4_\0/͛6kl`Cd͛67+/bCf͒`Cy!Yfͅ;6lQNͅ76l(f͛Syf6lٱffi]+׸G! zk9v$A\2^!zb(1RhG4h9 IgqHؚ9qF͛6I f͛$Ćee$;/+6H76l͕1!yYA ZZ2Rj~I(Kp ͕S/9n PJ<_ܜ8'YM+zq%+\h+֛Øe#(Vڵݟ-'|e+a3KYzEPZ^!΢&}?HCbY(d'1Na"ZPj(&:~=A Brڔ5up׫6c25,&28. ?<ͅ:6=E:ׯ݆~,8r=N]ˣOMWxQ -ޣid?'5ݏqŧ˟ ŃN\/ESjċu8Q_QП{|+?ZF'G)q>~|?NVMi꣎CCC8ΜԚ-:$= p-kP{gaq T? ~Ke!K3\}7G f Z<n4 OZw=LoS 8H~yXqcou~VoU&n)X}6-͛.!r<7׿ jȏ{bJ\?2Ƒ-zTO!$w7CWas`CyyY!ٳa Ho6V^I͆ؐlٰ͕;6lXl6ćf͛ v^l6ᗛ/;6^lmiٳfKccZG3U$K=6`~{5\J8Ҕ`iݝ< 2ɦd4@Db2LVhRK<8!Ԍ&wLpd ' qm%DOrz 4(rٷ?l2P(ˎ)R㍞$FtuY*hGC^zNf%?Q[5ΊnDs2QA8ׄ%Tj:qܾwB]7!F4d'>Xa,10E{7;WYi-/DGSy8i2iw7Q\jR,4ކ:iŪ|̞րp=feE,*i;%dɉ@pF3p p#gB)uK46{gyKN< = PM{)r\G">M{)skl 1Y=Vا%Ȑ?k:ږzޏ|hl،w4l U?~.,yG x-Lt҇IpFʼnaL2mԥ4/D3Zhړ-U`Ӵ\>.k,g!}rpHd/<>4S_ԬV4'Di#6ޟ0W\CJ]]헡y;"ryp?G!};]7@^vAmڥˋPG":jfNdqԲ]{ѵb_33q+Kb~J._ծdǓWs^@7ضeg0QR#.%"$em[J88Yqm'\unx}=7ӳ<*mc ,[hH`V]?-ڡ95O|yVMѢҝY%U#t,3WŃS-8ǖ^?;9bS8'&[w+/4VCa$76l6ćf͛ )6^6leemimf͍.cc͂O{G cF CfTsҵ5仙$V;PPbY|CLEPrāǃZ]28bb]6l!XPc?H i2fUnm'jWMT^L%&!o5U?~ʏqT#<F^sv2σ6zyL:K8 1 1{Y$P@tr)̙JF̉"zlٲ`l !yY@!ٳd`Cy@!>yo߮@KC&iS6 r]5!ٳdl,o6V^bCyVćeflHo6lm lHv^Vl6Ć xm^V;E;/6^6xӳfjckN͛.fO͍]d#hIĝ鋪xԦ忹hnO kpdžPc4c)\1і1U6a6V%ss3~& u:٨q" T9S͛-AbEX Uw-whg>rPCJEP{)ocP5ʌ̹q!z ,Fݎj9B".@#P]/'oʏ)sqfOp_ _ "n5,E:27'+tg/@qy*Ak!yY``XcIh\ZŒB1,#>ee嶤7+/ !ٳflHo6lؐ1+0p鍢ʦ:ӲS/Zv^lmiySf֚͗Mӛ/>-4))L,H8"F555w 4FkFwQe -_j2a-ryrc'nqH^QX8<(nشvW'8lR2m0,_VEEXa(A$K"(`ieh#CzػY蝫b(I6fTnrU~xtz/} 1)|92*5 Y蟫b1.#-˸=Y~.D4;xa.uOs.jIfWf۳W7vd9cÔQH> Pc&iIjqC[r@ZjGO*R5@hcDG''2h΋PUhe WTY Y pQ`Ya,y4Fb"%Ǔ2cqLJtuY&2C ys#12_ej2d@4\\'&beWf͛6o6l !C01(clHv^a,ckMemiy^6xT͗Lm^lmiseӛZuԼG?RGO\4դ?m (PiٮTm# G"XbVpzmțO%wuCNTC$2@ xD$^rBHOAQ!QIlj+(5Vօ㫌Ǩ)l 4챕Up\KrR( cŎc|LΕ)1d Grȑk~X$e5Ng<E<so&v㏦~+ W֌8&6Gٻ#j@~m L u/DGrL8wFFTfCA@`ǻ_J/M݈q"#hc͌b q7qy,"(L 1918!B` \Mv핕R1sgٺ|@c)q9Nw.)ٕn\ Flr qNSdcfU-fˠFjw{Opyrx\9*2?č7ii(2Te64e3S/'p,$y8> Es儁1Io-.d2q+^ |HIo^^c"erX_7pU,J̑ҙϏ&QZc9@( %xM|~YQ4L@ $/me.,281=㆖b2Ǫ7j)RU;J*wŢ́ov?F*hb"z a ַq5V览ݏ 5cR{L FbHhA2# Aqȣ!c"7^O'}or%O5ov44eY5vȆ͒ P Xc4c`Cc28a$62P 6ć pؐᗘem/E:t͗;/6^+N͗cS6^*}9c͊i֎N߼c^˝6CPZS)N,acZ8s˿oe3.9x8 $ #S*dZ1^؋>S"mD ,s#$cnVpascphx8ghj)ˎV2covZ V fe :|?9cPrGRp}Uro=0%0Ę20YqIF][ ˣ+Xx}rj*㚸ϽQn^Ymd72,lc4cH5 m xƌpƛ졎mc6XlHle v6v^laSS/S/06^(eŠvl֗~ӛ7}9W׆v`?gHrrVLłQȒc 6hr@gQ#:en;15_NQL'R^z.: pG7h`4\xB?ǂQ"%q6ercv$ 0|D#%#ྐྵƁ\pԼfʮjf7QQ 0P%XĖ`~hؓ* eLJ0l1 1%b-131=n+X6h[ ե^ؚoRNܕ슝᳤vXN,r`<F3'%K7yk&>0DMۇʮ<9 JeRc9 ~ItA22ӹ2GdL}KrԹ%9۱z8b]FNqd5,q%_d'fP=Oq84fNH32mop28eX`Cc12L\11$.em졗Lm ֛͗c+/S/ )yE;6lPٰ.6osbЎ4?Qc:GqAks[ kvn U_=KSyic\)>IJbJr{{ūw!Q0i+|Dw zc a(jw1NhÒ;f#Rxw3&'t GrQ9\<2BN[zen;-plc4c,i1 Ӳev^U2Lx6lQMӛ/>V!zv{3s˭M1&.#&ee0ܥz.&,R6RqIhzL -bGr(sLA:N C؅-uʳĠSOBA]aqیu#ՂሯQDA.EǠ *ƀu'B$Ě0c"2 {e@'& M13$"+1pMjOߕN"^\cҜw<Ҍdxx COT;b"o~D3 M8LJ 8v88orp27m:!dK.(pvlM~ӨqZ'MƵ|ؚʍң1pe ~Ug$A23ˏW ~h!佱^5k1VlUٲb뎍LiSҤf2O[oD 12}N^g 7L]Lչ#kmB>#>d$"#/Fٱ4'Cij"PM<C0c~ j)[ 1۱A)/M>0'+k/81k'?ɓT5{ftSbjp[rn(QE**l220$ƨ*+pt I!qc3$n؟»ye )^%Yvݾ咜W:T.Lg"2LQ~wpvǚyg14ap}In%.m~ Dz~̗SGк  e2 ҁjoL1ת$OŧQa0qpJQ<1eW a*e#ꚭM0 NTռ=zȁ~%{E8 a#bNDTvMr#u*"v-k\11 e e´켬QMӛ/>P `Ve*Ǡ TH>sPf:7ڥ|7*Sxx$6NԠ8m  6ԩ)׷Pv8`<{@;x`Y-W>9(Ě>U$dI%GגF^ l7Z>dWm9+%P,9EtU<|mlA{k5{Hܱ۾r3u#HUHP׌YZhP7PĹ`5 ٖ8F?\#xU_ŴK5s7)|l(#jn;W8diEYJN PFRF~U,ƼZ|!~|_N^TH#G=։\ 3 '0y 2lHHQIX[#n#' PHO? W=)|2Ս0)|FɔM-3_*Y8# $;XP G!ZS_V84d.@)#g4;c@oC~l@ Hp(Idc-x`n4Bᗕ`[!YJ bSJKuՙ@ۏ.H Ąm3^ =bES_ XPm>-Bےc̡IF!;1$Añ:v[rlˌG_' Hhչ[$bڂ)p㹎$R)Oe8t0ƌ f͛/7Nl|NlV3Z'C2kcTTWY޿:fRֻ| Nf`#TJvC1DP;8ڋ;Sp|~XڨP'Ҏhu=*9`T!(cMj!G)%`fL)7=>sʱEPwĝJt丶ÃrJ*>Sю%$ө4Sᕻ6. eH`?HkJa()0),)MͰM t۝E<ZaRZmޝ{fxbb 9^v8ju8H lUK eq65ZfÅxuЪGlQK @ߗ¿e"6Rq9+v=R4<6E)QZ6$ ~4jS6.&J /tqb;(A*> +֐5#fh7X"#s2!ARm?;@r֫ oLm*ElU}9W_~͊ŸOPPBO?f_@;PQXS3bUeTC߯?¯izu8>f/h"SHd5}Q3fHy3f/q 043f‡P0j?G6='1~9r͑t?Uv=dž:g3e)}QA?{</#?l*|usC {=ٱC0=9ء>gsaWendstream endobj 87 0 obj << /D [85 0 R /XYZ 81 757.935 null] >> endobj 88 0 obj << /D [85 0 R /XYZ 266.53 198.579 null] >> endobj 84 0 obj << /Font << /F27 49 0 R /F15 26 0 R >> /XObject << /Im3 74 0 R /Im4 75 0 R /Im5 76 0 R /Im6 77 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 92 0 obj << /Length 1577 /Filter /FlateDecode >> stream xڅn6-2`sEzEn^Eۃb)dr;R)A<9/D|D0 g?Pq5XA0[(oWWt"l#%UiRzE3_8oLEHcؤ!?,K/FлefʵL"SG2k6﹬b:΋ƴ| @(v[0a;RdPָv buk~^ꖅ.zG'fxrb(bָ8VZT0چpISEux/wZD*,xE5$fOBȚRB< 2OBE  W_i}1Si / l٘/ek$yđI`y|ߍ,~o'Y2ab&$H UT0M2/pʱ`TC~&K1D"7e9W '"ՙ_oK.ޭM,!"1*`Ua,Dni)?'0N< GsvfXbMvbԩ}ځ](ztZPsi}0.R=e_Bؽj#?z=|]c!ƅqs $ޡ=P^CA0"rP#HTv,}m Ӝ #]C:7#Wd-6܋rv\MƆp ݜGݏ U\f$5]˯.@H:qs<& qn؏e|(~Y%k0$̝-(W"l,Y5ZDD+?VcA 8aE*p &4"us(r1nvMmv|;(2,k~Fp`lyѯl܍BY/ ]9ЫFǣ}? }kZmjoԉq.s4"}#jh:b KcRIxݺٹ+\:DM8=wM> endobj 93 0 obj << /D [91 0 R /XYZ 81 757.935 null] >> endobj 94 0 obj << /D [91 0 R /XYZ 81 733.028 null] >> endobj 95 0 obj << /D [91 0 R /XYZ 81 497.083 null] >> endobj 96 0 obj << /D [91 0 R /XYZ 81 233.518 null] >> endobj 90 0 obj << /Font << /F19 22 0 R /F15 26 0 R /F35 69 0 R /F22 34 0 R /F25 38 0 R /F26 41 0 R >> /ProcSet [ /PDF /Text ] >> endobj 99 0 obj << /Length 1762 /Filter /FlateDecode >> stream x͚]o6+t)5o.M$]۵mz:jն\i% 4P>HCC 2ȴrM=ԥ,_{GC3R?\]@)pd4~u42&8%Ժ;[@]x+G2֩VO ,QkH*U%RVɾe#es,Skw$Sxa`S|t9i{oJ45 ɖ0`&INMM%k}UZ8󿄎?}f%L',ܻpT_n{ hZ~h T.tB+e={ɵ70`2ߺvjsxyU%Ăʘb8<|DkG &{蹁faŤgQ!=7( gu=S-ןan;`p2n$_`8hYW1֭st\;ޔbf_!+"R DD'dDe*J^qP2wۇw}#QOs(z ]Z"lZ:RźZP'ZKr8i"(' ո2\y\_ c8ʨQZ.hiv^UY Je"\niGʠE訛MlDsQbG5.^Daa0 CX\\4dCW >(_`E׺>h %)vρxݮZ#QL"0Z0ܰq„?aLKd贜`\|fu M1NhỐqHcqcu(>!ȱ =Nb[VԈ#{[U=c\,ƢZDP{/d> b0bB8Bi,ҥSLCYWn|qSc[sw3*I;sK1ܖTœC &xF؇'QIqo߹r>8ܟ< ޥfG`1zܼޖx;߽Jl ;sIgrUD@~u0^>PBux2dQ<xq.>mam"x_HѴPPH^yR 8e]To񐹿vfI AXr[dSL6;CLAKJZ(M[:]MCe/?2f(x H]R!>[($jF׮˙Hm0¥u9DHWc8-V.z~onC$ɗ3/ b],%+J}~.|!'wj>G~{\+"f)I&vf~r-δZi>f)> endobj 89 0 obj << /Type /XObject /Subtype /Image /Width 700 /Height 527 /BitsPerComponent 8 /Length 50397 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDucky<&Adobed 0f<n        0!@P1`A"2pB#3$!1AQaq"2 0@P`B#Rb3CrS!1` PapA@q"0Q2!1A Qa0q@P`p @W 4U]ekyȰ*4]&fi5r!2F2Re"I29n"EIҸY@-B0QKoo-$ι"jԀFJCe.˴,JM\crج@!!H"QP29@4]ejygsfPeˤ).w9Xj +-K*"ĈDٝfqkF[ѝtMi(EMR˴K)/:GkVMMl;2 B#=g+˼ޒks]%]PFVcso.R/TNu5 asJ6y=W_2y\!"ȳHV(YI2AI 7QYF79Y!LDi-gd&Vqr55՝o5R͒2"l [^~9xsJ"TgfW8\őfhBkIti&*\@B*]&I]z3+ӟY5yH;2$K5Mn$ hBeIh,&W8% `Ies"L,E.k5E-J&vro6Y$C5iˬnZT1љveb i}yTE85K KViKȲ`MJV 5(\`2X˖,X ui.*[l!<[$ *Y 3;E .ylEKfZ5(()vάFvse$&vJR-rҤ̮Zw3`e`Rk9\WMtgt1gr˔5^tBI6k5efMuMo4kr@:b qJ% r.UfVBg` |yy.w82$ecs(grNmc fSIV\mhBL V@%ˤY,ivE4]jlβL2eB)lrn!2qVEBt}9Nwd&W*]%*YX9]sB&3fRkL nt]^%DYrٕ ][˕YEcQ %qjs\ro$I{qׯ;i$ٝZ̥*@j,.ma$YC4sU-g.$Yso=K/T֒6IBjJ,藯;,+ferj;Fu6'=& w3ciz&3&VMrdX 1b$P 3)YF&usɬf&Z6g`՝R5uku\{SItTgfW)$Af]9ˬ=U$.yz3hm~}3tJA"fԺ˼9nQkFuKP W 5k:TEW=6($AZ՝9k5KkB9xϞ+&C*VPKk _+4 %4bDKJ-W9`3I%m(!.ܡsϨ#14+iw蚹b{,)"4UrXi(ƒ>BgfgziܻjvW`Ys6 v]"k5. Z^|syFTsˬHENw5V\ٝIkF71f@9XI&M3H̬1>1e5җW0+4yC;;(kizssRl E:f̌^k+85=aImuMvg}efvfj-t Lnyw-s i؂\5lCnCFQRkek`o.k\g}X)6VẸK&V(@a515ξ{W9ٕfԥk.մE Mc|&γN&ZRkz͵uZ]UFVari dE+&:@jKwǚ:vkWNHh.[].Ϭ"1R5]TT8zV1ӂ `2K6[jKlŮiJH[9O:^y|<}sX @1f9;4|&V+*[[+}bkiluP̮pdEH  ( uLSZ˕،c6UD*\̚Aæ2.}}DV1 ePH i̮y5<c@j aLcK:]#EF6B0(FIqc|H1w'c-7jV'6qRR-KdRA"Vc1 mM+-KePTR5/"Ȁ+DL`I]tnZf,Zɍ.o+(co5Rcm.mfT@dG`kgo5neЄbk-=-1ied\f˚gd$Vh ]% }`0 Xꤳz(kΘ+(pP71XFuq DE ahjXĊΪ^ރu\Kaf6# F.Ϡ11cEuV,V+0Vhy}+ c#B΢jlv˞=V3AE-Fus|1C(eoC Dk<ʹI ΊnC5q:`1  $Ԋ e[ۧNƱK9ϝ'^0 EA`5!Y'0_+W/xqnn럴U7XeCBJ*@D.v $;sYXێ0 1 EYTIo/L_f|wΜ[Own11g.DEU5+IP%Er2 nPl *e ePʂ %sgW kΪqݤԀ h$8iԭɥXJ#0II ʐo@ a(1XA@MR#^vôDtrfT"jH 6ۡqr\"ndKK̸t`W#ɀc HcRI%Ixӛ.BC͚ @GGYeɬwg:HH*EDQr2DHn!p8pԆÑÇ+gR" "۝"DF"$B% %dU ;L;f   pQha'9N zw&CnV6ˤ@A$ $U+IQ"P3:"٩P!1p&8y9NB1 9ff̰4@L#Bjͳ7J#25#CcJpP)j{<=f#.ӆxYBrT4B dh.uPtzuy}rQ:I6 TZT&_A@ `(yT' -VU:Tg2yDY#;HrM"URCW/o>5xrќ:Y4Ȃ> V TV!ÑpUjjUh0sOaR<'ԒDUC-"Pi@ ۧ?i^foٔ9&+WRZ ZJC`jC\j0ǕsFuN"EPTTi=y>%9Iri IPu>pAiJժjUE @0aOO<Ĭ#;AP!EJiHC/=GR%8\i%%$ .HXRZ@ `@j'#~Osraz4VT_?ܝpϷ͛h   .Em6x0 no^ izy<Gg7S0&\V:u5b5Ft2N 4SSgž?.~)Pyy@.4Em{ߝ][pyVcIw7$ %9{"3E)3B-]k%  3_ bE?+zs}>o~QûΧ|`T\tbmo׹P'c .1Dʦ;;5J3g}ZrZ &5_(^mw~]c $ $Mñ<_f BC\vȓqtB1}Ƅ"Ebx lI$n$I$'ED I$lll$K|eV$m6]AtUbt|HZ)$I<#ͯ=$,nehl45H< `H\n7'I u臈xt#IXAd+CpI:"6m6F@ֈt3q$ٸP ! !:xc6i"E+V,F5ZA&N;#ЪkYJ7 ꘈF7uIQc-VUVdh,6;R!ḯ:Զ$[܊ [mCGB&FV6CZ2n7a\VіRս7ěĊȶDZ"DʋXfI$zY5[wD,Y"u:`Y:iTBCZ$vlbB*I;mHndaٛ)Q!#:w/ ^B;J 6FL@6E"ZGQ-;qԄ(%Φ1b;Gh,ʃ`n7%cOŐ$LP:xƚ;"vf6NU26IjU1T#+u%X;Yvٱ$Ho; q ѝ,m6MOm EĢ*&obvhLBY $e'Slq*mKTl!D)?;"Hl6 CVi+)]xn#a|hild2YMؙPn>KPkY7餳y;r#z7SeMe| k]3,B6׃r7 c q,b_ B^T/+&1ԍ*d2-BbSh񝳶͏]WLhkH obŘBKAH kDʶU+":q7RPfb;Ai$ɹ&Yw,gtHӷV[erA\dB LVz~#N(شm/Ecgm;y0,uW17N){VĎpYlw-Q:O6EmwdaeBtޚuI$tgݸ5_m)m_5ˏgʂ*Bӯ5TvDHz}t[mcIk:;Bֵ*I$ns&pNm6 I7ĒImf*I$I$OI$$cH]DdI4IĒNwvnI$I$I$kn%Ui$<$૫I$IM} I$I$I< ^*+^mUvU.SmOe| bd~s+'AHFGerώ 9RO2d?xdMmG&SoHvxkEIZˇe9{^=^iI"$G uw2m6YG iԇGI$I$I$$OWdYحksV¸Sj;glvN"BW2I$I$I$I$I$'$:.C#t:ADaXYøo+uI$$I$I$I$I$I$y#dAO2EbI7M'e6q$I$I$:}Ȅ~'~'~'2FWt#}vI$Op@A>i蓾LtT)+؟!'ȘdLMih}lײ]Yk6|.G{XlQ7Xcu7Xb_'"ר}iڻ_EYu->ލ|\kCt*ƺG+m}?Zk?XHl5kV[SԡlX,Ue¬Z 襌| 6}/zut G]yY&2 #Hu~Y>F&(\&y1iAWNō*mI䢅̦- G ==/!|77o-z\b\}s)pUR4.zvSk.6m>cϥF #?}mN7ۛ[ Xլ(y^v|ʟR+[G/Ⱦz_f|ǭjG/h+noMȻzWo"1ٮuKkyYw[YHEғ?WY1mNjQaTNʙkjeYɦdnOj_g_ϪWiWlbuW˛ KnX:βLRCm,ut&3qSLݪeuŇ LdjǟVj%Ddodqꨩڴnx{3eZd\xQUf/צK6/'};9W;NCu][:׳= |eqpɛ3%+be\z[6/h!A d2   1)|2 # .A{4zf&[I$OǶǥۣ#HւI$_~*}.{q[X6A2I'7 ~Œ-'< Nͳgͣȃi4=&]vKcV;hW gr'E6S+Tg?5_8 ŕ8Y,WehGnj/EzVJ/A4C5Ydi Gu>E9q9PA#gF1^S`9PG!it@LG21'AƝEm S ^ 9q3celNgMb#AG2=s>udȔilJ4 lzuhjU"WAMim6Mi>>=_)x=mgݤ_.ܝ$`> cYPA@<#$맆~}##8d# J# A>$I$XG>xyʟI qk$O&AAMI$ʂ*>y0GY i+/kI$}|/TorI>Iu;/kJ[⫯ߕ$n {jaO&GѾL։7t:0]Vm6:^LuUŠEOާI$G flॠYi-G=̟d/2Q!I?E_?n 8ujqLJUi^s_gH䵢 ׷[*3xU_esgzUͲI'w:W /Xvɇi_ɲ׮+#5vSj[zv=wl[#ciLch[>,{lju%<V<|f]7 IL[G>湯oO ,$$NI$$NI$I:I:::$I$I$I$I$I$I$I$$I$O?[a8VFhg-L/Y "i RxAv"B@M ӑ"D`9Z{DX%_ d:N AQ趋mK4^kU&֋ CуՃ_?.A) yAN1Z۾#4IqOpŬ@T4Z`*ʇ xns;[z~3E {/e5=hʐ{!-s ,AN &DlL*tQ?Hh>TNC2C /0re0/?)駕e5.rC=CnyYO!m~eĢnIʧnqhU4 !`Ɏ^K' KȵMґ)$;yy&8mH>^˰2풧 SgFG|+Ӊd[)WhDA{yD|CWt֑HS^M1D{~SJcF[ק߷_DNc~D{vӭXϪR Z=b$ztH*jꨬfx+ѽ=见*nD*+ I 8Q%̤ILKtB>'LٛZ6%XanAi;=}4Sc VOFHXa]_zi/S6&{FNS҇P׮$ 2>G4\r8-&)&U](ZbH݂&kPI}Uؒ D{cwH+2'yFC 7gf `FqBgi:{cQ::Fb~:bg!X̨?%^>0uk3 3f*ST<EծBdmkb^#o a Wc1c`''htA C$*cf )- 31gQmz:%gέ-k\ZG8̌bu qD_f -n=ǿvaemsй |qq9Z6s LP;@ƌ4Sk>mmmf I%Jx#=̶hㄪ\gqۀlq;J`6Ŗlerc3Tq9&yֈ7&za*E7 6VPl@P ZU'L- gtܒCyAk[+LVoٺ쵯x9LrewnlSH:RM)QP.9 XҘ&vE[76n1!}\)mF&Ja\Ja!z;C);?!)YYYXDFDҌzLPŗ60Q1h&"iF˫W"V]'0lVVR=>a Yu\(TQhAbDˢzPZ]D15lmiMF3 ԘYFBjэkBA11=VBzE1 At?\ | p6]nZ% ҄v63J3$21j2R4$Mэ@/&C)G'Ft,|r)2$ec9 ]w(z5i΢! tClllaf-Y<2(mOE+Z [b ke,BEp$ #!&6l=F?BoUaAKA ;hm1$=4EF;j"iEE BEi&d6z &lwKXKܴΓ""H ]i8$j5ubRԓܳycgu?g1kT5J=zto P%0m ΔtB!BM H&w}-,螛F$eǦo5CsLR] s遗-4'hPkD%LK|Q x(fQcDjr-tص! ΍h`N@6+y,7ZMlz¤QO pCz4V&ŢքPPBJf6TssZ~CAjWMC'= Z!al@-Cdez$407 zM Cj A6PLr-zFRB !gDcBLHmSad5ib(!(A™}+A=J@!CP QXDibd ho&36(vmTP&wwӘ$A܈4. XbĊ /M$$T4Atm$+ђK"-=&1_aq^AiBd+PЋEQLa#4?rҘPN4&7A4G&*CMmdPDLȏL ox`V^ C&R1#/ƚ&@#Fbal?sU  -oPo${ALS] jzO1p>$=;_m6@ sɤV$0.ӰcomɱroAFܤ%J:)$D-nn̈&IZ1.ƣݡw r.&K1:8ݑ)) $dCƄԯMh)DJ]bC7_~Md]n j-֔ >mGQ1 l̨װ$+9;0wԖcȁ *  w{ 9Vck04(K M &U@q;f%)K(q\q:x :13 h(!v4v7[ŶIܩrbVd\^vku)Db490Y/B؝75E4-?ltضlRf~€%NA !% R'cúu!ċg ߏy s1!>-`MΆhiDs. [2dUo=.<4J^̷pl$GH/xZF2lx}jQzgR#w{' :Ex06Rޚ&e fDIǑJĶCxD:!;0Gfm ͻb8mlP! <62qSp {7ςaZ& 忣/[]7>v+xzmE2l aނǁZ!9&1)O4`]*)H6[[}#I_qfRpݲDv~߈v~GքDBe =0iwOٜ awNgI6M~ f..#MM UE4o3Hyq;e=+RB~GL[q-G"i1KqJK'iюY.G.0^lС OΪw?&  l)2'$st_^_-O'->Ãбf ;[+# Gz#1+c3Z&@E9tlA#Ft%'lbr&.ϝSvRlұޔ(: [1߁9<˘/c"`߁n+w9iJ] D)z.rcd"ȿ'&?ػ!,U07=M͛VذJ-<)te)K he.;bٛ?pKogC׺RRXla#pɵ3f\B7z]-xKIպ.n:&1"&RgFҞjmцYe)J (z@JR)JR)}P@cD^ƫai/JMce)OA1sB_ɏԞkQi?0m^_Cz,Mcɪ&93xz)KR)JR)JS%+ڲ`mفelelQH o|cxȟqOuhZXa.461sA!NRuԣ/AB 76]< bLjR3%J!'>贆|w\'v>qī2YoLͷ<"-s^y*k+ N\Y=&)tm-d`go(l/?Tg' MEx6UgwwM,Vʏ#JMfwxqmݿްgGzP KTݢҥ)JR)Kms+kub裓47`0e cT+oK9hW^E+83oܣJD'Mw 1&`߁| = = {6c& )Ű)J^R)])J] R q& _\pLr̒̊lOD?Odbf!  "k0yԯtC;G@P<)KJQhRj"{:8NN .i_aGɁ{Z66ZDQ,Fc e7|?#_^Ait4j!#(بǰ`mrv_K<Ώ)[r`}>v%&\K{Y҉G)Fv#WyueaDdzrDŽm9w&6Gmj>)SO[i\n{edv|K DdV wcФe,.mPSDž Qiw1 cm"c~{mlanU*mX$[B_5Xi+GpMaiK!r.j&LH? >vm}CԱ4֐ X?QS7Xe,ߓsF֝௞o./g[e 1̽uD>ŻnpbY9W(M10%9[nDX6p"9h7mDN4vk-%(J]ZdOO7 XmѺCwaし0 %pQz>ݿ/ArwF MlYEEڙL\ ÌmIi&{^&R)J] izW_c &Yf^9IYMyOB 'xHkGǶ=#tcʦhiFcq=n6yoե)tan44v٣t#=Ba&Y$(pRuY8pWa vKeؔIҤ}2χM)OG)+`vɰb%i8`Hv:p䙲3fU6HzaAC7a2Y >n۬/j-JO^੻{ٌ>v6G_+7nԤ&?#N ^{|DEõ,bs%7l)+EʦM'iMZ]B"w(+TwJnlXDx8e+ۺ\-lW)2R͡=7e2GO; Bˏ :Ҫ $,"a;OK4鿸oxG򏲢++/=}_m^>Q^>Q^>QKMI>{b/,Da–›yj0WLm"KMtXxX3l&m?uB+= `C 3tDȩ7-pGu`&*,H,q[LvI#ٰPHW ^hOŚVDrmOQ*N{-ؾYS^>Q^>Q_m^>Q_m^>Q_m^>Q^>Q_m^>Q_m^>Q_m_mTGTG?~(h((((>QTWGQ^>Q^>Q_?!*_ J_Jm)J^B}QwLoҹ߁4܅IE e)zO\'JRեiez S{~SKpIQcmǕE$X_KtB뢂_N)JR! )JRAKE)t)@3J^uR=i)K.o/U!/XBk =Z_zB}t! O՚Ҕ~~JRtRM)~ҥt)J^RnҝINOҔ/ / )K=N! t?Z)u! !: iu@'OB)~}9.QI=oL!$BtJ_]a=FK/H]/R7BjM!5RFE~S[җtuP%<~ %pХ)KssIw҆3ZV.+ ziJR\h'j16q#M(!Ny[j~4ތxܹf7vD&JO蔁m!?EkM[dMJ \]^_V _rT!O/~NWXNJ^N_PRJ[ !~[';t߮hB!BwbEjݞS32x#rȓfR3A)# JTw+{ۗɥ)KR^OF!5Zh} P=GT>v䃉m~pްR@!>BCCN,~?O,NP+BP(45ߠ\'L!=P1ɓ&L =!>ckUFۡQ} ^M 9DjFRFa}mRJ3 KRհ1^z/__ r]}җf~FGcLa/})ڇ !  d,[}!B=H]"!:(>CG'6E^ܔ[4{:Ywv96୷{v(aB$!BI&@!)hf6ݝmds>:(o6??}!n6!MHsk8&h);43S}?-L{hgXB BVlBIп^IfCfЗ/7$87. =JsI(h!Bhh'Qca7Z./#Us_簉c։!N l}k7 [}#ox$}f!B& t3k1 ˹qwyo .b!ӎ_F&!B!0(}dk>g>]y߹)LaA*9%:!B!Ba =?MQcg82 m iiߒ4aV_%"o1^(N<4!a!=?轏^|,.MG biqx0Ԏw }6V mrvp~7K4!aЃZa ! ! ! !49~H(OX{Z{m{}yv6O&\#;Ol+6"2!B!B!Ba~P(>Q|Ex_^>WWx_~>W__?!K?~SDi4zt 2ߨBjBuRBzVKYZ-^;BhuLF4pN':&_o~KwBzoCC_C:wM۱IBW/N^]}vLc)Є! O)uQZJRtOHBBD}hLzRaN^(^kK:it!:4hbu! :K}:]/T!=$.e/ K&ItRW!u]it ]3n.=)t&]! BiGzV.J])KA.K:)u' ! )Kֺ)thHN/U/4MSkMwV>M/Jպ&/HWНp!4Buβ!BiB u:(ziJRMJ )}4BzT$&0ROF>OA~hSD>I=Z/D&)KzǪ֗T'h)u!4k ЉI/Cc&!BgBi} )4hbKҠ[ 9֗tR: %4^!=8B=Biz{ҔBo\z'M&'U)utMiK(R5K&~:&%~B*н萚/XXw^3wDDzǼCR~O}K/KK7TlmR(NJ^K_H;$(B}M)J_jYiM>)~T]>/JR)JRot/J_EHMOȚ4 pakJRT~2IJR_P! +Vdɓ&D)Η'3Bb!NB! >36d2??COz~g~g~G*[ [Jlߧ:&Ҕ)J_ZOi ,yL.H|laU9x,2 cj/P@o?i Tj 0do $Kdf }F2z/~4QgLE)rr>_Nr?8{W'!x'wM {ߧ 6=qy-^DN=-U/U)M)3[l$s;7nP5G={谷D#M}o;OU)Fσv݊]&7Dr7`jB+nu]ojƝD/YiJ'MlEu?OtII/Eˡ ?7- /Sҥ&W^!zBZʈ)KR? &e5ZE⪿8_p E_8ef@ F ߃'Įx<׭[,ՋA -`B]Wիs$fw`9pn+jѢ.z8ֽɦ< 6)$ژ0Ygv# j(a!@ v뛷CbU+OC ]޹" J_$`W>|MdeJ}[ָpIdcvCv}0<: 7TVl )iF)$'bڨ`_cT_D X8oRlՆ ?h$J4\)L&o$ &b2p{(3qpr^,Z3)oMR TV7zG$@Gk핼b''[)'WG?0 I$Zґ\{[$n-A4M$ȗ5I-aκ̑o($w=69Ox  F?[}>N f$QFGh0o=}4F^?n~c>}@[G%c71ݢ!!=_S9&gܤRT o>eD~s.$j'[+쵞HSLh6K?c%r_0ad6h Bf'n4ҷ}hn S+d %{rZT/i -+vܻS|"c ؇J轾M{Oлxq?lWV3 o]rKiGuQ3R{.MIHI+f ;u乼ۘݜwid8('[T6I\Mp Hn^p[jN$Y7+Ak&̀_Ғ$f_IzmhO8M%RI; Y$rclym2쬉DD -꾕vo0 dC: $fyJI|$߶ߴ չp(L c__>Y$۶A xdThQ $$卶ݴW.H!9eT}) 6H &rʹ rm"Mu[iIH@$$4ۇ!z[mm4OlM6@&'R!ɹK[Mk$dmH Fc +OMK,4I}hlp ",۸/K KqYcnwpOq3$ n-= 8, ;DFiGB5B )FoA1B!؍ 4#51lM t^Й6\iz'2/džcgc!PŤL,jq9aHL$h0@bcFr!D {:-4=llz>(o!I#k哸,i[&˄ZEJpXi"$UNR݊XdT7C4'cTnFwa1PiCԙ*֠Fllc==cI17uJȓu7ُZkoqFdLeT,1#M!{3snxdos ʃma$6U}*y]ŻovvDr=!.<̊(šCE3 HރQoX1c1ǫkЌ<*oA B(UgKU/|&ǙK?%ht'd'Fl,=7!j!AZ1 o7NTEފmd3}&3R$Pn(G%rV[j{od34$cr*E5&4Mnِ]Z1db!t"0X?ɜK/a|h~M#>38)I}4eIY0|Ln H£H_6 $ncLSAâw:- Мb(c$B%mؠʈa%#8&ŝ?ܦ~$rTօQ<_ v-W!=1SmTw7 5C 6)1BH+J,E&^!$s(O+r̆JLF Ѷǣ1- [ e @lllloTTE*Y{m~AǷșl$V n؇?bq&!1 YC0iA͆Ɗ\D&j{?HeE?#LO$T"Z eZƛÆ!KM(c6$͐lllllCnGI: ['Wa ;bFc&ME ({%]w"9gv7˂"hMϜA-+},D;=#M2;mв /-+݈0p \>|ɔ&! 8pN"Bxupe9 M=VBX ,txU1ne [ݎd62l666'H%n[ HIq<鑭s$=_x51nɹɏ"g+<1ˑ|݊X mj2[*F䆮O m6_Isgt3 &oooQK7qfj]ЄMn&&6EbQ $]*6oF!!ؤŒa5hFŸO!d`T4nx1JPl2g}On;vt6lYo;F8G/K(70!2/S ƒJ/c!qFck'arZh)/e|肆ěx2QJC(L;N&/"yEK Q bLO[TT*p1Njkl sT\F^_ț~:ؼۢ=-{Ջ`)<*cS*(Wr Q1"6f;ldVWc"h8$ف#(y)r6ȓ`sD8%.o{A)ccccbMZAh瓴7AЦT2|;ЏMofʉMkܱOr"DqFw%c`ec١E!ѹ+cbd)tvXn$|2G/ uV^#KnS9j/9O8'zQ[  (GHR9bNl[Ɔ֋:*IĆKɜ΂XBق9H`"gjq6$6Ae/aĄ|o{bN;Kg9Q1GjuM)tٍjn'Z1$FMoc Ibm)e6P4ي%lW񛻨O-дZ|eDIaFMeؓ(bJFOqɰXk Ӄ썛ˌ3܉sXJ+Bl)24! -)Fȕ,oq(/5v|7"kdI~ :`ZKn1Wl D1q3}t y>辷%qi+̬E|گ c7*8e=}%rlo(*Ԛb5lԄ7#O͍Qsq7([D☮ۖ-)*7bAو Dx9'Sd6,~^( Whl?؈2w3{ ֻ[?Èjdsc—;y{Ah!bH٧cQ% 2[a ;I> ; َqb5  `*ëq!`LXA`CxUV %rXyc`ҜfHilwρZ[ȷY?a1"VՐ=f7rҢnnҮp>C63; }'ZXmLca&'vb2 D뛻u<ἧ7DhN)1t"d^Oo~ Z\myA ۝ف)\\S c!\*&6w6AȆm/l&QwCfʴo/r&RJQ111h##c=TŢO:` xb{x6iA~kC6:{#nC?LH,S#TͿd=bbbbz [e𫰄8UM1Y^Oԋyo1G xS9SH}4vY{!Q5An̷C4b͛R& yo/q11L)Kbb1QwD*s}!Ȑt(xdHнl|ު;CGc^kwo[wBb~.}nv~v=&>?r(lR}EXk}6&Qe(iO%>vbcE~qidޚ"h=!<:F~呢2 RF 9_ݗ9/ {R)J&&&6ԼO(dݐU7lM[Y6oEcL7DjYisMQABNlllvf(6.&] RD/s%7BMjM/)參{)?|D N˦Sdkfx1Ӹܦb//O ?fmF/~y{)t(6dW/#'i 'Z}ȓy';uc-+dsn RAddwT3Me8n>p`Q]& RM ;aSaI^ŵk|<3j&2mn}͟'.C]ɬg FPٜ Φ uyyADڻ`o/q)JRbbbM<ø3ݎN!V ^̔FB-I)<\ۂWjJ#gFQsn<:~6\b%N9H蕔bezV&Ն3@ab}*NZE?d7g(~'iS.W&%[II8vəa4ow?mE)DRAHРØBa -iany| 匶]]| Ivړ p4;&ERѻcݥCl1Gyȇrr$o9.On^F.QBlloT L1B֥+/Ql,+Fה8ڧ+?752첑W0or)JRLA1r%y64{{Npm%J8ma1P 6Ÿq(~Gmov*b.o; bұS=U,kx_w]LL .F x7r$Ua{Ter9'}$ii/?ЊI%ƺ' E=K:FǦXY2FHuS ì%wlnZ7^[8)@}ffhll*K /74)7)/w#[CSɊn2ۗ'fF\ao}C<9{A?b&o nCcYQH@-DK,˸hm66nc+;2ٱVl8H;NQ4(eБ3ce(R,-,7|2vG6aySR N Af"z2lqB'y2*%^BA']()JQ}qZ%';60[(I6CccbDƙS[Zg¤K~CkA6N#ر\$ai;Eyb& ]ca6nzWYёL'&DuG&M& m&tNvqk[Ow~}cQǕ /I)Y>?L]hߎAi _Md lݷ[ѽƋ۰[M~ 1?%!fM I/4 1E) ?#ߨ2&N& QN'a7J)$P{E+wGf{ uo7V7t0ŕ=,2ȓʗ]J60ǥ(lc:¼`I3LRnXg0dn Ji=! 45a',BLW/q QA *)t(At4z\:BH<c13W'd&׿_a_pkl!#5[$[BZrx"0g  }osABtdKD!!HN4lr0% t^֩w&66BYɁ'C_`qE{zqKGj 3ni I;r3L*El ڱ#Mecq%Hm +EȇwK(Y1bp/cy#Uc06%5:$j1wKo-QNG9c75 I%oՐMcc^MRͶ6Bs9q36Z̝-+` ["AVMe}F< XBiQ'B BFXeYc'el-uXMTV'N3p>]xq'fHLe4M\)[`V[6qD{ [ \/GpM,MS䚶9S}م.L R]U5E%FC&袭KZ&5V墘!H̪5PL$OыaSI~ۄ' 9FC_qembQ{F)Q FYzQE',Vd6 bPFer]jM&'pLy9vxJ¥^Xfe3[ S.nGJna;CdxCwmB[>~?[K?LD ^£=s>nsYn${ kyeႪ'j{X1-FWt,0 (Բܢ/EAe)Kj{d{Xa,,Oa,mچʯ-Df\FTzHgNKM6F}:m>V56{FعK)Gይ3;$L. Ʊq(jUl#P{ʵ8!/irLm83'j'!/d{Ya JR)JRJ&&%FB ۑd9[߸n-#v3VSF+H{s¬jװ־f:ƷpU%&Hs۳̷aHdF QCJ%"y|td{-+)JR)JR)JR( "1A= ߰$ϿYi hEE('ɒ˞!Qya|J+7,)aI 7/+cf ɆRCp:4118+ 4ʬV7ÜtH\"O&LwSȕ'4oqyx2g3a)JR)JR)JR)JR2gOq/ac6 WIl܄ݙqبJr4IלoI'ތ) ^Z'ˊL)IqYh`3O{_r=amr"SU&.^Ip/.a1cnKTQemq4lB$Ղ]DyYJR)JR)DR)JRnmEl[!xぉn.ؓn8+WD|l4R# 7e a31:$s2H?#?5͵k)uBb$ܙڒU[&7hEU{,!!8M7֔)t/R)rK#9fXς.4)JR)D̮vwmj]rm?eؖK.gbEhJUp#"SCuNosqP C1%r\w~+aXFX{͞SN sܺRR)JRjՁ)JҔ)JR 4E#oh3/Shhş{AM O+%D8wWc ty23{*Gϓ+'Rm'ŽśKpZ_N3卶hWq7teyĈdݔ)JR)JQBDR)JRwĶc{FѴѪmg-r\37YX0 `E6m&4ƈ#MUW#=Tm}qy݁r.ے)oLrCw4m+"_/Mo{n)J].R)JR)K)E !@Bk#"lԣM~Lbm{WA5c76v]I7ԝs5&'jH&X):cF睋7=˭)^Q$2bCr4]).)J/ZMOB z fi"]OA +R'airyOID.kA9랥aeǸYa]8umFxl]it.Q\<\ ISثs`Oe( bgFIp]ГIcMqpD2շM~6RV£R㉤2PA 3d&!>ƓQb.!)T'/Vy+)Kp,a)Vʴlr0rn.0NL2׿?gnZD*R|&1)pTPrXrx#pl k7z6,)bt&QAJ?(L7I4|<)Y wzv3$ ca+cmkSmޜK$4wή6yXkXk(x*&Q=1lrwC/E3)K+(lEqX{D!xVṌn39YlY+p͛|q1KܽK&ʥT+7Y3RcةٱV92Hø%;d'ViEKMm)i͡pJ,jSKc(mmҍn-,(A KEXA瓻ҞQO++ y(l͂"i'in&5gh# DmlTΉ JRn0Kܺ )JQ2kj uoFV/Vpmrd{u{Z_rJSm&7Ycl 7M`j 9YUEXFܼ&SCHB=<v(2nURGrZ XNl]ꍖ2UZ5Ym2ҷ ز(eΗB |+7=!4C~  4:qͭ}#~Sl44vǑ" C)KXs9z|Z~OmTlK)D72ͷy 径ʤxtnk79iS&tI'$nQ4F'W1RM0n=awD[qqE!AHؑ,-7UŤۭ^(L*%)Qy7t\DAޥ !q6G(ikfS` Y7JX3e҉u:ȸ̽ŇX{OCIPH.b4OL omILXP>CFe"{(*xq n>{NxJqwn=7^[m[{ƿp=^dxF7˹ݽ J3"Wej TMnAM8W[SjŔd(d&%퐖62 H{CjmgT#O`{2JI%uj%]])ciX"E/?rD|wҼjkTu8n)pQZ2yϕ'O1h4\J᪙$gL|-LBV8M)#g{`Ξh3.Rp`k1+L8ͯKs}ND3? }+ƭHAz{o>4&G lmMy}“ 6ROz"wҲDhe>5xnSUHq7rb3>$؏|\ױ]Y{||i{ .])d^%]fvE|la*6Jgd#Dڤl*V.X;DȚ)OyUGt#͛n[)K躔HKll} U]BB}M KқKw DzDF(J1>=TҔc0kOJ&Rt!2QBOI]X֐! z1 BkJ t!5Bz EnkCZ1 ==PAi4!AJQ2]B(%D>(ђ%haS)u Z&Qu66Rz.B$d B ]z.QmB4dˢ!MfE TLHBB cc(Z44M)J-ա֔0! [i ֠D=izDAzҔu. X%5 $B"!$Bllo5D&RFBO/ '[($!:Ԅ] 62'SCB%5ahaN62Lcezh&^ Q&P/ְb+D鮐Zhzn&&]W)=wzA)KҢB^RDeeOdOHM B(.7M=^)HAtD!zBz)tz ( C zR40֋U(c)JRzRz+Meֈbkt.kL1˨hBZ j:PZkI—Iu ѭ- ]!R+bzB 4Sߥ4#$$"]Z]AuBEbl= )5 Ҍ6Q zlP0$BDtzK: t7zo=*놆 BFJ_ї4) 07~=! MI͆MSiXěJ;OM?6/Q=} J6R02Bhh'ԖVHM{Me? Gy?slڑ!4#2gG/']fwߥL㪨rj'p 2"B0OZ/U'~0ELne' ue 44&A?"xҋHwsMO`JZ2N.JRd؃'l|wwߦOl2oN#.;wd$E>^ L؄1.mη >BLFxZ9'ӧ)JR4_əq'bcf._yZ `d13JVLDKn8]oM)JQΊ ddfz/_I k6U|kt\P?u0ɩB$! .^MHBiV~YEz_YM4}7sHf^oК6MaA6J66]!B5PE$FA0B(u*{ҕnQ߉~ENǢ!:Z!:aB'mZ5 (nlL#"Lc;um?Wd^?E7{lX]M"kA} !B tzBh&hh e omvyHi=**ױ36Jm7e҉41=jR2 fHBku<ѡezRѲjL&I22i/J=eE)Kcccc)JQ 5XK*+pMl\_8e= y8eߏh86y4w={:[ Gh+f>P{7df?rJ9O.WZV)FJRjAB(#hKI[!3F!4I^^ K ;ɳ_Ц61@q{yfK!"! 8+a"( coU-&L\}+fN ϗ`=597BK/shhhetu +҅WFB k1ScD'o~?gO%w M+'& AQEB!B!Bhb hh腪+g~~~ rnƥ> =HAA.BM&!B!44 TA-E҉lLqc5'r= 5$r DZM&BtBHB!B 9z s-7%riT\b(VǹM{D&I&iM&HBa n#2D/ILj#x҃cZSJΨMY_7<-؊M&cU^O-#WA0m1`B c&HToG]SY MG'$&I4h_Of; %nn fɴ= CPr֍w>zJi 'Dk:loe"bwsd!8^V L]Fc\h1+}3':gTZB='# 0CCDGS 2_ƕQ?-0-!=&Wce\eFtN=5ƆahhhnM5P6EJRz].PiM'BO9Cl ^%zBtkB 0 Ch_r0T JĿ5͌ğ@-g>ق87m8_x^57`nÅ#ȷZmɚ8Fd!1c"X]l1} j0 0!}.Vd+>Љ( HVI&Iz.灯Ol͇cutlnqSĝҧ7{k,nnn"-81:,2/ 0CD нO1pYcCќhDd Փ[> Isy3 1o>Uqi4K ™>,Eǟֿ卿,~we5Br8 ,!a ь6B,YG)4ܤX8,l7 ܱ6s/9K)T9*ra5~*n;l$IXyO< 5KuO}I$DϡPho*2D!44!G٩hFMVt %Fz4k[eTѷK qoAUj)pgdrߟkqB'ۅѝ7gCݓFeyϻ~{ ~oF^i:^R`ZDѡ V_Lw#ҰAh12!XM)RkDmU uז˿o?ï۶<O0 Xݏ/e "tlٹ_aV$+W{™./VN$[ڎLb$ )es_0K yc/ qF{6!DdDFftDa}@Є!41kr4F B5܂#衎I Do)&/ȕ]K8g697m?L|-bIkk/o.?_{7cmo综 dM.'=$< OOI`ϸ3a?LLLLzMtLB&WKJR꺩u1Cl()zx.F} uҔ.F=gCccz4~PkBb H42)J bJRk-_CcelllL:)t҈1^]:]MlC 0؝TҬDLBp&BJQe$-CZR! 47F&TA,!z9kD(ؒ”cccccz>OU!!"QiH0ֈAECZ!B HB05wZ667Bz$B "1^&&NbBiTk8 %?Bt_EF&}CRi d(&$)F ZM !-X._0 *{/lt7^ 67-]RBҌAL &'a3q4 Ȭf]O5fK1D(aT ) V45ҘkCZM&&Qte.oUhhh$$$M)u0Ɔ"НEh/LLLe)KZ!"hQiJR)DM 0 QFMSBbѡtBZ D .4LR2c)F6RbBZ!MhbBFZELM2Y4PjF&"kH41MLROFA!֐hhiB Ѓ*% 4l'!JRĴ0a0cZѢhnОB41эkRшA螅BB n46&LA   0z&A kN- և l RP SЖ]h@'Њ} И1Vѡ jI&074Ьl6K-B] 5Dm&L]" haVZ ђ-AM"> L k&!ÍkE= '!z zH-F$!B =F /FB&F7,PD1- ROF1$)QZD% i -T1д֛,EifDI҅B /U]%ԢB45HHZ1& ,AQCbƆ86V&(lW5 -!P 3d0PEti4M V=!$MIV6 n 2dϥaֈBH0H SKA1kX;A*ѭ,2֩/K[Vѽ ZAݢt05c&B(]Z""E)I(c A ѽFZM2'br>rbbcCBbeАZ J ZKO2 9ѱD4$T$tm N45Q51 .XkAz+ȑ$ ZR遱8#ؑX5Г2COEj"} qh3_K"(h}J`#uY"] WBh4z !!K~bFBj1ZCKD0T{ +ڣ=1=Te2Q2?kh!tn RIQDLI224&&1 1̉=/ҽ^Y д)Jpߡ*70K Ʈ׾sTlMD_Qt'.J 5/T}.-k&ƨOh lգBDMS]fM쁑^d?a'#Q4}(u~Hh u! r]ȞO7p{DUsq࿗@qeHJ(B= RRPL.R+'4QQݭWҥABBiKBh!4R! .RJQ>)~^ѓYсJRB!4dB)JR3W'֛[t޶AaBtB(rhbMgY^/CC J^)ziJRJQ11:"&Y^z1QD)K RR?RRҥ)J])5kR()JRR)JR)uIB߁,V- Ke]/I 4q\o"EZ_:%*oi\J4-E֔ҮJR)KB J'^^AM!BjƅF1Fi[*b>-c=Na2ON !BuB2J^ѽWLu(o/g^ܽ{?r~ђ Of9oちHZB!4 Є!= !:KА\'Н+3lϒh&bqA"`!A!>.6Ik=Fjwk>~ۃ5s]M,}$H{#hXQ #a财EOC"w}ג7)K;ܗ%K߷%R;o{0Mbo}ٞމ ]"`' cCZ6.ABxƭ^ ^L~צk/9;Z'r6m4z3"Ɔ1ZRPF!zh"d5~}(65H{Z*oaQɽ}}xce"_d0`i?VX ڤRcwrý~V%BiU"-6~I[2EF\,qwޛ q&[m4$sn[nѸ1_`M=u ןGlY{ytA=&LA RJj*V+&nڿaIQK+o=gUT/)^nraiebl~Gy~Oy~Oy~Gy|?^o?;^~OR7j?|?iy~Gy~Gy~Gy~Gy~Gy~Gy~Gy>~OOddy~Gy~G>~OOOendstream endobj 100 0 obj << /D [98 0 R /XYZ 81 757.935 null] >> endobj 101 0 obj << /D [98 0 R /XYZ 267.159 466.972 null] >> endobj 102 0 obj << /D [98 0 R /XYZ 81 421.079 null] >> endobj 97 0 obj << /Font << /F27 49 0 R /F15 26 0 R /F19 22 0 R /F38 105 0 R >> /XObject << /Im7 89 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 108 0 obj << /Length 2560 /Filter /FlateDecode >> stream xڅYI6W(DjwO9T2hSmQ&V>UVizyWF߿R2hݫt|/8^;~O70 ס&I~q٪R)v7nw*mx8zsA"8d7UY %4,PvT?iv JGN݅1zY50ϓ@y~ҷntZ9ŕ=fcXt\l ]WWLx hXtY 'q۬6TJ;'l-}-dPpz}.ZN܊^ ΩPJc$7jP/ygd՚BWqmhh;[5JHQt0lt!B?SGq}̕F,?^9 C)HmeJA=K~K1k7S#ƉF9>Jm0cj/xd^pwDUbKj-Sa']ʟc'L fx,/& -&T[,G nZq6#x%\0r4D=*/xpI`ں GHzlOH !~۪4db,^Db_$usE*_Yկh%܊DBeON >Cƨ/eBnDDu)aj]^ؾ<|v 'a` Kоqw[?TX)%9&g n SDK"`hfIОx+Jayo7p< i~ T9l b_5O݉u {=Bue4n9)f R3 :Xv7>R!2B?07COFX"fc9MǤ ת#z$eZ?,b*s"Q0fޡJ[No',51Đbb3HK }+ e_)q헐5ޡ#:ƽ@n/4HD]E'<i,A,WTP_;OxAb]y/|)}˧2Zd$( C+RNA}K>; xrW+72=x$1zyDs$#v֒S+-I˅ > 9K9r`l6*}n&p9 L^{sLuS/Duw4Ͽc Ks^ϲ4WN\@i)Sa Ѧ~&T#Џ SAR n)FލO8l0exݑhO%\pJג ]㝄8xTs&&+ΜNJn;0 NY\vщ7 |_* Jkܪ'(|ʠ2ЄG05Jtȕ=x^,7ݑqĹvƾp @6O}/[IA@npcۆ\6ěe*\4|wLR9;DQ8s_ڂԆ95<@g*iƾ=WHp?SMLץ{/!+Ԩ^=(ܕ"J|kIanFݞ SxEdFhqt=ϺobʢBEFDendstream endobj 107 0 obj << /Type /Page /Contents 108 0 R /Resources 106 0 R /MediaBox [0 0 595.276 841.89] /Parent 83 0 R >> endobj 109 0 obj << /D [107 0 R /XYZ 81 757.935 null] >> endobj 110 0 obj << /D [107 0 R /XYZ 81 704.849 null] >> endobj 111 0 obj << /D [107 0 R /XYZ 81 495.951 null] >> endobj 112 0 obj << /D [107 0 R /XYZ 81 287.09 null] >> endobj 106 0 obj << /Font << /F27 49 0 R /F15 26 0 R /F19 22 0 R /F22 34 0 R /F26 41 0 R /F25 38 0 R >> /ProcSet [ /PDF /Text ] >> endobj 115 0 obj << /Length 1117 /Filter /FlateDecode >> stream x}VKsFWT13sݲNe׮TJrY Ro?eKU~~݃\X 6+wU4\΂1UJ"qU]OOwӛl<Wv%e?=\`\&huI"W7NԻ",H7*VR S4n3]k]lx\nF*NL|8tkuW ,ۂdYoen,.GHHO>GT`CHjjMfd7*xcb#ޘBFQ14ԚmS9_@iR>IMrM =.C}M~e :vc8q(\!|I$Пu`2!ѹ*][Tp~zD^$B74=?|K"Ne1H!TUc"2@[kqBPkSnl'Y#ʶz)Oļ 8)$"S,6I%>n4b7܊GW {as :ҡ=H%3;Jf TH4n/UQ‹#Ìb [s}cnlP6=?|5nD g*ڌ (Z[LKF84cpܻ-I0-j#˞n<79&ZF0NvBO3[#NV$yqti5(?_W"X4戜N>(=LqG֣eoYg))<,1q0|Qƺ(6m7 tnP#Ք|'՗yas'UG$@-!_԰#0 4i'ݔcڌ.R. $vͨѝXoO M*a) =j?'r2VƓ3a 3`Cv=)!$DoM'6Ե~AAh4HS@3o]Un d7~{rs-Ƒ>W$apOe mt=s/xe/;͟/endstream endobj 114 0 obj << /Type /Page /Contents 115 0 R /Resources 113 0 R /MediaBox [0 0 595.276 841.89] /Parent 83 0 R >> endobj 116 0 obj << /D [114 0 R /XYZ 81 757.935 null] >> endobj 113 0 obj << /Font << /F27 49 0 R /F15 26 0 R /F25 38 0 R /F26 41 0 R >> /ProcSet [ /PDF /Text ] >> endobj 127 0 obj << /Length 1377 /Filter /FlateDecode >> stream xڍWKs6WVrd÷6dCjw:Z%)&)kb$d"/vŷ A.fIm.DDžtVcP:cRA~e{+e^BӼsn0x8S ?K.faEjsqyK6Y"-<"Ks2XZ5-5*A>mCMk)L .gЕ$31z&B<$3Ǟ=6$&p`db~ 2(ݩx$Vp 7d~ikP}ъGckRkgي[k@W؅:q+]{* o}Psj)(@*$`fJt1r^֔nF(FIihޖ-^9m}㯎}`QF&lw=_JUz)7O[WƕpIky_-7yr<0|Df%g-v`撱yq'J{vfNX΁'rO3Sn9}_=rR͎+^pQ c +QSOU7Q뷶%uܖ > endobj 117 0 obj << /Type /XObject /Subtype /Image /Width 338 /Height 288 /BitsPerComponent 8 /Length 13360 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDuckyP&Adobed &L4.       R P@!"01 2 !1AQ"Paq2# 0@B5Rb3$sdtrS4%P1 !AQ"a2!1APQ@aq 0p` 1,ΈN|Y7٬UszWȓm~nmv@ߪ2UpV}[kѣ픱bóq]ɽ~ g6r +2Zmu0R}̵WQʩRFF}U,_saW=paz#%EM&;sXa̞tU6ㅒ9̷;w㙞y ]c'VJ,țQ#Tn{.|`֌fO":byf[ IHfjsI5EDShk*߄YPiǥLbi55UUIc3UGvLYZ-ΘU]asp3 D3YxeE'z-78sq &[ dGL@N;7k?]} %L'7 dƿd}.|}2ZO%aK\<_WNR5w+g'2[_ut_^mWΙZn9]<}y_r|f_P>kpSBd8\UHN(,zƾ+OA$q+﫯%OETa4i9AMMue]rKasnJars^ޤ`c8c&_T$iRAqg4_|^bkjWA1ɧMmZ\F:3c=Eݕw]wr^}mW(M 0'\Jg;8_jFKZCVqr25zrȀQG']{uylV&%MTTT\2u{#k-mi]2l͆zo\wpE}K~^i u#ke{i[ޕ'ݔQ; jOc$fծM]{ F\SvsXYUgw-\@J[1Y[}U?Miotur2I#dOO5qBmC^DzQS]5yTc5I4dФ)qAn#[ƬlB|rѠ˽|[[ 2F69ע*$F¿x={^:)+NI->\}u}D.>.>k?ˆ[L@)jz=@xxUsUuxSZc-ߓ{|̟W$(w?% rwRJͨ_xb; 527Q"?(,(͸mمQ4k ^c.U`]{HdٱJGŸ &S8G|jia^nS6G:0xe1GO.ȷnsIG< og4t[65h~ۮUf98TW.ETH:I^2pyXRFªr [?B]>ՌziOU3VٹC,L "Tϐ}/iUXJՍTV=J)NeNʏ{8PDŽ>]j#]H2%hL$Q"J8QUF@> )-zun4=w^ݹM`R@>L"rp̖}G@+)[C%tQEEU623FwJ]nkn8#Yύ~"%mkhsmYAjV-2 locեFq_ e`fZX@ r8rXx/M5tmW̅ssZ5;r0‹Q(HAEUoZk˩3K[lJG>.h?8:ֽPUT_PxǤ)AX8+ ㏼ttjanVQs22jbJ)9A1>^^%N4 +L3Y==1oԏ^tfjc 0MhD2ҙ#lwnfj>W2ju. n-nWT3/19y [4+ ]WD|!qS [=PД4<ը[/R2t9ڣ)>4fE6}9)Lѹ{zڟGW]J0⭑KO?Mm&sPFi:wyU5pYÙn]xʧ%e{¤>QZj_?y|$:9YN`E]2G6nWLj-! Q6#XePJR`8i`[[4-NG$xK͕PnkDMHܹ'ٛZD6OZz_< RXjVVȂqql;byiY- SFu{`~Ŭ5KԦ.8ܗHEK'LSSPs΄y n?f-%ړLQ8kǏ$3#E4LRXieeȂ;.~L}[|c%+OS÷aq2eb,AkM١!⇥0Zx3t8+McPC/z1%-ݘɦ;ȁ8QbXVo~kjuy$3F*' C]Dy"T2NmKK?!nK>!)]M"4F< .oY>8?9998\$1C g@臂'x#~m6" ^,vMR Ȃf-VݼZ`MnB`n…ؙ *ո0bdȘnÁxu{=^x =ѫU-,`CDpsJAz6p. ȎDg2U ƮY)K>%q̮I|B[4ݑJ1ӈ6BUo$#4GJ TYC2kkq߾̹_ H<^朲Q`Es)1862`_E:#86cb{357<@;b'Nv8gܯPí±<4s .Xjh#fs[Hy>A-]8\.5|l9e PBe #9V?!︗P" iU@*bӲ_2#Jߧi]+z*\T˲me2artīF{lo10` 0eYs<@X =n΀ܷԹF0;нTch.Tl\AcB +],(WSU9dqRRbYgGYBcO_rB) %e"K*A"t= g%JU/zyEgZd}*%uvM zjWk{8 h` 3O\=T< -p1ӟo9P`j/jp6_e59N/KPZ2 0 b#RĘ"P]$A6-~n%nU)DA,$ZJ9!*nI۰K.)2P bXKfݗ7oPJg_tگxt1-8Fb&_ЦWl Ĺp`S(ڢ3+R="zaTD X_R'7/A¹dx3p$%ܓ\Qq͑S 2oDaPeXc.9p 譖Q IYA+ 흍X>?YPDL_z}E41K&_DdΙ7@iժkfe@/$CD!*o/ @NʗSeBPpvdk(KoQEej:Գ:@v?漏ڃ{I{([P/.JC:ipc1=[11+SQ S!/TtT}n'GЌ\WZҥDEroH/*j N Rܹ}H=Q"KIw*j=*'+'CnWUVX=\}n_T*W˄ҺWKT/ERˌ_U믠_z/=a9GCR! gcCDv1=JczTWK;]K7ҥ kͳ@vv1pzm,a9vaA؈ᔻ:V1蝠^./6endstream endobj 118 0 obj << /Type /XObject /Subtype /Image /Width 326 /Height 260 /BitsPerComponent 8 /Length 9801 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDuckyP&Adobed y&G      F P@!"6 !1AQ"Pa2B @q#Rb3$SsD0rCTP1"!1AQaPq@𑡱 NI8X3^,pYjW5=S/@ˆsȟe1e+&*"i> |\Kz=3 r2T2sHRo2!L3H-NpzXo@4B4ݍa;y4 V"Sy7Yfn9|A/ }G-|fRB:HЯ칭{c/3wO00*~=o_98AX n|sJ9iTX$/m e@u@d2 6`G tϞ"QjE#K7᱀䮤%>Ĺ=׻<ὸa^,Ah,a)- *+c_=(wIs3in+;øZ,Ǡn8SƭpH/]̊[xC27ϻi`xV5e~YlưWUBWi-W", \)7`? R/-W ʒ)ϲ ?kAǮA 륏)0."*I(1A%gy1o2!pмW| f冽{D"c!Xcc"+TL_;ĜvXQ>] s\qSYeεuE]Wn8Ɏ:<舽/zoَM/>B.)W<Ʀ'OZ]|YC:=}s}U\F. 1q?O1[weB#:\qƋ+ nKpIhk00W٫ݭA0 %Unacyq cU6 !;p՞uwUWAmi*÷i2h b4L;FaD#Ǖ"!/fߢ:9C8Lddװ 5={I qR"hXFiZ,]tޱI34;ǰ]Ff <2;;.5s\؍E"4Lw-zv8F!3ZُFxsbXylԥk~ gWSsWϑLS1R&ieDllc~WMF)k='x<;*)\泚.vG`-P ׋$)m&&VTinsgW.*r/oQ:`zgVPݍ%} RyfnE59;f(_Hg3h.aU|q;B ,#x9tr4 AI6ȅmlC{{9>ZƄ#h41{mMܚpi7I}ђvnÆ(I% ty}p1ð1E-5qFx\vcmFPGMsl{:F ߊIXM)MuːqI dT*QƑwia}M5CrmӧP]&] Q ^xCC̊6S  \G,*ppdlR og3K桱u>^ϳ̠L.T5z)r.RDsC#eV+fF+ )(jz4z;jC*Ӂ lm}|nPK>Z  ,/B F?U}hpxSy[VgAqmN gN=7yAw]cOs-ՠ.*n{iԵ n7=SPOAz4f+#1mO}n| iݖjgzl( $P><,sKSHDe%IEi;o8m?VၷQ>P ՚mx%]7&O7P\6YϢkuV 2P+4ϊVŒkpO)m]#2sHzr^ܵ73nxEro :5@rZ #P]Hz6ږ7pz;lgc'KW5͸ lmS Z jh6Hr-M4h&  ulo=r=PoW Y7\7ԵQKKQs)icڡBmݦϒRK n#nEB\l}&}.:7n{/ gaG5Pj11\^  uv$گ}* ;nD)Z91*)*$ysDžQͿ G*$,:k[9 Cr =DO@sߙaj|Q4x{6l۝kEwUC/g]#$qh2b]xnDOEG~rC[*i(\ǵd#Eєg OFV3G,!%xz)em֣-VLHջa't4.oIqr|o5rsLjIe.ڡ.vH$@Ǵ A3Q㌲Qg~;(PaD%m-|\⽯;Ac}%PL3M_QUR&a9OS9y<9d"[jz+GFѳЄ|4}k*(S T;O"C%p`ٛJw69>AlԎMkKL"o>LZ}[u k@w8~z'ИLf/sx7#uwED3J_=PsP C:W䤀c@N6S7 4Uee꣊2SV=n sXGҶ6{)7=A욥,U3t+膬A o4O_Xκ&ؔ9-%NL7/ .ktspj8+Tx=gwosu3b$y=Q\C]YVV$1$'`987`zF\V`ICjDži&C qILeiєhGf1O1_OɉTMnT +4C([ɣ/Y!nyl5\LS@9% U2`xKSAI[f|qavǻ 96g8!߇cƌ<{ 6 cרN'  S zojff#BSv \Æp{{po p {c=e:t CB{ [4Qt=ƪќ  R"8C&L\o5H[D"McF& [O?`yJ8Y>T;!i"#1J-B?F((qY>2:v#v:wT4TU4(#LQq>RO[z}`5*)ׂ8z-ZǻLIT(RMEESR4[*!Se;z0I8t#&*4wSקVg>H|P!E>EO$ı~͐8[c3ό."W*Ǵ{BsYZ"<p,lC&"!Q(": J%#P7r{::~bxjc&|AxAQY' ;S[۪5qXݳ^:jJ6cW:LXj` 9O0!HpR7\[86maDS 6>mj%wo (QSyITdXHSAMu$_4{Vg`F qnD;{G? vIDzΥ3!fONi lG;`s+whROPKcRr:߁FtrhWֽ`\rZt@OIUlCű˔Y=`J.QDGIAy6vf7RY48_bFmK\[UWL]y6`%$ L Ft{qXPjzp=_0"2 aB{YPCdMfDZ'YE@ʜf A#ۀ)0ax/!'DPP$wj.Fz0z=@y+/#ŪGdv@ 'x+Ic3/'a(| hLr5u>27 üf*tɥQqO<`jqǕ{,LOu|גc8AQn7 3P0NiDDAcsXR ]0&TKml^U|~1G}'+a =8`9@k<NFSq?khU%E 5V"8O'-\+ӈ H+ls ,"zp.H76DLJayDKJ^Ka/㐔ĩpϛU M<ɐ@٣ i#&t` ϳ;0^22v PCUuBr0$BK4m>ȃJ:@Pγזa\߂`$fԨ?}d[gF(*0ʀ: uFBs. _TVwP@ !^܅Z6`GFִ2em(9F#3q TRͼpB0WI/ _&jx֫?ឆV~AEA0A'28!{g~׾2~yԸe?k+sDAyPaQ {9ެ8wYTO#Ӭ;AP{wཉYP'"Ssdh7?ط|1N"oXJX1`'!w  8C{^QdxզxYp͔:߷z?bI7O #ΰLb8ɏH7O,q?endstream endobj 119 0 obj << /Type /XObject /Subtype /Image /Width 352 /Height 272 /BitsPerComponent 8 /Length 11615 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDuckyP&Adobed .":-]      ` P@!1#"$  !1AQ"a2PqBR#@ brC$႒3sD%P!12A!1AQaPq@р ؇\*G%H9\`upb(i9|,da_%`n3h C9H^ @C0Hoz:~KqEFi6Ib$2N6sLRIĉ,X0œt!ߧLD3 1r@< D)d&C tD84g&Ɍy춘"F<;9?F=L+$@ ^mӐMW,D,WCiLil3a$kM~J%P.FI\2gNg!%K&VBh"k2fl[2,9V&M4ӧR k\$YɂKDY Y<ҪBF'tyـNK Is<5pUy)Kf?Eo ^a^Ӵѷ6'ǻ*ðj:y39|EEXn#̍8rPRj9=TRo:oLi 盩xX1Fu4Mov'yt֧#舾ʹM.87FpևTM;s=+X`e 3PqJUi(Z}ըu׳y>CXc뗣I~rkJ94Ի:A=>Ka\FLq<96㬧9_ Hب~o_f°÷Ζ8c7'3-ZdS aM/ʽuW{ӦFr W=}Œ$riPr 9月7J?.c}#K\%+Mx>53X[io9Wq6'J=cGuE:lVE"sm/(N]Hٚ8'7cm V QݸYaLylʌ{[Z^;1oUs||)lmۏV6Xid+\Ӂgr;jW*~×:6Z߁) цc•V֗E+@X.R5뺱}i}2h$t2aG5A9$?Zs5?՚iF]5A:^SaSщ',I{veHkՠ(-ixQ:23^k\!7Puo#V#J{zfm;uE+vߕtfg'`6T:{TpZ5G~C`ibd YYlpmjc>&mt{:m##W*w~p[=~c!ѱR;Dފٗn!k5zqƴHӆm5JUJq5Ӯ%rEڿd\*c╂HF.zLGj6xKBi܂oof;TeZ_F(ii\1kA!87j usC'oR5+熟A<.4MpMMf9WeI$hWPcNSH1 vcoa) 'vhE+\D$T~oMŕÈt(׏Ɋ{CJ)SIƆυݘ$ \NV*yuS]Lܾ|R+KdZ :<ܕw#n$e ~g%9 (ȑO{²@Zjh㔇%o ÆL^ͨ,$uJ򴋛w 2DG448z pGuo"s (T+NכΓ$%3ޤD-oX:E k)ϻ[/Z= ǿqAkkQ9L5BǵBsq鿚.juV~gDF#~/A)X"FsN`tT7C+pM̊D.t=Ao;I~3 #1iz=N;.ݸi7r(dQ :AW+,RHi O:KqKޫ5}KXN/Bw;_GNurndp@ƽqlp>~[%Goo"3 ivL_Y07aqUqZxي> z"6.Ѧ@+xi b;HVB2}AԴ:[g5B蟻V*"sC#eV+F`&{sir3Bl;*~^n? r8b8605$3F覉Œsp ZmW1ؾ&\7fIY予Rޣ[NA߆UQMp[I˕1jnZsBF5c`Yy</bB>lbx5A*I"GI^HHtEBԪbOG?!9b`^0%լq39BM"QU*xDȞESP_:̾ahg-oaH"%#􌶬OQA'`3 +1ɼף 7yX8>yQ6VB(G:0s{"GyzM9\ $g0Pqq9mR*7Qh8!Xf]3̺mm{@!Ut?4hZ fF `GKU&-nUeߘŲ<0dU]Rlm%˶R\>!J. ",`WقNOz"!YTʯZКp^m-{1PKDc {{\ЮhQΡJJ7*5s'ǼCRŖ_:璋Ϛǫt%:b9K K@lճ4bb'3ݜa-8ߙp=E;'JX]K#΂- >{a-=k:ƙ? :6H?i0 k4C}g>^ ThE)j@jKcomͧ4K Jk8"ᅾ 6[?Qd=W'|(*깹#I̹U"SZ,/Hv 3`lC71h`v10X&#eG̶GZ4= "4xb/ VET~Oǽ%:2&,,;!3/m(u [eAU<",RkKL^ S 7. e?j"4-'S P0&u;&=9Q=TCF7SJ Jm˨mJ[Bn&&PлHXMq(@8|>TD[l Pqi4xboAx#Fq4[ݩmPQE5:y. 1F6 ATbۺP2B2+\->pՅeyrJ)Fy<WaX;""Fc1|  Mp0|=hhoHTVMFiԪ-L:EFHIl}ş;rTp*ȶȴe߼S)fYPJjMZ?s^q(Kb 0蜏Hݰ#- !Cp å5ObЬjc@"qE> 0&^؞DIFOi*ĘyAH}<8 ?JʀJr\)@WVEBaBe #>V1ʬW?!`ZÇ{՞Prg?5-QAkoHA 5(cM){kQǎϓ;1fNDiv~=͵ddO1'?J[Lh~PuƍOJܨV+z[Wa aV_'/ )Q MHQ^\b^K&ẇcu!@~.SÈey$Ֆ"e1 6> PCi|wĻ[8>OzEKH]at>0hP~@n%0,֎+YP" ++oupPn 9&Qqm`]Ͳ7A~f.61}Y[ɟt˂Yh PǺ t#rvSEcz C0>n4"GۨŗPPRf12P0djFxbf(O,,]F~bi;fJ"L78P@^<:?%t}Tլ4 r"fdR42ߺ^\>D=n5xQ8xd31@|TНWd@HyA?PebcpE@/y;]|:QjEh]%":a2rG$r@#dAI)'xxm)L ͓NX^DjIa"END˕ȟ)mʍ2 ~djaCr#LDr*u)a+hj"nl^88pԨNl,9Ny3鄓6HyCT7^'73B/flL:2ps)@.+|_ә $\ `r5%tpi F /yLeC <*Ի} &Dp%'RMS bڑíH|#g Q(͖yώޡ$~.<Bj`GF`!:uc%ɺONv!9wKSɳV|k.e]~tهl2J]n L$e'%̂?RU%\oK]|r@0*~K(-b"-Zˠ'ē"4Yymc %()pa0"-ȎD1(W*v{LR3c3[K\%t4mB*?89^D"EZ2MU%plQR!@(lL@"6_oB` CLijRq0Uy))"8YM]@ibz%++8'F7r'Vk%ݬg*LBIN*j4z o~>F<uP゘@ =AJs!U 0 "A#^ 1$2WA$!#v- 46҃w,1D ?G8ұEPUXЧ# NʥlkFWT> stream JFIFddDuckyP&Adobed Z(87      < P @0!1p"2`6  !1AQPa"2 qBR#0@b3$5r4CScsDuP!Aa`!1AQaPq @0p bJ-ڠ71(|?N9 m~ö5ڑ}ҙJ4—lwqt|䦛 3{fGRD㩵vӶߋa'sdjX&*sǙ_+tO9Ο?˦\TsXHӻX*T-l_w^|=?TUo7O-tדr臕_Lkh 49GER9Oޚݖ{Zhގ[\z)_CSo$_5R_Dˮ?C‡ItQzڏMHENvG'+bR):ӂy2^a:&ǕçF@\>s.H̚qLZw?{~D향s| va_|_l~} 5gKkSϪ\?:']Y;ŕ|6\,>:yY_ ߓef3K( .;{)~l Ϝsts}5u:|4vz"|=T3D, W׷TDE4u$p1A N.2 (jf^ZiHŬIR~as [*`-^ {/K,> 0I8Ja2۸B?2,!ŸEY8,Cc߳TDv$Ly eۍwAAX'c uQ2]RTډ\OL晻 2%$Sg .A(GLě*+bdֽ(}+lqn |ucf^qiX̤Ni7)'ܜbqnrlZV5);5hV2ǐr[NIMr,&=TX)x]tbv6Ej77,bjcӏ^vK͚]Ke(>ed %&]*\Yۄk ֛yZm[\d'f]4fFٝi[ڿܫ#EhG# ȅk]يC =~:+ݙTp1NGx)B->Ai# |9C!d9CDDyr!r)W2U=jPGWUzc/F4-(Pq]{.$ +vC th!Ȼ#I+Ģ msnS'tFl_ld)QdJ'[6b= Iu[Xu' ԝ[9[!']ER{1ix2ԶD-6IiM 3PPGZT|-H1Ⱥh d( !=K!>ڙw 3[ WSҠbJ0g.؉@B ylU:8ZPZ<["U]\F̕WCj8Se%hEME•_?O!FTd;3]BW x6ӏf?u?+~4iwjZ+Zd:ErΘxYܥ,,^7P-4Ŏh3]7wElmgrayUi^ʢ2pET-9c0JnBОJ+swTZuAuDfa\ $nuu" ުiBHӥ5ƺCWhy)&ZsB`mVnl\<}dΓ|;}L9t%K[L/4 IC)@RRLʴ H>FܴrջXT]*T3@+Ia_q'S VFG7iRJN]|iug.Z;l4-c[/|ZRp ^?rxg!!D0^N%0H-z!J}. < ߴqjpu&eU&cb.d%c_nS7l'Ii柉o.sjrjQZ&QV%E`HI9 SҾ;l7ϩ2'"֊"1)4y*e--':RIԁR/ZQ;$A%3WVGOHP)RL1o^վSVR‹EeG5h1ezn-n֕, +wnKF`ro iM̉l!˻ƞqfGN]ܔo9;SqltҳR }_?s|#H0l.xkh peTꟷ#1iv~՜' 2qkhZ8nS=UH(Pv&ʂӉ&^q#.drÈ5 [k-"?Q[+H꼞f2Hddri.U46^dPβWxwkx˕B AȏiW<&_qݹ,=8v $H*PM*K>e~\K̫>b29@uW!J%Ib :rZKshMf T6eFZ7J&C̮2iuRPKq a[˜1ZIU7KT\Θp/!M<ҊicJЂEuJ.(L7JVI!*5Ն<{{-q$v۬XGR&qeC]btʷjm٥[Y$^鴼Ò"hXԓ#\9^m.JicRTP ­Ӻ-mJJ$039 Hj?!!a57r/mFPʚZ}3{R^/ S$2a{"i=Lm6*?{^?1 {W'2kd0Dc,AI=ڴVf%4/ x,F% Q*U=D0%`/9aܦ`f{|ٓ"9#1v t}"+9U)?:M[eL6!"¿&{:ke*Qn۸v%?,{i /up!M^AzJY,ْ*#ǴIq=/f93T/fst[s<ס˻BWnvɷ.w?oHGf~9j**xYAax*/ĨvNNp&A}X@KW8r4u˖VY^[rxLFaSiHŘWryi?H{+l<,0ϒqvyU<`PN*2xKCWQ6+ܡHb㡏,!N2d *:b jq:X,ED N~%tN|1.+4nS8V=Ƌ<7RWR_pV.sb!bsӓDI 2{;"#3~@9`b)"J8eyLr8?SM#=0}喪WQ$ 036+-6je,vHPn*ICq r LeEZͅAVpd+?b?׎ sf똄ɑO2==0; }L)h䶅5 ^uEl]-&Ki۵+yGAj Ӛ2Δq_n[ BUyl@W%RG0clQvF{<6~+do\V 5GV*  x#?e(j!i1I[0eT?5 @pE"9Al|?bjws݆C|8[hTJTХsͣdAPeL>DX@/\OXL*㏥W6e&͒!}FKNEUVo wYBZ|B<ʚ\̿ebЯye̸7kaK݅)p47E Xfy3,`jVe.4qIj-x-lN>rwGIKDכ]0U*C6nuJ79C(2Ҵ{,]һ+ fL]xϟ ˫V>)UL'0eJ {CQ,ggxvNaj!f4ȎϠqW64b*I0:*Tl!S(9N <’0P' e r`؞8{%JQuy5q3UO4]ߠM7%L/@!gBTZqFڂNQ ") ȋp,=X:L߿ӈƪ IfQsЋ-єp7a2Fpላ-.Joqq ":Iv{4*}ݾƥ^6"R "J0c&#$%"'.{.Xk%L6dD24^ s*lf3U"-gN;1a"%əԴE@8=L1 ^H$zCO~^2{%ٖP+nQ*șeX)Zk2x,WX) raFPOg}"RAf¤lGlYR94.\1h'hLgf AAĘyAH Ҟ`2%#|A&ܠՑ;*ЙxH_xA[*?!&~*Poжtz'X sb/<%Aޘh"#%kߢ RA6Tbfh:Gygyy]5\vD]/][tR|; ]ohJ"DE\~wV\=Xz*T]к0\FRԩP+%'b%/r/r*.8oc/P:fTQzs e1:9O5z%^LIP駈Zi5֣3mRr0Nq\ 2$?ϠteN{?@j+//K)x;rgcz%=p=>?m=]he/E=6=.-?!*^ b\J01q} 1f1CS]7T' Q}IX["WQ  &fzIs b_]=oXL̲Kt3$lB iPR,}7Wc 5cV4@J. O>3ƀB-N` ~2_('8;ˤ8/s,2)@H?'IE +kkqHz R- ;.xn,~F B~ԘN>: (U5941RR5e-+YӠmhwB܂Z"ҭS/`Q}bT4,3I4u H*=ԜYQ]e. C@{eiMrR-XP^ζTQ_+:D׋F-Fj-  VF2Pjb$شH0ȢDa FA,̬g ̱$,8byBbAQrm Rx|X>T򌧒_U} VW,jn¡/(ϴ,A* TQ+X"R0\@ Y:rfT\!XcubpDZ(8qRQ5p.YL&C¼,A 's䈇Q`r]Tm>f~/>GCZ9sJW8sm[ֲTX%M(dc a(cmdР ]nU)o8SsS:jVp@CXĄ]p٘hܦ ›%^ l[BҲ-x '">6\mұ>TyX |X)4..5mdЅZ-vVGO2720qJ |!DhlCS%I"%pnӞߘZnn,&FH#c ˪IPNE ;vZ>ٍ3K9&_g$*P3n˞@.((`wAuV=h݅wl}THᛗ܏!N D~NO " O~UZa;xBL,PPS\ P9 ;͘d,2:얦`ZL*bztNL.Dq]#r@QAdkJgm,уٲ!yqUx9u9B*!X$=En9<CsRG V0x1(pERK`PDi%@Y;d|L^#BN[H|#g_8 diD ]:ALJC 0ȂUÀ/sH p$}"dL&IoAr0DcEk&!`%6t SB$a555y#yQL 0?qȴIPR#uARJd 0}d6u-F UQR/l`A ~X5сBl<됳@x8*aaood{7DV@ Wi(2$QB@{G@&B̐1G#]f"Ҟ? 0J@r.x: 0Ln1 <mbr!4Aχ#pg9@AG/H@(Ze_1h8(DP@b<1+h19\4 M(p9T} cdfAA4)$]P^diDdH F1Mrȋl9r-lT~zI)|"[)석R$IZzX* JM 7p4Pj3NbB9yTNo] 8@2h5bJ"x hqiU QT0M w#?,סZWY _h%tPȃ>h"Ae}[Jc<5;lQ<n@g\4T0ji%=X|"4_-S7DVJf?l%=D=2ȪM]t~e_x׋HP@!tÐK"[J. '`?'h"߀7sq׸{u+ź@.,C*`x2AK%|GJ˗ "H%E 2U*jJ,i*= Q"t\-@ASD,Y_ZʉFITgTt-'R,K#fT*TavF5) JǥO&/Ez(|qW8;z\7#}Nch bT̈́IQ>jM1|TCYlā 6=)'UOg7~ g t(U`Ksxy7Dϐh֓^1\&:`lEN.0±>G#b ^< ~͎C$,bھC0(<,-E!]^;Dͱ=ØtJwDWf1$,M']z LGf@s}YZыvDc&g AЯE1LO?">?dLC-{ÙyM}}faDg8 NTnQ԰ K9Ϛ12)A!rPw[Stq?47zDst2thuzlݟ^&5 _}_ACQU%hy ܷnO> stream JFIFddDuckyP&Adobed O       6 P@!1`$ !1APQaq"2B# Rb@C$r񒢲3sTEP!1"!1PAQaq@ sNu>jnTd9q\H` u96ii}K 3͑ "G0Rc6h'G cЎ$ܙ%:` a_ G͡?;h <;1dO`8QJHOrv[<xC,%68'3םPe; +SIA1Yrl~NZ,e6f2"Q3ns,dLЛ(-Aր 2ߙ!` 30T##`b`E>j$2N]E[$b:}4% +\c4" 2 0i9Il\`sSYǐϜ 83$UΎR4ܿ8%Фtx~IYfCvHճ\WRFzDW(m ,mVr&4M<P#Ք8+zv3sY{1ӹhZGiWzve_!}.&E!F8q#O$~my֐\mQ:%8?b$5Ҩ1iBc8;vJۜ3`m<۝>Í^mzL+ī0da*)=<}-7٪EK5{ PR{r蝭kbުvrkOV ';O{ lvLhsR|䠅=u/bSZ(%c@IV{]!=5q䒂V;%g_׾DZ.bҤǒJX#)-aV QC}VB aIN+'S[F/U5vi4 >IchͶVҬy dhpy(K%[V[,K`O4ۣB$Uc]Emvym4e FŽm EK C|e> Ň&,i>ei>-/YSe^aIUp VH}{kOk򷆯W]!Z%%IDJ,˃#7(%dc)TF;<נT:q.>gGŸ䏅?U&MQN D`+??ۛ4Y|L<"t=̬ ꮇ@c\)N6P/l9Tg7aƈqc3ϻkkfa*榄2=aoQQ$^bp/ذۂxӵxbQiJ߰oXc '0̪Ga\%?0f5LO@i\76o ֓aÉk쿳)QdE+$l*0F̹?[$]ڱЊRƞ-4x~]x?\vtz[qж pu4}GAM̹ 7Q~VW˕|f7E1ח^ḓFŒ0 k{njD~Q/۠幄 ^oAûKd-›Ke{Asi&}o(#\*ugW*dX2GA0+BLka6ØGÚ'],ZR=m8 ;VN]}{bqjeb Ơ&xW#zi-)q\2u45c}bNQ#c-zq>t%du4 ;5<LZbcF%R7~~8G7C6\թ_RVHUYNvrx'z|c̸Y%hEiB7žGj4ReJoYsYDb̬[N<ϐۈ3bZ+Qvo ~/q-2֒ Zx3!+~Krk?.Ub^҆ rt mc&9PIfC:uo{nt\ZHA5jPve8^Fpwv o{mewһ2fJPU!D`vď G[zKa˯G*bVTɲøtvBC],1n'-O |1۶vg{ͻ=ǂO߷*qMn/[f1 0;v4ݵcn8{cW,Џmyoݴ[́Ѩj*{pe2r% ڤGikMϙerÐR£1?1Y.Qpj`ʣHwa=-Wٰt֌+C]sKZg#-0Oi߷l,HJP朹c3i*Q7e VӅx6ԎohC`A6ZFǗ5n.-2{z:QRhUpTmilK[ԚƖuE[WjUU= WE?!ui{oՓQ8_M䀄A4$Zr_( J3ZTשq SdOUW!n 5j'as3J:U}Ta $`T[4c !q+C#ӓIKcmUa`IA†B1pAxfl,m EMle<tj F6;@6YH%$#R3  ta=l2_O&s PRDDr} 0L=Ө,IK /͏T/6LKAvn|)BdYarH.Ȓ*a$8[;0<%XGH.LJ;A*,A ?8 c6T{C3#bdWp)~xڵgOvl`pG$JtȐ f/=6xӖdr"ZAq] <θ08xfL$)%S:ͬyU2ws%ib ܘ ^FIh 7In$ NJH4M9:ʆZ6L+4߇R(lf.̐= azIJӾOE3?.YohcJS+e]<<K*qW-@:YK9wD@?^r M̑ĽTXDyF5ߠp sEN"9 6f`{6%nm1x+Y~Q=#QB Phq Tc )%(;PAa 33WY=2[!UQQ@MOjiRJ *ɜ\͉b ɝT@L Y'h@Q)bU*Db9piÆ 1y< k Miw TM|XM$ R?!ADPh:??mn=^>GLbv+-:;VFTUd\6ߟXȸ}x?!A_A<$>p'ӣI铆Cg+   $A $ @ A I I AI AA ,``i@?~*=8W:ʆw z%Ǟ]X=!@8ӈ1} MZq{awD$0~Mr3]yhdᆵT+ڪg3k)IH8Ӑh#G")4w?adq| %#7JqE{2gnD+ڪo3vSrA-BXYSϏq "gU3 eF\5a"isv,XXQ'1 u5eg\Ò8wgqĭy6ɭYzaf,1$}0tQ.p \[.|R[fXiǃ"̕eL1`\Zr '!$Gɛ5@߃#/Sh[b^,GNLPJ Q,.JpF Sk؁nM|$6#`C&5q L\ @2d(`} f1?{{+*>Z dc'dqfgq͵.7B7**KO_ 1r*Nk|'ZvJBQǻ"=dK[T)IΙLL v+&Qɯ=6Cg` >&Xc \:HK!AYd0Q G |8+sLp4tʓ Rж'?ACN_2fֽ>``+^Ӿ8ZIwni'Y4t誛hn6~'Yߛv?AE 㵄S$&oX#'C'DdClsY_|6&I$kendstream endobj 122 0 obj << /Type /XObject /Subtype /Image /Width 316 /Height 265 /BitsPerComponent 8 /Length 8645 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDuckyP&Adobed P!       < P1`!@#2 !1APQ"aq2Bb #$RCc`r3STP`!Aa"!1PAQaq` LX|9ؒHs2%/ ⴜ sR>S<$4^>Q@$ g5x¸ ͈=7 " 2l $4NX d:NZ(5҃|m=(l-4FlG[ MBlǸd @H3$tى# Tf *9p#fp~Sugi"XyK.V8Yww)"<89sK[qcK͓nwnU irۖ|[ev6l6lWw.4C{Hܴ"d3A$Wf> LHEqɇ+>QsQ:6DvJJ%{{ NU|SH [EMl"č>6˧J$fDeUϋH [Wf%$SeUcF‽*d;1af aY5ijc)+I7x&K g9cw w޼Z[?i??> M2+IY"ǣ>?]]0P}\an}-ta;ڟP)ʊ3@:R a"@BE5! F{-+NFٓv# xavojgíjDn(L[hV.0F;Ŝ{HXub(`$|=S/OyJgqZ![_xe"o/*T1;- S iW|?IĘFWS"#Oy7wT&.)Tΐ0RIwΥ>SÞiQU5[K}.E;9u7cIXS%!bL#߾27<+ ]BWpB"$E'+ĺR(h!HZdAl(5T>RGzw?MQo7IVJǶPWӂq?`Qj9ݣD3SCq|EӔk6 mĘ  sy\ҡBZ}oKUi*u?B1v@ Qh6p=Wcfi0n iT,FE';*L}_Z; tY@USò"rŨsPʶʄ`GKaIV_}9]iXЅ98NO^]gz[_-RqJ gֳ7) pFKI߸ӨK8PTx"Դ~cHTs)NsKu4_di y Ԑ8Wp| Fo) QC搔g>&DAY4ZJ }Aq9aNG9OFb⪺Etߙ;~N*e䩷[%.6%BD}kҧ/[G !d8Íq& qaCO]1rj<*n>(kJbeu^=ۉ"yRz81UTxÊ):qJsb )ܥ}>""DRqKt =R0;eHT4ӹ7Ddp?ajyJ8WF=6sOҡZpZ 7[F[ʤ ANܷcR`~&\G~W NP7*+GV|m.&S#deհ#PBJh7PƢ%!50|_љą)$lj'*lM]LOb00")8'a5?>U-7$p4xpɛ6KTlreeN.8sK{;u ިed g%[)~ucc]BM:^]g:b)@|,ZZu6L .է-Si:,B&p[N.4J\mB)RMsШVKg<%"1|$ä" 6Ol)0ղtn&vq5G-Q/* 7]v[z}JꩯCFOw\7vZ"NӱDŋ̎7uK}Yߨaח"`6 yG,Er!G}O[ Wu)1dFWXQ9O~ݾDnO=[ǼN8Íq& qaAx6 @EKYKM1ߙG"9Y 8FnRpWz%߽8Fm\KA̕%Sx; JR3JWimI#3Rz_tLWmM**7 :{[$L"dž|pNvHtU&+Zע$쀹6M6O4ϤmԤ)W莊ze)\K9r2L UM8ZRNp݄"xU1UVSUN9<*")TW%rI3 ޘYTz#u ۂ)̓rEVn.9@Fx(&"6.%]H[NJ=Ju~I&;)^=\Lo5%()حM.0E#! X &Բ!C 18Y)<$4 fR=ǩvn|) _8A&ie4؍#cMsNmva8!c`{lԑƩ,H‡ ,D,a0%ŜʥH!.@scTWlRײ }"ܣ`А TB)T2, ]=W"R4տP5n|,d`6.Փ; $%pOCbLĒTV"B94^ԎædAؠT8F`O*MR%Ip(6bG1NIvzVSH"47dE(nSoduF:ӂDr]0LkXkRHfd!$l QXb B ٙ/8)C2M$Kk@6Y"X"atT !놈;1PCxJzҦiTB)xWD$pDmOxj=x~_]l,l N:&#0Tz~ӾoJp0FDh%[0Arm%mL\FKџTli1$Ʃ5S-m0HHx#!\5}74yakzXXpVCİZx:WBt Y{ V2'@6Y"X"aT*A Dr1iAyl$T'Y'%'t0`I5:'TrNY%,˔APyB$m*TA_PuE.i`Pqȃ odNi>ÕA4םM-x})7~asٚ B=x?!C!>4\J (a¤:ŐۈG?!C.!g8O gW߿D?? +E&9_wʜ{)ᐕ-Sy5z? A $I @@$  @H$ $$ @IIA@ I $j?q 2t8U``4883dKOT'X%+J|Hɢ%p瑐wA`KSQ8a&^)$XRQ9 %H2A))#>I,*o "Rb %$ ?_IDў2+hР (=x~l )H&"Def! W $RE)qԘa>r;k~g 7G&CPJީ*27b2"u* #2K /S ,GXXT0B2h@ G`G;xȡV DLLaer\%@'0[Be-dn`B;(Q2K) ,E)0ȓx,%PP#*\XG6N.`UW( P2-!8fӐLA$A仦L ~%xFY#`4 Xs 3=!Dr^5W}p g@l3`C8):>ZrX`Y!ӊ!E$26rx$6n7G!x8fLv8A`K$#T `]4![@= Ìhjqe|qinK2v O&B&0iSY%%eg\Ówgpzæ| *R*%|"?¬DŽn=KYÖ(#У4XIcTD9w{DHp 1 XQ"6#A[BC 6K82{`@|`+׌p, q`eBHrx$* UW( P2+`-ga,2'5^P1BDp sD$ɽ k#p$rzb.dQ0NzqC8"4Qh)6gp֨<;8!@VdBJUL@BׄxeكǠb&)O#\F='?C/Xܟ&ǤMLa8[CkȌ,^\mF> OVpQa>1+L߯px=38=?xDm=>=?xPhBl1z>OF^Zty>0]u@P10;mZ#!wB=<}endstream endobj 123 0 obj << /Type /XObject /Subtype /Image /Width 333 /Height 257 /BitsPerComponent 8 /Length 8980 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDuckyP&Adobed V#      M P1`! #6 !1AQ Paq"2B#RbS`r43$DTP! p1a!1APQaq` 9!, c,5eW!O٥ S癩P ,.'O$g^reQ9Ha$zd@,UsјIG@.G* \3IB֝Eo8yɢT=ZS8%( ofLFiYF(gS-0\ `eO!2H`K4z4'&3<70d)"JQ[sr fiC@M&qle7 T\3̐Ysf9ENDMqJ 4$g'`9u}9gH% w)/ D\bթtg̯-{ E#mwMsel+oPҋxM] 9 $t~ 9u&ոvg@眻ggN@?N`Gд8ì\" ͛w qy ܲp~X%v N4rV [m郌oJ>˜-۳u=eT%h{"˕ t{. hC+t!W%pz4k4HbU|:r |nA=eۡ X#49Cmd8j*n8JGTpIJc_%xT%8;v5vSn%`%JB6l!hqqafSp%`>E>ƕUm_4-":V}okp nK, XJ2s4&1K|m."umȪJ6|e8FCmGѢ֞΂Cn%@ DQ|;&8)bgQ XJ(|Pj"\#zKӈs|Hbmo+BT"jKvnQ8ۍcY6;<tHc-dkJdIUҽ({]T掲.{Z(v>3g.qUuJ6bEd}_ "4yl}YI,Yg9mo^&XyԢO뾁J5.;׎6,˯2\)d`0e`{l6̃j>$F]~/y҃W& =vì\#fDd}wT>߯ TA/#d%uĥfw?9>P&R-0?tpaD"? ەik:&-8c4?Goҷ*{f}̍7Ǵ A]4ޖBзblUSˊ7h즪hҨO 2X襉Ҏk,ݿpsb"m4x@#=,۫N5P:t5",pP ѡ (H )g#-L@ /mdzrl;LPGtl–؎l_m[2X襉Ҏk,ݿpsb"m4x@'C\~N٩|,dn[o.dD5`#'5ë& ,N;l,7+$n9iPAsQBڊj'ggmevzsͅ1jgN)]58?2>wȳmdJiLP|RKd KK赉z9Q6d=+CZs\H.p]KS#Cʉ|n%Η&[lݿpsuSxAd=+CZsiSN\G sPWdFN?Fw QwRhxJYiwfj"W@U 09QڊjV̒s`s^tn9ŠZj*OUN3Br1|wvAk&اѸG)A#1BZr_PqFSSOWuT'aBZnv<;ȿ'RN۝_EH^-oIkEh7Hn!BVko2?q-1u yAtY_C6v:&%t{!0?!$Ќ:] m-AaaSH3%A$,F980-/hD3O'i34_895fʶPao`mpF*ДJ=)/hD3O2$TBf}a78mMn o;$oOnOwNSm WDI0>d^  b8P+&DI 'n1)*"+] HHGuP,Yq䲧\/p{yrl3(Xn\3L*+R0ЎR?R&Z]"@!L#  K| F< t%4MU+uB6`,J3_gݢF)ݓqs铑8SQF FƛՇ.2$#DY"#"RB(1ysBC5`JZsl >D4.4Fg)T(aLv"r!I.y}!ĸJ F3mINg>aDI!) eV4 4LSe9Zb" R$ Nl:N iN%a`IAlDFDQ…aDI<QwLC$<!3e%5kiEE|JF:'jHLE@Ĕ>l_{5Ein$KZ\V "pb.l2%ɣ jkli 6Y"X"b6gld$2dx/>Qh2"&J&LtD =u# bTL2@9RBI'b3;  !`? H$bD\6JʅԖ!-MP:ы+ Pl6ŲEɓ]gvdvjB&FvkTT*9hDp9zH-Y<FDuQcRZ&^{?&;Y@K'`z9 $ga DM &D08YQ-Y~slB>i_TSY1! ~02w%O*m26b ՖFz% ;Sam†HCo Ėg9"2DHT@`JмLZEL#J!hʯid!X(>n 1<ECjA:6H$,lP\H-6& %h7fTڮO&Gxc̈%<9ez ì]fjn`AI<`sLDlN=菮{S ?bOIq' [0#N1ykL=c@H/pĂ&g21e%SuN2֝Er'}5Jn&PUK3[r1!w-<dw!jQbH` HП?oDxb's dz2*^Ooo?W%mq/oo=pI{@Êe}xg{e_214}_aH{~2qR}Gc; g6<_7Mt`q;*?dU-4!6t,;w>uˁpu |~D ww%IPke8;wE)#*OGZ8߇aQ'IlFU=$7]?RϢRGדsdiwN3B?G; Oο8GPt ᳾WT-Ɵ1Ǜendstream endobj 124 0 obj << /Type /XObject /Subtype /Image /Width 342 /Height 269 /BitsPerComponent 8 /Length 9625 /ColorSpace /DeviceRGB /Filter /DCTDecode >> stream JFIFddDuckyP&Adobed %       V P 0@`!1 !1APQ"2 0aqB𑡱R#3bC@`S$s%P! 0`!1APQaq ѡ`0@ ,Xs…y^TsD#TǏ91)x?ry4X_f q#xb&IG:@ SXi͑'IfCejJrMڛi0\Cp\G6ȚL$|[өԜm IJQK"Yc(J kMM'UoOߞ+ 4_&m:Vݦ-<yڅW{pץ徸+-_ofupuޙ-,5mohSqs׿ެM K;r n6}QGm| Mya\GEcRZx- PJ+蔶&EE̵<tweCkNWC+%%mVP#?J χd4Ig=k^k0Ҫ\JJkTCGERAT @J@t:-'!P%>< DUXŵ^FeN!P%>aNZW碑<'*8 @C?Sa CuZ8ˈp%@BM:umt8ZVj,!P#|{?m[TºC F  CmzFBE:uw.uHֈU|8FB<lcYZfzKJ p%`> m^} Up-i񓳡,0Fǀd)tnT_W]78o7p#cPHNKhEF)1WC*vR unBYsдPgg'!F{5mN.VtfD`0GGwcMQ=iYL*Q#`ܖuΊ掲.gB0F#fU[Uzo[ANF>AF/xv[yΪ.6''KBli۵>zZl}U3,k,#[@ƍ1YdP\=s",tL:=Byԇ:E!x Fe>.}!s?/h}7h䏪0?tH0k!PJI<ώ }N36^z4d~W$%is#(|_e#RHLL##I>LL>*?Iq5/?Iz'bp 졒.z Z*:3?M̬|vMu#CJ*kzi<$:9YN :%C[`CS(ըOVtyevYX13I$MĕGQŭ,ؓ:>._ꕦt-:HMH./&#OʳR%8SZn č5lR^^t%XPȦqВ]J jFomiJ9gם>]/&;]98i[_8et2G@776٭fheՁ˘|&w;XP fl(;JU <)ѣ֪Iu}<{%?0<Psj91l[7UiurZ%Nx Sp- = RN\S MdVERy.,K#Jr=ʑV2^mCJF sӏEݡyqTm/x3Xͣ]b8$&lkWVeݗ^YSF9Mm["Ŋ6Ä7n,b-ctWƟA4>`\mCPyj m(m%Z/rB3CҽPGs\2u45 tK\mŦ^:mG^'̥Յ,Rms$đ# A)M)yD~kcՉ)bbF⌬0 4wdE :q>{)$_܎ye: 2a 򮣦 Ck[GQOCKJcszŝ=9ևaX !TbRh;_wǠĆLUyGHKPށ]-0<.>{g!럯I#GSPAȃ/*6VS>;`krߟaǨc,xO0 Ok)kW֧h<fע4DQБZ0pc[}ܱHD+zyuYB6XS QȼK]E +\ZT'GS½HZߧy1#&}4kPx~&e:)TRw/unυ%f\W=8kyRx_,lM06{[QD2Џgy |fdN?R {(3£U@?Ĵg qfOz+^5ZKIEuIA*̭N/*6VS'oƾ%Խ@yucq̈́hTs˃gz#V#J\'3޺t 5djimFiuSyRk;Zݴr*CX6 hAAn`e hQA[˚:; uۆJ;;2G1B~M0y8mHvoV7^mSYB Xo#^lit)_!t!>a6Ě(KhEi}#,pKHMU#+3mڙ^'˻Y^Vh[0~y0~#Iݜ٭8=Mk,IAM1d=|86jb-,H̠aL{C 1i2GE܋:i0%)Biyk/VE%M:,kZn6Z\/£1Q0^mnkh}ԵS ?gk/'604e½sh(]evze.PȃMXDВ Z(ژKe81HvЩWWaJeYfXIp9@h ']_>nBOLy& ǣ'T<~CK"% h40ە--6xhJh^ "i <ɂ#Hª waT !SG3.5ߢ3{tK6M`z'YiZz3A[A\ LO[2XؘJE !ZG R<T YZt}lP؆fp(y~˯<݀wEօS([FraM)9LЀ\K~Vވ=hZ>|ǐb f:r`10D]5Uk]+x~1 lË&^SE T) O[2XؘJES+hߴwADHT$,AnJav2<ă7gĄfK>"O=zX6dD24ЛMaPT;=%Wq%F*)!Oɂ#bt.RƮSǺ}R "" ""Ģ$(`Zе.ߞCA0e`T´~Au+]49:6S?cޯDEHEd/'Df  @A@ $I$ @ A@ $@ H$$A$ $H $I H A$HpI{%`D88$t ??YR H|#gIa0q$ZV禢ڋz?:dSV^ci@ @@z2އ\<ڜ w1$ZFΈ]P v3C1.^r Ȕ DFFȴ.iQimEl9KKeїd7a6 ˢ.6ӢyDin HH' I kR+[Sc(_& Uc#I9(?=}MY5 aBE(`DڿP= y36 m*d.N8hAζ7)=L՝lieE}p˧q*A 2X診q\k#EPv},ja*<(v.Um7-fpMCc)w_/?)%PGы(SZ HC J|-Z C[J "URy3Oq2F\C0G$AGUB' Pd?qY3O+NO%. h X>GZ2n_T%NU"P%.CNfBUL %)hS53F`s*MT lrD]ٿ5ySjAЭp$n*8Q,^t|[%S@#\ /O$lB^{?lIpK-GAx8{ jeLH"f34 ޘ@(Z)1.64dU|AaJAXmS.igF|*V%OySjAЀ؂¼If1%%3E3 01۩w,z9W C]{|(TZ\Zљ3^`>`%!om ER5?Bp diDkTpQ>[19e'U7jyYư T d.N ~[C"C35 f@pYoZPZq'@: Yu9}3h@8 ׌Ly5}-T UHʐRJަB+l0[AV/My5̴(.8$]q#H$&΂ ",ۋXe2Q(N@,y瀔fxs-Mw(d~NI=8I|#LSE5-i@G5k o&մZd ,"FBt&d^O,C!W8`8 ׌Lg>̜BSg*.ߛ},\H`Cl QeǛ DF8[.z Z]ј"z8_Et${ Z q?YYx#:~IIa =+۱egH8#gBjW *&[F&I"#.$4>ލLcLoCu/<R><^fC 7*ޘR_g/a [NY&YAI5.9մe!]QfoC3XHyUSH""5LǙBdQ%p=z C?d|7@u:⮈.M+{o@[?D U0TYZ2a PBԚR$H}iXGN46 ͼ~іg#kn2S uˣZ???-Q'~C~^ ~GF7ϷF 2{kYm_'rĉ$OK{"YЏ,^:H"DBRLɓq"D#Pd?;EtIF_Z bS/\_d&D!z@ g^л2λ~|?"/%5o'3kPNF0rvr7*( }*o-}:&烷Ǿ0R б~>HBz Ą%dIژG@DD*=g?a1&՞VoSC|=},DI)jak歃*lу1!G)m֬`c@xfKG髷ٛU:EDi0*l}قR»~* Vw>gendstream endobj 128 0 obj << /D [126 0 R /XYZ 81 757.935 null] >> endobj 129 0 obj << /D [126 0 R /XYZ 81 733.028 null] >> endobj 130 0 obj << /D [126 0 R /XYZ 81 499.32 null] >> endobj 131 0 obj << /D [126 0 R /XYZ 81 262.88 null] >> endobj 125 0 obj << /Font << /F19 22 0 R /F15 26 0 R >> /XObject << /Im8 117 0 R /Im9 118 0 R /Im10 119 0 R /Im11 120 0 R /Im12 121 0 R /Im13 122 0 R /Im14 123 0 R /Im15 124 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 135 0 obj << /Length 610 /Filter /FlateDecode >> stream xڝTK0WpvV==xCPxHQ6x3 P/JYVIM6p7hVQe~ W?HyNj?iΝO֏Kz}ѮW~OE4¨4Ppe/8'|qi^C z`d{{AҦ`?.]&3% or]` K0Hi,+?NYJgihjи@F:,5Ϛ&a"3 Pp'@\IhJ#ނ3ڑnZЀ\%Ln&Ög( s( `p&gaP3.';`  ֣iyMn\֣_Q:2h57;()oañ87nYK=9fԇ=lF~.~_vGuARfMړ=Yz 2CF`&e;i6ÖZq0 \|.Na%n&}_^h[~[CXVC+k F | +Zߥ)X{k3endstream endobj 134 0 obj << /Type /Page /Contents 135 0 R /Resources 133 0 R /MediaBox [0 0 595.276 841.89] /Parent 132 0 R >> endobj 136 0 obj << /D [134 0 R /XYZ 81 757.935 null] >> endobj 133 0 obj << /Font << /F27 49 0 R /F15 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 137 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 104 0 obj << /Length1 866 /Length2 2252 /Length3 532 /Length 2866 /Filter /FlateDecode >> stream xy<ǓADyȾ̒AYDxm3̘[٣K${Ȗ5{Y Kז љy_swݿw%Dϙ)ha@U@@4C" HH #tTP@#-wg T5T4!H&]4RIr8 TЕA3"R) B!a##@`ߐ ND@GN) (@)0DN1q o@]hӿЮ8?-DW;$("$~Z?P >ax((z8/{GŸNh<^ _!3]RLCTsoҟ5/p8ad?~9M!bqgา &a(eX 0(Hel]dȷ*30~(US1fCaߤ"sd߅{6(Wf p] A}@g8bd@~=cp_1AnU(`'4^ ]<0D7\繄+N|oX :)O Vi:}`ׇy:dؖ0 2:ZEIrK#'<YJق|wj$6L".(\!)77;^ jozR9y>.7I,з>و·p6QEq#x##%RӡaiwC,wJ$B5 6J3r11qys̽UR0^my/Bm[b)TiX\Չ=-q< sW]:h[K' Yok )QfZ*|vH0 O,Q'I ,0>󅣱o՞խuuI{O۶_}=.؊kʚkK-('ٜ_ wqETmNjKX>Yns |""~icΙr OH©}C7ӁHE79b x>x&μ_ Pk5e_[9`:&}?8<#jۘCxSuo╵ؙ%$88wYAXZ+ZмzEsyRFa'67RӪԮ ;XZ]dv?%>ק7w=L0IΘ'›q'2|.Mafo{⁜٨EjIIָfEZht}#?Nh(NNo_qʪIa~}&PBYqܑQYzY./&tpP­ a~_U T:S#DZmkRm fIdAALqtzC3,ьS28kxf!3BmkW|t z&ס;JJFQSu|N[딳\-Y֩R! <%΅8ˆ]֓2\~(+uC78V̘-l_eLc2xHnK- H+lOd^?!-|&iә# ++xNi}}4!8plVK^}`}Jo-FsOwؚ ⟝f??(}3 U-쥓&=tmVla┗fe}kC񽁃NHadPn2ܲKhho[ _F"xv_~Saz( i+!NЇn'mM:l |VV*+{Ja}Aw]]DJx^ح^Uz Iմ\_l<"&ʤ2gq)D_ lJ!_I_`qY0K2^tiSnKMgI*&ܷ.u})᥺_^i;uS)C߫_TP_Xxn_B4(ȼDy.O8p/~;ӈoL065Iϖ*pM(w $onSjvh+wNR%?AUGnPf.P g>Co, < "55 ~nGBT/ZJJ6wb}\/:"-j0D^+F%粒fRwf0@3soW <4Gv?J?`;ؖ+M#WS,AnmS-IJ@NܝHѳfhkYCضpr#Ol|Ru>m u${=dVƪ^T?| A4JtE/CUendstream endobj 105 0 obj << /Type /Font /Subtype /Type1 /Encoding 137 0 R /FirstChar 75 /LastChar 121 /Widths 138 0 R /BaseFont /KVWYEW+CMCSC10 /FontDescriptor 103 0 R >> endobj 103 0 obj << /Ascent 514 /CapHeight 683 /Descent 0 /FontName /KVWYEW+CMCSC10 /ItalicAngle 0 /StemV 72 /XHeight 431 /FontBBox [14 -250 1077 750] /Flags 4 /CharSet (/K/M/a/e/g/i/n/y) /FontFile 104 0 R >> endobj 138 0 obj [843 0 989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 613 0 0 0 558 0 641 0 302 0 0 0 0 613 0 0 0 0 0 0 0 0 0 0 613 ] endobj 139 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 71 0 obj << /Length1 757 /Length2 1099 /Length3 532 /Length 1660 /Filter /FlateDecode >> stream xRkXW!jUA/؅"HH[ rY0DX0$CnOkP(M^v) ,lryimkYp}l?}{|LN'E r8^@"LSxzr_-.lyq=\iJ-)`/4Kr|BR!0(h )E(- 1 gwQ!d""cAR "rgqpݖoDTѦ=mr-9Y05__abVg(@1pBTS BBkk! U+棁R>.~BUPJ`L\6ۜ|ǹלD0SZEgs55 j@fsh"w6\JP7IB\ЕH!hh,-$ $4nlL%MwM\h"n'F5Gk!U$SsCCC4DH wFҷ1/rBo/ 3>2Hdx1ƘMZU԰NK+N[+1h(7{JM߳܌vt\Uzx)*D]_Ed2Ŧ.df' w2:>!ͦK{ޭQO]wo+xC}ȉ3'}{5v9xߖy0o[۹_޷N>:8wlэW֓ yp~|e>6wm\H| ,1?1E-5ԡ?$Y5%\ O^ĕ*y5ٲȨs8i/4sg0j csҎݝ1K-FE͇+A.2xڦ}YGo/:=H4_ܴ-r!Vh}G=XjҒUð{1Wa՞-%r}bsoVZ3ܺ{>]PRtrEXA1;)جepA_.9NOWNCFO(?Hz<̶M3}6o+$KTcjQ?̫iGD/";I w":yzxκɌlaFGcGEqo\HD8\ߞ%; l+~*i .gv)&5Z)]dP҇&Y}Wu#u?!7,["| HݷNdgeO-ԃsO-s?R$jW><tkZ9>rp&J5d7XZٗ߹J˘7Hl-CEf5;O`Zyգ:}M`-bI˿nԀфŹXVCAEKk⾁ob|jrڰJK66PxgBM8Tuh}1 Xϔvڽ.f1ͤ߈|WWև /~R IP~ߚ4wendstream endobj 72 0 obj << /Type /Font /Subtype /Type1 /Encoding 139 0 R /FirstChar 50 /LastChar 50 /Widths 140 0 R /BaseFont /JUAYOA+CMR8 /FontDescriptor 70 0 R >> endobj 70 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /JUAYOA+CMR8 /ItalicAngle 0 /StemV 76 /XHeight 431 /FontBBox [-36 -250 1070 750] /Flags 4 /CharSet (/two) /FontFile 71 0 R >> endobj 140 0 obj [531 ] endobj 68 0 obj << /Length1 771 /Length2 1124 /Length3 532 /Length 1693 /Filter /FlateDecode >> stream xRkX D׈'WmV0MHBQBb,XB d$@ J@Ċri^TP.J*%j!QAj]y_Ϝgkfo[Vt(B v=3 wp$la2 9m{:# ʎ TdbzD2"'[eKv@ '>(XWW,?zi}Kנ շ ctм !~g>h*_ȿ Iͼ3 ۩͊(7P/xcv:mM'R8W@ dJVRs,eB7Wlnce`Kik2a2 Az!$(L֪w쾏= 4?-gM6l Wo䓉^nWMՐ:ݹŝMKh{ߞ_e( e?/ByIsfSչVQ$G8CFՐȽ7Zh{)"naoƃ1C1j<`Yihnz7P&ߏ}L0S3YL gfsyEr/u%.KE|bUtʈ0?)Ew95n g:d0r#C1{r-FDOE_vuum뤼57eqD׺<*  q{5v5m96>q?%es=#݌s&KP¿"bendstream endobj 69 0 obj << /Type /Font /Subtype /Type1 /Encoding 139 0 R /FirstChar 63 /LastChar 63 /Widths 141 0 R /BaseFont /DVJGXD+CMBX10 /FontDescriptor 67 0 R >> endobj 67 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /DVJGXD+CMBX10 /ItalicAngle 0 /StemV 114 /XHeight 444 /FontBBox [-301 -250 1164 946] /Flags 4 /CharSet (/question) /FontFile 68 0 R >> endobj 141 0 obj [543 ] endobj 142 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/flat/natural/sharp/slurbelow/slurabove/lscript/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dotlessi/dotlessj/weierstrass/vector/tie/psi 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie 197/.notdef] >> endobj 58 0 obj << /Length1 843 /Length2 1672 /Length3 532 /Length 2279 /Filter /FlateDecode >> stream xRk8X2jECL2hcC!#7Lf3#"R:LI%)^rdhA%BJd}s?{_"hd? tC <O(T8 CC HD5A, `E" s#ds 2 O>|&c2 u>` ǂ, X9;bo4K 1rSj&d!n<_~(߰pW!͍O/uÍSE  P,~QAG!`p9L2 : n7ʉY4p!NnC!"~Q X̉p/.s| , ##8 8c, -<]#JQYsk]//cJnz `izpe,Q>gVU ~61+ҫa&-нon2n)?8(5 dDݟ58LG{:~DfxC[Kj{%n1 KzQ6WJг-7 5(K+]] VW.w:9h-W'TYCG\ڻeφHg;,*6LRO֏Lż[`;γ84mUiY&/;3S‹%H,}_X;F΅Ӏ+(ݟ֠!Giiq(to`X˚M!;z" v>^gx(AR{Kԋrٙ4oMR$.f=m}!&מ:]jr/ 4?r ɪ󊵐,'F8J+jӅUQWՂ-ؤeFbkqfSɏ}g۔祲{i[ߟѼ=tڊʦ a 3tKif8ЬnvDZ7<7oDAP :_ZfsM}*4TbmRM&(-G=h8"MRd*q^ם5W͵+fs̑HO=uq纷vL*t|adЈ8wܤ7^[%.Ѭ1y6ѲhꀨDLk/+H++\?'* "vW[5-liZ~ʽd%xn 'o7A#ۈX|'^& TG-)δ)gשn-Z01q2>n5IrEC˱Rc]J[եwe/[O:Gu~&HX}bI!0X@#>rxuBߚ\|H?ʮIE낁+t#ȯjK=`j{b;-Rxh^d+d_}uLJ0ގMմ6OҲVWE~zr9zx2jm'δJVV׶ܙj^6e#ϮVͳE*VSZC K͉ĤHV,3O@9mgz, uz_~tQmʀUBMݺ>lΙ~>}KdLƣG+RCIFIqC$-XwI> endobj 57 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /ZVRMRA+CMMI10 /ItalicAngle -14 /StemV 72 /XHeight 431 /FontBBox [-32 -250 1048 750] /Flags 4 /CharSet (/period/slash/greater/m/s) /FontFile 58 0 R >> endobj 143 0 obj [278 0 0 500 778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 878 0 0 0 0 0 469 ] endobj 48 0 obj << /Length1 1140 /Length2 5556 /Length3 532 /Length 6306 /Filter /FlateDecode >> stream xe\T})nPQ`jhcbP)i PJCB\7Ϲ:]k_QGGa UBQ<yM} ~>?/+< Fp0 *z8yaq!>qt@捄98d]H hQPWt(o^ @7zPw(jKAP[ Nˑ*W)O(m 6 @[C]vP{E;a͕<\\{J#vxWE4vP$ӄ<\UE]`Y #+$0] Ӂ {;8nO#mfeNGxA|w3gyxхOSCv08z-@0 &@@_~ n@Ўp ==Iס @Go7G(Bvw!1A| 숄 ၼ ܡMG#w$ *ڌH-|GhY;UqGh;B+hZA?$X;BZOzw$k `7ՑCx xsBC8TU}||"bG!H$E^d( !@@$BRkËFJq?I/ h .9'A16;JRˀvG~ݾT9oB6-zfDM1=| d+(39*imUF/ÁD>h|دnEKIxP?u~Un)>[:>7 9rӊ_NL4Vh}'"}F5*Q,"<ťR^_hek^m.7ܫm[f W}ty%tAAjɄe*߰|z \LmU`ﰌ|b%o ~kQ-;ogMJ@$l֟8mv %s?}ފ`9~FoN7z#3iCRu~5eñ>?Iywܩ-* VӼYץOhR |:;%?bv `Sm˶]q~{p{8S *:7z:jv (Mw6 5nF#m/,\ \ZV=smI_c'0OsBTWA߸b rr (xkнΠ'Xq\FTD=۩q}=H c/ CQBQ.0qEu!.NW1J<'#SLaSk }B<<G}b?.{ WB03Ng.+lt KfYL9@K߮vVZO7PCpTqe}"8_i^epGT3dn!yu 1cc_±jB0~I7]Q޼=N hK]:}a)ȸ ##^Ҏ% iWEꈜN--`~wXIU/`}A,שONS!iߵ/.NBe,˪G3Hp:6œMY]_lr>܆g kv8"A_E 0lU]al/}bDnPR^<QdIϠr9V.dQmXŹWwKRo! _Ho歼ɌwdI3DEzB ૄI]zbӫ(GAw`86KNu17i̱J..=惔ȴ| Vƶ֯;&mgFFIGڥ YL:ާղ>1aj*7*5?bM4 eРČå;cnz!DxF[MD+ps5DznG]-T:>j6b)];(G,s㗫HrF`B/7p(+EՁshC:hfC[g=o&$ O+^śDCm`mlZY:w>cX+#q"iWT%f5)DAO{w6^1lPs?! WyJ+)EVj`kpnZ5ݧp膂Q ]ߴck.22)o<0q*mIxc75Fx[È#Ez˶ LgUq?);X:'],c ! O7KS¼^=H]gs +|]fdcp0f©|e!Κ۰jxS-xBjVAzp%G<.kD96.8(.:^{4!ˢ"ŝѪ#Kl6X&Ulb/Y~VB9z姇ȋ{G+Y\5s[ ^IGhƺ:hc˜DKZTjħ=wO\Ri!%x  u.E_sc0|Eb1;1I΢П Ԃ몝{v6䄢S'fe&6.z 3Vs~.;I&is?6WZ^R+?falV F8 D0SD|K([? yMWr1om}'q&MCZ5``tۢJZؔK/CI#J G~ɱa. |z~ۜ3[ IAfMDϼ+à/ C\YG2FZ(UEB:Hl (Zᚣݠ?gE:^|%gޘȴZƨuœa 9QMxL7⫝̸7'*13!2ԴOwYSNnwF 5V"^!hzXƪ.@64yxa2&$Dr}Ӛ`㢉_&~_~PuJό8NP]%</&,ƅwKnJRM2=dȗq&%&~]Rk &9R-If* ]$Ӏ\\_$$H)1<1 %vc$['q*(= uh.gT_rdӐ32BsAGrT~G qĈ8Ji.nˆEueєW}C޹y Sn*"|("vYVNU^f⅛Q AVZ5VlWUM6 ĉ;OSH&+Xw3j84I$H;ntx)G9F(#v -Xy)Ci{ls hkLS_E4![qWNe׆E#Ԅ^}@*mze)k٫FrM3h^W9@͆w2}d'ةQ7.ƩOW*m~81b}'}5wKž>ٹݏKI5?Lr?jo3xm(#Cm+3GA%?vKKˎ4S˜Z!W!C ]2D+C)e|UK}z]7*ífM/-oakK7T|YL1jı F:[k‚~p3<2VO/C;. rI lb_N!Zt)5Q>waT&R.СJS{Q}E*`ʳm㛺&zGa.m@ n_fI Ni2UٙtPK6jo6-,%m)7rʽ9ej^'qaE]- ߧ%b^Qw ίQ<\ftwo)>,}PϾu&z`Sd&Zaf.r)GD_De睷zϳUK!4^AUxN)] .BҚoɩ%Ǿ{U5vZqo.5"*D[b"S1={\q̠[o,9Yk1]{2;Ne*j/jq*J z(" 2ǚ#)7ulfC&z(=RiLOuQ$cU~>SV((%peABvmn`Fp+QZ{,.?X)yZ'Ϝ&<'a*g>soaB^< UtE?#QW0ҙendstream endobj 49 0 obj << /Type /Font /Subtype /Type1 /Encoding 139 0 R /FirstChar 45 /LastChar 89 /Widths 144 0 R /BaseFont /JZNWMF+CMSL10 /FontDescriptor 47 0 R >> endobj 47 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /JZNWMF+CMSL10 /ItalicAngle -9 /StemV 79 /XHeight 431 /FontBBox [-62 -250 1123 750] /Flags 4 /CharSet (/hyphen/period/one/two/three/four/seven/A/B/C/D/E/G/H/I/L/M/N/O/P/Q/R/S/T/U/Y) /FontFile 48 0 R >> endobj 144 0 obj [333 278 0 0 500 500 500 500 0 0 500 0 0 0 0 0 0 0 0 0 750 708 722 764 681 0 785 750 361 0 0 625 917 750 778 681 778 736 556 722 750 0 0 0 750 ] endobj 145 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis 197/.notdef] >> endobj 40 0 obj << /Length1 1726 /Length2 10894 /Length3 532 /Length 11888 /Filter /FlateDecode >> stream xUX]Cpwi܂w i!Hpn5݂:h_Qg;ޢ|"n`f)ve`H*kjr8X%ii%-M]A`)SWKA'@ `i^ k+A$>3 P6uZCj4A^q;;?;\. +FfǓ<_a 7^rtv0k1iXXZ!8@,!^߰?˸٩SN_ ;`j PvtT2lirv sq%B {9fol?=@:6] 5%vrOe? i3`/$4pLM!B<la fc;B =X98#Dxlvv+$`srs4wfOOf`oo'`z9-B G>?!> Om'\=p@lWD/e w9Iᅔtr\D g2sn^HU?( ıWAddr & RC=?SC=?D!i!q5Z  &63SsB^y?WCA8!-_)oBN`B !gO!Ĕ_qe!o-/r !B Bln!Ć_9!6b+Ww%eo\Yw: /(rN//s3x%^ݛEu/"0 4Ceh\) ;Du"K+v!P *rN S?U4 5qW3 ru 7V(`Ork92kuBte`XlJ.g_JTw P46|͗QǼ$_Vu6/o! Hd-wޤEvG^v?|Bs{.czT ?6xw)n奞Zߺ-%G(_r*"Yyȧ#NW5Ug)Qn]Y턩XN#.6Bؐ*Y1O=Ý$a}{.KtX =+a-H?p[d|:̋'zVQU9L:1!woZHB#qVExQ  _%gpkiIU(ax6NT2ƌE$NYbfѻ n'5Mvj^;y %NfG`TS9LvLnᰎt[jd[XIw$ߠΏo3E{gJOr|e Q6o}EOpF,,rxȲwf /#pуfswwGxLBڃE1 ps纝G)0Y?ө'¢jƒ&-|m٠AJajEZ0$ UFݭ%U;ѧcrxt Xg5uR*۷zAIYKg:zZCj洲q rFTS6LަH)]j~a*w(pR-gavXbX9!1ZnU(N9A)] ȰHGsUxzEĐ谴g1d3EK,SU9J(l*t\ݝ"*W7S{^\7M5>DAwv k-D1tbLmj<,H  n"Қ;+j8]Wa =#Ǿ.ߡS a(t𢨵Ph<܆bU& V~ [bBTe< ͂ Gl:;Q5š,^#mTCXγ4;@,NJDռ.JBЅ!Awo[˟p b&+_C7w~s!޷? zp<rBX2GG~ !dҔH=Ϊs%uG9JCM cOŤLj1BN\rM tN5Gs[$8C]}w5n4#G+}t(uPmOv258rBłbN h*8r@b%Z}Q#f#Ci.gS?D;L,,}+&mhFqPor$INE@-C./SXZ9o/ZR/>I gab܌%; {IdhӰ]P>NY_J^X`R'Iu$ mlØb,#G]5Ks fa DcvX~6VC!Pa qBr*q{'8|POR !R"{+U䄡YjZš"CRKN*tK g~* X7Lu='o]R귳2)sř=g>k\՗W$'(~FZ6Cin$dr.{@ 5;Faŭ֑xnT-NMfW$O8K*sB3cV蓵bau)8? >˃0>aG;~ZSHeU]1ԭwj_̃_r5&uDk*9ʶV9BOU%?q6T^x<Nsҫfv˜N\BeϬ;X\'E,b\35P Uߛ-=#ݚdiXK}S.~,DZA'bRVkt8հw)(;Cg_[WWg3ƛ%ف7? a+i"Sެj~EJ;^v#V,P G0]U:xw'j>ς<#On8-Z4'bł-Xj:bG-XbgB?޹<̳=xJu=A!xU& ءkkzI1N%=CφR؇`b۠iH;Śa \2Ȝz +VaUkKl3j?[z5DZgF#vby"nQ(?Oa%IsqaNެ ~_)QOJi.N]E\O?Ǫ WyMq xVP&@"O&;ҜEp-2pBJ:I #Hygj^:ˏgQgEeg}@>Jx~JUS=1"W/7". ܌Zh *ytPGΥߪa&ȉ6Iϫκ>RU+\ǶR1z0^{Q `'ysȄ\@c5OL3TĊq0gFSYė_==IԚ+:k24iftj>sZk<4b2uuY>6e]_V#, U@S`SDF ,m4_E~Biorn;Ew|[(4w@'ã.L].Gb)h}\nωl9^JdűC;~syl*svZubxr 6/S[+l; "`au-Qu9LvIc%Gy!Q)\7 _֥?fq6uy iyt c-hNX9w Zcp+(}3JҴ-d m~\7} . LÔOIἳo?z z[$EeĔ8Ć2 +EܴAꏖ%AI:"ٿQ-!% ^H?/|fn,H1Nx2jZx4yj;:a&Q܁tbٚ48>>7qA̠Ux 35oQ/,;"^"*^ni6=7q7ԼPd [1R?Atf|gwIu`ʖm@SKɸpmI0DO$-8b,SR9&QjC`)ᓸ1{I&(i2Eۃbå(UHEU0bVڨ|-@&Igt9TMؖ^]kn&S|ˆUk1F( O[툒as:4O'{w @4zrg W^ѠnUzۼi˒f.PdM/vcճZTY]o#˧:s_'e; 4Wxq}sFA'7i_q[ #y|p+_ gSsdv69\Ub+}CX7Ϝ!pIH YGDm;GMgN/FXI쒕/Y%P3fiL5BO=m 9-BI<}_Lqj%*bknĚ 7mb ?mT"xLqmpF P6Wxuѵ\LU鴬<;u%՛І/1jڵo!RWQ5.㐓nv,G#5:dwKq$> X,9qYcVNzy1A؝3,=EMϜԌ -*2qN"XN'T5"%zsS.U)nDPK#j}5+^.o>3M`(YAG5/,zIT_Cpm#qSG R=s(m˱xԜsQG4SY w%`? 3<4{պ;,D*?%'q4 7_hx)LHFP|ՐIפKE(})Z.y Q{ 'J}-JN16?4 ?#fM1 *G>]TO; ݷs$37-qd[զ\m?TEOK$,t<n^iP ¾H -u8Pzg \L%ycTF#gDFC\q2:wJ0gGȏ}s:/eWs5C#shC~í}q?Fb,Gi`T0A+i\‘-&_SBu4~XO1޸JQim+@r+97QRvbpI\nkt%ԹE{JJycŊ1_QڝBcƊXLRWAuxŏvBq0v%]p( .%ayD x_i\ EaE/_3JZ=Ŕb+㻸9Cj3VjîÄ? ;M!hde LǾ`do'ĜrUڸ#rT? hPX~" Wfܭ\›sfD~]:y@(5哷S{NŖԐa4BRGex/wq鵷kp&IGg)% 08"hm#n4sY=_g-c5"x{LrTrZ݋_^Iެ}ߎ:?P/`G/o]VAf/ky깃22D  9OJHlqoC9HFژu&5_Og()\$2m+ kQYhBtޓ_POp8|ID7S0Zak<+yn#rbKNq]"Z1(OaD$= "ӹw>OLE30- =PeL߲MoBs׵hi8@OUѼCVh3*`'BzւxjgyL2>XEqȣsڝZDȚ5er|@_`Wb-{ԣ&V sejߏSXB:Fą/_(` X바I6x;aEelj¥!);)\K;Ia(6 Me9M;xƇiV!Tz=gzAy:Rg}VΆSyec !ƨ˘5,5Mn2/RʰKDҴϊfnA%ɎTu$z{F2ek}L5|Jʷq53ˤ/(%Ap1x{v\ܢ=LkKϛzD}=Y&gݲ?>pDjLcqA5zsHA߶uOi&L4pnbq0i[q?ֳ!3#A|`ruXً9wn5F\z,k`HWY@D!L41U;~Oynׄ(8}xZJa~/Du:Pܕ07\P6x9j+!)|FWTp GSߘk{Mf(gDy kz,x!K/T R3e5qR rHЁ|$O&U{Ծ*xP?DYյ>&1"` ׯTM# Mj bjc04:1?FO*KA]U'>J;L0xLc‡`*j#7rÝSu ~p|ok+*%Lڐ114\F J*m&\I/Կae!$cOBw#GLNpQ .iBI1SR Һ#֧ 9#3nxXLnty tG`4ɸ|^U iI&|H~G栤Η$WJ 6@NY5'L|ILi "1-EAvSķO,Y*RjެPP[Ri%H% pCu0fѯK<2K&HP<$qPi*W>zMMMso -/P­h嫉.|v-e^RQ-(C54x,"8s*zd64F;4?VT%[SQьoP pPj5n\Fa-sעTv"څau48 h/`}$7t7 o_<8 ]Zx-p$hQ@!"DędHir4[s}pF/̱;S#8`?zRBΰc'iRs{7-kmhrםok%n"^S_MZOO,-q/kE'BCd霱*o'N 0s4$V~tG=|>L-3#4Ίj>U mp\mέ\bV8[*g7m`?eƑA{},x:TsD{f{_V cŴ} koSN'>i761`*O=] j7grut0,{7zAkdXG߲{o^sVsnx"1cFΞ51d=ugVRŸS+kqN:#wOe ?ȽAJĜ錊lJE9hԖ2u$Ask.*!6sF287^%BGvɉ0+.lnڃY5F)L+?ú%ad ̩iEHvr bYW9 Θ#AЩZ /Z~FoP`A*i u׆{i#-Dfms5K(P2 ZDzEq|i Xq?U3Q6tҲ h@8ytZNͣcyX m *xC]A3 lOι)TAq:!JL?XgFH!Ns)}TOxۢؕt%1hЕAY6N]HJCͅ!}*%?υ"/B>c4K)ݕŏ+~ PO)z㳀^/,B^= tczFm& D{RqӍIQ'vs9eߔj@Ob!v+k wow IWG5 =/=T}`7g[ 8μ#Yni[g1$)6fC2x;bֵ'/6mM#\IGgOecho P콭oV6I1P.~W]mH&r{%Ȏol\ɰEa ':dhh I#PBW'2`0i~1xrS =Y<|v/vήζ Zendstream endobj 41 0 obj << /Type /Font /Subtype /Type1 /Encoding 145 0 R /FirstChar 36 /LastChar 122 /Widths 146 0 R /BaseFont /XSQLNP+CMTT10 /FontDescriptor 39 0 R >> endobj 39 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /XSQLNP+CMTT10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-4 -235 731 800] /Flags 4 /CharSet (/dollar/quoteright/asterisk/comma/hyphen/period/slash/zero/one/two/three/seven/nine/colon/equal/at/A/C/D/E/F/G/H/I/L/M/N/O/P/Q/R/S/T/U/W/X/Y/backslash/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z) /FontFile 40 0 R >> endobj 146 0 obj [525 0 0 525 0 0 525 0 525 525 525 525 525 525 525 525 0 0 0 525 0 525 525 0 0 525 0 0 525 525 0 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 0 525 525 525 0 0 525 0 0 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 ] endobj 147 0 obj << /Type /Encoding /Differences [ 0 /minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft 129/.notdef 161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus 171/.notdef 173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade 197/.notdef] >> endobj 37 0 obj << /Length1 772 /Length2 576 /Length3 532 /Length 1127 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`z;kC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(ZI? % q.L89WTY*Z 644S077EUYX`j```aYriQQj^ 8 OljjEj2k-Yӷs]|a>k_d?nvfJm@%>wX,iG /vRfǝ%ش9QDod;U? ^VNvK{~/t-798 mi"6=!y:I_K-,1{).o *[mF%s_-j(ls~gغ|K~#ﵾӷ&g]p_!GrnM`v^Dl>Z`.xYh.#8w6O~5{ބU7807k4鹇W5ùf՟VRŗm_AXOjW;[(ϴu,n q(ﻰƏA+̻3z^"_ٓO:~UIH$PkR-y'y='sBˉcWdtD?:`w[K_ȀB5j0 9'5$?7( yxendstream endobj 38 0 obj << /Type /Font /Subtype /Type1 /Encoding 147 0 R /FirstChar 15 /LastChar 15 /Widths 148 0 R /BaseFont /RPLUKC+CMSY10 /FontDescriptor 36 0 R >> endobj 36 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /RPLUKC+CMSY10 /ItalicAngle -14 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/bullet) /FontFile 37 0 R >> endobj 148 0 obj [500 ] endobj 149 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 33 0 obj << /Length1 1211 /Length2 7000 /Length3 532 /Length 7778 /Filter /FlateDecode >> stream xU\\۶q) N;Ep  (ƒ BwwwwMh>>z1߷ƜQKG*<@y*?O*D _\\z<~""V< fks$ u-`K鱆#Pn "|x@VuP7O(@+-˓ (0忧} T>za?+y8:jZ:UNyK'e\<P7 9g!_P?gU0kYg[G(_O_q т!6пPg:y>@`Mmr\OjYœz>.P ?3?$77ЄCL9Enn>CH@?~ Bx%mnUHq:WHry-8䟐8wܡ,M@?$C5MbB@?XWxl@У?ࣤ(v*|?Q|G u]G!?@>mx6y~<"@a\EL}gTU('& w ?f]BրIk7%y#E4}N[$wkփҟ+@ezW=~iS6  ]7*zsGS9t¡I-{R"ʅK}EQ~XwǪCf21b&W.{7,ւ+fAt:Z-@YN=_eo:m(2ȺIsZM.y%[M{XGJf-N;z:a_gޣ8WJnI5~TD=r0*mbIG??mFl!]N"((,B%?S~w85Zn`_g;,2DŽƼqA#"$ a)6R|Xɥzb]ȹ>QZ239-pbo,R뎡syIֵ\N7V21,d\,0[73g k]$XyST5,o.pq\z)$~@*~ JmOb;6lt۲;G]2q%]hf Tn\~xˉۉv2-I2{ܗw-(] nyx\I9l! \'fτyZ8*LU"JQjER]x>?咟, ;O"X]}1Al!c):niďviARIJ9UddE#+ $a\cY+Tn.;KBixӤ95ܒU}Q_תYގ޳/EҐ;,{ſ/Xl|y\dBc=ߚbH$x$jnYʝ\# Bz¤z w1ϗhao4_ &uV04/H'g'ڤWZjXer;EbH˃~㴙~k)1dVx)%tѓ,709@Gxiq0?WH'pm HNw%H=Zl0Oa)RdluZ*J*kNTh ] W|Xr?>">(ۖr;^S-r U96H6EmѰ;ϩ@ۖr6~4go\ip/Wn^ܢOĺ&]4,%=rդn.P`tw,)Lg'(0($9I^PG'ʾXZ Yr09a>A^UēEQjSc7FN\t' sG$9Rc')$v:ךI#%I,&K7k54[lBXK(/St=ex%73 "z /uU3+Oc hDD\đػ/TZ=͈pnP&~;AzO2E#C'Dq٘.*A hJ,l3%GO}V=;3ӏ ⃉ 3erU*/~ ^L}R@#|hƿvN&trwm!$ (H2CRYy-&USvAg9uy~>".%pX$;q, `30AGdዬ~sf9>oW'7`<.G%, X9B!e2}UZIedj3'ܦ[4_#w %c?l.V3sjd<'_ .,(,lXo&2n_ %/$Im-&2|ȢZǭ mfGtOj)\.ߖ JT} fYGWcb+PGԘ7d?;3j˖䓌I2h܈GeX"7_EoyQǷhѕ퐞ӽ٫'y"Y׬/ȝl!BQ/Hj?,'vG ijVz}؇zW e c*aM{@h6'0\?>tƼ&.qp$糼g1=ɐ[jcKmU\uMzF=u#$cx`7F'bKV`iˉ&E&-hf4oRr#BڗEd>Ds+14Q|/`5OKOLk+BתۂL!@}гM1clׇk=I}TgIs*F4FGbs(O^fpفr0pϸwrs K ;QmO/Jds*3۴HM`OR,,;0}D+f""#U6B0<+ϣB`5rdAa1 qC1mMZx}Q屜Eܢc[!F-?dzbIR9y*rmv(;?p?ߐ;-E'Q'xj򡵉ׯjPY`d?+8"[hJSHO85s?CdeQeJ̘$=[ry$fljG_>:<4ƨ!Pw߶ѱ6m"D <]$¡rlMmuEJ؛PMvޛQ#=LlXLJ";t67wL@~ch;h%S( ȘAڜ8\(`cioNogϨ㠓\BPܚn[ 4M] ^h 3Wב' )e>LƠhuWM|`+ u e;ֵ^SRE,e#>#6ӷ>EV|ljhOELcủ)lH0R 'IOhm)-qSN4i4pbОcs,'JY{ĠUAf1GΌL !Uw36x6;1cs|&}c KD(~U|7kn=Ll:ɇ. $]˻R띥CWwk:O?>:43d\万? Xȷ*N#э<_iZbVVqo6K'ߴF֢;ِխб."-i[L:n"F+μ(HvaHy{w=p.g!kAc]+hh5LaM@9:X!?8RmZ z bȻPUu`.XI2lc-b *&SN_WI:7z7'qE2|6-!MzVW0ٲgTD&?w0ldntFݲ+~?jVGrً9ܺeՑf,?>xau+elJh%dg}Жą (W)oxIJ (2f~\UpN~>t![r;56(gl;/·*" KW1i$/ES&kf3 =*;8YOQĵi %L"bEVNL)*z S)Rg ~|U# hT'آ+du];kRqcEԮ)E,!֐aȒ/to% R \L&M߯Oֈ6pT]|ؙzsiqs@f 9X;]8 >)xTuhX8X.ccWsiҽQ.t`b"Y#V,^ q1C5+X^47mzz[c o^֌4MruY%xMiU9.I)b4/Yai4;TٯϘFFգnIҷ"V{T$anw3fw*xZdNOzFܓ/F)(u d*AG>ȊߥpQL2|%~9{qC+Hq}^G|9C}j Ǵywar `I!삞_ Q SbdNܘ9^>A:u!jqV<>;p\guY@[dQO9f"k(p4Ҧ)b+TR0ր'!TԄ$,t )?Jks/E&p텅νueQPJ;e%Q#Ds).fĂ:Ir,n{ՎFs)Ȥ>Q vw[j[x˫IY0[uL{f"cܑEG%Ν+m g^x _LCI҂{讉.Q&7TǏSz6j[̘'TX -dW*P.{i*E A!L/Y#l}LB;*0ƾ7Aǔ*X'5+04O~HFoYô^~2P꽿=7 tq#hmVn\jMPZ^b1n¥I#gɵQI)67vߒfCz ,oBIt9i W>&Z3.$=C՛inѵ2pRH.gUÍ%@<j-cVk@Byn(VHK6MKiA(v s᯴s`SS/c׸v/:IvO;#-^^9}넗лgo $&lpÂaUeYn0KXJ{缐 LPgދ/Ʌ8~R u 8# h /qŏ5ôn#,ܾ$DLH.@kezڮXh*Ll&j~8:-3\hau@)oD-멅FX `WѭκxqRWMR?q%w fƭq[uܻxuWjۦAOкn M:gC8WGm} gb8Ȋ#𕋊V@@]r}ߐS?`춲%IDf+y3429oq9 `gweugs@u9-ޱ4ٱK(-gQјӶ1N:W2[Fψ-<_S==~BH*q펺{%}E'x]5uagn /_CT9Qg$&a|=ish۔;+^.7LB ~ BL*岎> endobj 32 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /MNQJZB+CMTI10 /ItalicAngle -14 /StemV 68 /XHeight 431 /FontBBox [-163 -250 1146 969] /Flags 4 /CharSet (/hyphen/period/one/seven/D/G/H/L/T/U/a/c/d/e/f/g/h/i/l/m/n/o/p/r/s/t/u/v/w/x) /FontFile 33 0 R >> endobj 150 0 obj [358 307 0 0 511 0 0 0 0 0 511 0 0 0 0 0 0 0 0 0 0 0 0 755 0 0 774 743 0 0 0 627 0 0 0 0 0 0 0 716 743 0 0 0 0 0 0 0 0 0 0 0 511 0 460 511 460 307 460 511 307 0 0 256 818 562 511 511 0 422 409 332 537 460 664 464 ] endobj 25 0 obj << /Length1 1955 /Length2 14425 /Length3 532 /Length 15508 /Filter /FlateDecode >> stream xctfݶpvTl6*m۶mVlTRQŨض]u_$-c5F_c5BJD+hlgh"fgLHUdd010 ;8[ي8p99b&>XYX`Hvf a6&FYgsF%;# g:5@+&N&&t0c #g- ?Jv]{S @/MJ^ɧZ?l`ca_ v6.&Y;cGfo7Yc *l`ma$hkfm`wIX`j`d򯸉ܿD$$ZS0uVOŌs:-2~&~~'K 0pt4|z>56q 9^ szLh?gs͟g?+?, z{G[kӿ_ɟzNplidgcc' 777b,y;O@ih'lgkfuvlhW?sqge|:}nS/ύ7jk?lmEQOA?{N}Cmg?Y_?9?E}@}޿y?">]dЧtC.!O?]}vWCݕgw?O}SC4Cg3}fy_>Ռv/Y ?]OYsX᧓_)kie>+Sd }WL6\LY=/A'-s3cC9' "D@}ZM}Ylb*a! dDH,aknHɉ`k|-àZW:]P޵㐍: OˊÐ?GjfJ}PA98zӗᲮ4mDol:v̋J.bȟ<ߏI~$ވI1ڔDmĘCYSh*80_?\2u}9X =[ Q"(b6H*b: \m znjk*F+"˾*x!ہ (V+$OJPy:0@!ȉ"`Bw4QeTuՍzyrɟq(k5tbCV$X]B\erR8r 9A p'&^q((L>J*y1QtA]֘##\AI~rc*dx+jvh>H#x}qh]MQh?ξj1*;bosDMc%L F‰`i+!8^Xnh7z(biyX^TbGA6Cՙ0=^:Ca̍x8gS8ii4汌ԩ@MP!kQ`Ե'5^t{˞AdZ7Q&%{I#{V1>\E?yQ;7ianwDv_P ~L5JM\,eDL~ZUCm C<[ۅqb́pI 5>.­+:vJ]D'=8û\4 [ګhVl&Ϫlf`+f&^WugɬafΆK)p Z՛Ҵ,4^ ;H)Qe>9ny<ձ|U6QhS{ tɂwyTRDvB>AzK&a.J]r͉_{-ݕ P2[akEԹ*#U8'@D@i "+GP!I: 9*[ pHMʹKzu΀~$#5[Ѵ {S  MA##o&cYjk bz"L*yQJDR$O/75H;m@BWb={yqpSrbȬ1H\s62d/FΖ2X$ w?p)>&o_:%{}ԑ ͨMq] z{L_v\}yQJ.N8iK#(zF j>}i3=6awM, -ϛcEIZ)cJ'O'@sr~3sG3^,C,b"COl!"nyZY|Ȝk5?z&i}* EeJ&9[M/c>CVH-|*#F3͠x^3bVPySUZbr`k YP ;bD/fp>N{l & mk>`^jECRQk>uxCI ,\͏(kcNⅈP$Ӷ0 6S[b +G-=D(P1; 8Qd7|y ƬeJT uQ(@B}Pm9"PBɍlw&ӆcnώ8tEJo,_4 kJ'7]MnNX{ g*l<'EzA ŲEv92gQ^z{`s5, oX؞$D=j}E.ڢڧ:}%r oRb= dQ7  F_(l8!#"eVqґA (s h*n!(Sao!k{Vnj_X|zCQK8kYo:$5kR* ,)OYܞPJ:$jni"؂6ƹ"[Pu4 nř C)u!4<+JEav9{qlG $XF9yA]+mtdj@'ɍV|4:DHS %Iʜ fL)ƇHQPW*9{N`+Iugї tCw >sc+gdv퍭]Ƌ'U $xbX5~iJ㛥wf+GLIV/ZUˑA)TcR9I)8yJF~1}ح#K:cdێT]z4} A Q0I`6\q`E=Q%bBvl,;ɂVZ!-7|0܅f}*͙OKB}ė~$$c }dcN? y18"Rc/xu߲$I4ʋ <|i𮑹"sh&T1[?5ہy|g`VEO* 9MѷhQFEL5]e%/'A/m~?)imXp6ٗby[ 5 1[Tپ"*RTVqȹMj).EdI @2VҭP}B h3(&p%g*YgCUy[O,}mhă)wXnWS@7_r.lѭ="¥-}3{Cj֕+^aZPHO/|mH1~ {8] 'us@NK,!q?J V Um+Ro6!PV\{0#zd +#Õc|_/t~I9i__Su%6ڔjțё/cq\tyM)}{A}Z85G4b^Cc5]w6$ZOx,Q"KT-U;C ;IO>guɌBA1{VV7Awy"6Ҕ^js؛|Wu(#0)ɿ-|unWl+_̷}~ȁ>>"B7]P(COtElGjBiT Øa~nnςmJc;*\!T !ZsR&oi`6R/ƢA<Ѝu?#EJKLf0[Y5ɖ&LHs+kƑX/!^qv.#r7xlk*ر߾2S-I]Ϧ7U%nl|+q\WmCJ&3><'©ueo)W:nj`V^̓J>f'@{϶()~'NN҂K9}?JLv:U7S@ɳ2K^-lzÌV1W|QRU]rζ)1VJZA 5tXLUm-sb[zT̆|oR" T`r=)O4n3Y%ޮR3E8-L(3|HoIWo % Y/:$fm^j(,b2oF3 @wp;J8(,_9b#)(<к{ZLR@~9NyN L[l^TslC]"K- Q68 k1DiٿWUSOB0KXyܬId<~Q^~r8OΨ2 $u(U*Z0XQ:n Ԇ5n*+8Lli=q(!ysט<ۦE&69@t͔Ҵ(h`<S<o ,Znüldza׌U%tT[yakͿ{dW"_PDSΊ OҞFLA >4 ] D6F>]|yfh;&߼HݱY W)1cqO1R)Хqr%O"zwV gF=+pUUHhVfjO©؁m2G( Jf3yc j3d`C0ٽC%c!e*jgN>qD4yyΪ!D7'B'B~Db zƣo*aus;Pp~h*IQ(: بHTޟӉrp`\]cESv0l]1J\>`F6D_U&_(̟0݅/C]lq<$,(㿰rYmC3$iq{T7MU_㡿)W<ò~EcU-kyg@fϳaɍSȹ{ K=n )u(%A+2=ޕw-KUP O]FIp6F(PFqW5elo-Lb=ÅLȇ$;q˽߷^Vxί?Dfk#onr m1JD ? 2ǻ77J'MOa?XcP6dk~[v{g9:WwY$^c3\2Rq 7||U]N ՗wt? I"_qIInKG6ΝgݹM-}Lz  fY[0A펶1(}h:%HOLs]v<Y +ZqG译1T$t J?OdZp@!B)j"B$u|p% <H+9ƼD (}\Gili5iр:w::q8YK $(kudEA\:;5$E/hfG`Uxh̞ &c]NsZ;|W!dPVSt nӯH=V?A0ٴbI^VqoE_lPF"eP}Wͤ<9Uԥ½@LU{J=iy",gҏUYcԟ5-),J9 Ez9 m{OBƫ΀cP׺IC*mtZc c6)M,zT CUix`0~~ dkA}Z~ hp崓S59bVNDSOGTwZ0&=,R$&W$4>bUjQN>IN³w>/*c<\U24z!|⹎vf-QFw]jw.Yn`_ M"8T ~#⧊^|h"$u"+ʝN\PQ@BG&|%h-3զR`xpj1)Pu;$o)*$!= vG }#.PqA^&\A b8a9*|KM>K+ꈉֲ7dC9 e(/ غ:K؇@=qV>ld@qݽ Q,] o1#1B'{SqJ,mh X՛|VM([t5-kZL})D9Gq]hV̰I};5KIQ4፭ P ύ]ۀn<]=*}xy}-FL5&SDY@@qM.IP`sGs2s.heB L ;2"~Sd}$7>ZQ{ :_k)|3>.aO<&(KD=>Dad6 m4Ȫ}ww{# IPXf{:gǻƶ'|K!Q`qT\*rF{zmgD 5w|] Y`[:!4rXW ^]u-+h[{7̦\ُ8 y$%8Œu~b=V+'/$7r*K/P],B9%,m$ZOz ͌WCAw6!|_9X#ҡ:xL fqACXDٱ6ΐ*6ӣ8qkEqᄒ37SajQM*Y0_YíIY3~)WMwǸWM@E|+[dQUNyq/---:#kckCy+ɿ)є )vwq۽ݻ6lz6s& cݭC2& O;k#p[ [ɪ!ҽS=ڵ7>pB]QSxە0@}Z&jZ6mvm:[.BMW8 L/2396 Z_:8xv-ǓpxL`0d&W JftbBTs=UcM٧iDs<)JzhҢyvRY%D!I?d2Ӱ45v7l[EoA&"J=+ܮ sNWrk+1B5`\/ֆYکֆyd8Kz,+K^>GFj?j݆=K} t<_go~.ڄ%ٱmH+p_>q6!jr &n뾖K8Zuby!!,!k'PCTҗ=N1 Lr^jdD8nWC>j*4\w0@^݋ 5OtJ﹧p̞GH|OBb+I7w{\_Փ>,Β'Sʣa,o]V \*c6@b8E?Sm0߅ Qȴ}'r! a T:t<(=Nʼnju7Y: NliW德5W_&G$+8C_? sIWXrnԩFO ]YineF7ջTD7_!S-e4&zD6dC&Xhd>T_=~".y۶/FWO %V[\BטE;0 TͿ!zFUɰfMv}e¥?diB_IUd_"hlBr2Rp0f tN$%[1e1,ۈ 7ǬB]̟MkDh`,DztвLZ,xZOUR 4u9C{yy{$Apa[GYP[C"aSӶxAΜ2&w5RЪk;dౡoE.uKw=1xMG'x惽<٤p\x\&صӊRT`KAq'6ͺä#QK [B|O Ǝ=_SynJ7UqI&xh*%FHC:0M+b-'\Xexj+UNu I e=IuެNН67 ;8w(hZ;^)HN7 zA_`噰qv '=~зN.t3\J@оo%ݑ4aF &^GF8M՘DƹQ ;U¹p~JEC fL]v,VPPsa+.\DSC(J uz1}hΤ$W-Ÿxj+[oح*+2Q;?L Pup6TT'=Fz.s.`Wce Q̯;p?7l+n>,ʁ*?* f<"a'j#m)r%F="2 b_KeD(w8B[j 4J`XIYt}yV)ea3Eå2p\a.5)e#ӻRA>/1|nE@M\4ܧ>_(2+KRŒOJ 7 \xhMiٹo}d+ͷ qLJ;Rt(OKrel^e޷h45ErO(S)U> 98nwW.Re:듈Z ,ky8U<&OſC 10)+R3jY``ZkCang 8(v{\9@B2='$EMwM;U{ + `o@m6)Cd&9N1`wx7[VDU Ί|]nWh5jJ0H x⋡KcT%WAp`CGK?9%Uhi`T#u9+c*i0S۱ \rrԺ]yE#p RZ9OgtN %v-TFT_9eWD[eBMeFYFEd+ V^skx >Wn3099$<ZVTc {Kᅹi1[ l#  ՜[!;m")1+ EYyb(J$p鲻[_l*1*mb׭CAF3&6'=Z:r9߁b *oU% μJ3d^oU˩d"jt)Dhek߲ 4ri2>W`L' >ZcؗhX(=x,K}W?'PAtib1VW88k^S GIprZX@yCmm:7T(١&K aQO>P؟3mlWZl-}ׄIax@=}ȃŋ>c1nۮ-V*GҮB Hx9Ւ&ƭLmJn幹IuL,)!\n;-1QQ;{P`^*62@]Y_QyGN% F7 bU5yUV P4rC%*wanp܍t<@ T'K U ]u"ViIWyHY{iXO Hd\+HM5YN;S' )[ е(SKfn?`vZmP3 &ɤ"3ߠ]◓n)*7WFP4V,m;Il1ߐ`'YhF*L8}7gįd`Bgw26ȗ pb{kbl hPU^H<<ϔ[E"BUŪ1yәu>L|(z^T'uҌ_x|8@qP;amhg,VZA5˛Wl!V^)Dh4+gW-~ %gJ&o<Ø9+(_Շ0Dx)շ\9D>n>ĬENXKB 8)Y #In VN'_xw~6i#x;l滩Ѱ*ǮC_YbdnUuSu ӉX*Ob+.k<6x8()t*O_Q5a (PfS7f֣M;s ':Q@M{z(:Ӵw(o=zm ֽ*xv:rC=!wUҹ6$üY\59ԄS Isu bCU]H.cH *9NWᝄدmЛ3pzؗp8Fl>ڭ=6q#SbɿPZQ8OrTXI)#CxF9((ZKMXL֭Ɲc1H/:,(Ԣb)_7p).w޾t"c* ǫ̫Z,#l1pxj܄:rqq~veLy"Ynw!V,UY HlckVaE* p?=qr[~:j+[4BAR$bR?v旇nc;i1qD= L,%0 *(XrQfݺ7F͖(9~K0:~8rfVL+z2e2`ڇ)V^M N0" I[nQn4(r4a7eBr͊څZ&`Hvp “3_:By53T=)~l:?tBa*uɿ~r6qq?I uŨV@Fā`k^*U2ErɗW4k*Y=hD@[Z()v"H9!5ʟB9@r4~@QmF[.1#嘭V%?)ۛ {31} OrEWO@R|ZpPvq۔jDQm$)r@IbJϙbbgsYuK'dpaQ}| vF@~LJQdC˓?A몕dgFUD33G*h ĐKR"nJXd?i*</jb^<^V-8#R*Ik_Jy.,aVRkd4y;J`؟OŐE19Pe֚ P(>Jruu&wNn_sx6nKnjc)Gȯg! @LWzH\ޞ24d+íj-uONjZey`O2 wi,AM#k(~bYH6Z|\oj}Ւnh͡Vj4K^m\TEѕ@;Κ8ڟ 59Q% Ia̡ĚqhS w3.#عZIf#w]' s̈3? Ӛendstream endobj 26 0 obj << /Type /Font /Subtype /Type1 /Encoding 139 0 R /FirstChar 11 /LastChar 122 /Widths 151 0 R /BaseFont /SDHOFI+CMR10 /FontDescriptor 24 0 R >> endobj 24 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /SDHOFI+CMR10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/ff/fi/fl/ffi/exclam/quotedblright/quoteright/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/W/X/Y/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 25 0 R >> endobj 151 0 obj [583 556 556 833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 500 0 0 0 0 278 389 389 500 0 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 278 0 778 0 0 0 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 0 736 556 722 750 0 1028 750 750 0 0 0 0 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 ] endobj 21 0 obj << /Length1 1485 /Length2 8196 /Length3 532 /Length 9065 /Filter /FlateDecode >> stream xU\S(܋{ KqbŵHR ŋӛx%ߚ5k̬Zʷ@9HjC , x͎AK+9f A@ ƠHA<``+kg_I| ; lafP6skXAP 05@5 r\A `ce$oo + tq+0%pE ,1T@pRY\Q1߻_fv`d@\A02g_rP-#l[H[A@N`w-`iqSm )+(g{Y៲e;0;5;;</XL `y`;N</rl)XBa'7dW_!^!>wD<6g7o怳5 G'd]@# .&NR&v2M7~\B7WPM!~oM6M*:&o[[CpmmB wR?ne9V ­@rV. [Fk­8AzD\ym:SKnȰ%k^CNM!]wd|Ե<56&"C;ʥVFBd-كw"ޛd{S^bƏ.~ÍP6=LC7ɳ M]֋H|8$мt}K'ωmu+85O/5EDKųy_>qAzҗzȘ7Yrg6o1:,\~ )esc4G@% 0L$ʚog/o $%CYtAGl"brղ9x0Tm lj$WrQ`;HDUЫu sixOY$BClɎ(R 'l'NM*zz9Izdڽ2۟`~0eim8fOJƗ"s`@ߊ;E\:% -HQ5{'uRz.fQMi]TR2Wh;aF.Mla FVe|ehNXW]mSG^JʩK$7L4 wj>b?~zQհ 'TGe<s1#q\.NF@.O= p5Pl3\-WbUN%Rb {r8r%.[WIDY%3%c(Ɏ=s}S;yStN }5sn0Pck^B.3gdP l72Iη(4J… H-Fh&b7+FLcT!\j=QbIsggykV'[y(iiG4*{ꍤ(Ѽ0aT;QVB 8]8XcdĆ2g[SDQ>Bg1m)}ly9&|mV/lI_Zr0}Q+j@LRV]0*{1"p [tip*˦@ĀXu}8ĩ ՌmUY5e }^GKVE1,YsEM;} uiʬ}\iNljWp.OH~4~%zJ":!QsPRsШyۙ{~aGkåCXa׎+|Ҽԓ#%ު1w]!gDF._v_P19ޱ*0T۰as2Y\ٶ!=YjUxM]&ۏt.49^'ò m`=m~4jv)b*-]8mneǝ[۸ ~gBo :Kv c?8}eT "~d.[\M[^|P3cˋa yӴxJl _?-MxBL`4B;7lyk8O'1̋chX%jxw\7]||Wp @OmމdNnK@T,nئONBA > [30[Pܯ]ȍq|nmU?DR1Qy\Yu8}o:+X90p3 Wr4jOH#_ .[JGҨdWХzS:_(ո`,&S@q{v3,NKl)q ERcyXXnbkS-ZZqq>\D)ƻɦz(t/h+y,T>+|bf+\`L*66Y+p?UzQ!W%]#Q)8׽tk*,5gY8۴O4Y*\\Y\ޑgNu Qc6&Qv!ȣ>o1ǰ! lNU?(f.w^_l奮荼|'xƫ-ҋ :Rñ9Fi2Ԫ36CfɒĨY'3/"84p-=N7,%9#oUӹݖXck?ܔH5WٝrhCcV_Wƽ#huNQcɩqft 2SCr1uE8{W&%m%'4?X!F^9-Z成l$7hcqMkLV^;DȈs#ٚ4b!7k@ ɚuS񆐴j%w*CtF/$s'aiuH诈QwqV-s\.g;ŪAIL?<̡~D.alU"MRN-e6hQxk7bG[[LHj 9bKSBPg tlWޫro%ήe!gv}2hUiq^kEHMV/=p^]֝,l="4i,g;XE:ꀞ#u9$!xߓAs{S0M[ٳF){WsFjR{)9!=B)khzy3y(|cAcZ#vYɒ)0T~d!ڴ9ol:Jڤ 2-իLoi)\z-$̥[q~ ԕaee}Bz}j-kڕ[ R̮-/=`{nf!۞C+fyEM %՝@12a'y{ﲍANgOz)8(L1HTUH`gR{!br+~P;!N'Ei `2{Tz:@}lR6@Є?4m!ڼyYΦ!aApmn%G Ќ'stdWhe _GGokPH 6WI )nYگTnM_WJt-/A fP2~ J). +1ՠ~P|^e|(QcXޑ;?۫lSFSR$@kP*3?eقƮIJV8Sn8$̄$Kߛ5T?gنp6@:<ɈPoz{`Dyt`oʳMB4 ;iFyD،x)}sBdw)[cleFT ~ʪIo_܋]9(7̻1ɘ~aޟwWb5nhymuU!RP3E4~N"Υe*䌗/F6k S%uAa]N%I&N4z'W) ;>A^YKgp(jR0qCzh'n3@KdU{wfe3T^Pa 6lB.gj":l>cG=`G\8%d~rץQ5iy7U"y]wb7~ J7L^l T97)a Lq>?re:#Y$pzd/)i۟ J3lL%;Є8H3HFvI."gx_oNe| )|G0P7U`ۯyB449t|#`VN"KmPh _1 #ө~NKAt䱍[>kyg0p4gHn}-0e-[z%L"q9˷WtXFxF)AIT// b+t.i7겷Zɓ\Rp"C9R{rxhr[yCke_5;>|W+['^rxeI9+qћ264SEs|  i]엦94Z08Uzx)Mzo@FdY"YC-Ed?xA5>`[Qldkij&F)ײ[eǞ-0 >3G!H+T@Jq3#p@F40nDLu<[[aF>>ϡ bL,+R~bFqws-!:1Xu t])Ѡoqt}$[O@*4LNYwZbz3\l#O"V/DS6B&ǫ>77ܵsWpٴ?l]qYo*(=$r/p]3$Rހv~RJXqpVy[^e7md|%3[v|~kFvY{ sMM\%M/7,oSD$KϷa,Y }'RMu{DŽF%sk҄k1't e3=r\ݖ3x2v4#*5TI\n[3E! ^= eq ~!L\SNۑ/^!D$U|llM\Ųc y(_HG$A=sEl&9wSRBqUן=G(O1OzdQixl ExO}/?٦6nU>H<\]T%@W CTL6FEnO-MǻZ=N#B]OgSPC r^JEAm Tgm!ch1Sl9*vL>%IvH <JY.ٍ*m߸P V Ed'/w;n{M?4]s=㊲~n\<\#s2 U`,JDpYI:60@)cVώ\NlNqKEmVTW( -wF꘦X nٶeN/="W?:;ȸ"ׯ(B01AL\BzLNI Bf(V&CIUXy-Y75Nak+U0tF7%c돻FAdI-niDd5Q&mw^)r֘U K&7gtb9~jx:ҁõ̵ AS6 U"b bH_!FF.Kİ`0WM3R۩0 WFdSs^i% ;뇵oGB_.jfv1qhDbL{]72acE"Vپ&TEv>{Sv4~6.7E=/Tbes\?(NO=(iMQ-%5;1CC 4߂DXD_,ҖԱUEP 304( ϹÖPʽjHui*TUmȡZA GS9Wx~ !L+O .;ve}f:':}ono+{Ր4_\  @3L"3GO\NT]9.e^y>Ui_O)U g22wͳxG* M|kx!IV(!TsA ⯲f(]`7B3w6 5̴?gWZx=~|lO2< Q\+[ة}ٰ%tZ#/D  3b/* endstream endobj 22 0 obj << /Type /Font /Subtype /Type1 /Encoding 139 0 R /FirstChar 45 /LastChar 121 /Widths 152 0 R /BaseFont /KZJKHZ+CMBX12 /FontDescriptor 20 0 R >> endobj 20 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /KZJKHZ+CMBX12 /ItalicAngle 0 /StemV 109 /XHeight 444 /FontBBox [-53 -251 1139 750] /Flags 4 /CharSet (/hyphen/period/slash/one/two/three/four/five/seven/A/B/C/D/E/F/G/I/L/M/R/S/T/U/W/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y) /FontFile 21 0 R >> endobj 152 0 obj [375 313 563 0 563 563 563 563 563 0 563 0 0 0 0 0 0 0 0 0 850 800 813 862 738 707 884 0 419 0 0 676 1067 0 0 0 0 839 625 782 865 0 1162 0 0 0 0 0 0 0 0 0 547 625 500 625 513 344 563 625 313 344 594 313 938 625 563 625 594 459 444 438 625 594 813 594 594 ] endobj 12 0 obj << /Length1 875 /Length2 2317 /Length3 532 /Length 2933 /Filter /FlateDecode >> stream xy<Z&!KYJ}ZdDjyd4f3U"I""mdglE*-y߷uJZZAc2Wcs+8 K%IX*h4У]`\¨i@dBL ׋+H!$Ku]8,&   ) ^x /H!@ inYV_uu )4~u}k;HYMKeԂgr.{g~*ܘ]mB#UG2ddkƻس,TRNJ0c>/}t1 D-3c! GO@߄<~U\pӛr7SM*E >== O1z$MA4 _"d̬*deT+ 1oK;;Y;4{`vmF:/N2X4Q߸!(كr_PX5[>Sbi, G0 R#$ (wa[ߟԗ ]pݗ;L%.\.ԬoV73Fg4l,W.*q ՚-Yqv]Zc̺^,ߕ8 g 2!uu@ӗ91Q<Ŷht+2ƌDvE?'ѹ\GXՆ2s6@d>Rц/gö}GEeJc$/~U=r. M䘄cgR ގv 88oW[2N@ֽQ*1K8v;Ol+=3ÿye>ޝoQ{k"bfI<VE˵FzB:FOEyc#Rtr`I5[X4272E/z!kPK62e>w:oxB[~!F}ݫXľڎkbhzY. !zA>m)X^S2*&|n,7Ņ6!9֮ڔjCa6/&Z;9!).{K?ND?IzPY^h>j]UoUyv ]Q GODjWm<)JBߓ3m|te߷'[ iȑ o/ ["vEYf j>)QԦH.vp_^Z{jlZHrmoԾ.jsDe&;\t*]R[*wSLɔ}o{_H?K }}ye^+rhU.:NC-%[t -?"}wKL>BfHnv.L}d6ىEqԔ&VW c}Ι YaSwvJ*`"Jm.%W%W#1Y|kZ><&InC3sװ#p#6**ȩ⟿#ZP43]tΚ%w>hH\!iͯZTRB*k;F䇚]^=x·GyJz ҷ!P,\Ml:KQՍ18G3;[pX8:ݺ Lcl=mki紻=epWV$Qsg cFd$KRO_| :uV.d1Aw*;\SyM;YQ+P1Gn~yDR yU DV=5P<ތ}{~[m9^ &;N~;~7.Bc숝(oLBKe&/j[&Ǎg?)Tq]]-)Vfx<]r衰┭3J̮swM(5i5 1U_BG*Kl[endstream endobj 13 0 obj << /Type /Font /Subtype /Type1 /Encoding 139 0 R /FirstChar 77 /LastChar 117 /Widths 153 0 R /BaseFont /UUEBMN+CMR17 /FontDescriptor 11 0 R >> endobj 11 0 obj << /Ascent 694 /CapHeight 683 /Descent -195 /FontName /UUEBMN+CMR17 /ItalicAngle 0 /StemV 53 /XHeight 430 /FontBBox [-33 -250 945 749] /Flags 4 /CharSet (/M/U/a/e/l/n/r/s/u) /FontFile 12 0 R >> endobj 153 0 obj [850 0 0 0 0 0 0 0 693 0 0 0 0 0 0 0 0 0 0 0 459 0 0 0 406 0 0 0 0 0 0 250 0 511 0 0 0 354 359 0 511 ] endobj 15 0 obj << /Type /Pages /Count 6 /Parent 154 0 R /Kids [7 0 R 17 0 R 28 0 R 44 0 R 52 0 R 62 0 R] >> endobj 83 0 obj << /Type /Pages /Count 6 /Parent 154 0 R /Kids [79 0 R 85 0 R 91 0 R 98 0 R 107 0 R 114 0 R] >> endobj 132 0 obj << /Type /Pages /Count 2 /Parent 154 0 R /Kids [126 0 R 134 0 R] >> endobj 154 0 obj << /Type /Pages /Count 14 /Kids [15 0 R 83 0 R 132 0 R] >> endobj 155 0 obj << /Names [(Doc-Start) 10 0 R (chapter*.1) 23 0 R (chapter.1) 31 0 R (chapter.2) 65 0 R (chapter.3) 94 0 R (chapter.4) 129 0 R (figure.2.1) 82 0 R (figure.2.2) 88 0 R (figure.3.1) 101 0 R (page.1) 9 0 R (page.10) 100 0 R (page.11) 109 0 R (page.12) 116 0 R (page.13) 128 0 R (page.14) 136 0 R (page.2) 19 0 R (page.3) 30 0 R (page.4) 46 0 R (page.5) 54 0 R (page.6) 64 0 R (page.7) 81 0 R (page.8) 87 0 R (page.9) 93 0 R (section.1.1) 35 0 R (section.1.2) 42 0 R (section.1.3) 50 0 R (section.1.4) 55 0 R (section.1.5) 56 0 R (section.2.1) 66 0 R (section.2.2) 73 0 R (section.3.1) 95 0 R (section.3.2) 96 0 R (section.3.3) 112 0 R (section.4.1) 130 0 R (section.4.2) 131 0 R (subsection.3.2.1) 102 0 R (subsection.3.2.2) 110 0 R (subsection.3.2.3) 111 0 R (toc.0) 14 0 R] /Limits [(Doc-Start) (toc.0)] >> endobj 156 0 obj << /Kids [155 0 R] >> endobj 157 0 obj << /Dests 156 0 R >> endobj 158 0 obj << /Type /Catalog /Pages 154 0 R /Names 157 0 R /PageMode /UseOutlines /URI<> /ViewerPreferences<<>> /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b) >> endobj 159 0 obj << /Title (gl-117.pdf) /Creator (pdfLaTeX) /Author (Thomas A. Drexl) /Subject (GL-117 documenation) /Keywords (gl-117, flight simulator, documentation) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.10b)/Keywords() /CreationDate (D:20040605182200) >> endobj xref 0 160 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000000409 00000 n 0000084883 00000 n 0000000297 00000 n 0000000009 00000 n 0000084722 00000 n 0000084775 00000 n 0000445109 00000 n 0000441898 00000 n 0000444950 00000 n 0000084829 00000 n 0000445439 00000 n 0000085438 00000 n 0000085213 00000 n 0000084986 00000 n 0000085328 00000 n 0000441299 00000 n 0000431954 00000 n 0000441139 00000 n 0000085383 00000 n 0000431092 00000 n 0000415304 00000 n 0000430933 00000 n 0000088004 00000 n 0000087669 00000 n 0000085520 00000 n 0000087784 00000 n 0000087839 00000 n 0000414799 00000 n 0000406741 00000 n 0000414639 00000 n 0000087894 00000 n 0000405566 00000 n 0000404162 00000 n 0000405407 00000 n 0000401793 00000 n 0000389624 00000 n 0000401633 00000 n 0000087949 00000 n 0000090698 00000 n 0000090473 00000 n 0000088122 00000 n 0000090588 00000 n 0000388172 00000 n 0000381587 00000 n 0000388013 00000 n 0000090643 00000 n 0000093582 00000 n 0000093302 00000 n 0000090816 00000 n 0000093417 00000 n 0000093472 00000 n 0000093527 00000 n 0000381220 00000 n 0000378662 00000 n 0000381060 00000 n 0000098517 00000 n 0000096352 00000 n 0000096017 00000 n 0000093712 00000 n 0000096132 00000 n 0000096187 00000 n 0000096242 00000 n 0000377438 00000 n 0000375467 00000 n 0000377279 00000 n 0000375247 00000 n 0000373311 00000 n 0000375090 00000 n 0000096297 00000 n 0000124980 00000 n 0000145371 00000 n 0000166688 00000 n 0000194969 00000 n 0000124243 00000 n 0000098402 00000 n 0000096482 00000 n 0000124128 00000 n 0000124183 00000 n 0000445548 00000 n 0000219130 00000 n 0000124865 00000 n 0000124384 00000 n 0000219016 00000 n 0000219071 00000 n 0000223360 00000 n 0000221274 00000 n 0000220939 00000 n 0000219283 00000 n 0000221054 00000 n 0000221109 00000 n 0000221164 00000 n 0000221219 00000 n 0000274099 00000 n 0000223245 00000 n 0000221404 00000 n 0000273926 00000 n 0000273982 00000 n 0000274043 00000 n 0000372026 00000 n 0000368877 00000 n 0000371863 00000 n 0000277226 00000 n 0000276881 00000 n 0000274241 00000 n 0000276999 00000 n 0000277056 00000 n 0000277113 00000 n 0000277170 00000 n 0000278729 00000 n 0000278554 00000 n 0000277357 00000 n 0000278672 00000 n 0000280412 00000 n 0000293942 00000 n 0000303912 00000 n 0000315697 00000 n 0000330126 00000 n 0000338720 00000 n 0000347534 00000 n 0000356683 00000 n 0000366703 00000 n 0000280293 00000 n 0000278836 00000 n 0000366477 00000 n 0000366534 00000 n 0000366591 00000 n 0000366647 00000 n 0000445660 00000 n 0000367785 00000 n 0000367609 00000 n 0000366919 00000 n 0000367728 00000 n 0000367868 00000 n 0000372235 00000 n 0000372365 00000 n 0000375443 00000 n 0000377643 00000 n 0000377667 00000 n 0000381441 00000 n 0000388444 00000 n 0000388606 00000 n 0000402185 00000 n 0000402505 00000 n 0000405769 00000 n 0000405793 00000 n 0000415072 00000 n 0000431557 00000 n 0000441624 00000 n 0000445319 00000 n 0000445745 00000 n 0000445821 00000 n 0000446644 00000 n 0000446683 00000 n 0000446721 00000 n 0000446910 00000 n trailer << /Size 160 /Root 158 0 R /Info 159 0 R >> startxref 447215 %%EOF gl-117-1.3.2/doc/src/0000755000175000017500000000000010145416156013230 5ustar cedriccedricgl-117-1.3.2/doc/src/aerodynamics.tex0000644000175000017500000001025010145416156016426 0ustar cedriccedric\chapter{GL-117 Aerodynamics} \label{chap:aerodynamics} This chapter gives a brief introduction on all the physics a pilot has to consider when flying an aircraft. \section{The four forces} \label{sec:forces} During flight the four forces acting on an aircraft are \textit{lift}, \textit{drag}, \textit{thrust}, and \textit{weight}, see fig \ref{fig:forces}. \textit{Lift} is the upward force created by the airflow as it passes over the wings. In straight, unaccelerated flight, the lift compensates the \textit{weight force} and therefore, the aircraft does not climb or dive. The lifting force depends on the speed: low speed will cause the airplane to dive, at high speed it will even climb. Always consider the lift vector. If you fly a roll, the lift will not oppose the weight any more and thus, you will lose height. \textit{Drag} is the retarding force that limits the aircraft's speed. There are many factors effecting drag, but one main cause is simply the airplane's structure that protrudes into the wind. \textit{Thrust} is the forward force provided by the engines. Adding these four forces shows us how the speed of the fighter will change in the next few seconds. The overall force is measured in G's with 1G meaning the earth's gravity (about $9.81 m/s^2$). Pilots are often exposed to more than 1G, but there are clearly limits: high forces above 9G may lead to a blackout and worse, forces below -3G let the blood shoot into the head. \emph{GL-117} provides two models: a simplified aerodynamics model making it much easier to handle the aircraft thus promising more action and a simulation model considering all the physical aspects as described above. \begin{figure} \begin{center} \includegraphics[width=10cm]{forces.jpg} \caption{The four forces} \label{fig:forces} \end{center} \end{figure} \section{Three rotation axes} \label{sec:axis} All maneuvering takes place around three axes of rotation. One way to define these axes is a carthesian coordinate system with an x axis from left to right, a y-axis from top to bottom, and a z-axis from near to far. Imagine a flat landscape resembling the x-z plane. Your viewing angle within this plane is called the \textit{heading}, whereas an orthogonal angle is called the \textit{elevation}. Just look at figure \ref{fig:heading}. But we can also define three axes of rotation referring to our fighter. They are known as the \textit{longitudinal axis}, \textit{lateral axis}, and \textit{vertical axis}. Imagine a coordinate system with the origin at your fighter's center of gravity. The center of gravity is the theoretical point where the entire weight of the aircraft is considered to be concentrated. The \textit{lateral axis} is an imaginary axis protruding through the side of the aircraft. A rotation around this axis is known as pitching. This pitch movement is produced by the elevators and will affect your heading and elevation. The \textit{longitudinal axis} is an imaginary axis protruding through the nose of the aircraft. A rotation around this axis is known as a roll. This roll movement is produced by the ailerons. Consider that a roll will not change your heading. The \textit{vertical axis} is an imaginary axis protruding through the top and bottom of the aircraft. A rotation around this axis is know as yawing. This yaw movement is produced by the rudder. Now, look at fig \ref{fig:fly}. The blue arrows show the elevator's effect: your fighter will either move up and left or it will drop down to the right (the lateral axis). Using the rudder will move the fighter slightly towards the green arrows (the vertical axis). \begin{figure} \begin{tabular}{p{7.2cm}p{7.2cm}} \begin{center} \includegraphics[width=7.2cm,height=6cm]{heading.jpg} \label{fig:heading} \end{center} & \begin{center} \includegraphics[width=7.2cm,height=6cm]{elevation.jpg} \label{fig:elevation} \end{center}\\ \begin{center} \includegraphics[width=7.2cm,height=6cm]{roll.jpg} \label{fig:roll} \end{center} & \begin{center} \includegraphics[width=7.2cm,height=6cm]{fly.jpg} \label{fig:fly}\\ \end{center} \end{tabular} \caption{The three axes of rotation} \end{figure} gl-117-1.3.2/doc/src/basics.tex0000644000175000017500000001251310145416156015220 0ustar cedriccedric\chapter{GL-117 Basics} \label{chap:basics} Having understood the physical aspects of piloting, you may now get an introduction to the game itself. \section{Cockpit controls} \label{sec:cockpit} \begin{figure} \begin{center} \includegraphics[width=12cm]{hud.jpg} \caption{A typical HUD of GL-117} \label{fig:hud} \end{center} \end{figure} Figure \ref{fig:hud} shows a typical \textit{HUD} (head-up display): \begin{itemize} \item{A: your current heading, showing the letters \texttt{'N', 'E', 'S', W'} to represent north, east, south, west.} \item{B: your current elevation in degree; the rotating lines reveal the horizon and thus your roll angle.} \item{C: your current target} \item{D: the radar reveals the position of other targets. Enemies are marked red, allies blue, missiles white. The screen is only 2D, so it will only reveal the necessary \textit{heading} to other targets.} \item{F: your currently selected weapon} \item{G: the chaff/flare countermeasure systems alarms you about enemy missiles.} \end{itemize} \section{Input devices} \label{sec:input_devices} \emph{GL-117} supports a number of devices depending on \texttt{GLUT} and \texttt{SDL}. You may choose your preferred input device within the options menu. It is strongly recommended to use a joystick, however the mouse interface is also very easy to handle. \subsection{The keyboard} \label{subsec:keyboard} \begin{center} \begin{tabular}{|c|c|l|l|l|} \hline \textsc{Key} & \textsc{Meaning}\\\hline UP, DOWN & Elevator\\ LEFT, RIGHT & Roll\\ SHIFT-LEFT/RIGHT & Rudder\\ 1, 2, 3, 4, 5, 6, 7, 8, 9 & Throttle\\ S, X & Inc/Dec Thrust\\ \hline SPACE & Fire cannon\\ m & Change weapon/missile\\ ENTER & Fire weapon/missile\\ \hline t & Target next object\\ p & Target previous object\\ e & Target nearest enemy\\ p & Target locking enemy\\ \hline ESC & Main menu\\ \hline F1 & Cockpit camera\\ F2 & Chase camera\\ F3 & Rear camera\\ F4, F5 & Side cameras\\ F6, F7, F8 & Top cameras\\ \hline \end{tabular} \end{center} This tabular only shows the predefined settings. You may customize the keyboard in the options menu. Also note that using the mouse is much easier! It only needs some practise. \subsection{The mouse} \label{subsec:mouse} Moving the mouse up or down will change the elevator to fly a loop, whereas moving left or right will result in a roll, a slight movement will affect the rudder.\\ To change your heading, you will thus have to move the mouse cursor completely to the left/right for a short moment (just figure it out) in order to fly a quarter roll. Return the mouse cursor to the center immediately! Then alter the elevator moving the mouse to the top center of your screen to fly a "loop" parallel to the surface.\\ The left mouse button can be used to fire the cannon, the right button will fire the weapon/missile, although it is recommended to use the keyboard for targeting and firing purpose.\\ Look at the keyboard table for a list of keys.\\ You may also revert the mouse or even change to relative mouse movements (not recommended). \subsection{The joystick} \label{subsec:joystick} The easiest interface to play \emph{GL-117} is most likely the joystick.\\ \emph{GL-117} supports up to 10 joysticks each having up to 10 axes, however the standard settings include one joystick with 4 axes: moving the joystick up or down will change the elevator, moving left or right will affect the aileron, turning the joystick along the rudder will alter the fighter's rudder settings, and moving the throttle will change the fighter's throttle.\\\\ Depending on your joystick, \emph{GL-117} supports four buttons: fire cannon, target nearest enemy, fire countermeasure, fire weapon/missile. The coolie hat is used for targeting purpose.\\\\ Feel free to edit the text file \texttt{conf.interface} to completely adjust all the settings as you wish. \section{The menu} \label{sec:menu} As the menu is almost completely self-explanatory, there is only a brief description of the different menu items: \begin{itemize} \item{The \texttt{PILOTS} menu lets you create and delete pilots. You can play only one pilot at a time.} \item{The \texttt{TRAINING} menu contains a bunch of training mission and tutorials you should start with.} \item{The \texttt{CAMPAING} menu shows the available missions. You have to succeed in a mission to enable the next one. Every mission you succeed will earn you a certain score, being calculated depending on the time it took, the shield you lost, how many targets you eliminated, and a difficulty bonus. High scores are necessary to get a promotion to a higher military rank. The difficulty bonus is added to the overall score automatically.} \item{Several \texttt{OPTIONS} may be adjusted: quality, view, sound, music, difficulty.} \end{itemize} To get the best graphics possible on your system, always look at the \texttt{FPS} rate which describes the number of frames per second. This rate is directly influenced by the quality and view settings and should not drop below 25. If your rate is above 50 FPS, you should use higher/better quality and view settings. You should also try out higher screen resolutions modifying the file \texttt{conf} located in the \texttt{saves} directory on MSWindows, in the directory \texttt{\$HOME/.gl-117} for UNIX respectively. gl-117-1.3.2/doc/src/buzzard.jpg0000644000175000017500000001753210145416156015423 0ustar cedriccedricJFIFddDucky<&Adobed . X       WP@ 0!p`1 !1AQ"2 @PaqBR0#3b`rC$Sc4P!1pa!1AQaPq @0`p @,n  5wewM>6=@x9o.qϻ=3Y|blXuKrYr+e7o칙;u^@1˟˝fZŷ-m·;oPZL kyO˭=9t!ʮUcsG y&̞\ >SÝ4w\ggE gYClP̛-Z~1|՚-I[MOYO\/ᄄ8%ќka# fO!X͖1,UKl [S#3̱8^{| e(HOv}bcFIOj%ۙTz`1 h#SĥZD䥹K56R|;E&Zx1c*-HM*iGu?kyP5jy孻HlVԓ,?O/ǟ@88p1K>4z/hN<%-;z݀A ffytCUs?qdٸj꾷=/_]9NnO[+ MrT;Ӏ 90eGJ Әiq]J6ġKqH\SL;ms$q\2&] ZJΔs1s>uz戂p$#ϖel{*L 湗)rLkQj ,5؍#.:.e/W-?Fqܜ/Q'gj~?'t̅7&~ UtH¦-BU\˗qB79tFdl崐=s\aNs{Hbkױ< ZI /rsNkJt`.4Z"q\,Q&oj`!0^Н(\A:pM1D!+R.tQh| +db7RaJ#uPrkv114" hJptk5suF09sfbRu,yR+pyh'Pz'ȜB׹=].\u;<5|LFtk*5:2\VY|}U]UZ D-dik^>?+MUױJkkyS0AkPRD[=׻c-bss\d1wVj ksfY^>ݑk2Cqn摥ş4![P쏎9u-.,omG0T.UV2\[5qwgynKMp麤aCJ'Lv&5uiٞ~L; U~4\U>L;7YAAsySTAWsعkW"UJҊ!oEO@xiEEOxtTTT|**|h̄\OTW jCM,QLi疒M4ND?Oi]Ah;U4j#? JҤ|,CK$ЇҖJ_?g?sAU+t_TijO!+O-;ē /0}5j!wCU>#vb~[YPrgB" ٌbmDY٪{03oNǢ1^hĻ fU!0-[il Hٍt8XZ޽\KHYf 5Qj-a>ر &&dꑘmj Y'?t[@>Y z,sYV?{ą*(t7 czL*g T٫ ;/}[дMtSU n<{'s 6@e3G QAeM*IJG_ԧ=O-Q8C>RDf쏬cg5ƐQܣ^"*,t<tg4 H׈$jԛQL4=g/IY?Xj[}X>RT{>UwFa.aҪjjǢ~M?8)QJ8XH+!m5%TF89VSa-P<"`>Џ+ي8r >ajSk]ݩգ]kYj,6A&ֳJG-:|8Ю dd;LH(~U#N7At.pڬ/mC8.^|/Tco5t_d4;p{)FanT4U\.;gKI*aơWbA2M{ 0~Mb\65/o=8TUH|9 i3[N}0N2Jݼ*`t3enXreXMM56/n^S6_,.Xٳĥ,Imo21sR:խ=.<'IO؝jzqj:w9rD%zZtOQwG询,`5Fg\|.xqd pu_A7sV*:ⴒ4g [E`G Xܧm;++CƧi^ZjFVcq/}c-G*0 U{`"5Ů[! ޮs<ٳ+/'$m}H6#d1t @SO>Se%1]a2a+FwXJ1`/@"ͪ7G泂e+fExjws@#/a4YͿQXi0E#وF6!Z~\pg%Q߽fnsa>3cQ[YW EeivDhѾ4Q+_Q֩HMUKA,8m., =Eل@ EIDdu 3owdDȓVwF\X_-lyϻ~WN&Yߴl<_ S"\h?sfrr]K'"3uÜm105aArFim4Z;S~|:L7Y&f;{k6qC,ymeUq[C@La?J~/LTk#kcחrp$dF w+ @<$v[b۱'c5%6XrAv7Vo|ʩۚ9^0Gwz,[RטNȤqzR>QArOAb^_%:a8~-YҖH+=U5%Wcx#ޅOg^w?!E^ַXZK\|Q/LbH@~XyUмW/ x(ry? F_SWKWJr咺֡.0%ˌSoH5+t"J] Q:|KE=| :1%JTPӅl7v|K:TR\?LS`_?DM=^_̆vOGѫtDHHT3=ыz8|IK??!d:?LR!_7]jWR*+u\ãG@53(ҁ{ I$I$I$I$I$I$I$$I$I$I$I$I,I$I$I$I$I$;$I$I$I$I$I$I$I$I$`6I$I$I$I$71[hI$I$I$II$I$I$I$Ad$I$I$I$@Y~(I$I$~B~4$I$*9殬ojI$I&=┠M-$I$MOa'I$I$IZd:I$I$I$Hߎ /,I$I$I$I;)) $I$I$I$ATtI$I$I$I$fp$I$I$I$I!|I$I$I$I$l@I$I$I$I$I$$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$?AyX%*4q{Q|0a&ϰ!Jp t(VVlԆ _"e>0p| ~Bcak}A RY+Hm` Ut܆މVg9c p\}Pa5yZs0"nX,p]??g|l,vKH`*CCw7FȀi3Dӧ.S d+ (!}t "9EdXJӗYVoD_ocPb~Spƥq [ -EWAH)'k~ Y.M/1čt+bX(i@n'쫅C׺Q=^wyESfCL.zPPtj;nP>1 `4pbW<:X`a"|A!Bat8FLU\sEai~Ƨc(8nK و%P޼;+mp_؄T RkQO-/6N0hv-`Tt53LD"*RPQ+3x/tcy!P&^IZkHvŒiu犏9#00݊uwXˀw讳x 0`*Pܥ @Z?3Y9c3 GA`9:ft]6q0 ;ǕTRݐm=OҦ sYA&w 21 3Hу#_>MG"drf)EW rAdP/Ln_÷3iS>'PCRws4Jgne0`vʨ9_h gW7Bbi]"YI_l Zg4]e즕3^8o ic0X%<seP2 `vhVR)``s-4 ``BOY^1X0HxE oU܀No^˫wJPCUZ.!1&˛SVmCe.㈎5dʱR*rWj?/dvp8mvD[߱;uEnٷX54X lqs0K_;{]&=qF1k1tunv_h@'~ri@tn#%?>"O%?dfqY0+)K,6iˆۛ -?ۧ~uOTV"4SGU,i2Y&{O/u7iJa=z0PR0C* Fek$ۮEU毧RpmU+YlODC(1)*[db4@Kpޓ11.pGGgɀFS\\vjԠILfTWo1iU'{e!B1K/5<9Ekc8(j'ȳ@'vrqw~vT=Vw㔎pf~UCFغBvP yh- [fi+ŵA2Yk6nu %OkPܕ1!~fL"Sz}b6;?C'cyWpn_xw_v 21a$[SIDǢ7pϧ,%k7đ?UB B LņE #i] u#3) HF$c 8ʍ"\t,rD Fo TT=>v\ s~Ͼqn"e{p-/ B42T|sD1B rg>>}lV=BU2Gw8UJ~bǎ=I;q! \RdZw.;{xb:[Lȿid y3)2Ȅ~CWi潿<1J(T.G"?[tB1=.7"0:,OA R L[%Gn\aQzr3)P zW#2JHyq~@:R=!*NҺ*%]U_"=Kġ ˗/9p\1#]j"tQ^. k}J~N˗bJ#tn~f.$ }z2-E ;on\BC\I^HF7ܾ\NMĮaAD ۥ}zsMtJ"1_igl-117-1.3.2/doc/src/crow.jpg0000644000175000017500000002311110145416156014702 0ustar cedriccedricJFIFddDuckyP&Adobed y&G      F P@!"6 !1AQ"Pa2B @q#Rb3$SsD0rCTP1"!1AQaPq@𑡱 NI8X3^,pYjW5=S/@ˆsȟe1e+&*"i> |\Kz=3 r2T2sHRo2!L3H-NpzXo@4B4ݍa;y4 V"Sy7Yfn9|A/ }G-|fRB:HЯ칭{c/3wO00*~=o_98AX n|sJ9iTX$/m e@u@d2 6`G tϞ"QjE#K7᱀䮤%>Ĺ=׻<ὸa^,Ah,a)- *+c_=(wIs3in+;øZ,Ǡn8SƭpH/]̊[xC27ϻi`xV5e~YlưWUBWi-W", \)7`? R/-W ʒ)ϲ ?kAǮA 륏)0."*I(1A%gy1o2!pмW| f冽{D"c!Xcc"+TL_;ĜvXQ>] s\qSYeεuE]Wn8Ɏ:<舽/zoَM/>B.)W<Ʀ'OZ]|YC:=}s}U\F. 1q?O1[weB#:\qƋ+ nKpIhk00W٫ݭA0 %Unacyq cU6 !;p՞uwUWAmi*÷i2h b4L;FaD#Ǖ"!/fߢ:9C8Lddװ 5={I qR"hXFiZ,]tޱI34;ǰ]Ff <2;;.5s\؍E"4Lw-zv8F!3ZُFxsbXylԥk~ gWSsWϑLS1R&ieDllc~WMF)k='x<;*)\泚.vG`-P ׋$)m&&VTinsgW.*r/oQ:`zgVPݍ%} RyfnE59;f(_Hg3h.aU|q;B ,#x9tr4 AI6ȅmlC{{9>ZƄ#h41{mMܚpi7I}ђvnÆ(I% ty}p1ð1E-5qFx\vcmFPGMsl{:F ߊIXM)MuːqI dT*QƑwia}M5CrmӧP]&] Q ^xCC̊6S  \G,*ppdlR og3K桱u>^ϳ̠L.T5z)r.RDsC#eV+fF+ )(jz4z;jC*Ӂ lm}|nPK>Z  ,/B F?U}hpxSy[VgAqmN gN=7yAw]cOs-ՠ.*n{iԵ n7=SPOAz4f+#1mO}n| iݖjgzl( $P><,sKSHDe%IEi;o8m?VၷQ>P ՚mx%]7&O7P\6YϢkuV 2P+4ϊVŒkpO)m]#2sHzr^ܵ73nxEro :5@rZ #P]Hz6ږ7pz;lgc'KW5͸ lmS Z jh6Hr-M4h&  ulo=r=PoW Y7\7ԵQKKQs)icڡBmݦϒRK n#nEB\l}&}.:7n{/ gaG5Pj11\^  uv$گ}* ;nD)Z91*)*$ysDžQͿ G*$,:k[9 Cr =DO@sߙaj|Q4x{6l۝kEwUC/g]#$qh2b]xnDOEG~rC[*i(\ǵd#Eєg OFV3G,!%xz)em֣-VLHջa't4.oIqr|o5rsLjIe.ڡ.vH$@Ǵ A3Q㌲Qg~;(PaD%m-|\⽯;Ac}%PL3M_QUR&a9OS9y<9d"[jz+GFѳЄ|4}k*(S T;O"C%p`ٛJw69>AlԎMkKL"o>LZ}[u k@w8~z'ИLf/sx7#uwED3J_=PsP C:W䤀c@N6S7 4Uee꣊2SV=n sXGҶ6{)7=A욥,U3t+膬A o4O_Xκ&ؔ9-%NL7/ .ktspj8+Tx=gwosu3b$y=Q\C]YVV$1$'`987`zF\V`ICjDži&C qILeiєhGf1O1_OɉTMnT +4C([ɣ/Y!nyl5\LS@9% U2`xKSAI[f|qavǻ 96g8!߇cƌ<{ 6 cרN'  S zojff#BSv \Æp{{po p {c=e:t CB{ [4Qt=ƪќ  R"8C&L\o5H[D"McF& [O?`yJ8Y>T;!i"#1J-B?F((qY>2:v#v:wT4TU4(#LQq>RO[z}`5*)ׂ8z-ZǻLIT(RMEESR4[*!Se;z0I8t#&*4wSקVg>H|P!E>EO$ı~͐8[c3ό."W*Ǵ{BsYZ"<p,lC&"!Q(": J%#P7r{::~bxjc&|AxAQY' ;S[۪5qXݳ^:jJ6cW:LXj` 9O0!HpR7\[86maDS 6>mj%wo (QSyITdXHSAMu$_4{Vg`F qnD;{G? vIDzΥ3!fONi lG;`s+whROPKcRr:߁FtrhWֽ`\rZt@OIUlCű˔Y=`J.QDGIAy6vf7RY48_bFmK\[UWL]y6`%$ L Ft{qXPjzp=_0"2 aB{YPCdMfDZ'YE@ʜf A#ۀ)0ax/!'DPP$wj.Fz0z=@y+/#ŪGdv@ 'x+Ic3/'a(| hLr5u>27 üf*tɥQqO<`jqǕ{,LOu|גc8AQn7 3P0NiDDAcsXR ]0&TKml^U|~1G}'+a =8`9@k<NFSq?khU%E 5V"8O'-\+ӈ H+ls ,"zp.H76DLJayDKJ^Ka/㐔ĩpϛU M<ɐ@٣ i#&t` ϳ;0^22v PCUuBr0$BK4m>ȃJ:@Pγזa\߂`$fԨ?}d[gF(*0ʀ: uFBs. _TVwP@ !^܅Z6`GFִ2em(9F#3q TRͼpB0WI/ _&jx֫?ឆV~AEA0A'28!{g~׾2~yԸe?k+sDAyPaQ {9ެ8wYTO#Ӭ;AP{wཉYP'"Ssdh7?ط|1N"oXJX1`'!w  8C{^QdxզxYp͔:߷z?bI7O #ΰLb8ɏH7O,q?gl-117-1.3.2/doc/src/CVS/0000755000175000017500000000000010145416156013663 5ustar cedriccedricgl-117-1.3.2/doc/src/CVS/Entries0000644000175000017500000000177110145416156015225 0ustar cedriccedric/aerodynamics.tex/1.4/Fri Nov 14 10:53:12 2003// /basics.tex/1.4/Sat Jun 5 15:23:02 2004// /buzzard.jpg/1.1/Thu Nov 7 20:34:06 2002/-kb/ /crow.jpg/1.2/Thu Feb 27 19:49:56 2003/-kb/ /elevation.jpg/1.1/Thu Nov 7 20:34:06 2002/-kb/ /falcon.jpg/1.2/Thu Feb 27 19:49:56 2003/-kb/ /fly.jpg/1.1/Thu Nov 7 20:34:06 2002/-kb/ /forces.jpg/1.1/Thu Nov 7 20:34:06 2002/-kb/ /gl-117.jpg/1.1/Thu Feb 27 20:03:14 2003/-kb/ /gl-117.tex/1.3/Fri Nov 14 10:53:13 2003// /hawk.jpg/1.2/Thu Feb 27 19:49:56 2003/-kb/ /heading.jpg/1.1/Thu Nov 7 20:34:06 2002/-kb/ /hud.jpg/1.2/Thu Feb 27 19:49:56 2003/-kb/ /installation.tex/1.4/Sat Jun 5 15:23:02 2004// /missile_agm.jpg/1.1/Thu Feb 27 20:03:14 2003/-kb/ /missile_df.jpg/1.1/Thu Feb 27 20:03:14 2003/-kb/ /missile_ff.jpg/1.1/Thu Feb 27 20:03:14 2003/-kb/ /missile_ir.jpg/1.1/Thu Feb 27 20:03:13 2003/-kb/ /roll.jpg/1.1/Thu Nov 7 20:34:06 2002/-kb/ /squad.tex/1.2/Fri Nov 14 10:53:13 2003// /swallow.jpg/1.2/Thu Feb 27 19:49:56 2003/-kb/ /title.tex/1.3/Sat Jun 5 15:23:02 2004// D gl-117-1.3.2/doc/src/CVS/Repository0000644000175000017500000000001710145416156015763 0ustar cedriccedricgl-117/doc/src gl-117-1.3.2/doc/src/CVS/Root0000644000175000017500000000006310145416156014530 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/doc/src/elevation.jpg0000644000175000017500000005123410145416156015725 0ustar cedriccedricJFIFHH Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM pTPn@JFIFHHAdobed            Tp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?)Jb@IO0fִ֑Nwv9'h`7mPG )JTe)K )LzWeU%ؑF;4LP*ѕpYBs.Ǻ Obv[/*˭ם5Wu&Ɂ?UdNS#R/Mխmp-c 'cXݾv4;n9˿K+vD4U[ZAg9G#,e96 ,Szroqs v`+BK変 iԸ1Pve0\b$2Lt2q }_@4&IjMWd;@XaLUKRmH=?G;˱.~acݐn;ͫ& y&&H57~jFhv]vM9WcOHci? j77>oqykZR[ÿ=VmVn땹Vz S<= idֆ7 D,9U75WN΅c ]l Scu/6WJ?>b;ƺ-l5 TұocUiq$O[r>[uכ,yˉqM{ V i.ÓYk'ac7Ap:բJ(n p=Z,k]q24OpU杚h:mD tVwv5TuhX B|A3!0bҗؗ8dlſ E~}h` Аu[iw?,:ipPt;}Qņ>H> %2BXBh׏ʂ d dbDxdoq"Hj?gPVbICɪƖmݠq!th= sXPF4! a#trAp?Ts2Cih{Y @t{KL;RmZ* us:IZ5nuZ>.k?`c6 1.#EOP?iفYtY2H?m{&%J|OEIE}D8>o=QSP}@<$ vQya!KN]Aq8CO҇"1j}AǑ " YߕC/PLdp(dELRY`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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed            x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?IR=_`e [2$ߦ)IT1ˇgw~^w0zX&5'D VMٯ@dYIΩ. .kSE˯.?EʥGPK6,/y:d$$p :۸iJJ̪4 H!>/L|'%))$RRI)y$ݒAOаyLXk.IR&NI$$I*Mkh$ j9院m )$?ЕP $($I"2I*I2I*I2I*I2I*I2I*I2I*I2I"I2I*I2I*I2]TA3i`MK+3kwNu2"IیDE"S#W%_B"57QLfk3-sų ߙ5$s>3p>k=ſGW!u.o%D5C'% @FW3m]M6F>(4D ?,-q&-ox+]PDG?%GMm^Fu9?]ӴxU,'3}9uUF\I%oW0tXy*JoZuQ;foOc{Q2ܓ錟4h+/wcsP{N#'kG6Q/(xZ:f&L4O9$)4IITI$I$H$I*I$RI$I$*$I*I$RI$)I$J$I*I$RI$I$J!3g`ğڪ},l.y`&T> nɻ"m?uNFz |0?L v&ݪAV:\>rK|"TOE:`DŽ#8nvg4R." EFzm΁EIy8C`L&Dk"&_>cSO=)5ߋ+7<@t6\3ՓcS"ROCB3(&|N)꭭`GZx"K\-48r@SQ!&M$ޖ-t*U%6@C^O<1 (kFɱD S9pl( H !oy7IR_1@:S LD̒R f풅Uh$:Bu(6-(ѥ$H2I*I2I*I2I*I2I*I2I*I2I*I2IZ)t$t$u nm[ǀfCZָsN+_vj<"xdF ?50bNpq8,=S/xѿɶ']:ʩٸംyNwTHt9n[XnPx\Ϗ>oj|iyj}yFI=oc }ZəJ|eI1偄(%, Jx (*(^R.:B*XtʃyRIL]ΩĦq&Y()Rh%)w;HIEܠ~g$>$Ti2I@MeR@Jd |(B AݙwAʂtx5IL )tI%RI$JI$U)$ITI%RI$JI$U)$Oe ;"iT,?.ַgGzj[ƧWF \np5Zl.I2OŽs:x9vUe5N@{eƷn-8NU)"ZI7Ḧ́fE/N{FA.%2{mf0~F}e/.2jYfywo R ;M?5[۫0{Q{7krkՌ1iyڇEDVYfC33'OdI#ƪHDe:~;F788BEbj.Wdp$0xxqx 0>*L2 !>k]a:\!(D i`͏4w!?:?6/m&[:VŴW9#kʙ)e{%|G qs3ju߬\|1n;)b`URe0JXDr@`#~^泥ЂJК^KuagXױ\)`?yOɎ^/I<ʼnM*$Hpj$JMIK`e'ɚ:$N)cR(TR?*rd))xy>i ՌCJSYYELjI"$A:`$ )('*Y(ޣvI%)'ҒI$JI$RI$I+U)$9.qOjTzUm``Zs8GXqEn{wZi&'ReK/k5oVXu]`vVsY˼]cl!lprZ3iTڅ7L~aoR6RKp+UWf['ѵV>Oͱ#w|a K,Q%zH_3 *TO҂IWh>r{@-+ٱNUC ih_mԦ w[X]2ʛ#^%X5`([\<$$۠W{|ѬUI粖lisICBbo2^ YFO ʕaRƽ{Cjpw}sW5WcY5qc'MdzHYv ݥGvuY H qMR! 5NZ!%d9aOip1qE^h榐_0dq=DB|֎gJZȥLnlms'$kHHY6K}7k̭ =Qŗja^`wQ5=2675WeSs%=JNSf*r9 @ӞmWc@7ABBD JQݥk|VEy H$_2B!<272 +bTE!)JВI$O6?u oB\ Op G[՞cEC?DN?:P?5c8NJW9I:I)JeM2IPI'I ϚI3*ב R(=JH{Z~ J! Cj!R-!3Խ_ )8N['UNЊ] S'D`:ҒI$JI$Sc永>v4cWmekb ckwVeԿ ۵b^gP -d7c-9+AelvNux~nsGf'hTe):h?d0~!" )rjG/C{pT9 PkHA?Z|ѫl"t?D|d5x{8OuNg=TF~_%>MЕYukQߑMI${̞yq$GO 1JPt 2dO2}iX%ޟБݓ]߆{#8VH\uO(#*IstqS}/<4L!Kx4$c2q,&F!7'*M0*%H䬙I2IY"$ܫz qѧA؊dÚXr,>lr[z9.ߟ?u| D^8~%8Ku LR4NI)dIK'I2Je4ϚI)r76͖kۧ[GmV=ĵ>$8wjǹl թ:?W$ IV9d[\19ޏ9B#!G1LQ{}3(!+ *ȴiMI%a!Fu!ICָo- ѯ+];!;ϥcDn3̖A,stDAvݾ3SNgXk3q5TE~^!f(| <"')f-k,qs܆UXKk1-8Ǝ 'K?\N׺yO㋃(&N.kznC+u `|gc1[OWeT纰ߥɺMA8{<3PHLb4 d` gy2<|_N\.L&Eb}pidOKLtCl˃^9{qf}^㤵#k "> *B(2',reᴣ&O.=Ǹ>j+}9Mx-Bɯȱ1!2~'1χzNV^_ % Pzɔ$T$$)'I%+>i'ϚI%| XxgUbj{*s?pU1}gjdO|LzP)QsA" gם;U]~Ƕk 'F$ӽ8)j7cm{D}.ء֭ɠ=ճxO>;A}5 \A姂s:R9ֺY@,# LY;~Ykw0GqR+K$fȀ᧰Z]K5sHd~g)lAԺ1é!gf[2wϜ$#Y:$8&PԥJHPK_ޝ@ ?$S"lqMK#+'oPvG;&PAD~q <kryN\Qbq@ezFPwI.7ORǺXi:Corg()[LYaاGqqD_SnX!~guT%4pD(ZY9 Ś"r2,\ihCegfڍ.Ͻ" )FXc#O,+xf5G q͜+49dba.&agT2$q 4|qa18frc3⌥2m&/iotŹ_6ORNbA7.c94Kygx7rh1 A4+&^A,p|UЇ:!/d?%y% R`0c/g$!~w'.H.OnMfֈ=O \w|gq×xd!l^~u4 DH< (OxGw'20cu?{R/SXǏ V:#$8~sA PWE~}lJ?L9rÚ#)a6$ J[ФR$%,:E>i'ϚI)4 8> k,!`CYsNJl?Yx0Gū˨P-#'Sf5\c;k@oa5Fs w klKù kj&c}?#NAYcFt:Q.Mն\fH_Up͗H1Vn¢Ck C$0u3ˁʩ OuN]ǦZF G@ ; Qkv!]21}'i0gVMrxYlxAx^ǖ c~%`HjS]0 /C:T W1-ȓCy|:8'.qU!Ȯa,:u".۩c ԣhoެ_5/tWذSb9*`4~XX=HMcv gqΪO2$j()|m(v}"dZgR;RROm#w~X|L$JQ)k%IytIL%~HfA>![%MPN)&sgPktxƙ*,5adTe)M(yLJiM)%Ov߲֓N%i)S(Mh$J\'M)nIJJo#݁K GTVuiGx·õ;וg#M2~\)9 $$(™LBJbE*ߚI~g$TkZ\NwӠUu[񹤑#!kdq"ꚴ r*^-;\\~-Fe}liDvf5CT ]}⡑QsD{I:;:C\ ADv+AC6xj|S8k2 {I<'YQ>*{yM<h rrwaR|BLPu4죿pNx}m}Ѣ,6H?",,$O׷kďWu3?m0:S(sCʸ7wr2!B!čgql!{_nQE`D8B!!6K4/uoIPn[,U;,}s̝ܞg9W!&C欱:ʻ][tO)ڗWٳUY䨑)y6ͯNhC{@ "+tg9Ox*߷oq;hD7uYM b,&s"bPgqy7*w$omihK*q >N+٫[yrұe舑c1NfH_S_yU߇݇SaU~Jre$= F/&9iq%YЄMc`,Q¬Έ(.NS$οIe)Q!蔨$2O*2RC)IFS e*}*!݇EIy@y3j(JS\&<$RR'LL6%|IO-eֵFq*-W|) dl\{߼u6\;v+A*Y"<1pWݟ53dQ҄L+69ңuVĦ~hM0\t?k\yLG;i ><)f|]?EHׂQΊ>{;Wˌ@ Į\`%R?i}-BRd%FSRQࠆRFR^di%ϚI)辻[o)XӰx+1T;wbk^~>GcZ1pdfU@ps2 f5o')lk*kuj+."5&'!--(R;Ms <\8s2 z$5c&: ps#OȄ*8T: ?65IohBe}@ Mkc %y gVA5AAA ,>*.Sw =,鐯achc}obXZЫ/Xg>%\g ],{@_{|YNM`Oxt FD~e}7$%%+V̬fh<{uqXY]$J]|![4a5v׺hi0uBz~kt|,gyQ@З ,qhq:Vy䉺D($)-2W}TÊ6]3a"Vq\f͏3ϯ;*ᯋB3zH{^3A.?7ۏ/g%䚌ޱILs~(xn Xwp -lL\[D8ʞYcK\;&NTII$dRE:H]$$<))I SJI)PC)JTei&ϚI)A!Oܓ 4+^^qhΤG䢥krkξu iY$yJ@x#ՆRưtI8mw F&lәIL-;9!$w"76BpsH=0~ wG)47P;gZϜ'㹳8!%1&TГ&S8A%L3!CR58Kw,~Eӱ~Ox+o>ZelE.rE*ҠSx#T'PI'V8|iJ'@}"J"%ϳa]? P]x?D|L"#cxZ()(PI ꊔTTF)IT))4" $d)J'T))$:JRIIK$$:J]$RdC$$O):yAK%3ϚI3H'Ah8Ak,ݧr3IZx'|FߡM[8RpILj:Gp_(n)LƩ)ZNw %ϟ .0HwӸp;}F ](ANd'tC)uT]@{]QXݕ'R%#}+y`c5!":&-q`v`3P,ȴAr5LyD"WI3=84Lji윝T@"})t)RK%(&SΰJRb2JRHJ\0IJHddIJLI)I$J]2I$L%.dB&N2I)R2)RiI$3ϚII%?lKPcNHSlꣴ1{ [FͩJԌ3PT);4h;k){$hD4|'TT >|F0p_%MCwJ]͟(N$"u#E)tRbGFirJSLID%*Rv;5jg"dt$*ꦣRRItbQSiYI%(̧*))dI2tI&IJI$R'LI2I)tLI2I)tI I)t'IJN$NPBS_I7|IOH=^q$$>Gs d1/9 1*.a$虀!C8kE$Qt#RnvNn!Ӻ)) >jLt~)uRC3Q'Ay<"5EE# BϽr4P_4-D<jckxRGQН8|sA3$U> $1&pCrDCaȩ%))R # 0G2&Qv}@Ȕ:$&"S"G*I"'$xIJɒ))tɂtLSIK$HI$HRI&I*I$B'LI$R$ RtR$Ӧ BI$IL%2I7|IO_XsQkyodQLB $&FHuIK]Sx*O&4ELk&cw]骛\JX߀LǙS:CkH RvM>S  bi⒕Y:ۄh%3AmyIJp; R 1I~:Ee3i%4Sq"L(Ioub["yL|ZItSqIqgVbI)5k 6ZugH> p8 uv-+)$ü i/+9$B"\t1'gtY$8:`Y$TswniY$Gi'qY$i8HxA$T| h> I%1TEM[OURIMS$)$;)O6xBm)mwAI$xBm)$wKk I).x]PIIv $k []PAIv $SwAI%&xHO-( $]SwUIMgdSgl-117-1.3.2/doc/src/falcon.jpg0000644000175000017500000003206010145416156015175 0ustar cedriccedricJFIFddDuckyP&Adobed &L4.       R P@!"01 2 !1AQ"Paq2# 0@B5Rb3$sdtrS4%P1 !AQ"a2!1APQ@aq 0p` 1,ΈN|Y7٬UszWȓm~nmv@ߪ2UpV}[kѣ픱bóq]ɽ~ g6r +2Zmu0R}̵WQʩRFF}U,_saW=paz#%EM&;sXa̞tU6ㅒ9̷;w㙞y ]c'VJ,țQ#Tn{.|`֌fO":byf[ IHfjsI5EDShk*߄YPiǥLbi55UUIc3UGvLYZ-ΘU]asp3 D3YxeE'z-78sq &[ dGL@N;7k?]} %L'7 dƿd}.|}2ZO%aK\<_WNR5w+g'2[_ut_^mWΙZn9]<}y_r|f_P>kpSBd8\UHN(,zƾ+OA$q+﫯%OETa4i9AMMue]rKasnJars^ޤ`c8c&_T$iRAqg4_|^bkjWA1ɧMmZ\F:3c=Eݕw]wr^}mW(M 0'\Jg;8_jFKZCVqr25zrȀQG']{uylV&%MTTT\2u{#k-mi]2l͆zo\wpE}K~^i u#ke{i[ޕ'ݔQ; jOc$fծM]{ F\SvsXYUgw-\@J[1Y[}U?Miotur2I#dOO5qBmC^DzQS]5yTc5I4dФ)qAn#[ƬlB|rѠ˽|[[ 2F69ע*$F¿x={^:)+NI->\}u}D.>.>k?ˆ[L@)jz=@xxUsUuxSZc-ߓ{|̟W$(w?% rwRJͨ_xb; 527Q"?(,(͸mمQ4k ^c.U`]{HdٱJGŸ &S8G|jia^nS6G:0xe1GO.ȷnsIG< og4t[65h~ۮUf98TW.ETH:I^2pyXRFªr [?B]>ՌziOU3VٹC,L "Tϐ}/iUXJՍTV=J)NeNʏ{8PDŽ>]j#]H2%hL$Q"J8QUF@> )-zun4=w^ݹM`R@>L"rp̖}G@+)[C%tQEEU623FwJ]nkn8#Yύ~"%mkhsmYAjV-2 locեFq_ e`fZX@ r8rXx/M5tmW̅ssZ5;r0‹Q(HAEUoZk˩3K[lJG>.h?8:ֽPUT_PxǤ)AX8+ ㏼ttjanVQs22jbJ)9A1>^^%N4 +L3Y==1oԏ^tfjc 0MhD2ҙ#lwnfj>W2ju. n-nWT3/19y [4+ ]WD|!qS [=PД4<ը[/R2t9ڣ)>4fE6}9)Lѹ{zڟGW]J0⭑KO?Mm&sPFi:wyU5pYÙn]xʧ%e{¤>QZj_?y|$:9YN`E]2G6nWLj-! Q6#XePJR`8i`[[4-NG$xK͕PnkDMHܹ'ٛZD6OZz_< RXjVVȂqql;byiY- SFu{`~Ŭ5KԦ.8ܗHEK'LSSPs΄y n?f-%ړLQ8kǏ$3#E4LRXieeȂ;.~L}[|c%+OS÷aq2eb,AkM١!⇥0Zx3t8+McPC/z1%-ݘɦ;ȁ8QbXVo~kjuy$3F*' C]Dy"T2NmKK?!nK>!)]M"4F< .oY>8?9998\$1C g@臂'x#~m6" ^,vMR Ȃf-VݼZ`MnB`n…ؙ *ո0bdȘnÁxu{=^x =ѫU-,`CDpsJAz6p. ȎDg2U ƮY)K>%q̮I|B[4ݑJ1ӈ6BUo$#4GJ TYC2kkq߾̹_ H<^朲Q`Es)1862`_E:#86cb{357<@;b'Nv8gܯPí±<4s .Xjh#fs[Hy>A-]8\.5|l9e PBe #9V?!︗P" iU@*bӲ_2#Jߧi]+z*\T˲me2artīF{lo10` 0eYs<@X =n΀ܷԹF0;нTch.Tl\AcB +],(WSU9dqRRbYgGYBcO_rB) %e"K*A"t= g%JU/zyEgZd}*%uvM zjWk{8 h` 3O\=T< -p1ӟo9P`j/jp6_e59N/KPZ2 0 b#RĘ"P]$A6-~n%nU)DA,$ZJ9!*nI۰K.)2P bXKfݗ7oPJg_tگxt1-8Fb&_ЦWl Ĺp`S(ڢ3+R="zaTD X_R'7/A¹dx3p$%ܓ\Qq͑S 2oDaPeXc.9p 譖Q IYA+ 흍X>?YPDL_z}E41K&_DdΙ7@iժkfe@/$CD!*o/ @NʗSeBPpvdk(KoQEej:Գ:@v?漏ڃ{I{([P/.JC:ipc1=[11+SQ S!/TtT}n'GЌ\WZҥDEroH/*j N Rܹ}H=Q"KIw*j=*'+'CnWUVX=\}n_T*W˄ҺWKT/ERˌ_U믠_z/=a9GCR! gcCDv1=JczTWK;]K7ҥ kͳ@vv1pzm,a9vaA؈ᔻ:V1蝠^./6gl-117-1.3.2/doc/src/fly.jpg0000644000175000017500000005650610145416156014540 0ustar cedriccedricJFIFHH |Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM pTPn@JFIFHHAdobed            Tp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ??yB/ۣ" ؞:ٛ\a ?q|-yE P Ԡ'h-:6=4<@}&9<5s?5q~ikؐ1)I9w=Hɯ]לS)I>:NkVyL EyO)XbГg~ ;}~JM2ҫуro43[jcKcvs xĪ $:W:#*#΍T>{rĐ]\oE#hm cdQ=ԫŭ릶?ƃ-@~뜦7(p yA2u DeR GokULڵԪK,ls]xʱX㸍c䢌zw5+r*% w_ۡXKyʥw0OX#.Elv2U_kV^9T>jDmyͭ%mMѷk(\9.Ni\A}n,.:s4Zla`sAy&6A#ƻ0syU+cp5xAj$6SI?noiw%j994¯˛-58q^,O4*HzU6Z[ B;Sԉߗ@̻켽%MyߎɎ/1I>=9#O*}~ ?ؼy%OioYϡ>'"DF󄖆?|E>zg|ݴo^$+2lrj+W$_8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              v"   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?܎'hV.M7ɼN_&8XxܛfĆ77񹰱!w&ߛxnl,H]ɼOߛx+6I 7ɼOߍ77񹰱!w&97d7' rox ąܛ'`Wroxn^ķɼOߗɼN76H0+7ɼNVl, MsroMr7&9asa`Wrox&Mr7Į'7&9YLK|oͅ]ɼNnMraA]ɼNnMqxX7ɼNVlxܛrb&97ͅ oxPxo͊'/x(]ɼNnMrbSffSάA;㲤%:퉫as\@Cf͒bCy!ٳfć`4- reeIj78cd Gyǿ5YhJC vcG}yV~FHcagbbn=ˈrFE/9ǩj3Y]\Uy ('a;d916}5ïoCtʕ52dS647\v^0ݏBnwkr27P+ i=e=;p}E_#ۖe1Zq\eJ?΋MSOVz}iwv<"(VHZ-~X3<z.awxN,bWs7i6Yf*I*<+3CՉcfpD ZMɰ!ٳf1!YxXٳa`CyLiٳfŠo6VlQM͛ vlٰ͕ )ٳbv^l_3fu?6 M}U|X9Lvr YbNؑlo,!XSJ`dz`D7o67~vd'Q#fͅ ćf͛$ĆeebCf͒ o6V^H1!yYxXٳd͛6ee mzD<?R~Cɟ~1'.m4_\0/͛6kl`Cd͛67+/bCf͒`Cy!Yfͅ;6lQNͅ76l(f͛Syf6lٱffi]+׸G! zk9v$A\2^!zb(1RhG4h9 IgqHؚ9qF͛6I f͛$Ćee$;/+6H76l͕1!yYA ZZ2Rj~I(Kp ͕S/9n PJ<_ܜ8'YM+zq%+\h+֛Øe#(Vڵݟ-'|e+a3KYzEPZ^!΢&}?HCbY(d'1Na"ZPj(&:~=A Brڔ5up׫6c25,&28. ?<ͅ:6=E:ׯ݆~,8r=N]ˣOMWxQ -ޣid?'5ݏqŧ˟ ŃN\/ESjċu8Q_QП{|+?ZF'G)q>~|?NVMi꣎CCC8ΜԚ-:$= p-kP{gaq T? ~Ke!K3\}7G f Z<n4 OZw=LoS 8H~yXqcou~VoU&n)X}6-͛.!r<7׿ jȏ{bJ\?2Ƒ-zTO!$w7CWas`CyyY!ٳa Ho6V^I͆ؐlٰ͕;6lXl6ćf͛ v^l6ᗛ/;6^lmiٳfKccZG3U$K=6`~{5\J8Ҕ`iݝ< 2ɦd4@Db2LVhRK<8!Ԍ&wLpd ' qm%DOrz 4(rٷ?l2P(ˎ)R㍞$FtuY*hGC^zNf%?Q[5ΊnDs2QA8ׄ%Tj:qܾwB]7!F4d'>Xa,10E{7;WYi-/DGSy8i2iw7Q\jR,4ކ:iŪ|̞րp=feE,*i;%dɉ@pF3p p#gB)uK46{gyKN< = PM{)r\G">M{)skl 1Y=Vا%Ȑ?k:ږzޏ|hl،w4l U?~.,yG x-Lt҇IpFʼnaL2mԥ4/D3Zhړ-U`Ӵ\>.k,g!}rpHd/<>4S_ԬV4'Di#6ޟ0W\CJ]]헡y;"ryp?G!};]7@^vAmڥˋPG":jfNdqԲ]{ѵb_33q+Kb~J._ծdǓWs^@7ضeg0QR#.%"$em[J88Yqm'\unx}=7ӳ<*mc ,[hH`V]?-ڡ95O|yVMѢҝY%U#t,3WŃS-8ǖ^?;9bS8'&[w+/4VCa$76l6ćf͛ )6^6leemimf͍.cc͂O{G cF CfTsҵ5仙$V;PPbY|CLEPrāǃZ]28bb]6l!XPc?H i2fUnm'jWMT^L%&!o5U?~ʏqT#<F^sv2σ6zyL:K8 1 1{Y$P@tr)̙JF̉"zlٲ`l !yY@!ٳd`Cy@!>yo߮@KC&iS6 r]5!ٳdl,o6V^bCyVćeflHo6lm lHv^Vl6Ć xm^V;E;/6^6xӳfjckN͛.fO͍]d#hIĝ鋪xԦ忹hnO kpdžPc4c)\1і1U6a6V%ss3~& u:٨q" T9S͛-AbEX Uw-whg>rPCJEP{)ocP5ʌ̹q!z ,Fݎj9B".@#P]/'oʏ)sqfOp_ _ "n5,E:27'+tg/@qy*Ak!yY``XcIh\ZŒB1,#>ee嶤7+/ !ٳflHo6lؐ1+0p鍢ʦ:ӲS/Zv^lmiySf֚͗Mӛ/>-4))L,H8"F555w 4FkFwQe -_j2a-ryrc'nqH^QX8<(nشvW'8lR2m0,_VEEXa(A$K"(`ieh#CzػY蝫b(I6fTnrU~xtz/} 1)|92*5 Y蟫b1.#-˸=Y~.D4;xa.uOs.jIfWf۳W7vd9cÔQH> Pc&iIjqC[r@ZjGO*R5@hcDG''2h΋PUhe WTY Y pQ`Ya,y4Fb"%Ǔ2cqLJtuY&2C ys#12_ej2d@4\\'&beWf͛6o6l !C01(clHv^a,ckMemiy^6xT͗Lm^lmiseӛZuԼG?RGO\4դ?m (PiٮTm# G"XbVpzmțO%wuCNTC$2@ xD$^rBHOAQ!QIlj+(5Vօ㫌Ǩ)l 4챕Up\KrR( cŎc|LΕ)1d Grȑk~X$e5Ng<E<so&v㏦~+ W֌8&6Gٻ#j@~m L u/DGrL8wFFTfCA@`ǻ_J/M݈q"#hc͌b q7qy,"(L 1918!B` \Mv핕R1sgٺ|@c)q9Nw.)ٕn\ Flr qNSdcfU-fˠFjw{Opyrx\9*2?č7ii(2Te64e3S/'p,$y8> Es儁1Io-.d2q+^ |HIo^^c"erX_7pU,J̑ҙϏ&QZc9@( %xM|~YQ4L@ $/me.,281=㆖b2Ǫ7j)RU;J*wŢ́ov?F*hb"z a ַq5V览ݏ 5cR{L FbHhA2# Aqȣ!c"7^O'}or%O5ov44eY5vȆ͒ P Xc4c`Cc28a$62P 6ć pؐᗘem/E:t͗;/6^+N͗cS6^*}9c͊i֎N߼c^˝6CPZS)N,acZ8s˿oe3.9x8 $ #S*dZ1^؋>S"mD ,s#$cnVpascphx8ghj)ˎV2covZ V fe :|?9cPrGRp}Uro=0%0Ę20YqIF][ ˣ+Xx}rj*㚸ϽQn^Ymd72,lc4cH5 m xƌpƛ졎mc6XlHle v6v^laSS/S/06^(eŠvl֗~ӛ7}9W׆v`?gHrrVLłQȒc 6hr@gQ#:en;15_NQL'R^z.: pG7h`4\xB?ǂQ"%q6ercv$ 0|D#%#ྐྵƁ\pԼfʮjf7QQ 0P%XĖ`~hؓ* eLJ0l1 1%b-131=n+X6h[ ե^ؚoRNܕ슝᳤vXN,r`<F3'%K7yk&>0DMۇʮ<9 JeRc9 ~ItA22ӹ2GdL}KrԹ%9۱z8b]FNqd5,q%_d'fP=Oq84fNH32mop28eX`Cc12L\11$.em졗Lm ֛͗c+/S/ )yE;6lPٰ.6osbЎ4?Qc:GqAks[ kvn U_=KSyic\)>IJbJr{{ūw!Q0i+|Dw zc a(jw1NhÒ;f#Rxw3&'t GrQ9\<2BN[zen;-plc4c,i1 Ӳev^U2Lx6lQMӛ/>V!zv{3s˭M1&.#&ee0ܥz.&,R6RqIhzL -bGr(sLA:N C؅-uʳĠSOBA]aqیu#ՂሯQDA.EǠ *ƀu'B$Ě0c"2 {e@'& M13$"+1pMjOߕN"^\cҜw<Ҍdxx COT;b"o~D3 M8LJ 8v88orp27m:!dK.(pvlM~ӨqZ'MƵ|ؚʍң1pe ~Ug$A23ˏW ~h!佱^5k1VlUٲb뎍LiSҤf2O[oD 12}N^g 7L]Lչ#kmB>#>d$"#/Fٱ4'Cij"PM<C0c~ j)[ 1۱A)/M>0'+k/81k'?ɓT5{ftSbjp[rn(QE**l220$ƨ*+pt I!qc3$n؟»ye )^%Yvݾ咜W:T.Lg"2LQ~wpvǚyg14ap}In%.m~ Dz~̗SGк  e2 ҁjoL1ת$OŧQa0qpJQ<1eW a*e#ꚭM0 NTռ=zȁ~%{E8 a#bNDTvMr#u*"v-k\11 e e´켬QMӛ/>P `Ve*Ǡ TH>sPf:7ڥ|7*Sxx$6NԠ8m  6ԩ)׷Pv8`<{@;x`Y-W>9(Ě>U$dI%GגF^ l7Z>dWm9+%P,9EtU<|mlA{k5{Hܱ۾r3u#HUHP׌YZhP7PĹ`5 ٖ8F?\#xU_ŴK5s7)|l(#jn;W8diEYJN PFRF~U,ƼZ|!~|_N^TH#G=։\ 3 '0y 2lHHQIX[#n#' PHO? W=)|2Ս0)|FɔM-3_*Y8# $;XP G!ZS_V84d.@)#g4;c@oC~l@ Hp(Idc-x`n4Bᗕ`[!YJ bSJKuՙ@ۏ.H Ąm3^ =bES_ XPm>-Bےc̡IF!;1$Añ:v[rlˌG_' Hhչ[$bڂ)p㹎$R)Oe8t0ƌ f͛/7Nl|NlV3Z'C2kcTTWY޿:fRֻ| Nf`#TJvC1DP;8ڋ;Sp|~XڨP'Ҏhu=*9`T!(cMj!G)%`fL)7=>sʱEPwĝJt丶ÃrJ*>Sю%$ө4Sᕻ6. eH`?HkJa()0),)MͰM t۝E<ZaRZmޝ{fxbb 9^v8ju8H lUK eq65ZfÅxuЪGlQK @ߗ¿e"6Rq9+v=R4<6E)QZ6$ ~4jS6.&J /tqb;(A*> +֐5#fh7X"#s2!ARm?;@r֫ oLm*ElU}9W_~͊ŸOPPBO?f_@;PQXS3bUeTC߯?¯izu8>f/h"SHd5}Q3fHy3f/q 043f‡P0j?G6='1~9r͑t?Uv=dž:g3e)}QA?{</#?l*|usC {=ٱC0=9ء>gsaWgl-117-1.3.2/doc/src/forces.jpg0000644000175000017500000006154210145416156015223 0ustar cedriccedricJFIFHH Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM 8BIM@@8BIM8BIM +pGP]0JFIFHHAdobed            Gp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?4R iVB)JwRkԟu̦a0I,<ޣnY&G0ywR3 vܻX~60v?g%c]>$T㏹ r8qm\ss|:LJ?/n %;P(gT\GHfˏQ(ׁ$:NX״gT[O 5A@-uO$Йҕ^uS4?"r>q} '&jK']ˏP2ڝ0.V+M8Ʉ1Р>I33peM>yܫ CMe%B8dɮ2e d5;vjhih4Hd;0;YC4P%> D57Yk488U8vư4I'iQ:M ѿ؄?p^Ϲ);vhVG@Sc$\NΉ3 n(icAc$'(&R%3CJ>ɦbKH\.'ONMU>>մk5ypޛ61ٷKobk}n0BUmsϠ4;lq lo3db;Z}W~wZT=?0k q@gzTr27<øSLw#be&1'7v<ѽuaip Ā<|ܯb5 Skc9Om4km*W>CDFk+H:jdiHL%2n:Y+a#p&L>Cl@k!&9|OsS,HA>~Gwe ifcec5iÂixnj7D u?cn.Ӱ=V"Ac/"Id8״zX8;&WۼXOacUѹ=:EN7# dLWK/iN{^2Twtճ*OWSH0NcW{6 ;[Gn$vXDc\dviχ`5Cr"8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed              ="   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?I5OQr>9|qˮ|sTfOjآS㕛|sTfŠn.+66Nj )>9YSu>9|rb5O76R>9YE7S㚧+6|sTfOj sZW9pPIW Z‚<(||r'$c,rϪ{uy ^A@ܓFb{bݿ?!wq-ܦiMOeFnLl6F<"4NXIęDZIʛr>'V=V;a+qʞ(n*k\Yu8rvUH|N JzD⭗oN0c*&',Lo,',a r>'5[cU" OS6oRG2>j QFIC#x`w"(1qTTwN[HzToRX 04kY(M4(qT:rIŕN5S|*C~ JW4R7] }Wz`~ P#fͅ;6lںuͅiYSyiٳf͛Sybl6vlٱSf͆֝ch]H>r!͏^783R[+WH Cc\ ,jw'+26 %YXjr(1i9+[lX W-N7lu hlUs(Q*A;cٱ58Ui8r⭌uqoqG)3Lզ4e U`S\WW"Џq85=6QlO}IE*Z,ƴT3B)N [b1.*-+Q߶/tuiqTP&F=pmZ0U*5͎OwsSsZdAaUWqhJ$efliUˮ6ٳaSf͍;6l)lmi͍͕Zo6jŠv]rI(Jwf=֗uglŽY~?˅Zp[S9ܫ<#sVbI'W,"]eV{Lӱv; rq1L{@^,D4=t,Gaɓp8qǜ\Tbp;ަی@ԓV`XBp;4 N &rF#qOz"#RQl*MH1c8M?&l8|hpbl(q7QS)$Ҹc g1\Mq3[NZN71[9qbnqv IN0U=N*b6 2ۢQK5/7}9W/94c2i^W65IeIvlٰ)ٳf֝bnaefMʮ]qf͛ 6.& <xjAկ-|rҾ#wڝ )waБ<Ҽo58||rL=E@㫑9 $"d;KIɊYԧF'6N77zeA\>9Oa.-l^c FdFC`4$jw*y8nB#aoOǘCHqJ]yPҴ>#!Z™WyZ[+2k6lYhEóf͒4켬آ͕ ybo6V^+N͛66vl%$2JucWl6wr46U'T$9,w;{WS73ܮFPlu^D(r)lxe+, *ld, \}'Ae&) y':[xqVQ\i1m[P2P L?/V/5,yaB:b96?KrSۦ_̛tk=}iIˮV5O\q=q:'r4Vlَ9N61'Nje!JzTFfZT ic|81 x(GO?OC ?gK1j-Ğq?ۏƮ_ִ jJF)0Y#TU_Ƙ!<12"'b=\Gߨsϔ8<De+lcq('N^?gqG7mG342Ȋ@ӎ,M:*> 5$v}fku/vǮjLe qUEUT~_R-f_3bX9Yg Z#+ ܱ #eٷ͆{\6sefM/ZvlٱfI*BIX*/V9uy.=X#`4o|6Nu;KI=9ʊ+Rr x$p+$jI;=%4|Ӧ4t<8\BZle__5ij~mHBvшQj>QBaŨǩf 7fůj^l`TuƓїƒ*H|'0?kZGSݘ\8o{(sMM=@48?/ud^Q^fޅl+^c@1UTmo׏UƂluD늭~kfkf_Vl`;;")X쬐,[rLo6W\-7+6+M͊yH* ؜G Snhm.'%1EHz~}CR{~q$5cD@ݏ,~ű$ؒ+"fK >´;dd,wwE? _ls28"}5Je\bb{~/ħo7ѧCxߗf'OsF9 {bu06'3UEqi$$`*%2*u͛k6*֮BSynqE6Hl%1cvl܆W!.ʮl,o6UFnXڜզ\UlEv UKН:#HR%OXAV=@pvg \}p:n&JM3UؒI osS( jJ őr:b&%)PF,VZdLZJADC_!ZQ0\0)Rhrbl)*k{ɲ_P41&|L4SpUCՂ#9}ɨ C_xP8t)/Odc2,zg 21؄; E0Ko!CmY22 d 81 ֜i44IF\NcEi.)\>P=8ۮa} t!#vNY4<<NGb8~+Q1ۋ}GO̢Z@'q|2g~cb8p -3 Y=TG6 ?a鿿>/qɓyAJmі$~4ĤNT'T5_dO/?B?F 7EI\GVT27˾mlt} 舏ou~ToS&_)K=G _A6 ~%^lU0!#>ɥǫǗYO3c"oLrܚ 0ca~֭f.SSܲJ?#18 ?v$X~4-0|㊣  Q?ݿv^͊g1E!y{Į2?vۏQ1NB9$9D&P |3z|YwϬBo_eWaHj=7/]}f#_eU]Y?EJz־ 7S#|x6K1:ܝSDNX {qc?TNcg`bu?H /E-&OUc.dSb+OȔoFF? FKbpB|zcXuaS1q '|+)-|Ln- |TW U9nޜӁTT&1u ̣V@%Ȃa<9jXWUiGb(,ƀu87zwpœW݋KY_HUY)F7*[SsLτ ?KJ61޷J7uvqrA Lq8I4yAnEA7ȼ}Te'g1aE ZqnH.{lY.H~+SQM,?glkFĀu`(2UEx-xaN$Mޛ-J@T+Aڸz0c!)LjB;'jtKŽIqH+檙F0qj*qoF1p͗4dI:r3M_U]b6݅p#a w=ר|u8=TڔNJL{O~'݉"}7ZQzKdrzlh5,Ԟ OlP*ОJR ^~r-؂+ulk0E~<ۜu91@2|[;h+ 1M>X~d*((6n_zTsdЉ?%~+6j1lŭ(cAJ!(;fVyz11'eҝh$!Mme_zxdߚ) r\K@ňQ)T$ñ=O}#~LL/OE|W7#E Ҝ`W~ֻܿ=er]Ps'w?pCpj9XKʕpɲ1/6u's rr݉b_ :`v]qv-4C^,UZ$RЊI1&W22,uTSI選mS ooqS@)֘ R5늨&qb l҇ژ#ӌOگ iTn^|P6lOFG mX,v햱oS?ؓ~񂏰6K-iAe{NfS#t*T/ $"r%,ES6F|L{cXAjtKnGOƄ,}`F`Hoi3ew _шqT55qم{|GF(nWghFZuTb6|  *E k(ψLK03_RZQ%Z[WpLjc"WQ "4c:}1:NspqBH>Z:+kA lmMĊmk-7#eaH+J. . >@7e;76SK&s㜢pwx8rlǭ_]hi\BBy#t4[tqI pH)O$[OH"D?h{ ANS9q>7c_^Cj'1"tHSE0H{M~'ŤS.^ t#=DT؁̰\l.)M1ރ $j`GUTҠ`d4Flj/?u5;尋|^k7'.aY)޴ CUsQTЁQ(Q:+NnjmXRtkI,W=YHQa4}Y*/ɰl7H#f,IKKǭDɉ03^±'܏Ֆ$@hYۊdQ홨N=FKͣa]Qv-0+CA _t>=ktʫEA E#{J_On1qm6̍#w;erz.\N$R)ֳ MON?EđmU]n&olEۭ1cRMN5&JIa459nĆU٩Y ^gCPڑwqUI=I͹v.`һ6+$+bNKڥh1m i骨ݎ~Mx蛛6\TE-31)NS@9w5G{—i N9F<0P=M3F$Kωp(@v30FM/]-Jgvؤ\`ZlG`FXAL -@L'5XOl(q(֤S}ǧE_3w'1.tmFQMrej1ylcRAؖw(XcHXQGQ!Ԯ W~JB:_\9 }*V9_PtN&8d=u}2"/JU$$1A " Q rqGGO'!\'޵4 ɭ?}p}V'Arp#̇{ssׇ~H#R`v4HqY3rofs4zNOͳy$;rIBZF#) =-fMiQՃ c>aĩʊ7}(cmR~Fh%~={'΁VJ2@ L1.6 ഼ 7)I™5ɠqA\n̑*C $u‘I pSw0/^aKBrMw5q~qcJXs$ʼ{ B)pZ z3^/+y*;5+ώs 5kMo-ю0% n kqa~`7fyf#U_]Lgv8&9E 1!U\NSt&U#բX IDλt?"HEQ8c|h04ب]%{\rcKyGI1P uߡ+, e H$;dUWqjE:wƮ+q-AHzQnqec䒯#´!uh|3\M4zpH  4lgdd'ğl_rE'O}q @BBJfoTTcyk /'PR)eIpT|MJ#6XO`exƦv5ɂ6CTҌDPl MhHP~1(8삌,#]|MڂlZQJ鉁 df=e'n!o 1@:nϿEA6H^[.ӿI*܏63 ثZSV5 "pjN&,чjA\۶ ˷ɂ!O!3)k MX`hЅzZɂ/vDe*ܚYAE^wX9FCJ)\ wsmf=oGV>.57彇64sKHxeIctz0|H?LzV>7!^+IvLyŋ4aÛ&1u3$~>F>%QwxtO#C<~%Dh+\mmW {*bW4qٝ(<ПOј&O.Rdaُ[ghu⢥DR}&^816 #o!˞Aۖ2Uv,M&:Bԓ݊Z0)p+ң = jAVHҚDy$O{GĦG: ?> !MYrY?!B߳|1{oLJLМяO|֒ ӦJMO?hqYǻl2jb \r ez{kn5ƨ rU\%RscNl_Vf؁SlK- "'4 *,-:N@%ȩ0YĨ9&"9ˠx)]c81U)*;o&j)Q=*O`+bOra4X?ƭ>=%BMW8C8ːIy^pd'ڴH#Ve"RA4ᅕ^'J&[Cm& \R'o \BВԀc\*q p nMI8c5· 'c֘Spec޸'9 k܌ 0 I=J!h=Gu?S\a**Sp}D˽EYT}BqKr~6 E4 |VBHɆ`.'+y W+zw8ʔiZ%]Q0y~˗9i^"됴ZD +5 (5RDm Gޤ1g2}_)E*қtdžB:J*~lQ5S2J'CQ_w',=wt N]$"MڇdOa\FF}+S}DEQZ A4byӏ M돒%tJvVzr>n.GsrDeV&#@1G5R}Ͱ,z~)@=²5_zw7})1cm6zeW杨I[qj~'L@ Q*`@߯ȮT1]FTaSGvX'o1*w!I- tBQXaɘjG%ڒ\E TY9E%G Bܜ 2HܑN@Hǒ[[8л#Vg5wPJӧi8yw+S:}a˂9.XLH*ldfSӍ{8Ֆ1V {{iM i*ǵއESef3;SS*NĒ*qR$ӦPU~)ݎ8Ҹ0m]?Nl|5͖25'jbv-߽:<.Wdc΂;Pv'7MpAmvLP7߮&❽4^Ri^& `(~fGU j QN&Vky)BH}HF4kӭgrI u4~| {Y`e~$9BbB1fr8(55#qa+X[h,|\ӭWa^_̿kҮ́ǒgJ=E$L w; $oۮ=VY~*+ʸO lr~&S_,9{ӛwZM,&yY9#<ƘYqƔ_\ZxM]op nEs&<9M$CZ޴鋡2DJTvjccI G5\oBS&2 _Ԋ mabahj }|l'ZEw :vdj$m/8E44zqZ8AMMj[|Ns_{u-fbHN8@ޘ:Ǡ&J8^(-(BSZeVlݚBJj#p2GeZ:h"I Yabxʶ #^UOk 03Qșn'`b5:]~0Mcaѐ8 zqƼʞ&ܜpBDJ>,-XD,9' B'?u4^ϮD\I 1z?mqAjkOnaU`7iV0"QZM63A\q$Ol &@31hYDN,r BRG1XՉF$LI4AᏞy`@D܏|NA+\-AAL'.1'(8:7GHB޳Hj>IMF#`1791+;Hړ,Y!NpcA`lL Y0sƕm˰?,|Jm$a\6/ۑN,rHBD3 JCDXjݝ椓C2Y&Jv(iKFZiP:b«1߈72\Q#XW&OJbp U@X]w rxl~ƒ_kޫv+lI3\U XTPƁW+DYbrP j%F"]ѼhkYs1Ak(Ee=Mg( ϷJ VHTE,7AxT縉F"U)SOʪ[V'zbM]UbzS_滁Nǻ,Qպ( vT=Ӳ sF@H#!rUBL%p9҃9E㝞*nկL>]҃8)+4522П 41PXP"W"e5soB"-G߾)/']b<1EIg3A,mfd3nh҂O_Z \:~n z_ll5sƊ(vʨ$O#\U>5Ĝ,OAbڿ,b !xIסiȿJbl>y0[B;| tǏL ծNى!#q2MO݂Y0G&ΐ*I=lkV/ l*QK'㜵 "J`Pg0_iY*N*`!E ďlȉ @Ã%yة?QFB_QzCrѦ?5(.ZJПp UfufģREvC=<18$HI4ڿvǨK(,X}%v@w jA1ʟd9R>H @Pbg! |J8AcžЅŪHSr %c54%iPP(+nNokE^\2kQ*S\Mz镖2fz`Ze9# ٤-V0iry".bQ_,H 㑠qF2ӶGѢzrO.Yr2R2R\$|SMJvu"RmbO\.39 ^zc22& zaPRR,~(6b|M1GCw $Ĥr^{՘T' @;NB'۝Ws8# 8Jx X>.9O/=+66B@ =r1+I1?j4EEa^*WERƮ(ۀAPUEQTtg3u5"T֟/wVzӖl>n6!ܯYCSX[bos]-B4wF7zSnDŽND(^#ć!]Rj\ƓN+#aTtAaM&#ڇ e0=0I"$Zl eRi-)tMyܤr|? 88_,a2E@=r/ [8ES9ZHY)A o:qPqI8J{e 0,_$~Gf"h4 +\Fъj־8 Z RROӎc]ؓ2q3'NH(YJq|DP2\Lc"X6Pb-RVA`zbʤZdUO" EȸkR:]c Lt&N0>n$ ;S-Hl '2j݅+?َb޴@"oOLy3 TZvgF,jKDH^S 2@0HĖ$FiI5?ٗ 9R)Rh=;#)qd 8T9ThUYI?A֝㍋k\m$G zMog$"Vf4rqNf^q 敖4+V>4vNF]CnT;6E $ԓԜb.>5oA30u?g0s<#BuiGJ^1WF6Hz2̱&?*zw&G'~)@#nIYo#[!c(O^m^DƋ_ 9F28#I:{:+0=F%;1W#JȠ!X|(kCSEDBF-޽wʖeph}덺Z.ܫVG 4,{|wթfXxcJ/Mb>ʁLM=ʠiDd"RmULkӛ7}Zt6ӛ[ђI\N݃$';9{\܇kliR>d)QqE:(?p^إs:2_~Oӊ&:M=6杶(Su!kk z"KH0 $^Ier`OD um_ -+r} .D- #`Y"Oၚ'ܺ4EEN0P?v0ۖq3xq$-͗s>'U ^']8SbJ!(7?wQ+TUv.5|A8? ,M%C`wӒ(^-wMb)$4.c%q6Pi}:u0[1}($FITTP 0NԚ|\z|zeѿs?$[idנ*0|v?!'_ۗvr~H>l@ܚ゛:|O!lďqBL<| CTFtU jOெM~X߇>d=ݮ9 q?ww;=gD#ά@oޘ$W½㏏ۚ'=PoOhܾу-Iji$>}j;zoEN*.m D;(j n2OA؊0}R)_ڴMH~%D²lGڂ ^DjZeOzjiۍώ:ʊ({WT4_yIm:IcPOᏵI5ߐ֛t'lXSޘo{rPz(F>#۠1 v=?IBxN6Y2).W rZՀj:b^gvPGPrscVD*K^r*OTۃĞ4n؛ުY^~jV[<ԧ,~ϵ_gl-117-1.3.2/doc/src/gl-117.jpg0000644000175000017500000024426010145416156014652 0ustar cedriccedricJFIFddDuckyd&Adobed @=H,N  `!0P17@"62#5pAB$48  !1A" Qaq2#06BRr3$t5v@P`bs4%uCSFDTE&Vf7pew8 !1` PAQa"20@qBb3pR#rCcs4!1AQaq `0P@p <܀]Z>OL,4܏茓Seۦ~@boZ,g]1z;;+nLG/P5lҧ={lu[cVJ /!3>Ǡw &0&[p!0x3|"L+C0:,}Y+? ž]$r7ToDxBiVD;7cC# zvRd 4=7N6AOCz 1ކ <ڜמ~؝9@s:Wc=< ][cƱl>IȚ r7,t0\B$ZCK~byu.ADi@^8.$QɚF`4I׮UɅXI"BqT[rᑽ8C$U(3_+[?0C;7~'ˍsVf&*93=_eQ̾[[ѯm=-{3'mLv3_UI  C6JyL+ANːG (m :/ya }O@ 3dXl^¦҄Fg(W)z4?1TykQlﮜľJ_Z?RNWgb=Zp1G<렵s%iB?´rtrԪ]'aFv[58:sEV#m39GѧQRבȀȣC`T}Ӡb0 o`T4sD.ʹʃC1PL2pɒ=sڳZReSiK\\V#@by'Wb?/֞e>Dal )!EB*dMn w;XaDcĜ)a61Jv.$$}LS5pxxvUTz0IK(*i}3N_U#'{˱ a[t e!@{@ C tI/3N) :/:?@XqaT3`VDPږs(yCo8[Ӧ1fOu3RW O)_95ΙWn;UƵ;Ѕ3Ҏz1륏rRrwͪAdO0؍mDz^eͣ?vjz_0EYGI21ϴjtu5Jgmp&X##r72t"\zrBk!+CXMPey!q&9έL*c1ZЫ9O)e-ބ4&fI6ԨiΔ%T)i|iPzmu[}EȐ<0/\Fט:)֪:!w;ϓlg6npXįw'i*k4NP9A>N_p~6t~^(Ó@6U ʝ<$&@2p~  ;#+-ĉFg)1 'r6WcuQ"S]Xvn? &a9+ь)2TwV6WOlK<}!s$ٮ?6. {Ǡ pg-Hc s")9k]_3:FR.;yun*}G)WGFڕuvm^:#g @#p !nUP}pF%0OO9!5ZfA`ʃr=N#ݡ%?YLUҪSz|.ǕFeQi>h%) ѵ3vT)֚Niwk~ b rTWno^.Ǟy@y#:Qmc1uJWmj:ӝ];E] m# 1O c%97\vE TcXMPe׹r |pR <:^. 3x_M}/FtH7NeW7K]*7#OnƟSwbJly˕Oȕj= %W|f1gWZoy(O^b6{ByMۓm߮zM,n\fڌH(:pzC[iOlƕ%,z5I=EYvٌT A®5|u U*)Bm#pri}:?FCAn߰?y͆z~Jdqֹ~ɫ1LpOP ah"pul$Ipf{IDʳǠtP uf\` E{'NtTg_WJۉDvRqf,bOnd Wۿ .0ʍ~a'4,ÞEŶ[UB^bmiڜrniw7wcߝTwTrkt&nTa2( .9MY! :2x9a5B'`E>gGeN%#@`gO>~h]z0ի9Uu[2ye[q;ˍvxue~HMpfՁ|9a5BXe*sBiul$6g`;GEe[[қ\Y\=u IqwGvn fC֧=j^Y\,|y :/1' ug1W'9!5R[=9a5Bbdh Tl"چx}wfa?sw']ixQb<\ \=@Sψ=~{r>I8,%kONsx\{ Q]PR]?_rEn}gL޻|9~sm{/<$U٩;O+EunWxrtW gesfWi*q%2|*k GKkoy<:総ޮt';Ѿi͕OU<(={w=M^tNƷL{r)xCBv|A;>#*8saӱX+[zﳿĨ[χ/cvgrղyg:9=:,ι 8;ZU{3&aq p=Dn6~]]pJvl`S;M=SQggG_zNo lh c#6kQFl\;"9"; 4Wv$͚F PvTu vGJ &{/,7BhޑF{ED b<1Н,:65mp Jcc@gbG$v QPeͺM(Q2"f{ʕiVN~7u=MM$U~uM͡jQtS\}hl?rܴKB24z4wũyiItV) fqr2QEw&{,I'SUvFzե6#ODQ{NLΈU滲#wv\*beiO۵_P%U } aɹZR/u\ɬ-S~m'dZ60»}>*RU+٩Zn;UInNtP Mblݧ`wAOW/7('x8On֬F>H'.ml'$k)ߕ)mR;U 9> 0aIƝB(0fC_K "ETҙ}Y?qduVWgg O4b?%-#,brbl'XA< 6)-af:|ܵgPnJfz> arF^=ʹ:5dr.H>LIR9c8ImߤUoEU gp3'ǿx,v<5Y5ߐpb˚!j2jΪ):꽷6}&eQ1I4o]3VKL0]L~1UVSYL~e1qScI+ OhAxnfѯ{TSeMΚli}ceAPBR\y.; (x8 sI<9U|!ڜlUW>eՍ sAg[ƽDB2ِoEpAr\HՃR bJB Ԇ$8e(;NSk0R)LQTDy)qlL3NWÓw\aɵ\_XPB'quiՊWLS!21?^%"*ZA{nm VoKVk{ 'F[y'MXԫNآWk֓r#/ {[=2ȵ\X>`vt!4>cAh[hi ;f҂ma %*x%n)7pQIHJVZH]S!1;gtJfÞ]HNj##Q%!AihHJڳIqAl%r [8t˃ʵn5EUg$uJMj[ZҡӪ_ȔY^j|12tqNe,n\hiОP40Wq܏mZ%fc}T)LN6E̬]ooooRh:ȌNtz-0b# "S /+ޝqN4:ݣLxtj rC,o=FkʴM0?SMAXdYAyYRRMfIH*sqdPū,ФF$5Kz[K>c7iW/ Y,wuHq8ާסmHJn j Pf;gUq1/1MԳ~"ZI>ioY=Gd\;JzulV&QK.Q qnFBV!i. ͽqw,ۮ .NLSY\DHOT>'X6$eYFnjenJ86&L͢,wQYdAjek'z* RmS}m)2RARg4;PZ%NjaOSն׭iԫ.g\]&NF`%϶AuB U3Pfp$D}FIJT69@9(;C&+m4 iiv!Nd£Gi^7E:Ľ)j*>83,7&g3Nă'ܜH?rq ă'ܜH(nwL)N bru qF +U@şJtJ฀['AA DgTŐKIhdeIqKdI!&1:S~#T[|HۤiqPJUBeoŵmb?5K Tq W UʴUYj ;+Ht2u( 0RթCԡjP(}Z>J RVEjȂVJ2.u”*BKr3 ^eSVЩKqͥߥ0e HY´&56#"]AՆq)I1-@fd"eDR u>KIi u[ f;Gm *zqk4j]Lbqq.kCBĈlY6Ph–Ƃ40j -GWjtwS`iQGK SگiJ|IMjDChGNoxERE;lhYr_>0DkuU!O;lC0 )$;[R5)J,fKDxAk]H̏ te*Ɛ5r&}ߝpdDџa,89G'DAh/O+6˷`ZWmS%w*hHRK^"[VN6OG ˰Fƫ~R.C-eh4L %Pfʔ3Pm$DS&b̊>Gy -k۞1t8/]y2/NԖ])tub)j8Z&Z;äVfjV[O̻U?d]Ywʡ!KQǻSJ4&1R`W9ǩS|R9v/גr*|8ykBK$_bࣴWC >_>_>_1ACQk_ *Y hD Eי?:95LbTt52aMD!h^7]K(5.ujlT]Ghq#lSb5ROj].qEI(K4Yb9N Q->Fat+m^Ȧ9̨E'k:MDiAi_/Kw7]1g%י?:hFhdG^H>zҡFnR_ Yۯ6Juڵ,DP[1V˜ɘ0}噱{E3_֞Kut}rN1Lp(-6b $Il>.BŜ:}"wir%ntHjTQ*$rtqAM'gOeͽxWi&he+̟˝pR6㕓a;{ԾzuT.>y;CI*ę55DSA;pV:dJD:Gq0N8۪6Em!-9Sj)6Rj-'cX92q֝™ V"bIv\I4qĻavad^˕zI GeԺ'\2KF.YN1D5K  ;hƼݹn*ZT2D$HJ8@Kۍu.iV ia:iZtҘuͩv-+'[2Mcj\$6‹%|qv('@So,Ճb( m.Ro,o,o,o,o,o,Ћ,J+>X)GvjG}'XH8lDR]e }1bXnNdMм9͡B?!ȤCu$UwLw֔HYPv9THL̈t#Vuk5^@F#b,U2MEbK½,2$CX/&y7+d JJw}7]2QJﲪ6TV7k);duW2cEI$0rQ2N821F lEIFk7T.Ly'*XERK59?&naYU,:KE ۤTܬصoܗ H~[ϕuԬWW(PRBGf:>I ycۭlZwowU >z*NӼtZ{~UVKxxq$+5l'_\N9udp.lG? l-$r7BhcErN\ɯ暵?rs M5[#)_̹fD.J@sBrorg+[?(q>o{;\2kO6g)<ԌMh{fZ N8WtHÏȉMJ J V][l$dx_\N R{khݵz?RP|ZzaKܰ#b#_qwa۩+&z{NxO0UxA%bRƎ9[t˧0sRףhq1ţ5sWy}Y /)K㍡[C}ZO@~K*ٙ䬡8?8rWYY r6s˹Z*Y %S FɌX7ZUfܪ-V.W@&KGON]~\mh~1[ܙ6~\_6\{VU2q_T76sWg6sf!YlN?JjfN6{:K"CT0y\et_ k-hǓ2V%2\{ƺ, n)_ɸzq ,nĢd|cje*%Klp#3ht:MH˼g|p~ ږ/SGi"#+WL+CZ| NPxvyqx]xnrg뺯B =Q߅Sx[~1+[~1f1%| Ԍ5aLwU\!t "jWW )t _HEܡ'WN؂s;=l F}Jܶ)v Q$k(KSDrĨNjQ$8ܳ[^FzStӸ{ܵDe4?4&QNr?z4R-͈qOq Tn!F?MGFqnSNUD-۾i' ek:h!!~~nJ Ahӛ\އfDw>h{`A )!d1#/;̎C%%]]Q(&GԚ0|GΠ6>F $B# 76C6 ,qk$p27Q cfICk A-$vP JA#(@ mm#rF0f⒒Jz>8n10BGl@=fNw}Մ=RiCH}ޟ'Cp*1[fGD!!-`HJCK~3 ZwC),%(76PJ=K(7EC0Y 5OHdD@ Ӂ&AiIF{7(! 0Kw(cq_33'hZV^Wui.>F[@ֵ66## J87:[B {ɳ0PDlB42;)4VG#XZ)!C IqF7;qۻIeRUHq[RCR 릣il)ըia0cj6^I'\6[1[* HDchCi 'ԋOR=:h6'R[&; y4#:fI#^0A*hډq)m_KmhYzL!큵szw#0iKar Y[m }F P푆p|C-hJR5HLvA)"n$'E>RP'%1F~OHq$qiAz))$)`f=Cnm6<+8P=4P"uJmyQjDQȁROqQ2F(,ZhiI t)0D $f5Q21 *&P\& B:Do+5:B !_kll1hsCC]BII szmQ:]K!QABO8>&A%RZ SL6҆CI:>V]h32&`FZlPE]AN/I!_唧pNxt5zM}]5/+%&Eh4?5>%4CAPeZI4x'QAŠ%ԽJA4`Ђ%FZ Q)$%:-:K_+z6 d O5gkF2?Xm*Q^V6)?rn GO@"MM)8J@>n~Ƥco B>$=ij5Zq.wOrK d4 MFp}H$5TJ'`%dKThIhj6JN0j"v0P@H!""]%%HWȍFD-"B} (:}ۀC-nZBA$2DFfMd|>&Y!ꇪ6gն}Z@j5?6QFHuOW4yB#=֝BπTFfgFTEn7ѵd4kPL 1QHVFzu$UlyOv$xdd MH#_,ڍzIB֧Hqm*4ZF'`# ! Q.Od) $nZ!~KaP:'ZSs[y=0cP]y% dcPF5Mj? !jmHxNf5h2(-AYj5SCQ){AEJ&7 zi^IJꯇR]M^K%u?C'k3ɤz u "AQ#Țg?(WJAgӏvfwGy/ M ?_vfGi4 D/R?Va˼{|7!Yj,C"Ba:0"$3E6MNiaFe&D,bTԕ7`HD{bqD"k11M"JNB&"-D@ؠ58,AQq#E8Z~mIyDT`Vb f2D[G:q7q7q7+bVm=}>_W>w>'v{ /S2H`ܘ,'!'v{ƞx;"x$FT Wp#w^,;!e$))[ "6ÐʊfR ڈR vBv< #d\mJ b 5 aJp z{r)qrL,"w "7&o!uqIpBy6l "Q]]dB1KBFy9U95Vǔ\7FRt[3۫ ,D,lC nĄHVF!JE׭."@!XDI hCQ^\7u@,&&7H) "7}",HyΝ٬R"7 b%b%br(3z0We0Z֗|Ϡ?? ' BcD: Y̛Y #FM4L#yA '@xۮ1E ؿSR= 3C2V!$+vXM:p&B3 w[mR=ƵzEIVehN&l;I0;xmϸ?_G"u~>9biS=2>JꮛT KᨺXo  gJ]!A+bVltVL%᫮o}Lo gSpsa@M661?gUկOC I،R ﷴ?է`7 )\9; !xnvfQBڝ XHYC"ZG\-ȭ! >*.^;IO&NR蝐 SnZ;#epitdd  Fᡈ'?K+'!**1 anˁM%G;F #f}{TلNwKh7Ƥ;+)%b=^ ^µ4giR8F]a:nqGZHFDxBB#:];N|Ni [ŝ%Ytrj%Y/U?{J)Z ƳQf"m2sS9bIGO5[':w)d!;# su4)dUr#hSCm΅C[arW?MVɔqo1 w]!l3"%WEYM·oVDT#DDu\!#pQIQ1hC#uG#:ə?J_Xdd㣖kVv&]mgMrlZm WQҶM9|T|̘5"4~<}E t֝EET$,vKj JO*l*(F뮙 )j(裐ImV$CRMᐔ P q6'"ֲ\9LGg;l2j>ӈ*" ©Q:4TLQy/_ VS˔I׬/u9q['녚DqUWL%Ey1e4܈c1!e^mIYuBE^o3Y-k˖aTAAEqמpl QIQ0pUȓ9a4(B9bIH@Wcǻŝ?w?; ~uu_qVLθA9jʹKI;[ b[m0e\\1 &S 4jR^d=,{Ys?' oq'F6V#)&j3dH#o S.|4fӃI*6&=,{Ys?'gx~Oǻŝ?w?;w=,{Ys?' oWpm nnM@W`U0[Х6iP&NwS5E[y/ixb[CMD9ioyDzeVė t;H2җ=AƧ7vqRCkJ$ s/ fJ6D\k©T%9'x8HWȝmvnqD/H! N7Hić\ZZ]^tv=]- JSGxSfuqm-5Ʀ:EOZkOD{nƍ*xܹ[sIei1gTu詆mQ3ho)ᯫo/e6IvfAo9MY%G|6#/0ߔ=ӻĉ|]"q6#Iv ' ލE b*c$U""x?*BLqOfع}3=nj"ןm!Q9>2(Y p822nyE-uOfm)5r1ا6ݤ{.QEZfv)*jpNNJ^+XYrD2cǎ+>Ψ,*DDJᡆ. kǬ)/ 44YMRcIRj]ּTtEUUUfBj23×bCh2k71Cm^J[-aaڬ%)ݘ?xpDvH3QgQ\ɹY1URjQeg%muu΋7yGY#:⵫Yk˕is-ȀӒ87H L)MK`_ q̈BT_boiYM%JtAjtܜ1ʃ qn6e nU["q%*v H#զ?'2r~k#h (%⊨6lH[cxe!Z k]mvY^hb 밢6;tP(\ |3Tnjbw m֫s$&j'AƑ*At[ljfkDtKo24b>h:眝ySS;H o y̏\Y5z5Mյ죌*h9yS~$5\qR.t{mM(2!DDRdfnmntIsnÑ&\^Upr7Uȋm京v$NEK$[˚|x>m!}RWH@\77Z"QnY5rΦr|U4l9rDR+;eVHfG7fiiةy'E^ع!rn-?]2%%'Spg[E΅ >C9M8'm;҈Y'JU{}l#c 66RZq!ǎ2r XqU"B C4Uʱ5iU=~'a8%UvTtW8פ^cr'3yrQGTsU'5?6\\6s޴Q㵨z90xaʭxEo/0iJcM9QUjDD9iWjWx!s𧩅h֊=&ZW5+zי@rn;MCl!: B㫖KNu?s6ӫZY^]X+IçhHҋpYK\̼#iH!E骩* D*r*.;9oP$9 m|[B&I'JCtYw /߯(gw9LbE6ksRR 4ÇDK L䑲jJ*[3Ob㻯,aLԣ>Gei8 8 I^)NS-Q)F|w_S[^Dst|ŵ9zrnN\8WfnN߾KhaфWw J8-0; +TGt^ EV>n -;]>tjʫ"0ie(rI4iV8o=fpO(e9AI/$߬..__aDm#߮>YFzZFm 1o?QAw\TNO.4dA{IOK!SdGl,{~kNh>˼QpșH׀N pUNƐx.:^"?,pr^S.-Ym.,5[=#@9/$f|'Z=]ʊ2QL 6OSv+Z)1fJ8ķܐ$ńC*Kk2ϖ6I1h\`6K㻶xvOj{ov ORm7(HoۦGȼ"LpTkZ*v] HEhfAD\ud>e3x E!e+!ǸOvb#I#j< #3zmiI5 E ̜õ]c~uuzPm?xSK'VaOq}mí`lb`UֆEk3S*pgYH8qߕ,ckӄm." zDu^c2E pOLq\8x[/^\m]OCm%ȏmiau{cm65UU<ݹ¶\V_ Wc)Z`mf ~Twzݺ#4뭶m C"R.bmâtEW!,m?S5UD\e4pTISЪ*doT4Ksyȼ>m [t9Swd_2"fw D=~ꢧ)k, 7ʋ:0G sR3n ՇEԩ\?qn }ga fzTWRU֙ %MZ>/6S}U\fJQ6D^+X^vh-<c2N:@jl[^AG?k>|vy8mn\An:0ksDQg}\h䐷QWd+Y1}> :Qolи=j~kd6k/S }VLř:QBNgGtXhmE-;j6et֊gN,/t y{↘#ŧ.UGǏw j{W{8--reDQU䶈ۍCY3>=hUUDD\i4pTISn-yZ[H +5);$ѷq]^DTf<&s#HuK%s-(+jPuEtj AS7{J &_dcTn_{2p֝- *仃QB\.?r ϸV3Ss~UQ)(Dcary{$"c8v89qˁ^-t_!%1>jJuyme of4wܵ^M8ų#V28\%f IRuJC`891W\pD7g=31_V̽K½6YЗ1Bب.(ce%UsҼ0o;Xfg)7d,fR SѓԦ BIٷcN"2_=#З2U*B`D /o lblC-u%-\sq NȀҤ)UAJ*D"Elo+$v_>!)3QaC81_aWTTEEJ*/T^TTEۑnM{Ij,Ki`z+0jV)ͭ(U<?t=_[~D\ B*gKixQE|8bsoT[k@ehqnVWV4 H>2獷:n[Ƽ;Ia)m3kao>|P6q;[ܞ[5}p O(\fZ߫*($"QLȪC6ݢ'[M[u\ W[k q:`rD>y={Wic>y={Wi``MMm\p)MڜyۢN)D5q%8QƃM:ɀ~..f wk{/Pz` 15VY9X͆URqwڼKϴwڼKϴ˅Z/$[)d+FsLJ-;ML˖E%e\adҶMxGZ簮hTq~d_JE+b W5e\'j$(1ޗ2S捱4vtˀ6běbl: 3uf y2"/iFaHvk&]IH71UL.z`-re- & Duz~bB-r޴I9tuN,4֭ŒD"4ٴMJ=%7]Ņb\7dp*$$. N8(`Hع9z.#]mR4: m&n r89\r8;;aDU QQR詇^aX4N8s ! 4*/K&rVDRhxqvI8%B*̡3%R$* @BKo+u6{"2*B뎷PHSI"D;#>8u"ME4L%TH{Wq[Qq$Jr).W^\r*zW)) )ۿx|10Q%Gl\hmb(TTJa7_u&^z'7"H}L&YOq4I|&ecYݻMKr/:Aݖȕ:7 GIWIQD%Tos S?\RrpZoI*2n qݎ&GmSuN -phG9Srbe"-:"nnKs{М7&vspDADNN.WY4:9l]=^&lrSp ֥ۜ kۚgM  PRV`eT"1hR"R"R2"^|s1/iΘuAWƓ q1D wWez9qqD\r9qˋ^ز %r>M0^HXvTRZHl8 :#Q 6S+%%yeJ!*o ؑSMk>kJ۹uFduKcqb&Y-W[i]g.8/c ت'a1T\tQJQpx|\!xq‹\y$Uƛ'\fy#̸zcڶcpOE$t U87[e#%56LiTn;Rخ.BȒx+}n3np]n7Xx۝Ueu&+8-qr.F̫Ag;~jh̋162b~q?h?+?\cq?h?j셠qB~m:|Uyp.}]lҢHөT=Og0ّg^3;,[8(LfRD. *k^fIIM23$ǹ>ۿxFc 9"ڃtWIxҲUpFH)OQ n9*_ޤ9> 7۷~iLtp\Фe E|`2z}u 3G5tT -8\ -[˜,Lr'v]z šM^N _ӥ6L]wsΑ>cZj5=6Utdh u>;kʗp`̔ϒU6l%AiSшL"rc' VexWs_BN8*:KʸR&>6**j|s7Ltˇw 3nzfEܛ%(&I(fиªo4GNz{PXuT3W鸌ߜUW ~R1 qr;p^ qRc8W/*Ep{XpO"ᶯK%qZ Ȕy h54J'w s3m+pzē"~d S72gQo6T$\ٶFbD\&{YhJ  7ohyNL˖gn\:#ۼ\t<͔u;#~=͎.nNm[yT}VԨ~l'_޶}vIUkLyy]^vיnn|g6ϊk{XzƱG/A\[WtijM<{+pc_Hml鮗6)}[~lF\JUd٥RQ3Eo2?o2?o2?o2?o2?o2?o2?BBD!!Z EEN ‚dMO*[^\_r" kʙR3JS 8Q;Honք־\z[DPr*5N(ֺiAXDml@M̗aūw# k[m-Ϙl0Re*Ȑą^X!Zr!ô\7meɸmC=Ts%ݎRl֟epB6EB(>6Uʼ"/ 1{ -L%kvxvT 0fUmuékC_YXZ#tJDŢ">CդX.(GĒ˪Ν  m ʱ.# <ӂۀm(BH="嵥hB^-B1.O]aU@cK-P_4жvBaMbܞ{L U1 YxNlC)]igŹERU28>QqBEE~/_{KqE*c^rq*G9S^#eA17xMfԶYu[)jFm֜6I|# cAEUˇȀ ;[ȃN0۳Mq! #v0uQD"*ERk $~ȘiW?|S-3[$uj!K(j9֋9aC\M:cO4e)pYofEo3_o3Mњb'kv5|YnrwZSIrnG|w/MMZ?hZHCuWn'##R2B'3f ,ŦO*EUNZ.~-d$V2~2&7'w,Kd%Jt)8"M7Y[Q jm)6ʝOc/{jc H7X`q{(onӹb&s见XۑbX' G, ʯܚW%<3ҐW@8pEKIyq0^U^/iqV]^&#adʒLFd4me'y DQThc`[<9ZV_5m]ߙqJ}-sܛ\V0s[הFMʡt8Vh7%̎Y񥷥[Ԧ΍l  }$DUUwKaQe2y14GVa\Bm]lHI8`bj+E2 jGXAh 'kDT $l::ȄѲ1tIO,Reƨz-A[TP!:[!%+0#x"tx0%{DwOp4v}H8|st2)B'Hn3UIzo;7W,UDTZs*yIg&K:H)Rͼs)Oۚ!*ʲe2"O FL]M=:ATFk\:ɸ:C)/ǍmQo=.NۈqqȓW8jF-pG)GZ^\ȭ@|U6s [m/^SfJ< ۵ ]-UԩEn}/_YqCS Yn.EJÐ \` snjKPE2"0% [ѯ$j iklJ7!lzlm. E=4ԝ'"zKd:P_mI<9>1f?ۿi-eueg)ظEdZ.["ISѠ RV9vٹDSU,xhTNT$>CC/^Ű=G;݀Wm.'SeG.'ke?j&KlM2}{(-"%GD&:""{:V+B֟Q6zR#1k93\פ%7dsQKW)<1U/,]e0 p[x/* Gn3c2O9xBQ@AO vvBĆmezlF, ےlYY-VJZxs/$Rl{aymGNOźツ^A\E)6س))S\ZzJ)i7p(Kպg# "]`ʷ(n6/2ihh UE*SNSNNE9S[T/E L"nj73Տ4p$ͧ 1^BL+T\^lQ=k} v#>v{K$HcG/r(s-9>KÏe# oK 6B* W6d >w7`0oٚ8BełmlgɂsI|'롂{ǻ}q<{tZnqkYl%(9&]5 cZ.mXe%%ȵy<0T7ge$^nUDMfFD"qgÍDu=\;[J%n߿^+}:ʶ[iG>Rە:PrYE tZzR=LpS'nO68>b 3e81alCcsnW@ !?&["n޲=\x>>7wч ~ӷ ZH޲qͿʫ~HsQM8Jг]bdGU}Lt/VC yqПfS8He||p0_&#~YݻQlm."źDsvkH9 mF 0B^mgmݵo:%F*FT!TM7kn@8R-4WO7-wǼiiZTrBIFI1|Y6 bȵ%D /'(a4?SG*s"bWՔI~h2%2 mD{ênOn9TqATh8zrW7I. )*A#ED=UeldqGF=,֙"M;͒3n8xɊq( EHVY̻-875A71 sTas6,Y%csQ1? RmXCfr$] ZzNB2?7'w@bHȖ", yÒXycZ Nc d q骯\nO68=`pZ(>7,#T(V5!#h!L4]\H{G`7vM=%1Lqُ!fvm m)d\tv" f樰H4e )i*2TpDzd׍*c+xWʘ%Qwf̂6DEi/#8}te_Bn6[UmۿxI=WQi3*+Ms-8a巟A YU0|OTHُ!fvmeȶanOÃoMvVW }+JnB+*%CPhsa\ؖ &X©+T^ͺѸ#6|\_$N.n6?-hw }':$Y~XAQx*zIpN#6,}#Ȯ::]c:~RXdsVJ**}-4'#}WU8dK:AZdt#ZQ3xǎd< 1p¢ӽT(Lr]v}b gJ|iit(Pd 8JcDQE\*]@z2Xۓ9Lg5X͵shIJFӲdm]u}dVlOhP2>cEqF2vmeeE?:5nFm{(Ә 6/Rtm$JЗ?ڒ;t> Grl{\u5ñЉ^Ƹ5-&Ga\c ^אZkn n:6)cTWk{ [NH6 0PdVGY…[\DԘ <9py< E਼Qx/d02mh2mӘ.Gbdxk%/*/^v#IT\-[|"9&dOE{VEt}lҜU *$5N"ٙkQ֘DNd8|"LmW.)ݩ_av3&LN됚}U^H{G~[Dm!gz,\;!qO/mh 3*pNbh,W0T Z_AQNMm8( %a/뚀?7/ ^ԙ_oMxڷ]&hQWH#>Г^Z"cݩwncݾy=n|ny=n|ny=n|ny-J+ c@sQRe|ˎٻnO68=<Iig,yt. ÚM(/JG5)0GjE(#R*NCue޺,nM9m̹?VD#6c/e<ۈN(ua;Ue8Ixqx]^ymC_̾Ot^sŵG_\dZɟ֭lV4磶̼P(!f\Ԯ*_@S.DOE9p-ZZ-2 & j|y K_’'rxpeý|.#nQr?g?r i+spH:~巣i7ܓgd5⿕S7W[uQ@dj͙=< 6Z`xrQ{xzPP3WYw&u\DON^eD!Z/l7+-&8vU ,o:J ApƒӱGua&eA^hM1TQ^(g Y3aɬhbCiy<[bN.Y8VĶ\nʹGR@O)Y 7_aήf du5RD/_@Gl} r}a~ wy [uQ<$ [TRݯ +yJ-zdԁ[ В'O]K)iُ!fvlqZkg~ۼό$dDx5xQW!* l;;CY_=[mhN ((u#I7fh27SԀEFTʜ‰'Ss ܜp@yU~.*\/~Dyפ^*&47 h"ޢ':&(K(WTE\-)|ʋyx2'~o> l&-Rd{I!X CB7۷+۝Ib[A!Yd~+/CܟXm߼p{H@ܷa\ #vѫ^jēPQjpN%Zk'bv,nM8_,jթg<$d3qbȮuF^)nE[VQRNm={vVq/2r*K۷݉iErgrd.L4R8'V[>|ZƋkF_|4lt:E=sx,zUPN[j%Zuo:5a:X^ӌ(:ӠMُl ;۬ηVއIr$*QI1g"́ڋmDuk#q5ƭoyr9h< 聆yqcM?_+ۭ M&+|9Hnk\IAL J)D3s5F?ݟh!lj%WinZ^/~ kΥOϬm&?QS-ybMi9( W=Di"AZTpZ$J%5 r9χ}Ulj{Honv,iG-&/+kjTs7U6e)Е;ķ#֯.W 93**f;] +dH$,cmqdyÌcBE\vp PQDFL&Bc=NrWdhk¸n&R]S6KiLxx><~n5\ZIH̩axUyp@NA#.VW&GnKq cPIFzsآP1l @Ӌ ;1#6Y GHs+bRU%_YVyubw#&->)vd6"T 31͙^&S1u曭 HcOmױ.A~noEެ uU=A )!qDDʔ }E\q̼%b I;nӸ&3f"O2I%9[FJ%(]$r%&is 9I~h\; % ~ˊ|i *p?͗X }qpxm8x*ch>XB3۠OMhSbG'cٲ曭%S".=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ic6e=l{6_ia,qR12Ȣ'""6s[n渀.LY-e8-hr$q@Ux&=l{6_ic6e=l{6_ia&6޵L@&]m%s?3Nrxrihزvkt)(5*;i+D=l{6_ic6e=l{6_iavFN(CȨTT[|# xv<}6_aYyEAƝlATǸmf,{lǸmf,{l?fH7ŷ۶TTUJ B N_M }[]=.?W"N+RN Rr=%PᑴZukN"*V U̓fhHm:6.Hx5@'Ie\4vH2}^M<]\xZd:V늜bn)4ɺʙS:+^0>VвWL9>YJ;`p"\ jFd%C>J'G[Ublسi5r; b#1N=|g拔UҒ-)7^aQTAq:MB-mùB5]&nC鶴EToo2ы:ӂ6*8*~!axŦiSq\5@m*0"՞,djMrti`[T 66c1"vatT ֲ@'Ɣv+@JUrTהPR\W Ǚ>Atܒ_Ʀy6mGL:6MB +T(cUӎsg$m Sۛ\m3' u:̛oRH*TÆrʱsF+iF.:"$A8OUqˏ3/$BU{8wչ 5<-纜iƪHZDfv"J.7F=3ň5"ϨyI &^s㼉cǝ0k+!9a9#5/)mle@[iiDlMewkBHBmӂ*٢*"NLuFsTLS V&`DT68 Uc iOWm +T.yۙ#)}W\*~rkMަewälpZVg(ip6ꨞ}V(4{Ǎf.62+in$EmP &5;M , m2bM6mQ8"~ȷc*a!**n6b*BG{;`*IteUU[UN$$eLpcrv< 0$6e\i֜D!!&:ڼsGzNjřܣd$*%T㟠,6qxY`:8m#v2qWm&52HȐ%n钩*􈖪A]ӏc"N۰]3'b99TK#4ZEڢ jli]co7n=ai{,n_[Zn˼6Dq6N/mh'la Π'W;w߫%o/_76pۣG TaryjͻA1Vq|\qK޴yzUddNH;4wu\%m$,V;=P-QFIUHu\%75'2R%RU_, 6GNPX #>}^d|E dBYY$)8Aڹ4تt[ة"S ʈeFypّK&0/4 VȟSn TW^/3 ; k3Zma8e|~oO rn?yfbi`qX!~=m}]&}2$e"$Z 4߾,_},"nl4 Ҡ!Q*A]|iͰcv\̦d}n3׺Y$Hw޸̷mLJW,8M?syC6P6 1?}_ka6F 8:E$Fz [bT'pםq%Jy2}"L}LGyRq]pHUUWp}%Fw%45W %>%},^cqv+vߏǢ=~uFpt?}63es^N\%PDAAMG$EN>iiK_ZYV҅rmӈ֒ (Q1}n솛ƼW+xh̷\>֣qh(B{h^ˑl5qaW`ˇquDH{ q.!ٹTV}heu} mfffNY,XWHkZCP[L\f3tݴa.ˈM˭ ""qsܻU:by뽆9ju-*.uG$//.<8rVt!Ohc،Z}s#LwBSOOl*/'VB].LDt)n^+QMTWv"U"/9DKR"]ꪪU\m+'(ߘ-;ER4&|X}"DaRhc4oɑ!FĜy$EUU;!M~gd;3nΨ RQ%H5@5lyvUq>;A6ɪ u҃EcMu-ˌEӌH)VbC.8**|_+;6wŠZv=rlfAn@ThKodH  HNx$ ҹMkT-6FvS#5o)Qein6:4o(xpdXK3"@ɟ6lLlEC+mjf%RZ u+ͷfZQ-2ݲFb0#\z<:IVk XvXO-dr7:8fd˗=M6ͮXɷ[cIm4̩\1}2UiDkpg]vcrDBPY 1, "/*Pow=NVטmHJuo92"]˓ `3m7nUƣi*Ý#(8 0Yvw"EUۆsѵL][z<22-tnԸd٣mk+0լL,Ev~z-\/ŮM4÷Zݖޮg%˨m2Wzz[E|j%crۂkQ-V8m6c<89-DF6[ϑ* ٶƓ]:i@$>fGA"Avܰnt!1^k!>$кmԈ|t J/*CYDWr>ǎF7.9l[TE^~l˪ttk[#y 2COJT" wDWI#oۮPXd7@QDى0EPѿ9UTd} ȁi϶9Qτ١nXG%krHV[*PX̨W XlPXm4(Qҍ*USq\%32U7 UUW_wjF". E˝\(Dr6d҃6<5vrsC0%w]nU XZ&ٿ^&cTC0dMܮh2jϥ֘qL>LRolF#e:S6bjqr_O\63Vk1aRq\Fѓ~8E^\1eތo)Wlq3[6\ UZa[UDPbʊť[X)^91F”_wx1oۚH|GNTw8-WŦ?6.o\f]X|#Id^+jyrqb;vH03`cie&Dž"2bnڗړ/.u^p-7v*-Ξem>D0]Q]ds';a*sO{y񱿮L0nL(+-ҺAWUᚉ\m߃9P%lyd 4Ic`0T j5 wr y$:7b)+p|Mvԛ0}|IlC F$uiD䥚#7e1簐^݈4v/-q6h֭8!>7"r16f=A!.SS+eβ {py(_T.F@N٢>2%D3X+D*kDY#^߾B MTEnL4z֩ˉj^jNסyyب#H:ySUgwGlEv=mΐ턩>kI02أFJ]Vdžj%p6lӊ!ciz‰Bo1tx[naVE㈺P7!"Ktv6NK״Mϡ1,yHqӌHxrj4MR'F--L$q@Qy VߵB oYaf[^4َoFS1/=VCs:Ld\tz7YMd,l-7X;~iY/Mc4x,t_K#i9~*YFm ]Tu&n 2Fgد찣)y-՛>xʶ#yC&ce@\mw`Nbk3%258cG;\ȧՔ@.!oHZHPn&H|~u=~fk!y2'v#wdTROhaIaUǀgICߛ.5Ъ K=\{:| =G ScfYPRh0]Gq.XuTZ]zWB +K,YZ?.[$ڗ]3v6061x"!@MP/ W?cϾürJ]e"nenW/yo]kZt692p_5^܋'HeDk4WJ0Uڋ+3c>#M HEOW2~8j$We@(lJ$fu^u,ZlWd 'P¢1 L^ 6к,ᘢ<|u-2΂auj8lOpKE=(b(5XZ_sp*'̍'W Y $1E.H@XlP mRk)cvEud#%ݫtHCP Јd S_hp!!*"=`{ld$-5.F~3d?>SDVwXLS- (4N;+$iW=5'L[WAxGb]SwvF*̈́UOe!_)_6&l2P8 `AP){(q~*< PJ\vߺߤ"sbiz?z4݅7QǕf_)[rR&W eL%)C)IDoϚ:i#OQnvge_|dڇ?B]EȀRsJ PUZʫokj g;) iZ,8Ȧoü1BzW-ÃhP`*qx_ }蚎!6ǣ<+/`]BO?w4.fіTȩYG-u93_>\82ZRoA1}ǻ>|?-WѾ!x,գ;5ap^/,~1+t ۔^`Go+J.}e~ԅmOZ9̍[uet>sE,=8>ɗGz(qG簱i HTuwxO@[^6~1 ,x~}){|6w2D<)+IRȧ~K߅{*WbOMOPIq9-P~y\*gQ_1O f4[O= DSF6 `rgaR`\OX"2b9n_)^CTnƠfB uC^}?~t,nx Uϴ$,1[Bz ZI#geCZ6a# y '_{ "eTǪ0ߚwBB )o⮈? Y* v B 3٫S4͢J\}DuMAŊ:- &D(`PU^jy9X DŽ'@;R5|V<t&_ŧKq[ΒdqxM6;1埊-]pJ1_,=% h|McYbUDEGIs2$! irMr37 ZCj>| Qˤ|Kva]'}fK1ǬRHE@jWcZ4صQQ]b^Z/zKf:#^oPȴؠf9Wǚ6bHk==#2pB* 0xv(o+_X{3R8ŕp-ȸpB=x Bds;0n "8xag_ < ѩjxwwEp2eYt!zz,kJW.\9{&== $j0) \ҋ.\Djw(TUCIWv!YԾ{FL5*ЌTd"ce ^JRxLV{\x5GhLbw-3G%;Рٮs8aem9BZ#LZdvRQEQ&.2ݜxJ??lT >5U6c= T72)K9%BI2.w-@i ygym^z%qeG 8B"]1^2AAI¥2]Be{㤶9M2 ;R3rdVЗFT~m^7yPw}Yϣ;1ɿ23ҙ!Go{HhzG;)ec v@׽O{S| HaTǡ@9pNM O>Ώ(ɶ=u kGehVw>p#>|ݶ~ Yҹ(}},B*鼍 :`cc!4T&x(V{B; nX q*df5 îJ{J _U!4A3/w%wDapǼ8 CeÑPo/XDjop^zRg% YBUAJȥzS@hh{@޵*0A‡Fq9T'N%UJ^s/ד:cΏx#vӥs/'6gFIpыێbu0UrKt&v}OXSt?yc+kO0BGoݶ֕?eql1DɁ0X kׯ^z$-B(?BB@g2vHTo∉vh݂Z~/twP,)eE^WKo(8 r!&a(>_ڒťoC̏{=09\ /("]E{BZJCRmK{7utK s+7w.8)V9UMmu]@ ܭN=%\`NRvC+qMYγ2?ԶX|n5ܻ\U7bmbq).SA!KfPb(֕7Һڟy]-_1UwqKyؘĕt4_.sn5'p¾jWPص?8J]q]]lN3b^1`{q,]( a2z?,Au٥\럄``^W~5@,6uA\< -JχbmjHmr+8 GaWgX|fR~KCXD_M}DbY\r˗07AnF'hS(p}S 8 6h9HKsA α,`SMXJ7%WR} Q^d_ZQ6W3ACη6=E cv#Y߼8#\2> 4W]S?WX&Ǥmcv3 z%֖r쥣V `cx4 N:5*X(tϡ ̥0B tw@`0M jmPq`xnoo ސ\LO"n> k\V-q`ZuggXU?"l)Jf<(;=\Z`u ݻ}ӈ^-I~0Zke2l 4R$׺w*S2V/cl4ϻwfL6ob=цRڂt-.Jk}"~#RaB6>w3$2nW$InR8չ.>%05__tp%8ל3fS=.$҄f<$<)4e{iL, ZX[LF|jZň1^ٹsן/e~,6n=dRlHm%; T<Xp2sNYp0&1A\Ӕ~Zml%St[׬^%cb6]}dGA.#/Ob ҅z)3_rfZAQ1&Y)u; pũ)i3f GoL[hEPs׎x{z1Gf |Z~| <1H`nK(C+krp xFLL][QPA2Vspv+u}(, Q̨y{2| jV\/ (_?&0D_+Sl8T'2=B{=ܩh.6y?G'х<|>IŶ8Ae+ttǔH9RmRFePG17S͇*5uv)2}΀5҇*!@(Wc7E?Dc2T/ V.\=y17\ÊǣǬl׷po, (ӭg^={ad;Z)@{qފA215fR6՞ bvݭ,& {6~~^&T:]d ٨^ >C~@`g͆~wk!S˗.\Au0@KShr jmq@T\-Yq%KZ?>p`Kvu]zr`A95/瓩~M UYc~Dr>'ހI /78Q- P:(g}X1UC%I2xVwȢR_4yߧ⿕aj-mJ*))!/Yd\Z+dE N8}˺X`2yYZުԄ+Q*DkaoXYBhyMJ 6/0Q"&z2XE$I{D  z6XEo0 R`*>fWŊtHZ:6U]at4*fUD%gBg6r)y8"O ,LGJ@~(qV]"c:SU%Vl .sA[йΑidea/"8x Z ZUac3Lg#7}$X!8m*'7n=7D$itYB)O_j&(;Xծ#o\ƽ,JpMB⨫.Foikɿ%H"UuUU52g C )|%l8 ]~Φ6W Eb8?U%x\FԛO.Y{𧑭t]ǴU] / xgGY:d>{˂8:⪪\^_pF804Yd`渃R͓HZ]R_myK߃j=Bihnn8 DOd @ @.dj>Q5p@ N^pUP! -'Dy$OA`I=R%{I@ (i0@DŽ_+xjeFDEZUH-Wga%4_8d+]sxqiũ2R6EBOJ}9umi-[oo߿a@2s=iճmL[,P9fb[,nj\BfHj^(mI%J0ɏ lѨ~VWqEWvޑ5sFheph+Za>Y&wݍ10~,ʐ΅ĵ@ (?0 RI vgyh ̭f7tyJ@@wu634FmS(-As[jtBm뀤BȐ- 0C*|N"̩±#ʳzkn5S\bbŜa(V/|!US)0-N]A7g_h 泏ܹ5cl0l|*"W}CyJ;ѽEi`oD*iRX*J99K *+|ϧ+B!a8QKD;H2ktɂ4f4 -NB\(]4^}K)n*F L;R ϲ p-H Η FЊF*0RcYꞲ,.20MXrtCyНG%@/hI%!O)C*V[|%9$H `хs$CkTD#5Yˡ5/h rWD]DuCI3b`Z&ɲZ#dخ5ֲ(+(sqIt#Q @a>{FJ Iʫo ulNN^L5>;L"49+O_ h),6epCRh2Ų%c@,fR`UUW T8ф>XOgL8Tp cK{FYx||jE`Q4HP8dajb*xa(lᷧy <ʦiKr jrpKk1Hڇb1UP,#n3,8B)2s15Ϯ哊!-ëJIu#XN}شYydBù7"mtPCb;k5%ғĬLN&]BG¿9D1QM@<\Peg u쀙hRpOy5N684jʰ -c/t-#<<qĕ9[| fVuD` BGKhȊ'X\1TB8ϧMs4%y %a' !T4/6AP 䔺j4GK U^4hxzi@[f%[IlF*C\xhj/I %ҋA6`0X3ii1'X=QI)BEmTo#q'x!q š\)!C3(3bhVs1 5OuM$SbQqi.GY".43&@ m,h)iX.Ɛ Wk[8,y% c! ҆ .@k* ё u腥|*V =$[^EB>Z_ԑW4]$=Avpؓ!_(aqN5!q0yov1EиZ:]V$$j ۼeV735%$ ۼeV7%0ڀR3TV꣥ը 4g4V.g\PvWc[ oӥp!1؍%n6eI23 Fy^A%u=w_s_Zf<0dS)FE5(I_lp/ 1?dO?!?0 ||\PL|ү71~UCb- @ppt7 \G~0lN&:?T ?}{n#\O֥桙_~S.A,oGx{ ;VH&-J uGcTcA2QW H \@E{:3Wȇ^L7sOħ}JY?=՚r|tyG3![V>cdH\9z5l2MD: 2U_T[  Qg`;O5}}av}`q߇3??yW|! ݻO_gPk0LUii?UbIg'+1O ',Y97-$pB2K-{SYS \>"3`_j֒&]0G9[cqcN }÷bhuwײmf`lu%nh5(JtxX|jԎ]lbS6uÒ}&XA旎b6<> "CњվaZIbLf<{>UAʝjS0R T( &^ɷ;y˃HnE:W3 ? 'gz^,}3= L`f $Uq9(7  %$8y>l-HPIF9jwoٖ%rMjTi8)E mY%Cst2%옡5\ٞ$O0m&_` d o`)nTpF/?/5/bm),&Y0-잫J{2)i+"fU ^W¨ : CN%:8 6.B}5{ `MDs U"6ʏ'/n c2[ 5di䰫KrJ!a=~9O3Tt aJ4._`bZ",9Wx>ٙ$]xQF~gC5a0pa+ո a0mB3 O ;wq`,*vCo {ĽYF8cr%9eF{kį[b .Je=ZUBu=NP=\+P0vRd"fԥi0DfZ蝇E2VV`*rt͕>6e>NF'+PfT%)rӸgKL%VaTDmL-Քeї[l[&~+ÿ_ݱ Fy排Bٗ<6l GC$ *[g&l[b5F'Mߵ9A -FAq%-+\/Vk=+}!V2;9H躘%3(0 Ѝ->=[`K:j^ɁQTCʈ m 9c}ާ[FSl33 ؘBN>b_‘YRSqˊXKEcןh@k?;1Ms9Ê;vVA_@ݒ]ptfi%d+NҌ` nu>b=~zME.``XOMYvg,Q 8R ]iȼB#־tM].jZgs=r~tE0b<7 ij¿Ola5,Le{[@S͟ qQ^)~ 3ùa. I;~ᡠ~d M}b9b,ХF * x+YQl ;0A:6e,*ݥJ*ڄgqPwڲ!q+_kT b=qM95쩃3GoOlp|"ntxM| C'y6'?!ᆖsSOr|XbL?m`{?oT'0?ш #N~,cB"5fxB8X c6DDS)}_ܗ*Z ^]s2yc-?ebVX%D7^131*RQKZAnbUJԩ' 4q{xN(/H"a[I^iXfWLD"f-K%i{ya$&Q͎}쾲Q$-caLҽDz2%{oa({H2/9>JDĩbzY*oߗ+T7)3s>ʔYWGJ/م.UKGxq*?}YZLr/3.9 p=pje m? 4t2N TLSP=r 7 1Sl{bgPK k4/|2)uNjV3邜 C3r[m֠P.6 h{DzesHtj]boĿ!`hcFƧTOd0{*RH ]☑c2tcm^xɟ־~jUNyUUl&I{L}BY5`pa TmGc gvy&.&M{X&W! g 39^z.O]12&/q}ffe sr-F6WTAQB*"~zh6BaC$Gxj|1-ey5z;fC25*UZzqTN{ue3\j⏈g!(*_]_O}Y G9_sXkg'ϧHK# Qqr|B=❲.t5 mߜ26}F K CvPhV@<]cYHc;,{:g_ޚzK:Q*QR |8}}+ ^jqQëm]_ߵX~~ QtzڢRS6V>0Qi :[ݙo'Oc .Op>cz|ܜ2 G'^ Qr| FXX~-Mױ > cO}PDm 4 1WjS_Qg yP"P wv   s I$HHI$I$I$I7  I$u `?@ I @ UIY!$nn6bY:@ $@0};f: j/l4SHI $ ?z }u`>YW@  H@ ,/UK> Z5`r*@ ܔ|i]Px,;vو® @$  42\WdXRhPH $IHH$H,u:Oqs?ޡ@ @ $I .hxxlvA @Z]qT~|W:?H$@$@ H5! |jv+[<H$A$I H H` (,u@  H@ Px@C@HH$ rN"@KY$@$ A @ '0  $ HW5(H$$I$H@H$I$@hH$ 84|oG J +Li @?;$ @ :Z $I  ^8I @ @   IC$ @ @oh`?+:71ԍY ZywT-[I:̎Dȝ~,OVd957gHE|-@W-%^Yn} QGQz4*=&2WQp`c`Pܫ+Pr%]^raXW"DK2:xNQr1ɩ KJOKï'FKBg5Fʀ SU[%(\(gE6ן4i˃?w v (VdGVh-VRcR#x(DP# C PIhO|h zצP%)<)#ƌ2:+,!)֠\'q:X/z$eG$bH(1dYeN^|<-j fhz?#tՖX M#GjN 'ZJeYeYe=7TBtPH~=!E*<ؔEn @+Hp^>F_H~FQFSϯ" ;ie%( |cQ@ G'"gsہ9^ϯcXΞzoW[sLw>LKO 8 4(8&T3/a~fUثoo5x:e;v`WG){V#/h~G&@\7~f:>c~iS8߶rt[ոYkkx=bWi[$3S1?S/1<_icd>9}Y4ݗeo ee0fm5Vl&8X # ȶ,̔#eRnBb&5LZAJ2"V#XT@4xt9C\VԸB%d'".ڵs!̩ՁhVaV ۾Lu3CJW3j nEՑrar UH!>ok$@e"A,R@tK3tLC<,/}qn{M>,ouiґ sUp\5ϙO?1$ϼ (`vVkk*0.*J;\ |l_W>KUbd/TpsLFN t6*|Vuc;\i[2NdÕvp )-߮ߩAAx讅-)}%fp䂾ǹ}{+ D 1[A꫒}*$ك~ cX_-5;`6y mL-5@Oir3R(D4a3,MV mڢ*n%@RQHF) 7a3 `SAN _YHGmU"`v>7O>_oJ=}_) $#>%)TA}lE|32MiBz>z>z>x IZWvjQ=X0F P 6VW#IQ::XbXjvg<ސwL_kI6`ش OOb SEǓz h=u%OYgS؛~D`oDxQ'HKIٱ׌.<0B[VP\ۉ7[. DKV!Uק[{y TFZ;]xeЊYFq.ȜNoVeZ!3@5(feJ6 @XJ׋9r/mJ2V;a,YIˆqqOtX*ҝl@ ^hЉ qgv,AMy JT-s P NՍįEQo˝<9@[a]jhsxZqѠlE#B /Wɢ;$ܦ vGқ=:E Zxiݜ~/ `*^f9iJ"h܏\fڋU<,mw6e^({NIK_˽jdE6lPH1FߺtzLt}}ۂ%a K4=٨PP# p@ӄ`34*1bŋ>(\?,_f^bGN 0La̍s(].nu.X)d#*h w@Bx#B!T3(U6A@ L` Ѐ:`z9 z\ L(K 0ŗV[ n# 2)X;:$o m޵I~<:&utj0([1[=3tKNbm0A ch:!Dz͚G4mt9/1 JR_1"{lc>íaBpsgUR4^踥UgD@ @ dvYb!XM7cMVƂַtf.1.[_, _96…Wt2nd0.Z%-#(&[˃vR,`PEPutե ͔[*Ҏ;L'&wpW\ -M%_ t`p1zJ4.]ѲЊL-aZd"mOiQʕQȑ^wkaa.%UjKd6'#ċ"Oi:I#/I-Q&Әjp Ũ)dzM i_k D=<>ʿ1:qhMʅaջFGYОŸ<_4~ISۥ-! ,1O4 _qnAbQT h8R:F m J4@+ܕ*TvFo !Oe^HEv,bkiQԔ])J⫨\gcw?=Yrk`08ME 1U]a85ڐw@JF{ofbW>"[7E6_]Ps7PcG lN0!LPWٛaJ !󈝙:k5jjRJuV(\Zo+)-PkTR^Q% a;]-(E؆rզkXxg._Aqb޶! 4vp-=.$ TL[fs۴sXE`&<3y7غlK/v:h=5OEiuFHCVδ2dIDRjieSyX;@9-#U9m xkDම{EV uD6]Eu& /9)r! W/ R--±^媔W6bE.IX@)&dY,[3, %@"8+KnZ2XQ]WX 3kiu% b^TA`( [~+o+y-aX[~JBT{M9JP( 318"/ɛOA#8ai@`.fr$UDj`b'Qdr(˔뚱fm!;(E.adkoqȡfu>q`Qnc^y*6<lzuJ%#;FĕV!Bl F˳!| 5>]2hLoAQ[#JrppV8RabYiK#EIJg)-*>Mf-KC|uQPګPkJx ȵ 8:棓;l869ͱ]KT|D+֡aAO xPXrbdz[7p.-r.E4}G2b:KoHvU%}nG}OvR5O1[ꃌT Zk«6QTIh6=dc 2#>OsAGةBZݙitdeX _]8Bݩ≇UHhأ>XY[O|Iq7T@jl҂v +,L1PHW Lb)YYwzN;|_T?mL: ŵ9=3K@ B']+2Qx@wJ5}kCxWXVMg 01Jx^Fvpj!QR0 6QlHq W"&e]J  ,K+MJ鸐JxKk**Y!Un@R.C^Gw10ot6E_FƱ_*B (.! `4kMuXpO䃰zصp,PB+UaI٫=},}r·,}r·,}r·xj20t{!cܡOc~Ǵ= ·XxmQ Zp!0؊ TRJր F ٦țk&>");AqNk]viHVnQG.ΞQ9zAGDEUJ1ϵ$`.rſMPYx7p7sn94)H%en3F LV2׌Hf(T_ ;i%ԴVILB .G!5hPaUJ UR5B>o&IAX.Ɏh}5G$bdW=w(hqqH1o@6; )jS4f-icFiP)mKQ !Bdռ@ReE@䉎APYL8Q(MZ0b'ыX"qGu| ((6ҨEĘ4'8Y@j7x b\9bњR[TbGBƎ[&] F@f `R(-ح1-f"WU\4y-Dغh| gU[ N]e^Lrb@C`]8u3RReVv t`!m2h2]fV܃xRIf FC^Z(HD>ϴ=#HbuZGp} MeZv`,* q%Wq)8<_4~Hj Ы~| y}"fcWٔ:_ԣJ:_ԣJ:_ԣD~+){R$j6+(`S7,Ҋ#M5*/еÇgvm*k7s@u&7jt:^MIV :d1: S 5FOLv/B |Shɪ.-[ ya8'./ npm9u;jS]tK2UAe 5a* ]Є0]`hn3*mˮ|mӤKoi^XBL l[cU Z=RTXNE8j<6NỜWN#utJR$ %lB&"47+(K?RH+:(ɥ` 7Wk㳚Mc\#㜞s{4o Ѝ2i{{*¢X!i?- W,Jr 4U)^SZ%Qp ,rgc&pٱ]^~4Znec>s fmcT<0)Hd<?s LtL"8Ɯ$-U^LbGEf m2([B(rC N#hC*)FJB+pY1ԏzXK'~kvr| 2s[3>9Mma!`Ѻ(vZU"Ү~Ǵ"*͠`zB5u?~_OVP$Π$x H@yeB i8hâ`U. ά` »8ew/{N;|_˦"rcy"VWL3soR]B<m-ex  t Zw Q`W$iM[eIaC@53܅4]AI5uh-R`Fjkhjؗ  h9UI>wQQ.Eٳsr{wj`.[xJʭ^b*GGXl%ڭhU'idb'gA#$~" :&5n4G wN-ۏIwԱ0Y< ^JVPM`.IBNx&@- *retUulzTkhRkX;n1ZeS5Hك_Zћ Á$tVT [a" U.)kx5ؓ m-ܢ) "b`"҇'""CYDDZ`cK.6cq8U  `uP2z h|3m21}9LyǴI;2wfltiB_Vx|v~Ǵ!G2nGE!pQOt/5Jߐ^!uP]`V_2`Ύ] ,,;@PArE^Vѷ*Zx_:`JGcRB[Ű0$d+0#QV;,^X>܏e?Xp~Mz/L+qVmM9[ xyJ TH3 .0bW hu.^^4+ib 4H\bB./9k% e8&RkiF@uqgN#-!0졣$O&>lj2tZoR{UY]`UUq UouE+xꫠګՠ/H`H@M%[V'V3]wRw^ZAtI=.;M fӀ&DPGW!!U.utP8,iNūSq slRna}eE)(i l%9]-R j2) Da,{OY8" DB=aY5G@ n=!6Ǣr,wd$(W5%ⴌ1-\SИ=>Rɼ"O;VzNXb [K,6DGO:_ܳ:_ܳ:_^^+q>\i篺m#a#3N+ϑvȱZ:y8~֦G|PA`#': QB߆}5IBmք(L f"R#Kȃ`>b +=ZA6P}&+CAr_=Tf[*sT`ʫf߀@hMUCFM+&8! ؄1 .NḮRzҾUVVntѮR<_"FECX/9XRQ-UdEܛs~knDV¤ yFYɎ:X~Ǵ%K+mFEI}KlEl *TRHk@^zw_TP7fYEb]/Bᄚ&.ڢ1pޗVOm Zt~??ȣǿ"0EH7|/߰P#3~)&7nP*zjP@avU<eŪXJieQx8Ҳ+M"ax̕*I y%Z!CzG5ΎA8Տf IӪY$XKѺ"i,"E Ǻ(.M ƕ`# [DdN)MD7ͺVQvX-mۓ$C7f]+A ҫ\tF 6s m{G.nnV639aДec4y{ 8 )YzjTk^ۣthF\6l1 {|U0Cp3bpxcs4v#0 J*T uAU}eVx^R잽}bp| TSdV+l ҝcPaK' !Aﱬ(H(NUa^r+w\Bz9 *X eN0HweW0Er:4uN])65iZ!E/m: 9Z.>r2^7RANE%X,K-s*Q1xn)h%-EUGNX\BX\ "w#֍ȁ CܷOF[K{z;->O.Uc)91|% Ch8<_)WCPSHE@]_@TTDsn, ^-mMx%+`_?io@>RɷbS3i( z"?(?eJ>~)hNb{cM  $ IhruMfim|.]vXb!@.Qaɷ%Q!eq*"_%kԾSǿXC kZ%LHݫoyQ]UKndSYĮշlPNM6R8 ׯW .-a@P 8H8AXQEr-zu|0;9` )Hw!r)%x\׽6!ڂ&ye" e~:"O+V4ξ#*bj<<΂l Y ,(qmk.sA^PPDhP.MeFA3VSJ&@4=9(d*atqoz0BgP3F[ 9Pܫ!]P@RW>l'ȍ05f𘓔 x,% H 'ShV ב!$qǍJJ(NӖ,(T9P0xWS~= F>7xrqr--gEK%aQKۈL@fPcce,ԨkGk_X^c FL-OTZ'K΋X*.J.(J# )QuƜ;5 q68 iV.!⤹t?._n%@,o Fg~ZlYSB%3 Wg#)[ Q)ֺK̼PQy1 aVe"'T25Q2JڂD1ezFYm]JoIM+Za_0Uе|`Q:E f</Fl zzG8UWUvPJ"39#u ә&Qa=J_]*^gX]%9\ [ j¡c!ke#Ȝ?޲W ky_M@+֜y/Ƈ[1dԹ/FްR3PFaRR Dhs d.[:9k8hxNC6 Q4J?4v=!1,H)r it$$3,`T*FZQeK$AKbu;Bz0>|?pVjJsFiQ"!]7'%By@[32 8uXC2/˻< H` /.h '"EJWn0 =K+Ny t9c*]W"5 ]JX,fw D} `PCXض~L?X5^9zŶ+y/{oCBӒYgܡh' ٨f1eIUH❴Y-yBP 0(P2X-i *X񇅒Z\S/ zM"GP*k^2 )GoP)pI~֥k)K*b wS ?:.*qE?ΊxWqYqn[Y$e\ڂWdLPΒ F$Ȭ|LH5F9QQ YzF:7X5+QR!Y%EjܜM[1l 5G\G$uߪ<%֟1'A"n׷2GGUd!Ffviwe#$$4ӈ΍ CoJZLn]c;$4V/ PAǮ]5I%!bx?X`YFKQd3 &5e^9ffviwe#$$4ӈ΍ CoJ A PwO}ѵlSlN1#E*"Q_8z7hMѡ9B #a:n1Cl=o-vX/xAyek$*;l?+ Lh`zwAkCzaK`X.[be c(6'ŌMvVMV=jdg 7OޔݼԃXLue/y!N/Qbr|TƵێ)ϟx+zGyJKz(;RlI{3bWߧ?*/^ST{c VWudeV+nF`sNLOwc<_+c:^~2|V_K.doGP6DrS׎LyXgZ-#͡Ta78twG_K#BQ2D)~(X*Di93H-}7\@k~)᭎r7k5l KWMCaU^Xź/1zo^U5@ze `؎GQ4m?hWـڇ'8YbqvlY/@∠`AG*;^cS(5?ХPcoaJue^j:)ֺ`,w 8hXa/ +a辷sro+C:pkȕY9-e;(Z ~m{3f.lfwp,TdjJ2(<3u~y^1q=0[řQ&1$PZ/0UwFU*W 5*rx|uuk^.uT%pϱE8>8 r]Fحx52 "t=)U\}c BߖB;`/IN (ol̜2{4=CFFWH/PL8! b8U{@m+o t#X (VVQv<`*`%rs_x֯ Q;3/V>Kz]}?HEIϏPŝ }Y(7vÖ~ D| "2! ѯ DYlKԿNDqEx)J|rtzY_hiHo؀WWg\8}f\E <ň.%re>)ܹýpʘZYZ ʢ: 1(5(J: ~1cد`u1S9˧&o[ |"7X \2F FT&z:C*j,nE| mȆ% \,2(W@_Xo)Az3LUϩ 8Խ_C&LI=:m:xt{gn1//MiOhgɖ"\F$q1 ((% i,V6n|xűֳ(Dʜ%,DvG<%&6KX׺eZ!3g.ח g#-[|{EoLRFj8UhU底Gh3ɀ)s8AB@9|cKK+~:K/Q^A_x|[[9kh`z:yL}exb^j3[u>,0_Y8pbFZ?ThhmtI"l@]5}eoL;K&EF5dԸ:z­cX zB;iQ5@&>Px ܵCG$G3mk̪(@l+Ce Pj؁&ĭ,4-nmtAb;=th|*Kb^]:TL j֞-*#gAym 8'1;DžZ?9a [˜YÀY A4e e [xJa1jX=ì`6Y˧x eT SkQUӆSL3_̨oHzM!G|-j@/e+1frJW ^vܚA!]X+0<1FkDQ-[Vmj+'~'".ŧx 8wP_yM" E cky|*4־ + iMwj^ׄ^ۖkj!LzG¬Z^nN Ӻ2^)PYWccgϤ5&_Z9m՝Pz4k )Hʶ1i3j[N8^ Ed0\";g,3YKߤ$}EM*j֥=cabKY|׎ ˍ`UmwSaQRg"i/]Hm`Bu>MXa τPDi<·}(n:7(,+:\Ӆ+}(<9{Wߔ2uq`Un/K&zCCɨ{>&^gO^R^Q&#|FanfFSa@]P5Wˤ>_]gIC^$R~vxX:1'l3 W}|U8iHWe,⨼M WytsZuBqDzj)H440bVw㬢w[auCW=4uFMrFe\d5}CPҟ\K>M1UYܮ#^d.7jRzq BM7(mD;(Nj=eAmPXe]3hE4Ȣ,:A>B~<$TY-tE-V~qAF]b߇hBi7an[`l͛-»ٜݼ0) ȕ\+`Ťˆ[n3Kĕ(>jد ̓`2!ru=y!^"Uq&rmS5{ J$6VWs4J#yё(hDY]SHOCW7C~+@2.#5@iQR sr\-X8lu!>6M`oy,W5b@ . d,A*F:#acs,:RDMK(E*ynTG^?>rl7 ǕWp@iVf=ffB*щwÌxLa*zoPSh`;qA6,JGq]jdcEmJQYjTZ3*7F[宾vjC ^c x~φnV6_ a+,X2i൞=c`ǯh-ihx4B/+ 7ZhPx"YqԮ e@r%+{0(5ǝ}DŽ V`ֻq}¸-EPٹb5Uث־~|/΢<\(NYjh0#T*+@*C̭y|T֮ˏ , ڥɎ 0&[}푱.-X e-43Pd]Eܧ.A5ysGUECT y ga-hށQ@ T,LM*௤a RQw(.šMnܠo$W "D.Veyp"jڠM'r]T2Vh-m|aR3 ;׋z)5TpF嚃^ٛ)0p=`ʎ9 );%;|PVʾA[_>Q iF![*SPV  x (ȔYSjPZ,fƶjWCP&gkff-UBjWW%W;F!ʵ #YȻXe7GQ8!:D\2z@ٻR_xYC(=%Di`,G0 !Sbg!zM,z6R) G$v{z3Cك.\ TnwwRĩ|Zss5S*Ȩ\w av1zDXDk|T1N^mb3F2ĚFP2T"c$G\y\Ma=n KUCNGoVw= t aFM@S 7!ٵ5@,-όoHdPg< aBwזqq%,0.q/D..k۞`㨎 e1E_#r,m&k*RAKX*"|$\KpͪhS:YbLB #V\GCq]?0ܷp91m"-ef8/F.m98sKy6i. crCZb.%q6CjŝsBLhtKi/l!Mi]T7J WЅt{LVaɏcQp)0J)|}J|u sLgsfy`4bb=ry" M.#&Xx\Ub]j%ᘜL" S 2<ʨPZMbTQ+faPa[յk o/^4 W&zH ֣-q6nbn'YJTWn:Z53̲zУ]baEE / SXhyƠPh>:AXB =\'Tn' 4;K@S3X\eReFEL GE–'1'sSj]ϣTϱtTّe ڟAt[jр|2@gdG bˑgRҥ!4':4Mі(-6I2tzɞ_X@] TH&A<]BvgY㦹n׌j& ED) m7U*,ສ} 64/!xYtu2 V%[2T[іjv-#:a(3G dr'Xlhs/HȺXm,hFU'L"(†7<c-$́eQkݑ2} ¯SrxHWo^n`tzloي=q3Wc7up;us ‹A΍ˈh;wV>%pdh1  PgЈq2t^-+urjfTm2f"r=) 7,Ӭxpvh$S UNfc3N׊)V=] |'߮74w[-gZDM1pǹK7>Wl n'k,\T--B##9* Ik Х45pUy)Kf?Eo ^a^Ӵѷ6'ǻ*ðj:y39|EEXn#̍8rPRj9=TRo:oLi 盩xX1Fu4Mov'yt֧#舾ʹM.87FpևTM;s=+X`e 3PqJUi(Z}ըu׳y>CXc뗣I~rkJ94Ի:A=>Ka\FLq<96㬧9_ Hب~o_f°÷Ζ8c7'3-ZdS aM/ʽuW{ӦFr W=}Œ$riPr 9月7J?.c}#K\%+Mx>53X[io9Wq6'J=cGuE:lVE"sm/(N]Hٚ8'7cm V QݸYaLylʌ{[Z^;1oUs||)lmۏV6Xid+\Ӂgr;jW*~×:6Z߁) цc•V֗E+@X.R5뺱}i}2h$t2aG5A9$?Zs5?՚iF]5A:^SaSщ',I{veHkՠ(-ixQ:23^k\!7Puo#V#J{zfm;uE+vߕtfg'`6T:{TpZ5G~C`ibd YYlpmjc>&mt{:m##W*w~p[=~c!ѱR;Dފٗn!k5zqƴHӆm5JUJq5Ӯ%rEڿd\*c╂HF.zLGj6xKBi܂oof;TeZ_F(ii\1kA!87j usC'oR5+熟A<.4MpMMf9WeI$hWPcNSH1 vcoa) 'vhE+\D$T~oMŕÈt(׏Ɋ{CJ)SIƆυݘ$ \NV*yuS]Lܾ|R+KdZ :<ܕw#n$e ~g%9 (ȑO{²@Zjh㔇%o ÆL^ͨ,$uJ򴋛w 2DG448z pGuo"s (T+NכΓ$%3ޤD-oX:E k)ϻ[/Z= ǿqAkkQ9L5BǵBsq鿚.juV~gDF#~/A)X"FsN`tT7C+pM̊D.t=Ao;I~3 #1iz=N;.ݸi7r(dQ :AW+,RHi O:KqKޫ5}KXN/Bw;_GNurndp@ƽqlp>~[%Goo"3 ivL_Y07aqUqZxي> z"6.Ѧ@+xi b;HVB2}AԴ:[g5B蟻V*"sC#eV+F`&{sir3Bl;*~^n? r8b8605$3F覉Œsp ZmW1ؾ&\7fIY予Rޣ[NA߆UQMp[I˕1jnZsBF5c`Yy</bB>lbx5A*I"GI^HHtEBԪbOG?!9b`^0%լq39BM"QU*xDȞESP_:̾ahg-oaH"%#􌶬OQA'`3 +1ɼף 7yX8>yQ6VB(G:0s{"GyzM9\ $g0Pqq9mR*7Qh8!Xf]3̺mm{@!Ut?4hZ fF `GKU&-nUeߘŲ<0dU]Rlm%˶R\>!J. ",`WقNOz"!YTʯZКp^m-{1PKDc {{\ЮhQΡJJ7*5s'ǼCRŖ_:璋Ϛǫt%:b9K K@lճ4bb'3ݜa-8ߙp=E;'JX]K#΂- >{a-=k:ƙ? :6H?i0 k4C}g>^ ThE)j@jKcomͧ4K Jk8"ᅾ 6[?Qd=W'|(*깹#I̹U"SZ,/Hv 3`lC71h`v10X&#eG̶GZ4= "4xb/ VET~Oǽ%:2&,,;!3/m(u [eAU<",RkKL^ S 7. e?j"4-'S P0&u;&=9Q=TCF7SJ Jm˨mJ[Bn&&PлHXMq(@8|>TD[l Pqi4xboAx#Fq4[ݩmPQE5:y. 1F6 ATbۺP2B2+\->pՅeyrJ)Fy<WaX;""Fc1|  Mp0|=hhoHTVMFiԪ-L:EFHIl}ş;rTp*ȶȴe߼S)fYPJjMZ?s^q(Kb 0蜏Hݰ#- !Cp å5ObЬjc@"qE> 0&^؞DIFOi*ĘyAH}<8 ?JʀJr\)@WVEBaBe #>V1ʬW?!`ZÇ{՞Prg?5-QAkoHA 5(cM){kQǎϓ;1fNDiv~=͵ddO1'?J[Lh~PuƍOJܨV+z[Wa aV_'/ )Q MHQ^\b^K&ẇcu!@~.SÈey$Ֆ"e1 6> PCi|wĻ[8>OzEKH]at>0hP~@n%0,֎+YP" ++oupPn 9&Qqm`]Ͳ7A~f.61}Y[ɟt˂Yh PǺ t#rvSEcz C0>n4"GۨŗPPRf12P0djFxbf(O,,]F~bi;fJ"L78P@^<:?%t}Tլ4 r"fdR42ߺ^\>D=n5xQ8xd31@|TНWd@HyA?PebcpE@/y;]|:QjEh]%":a2rG$r@#dAI)'xxm)L ͓NX^DjIa"END˕ȟ)mʍ2 ~djaCr#LDr*u)a+hj"nl^88pԨNl,9Ny3鄓6HyCT7^'73B/flL:2ps)@.+|_ә $\ `r5%tpi F /yLeC <*Ի} &Dp%'RMS bڑíH|#g Q(͖yώޡ$~.<Bj`GF`!:uc%ɺONv!9wKSɳV|k.e]~tهl2J]n L$e'%̂?RU%\oK]|r@0*~K(-b"-Zˠ'ē"4Yymc %()pa0"-ȎD1(W*v{LR3c3[K\%t4mB*?89^D"EZ2MU%plQR!@(lL@"6_oB` CLijRq0Uy))"8YM]@ibz%++8'F7r'Vk%ݬg*LBIN*j4z o~>F<uP゘@ =AJs!U 0 "A#^ 1$2WA$!#v- 46҃w,1D ?G8ұEPUXЧ# NʥlkFWT33t,htDC}H'r-NHOƈe7sa\&v@DpuDVdj|D}'iBne3Tk쮭Goi~;vjHl`?@jN9Kt"t"$/} _׳s}^RԺ4ytw\9Pyojq/K$f^~|8F2tX8a+X;_<&8G6bxVHb 8nI¯k^[BJjw8p"9q@nvƄ? +8`8<|3l~Œ І s}<@w\fnKֻ ۷HKfDo-ѧh%_&M^2cHI7uapunqqEtU "WcᔼURߣ;6DwҎq)pX’\s).>|P<=yYs H[,W~q珮|_O]VnVx'o/0` 'NPcO Nje.ĺX-kv_{mumyC-E3{8KGxʅyi#l~g(p{u!(xxrB_τncƼpWD@cIEUk_[ n!@ nmkD4 p3 cz5Vk(O?I)M%kd.d2c#SI$IS$)t$I2IRI2I) e$ФS&\I)R\I)R\I)R\I)Su$8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?Iq TJq56Ў@i-'BcG)i1&jVҢ`;PF="j=J)`\yi!"󡓪w>I\=Ρ)qchݍV>+vq-d07ӮMdIH=KI'^MW:2I!c,tlEͷgޟJ,%:6206i4f=²G # cM~p 91ޛwcZi1!}ϥ&N]Y ߡh"d}"2nu*>dD;'ډ ̦p<8 Ge&X0r}|R«-0+K`-aYEmm`ӱ$q^x (_Qksl0EF~I%R.w> &75M{RP8 8}ɠT.h:$sGr;")`% ˤjTI3-rPIԻǰDh5$83.-;%50jʜLRskӬsMs'jMsԴn2 qj`2z>>>]Jsa,$0J !;@1vi$oet ls@g3SK+o:J59m0촲}xMjqMcM f6V 4<]6`˄C冂v:&%!1^fGXLllщ[q})DXcH_V7c Zk &_Bf=3v>;v0_uUct Vˡn(ڡVH2#BG0tx*$U+x_Pޯ LARǗƛLmMU( oQR~T)zj yxU69I7/N?Ԥk~pE qZpJ]SJl3:FI0ynׇ6NTluj@Ƈ )8l9 F~ պvHsY>LDd-NeFUc .sidz}*]mneDI:ֻk˿=AU<#$(SWU3q%{?b6vOLVEL h 2f^CZ@? v0~wqЃHRKZLs5L|ts`|TE'PI[Naއs!yL5v"%OsOGm^Og i;N/(cwNRC|LԸBL|I,a|a'tvLD4NQS} ȄwC҈J2]"$H$E"nk 8n"9|2W;|Tοja`}$pSQCς(nր8 PJ=BgqX;Zh*ؐ+ƥܟ20hq(m`#P(2LbzQ1JkHc C϶i׆UB}JelD+a ĈS Z 5:}\1(Ɗ^ϸ'{ #ӯX>#誶j\4> CEg58x'BlW1lCK'&zntNjG$$Euî1?ޝGBU~N{碄lh}%IXȖ A xz.2Us~oE6TKBrf"ep%Dzz1ljrm@ YI6g$U0tMa3 H&32SP 8Ӻdp x%8t) 夐~ zxR0c ;Nk(  ;vKN[Ma\T4ΟKBAvwd;ґwܹ$gHa/+3ujkq n)ILZHñHHw~XN(xᢁ?Hyʐx))d>x& AlBx;~)*EE9+' F3"|PDl>'V52ڛYQݷx" Џ4‚V ;_0@Hs]ݼ|ԼXX 1! 1(`T) 0_B+Jacv>hy*;PVD(F[L[;*B÷0|?D|Z1fPi&ϚH?S|TJjWR%)$~TӂLט=kLkҴ5ȇv#H[^k}? 5ۨL)kx:;BF7v0>j`}R#H})SD:8x VSY!tBbuQ-L,hR)i:`xJfЦҫ_ O?Ĺc9_s~.<'# V8_E qkGګ%:.#$AktIl4}>t [z6V:ܟogrZ:ic t{KWu?b9zA-orghɒ$ڇLDB=k\-="-m FBEU%Lcq2Ï7CBstxn$.fj|[uzz8Wx  cr橏dC!D+p뱥 _U#Y9 G7  LkLX ^&%*{mO:(jI" ~T*ds"ָir%!ҚPSVk:c䙖$Lجohf%Zf6glk%8)g CsEӇ MJL6OQ`{{|B> ec@tOdvy 5 )f״8L-$!;ߺ`.iuKFMp# KF+sO;:@G*SIHrY۲}|7JJQѠr|D4htwIQwo!!Dj߂JT(2ޓĦHE*O0?))#Ð zq>) f649U}ŵԘ*h< &&L4@(9k lrvn )S뵀.&~\`!B7)W Ow$n~E9{_xwTĦ}I{t?rfPݤ y)*{N4Ec8TӬ3Ɉf=DA=Q`qm s:ꤖzĮj]ޅaY}5\쪙78R@:>Z'M']PC%>`$h{(L ->DU6LR`CZCx]hB-՗7۫2+< zyR-%kTZ<%%G!'CH4Z~I"$BxJSplAwRi%Rm4AJ]'R~Fӷ)H?>RsL)|‰NtqM `S)"NpRI7 p0tֺDy&AJ=ĔvwwP$\{%iR#l:%!%ho0HӴrt" #!M(,[7D|_[Aș׵udaC wa%q5#BW;Q%ݦTKij^ ^Y.{$H 2@?5ec- ?c[ckTzmmLa_L5~y=܂+c!U c4jnzls1 _mrr}㵺oʜ\G{ţd^+9Ohc^q6UP$cn>_k}bp?5P.is Mn^ v#Bh!I"۞ 1W< ƅQk*CnvVz+qLC=\_@PSNaZZ nr8H K&@*$1S}4/^OpTtp`\6Z'Co=ѡH#R:lcU&e0ǂ# Vv3vXA* f X5!G%Z^`ѩ 9ֳV{8Jc"u*2X̃]&9ئH|svVZ#w)>H(^ ' bO>I;ʶiCcAZɇt 0=ˋSⱻn{gV<1ú.p 0@H_T;kwnp45g{gRef;a/*Iﭐ\$Etì }QNoKd4{"XL'W]ɭ璕5>S&A?F8R<%XÚZ aNLÝE~^?]cXvVgAUDPuv$!9r,-|RUew %Y͊S2WI 䥹ӫb(;N$ɟ[ޞ0.{oOxRϳg$h6msRY?2F/`p#gLjM825]Q"A$70+&N#(p-[!Y^+Y9ctGckaGc<DJLvjV=9|1Jz;dL"}@J2ꏉVB[BB#\2 ^W6B}Kw6Ը`ti{TMJ`Q5!iik 4x5v+>^G^TDZ55jl)m=³&^ .lԢiQEps5c^UIKpM0]k&,Z;ln-HWZcQOX8g?^\JF 6(%FTŠL%ʘL 뷗2NoUW"^3&N+ X69(Ŷ3}S6;F#]lh%g^R'@ E~Ap'cHk91l)˓5ΉM}ܕMY/YdCriS j{\Iirrrr8̹624q/K6-ɷ))>i!n|H\/\@&'~)Ԗ0+ H) F@ZdQBOB ZVˌHf[-d%k6 OU!o NA +IBuS')+ $IRI$I&/cy y(\lq_35~181HS!6 ?rs$(ħV;O8O;B1'F?x`0'pXLmoS%8G;x{/#xj$0;?H@. >_yXXM'HOO!z+gՌ} 'G'׆_*I:Kt\r9  ҆ DܲJzm!5|>^@9eY9,RD4(@4`(QZXJa@pLpX9k?ϓ/e#EI$='LSVNH,xCk:s96!)|P_9e|G YT`&$%O' 8xqyσb?3z1nj xICHO2aK\@#1?Ք< ~g/CO 1⇻Öqb<<|8aR˃K/'!5"9.YLȺV)̌p<&1LHCqO)J ]%X?wpoy9n?wwxyPKҦr)p*R)J\ DQ%"TIR+Ĩ]KiLJiRLJiQ%IʁNJ*hExY$S$IL3K$'(~)דD A@) ' )†AafTBQdh'F(2e<1S;GbsYLr?9-_NIIh4N$Tc,'(e<ch7XUN+ԀT,/S44|QT)OE5xh#E.ptPKÐG&ڶ=9J؁YpأlR>(6HEpP*)Q!L +bF aTB2+o?/1^Wn0sK[!JQ"r/fyhb?r`zq~wiHS L$}R&ۅoqqb9qcr\lva:HOxq)c{X㏇7qqKmR4r8+''ǹ\DrǙ._:N4)JQ0A釶5)_gcY3r^`ݭ3QAi) b&0ẓ/Wr_5<ɞp~ 91Kڌaz?%* )Vyl("W;L#>#*RiyJTe)G4RM)p*bTe)DET)M)RE1)J*@)H,BS*%KDI% I')I$Je_i$?'-d*AC%R|?(b'#K䳝",^`uOd1OSlCD2{78ęnm"iwAi;\xMSiY^>U%2LrlDa#B#u02 2STȉjO(ぜB>(N*N?rZ/ &N<. 1)r1䨧4)R)49ٷf6L=zlA:B@_0%|cCG<*2QE3BRL-܏e)JS9M*;nG4SJ(*JR)9JT%)GTSJiJQU(Ҕ%tAjJ?V L,e#L#!Vl? ro 2A b%||> qN2?\2rٸK(1<0ܟB32%/ 5> 5$דK^yR R(cߓFxO%l_<0Gr/EK&T9+xL ƊD&>t)#mo><-<G¸dX*/qhx?.?،yhd\IjSM!1wެF bD.ԑ@d]昞e@1vQ3]棻*Ap7Hx_熗X9tU7&}(٧f#/&/3r錄ocf0iʻ$uH~say`@9qʲ28hӐԞҢ)<Rd5Џu] 3M=kt5+sw8PlwNkMMϤ~H4kªdxT SO'wwBbp Gr8"rrwMTƸRJ0SnR|JbT&%GrbeH Z(ORƎ{VR=Ež0Sr!ޏL|eiؔWϳ4]W=YUоw==M1cmY\þ#(JQs|Actx>o.C'S1> ݫ,y(nRrtMMRLZZ\=XLuxaq8&SH}Zc(>?4)mZnotWA<317^5-}IΚc 㐞 !{~à <'CeAZLwi)cȈ˭(:/)JdJI$)I$JRI$)t$cngX-l,(Ɵ F/ױ:4$iI$)$IK$dIJN$dILK>i O?P#H-,ħKP!k {rx(pbf)Q!4rR \e.S=r!64<) MnHȜ1$Q.v:id鋏Tw(i$ @} Z4n`I)6p*HKqPSOGU$G)AKr#xRnth1Oܘ8cO 2ۼwJxƚdOޛr2ң)H e)2I!4I-N)$JR kF{U49Uhɲ:)5-]h";-s纛*zӴCKZ*ݲVE1BSmth2I)}S$J]$$d%):d )I$J]2I$$I$$I)t$Z$%KP$<K#6E!C}We}dW3O#;<‹^h.=jA!~) d)$RI$RI$KZ$IjI$$Z$$I$$I)I%)$$I)I$Je_i$a)8|Sh^JIJ4L)p%}xJRL)t$)t$I)}%O*[✥IR&N?zRI)ZKT$h)d4IJ`p^N! I=yH)jd{(WXa@K |)%d./Z I6tJJV$JRZ$I$TZ&%)$hI2tL ]$RI7 )tL$IKg$$?]7t"uW r%$())^ wKIJKTIJI- JWa$R)HKHIJI/4RJ4I$ܖ.RR)y$IJ/I$$JRIIKDɯN'XhLQH~TI.QR% $_IJI.IJ$RIJKI)PR$$%)$!$IJJ<%$JW)I$KRJRILIi ]N?.I4)^ p:JWt )RRr%/:)J_IJHJVI%+DI%+TRJTI2J_T)$_$ǚoxI%+MI$|%/MIh"L%)-RKTTҟnOIRS?~Rh|H)O?Gv eJIr vR'0H$ Ij/ rS]4KI)~LJVȥ$JWI)RR KJOI)I$uJ..Фp~DJRZRIJ$)OJT)JRRI$IJJJZ|IKn$JRZ%\iIJI$J$7 ~ |RR r$'M)~))Zw ORJ_D%I%*RӲR )}}>{>i!4'ێOaףYo)\;%DZ )n ^iRKHK)mwIJ4OñJJiK%>LR#RथOx$kKOpR%- jk׎%-I>x))h-0i()nRk[/>Ka _ʔ/$]kC)nc []$Ki))ZJ4OKk[I>xJRRڥ}RRKkt+Rk-RR>xIKyx=Kk-Z'Obx\SwJR'x?Imv?$gl-117-1.3.2/doc/src/hud.jpg0000644000175000017500000014233510145416156014522 0ustar cedriccedricJFIFddDucky<&Adobed 0f<n        0!@P1`A"2pB#3$!1AQaq"2 0@P`B#Rb3CrS!1` PapA@q"0Q2!1A Qa0q@P`p @W 4U]ekyȰ*4]&fi5r!2F2Re"I29n"EIҸY@-B0QKoo-$ι"jԀFJCe.˴,JM\crج@!!H"QP29@4]ejygsfPeˤ).w9Xj +-K*"ĈDٝfqkF[ѝtMi(EMR˴K)/:GkVMMl;2 B#=g+˼ޒks]%]PFVcso.R/TNu5 asJ6y=W_2y\!"ȳHV(YI2AI 7QYF79Y!LDi-gd&Vqr55՝o5R͒2"l [^~9xsJ"TgfW8\őfhBkIti&*\@B*]&I]z3+ӟY5yH;2$K5Mn$ hBeIh,&W8% `Ies"L,E.k5E-J&vro6Y$C5iˬnZT1љveb i}yTE85K KViKȲ`MJV 5(\`2X˖,X ui.*[l!<[$ *Y 3;E .ylEKfZ5(()vάFvse$&vJR-rҤ̮Zw3`e`Rk9\WMtgt1gr˔5^tBI6k5efMuMo4kr@:b qJ% r.UfVBg` |yy.w82$ecs(grNmc fSIV\mhBL V@%ˤY,ivE4]jlβL2eB)lrn!2qVEBt}9Nwd&W*]%*YX9]sB&3fRkL nt]^%DYrٕ ][˕YEcQ %qjs\ro$I{qׯ;i$ٝZ̥*@j,.ma$YC4sU-g.$Yso=K/T֒6IBjJ,藯;,+ferj;Fu6'=& w3ciz&3&VMrdX 1b$P 3)YF&usɬf&Z6g`՝R5uku\{SItTgfW)$Af]9ˬ=U$.yz3hm~}3tJA"fԺ˼9nQkFuKP W 5k:TEW=6($AZ՝9k5KkB9xϞ+&C*VPKk _+4 %4bDKJ-W9`3I%m(!.ܡsϨ#14+iw蚹b{,)"4UrXi(ƒ>BgfgziܻjvW`Ys6 v]"k5. Z^|syFTsˬHENw5V\ٝIkF71f@9XI&M3H̬1>1e5җW0+4yC;;(kizssRl E:f̌^k+85=aImuMvg}efvfj-t Lnyw-s i؂\5lCnCFQRkek`o.k\g}X)6VẸK&V(@a515ξ{W9ٕfԥk.մE Mc|&γN&ZRkz͵uZ]UFVari dE+&:@jKwǚ:vkWNHh.[].Ϭ"1R5]TT8zV1ӂ `2K6[jKlŮiJH[9O:^y|<}sX @1f9;4|&V+*[[+}bkiluP̮pdEH  ( uLSZ˕،c6UD*\̚Aæ2.}}DV1 ePH i̮y5<c@j aLcK:]#EF6B0(FIqc|H1w'c-7jV'6qRR-KdRA"Vc1 mM+-KePTR5/"Ȁ+DL`I]tnZf,Zɍ.o+(co5Rcm.mfT@dG`kgo5neЄbk-=-1ied\f˚gd$Vh ]% }`0 Xꤳz(kΘ+(pP71XFuq DE ahjXĊΪ^ރu\Kaf6# F.Ϡ11cEuV,V+0Vhy}+ c#B΢jlv˞=V3AE-Fus|1C(eoC Dk<ʹI ΊnC5q:`1  $Ԋ e[ۧNƱK9ϝ'^0 EA`5!Y'0_+W/xqnn럴U7XeCBJ*@D.v $;sYXێ0 1 EYTIo/L_f|wΜ[Own11g.DEU5+IP%Er2 nPl *e ePʂ %sgW kΪqݤԀ h$8iԭɥXJ#0II ʐo@ a(1XA@MR#^vôDtrfT"jH 6ۡqr\"ndKK̸t`W#ɀc HcRI%Ixӛ.BC͚ @GGYeɬwg:HH*EDQr2DHn!p8pԆÑÇ+gR" "۝"DF"$B% %dU ;L;f   pQha'9N zw&CnV6ˤ@A$ $U+IQ"P3:"٩P!1p&8y9NB1 9ff̰4@L#Bjͳ7J#25#CcJpP)j{<=f#.ӆxYBrT4B dh.uPtzuy}rQ:I6 TZT&_A@ `(yT' -VU:Tg2yDY#;HrM"URCW/o>5xrќ:Y4Ȃ> V TV!ÑpUjjUh0sOaR<'ԒDUC-"Pi@ ۧ?i^foٔ9&+WRZ ZJC`jC\j0ǕsFuN"EPTTi=y>%9Iri IPu>pAiJժjUE @0aOO<Ĭ#;AP!EJiHC/=GR%8\i%%$ .HXRZ@ `@j'#~Osraz4VT_?ܝpϷ͛h   .Em6x0 no^ izy<Gg7S0&\V:u5b5Ft2N 4SSgž?.~)Pyy@.4Em{ߝ][pyVcIw7$ %9{"3E)3B-]k%  3_ bE?+zs}>o~QûΧ|`T\tbmo׹P'c .1Dʦ;;5J3g}ZrZ &5_(^mw~]c $ $Mñ<_f BC\vȓqtB1}Ƅ"Ebx lI$n$I$'ED I$lll$K|eV$m6]AtUbt|HZ)$I<#ͯ=$,nehl45H< `H\n7'I u臈xt#IXAd+CpI:"6m6F@ֈt3q$ٸP ! !:xc6i"E+V,F5ZA&N;#ЪkYJ7 ꘈF7uIQc-VUVdh,6;R!ḯ:Զ$[܊ [mCGB&FV6CZ2n7a\VіRս7ěĊȶDZ"DʋXfI$zY5[wD,Y"u:`Y:iTBCZ$vlbB*I;mHndaٛ)Q!#:w/ ^B;J 6FL@6E"ZGQ-;qԄ(%Φ1b;Gh,ʃ`n7%cOŐ$LP:xƚ;"vf6NU26IjU1T#+u%X;Yvٱ$Ho; q ѝ,m6MOm EĢ*&obvhLBY $e'Slq*mKTl!D)?;"Hl6 CVi+)]xn#a|hild2YMؙPn>KPkY7餳y;r#z7SeMe| k]3,B6׃r7 c q,b_ B^T/+&1ԍ*d2-BbSh񝳶͏]WLhkH obŘBKAH kDʶU+":q7RPfb;Ai$ɹ&Yw,gtHӷV[erA\dB LVz~#N(شm/Ecgm;y0,uW17N){VĎpYlw-Q:O6EmwdaeBtޚuI$tgݸ5_m)m_5ˏgʂ*Bӯ5TvDHz}t[mcIk:;Bֵ*I$ns&pNm6 I7ĒImf*I$I$OI$$cH]DdI4IĒNwvnI$I$I$kn%Ui$<$૫I$IM} I$I$I< ^*+^mUvU.SmOe| bd~s+'AHFGerώ 9RO2d?xdMmG&SoHvxkEIZˇe9{^=^iI"$G uw2m6YG iԇGI$I$I$$OWdYحksV¸Sj;glvN"BW2I$I$I$I$I$'$:.C#t:ADaXYøo+uI$$I$I$I$I$I$y#dAO2EbI7M'e6q$I$I$:}Ȅ~'~'~'2FWt#}vI$Op@A>i蓾LtT)+؟!'ȘdLMih}lײ]Yk6|.G{XlQ7Xcu7Xb_'"ר}iڻ_EYu->ލ|\kCt*ƺG+m}?Zk?XHl5kV[SԡlX,Ue¬Z 襌| 6}/zut G]yY&2 #Hu~Y>F&(\&y1iAWNō*mI䢅̦- G ==/!|77o-z\b\}s)pUR4.zvSk.6m>cϥF #?}mN7ۛ[ Xլ(y^v|ʟR+[G/Ⱦz_f|ǭjG/h+noMȻzWo"1ٮuKkyYw[YHEғ?WY1mNjQaTNʙkjeYɦdnOj_g_ϪWiWlbuW˛ KnX:βLRCm,ut&3qSLݪeuŇ LdjǟVj%Ddodqꨩڴnx{3eZd\xQUf/צK6/'};9W;NCu][:׳= |eqpɛ3%+be\z[6/h!A d2   1)|2 # .A{4zf&[I$OǶǥۣ#HւI$_~*}.{q[X6A2I'7 ~Œ-'< Nͳgͣȃi4=&]vKcV;hW gr'E6S+Tg?5_8 ŕ8Y,WehGnj/EzVJ/A4C5Ydi Gu>E9q9PA#gF1^S`9PG!it@LG21'AƝEm S ^ 9q3celNgMb#AG2=s>udȔilJ4 lzuhjU"WAMim6Mi>>=_)x=mgݤ_.ܝ$`> cYPA@<#$맆~}##8d# J# A>$I$XG>xyʟI qk$O&AAMI$ʂ*>y0GY i+/kI$}|/TorI>Iu;/kJ[⫯ߕ$n {jaO&GѾL։7t:0]Vm6:^LuUŠEOާI$G flॠYi-G=̟d/2Q!I?E_?n 8ujqLJUi^s_gH䵢 ׷[*3xU_esgzUͲI'w:W /Xvɇi_ɲ׮+#5vSj[zv=wl[#ciLch[>,{lju%<V<|f]7 IL[G>湯oO ,$$NI$$NI$I:I:::$I$I$I$I$I$I$I$$I$O?[a8VFhg-L/Y "i RxAv"B@M ӑ"D`9Z{DX%_ d:N AQ趋mK4^kU&֋ CуՃ_?.A) yAN1Z۾#4IqOpŬ@T4Z`*ʇ xns;[z~3E {/e5=hʐ{!-s ,AN &DlL*tQ?Hh>TNC2C /0re0/?)駕e5.rC=CnyYO!m~eĢnIʧnqhU4 !`Ɏ^K' KȵMґ)$;yy&8mH>^˰2풧 SgFG|+Ӊd[)WhDA{yD|CWt֑HS^M1D{~SJcF[ק߷_DNc~D{vӭXϪR Z=b$ztH*jꨬfx+ѽ=见*nD*+ I 8Q%̤ILKtB>'LٛZ6%XanAi;=}4Sc VOFHXa]_zi/S6&{FNS҇P׮$ 2>G4\r8-&)&U](ZbH݂&kPI}Uؒ D{cwH+2'yFC 7gf `FqBgi:{cQ::Fb~:bg!X̨?%^>0uk3 3f*ST<EծBdmkb^#o a Wc1c`''htA C$*cf )- 31gQmz:%gέ-k\ZG8̌bu qD_f -n=ǿvaemsй |qq9Z6s LP;@ƌ4Sk>mmmf I%Jx#=̶hㄪ\gqۀlq;J`6Ŗlerc3Tq9&yֈ7&za*E7 6VPl@P ZU'L- gtܒCyAk[+LVoٺ쵯x9LrewnlSH:RM)QP.9 XҘ&vE[76n1!}\)mF&Ja\Ja!z;C);?!)YYYXDFDҌzLPŗ60Q1h&"iF˫W"V]'0lVVR=>a Yu\(TQhAbDˢzPZ]D15lmiMF3 ԘYFBjэkBA11=VBzE1 At?\ | p6]nZ% ҄v63J3$21j2R4$Mэ@/&C)G'Ft,|r)2$ec9 ]w(z5i΢! tClllaf-Y<2(mOE+Z [b ke,BEp$ #!&6l=F?BoUaAKA ;hm1$=4EF;j"iEE BEi&d6z &lwKXKܴΓ""H ]i8$j5ubRԓܳycgu?g1kT5J=zto P%0m ΔtB!BM H&w}-,螛F$eǦo5CsLR] s遗-4'hPkD%LK|Q x(fQcDjr-tص! ΍h`N@6+y,7ZMlz¤QO pCz4V&ŢքPPBJf6TssZ~CAjWMC'= Z!al@-Cdez$407 zM Cj A6PLr-zFRB !gDcBLHmSad5ib(!(A™}+A=J@!CP QXDibd ho&36(vmTP&wwӘ$A܈4. XbĊ /M$$T4Atm$+ђK"-=&1_aq^AiBd+PЋEQLa#4?rҘPN4&7A4G&*CMmdPDLȏL ox`V^ C&R1#/ƚ&@#Fbal?sU  -oPo${ALS] jzO1p>$=;_m6@ sɤV$0.ӰcomɱroAFܤ%J:)$D-nn̈&IZ1.ƣݡw r.&K1:8ݑ)) $dCƄԯMh)DJ]bC7_~Md]n j-֔ >mGQ1 l̨װ$+9;0wԖcȁ *  w{ 9Vck04(K M &U@q;f%)K(q\q:x :13 h(!v4v7[ŶIܩrbVd\^vku)Db490Y/B؝75E4-?ltضlRf~€%NA !% R'cúu!ċg ߏy s1!>-`MΆhiDs. [2dUo=.<4J^̷pl$GH/xZF2lx}jQzgR#w{' :Ex06Rޚ&e fDIǑJĶCxD:!;0Gfm ͻb8mlP! <62qSp {7ςaZ& 忣/[]7>v+xzmE2l aނǁZ!9&1)O4`]*)H6[[}#I_qfRpݲDv~߈v~GքDBe =0iwOٜ awNgI6M~ f..#MM UE4o3Hyq;e=+RB~GL[q-G"i1KqJK'iюY.G.0^lС OΪw?&  l)2'$st_^_-O'->Ãбf ;[+# Gz#1+c3Z&@E9tlA#Ft%'lbr&.ϝSvRlұޔ(: [1߁9<˘/c"`߁n+w9iJ] D)z.rcd"ȿ'&?ػ!,U07=M͛VذJ-<)te)K he.;bٛ?pKogC׺RRXla#pɵ3f\B7z]-xKIպ.n:&1"&RgFҞjmцYe)J (z@JR)JR)}P@cD^ƫai/JMce)OA1sB_ɏԞkQi?0m^_Cz,Mcɪ&93xz)KR)JR)JS%+ڲ`mفelelQH o|cxȟqOuhZXa.461sA!NRuԣ/AB 76]< bLjR3%J!'>贆|w\'v>qī2YoLͷ<"-s^y*k+ N\Y=&)tm-d`go(l/?Tg' MEx6UgwwM,Vʏ#JMfwxqmݿްgGzP KTݢҥ)JR)Kms+kub裓47`0e cT+oK9hW^E+83oܣJD'Mw 1&`߁| = = {6c& )Ű)J^R)])J] R q& _\pLr̒̊lOD?Odbf!  "k0yԯtC;G@P<)KJQhRj"{:8NN .i_aGɁ{Z66ZDQ,Fc e7|?#_^Ait4j!#(بǰ`mrv_K<Ώ)[r`}>v%&\K{Y҉G)Fv#WyueaDdzrDŽm9w&6Gmj>)SO[i\n{edv|K DdV wcФe,.mPSDž Qiw1 cm"c~{mlanU*mX$[B_5Xi+GpMaiK!r.j&LH? >vm}CԱ4֐ X?QS7Xe,ߓsF֝௞o./g[e 1̽uD>ŻnpbY9W(M10%9[nDX6p"9h7mDN4vk-%(J]ZdOO7 XmѺCwaし0 %pQz>ݿ/ArwF MlYEEڙL\ ÌmIi&{^&R)J] izW_c &Yf^9IYMyOB 'xHkGǶ=#tcʦhiFcq=n6yoե)tan44v٣t#=Ba&Y$(pRuY8pWa vKeؔIҤ}2χM)OG)+`vɰb%i8`Hv:p䙲3fU6HzaAC7a2Y >n۬/j-JO^੻{ٌ>v6G_+7nԤ&?#N ^{|DEõ,bs%7l)+EʦM'iMZ]B"w(+TwJnlXDx8e+ۺ\-lW)2R͡=7e2GO; Bˏ :Ҫ $,"a;OK4鿸oxG򏲢++/=}_m^>Q^>Q^>QKMI>{b/,Da–›yj0WLm"KMtXxX3l&m?uB+= `C 3tDȩ7-pGu`&*,H,q[LvI#ٰPHW ^hOŚVDrmOQ*N{-ؾYS^>Q^>Q_m^>Q_m^>Q_m^>Q^>Q_m^>Q_m^>Q_m_mTGTG?~(h((((>QTWGQ^>Q^>Q_?!*_ J_Jm)J^B}QwLoҹ߁4܅IE e)zO\'JRեiez S{~SKpIQcmǕE$X_KtB뢂_N)JR! )JRAKE)t)@3J^uR=i)K.o/U!/XBk =Z_zB}t! O՚Ҕ~~JRtRM)~ҥt)J^RnҝINOҔ/ / )K=N! t?Z)u! !: iu@'OB)~}9.QI=oL!$BtJ_]a=FK/H]/R7BjM!5RFE~S[җtuP%<~ %pХ)KssIw҆3ZV.+ ziJR\h'j16q#M(!Ny[j~4ތxܹf7vD&JO蔁m!?EkM[dMJ \]^_V _rT!O/~NWXNJ^N_PRJ[ !~[';t߮hB!BwbEjݞS32x#rȓfR3A)# JTw+{ۗɥ)KR^OF!5Zh} P=GT>v䃉m~pްR@!>BCCN,~?O,NP+BP(45ߠ\'L!=P1ɓ&L =!>ckUFۡQ} ^M 9DjFRFa}mRJ3 KRհ1^z/__ r]}җf~FGcLa/})ڇ !  d,[}!B=H]"!:(>CG'6E^ܔ[4{:Ywv96୷{v(aB$!BI&@!)hf6ݝmds>:(o6??}!n6!MHsk8&h);43S}?-L{hgXB BVlBIп^IfCfЗ/7$87. =JsI(h!Bhh'Qca7Z./#Us_簉c։!N l}k7 [}#ox$}f!B& t3k1 ˹qwyo .b!ӎ_F&!B!0(}dk>g>]y߹)LaA*9%:!B!Ba =?MQcg82 m iiߒ4aV_%"o1^(N<4!a!=?轏^|,.MG biqx0Ԏw }6V mrvp~7K4!aЃZa ! ! ! !49~H(OX{Z{m{}yv6O&\#;Ol+6"2!B!B!Ba~P(>Q|Ex_^>WWx_~>W__?!K?~SDi4zt 2ߨBjBuRBzVKYZ-^;BhuLF4pN':&_o~KwBzoCC_C:wM۱IBW/N^]}vLc)Є! O)uQZJRtOHBBD}hLzRaN^(^kK:it!:4hbu! :K}:]/T!=$.e/ K&ItRW!u]it ]3n.=)t&]! BiGzV.J])KA.K:)u' ! )Kֺ)thHN/U/4MSkMwV>M/Jպ&/HWНp!4Buβ!BiB u:(ziJRMJ )}4BzT$&0ROF>OA~hSD>I=Z/D&)KzǪ֗T'h)u!4k ЉI/Cc&!BgBi} )4hbKҠ[ 9֗tR: %4^!=8B=Biz{ҔBo\z'M&'U)utMiK(R5K&~:&%~B*н萚/XXw^3wDDzǼCR~O}K/KK7TlmR(NJ^K_H;$(B}M)J_jYiM>)~T]>/JR)JRot/J_EHMOȚ4 pakJRT~2IJR_P! +Vdɓ&D)Η'3Bb!NB! >36d2??COz~g~g~G*[ [Jlߧ:&Ҕ)J_ZOi ,yL.H|laU9x,2 cj/P@o?i Tj 0do $Kdf }F2z/~4QgLE)rr>_Nr?8{W'!x'wM {ߧ 6=qy-^DN=-U/U)M)3[l$s;7nP5G={谷D#M}o;OU)Fσv݊]&7Dr7`jB+nu]ojƝD/YiJ'MlEu?OtII/Eˡ ?7- /Sҥ&W^!zBZʈ)KR? &e5ZE⪿8_p E_8ef@ F ߃'Įx<׭[,ՋA -`B]Wիs$fw`9pn+jѢ.z8ֽɦ< 6)$ژ0Ygv# j(a!@ v뛷CbU+OC ]޹" J_$`W>|MdeJ}[ָpIdcvCv}0<: 7TVl )iF)$'bڨ`_cT_D X8oRlՆ ?h$J4\)L&o$ &b2p{(3qpr^,Z3)oMR TV7zG$@Gk핼b''[)'WG?0 I$Zґ\{[$n-A4M$ȗ5I-aκ̑o($w=69Ox  F?[}>N f$QFGh0o=}4F^?n~c>}@[G%c71ݢ!!=_S9&gܤRT o>eD~s.$j'[+쵞HSLh6K?c%r_0ad6h Bf'n4ҷ}hn S+d %{rZT/i -+vܻS|"c ؇J轾M{Oлxq?lWV3 o]rKiGuQ3R{.MIHI+f ;u乼ۘݜwid8('[T6I\Mp Hn^p[jN$Y7+Ak&̀_Ғ$f_IzmhO8M%RI; Y$rclym2쬉DD -꾕vo0 dC: $fyJI|$߶ߴ չp(L c__>Y$۶A xdThQ $$卶ݴW.H!9eT}) 6H &rʹ rm"Mu[iIH@$$4ۇ!z[mm4OlM6@&'R!ɹK[Mk$dmH Fc +OMK,4I}hlp ",۸/K KqYcnwpOq3$ n-= 8, ;DFiGB5B )FoA1B!؍ 4#51lM t^Й6\iz'2/džcgc!PŤL,jq9aHL$h0@bcFr!D {:-4=llz>(o!I#k哸,i[&˄ZEJpXi"$UNR݊XdT7C4'cTnFwa1PiCԙ*֠Fllc==cI17uJȓu7ُZkoqFdLeT,1#M!{3snxdos ʃma$6U}*y]ŻovvDr=!.<̊(šCE3 HރQoX1c1ǫkЌ<*oA B(UgKU/|&ǙK?%ht'd'Fl,=7!j!AZ1 o7NTEފmd3}&3R$Pn(G%rV[j{od34$cr*E5&4Mnِ]Z1db!t"0X?ɜK/a|h~M#>38)I}4eIY0|Ln H£H_6 $ncLSAâw:- Мb(c$B%mؠʈa%#8&ŝ?ܦ~$rTօQ<_ v-W!=1SmTw7 5C 6)1BH+J,E&^!$s(O+r̆JLF Ѷǣ1- [ e @lllloTTE*Y{m~AǷșl$V n؇?bq&!1 YC0iA͆Ɗ\D&j{?HeE?#LO$T"Z eZƛÆ!KM(c6$͐lllllCnGI: ['Wa ;bFc&ME ({%]w"9gv7˂"hMϜA-+},D;=#M2;mв /-+݈0p \>|ɔ&! 8pN"Bxupe9 M=VBX ,txU1ne [ݎd62l666'H%n[ HIq<鑭s$=_x51nɹɏ"g+<1ˑ|݊X mj2[*F䆮O m6_Isgt3 &oooQK7qfj]ЄMn&&6EbQ $]*6oF!!ؤŒa5hFŸO!d`T4nx1JPl2g}On;vt6lYo;F8G/K(70!2/S ƒJ/c!qFck'arZh)/e|肆ěx2QJC(L;N&/"yEK Q bLO[TT*p1Njkl sT\F^_ț~:ؼۢ=-{Ջ`)<*cS*(Wr Q1"6f;ldVWc"h8$ف#(y)r6ȓ`sD8%.o{A)ccccbMZAh瓴7AЦT2|;ЏMofʉMkܱOr"DqFw%c`ec١E!ѹ+cbd)tvXn$|2G/ uV^#KnS9j/9O8'zQ[  (GHR9bNl[Ɔ֋:*IĆKɜ΂XBق9H`"gjq6$6Ae/aĄ|o{bN;Kg9Q1GjuM)tٍjn'Z1$FMoc Ibm)e6P4ي%lW񛻨O-дZ|eDIaFMeؓ(bJFOqɰXk Ӄ썛ˌ3܉sXJ+Bl)24! -)Fȕ,oq(/5v|7"kdI~ :`ZKn1Wl D1q3}t y>辷%qi+̬E|گ c7*8e=}%rlo(*Ԛb5lԄ7#O͍Qsq7([D☮ۖ-)*7bAو Dx9'Sd6,~^( Whl?؈2w3{ ֻ[?Èjdsc—;y{Ah!bH٧cQ% 2[a ;I> ; َqb5  `*ëq!`LXA`CxUV %rXyc`ҜfHilwρZ[ȷY?a1"VՐ=f7rҢnnҮp>C63; }'ZXmLca&'vb2 D뛻u<ἧ7DhN)1t"d^Oo~ Z\myA ۝ف)\\S c!\*&6w6AȆm/l&QwCfʴo/r&RJQ111h##c=TŢO:` xb{x6iA~kC6:{#nC?LH,S#TͿd=bbbbz [e𫰄8UM1Y^Oԋyo1G xS9SH}4vY{!Q5An̷C4b͛R& yo/q11L)Kbb1QwD*s}!Ȑt(xdHнl|ު;CGc^kwo[wBb~.}nv~v=&>?r(lR}EXk}6&Qe(iO%>vbcE~qidޚ"h=!<:F~呢2 RF 9_ݗ9/ {R)J&&&6ԼO(dݐU7lM[Y6oEcL7DjYisMQABNlllvf(6.&] RD/s%7BMjM/)參{)?|D N˦Sdkfx1Ӹܦb//O ?fmF/~y{)t(6dW/#'i 'Z}ȓy';uc-+dsn RAddwT3Me8n>p`Q]& RM ;aSaI^ŵk|<3j&2mn}͟'.C]ɬg FPٜ Φ uyyADڻ`o/q)JRbbbM<ø3ݎN!V ^̔FB-I)<\ۂWjJ#gFQsn<:~6\b%N9H蕔bezV&Ն3@ab}*NZE?d7g(~'iS.W&%[II8vəa4ow?mE)DRAHРØBa -iany| 匶]]| Ivړ p4;&ERѻcݥCl1Gyȇrr$o9.On^F.QBlloT L1B֥+/Ql,+Fה8ڧ+?752첑W0or)JRLA1r%y64{{Npm%J8ma1P 6Ÿq(~Gmov*b.o; bұS=U,kx_w]LL .F x7r$Ua{Ter9'}$ii/?ЊI%ƺ' E=K:FǦXY2FHuS ì%wlnZ7^[8)@}ffhll*K /74)7)/w#[CSɊn2ۗ'fF\ao}C<9{A?b&o nCcYQH@-DK,˸hm66nc+;2ٱVl8H;NQ4(eБ3ce(R,-,7|2vG6aySR N Af"z2lqB'y2*%^BA']()JQ}qZ%';60[(I6CccbDƙS[Zg¤K~CkA6N#ر\$ai;Eyb& ]ca6nzWYёL'&DuG&M& m&tNvqk[Ow~}cQǕ /I)Y>?L]hߎAi _Md lݷ[ѽƋ۰[M~ 1?%!fM I/4 1E) ?#ߨ2&N& QN'a7J)$P{E+wGf{ uo7V7t0ŕ=,2ȓʗ]J60ǥ(lc:¼`I3LRnXg0dn Ji=! 45a',BLW/q QA *)t(At4z\:BH<c13W'd&׿_a_pkl!#5[$[BZrx"0g  }osABtdKD!!HN4lr0% t^֩w&66BYɁ'C_`qE{zqKGj 3ni I;r3L*El ڱ#Mecq%Hm +EȇwK(Y1bp/cy#Uc06%5:$j1wKo-QNG9c75 I%oՐMcc^MRͶ6Bs9q36Z̝-+` ["AVMe}F< XBiQ'B BFXeYc'el-uXMTV'N3p>]xq'fHLe4M\)[`V[6qD{ [ \/GpM,MS䚶9S}م.L R]U5E%FC&袭KZ&5V墘!H̪5PL$OыaSI~ۄ' 9FC_qembQ{F)Q FYzQE',Vd6 bPFer]jM&'pLy9vxJ¥^Xfe3[ S.nGJna;CdxCwmB[>~?[K?LD ^£=s>nsYn${ kyeႪ'j{X1-FWt,0 (Բܢ/EAe)Kj{d{Xa,,Oa,mچʯ-Df\FTzHgNKM6F}:m>V56{FعK)Gይ3;$L. Ʊq(jUl#P{ʵ8!/irLm83'j'!/d{Ya JR)JRJ&&%FB ۑd9[߸n-#v3VSF+H{s¬jװ־f:ƷpU%&Hs۳̷aHdF QCJ%"y|td{-+)JR)JR)JR( "1A= ߰$ϿYi hEE('ɒ˞!Qya|J+7,)aI 7/+cf ɆRCp:4118+ 4ʬV7ÜtH\"O&LwSȕ'4oqyx2g3a)JR)JR)JR)JR2gOq/ac6 WIl܄ݙqبJr4IלoI'ތ) ^Z'ˊL)IqYh`3O{_r=amr"SU&.^Ip/.a1cnKTQemq4lB$Ղ]DyYJR)JR)DR)JRnmEl[!xぉn.ؓn8+WD|l4R# 7e a31:$s2H?#?5͵k)uBb$ܙڒU[&7hEU{,!!8M7֔)t/R)rK#9fXς.4)JR)D̮vwmj]rm?eؖK.gbEhJUp#"SCuNosqP C1%r\w~+aXFX{͞SN sܺRR)JRjՁ)JҔ)JR 4E#oh3/Shhş{AM O+%D8wWc ty23{*Gϓ+'Rm'ŽśKpZ_N3卶hWq7teyĈdݔ)JR)JQBDR)JRwĶc{FѴѪmg-r\37YX0 `E6m&4ƈ#MUW#=Tm}qy݁r.ے)oLrCw4m+"_/Mo{n)J].R)JR)K)E !@Bk#"lԣM~Lbm{WA5c76v]I7ԝs5&'jH&X):cF睋7=˭)^Q$2bCr4]).)J/ZMOB z fi"]OA +R'airyOID.kA9랥aeǸYa]8umFxl]it.Q\<\ ISثs`Oe( bgFIp]ГIcMqpD2շM~6RV£R㉤2PA 3d&!>ƓQb.!)T'/Vy+)Kp,a)Vʴlr0rn.0NL2׿?gnZD*R|&1)pTPrXrx#pl k7z6,)bt&QAJ?(L7I4|<)Y wzv3$ ca+cmkSmޜK$4wή6yXkXk(x*&Q=1lrwC/E3)K+(lEqX{D!xVṌn39YlY+p͛|q1KܽK&ʥT+7Y3RcةٱV92Hø%;d'ViEKMm)i͡pJ,jSKc(mmҍn-,(A KEXA瓻ҞQO++ y(l͂"i'in&5gh# DmlTΉ JRn0Kܺ )JQ2kj uoFV/Vpmrd{u{Z_rJSm&7Ycl 7M`j 9YUEXFܼ&SCHB=<v(2nURGrZ XNl]ꍖ2UZ5Ym2ҷ ز(eΗB |+7=!4C~  4:qͭ}#~Sl44vǑ" C)KXs9z|Z~OmTlK)D72ͷy 径ʤxtnk79iS&tI'$nQ4F'W1RM0n=awD[qqE!AHؑ,-7UŤۭ^(L*%)Qy7t\DAޥ !q6G(ikfS` Y7JX3e҉u:ȸ̽ŇX{OCIPH.b4OL omILXP>CFe"{(*xq n>{NxJqwn=7^[m[{ƿp=^dxF7˹ݽ J3"Wej TMnAM8W[SjŔd(d&%퐖62 H{CjmgT#O`{2JI%uj%]])ciX"E/?rD|wҼjkTu8n)pQZ2yϕ'O1h4\J᪙$gL|-LBV8M)#g{`Ξh3.Rp`k1+L8ͯKs}ND3? }+ƭHAz{o>4&G lmMy}“ 6ROz"wҲDhe>5xnSUHq7rb3>$؏|\ױ]Y{||i{ .])d^%]fvE|la*6Jgd#Dڤl*V.X;DȚ)OyUGt#͛n[)K躔HKll} U]BB}M KқKw DzDF(J1>=TҔc0kOJ&Rt!2QBOI]X֐! z1 BkJ t!5Bz EnkCZ1 ==PAi4!AJQ2]B(%D>(ђ%haS)u Z&Qu66Rz.B$d B ]z.QmB4dˢ!MfE TLHBB cc(Z44M)J-ա֔0! [i ֠D=izDAzҔu. X%5 $B"!$Bllo5D&RFBO/ '[($!:Ԅ] 62'SCB%5ahaN62Lcezh&^ Q&P/ְb+D鮐Zhzn&&]W)=wzA)KҢB^RDeeOdOHM B(.7M=^)HAtD!zBz)tz ( C zR40֋U(c)JRzRz+Meֈbkt.kL1˨hBZ j:PZkI—Iu ѭ- ]!R+bzB 4Sߥ4#$$"]Z]AuBEbl= )5 Ҍ6Q zlP0$BDtzK: t7zo=*놆 BFJ_ї4) 07~=! MI͆MSiXěJ;OM?6/Q=} J6R02Bhh'ԖVHM{Me? Gy?slڑ!4#2gG/']fwߥL㪨rj'p 2"B0OZ/U'~0ELne' ue 44&A?"xҋHwsMO`JZ2N.JRd؃'l|wwߦOl2oN#.;wd$E>^ L؄1.mη >BLFxZ9'ӧ)JR4_əq'bcf._yZ `d13JVLDKn8]oM)JQΊ ddfz/_I k6U|kt\P?u0ɩB$! .^MHBiV~YEz_YM4}7sHf^oК6MaA6J66]!B5PE$FA0B(u*{ҕnQ߉~ENǢ!:Z!:aB'mZ5 (nlL#"Lc;um?Wd^?E7{lX]M"kA} !B tzBh&hh e omvyHi=**ױ36Jm7e҉41=jR2 fHBku<ѡezRѲjL&I22i/J=eE)Kcccc)JQ 5XK*+pMl\_8e= y8eߏh86y4w={:[ Gh+f>P{7df?rJ9O.WZV)FJRjAB(#hKI[!3F!4I^^ K ;ɳ_Ц61@q{yfK!"! 8+a"( coU-&L\}+fN ϗ`=597BK/shhhetu +҅WFB k1ScD'o~?gO%w M+'& AQEB!B!Bhb hh腪+g~~~ rnƥ> =HAA.BM&!B!44 TA-E҉lLqc5'r= 5$r DZM&BtBHB!B 9z s-7%riT\b(VǹM{D&I&iM&HBa n#2D/ILj#x҃cZSJΨMY_7<-؊M&cU^O-#WA0m1`B c&HToG]SY MG'$&I4h_Of; %nn fɴ= CPr֍w>zJi 'Dk:loe"bwsd!8^V L]Fc\h1+}3':gTZB='# 0CCDGS 2_ƕQ?-0-!=&Wce\eFtN=5ƆahhhnM5P6EJRz].PiM'BO9Cl ^%zBtkB 0 Ch_r0T JĿ5͌ğ@-g>ق87m8_x^57`nÅ#ȷZmɚ8Fd!1c"X]l1} j0 0!}.Vd+>Љ( HVI&Iz.灯Ol͇cutlnqSĝҧ7{k,nnn"-81:,2/ 0CD нO1pYcCќhDd Փ[> Isy3 1o>Uqi4K ™>,Eǟֿ卿,~we5Br8 ,!a ь6B,YG)4ܤX8,l7 ܱ6s/9K)T9*ra5~*n;l$IXyO< 5KuO}I$DϡPho*2D!44!G٩hFMVt %Fz4k[eTѷK qoAUj)pgdrߟkqB'ۅѝ7gCݓFeyϻ~{ ~oF^i:^R`ZDѡ V_Lw#ҰAh12!XM)RkDmU uז˿o?ï۶<O0 Xݏ/e "tlٹ_aV$+W{™./VN$[ڎLb$ )es_0K yc/ qF{6!DdDFftDa}@Є!41kr4F B5܂#衎I Do)&/ȕ]K8g697m?L|-bIkk/o.?_{7cmo综 dM.'=$< OOI`ϸ3a?LLLLzMtLB&WKJR꺩u1Cl()zx.F} uҔ.F=gCccz4~PkBb H42)J bJRk-_CcelllL:)t҈1^]:]MlC 0؝TҬDLBp&BJQe$-CZR! 47F&TA,!z9kD(ؒ”cccccz>OU!!"QiH0ֈAECZ!B HB05wZ667Bz$B "1^&&NbBiTk8 %?Bt_EF&}CRi d(&$)F ZM !-X._0 *{/lt7^ 67-]RBҌAL &'a3q4 Ȭf]O5fK1D(aT ) V45ҘkCZM&&Qte.oUhhh$$$M)u0Ɔ"НEh/LLLe)KZ!"hQiJR)DM 0 QFMSBbѡtBZ D .4LR2c)F6RbBZ!MhbBFZELM2Y4PjF&"kH41MLROFA!֐hhiB Ѓ*% 4l'!JRĴ0a0cZѢhnОB41эkRшA螅BB n46&LA   0z&A kN- և l RP SЖ]h@'Њ} И1Vѡ jI&074Ьl6K-B] 5Dm&L]" haVZ ђ-AM"> L k&!ÍkE= '!z zH-F$!B =F /FB&F7,PD1- ROF1$)QZD% i -T1д֛,EifDI҅B /U]%ԢB45HHZ1& ,AQCbƆ86V&(lW5 -!P 3d0PEti4M V=!$MIV6 n 2dϥaֈBH0H SKA1kX;A*ѭ,2֩/K[Vѽ ZAݢt05c&B(]Z""E)I(c A ѽFZM2'br>rbbcCBbeАZ J ZKO2 9ѱD4$T$tm N45Q51 .XkAz+ȑ$ ZR遱8#ؑX5Г2COEj"} qh3_K"(h}J`#uY"] WBh4z !!K~bFBj1ZCKD0T{ +ڣ=1=Te2Q2?kh!tn RIQDLI224&&1 1̉=/ҽ^Y д)Jpߡ*70K Ʈ׾sTlMD_Qt'.J 5/T}.-k&ƨOh lգBDMS]fM쁑^d?a'#Q4}(u~Hh u! r]ȞO7p{DUsq࿗@qeHJ(B= RRPL.R+'4QQݭWҥABBiKBh!4R! .RJQ>)~^ѓYсJRB!4dB)JR3W'֛[t޶AaBtB(rhbMgY^/CC J^)ziJRJQ11:"&Y^z1QD)K RR?RRҥ)J])5kR()JRR)JR)uIB߁,V- Ke]/I 4q\o"EZ_:%*oi\J4-E֔ҮJR)KB J'^^AM!BjƅF1Fi[*b>-c=Na2ON !BuB2J^ѽWLu(o/g^ܽ{?r~ђ Of9oちHZB!4 Є!= !:KА\'Н+3lϒh&bqA"`!A!>.6Ik=Fjwk>~ۃ5s]M,}$H{#hXQ #a财EOC"w}ג7)K;ܗ%K߷%R;o{0Mbo}ٞމ ]"`' cCZ6.ABxƭ^ ^L~צk/9;Z'r6m4z3"Ɔ1ZRPF!zh"d5~}(65H{Z*oaQɽ}}xce"_d0`i?VX ڤRcwrý~V%BiU"-6~I[2EF\,qwޛ q&[m4$sn[nѸ1_`M=u ןGlY{ytA=&LA RJj*V+&nڿaIQK+o=gUT/)^nraiebl~Gy~Oy~Oy~Gy|?^o?;^~OR7j?|?iy~Gy~Gy~Gy~Gy~Gy~Gy~Gy>~OOddy~Gy~G>~OOOgl-117-1.3.2/doc/src/installation.tex0000644000175000017500000001377010145416156016463 0ustar cedriccedric\chapter{GL-117 Installation} \label{chap:installation} This chapter describes the requirements of \emph{GL-117} and its installation concerning esp. the libraries required to compile and execute the game. \section{Requirements} \label{sec:requirements} \emph{GL-117} requires Linux/Unix or MSWindows as operating system as well as properly installed versions of the following libraries: \begin{itemize} \item{OpenGL or MesaGL: graphics library, 3D engine} \item{GLU or MesaGLU: utilities for GL} \item{GLUT or MesaGLUT: a toolkit that provides keyboard and mouse support} \item{SDL (optional): the Direct Media Layer library has similar features of GLUT plus joystick support and basic sound processing} \item{SDL\_mixer (optional): a library that provides advanced multichannel sound support and music} \end{itemize} Installation of \texttt{SDL} and \texttt{SDL\_mixer} is optional, however strongly recommended. \section{Downloading GL-117} \label{sec:downloading_gl117} The latest \emph{GL-117} release is currently available for download at \texttt{http://www.heptargon.de} in \texttt{.tar.gz} or \texttt{.zip} format. Try to get a suitable binary package for your system, so you needn't recompile the game. Some Linux distributions (Debian, PLD) already include the latest game releases and provide an update mechanism to download and install the game via internet. Using MSWindows there is already a prebuilt executable. Now unpack the archive file with your favourite tool. For MSWindows I can recommend \texttt{7-zip}, if you are searching for free software that can handle multiple formats. To extract the files on command line please look at the file suffix: \begin{verbatim} unzip gl-117-x.y.z-src.zip tar zxvf gl-117-x.y.z-src.tar.gz tar jxvf gl-117-x.y.z-src.tar.bz2 \end{verbatim} with \texttt{x.y.z} meaning the \emph{GL-117} version number. For last minute updates and release-specific building and install instructions, make sure to have a look at the \texttt{README} and \texttt{INSTALL} files. \section{Linux/Unix installation} \label{sec:linux_installation} If you got a binary package, you will only need the libraries \texttt{GL, GLU, GLUT} and \texttt{SDL, SDL\_mixer} as described above and install them, e.g. for \texttt{rpm} files enter: \begin{verbatim} rpm -i SDL-*.rpm rpm -i gl-117-*.rpm \end{verbatim} In order to \textit{compile} \emph{GL-117} you will also have to install the development versions \texttt{-devel} of the libraries above (except \texttt{SDL\_mixer}). To compile \emph{GL-117} (as \textit{root}) do the following steps in the \texttt{gl-117-x.y.z-src} directory: \begin{verbatim} ./configure make \end{verbatim} The \texttt{configure} script will check for the required libraries and will output a \texttt{Makefile}, which can be invoked using the \texttt{make} command. After compiling \emph{GL-117} successfully, you will find a binary called \texttt{gl-117} in the \texttt{src} directory.\\ To really \textit{install} \emph{GL-117} please use: \begin{verbatim} make install \end{verbatim} This will copy the binary to your binary directory (e.g. \texttt{/usr/local/bin}) and the rest of data files to your data directory (e.g. \texttt{/usr/local/share}). Any files that require output permissions will be stored in the user's home directory, exactly \texttt{\$HOME/.gl-117}.\\ This step will require write permissions in the binary and data directories. However, without \textit{root} permissions you may customize these directories using for example \begin{verbatim} ./configure --prefix='/home/tom/gl-117' make make install \end{verbatim} If you encounter any problems while building or executing the game, please read the \texttt{FAQ} file or write a mail to \texttt{tom.drexl@gmx.de}. \section{MSWindows installation} \label{sec:windows_installation} First, you might have to install \texttt{GL, GLU, GLUT} and \texttt{SDL, SDL\_mixer}. Look into your system directory, that is generally \begin{verbatim} \WINDOWS\SYSTEM for Windows9x/ME \WINDOWS\SYSTEM32 for WindowsNT/2000/XP \end{verbatim} You will need the files \texttt{opengl32.dll, glu32.dll, glut32.dll, sdl.dll, sdl\_mixer.dll} there. If one is missing, please search the internet and move the file there. That's it. Execute the binary \texttt{gl-117.exe} stored in a directory with the same name. If you had already an earlier version of \emph{GL-117} you might want to use your old pilots with the new version of the game. Therefore copy the old \texttt{saves} directory to the new version. This game is *NOT* meant to be a Windows game! Do not complain if there is no proper installer available! Do not complain, if you are not able to unpack and install the game! There are plenty other and better commercial action games. \section{Running GL-117} \label{sec:running_gl117} At startup, \emph{GL-117} tries to read the files \texttt{conf} and \texttt{conf.interface} from the user's home directory (Linux/Unix) or the \texttt{saves} directory (MSWindows). If there are none, the game will try out some screen settings and store the files. \begin{verbatim} Linux/Unix $HOME/.gl-117/conf $HOME/.gl-117/conf.interface MSWindows GL-117-INSTALLDIR/saves/conf GL-117-INSTALLDIR/saves/conf.interface \end{verbatim} You may edit these file using your favourite text editor and adjust the settings to your system. Since version \textit{1.1}, \emph{GL-117} provides a full menu based configuration of these files. If you lack a hardware accelerated video card, please turn down the quality to 0 or 1. Further acceleration can be achieved negligating fullscreen mode and choosing a lower resolution.\\ Just delete the files \texttt{conf} and/or \texttt{conf.interface} if you want to reset to the initial settings. Typical performance values: AMD K2 500 AGP1x TNT, quality=0, view=50: FPS$>$30\\ Athlon 1400 GeForce2, quality=3, view=70: FPS$>$30\\ P4 2.4GHz GeForce4, quality=4, view=110: FPS$>$30 gl-117-1.3.2/doc/src/missile_agm.jpg0000644000175000017500000002142410145416156016226 0ustar cedriccedricJFIFddDuckyP&Adobed V#      M P1`! #6 !1AQ Paq"2B#RbS`r43$DTP! p1a!1APQaq` 9!, c,5eW!O٥ S癩P ,.'O$g^reQ9Ha$zd@,UsјIG@.G* \3IB֝Eo8yɢT=ZS8%( ofLFiYF(gS-0\ `eO!2H`K4z4'&3<70d)"JQ[sr fiC@M&qle7 T\3̐Ysf9ENDMqJ 4$g'`9u}9gH% w)/ D\bթtg̯-{ E#mwMsel+oPҋxM] 9 $t~ 9u&ոvg@眻ggN@?N`Gд8ì\" ͛w qy ܲp~X%v N4rV [m郌oJ>˜-۳u=eT%h{"˕ t{. hC+t!W%pz4k4HbU|:r |nA=eۡ X#49Cmd8j*n8JGTpIJc_%xT%8;v5vSn%`%JB6l!hqqafSp%`>E>ƕUm_4-":V}okp nK, XJ2s4&1K|m."umȪJ6|e8FCmGѢ֞΂Cn%@ DQ|;&8)bgQ XJ(|Pj"\#zKӈs|Hbmo+BT"jKvnQ8ۍcY6;<tHc-dkJdIUҽ({]T掲.{Z(v>3g.qUuJ6bEd}_ "4yl}YI,Yg9mo^&XyԢO뾁J5.;׎6,˯2\)d`0e`{l6̃j>$F]~/y҃W& =vì\#fDd}wT>߯ TA/#d%uĥfw?9>P&R-0?tpaD"? ەik:&-8c4?Goҷ*{f}̍7Ǵ A]4ޖBзblUSˊ7h즪hҨO 2X襉Ҏk,ݿpsb"m4x@#=,۫N5P:t5",pP ѡ (H )g#-L@ /mdzrl;LPGtl–؎l_m[2X襉Ҏk,ݿpsb"m4x@'C\~N٩|,dn[o.dD5`#'5ë& ,N;l,7+$n9iPAsQBڊj'ggmevzsͅ1jgN)]58?2>wȳmdJiLP|RKd KK赉z9Q6d=+CZs\H.p]KS#Cʉ|n%Η&[lݿpsuSxAd=+CZsiSN\G sPWdFN?Fw QwRhxJYiwfj"W@U 09QڊjV̒s`s^tn9ŠZj*OUN3Br1|wvAk&اѸG)A#1BZr_PqFSSOWuT'aBZnv<;ȿ'RN۝_EH^-oIkEh7Hn!BVko2?q-1u yAtY_C6v:&%t{!0?!$Ќ:] m-AaaSH3%A$,F980-/hD3O'i34_895fʶPao`mpF*ДJ=)/hD3O2$TBf}a78mMn o;$oOnOwNSm WDI0>d^  b8P+&DI 'n1)*"+] HHGuP,Yq䲧\/p{yrl3(Xn\3L*+R0ЎR?R&Z]"@!L#  K| F< t%4MU+uB6`,J3_gݢF)ݓqs铑8SQF FƛՇ.2$#DY"#"RB(1ysBC5`JZsl >D4.4Fg)T(aLv"r!I.y}!ĸJ F3mINg>aDI!) eV4 4LSe9Zb" R$ Nl:N iN%a`IAlDFDQ…aDI<QwLC$<!3e%5kiEE|JF:'jHLE@Ĕ>l_{5Ein$KZ\V "pb.l2%ɣ jkli 6Y"X"b6gld$2dx/>Qh2"&J&LtD =u# bTL2@9RBI'b3;  !`? H$bD\6JʅԖ!-MP:ы+ Pl6ŲEɓ]gvdvjB&FvkTT*9hDp9zH-Y<FDuQcRZ&^{?&;Y@K'`z9 $ga DM &D08YQ-Y~slB>i_TSY1! ~02w%O*m26b ՖFz% ;Sam†HCo Ėg9"2DHT@`JмLZEL#J!hʯid!X(>n 1<ECjA:6H$,lP\H-6& %h7fTڮO&Gxc̈%<9ez ì]fjn`AI<`sLDlN=菮{S ?bOIq' [0#N1ykL=c@H/pĂ&g21e%SuN2֝Er'}5Jn&PUK3[r1!w-<dw!jQbH` HП?oDxb's dz2*^Ooo?W%mq/oo=pI{@Êe}xg{e_214}_aH{~2qR}Gc; g6<_7Mt`q;*?dU-4!6t,;w>uˁpu |~D ww%IPke8;wE)#*OGZ8߇aQ'IlFU=$7]?RϢRGדsdiwN3B?G; Oο8GPt ᳾WT-Ɵ1Ǜgl-117-1.3.2/doc/src/missile_df.jpg0000644000175000017500000002263110145416156016054 0ustar cedriccedricJFIFddDuckyP&Adobed %       V P 0@`!1 !1APQ"2 0aqB𑡱R#3bC@`S$s%P! 0`!1APQaq ѡ`0@ ,Xs…y^TsD#TǏ91)x?ry4X_f q#xb&IG:@ SXi͑'IfCejJrMڛi0\Cp\G6ȚL$|[өԜm IJQK"Yc(J kMM'UoOߞ+ 4_&m:Vݦ-<yڅW{pץ徸+-_ofupuޙ-,5mohSqs׿ެM K;r n6}QGm| Mya\GEcRZx- PJ+蔶&EE̵<tweCkNWC+%%mVP#?J χd4Ig=k^k0Ҫ\JJkTCGERAT @J@t:-'!P%>< DUXŵ^FeN!P%>aNZW碑<'*8 @C?Sa CuZ8ˈp%@BM:umt8ZVj,!P#|{?m[TºC F  CmzFBE:uw.uHֈU|8FB<lcYZfzKJ p%`> m^} Up-i񓳡,0Fǀd)tnT_W]78o7p#cPHNKhEF)1WC*vR unBYsдPgg'!F{5mN.VtfD`0GGwcMQ=iYL*Q#`ܖuΊ掲.gB0F#fU[Uzo[ANF>AF/xv[yΪ.6''KBli۵>zZl}U3,k,#[@ƍ1YdP\=s",tL:=Byԇ:E!x Fe>.}!s?/h}7h䏪0?tH0k!PJI<ώ }N36^z4d~W$%is#(|_e#RHLL##I>LL>*?Iq5/?Iz'bp 졒.z Z*:3?M̬|vMu#CJ*kzi<$:9YN :%C[`CS(ըOVtyevYX13I$MĕGQŭ,ؓ:>._ꕦt-:HMH./&#OʳR%8SZn č5lR^^t%XPȦqВ]J jFomiJ9gם>]/&;]98i[_8et2G@776٭fheՁ˘|&w;XP fl(;JU <)ѣ֪Iu}<{%?0<Psj91l[7UiurZ%Nx Sp- = RN\S MdVERy.,K#Jr=ʑV2^mCJF sӏEݡyqTm/x3Xͣ]b8$&lkWVeݗ^YSF9Mm["Ŋ6Ä7n,b-ctWƟA4>`\mCPyj m(m%Z/rB3CҽPGs\2u45 tK\mŦ^:mG^'̥Յ,Rms$đ# A)M)yD~kcՉ)bbF⌬0 4wdE :q>{)$_܎ye: 2a 򮣦 Ck[GQOCKJcszŝ=9ևaX !TbRh;_wǠĆLUyGHKPށ]-0<.>{g!럯I#GSPAȃ/*6VS>;`krߟaǨc,xO0 Ok)kW֧h<fע4DQБZ0pc[}ܱHD+zyuYB6XS QȼK]E +\ZT'GS½HZߧy1#&}4kPx~&e:)TRw/unυ%f\W=8kyRx_,lM06{[QD2Џgy |fdN?R {(3£U@?Ĵg qfOz+^5ZKIEuIA*̭N/*6VS'oƾ%Խ@yucq̈́hTs˃gz#V#J\'3޺t 5djimFiuSyRk;Zݴr*CX6 hAAn`e hQA[˚:; uۆJ;;2G1B~M0y8mHvoV7^mSYB Xo#^lit)_!t!>a6Ě(KhEi}#,pKHMU#+3mڙ^'˻Y^Vh[0~y0~#Iݜ٭8=Mk,IAM1d=|86jb-,H̠aL{C 1i2GE܋:i0%)Biyk/VE%M:,kZn6Z\/£1Q0^mnkh}ԵS ?gk/'604e½sh(]evze.PȃMXDВ Z(ژKe81HvЩWWaJeYfXIp9@h ']_>nBOLy& ǣ'T<~CK"% h40ە--6xhJh^ "i <ɂ#Hª waT !SG3.5ߢ3{tK6M`z'YiZz3A[A\ LO[2XؘJE !ZG R<T YZt}lP؆fp(y~˯<݀wEօS([FraM)9LЀ\K~Vވ=hZ>|ǐb f:r`10D]5Uk]+x~1 lË&^SE T) O[2XؘJES+hߴwADHT$,AnJav2<ă7gĄfK>"O=zX6dD24ЛMaPT;=%Wq%F*)!Oɂ#bt.RƮSǺ}R "" ""Ģ$(`Zе.ߞCA0e`T´~Au+]49:6S?cޯDEHEd/'Df  @A@ $I$ @ A@ $@ H$$A$ $H $I H A$HpI{%`D88$t ??YR H|#gIa0q$ZV禢ڋz?:dSV^ci@ @@z2އ\<ڜ w1$ZFΈ]P v3C1.^r Ȕ DFFȴ.iQimEl9KKeїd7a6 ˢ.6ӢyDin HH' I kR+[Sc(_& Uc#I9(?=}MY5 aBE(`DڿP= y36 m*d.N8hAζ7)=L՝lieE}p˧q*A 2X診q\k#EPv},ja*<(v.Um7-fpMCc)w_/?)%PGы(SZ HC J|-Z C[J "URy3Oq2F\C0G$AGUB' Pd?qY3O+NO%. h X>GZ2n_T%NU"P%.CNfBUL %)hS53F`s*MT lrD]ٿ5ySjAЭp$n*8Q,^t|[%S@#\ /O$lB^{?lIpK-GAx8{ jeLH"f34 ޘ@(Z)1.64dU|AaJAXmS.igF|*V%OySjAЀ؂¼If1%%3E3 01۩w,z9W C]{|(TZ\Zљ3^`>`%!om ER5?Bp diDkTpQ>[19e'U7jyYư T d.N ~[C"C35 f@pYoZPZq'@: Yu9}3h@8 ׌Ly5}-T UHʐRJަB+l0[AV/My5̴(.8$]q#H$&΂ ",ۋXe2Q(N@,y瀔fxs-Mw(d~NI=8I|#LSE5-i@G5k o&մZd ,"FBt&d^O,C!W8`8 ׌Lg>̜BSg*.ߛ},\H`Cl QeǛ DF8[.z Z]ј"z8_Et${ Z q?YYx#:~IIa =+۱egH8#gBjW *&[F&I"#.$4>ލLcLoCu/<R><^fC 7*ޘR_g/a [NY&YAI5.9մe!]QfoC3XHyUSH""5LǙBdQ%p=z C?d|7@u:⮈.M+{o@[?D U0TYZ2a PBԚR$H}iXGN46 ͼ~іg#kn2S uˣZ???-Q'~C~^ ~GF7ϷF 2{kYm_'rĉ$OK{"YЏ,^:H"DBRLɓq"D#Pd?;EtIF_Z bS/\_d&D!z@ g^л2λ~|?"/%5o'3kPNF0rvr7*( }*o-}:&烷Ǿ0R б~>HBz Ą%dIژG@DD*=g?a1&՞VoSC|=},DI)jak歃*lу1!G)m֬`c@xfKG髷ٛU:EDi0*l}قR»~* Vw>ggl-117-1.3.2/doc/src/missile_ff.jpg0000644000175000017500000002035110145416156016053 0ustar cedriccedricJFIFddDuckyP&Adobed O       6 P@!1`$ !1APQaq"2B# Rb@C$r񒢲3sTEP!1"!1PAQaq@ sNu>jnTd9q\H` u96ii}K 3͑ "G0Rc6h'G cЎ$ܙ%:` a_ G͡?;h <;1dO`8QJHOrv[<xC,%68'3םPe; +SIA1Yrl~NZ,e6f2"Q3ns,dLЛ(-Aր 2ߙ!` 30T##`b`E>j$2N]E[$b:}4% +\c4" 2 0i9Il\`sSYǐϜ 83$UΎR4ܿ8%Фtx~IYfCvHճ\WRFzDW(m ,mVr&4M<P#Ք8+zv3sY{1ӹhZGiWzve_!}.&E!F8q#O$~my֐\mQ:%8?b$5Ҩ1iBc8;vJۜ3`m<۝>Í^mzL+ī0da*)=<}-7٪EK5{ PR{r蝭kbުvrkOV ';O{ lvLhsR|䠅=u/bSZ(%c@IV{]!=5q䒂V;%g_׾DZ.bҤǒJX#)-aV QC}VB aIN+'S[F/U5vi4 >IchͶVҬy dhpy(K%[V[,K`O4ۣB$Uc]Emvym4e FŽm EK C|e> Ň&,i>ei>-/YSe^aIUp VH}{kOk򷆯W]!Z%%IDJ,˃#7(%dc)TF;<נT:q.>gGŸ䏅?U&MQN D`+??ۛ4Y|L<"t=̬ ꮇ@c\)N6P/l9Tg7aƈqc3ϻkkfa*榄2=aoQQ$^bp/ذۂxӵxbQiJ߰oXc '0̪Ga\%?0f5LO@i\76o ֓aÉk쿳)QdE+$l*0F̹?[$]ڱЊRƞ-4x~]x?\vtz[qж pu4}GAM̹ 7Q~VW˕|f7E1ח^ḓFŒ0 k{njD~Q/۠幄 ^oAûKd-›Ke{Asi&}o(#\*ugW*dX2GA0+BLka6ØGÚ'],ZR=m8 ;VN]}{bqjeb Ơ&xW#zi-)q\2u45c}bNQ#c-zq>t%du4 ;5<LZbcF%R7~~8G7C6\թ_RVHUYNvrx'z|c̸Y%hEiB7žGj4ReJoYsYDb̬[N<ϐۈ3bZ+Qvo ~/q-2֒ Zx3!+~Krk?.Ub^҆ rt mc&9PIfC:uo{nt\ZHA5jPve8^Fpwv o{mewһ2fJPU!D`vď G[zKa˯G*bVTɲøtvBC],1n'-O |1۶vg{ͻ=ǂO߷*qMn/[f1 0;v4ݵcn8{cW,Џmyoݴ[́Ѩj*{pe2r% ڤGikMϙerÐR£1?1Y.Qpj`ʣHwa=-Wٰt֌+C]sKZg#-0Oi߷l,HJP朹c3i*Q7e VӅx6ԎohC`A6ZFǗ5n.-2{z:QRhUpTmilK[ԚƖuE[WjUU= WE?!ui{oՓQ8_M䀄A4$Zr_( J3ZTשq SdOUW!n 5j'as3J:U}Ta $`T[4c !q+C#ӓIKcmUa`IA†B1pAxfl,m EMle<tj F6;@6YH%$#R3  ta=l2_O&s PRDDr} 0L=Ө,IK /͏T/6LKAvn|)BdYarH.Ȓ*a$8[;0<%XGH.LJ;A*,A ?8 c6T{C3#bdWp)~xڵgOvl`pG$JtȐ f/=6xӖdr"ZAq] <θ08xfL$)%S:ͬyU2ws%ib ܘ ^FIh 7In$ NJH4M9:ʆZ6L+4߇R(lf.̐= azIJӾOE3?.YohcJS+e]<<K*qW-@:YK9wD@?^r M̑ĽTXDyF5ߠp sEN"9 6f`{6%nm1x+Y~Q=#QB Phq Tc )%(;PAa 33WY=2[!UQQ@MOjiRJ *ɜ\͉b ɝT@L Y'h@Q)bU*Db9piÆ 1y< k Miw TM|XM$ R?!ADPh:??mn=^>GLbv+-:;VFTUd\6ߟXȸ}x?!A_A<$>p'ӣI铆Cg+   $A $ @ A I I AI AA ,``i@?~*=8W:ʆw z%Ǟ]X=!@8ӈ1} MZq{awD$0~Mr3]yhdᆵT+ڪg3k)IH8Ӑh#G")4w?adq| %#7JqE{2gnD+ڪo3vSrA-BXYSϏq "gU3 eF\5a"isv,XXQ'1 u5eg\Ò8wgqĭy6ɭYzaf,1$}0tQ.p \[.|R[fXiǃ"̕eL1`\Zr '!$Gɛ5@߃#/Sh[b^,GNLPJ Q,.JpF Sk؁nM|$6#`C&5q L\ @2d(`} f1?{{+*>Z dc'dqfgq͵.7B7**KO_ 1r*Nk|'ZvJBQǻ"=dK[T)IΙLL v+&Qɯ=6Cg` >&Xc \:HK!AYd0Q G |8+sLp4tʓ Rж'?ACN_2fֽ>``+^Ӿ8ZIwni'Y4t誛hn6~'Yߛv?AE 㵄S$&oX#'C'DdClsY_|6&I$kgl-117-1.3.2/doc/src/missile_ir.jpg0000644000175000017500000002070510145416156016075 0ustar cedriccedricJFIFddDuckyP&Adobed P!       < P1`!@#2 !1APQ"aq2Bb #$RCc`r3STP`!Aa"!1PAQaq` LX|9ؒHs2%/ ⴜ sR>S<$4^>Q@$ g5x¸ ͈=7 " 2l $4NX d:NZ(5҃|m=(l-4FlG[ MBlǸd @H3$tى# Tf *9p#fp~Sugi"XyK.V8Yww)"<89sK[qcK͓nwnU irۖ|[ev6l6lWw.4C{Hܴ"d3A$Wf> LHEqɇ+>QsQ:6DvJJ%{{ NU|SH [EMl"č>6˧J$fDeUϋH [Wf%$SeUcF‽*d;1af aY5ijc)+I7x&K g9cw w޼Z[?i??> M2+IY"ǣ>?]]0P}\an}-ta;ڟP)ʊ3@:R a"@BE5! F{-+NFٓv# xavojgíjDn(L[hV.0F;Ŝ{HXub(`$|=S/OyJgqZ![_xe"o/*T1;- S iW|?IĘFWS"#Oy7wT&.)Tΐ0RIwΥ>SÞiQU5[K}.E;9u7cIXS%!bL#߾27<+ ]BWpB"$E'+ĺR(h!HZdAl(5T>RGzw?MQo7IVJǶPWӂq?`Qj9ݣD3SCq|EӔk6 mĘ  sy\ҡBZ}oKUi*u?B1v@ Qh6p=Wcfi0n iT,FE';*L}_Z; tY@USò"rŨsPʶʄ`GKaIV_}9]iXЅ98NO^]gz[_-RqJ gֳ7) pFKI߸ӨK8PTx"Դ~cHTs)NsKu4_di y Ԑ8Wp| Fo) QC搔g>&DAY4ZJ }Aq9aNG9OFb⪺Etߙ;~N*e䩷[%.6%BD}kҧ/[G !d8Íq& qaCO]1rj<*n>(kJbeu^=ۉ"yRz81UTxÊ):qJsb )ܥ}>""DRqKt =R0;eHT4ӹ7Ddp?ajyJ8WF=6sOҡZpZ 7[F[ʤ ANܷcR`~&\G~W NP7*+GV|m.&S#deհ#PBJh7PƢ%!50|_љą)$lj'*lM]LOb00")8'a5?>U-7$p4xpɛ6KTlreeN.8sK{;u ިed g%[)~ucc]BM:^]g:b)@|,ZZu6L .է-Si:,B&p[N.4J\mB)RMsШVKg<%"1|$ä" 6Ol)0ղtn&vq5G-Q/* 7]v[z}JꩯCFOw\7vZ"NӱDŋ̎7uK}Yߨaח"`6 yG,Er!G}O[ Wu)1dFWXQ9O~ݾDnO=[ǼN8Íq& qaAx6 @EKYKM1ߙG"9Y 8FnRpWz%߽8Fm\KA̕%Sx; JR3JWimI#3Rz_tLWmM**7 :{[$L"dž|pNvHtU&+Zע$쀹6M6O4ϤmԤ)W莊ze)\K9r2L UM8ZRNp݄"xU1UVSUN9<*")TW%rI3 ޘYTz#u ۂ)̓rEVn.9@Fx(&"6.%]H[NJ=Ju~I&;)^=\Lo5%()حM.0E#! X &Բ!C 18Y)<$4 fR=ǩvn|) _8A&ie4؍#cMsNmva8!c`{lԑƩ,H‡ ,D,a0%ŜʥH!.@scTWlRײ }"ܣ`А TB)T2, ]=W"R4տP5n|,d`6.Փ; $%pOCbLĒTV"B94^ԎædAؠT8F`O*MR%Ip(6bG1NIvzVSH"47dE(nSoduF:ӂDr]0LkXkRHfd!$l QXb B ٙ/8)C2M$Kk@6Y"X"atT !놈;1PCxJzҦiTB)xWD$pDmOxj=x~_]l,l N:&#0Tz~ӾoJp0FDh%[0Arm%mL\FKџTli1$Ʃ5S-m0HHx#!\5}74yakzXXpVCİZx:WBt Y{ V2'@6Y"X"aT*A Dr1iAyl$T'Y'%'t0`I5:'TrNY%,˔APyB$m*TA_PuE.i`Pqȃ odNi>ÕA4םM-x})7~asٚ B=x?!C!>4\J (a¤:ŐۈG?!C.!g8O gW߿D?? +E&9_wʜ{)ᐕ-Sy5z? A $I @@$  @H$ $$ @IIA@ I $j?q 2t8U``4883dKOT'X%+J|Hɢ%p瑐wA`KSQ8a&^)$XRQ9 %H2A))#>I,*o "Rb %$ ?_IDў2+hР (=x~l )H&"Def! W $RE)qԘa>r;k~g 7G&CPJީ*27b2"u* #2K /S ,GXXT0B2h@ G`G;xȡV DLLaer\%@'0[Be-dn`B;(Q2K) ,E)0ȓx,%PP#*\XG6N.`UW( P2-!8fӐLA$A仦L ~%xFY#`4 Xs 3=!Dr^5W}p g@l3`C8):>ZrX`Y!ӊ!E$26rx$6n7G!x8fLv8A`K$#T `]4![@= Ìhjqe|qinK2v O&B&0iSY%%eg\Ówgpzæ| *R*%|"?¬DŽn=KYÖ(#У4XIcTD9w{DHp 1 XQ"6#A[BC 6K82{`@|`+׌p, q`eBHrx$* UW( P2+`-ga,2'5^P1BDp sD$ɽ k#p$rzb.dQ0NzqC8"4Qh)6gp֨<;8!@VdBJUL@BׄxeكǠb&)O#\F='?C/Xܟ&ǤMLa8[CkȌ,^\mF> OVpQa>1+L߯px=38=?xDm=>=?xPhBl1z>OF^Zty>0]u@P10;mZ#!wB=<}gl-117-1.3.2/doc/src/roll.jpg0000644000175000017500000006672010145416156014715 0ustar cedriccedricJFIFHH Photoshop 3.08BIMGG8BIM x8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM pVPp JFIFHHAdobed            Vp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?%D:S*%A"T +8 XP.fYTDbϤߣwѨTsa@F3ۿZu7cg|~-M)&)M)!ĮV!|t :O~Mh\hA/ލj<p¯ZysLo!20'u.g]$UlF;ٻ笘mYjXsm3#a;{3m` ZϵI,ȱIO6&44ǎ0>w$$۪XSl*jA|-*^1@=1[X!Gb0e)O0Px1cSܖ<d7cğVi?Yw޳@RIѵ֞ 2yj<^(/{(FVvvi.ݻ`Vv'NWWsZc~5p ;Vps(`f@% cqw4_ K#.cwdeH?5*EmeZ>3ks=V`ANJm vw+DcDrdFs^̆~΍\}>lpt  A{Hw?Z_Jg4nƝGaDTtc{ #K@]l Kֻk\C q;9'n9-V˽5cKA3;}GG:A(u5:ZO#c%G[1@CGgK o๻tԨcǐ1o^`.$C]7y=7*9y[Ǣ׵ nFMuiğInƏ&Uv95`6~XH3Z,..e2+nA'ywÊ8voUt [0?\kgW0{;|7pxFVvK=%pu6%35J7.:˛'wDyqDݎ%K3)ͭ4kt$Ԩ%v薰]bD-/o'lԗ=msK7}iA܀X~t9K 2ײ4nSjZ-6S*tC6NV+Z"NE5-#dYHؐyVShAh֖OU<)1g&zj[ w4aSCfh|w= 2JRAЄfv\Ie4˫S\NUcu=%/y8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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'Ij4Vx&IlAe@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///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed            ~" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? 2JGJIRSII$)HTRL'))IJJI$IM'$!RSII2*TRL'1'$)R|SIN'4%%*ObOIR>)HTI$R|R$I%/%)>)I+JOdR'2I!y>)ILJ^OR|S$W┟$'2I)y>)ILJ^OR|S$┟$'2I*┟$ǹcav<@GxY[n5\ḟʎV9C8@ܑHGQ3K}M~}?T}?~쁞kZ K-{\r\{oU<  a#8Nj.,r=8$yY < JxA}OvFFB"Bs̜1K 2{QA@i%O\~)|I?mvqx$6Y_ܶl_ qqqtYlm"7||Vv,$`yC) u()$OkҒLJLJ$J'LJ$I*I$RI$I$I$I)J"9`2F'}JfNK/HwsgUя&AZ1FmN|+o`qWC쬺ƆL}FnUqΦ\]$46bުLgeL ɝkoJýMyH YOkZ%v^E՞ILyyI;<ґ2*RI&IKI$$I$)I&I)2IR'L$R$J&I$K&NR1NI)E8=EĖ y8 2ٱďk]h <<`@%?vG'Ðˏ2pދ_Hb8l>g0Oo/iT瞙x?D=~?b7kut;W|{j.bu%^q3s[ˎ` BRGjtOoſibՊ+.;wGoj: 1F2_|Sssc >F*I$*RI$I$J$I)I$J$I*I$RI$I$(\.To\`4sν^sXq/Z/lXc˔c~I&4%^S,ܹe9\2=a`U K'v5XuU.'sK4~BL7RIln]RqeI9%V6Ƴ?3,c~;Kz.<$ۻi~T}=ߴKq?{$ }ӵֱ.оx:=.(\7_wcn1Mʶ&}Cv݇+ ^RJ*RI$$$*IR$$)$ҔRI)ITdҔRbd:Xc02 DNjWL]qݻ2>-3c~!u8G3%.fc?:E #B/&r2 *#z>(#`s1">szǗ/))0$JLҝ7 Es$ʧ,?-$i\o?R?ژ?IG RN2jHH$\|oR+FUE#Gs4RzK٭"OJ\yĿ/}9χ~:I,7/NήvS{r_ybXQFy <\#)c`yp~? Q'is cHLo}H`-23s81a ssGfF%:sR~msρ(ֈz&~*O}a+9{4H1eQVtսº5iUx?$9NFr;G_jdYJI$RI$T )xHT#[7 fFχAJ5 uUltiVuT4e%`bG~[&jϑ.w6LS}`|?],119~qŒ?; '(LÅiw+(dz j\sϷo\2/cg"9?Lݗ~Sܡ 2HӨQ,>)QRFCp\FXa0a8e.Uy,ߦ6Z-gob0$S 7MQa0 ڗI2I&I2+jSre1r5,@x>p CSXLsv?5\õ0;sL:LEFXw&4-$g>_.a_۬#ܒݷU$/â??HRAz@ )(^|<`T v1<;0~!a1flnSx-e,pwsu`iwe)Yu\7&6nJde~gJil`V#{mi5إjfaxJ%YK2M(ris4rP:$HY:9cKaYuٶ;)IǿEγ:~\cXƆ@ r>r.?fNx>\я] qǕ2b7.Y噞I[KLQX&=sS"JgQeR0m:ȵ1FLI3{mK]ʚC`h26`¤I{*$b|rXel_Tm q?˜F~B$kܣ@Ǚ?I7#墐&1,#JibH)2VtLWV,aqeycUh Ϊe5^C;[Ç*nXoßD`<h?n[u cT^Oy#b<'q壧'V<˓JF'e(O` pO_A1"d6ъ&cmˬaF`=*xdˈ5 I6%iVn(-Θ?X'Ɏ|u&`z)Jfl%9N\R 9Y+'f= b<i:1L]C2֟ҒK`uwdS]gZ>ݪx}=isX'iU1qrƴI$5Jk@ތhٿhe/|YO,{lsdgڱ-`$|=gV}kIhIS\;{i#PHh?W;m fFrLeźI'~߄a kLHJeN#nMOZcvx$ѻ޶)1 )4۫%'4?M_jN$  d Ce1*5%Jo24(tZUauitl5*. !hs PyHI*JeIvmH,_k5\Um9>%C/˄7OG ~5cC!2JjA͔$$J򘔓I$)@iq * &ci۸Kxh'l(.%.?]`ʩyF[@wncC ǰJoX#Y> 5fM/ykCA?fdn5-9&{'svpl2̾8_22"~tSstyJ?Lh;=64;:G0"x7rh쿣T<r)^NI#[Zk'k@"🾡ѭv3ɒy"~V(CA?l8xN?a/&9Ȩ'`jT @VVZ:;ovvGw:y.k?!丘x* \p|X;;r,GK4 K*U.ږ6OIdb[cC{.'O 07\yn} $i)75n$')k]&A' lv2RZfaqsݒK#ܬqʬ!c=p?E:]end4h:%`8 Ru?t䭙MRBz;ݾ#)+ZWJ s]ܥp.OGjp696-[CK$&$d:7!ߐj^Oc JG::MmԁIWK]Y$x%&\8EY.e{m;IrR6 0ZYky;`}!$I>kJF87S>Qתc04aPe sƐ`H$r .ǺH`4krTg#lGi~Ϗ?U?]q~)b{4ҸSz1JR*ۊi8 %qO$AH<4̹;0üQ\Bj\23zDmU-}D@jQ:4]>&B+q;x)7Jk2HK ‚w!`vI@)u@i~~Zò8'. 8TGI~_O⯜RO a72Dh2`Ꞷj-9BX鰸Q2 ]cKk8s3j̆uj,{w6gUq0pC,ujd4ZX1sۜ7WXƆV7a(k[ʯ)id)\{)2Ruj Su,zxhAu50e")JÑS~!MS!\}?>['nVwGS]8TOM_K NW^w-} df٢:ḸB3N#$4ugzѧ`o(c,syLV=fMYč0t8F2&\ [ ˌrs;ep?Q1Q@Tpd: s]L µVcv.;[I)I1!ך`46t×]0oq$0\0"=Ą5Tvm]ӰXtH @憴 VLry)x,Cør0jUܡX4}np#YkԏLyIYɀ)a9FBYF18YwZZl% H~+8U4am\@k}ău0z{:m< T4h*s(=2<:)>R&z 녔}ӪvXw1Qx ChrX및?p@Zd.iT}hܲGx_]gQګ>=AVsa8a~G黭0*t! bL4 /:,kߎ|Q[فƊ&O+]H mnՔ!2xc7iPm { a ^5?EJvkmc6)>+*JPsp O?rd7*Żw=Rj$ Pkq  #Pŵɒux2;r`JC_4k$ G Oo/(cZ=G#e][[6<'捞1EG*FF(|Kg}TriuiiDEV K@n@Wuƈs|Jz6i FC cFhmq6~ 'R~M RGNϟI%?2SB RI'IK' Bp hNC )!5tCCcBO2`MtT(cxS{6UIv_3bsq|OnsBQ=Ǘ?=⒓S&ا$BxH'%Z<''زb>">xK87A1r fZ!i7ς O(k t9N:[F*`#|%]K<T&ӯF+`4>꽗Jq?XEwN"IM+ 3II&VIDq09K [P|a,V) OBA[~eV[֟>T!~૸COf36 SU~v@\쉄gX|ԡMi<*t#K%*li 7S2@'q3^#jKyiBRv,t`>gI` u#cZ\Lr~JNMlƪy}HiGmRI6z NUlliD³%;꣓IsLCIS<'@i ySHɏ9% ce3`ܟ U/H}*Z1@ 'D\ׇ;|ICaX>%I?vĨ[PΏOC#EAĵS@>gEO% *u E M(=Tc0lir"8ܕnCD8芏Wm|)YK][Zg~V4R,q7tGooh:P꩕j|O(|dmLmT7\xjmHkU_qGୱBGMu ߜF(HDZY:Et(d1]㦡#COҎKI6~ӧg$G(I<$P pPZR RkQZbk(ͭNM2XfVEڜ5NBd6͂P!i BPwP<3,254M66B+[0Vl5hT `(ά$9B6'>%!{@֗x~T*]tM[1鼿N' =mq*MivSvIV>:$C=Feȏ0[e=Y!Meꩂ@$\Sx%LتBFL I#J^]F͗D0_%ị{!ht|vݭ5i,ޛuЪWiv3\{X\OxfRߴz9|$yiG 1X74AN)cCLn&cIeeہC+j& S'M,K[KNcƣ_%Dicvϊ~I@ ic;:#WԘϼUp kRӧD1X $gBu\L Mls64p#NvV{&40a,hom.)X":os78MMK HYaiJTS ;BS<.O1 A;09?TџgZ5vh?* Vi14Cr#qsi#o xZҴWr"#twmII6O4'?HRQT)RZQИB!PK6-&)m'6(zmp&mW dؘ=VRQ]YPj%Fc Xe~I"FL2htJ#%T絠`"LI|OdYe񧊀{\74:$;-em/{Z9q"̼H:q*; %Ä7>Q3}r 7s˻,:|.H O;EQѸΪWtևe 's8}A'RHhpJS[@̇{t`>d@#@1c,ᕍ?f48ꪺ<5#A9 !̗ٚdeK|WR!͍{oL1%qJh;# ò)IK9nr-c.\=@0O9[7SAp=;FH^ L;f.#٨9ns,:rׂZ#U<[깻x=I^k,5<|Rk[vA(X:IcdG ե&cFHCs頏4kZ,ao \˼Q-)k(|/2m#RUrI6KKV"{/X@~|A&uU@!'UpZf&I'[QVgqAꍁU,Ԟ,R Oc#ⓞ֑>)8ǀ{'q'?ګ;${*;x0;J+͖8˻|;Z'rl-NJg횸qV]٨Z$HNs<%UoKwOrwV HR  JPR]nB*U$.Q.Pܘi 2ܖ JQ-ɥE$SIIXX%["2٥M f⠑ķ`tvH ""C^h$?"Cknᮑ2GVFYY 45q?@F!Nuu ܭY~%ϏYA_oe8dI "Ym{`] 05L4@p?Wɳ /. *,fXP+d !-ȫM1lēj)rՃzBJDzZq?ifbTINIByp:G=׎G QWt4L$S'{ѵܢ2 0y@sZϢ"41WZCy7[Z]ɞ 9ms%A7Z||)kk$fR TJ":]kŰJpA{q"]o?úFj:jvø5UӳQqWdy[y>(a)T,`|H'P=r[:6bt*l5hCÝTA 7SYp=C9@ &5FH\h$̽ιtڍcw@<d**~a|QSkt_$gQxc7<>*dBoDY#ZNT3葢覵$ʙdp5߄ok؈Miۺ7yǂJfCORfgy$J]2NqQ:dJI$:dT<$(Nb3+M%iZTk[R ʶ uQHYn{..m#4b9ξIihpwOv;"'—Ieͮ}vXZC÷7@gOSQ 9^z{= Ԃ=ϦF㱭yIh?c76Dv YL8=cdʃbXYh,nj\6{_wq^eeuN?J5ZD}Ic@.~r&S*/x pt+* "vF\@lc睭,V2yu1$&q?ƛ8qp)o3A@tS/z3Y  USVHLQjM]hpM4!*\o &^_t}vAL&t ,&0ŕ5Wַ$N+.: []n ۻ6,v.#J 1΁UEʖK`?Iժ䏱^kI)ә5HDl/.Ot@y*U+dT]4qK)7  &wh2@.ѿ%5Wti5ch$j4O5 D >)zsCZ UXH9 =vD4qW\x!Ӻyi"@n%k @I&V̇Ѱi usuU5t2%5 Xl: >e;,gQ&֠5wocD}RRN'w<ORBO٩;F+XI;N=(b)BPxO %[N Bk֒Gc<%i̭YzVLE)0lk)qe4lFɏ#Xhg2b2⳨\p.;7vϳ!Apo#{q-V7?s$Z8fݮqۏ:"LO/~F}Qk6`hwowvft4c3i vCl+6 k}7թĞvN ڈ&̞J- j]fe5hy5is6CFvO:@2Z:G8iDv|$bl6Y ;ŷvQ^w;̕_ s V$NYIbX$Bk_LltO|D#ji U8*t]}ku<5Jkٻ*Da?Y1鼿Ŋ&AB⦅iBw՜k #A~!l%»ޙ(o-\H9T_LjT#an V͛!&/0c<|R 8SF%4ȗ3.y::EcO*nC' 0IL@tςb  P#䜔uda$ df <+- hÿiG)Y`wҚ;G=qeR׿qƃFh@4Ri֍0%0Un{ᤖ e՞2׈9σ|b8s?>ŀ4;{^N Fx>HYLa|I*v@6pf#ڈ=Jov؂/ԳObUMu`?+M7o>o%HZq c,%:Ql2ǟIhul[h\ǁ3,q:v%\J eaMa jXAV(jl/Lyݠ|ԫeaGowKi4-kRGTVڕJ#i@mzVj++aJScTa]|Gc{GE)0JlkH(ͯ]y=IFddljT\"k)ZTQ-F(o |R^2{&{{׎ƚ=mȑ4U`RB bjT;-ih:En3Z~*ɬm6bb3 [o;C`ty5h A3Ru]qܧmvy*'T5nDrT͍%9ꭒ q#Xn6UfA =;4g3/!<+m^$5et]+WKr27?1L~q+/߿ W4jV0CZZ<fX1 $oM\!w"կF+=:+rfөRhϒe"I2'ru*T*={ cû--k\ hWֺT\[ß\W9X `D#1ێ1U FʙOcВNldnFv>!A7)P<'჎0R*$CE\#e#v:@E8SՕ9T"$ck"{e/-]-aݩw Peq!c۶ߥ@U"#8ΝR2]C9x$?J)>SnX;c\c8J]wG['ɬ鍺Q`=8eX`>i'N7e2!g`IH 0gu/!= P$4|3c,q繑dLu$0t;5Vlk FQ*uq:I3I1pPPp3"7ww OmTHUiNCkCb 2t 06f2PGw;%wN<9*>ڋdI ;XyD "PlHb|]P=xdA&'r Ο(ٷC[kVV'_ȼU"[m[ŞCQbuks.5OtcWB#qXYy:V.E/i2$}x)G-)oĠea׻!-KϬ]Z*f+Ԃ\~.՞Xl G(b0!$+(!nh`|74 eAx`T™XF4Qddq"tfFS\wSh@"J8>2(1]⚛}M"?!@몗e-^q'p'#4i 6v +w$^zwc0N"cGN7˲h|T@u6: "6=VnfJӶVpGxm K=@}ŬDP,vC6 1ZXkk[@/?4)S]o$<>丅!E p#{!מN ,}n?Ḱm1$-┦1$ZT\wKp<&<1I+C= 6cL %# \Zxc@B`nPc+2)& I$%Pd?6t#=۷UIhJK^<< qT+h<ƲϹ1إ3-k 1ʢokɀ_4$)H-5a>^68I;.gݽS:\.̆'a!\(IYu{Ē|~_]k `{IW ML5HW@2ݴ˜d<ی No)7Rz;Mʍ2KnMA&n^tEةر=nsGd=ʭ?H|eu ~ET}#RKIJmO*bgU'-&{)5JS@S I" JWx EiȦB3f` "{xpX@`%3ʁq6GSi̙>CE^n5ԧq(Ĥu Lxd cnN< IO ' Ƽx!^‘NZxd[{ 4 ';hdj'pz;CA'b#YjO4M< w_&sGRocwqZzTuK/`}-sf#Ae1m?i}n4?XCd\c{%Usʃv00>|!TAvozp^7Ly0w(| )pXR)\:d+YN|O$ $DJ4B讷8Q47#]lc@h"!#jd 4S>K>̷8~'-ٴn1!ILɑ~+#y8=GO Xj$i%"̭uz9Ayp9϶w>AxX{ZnlɪbDHY& h HF4B"ΪmaTi?GvKgĻ>Gg$~#gDzp )I @4tOh';hkmxn(SS4(Z-h<xG$ZB+ jkHJ()r'ό0Ҵ0~-ޅ- %>; w?"O*$‹ݤ?znD(\{G %ēN/0sg_'7qj;Lh9xD PO Z#Sdi$0ШvcGޮߺv7y!HӪc".KT\A$*ֈjD#/՝m*7c#3[ScAyՒFGyU~a.pݹĞQ+X.'5㪳O mpȗEtil>cEo50AL[H&DSIτr+Aȏ xFQ#U2| p\)H.] J`SILu t' SJAd5svC;')J :yۺh0L9WSxhqvS(FR WK^;Ax#g'9ish_e{'\MD;|AHs:΀%:+{$n)nIeD$wAR\ Z׋ tw`cYQsf ?%l2:He 'ӏ4P̉$O2N~+8Fk|nN M6}<~*n G4PCNB4~ C)ųBuR3ԓKS<Ԁt*nӘNt 9 yRR<I>xITLi'^BiH!w>Z) M9 F0]PtqC6t4VIH O#U"?&t-Of;mD#R i HV7e,we1l4h|h5LɓRPA|Vs%Ίݛ  s nTu:U,$J#B:w:Hs $*&<ިk! !A~(NB:#o$_5R_Dˮ?C‡ItQzڏMHENvG'+bR):ӂy2^a:&ǕçF@\>s.H̚qLZw?{~D향s| va_|_l~} 5gKkSϪ\?:']Y;ŕ|6\,>:yY_ ߓef3K( .;{)~l Ϝsts}5u:|4vz"|=T3D, W׷TDE4u$p1A N.2 (jf^ZiHŬIR~as [*`-^ {/K,> 0I8Ja2۸B?2,!ŸEY8,Cc߳TDv$Ly eۍwAAX'c uQ2]RTډ\OL晻 2%$Sg .A(GLě*+bdֽ(}+lqn |ucf^qiX̤Ni7)'ܜbqnrlZV5);5hV2ǐr[NIMr,&=TX)x]tbv6Ej77,bjcӏ^vK͚]Ke(>ed %&]*\Yۄk ֛yZm[\d'f]4fFٝi[ڿܫ#EhG# ȅk]يC =~:+ݙTp1NGx)B->Ai# |9C!d9CDDyr!r)W2U=jPGWUzc/F4-(Pq]{.$ +vC th!Ȼ#I+Ģ msnS'tFl_ld)QdJ'[6b= Iu[Xu' ԝ[9[!']ER{1ix2ԶD-6IiM 3PPGZT|-H1Ⱥh d( !=K!>ڙw 3[ WSҠbJ0g.؉@B ylU:8ZPZ<["U]\F̕WCj8Se%hEME•_?O!FTd;3]BW x6ӏf?u?+~4iwjZ+Zd:ErΘxYܥ,,^7P-4Ŏh3]7wElmgrayUi^ʢ2pET-9c0JnBОJ+swTZuAuDfa\ $nuu" ުiBHӥ5ƺCWhy)&ZsB`mVnl\<}dΓ|;}L9t%K[L/4 IC)@RRLʴ H>FܴrջXT]*T3@+Ia_q'S VFG7iRJN]|iug.Z;l4-c[/|ZRp ^?rxg!!D0^N%0H-z!J}. < ߴqjpu&eU&cb.d%c_nS7l'Ii柉o.sjrjQZ&QV%E`HI9 SҾ;l7ϩ2'"֊"1)4y*e--':RIԁR/ZQ;$A%3WVGOHP)RL1o^վSVR‹EeG5h1ezn-n֕, +wnKF`ro iM̉l!˻ƞqfGN]ܔo9;SqltҳR }_?s|#H0l.xkh peTꟷ#1iv~՜' 2qkhZ8nS=UH(Pv&ʂӉ&^q#.drÈ5 [k-"?Q[+H꼞f2Hddri.U46^dPβWxwkx˕B AȏiW<&_qݹ,=8v $H*PM*K>e~\K̫>b29@uW!J%Ib :rZKshMf T6eFZ7J&C̮2iuRPKq a[˜1ZIU7KT\Θp/!M<ҊicJЂEuJ.(L7JVI!*5Ն<{{-q$v۬XGR&qeC]btʷjm٥[Y$^鴼Ò"hXԓ#\9^m.JicRTP ­Ӻ-mJJ$039 Hj?!!a57r/mFPʚZ}3{R^/ S$2a{"i=Lm6*?{^?1 {W'2kd0Dc,AI=ڴVf%4/ x,F% Q*U=D0%`/9aܦ`f{|ٓ"9#1v t}"+9U)?:M[eL6!"¿&{:ke*Qn۸v%?,{i /up!M^AzJY,ْ*#ǴIq=/f93T/fst[s<ס˻BWnvɷ.w?oHGf~9j**xYAax*/ĨvNNp&A}X@KW8r4u˖VY^[rxLFaSiHŘWryi?H{+l<,0ϒqvyU<`PN*2xKCWQ6+ܡHb㡏,!N2d *:b jq:X,ED N~%tN|1.+4nS8V=Ƌ<7RWR_pV.sb!bsӓDI 2{;"#3~@9`b)"J8eyLr8?SM#=0}喪WQ$ 036+-6je,vHPn*ICq r LeEZͅAVpd+?b?׎ sf똄ɑO2==0; }L)h䶅5 ^uEl]-&Ki۵+yGAj Ӛ2Δq_n[ BUyl@W%RG0clQvF{<6~+do\V 5GV*  x#?e(j!i1I[0eT?5 @pE"9Al|?bjws݆C|8[hTJTХsͣdAPeL>DX@/\OXL*㏥W6e&͒!}FKNEUVo wYBZ|B<ʚ\̿ebЯye̸7kaK݅)p47E Xfy3,`jVe.4qIj-x-lN>rwGIKDכ]0U*C6nuJ79C(2Ҵ{,]һ+ fL]xϟ ˫V>)UL'0eJ {CQ,ggxvNaj!f4ȎϠqW64b*I0:*Tl!S(9N <’0P' e r`؞8{%JQuy5q3UO4]ߠM7%L/@!gBTZqFڂNQ ") ȋp,=X:L߿ӈƪ IfQsЋ-єp7a2Fpላ-.Joqq ":Iv{4*}ݾƥ^6"R "J0c&#$%"'.{.Xk%L6dD24^ s*lf3U"-gN;1a"%əԴE@8=L1 ^H$zCO~^2{%ٖP+nQ*șeX)Zk2x,WX) raFPOg}"RAf¤lGlYR94.\1h'hLgf AAĘyAH Ҟ`2%#|A&ܠՑ;*ЙxH_xA[*?!&~*Poжtz'X sb/<%Aޘh"#%kߢ RA6Tbfh:Gygyy]5\vD]/][tR|; ]ohJ"DE\~wV\=Xz*T]к0\FRԩP+%'b%/r/r*.8oc/P:fTQzs e1:9O5z%^LIP駈Zi5֣3mRr0Nq\ 2$?ϠteN{?@j+//K)x;rgcz%=p=>?m=]he/E=6=.-?!*^ b\J01q} 1f1CS]7T' Q}IX["WQ  &fzIs b_]=oXL̲Kt3$lB iPR,}7Wc 5cV4@J. O>3ƀB-N` ~2_('8;ˤ8/s,2)@H?'IE +kkqHz R- ;.xn,~F B~ԘN>: (U5941RR5e-+YӠmhwB܂Z"ҭS/`Q}bT4,3I4u H*=ԜYQ]e. C@{eiMrR-XP^ζTQ_+:D׋F-Fj-  VF2Pjb$شH0ȢDa FA,̬g ̱$,8byBbAQrm Rx|X>T򌧒_U} VW,jn¡/(ϴ,A* TQ+X"R0\@ Y:rfT\!XcubpDZ(8qRQ5p.YL&C¼,A 's䈇Q`r]Tm>f~/>GCZ9sJW8sm[ֲTX%M(dc a(cmdР ]nU)o8SsS:jVp@CXĄ]p٘hܦ ›%^ l[BҲ-x '">6\mұ>TyX |X)4..5mdЅZ-vVGO2720qJ |!DhlCS%I"%pnӞߘZnn,&FH#c ˪IPNE ;vZ>ٍ3K9&_g$*P3n˞@.((`wAuV=h݅wl}THᛗ܏!N D~NO " O~UZa;xBL,PPS\ P9 ;͘d,2:얦`ZL*bztNL.Dq]#r@QAdkJgm,уٲ!yqUx9u9B*!X$=En9<CsRG V0x1(pERK`PDi%@Y;d|L^#BN[H|#g_8 diD ]:ALJC 0ȂUÀ/sH p$}"dL&IoAr0DcEk&!`%6t SB$a555y#yQL 0?qȴIPR#uARJd 0}d6u-F UQR/l`A ~X5сBl<됳@x8*aaood{7DV@ Wi(2$QB@{G@&B̐1G#]f"Ҟ? 0J@r.x: 0Ln1 <mbr!4Aχ#pg9@AG/H@(Ze_1h8(DP@b<1+h19\4 M(p9T} cdfAA4)$]P^diDdH F1Mrȋl9r-lT~zI)|"[)석R$IZzX* JM 7p4Pj3NbB9yTNo] 8@2h5bJ"x hqiU QT0M w#?,סZWY _h%tPȃ>h"Ae}[Jc<5;lQ<n@g\4T0ji%=X|"4_-S7DVJf?l%=D=2ȪM]t~e_x׋HP@!tÐK"[J. '`?'h"߀7sq׸{u+ź@.,C*`x2AK%|GJ˗ "H%E 2U*jJ,i*= Q"t\-@ASD,Y_ZʉFITgTt-'R,K#fT*TavF5) JǥO&/Ez(|qW8;z\7#}Nch bT̈́IQ>jM1|TCYlā 6=)'UOg7~ g t(U`Ksxy7Dϐh֓^1\&:`lEN.0±>G#b ^< ~͎C$,bھC0(<,-E!]^;Dͱ=ØtJwDWf1$,M']z LGf@s}YZыvDc&g AЯE1LO?">?dLC-{ÙyM}}faDg8 NTnQ԰ K9Ϛ12)A!rPw[Stq?47zDst2thuzlݟ^&5 _}_ACQU%hy ܷnO30 Athlon 1400 GeForce2, quality=3, view=70: FPS>30 P4 2.4GHz GeForce4, quality=5, view=100: FPS>30 gl-117-1.3.2/gl-117.spec0000644000175000017500000000423110145416156013460 0ustar cedriccedric%define name gl-117 %define version 0.8.8 Summary: An OpenGL and SDL based action flight simulator Summary(de): Ein OpenGL- und SDL-basierter Flugsimulator Summary(pl): Zrcznociowy symulator lotu uywajcy OpenGL i SDL Name: %{name} Version: %{version} Release: 1 Copyright: GPL Vendor: Thomas A. Drexl Url: http://home.t-online.de/home/Primetime./ Packager: Dominik Seichter Group: x11/games Source: %{name}-%{version}.tar.gz BuildRoot: /var/tmp/%{name}-%{version} %description GL-117 is an OpenGL and SDL-based action flight simulator written in C++. It provides a random terrain generator, lighting effects, sounds, and joystick support. Predefined levels of video quality and an amount of viewing ranges let you perfectly adjust the game to the performance of your system. %description -l de GL-117 ist ein in C++ entwickelter, OpenGL- und SDL-basierter Action-Flugsimulator. Neben per Zufall erzeugten Landschaften besticht das Spiel durch Lichteffekte, Sound und Joystickuntersttzung. Anhand vordefinierter Qualittsstufen lsst sich die Grafik optimal an die Leistung des eigenen Systems anpassen. %description -l pl GL-117 jest zrcznociowym symulatorem lotu napisanym w C++, wykorzystujcym biblioteki OpenGL i SDL. Posiada obsug joysticka, dwik, losowo generowany teren, efekty wietlne. Predefiniowane poziomy jakoci obrazu oraz szeroki zakres ustawie widocznoci pozwalaj idealnie dopasowa gr do wydajnoci systemu. %prep %setup ./configure %build # Setup for parallel builds numprocs=`egrep -c ^cpu[0-9]+ /proc/stat || :` if [ "$numprocs" = "0" ]; then numprocs=1 fi make -j$numprocs %install make install-strip DESTDIR=$RPM_BUILD_ROOT cd $RPM_BUILD_ROOT find . -type d | sed '1,2d;s,^\.,\%attr(-\,root\,root) \%dir ,' > $RPM_BUILD_DIR/file.list.gl-117 find . -type f | sed 's,^\.,\%attr(-\,root\,root) ,' >> $RPM_BUILD_DIR/file.list.gl-117 find . -type l | sed 's,^\.,\%attr(-\,root\,root) ,' >> $RPM_BUILD_DIR/file.list.gl-117 %clean rm -rf $RPM_BUILD_ROOT/* rm -rf $RPM_BUILD_DIR/gl-117 rm -rf ../file.list.gl-117 %files -f ../file.list.gl-117 gl-117-1.3.2/INSTALL0000644000175000017500000002306110145416156012727 0ustar cedriccedric+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ This file contains the typical GNU installation descriptions. The gl-117 specific installation instructions are covert (briefly) in the file README. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== These are generic installation instructions. 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 only 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. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. 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. 4. Type `make install' to install the programs and any data files and documentation. 5. 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. 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=c89 CFLAGS=-O2 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 must use a version of `make' that supports the `VPATH' variable, such as 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 `..'. If you have to use a `make' that does not support the `VPATH' variable, you have 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. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' 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. 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'. Optional Features ================= 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. 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 `--target=TYPE' option 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 will cause the specified gcc to be used as the C compiler (unless it is overridden in the site shell script). `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--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. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. gl-117-1.3.2/install-sh0000644000175000017500000002177010145416172013702 0ustar cedriccedric#!/bin/sh # install - install a program, script, or datafile scriptversion=2004-02-15.20 # 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. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename= transform_arg= instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= usage="Usage: $0 [OPTION]... SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 -d DIRECTORIES... In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. In the second, create the directory path DIR. Options: -b=TRANSFORMBASENAME -c copy source (using $cpprog) instead of moving (using $mvprog). -d create directories instead of installing files. -g GROUP $chgrp installed files to GROUP. -m MODE $chmod installed files to MODE. -o USER $chown installed files to USER. -s strip installed files (using $stripprog). -t=TRANSFORM --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; -c) instcmd=$cpprog shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit 0;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; --version) echo "$0 $scriptversion"; exit 0;; *) # When -d is used, all remaining arguments are directories to create. test -n "$dir_arg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; 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 for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then instcmd=: chmodcmd= else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $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 "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -d "$dstdir"; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` IFS=$oIFS pathcomp= while test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" || lasterr=$? # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; } fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $instcmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else # If we're going to rename the final executable, determine the name now. if test -z "$transformarg"; then dstfile=`basename "$dst"` else dstfile=`basename "$dst" $transformbasename \ | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename. test -z "$dstfile" && dstfile=`basename "$dst"` # 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 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 trap '(exit $?); exit' 1 2 13 15 # Move or copy the file name to the temp name $doit $instcmd "$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 $instcmd $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 "$dsttmp"; } && # 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. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" fi || { (exit 1); exit; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: gl-117-1.3.2/macosx/0000755000175000017500000000000010211774414013164 5ustar cedriccedricgl-117-1.3.2/macosx/GL-117/0000755000175000017500000000000010214472322013770 5ustar cedriccedricgl-117-1.3.2/macosx/GL-117/config.h0000644000175000017500000000360510211434247015413 0ustar cedriccedric/* config.h.in. Copied from running configure on a Linux machine and then editing to be right on the Mac. */ /* Use GL library */ #define HAVE_GL 1 /* Use GLU library */ #define HAVE_GLU 1 /* Use GLUT library */ #define HAVE_GLUT 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Use SDL library */ #define HAVE_SDL 1 /* Use SDL mixer library */ #undef HAVE_SDL_MIXER /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "ab@purdue.edu" /* Define to the full name of this package. */ #define PACKAGE_NAME "" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "" /* Define to the version of this package. */ #define PACKAGE_VERSION "" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #define WORDS_BIGENDIAN 1 /* Define to 1 if the X Window System is missing or not being used. */ #define X_DISPLAY_MISSING 1 #define DATADIR "GL-117.app/Contents/Resources"gl-117-1.3.2/macosx/GL-117/English.lproj/0000755000175000017500000000000010211431737016510 5ustar cedriccedricgl-117-1.3.2/macosx/GL-117/English.lproj/InfoPlist.strings0000644000175000017500000000037410211226520022026 0ustar cedriccedric/* Localized versions of Info.plist keys */ CFBundleName = "GL-117"; NSHumanReadableCopyright = " __MyCompanyName__, 2005";gl-117-1.3.2/macosx/GL-117/GL-117.icns0000644000175000017500000010706110214471650015466 0ustar cedriccedricicns1ics#H?x8 ?x8 is32rUTLS UXM5?W`T@43 UEEDUpytYM53 2>Nds{UG8 6-/Vd}lRFKZpna/BUbN:]-f`9ksC;/&&UYLV UXM5?[bWC:3 UHHFXuw\P8 4APgwXI: 900YgqTHN]usd/BWfL=2'"$/2948%((a6)EJ&3-(,-'&s8mkg5 .++${[' APxUlrrhk_q5ICN#???x8 ???x8 il32)f3_\16bE,eI 'DIg?3QtocK:UXUOH<9HW]hUX\VKNB7?FSUM?CPSWwtuzqWaWH;(,:G@;ZdTcu~]Z[P=86#-3Moxh}TSREF;"8=8)'K\Oiguv@LKM;;0$2^UL_ow~qXYJ BR[q}~zkagD DZ`q{XJ}W7]_SrC G|]( *88W!:Y^UHj|AD]u_7<6jFOwoQ7FSF.-/."$0(%,!$"f3_c:6eI,hL 'DKl@3RvseN<WZXUK>;HYblX[]XNPF;DFWXP@DSUZ|z{}tZdZK=*-=JB<^iUez`\`R@:9%.5?[`Wj~jkddRNA7,,:0-76@Ms~kWXVFG>"=?;*'M^QnjxzAOLN;;4%3bYMaszv[\N FX]uqemG H[cwZMXHaxa8<;nJU}sT:IUG.-.."$0(%,!$"3/*3&0% 1:+/!:H6+)3/,&$#$*-0;541+$&(*%&%(*.35778@6/6+##)+0449?EA-1+&""%&-116<<;80+%## $).28;:-&&%# "''.7=?<<8(&(%')-6=A=9;4*)" &17679:93,& $-,0692-3TC '-022d%3%[šh 9',3V\$2=`wQ$39D:/45&.84%15($//"(0(%,!$"l8mk*44z^<iiŅlflY\yQ8'{d85 7=#'6 k 88`J_SqHich#H??~?p8??~?p8ih32@UFUcG1dW).e`9-`n96jc0%3HWGnX8B%_v~sacB>.NU -Rm^]m^WIBCYWTUPJJ?7@JQ]cqcSKR_Y_KWMM;9D:FVTSI=;AGKMN^ymjrxvtSc]VUD95)7@HKD6;PdbNI^uwOR^[NG72*%.8CI>7G^h^YeomtvxmT\]ZUC>D:*"(-46;P^c_Zizvccmwo`gTFRC8;0!()')1AKF=?Ol}uekdXdRHNA?<23?6,(+//8EHVr}pfrZCW]JCFJ>+9XllSRr2 *AKgi* 3b~`5# 7D39O *36`M GRq7 5JU~}k$ )Zrp`* 'RhuX=<PwL1`wX7?j|jXF2A`YRH.7F:0*!'-//&#-/-"$-/%#,*!($! UIUjL1h[-1ic=-br<9nh0%/HUJr[8E%azxdgDAENU** 2Vpa`p_WKDJ]ZVYTMM@9AJSagwgXNTaYbOZPR>*$*.59?Tdgc]l|fenzrbkWGUE9;3!(*(+4EMG?BRpzgmfZhVIPB??46B9/)-//9HIUxsiv]E\bKDFL@/>@G>+"%:^bJ[zsjuP9PWIIB0"5@<1&,JhZDQ]eq~uKFPL]L3/''7\jTJVeqttzbf^L=#@Vdbiu}xxifoM?Qaww\I^vj>3HO^vw\IS> ">[rqTTv# *DMjn"  4ed7  7F6;R  *48dM LTu3  5LVo 0]vta$'Wlx[?AU{M1e}]9Aqk[I2FdYSJ/:I;0*!',//&#-/-"$-/%#,*!($! #*,3+43$0.!#4+6=8%1) "EGB5+-('* 2?;77/+))3/,*&$&##(+.00<82144.-%+(!&)$$&%%&'(,/3367768?>2+73+&$)),./2558<=DI>+26-'$   #&(*.25456>ACB?0*1,(%#"  "%&&*13/26:<<: 3.,'$$"#  !$"#(,.1369;;9=95++%#$"! %',.159:;;9:<2&''&'$#%''(.49=>><0%%')&!!'&'+18=AB@;:<7,((&'&(*-28;>@>:8;95++)$"-3655789;:;83-)+$+04569:71-&"'',24773/-3A|L &.51-28; %-/65)ͼo ,3,`{ $"!>Y "+2e{ *269s{J $*9>BymI.@9Ea\H-:78@6 +7543((2562%*388/,365& /10*!-//&#-/-"$-/%#,*!($! h8mk  W r>WU PD u`Q = OW*7L@*deF Gdjbdbi0eSN \%3Y8=i9b\E/it32.V2hi,d}_$^wuQVqrg>WikaR0'hig\OE(+mjh]OF=&finjVE=1&adprdJ:1$]_lvmQ9,$^`lunQ6)4dgptfF0* =hlspZ:+,% 6hpvkM1)5.&0>0 5htvgF/,@@9DDJY\E5fuweF20EK;BE^yv[O\qykM63EL&FUs}|zz}|dUdtq[@6DM(&Zy}ropqu|pPWnsaF:DQ2-vzmieegmt|WPbm^I>ET5'=]skga\Z\_gowhST\VH>DS6-nvnhb^[VSQSW\ek`SPROFEO@8]\YXVRSSTZ\`W@@A ?<60..26;=@A EGFGFKlja``ZVQLJKMPU`fZNP[ZLHECD>: 73-'&-6893'OXe`^\ZYWVVXYZYY[[]ZUNEBBEJQTY[_aelorsplihfb\USNKKMQTYaaWWgk]LG_qg]Z]b]VI<7BPXXQ8P2[YZZWVUTQNLJFEDDEDCB><99<=AEHLPV^irvzz}|wri]WWSTTX[_efbeoukVEPfdZUT[__XL=13>IPM2PFWVUTSTTSRLHC<<99<<>?>>?AACDFHKPUdozuhb``behlptsqpu{p\FLfh_XRRVY[[RC3,3?DA'P#NMOOPQRSSPKE=86689>CFKNOOQOLKKLNTbq|wpptu{~wzzp_IMejg_YPLNRUUQG5,,130P6CFGHJKLMLKFA;6556=DKT[`ad^YQKHGKTanw{vm_KGX^`b^XOIGHNOMC4,++(%P69;>BDGIHJKHD=655:AHR[eeie^WMHFHNWblt}~yiYJ@KWY]baZTKFDFED;61.*&!4%1247988;;84/%Q(+-06HRW\]_a`^\[YVZ`jrvz|zukb_`dhinu~ypaZdpplbTB:>JVWMA:6766545%S "#&&)**,-0016:FMTXY[[UQKKLLQWakry~~|ujb`afls~wqjbWSdlomfQ>7>KXWLA:896401/$O"%&'(''))*,.06:CILNNKFB>=>AFKT`kuz}}zrkeegls}}undUOYakmbPC;BOWSI@>@=;86(S&*+,,)(%#&))-057<97668:>ELWdnuz}|wqidein|tfPHMXfieYKDFLOLEAFGEDB?=7,44763.*&%$&)-.03665424569;>AFOYgqv{~|vlhdejqy~"u_NFFP\ff`VKEDEEBDIJIHEE25> =:63,)''(+,-/50056?BA850)'%(('().3;FOUXUQKMS_mtz}ztoiffkrzyjXF86?O\bdZKEDEDFFG7,095:BNXXRKHIIHEE6,#.;CGFC;3($! !%(/9GU`ff\PFCFS_fijhdehnszq\HA>;=CGMMJKQSSNL&(&6=ED?4,&##$',3=KYdhbXJCAFMSY\^`dgmrw{wfTFEEDDGGFFKVZ[WH&,9>@:4(%&'*.6CS_fd_SFA=BFMRW\`fkoruy| sdQI OTUQJHPX[Y4?+45.+'&'+2;IW`ee]OFBCFKPV[_fjkmnruy{~vhWPQV]b`SJFOUM &'((+.6AP]edbYOGGJQUZ\afkmoqstvz|rb\Y]ehbSFEI37$',3=IV_ad`YQMOUZ]afjnopqopqqrruy~zia_bii^OE<4!.=LY`abbZWWY^dhlptvz{yvtqooqt{~tieklkf]Q.0/APYad`\]^binquz}|yvtvw|wkghh`Zammg_Q.&6FU]`bdhlosv||~~|~|l_SPOTWUVdkf]>++=NZfjmosuy|}~~}~{qfYOGFIR^gd`bdR& .AP^jqsuwz{}~{ywrk`VMFEFQ_o{~qd\; /BQakprsuzzrnh_WOHEDMYljY)!.ES\bhmr{{qiaZQJGFJTe|qF?% !0=HS`lv}rh^VOIHKTbt[$ *:Nar~si\UOKKSarg*3I^muuneXSONU`n~|;  (8K[a\RQPV`lzuA  (ANKKQYhvu]3 4DFN]p~}o\D( 7AM_sziRA5&  7HYm}{iP=2,( 8N_owuhS>1,,0$7HSYUH<1-0:H8$6>@?71.0:H]Z ,010/.29GZlwF "6,+-3:HXjvw,>>,/8FZjwf#P?25.//0/-+*")-),../-+' +,,.00/.,)& "(+,-.//.+) **,-/-+& !*+,.//.,' *+,-.-.+&!+,-)!)+,-+$!*+,+(!'*+*+)  '(**($&'&"&##&%$"$"!! Y4pq/lg%d~UYtynAZlnhU3*lji`TI,.smkaRIB(mlrmZGA6&efrwfK;2"`_o|rT:,$_ao|sU7+4gjtzhG0+ ?moyv];),& 9nu{qQ1'6.&0;- 5mz|jH.,BC6CDJWZF4i{|iH10GP;AEb}~aP^u~oQ61GQ&EUy|}hUf{v\A7FQ*&\zuqrsytQXrydHAEJLQWanw~}vmb[ZVUWY\`ffegt}qYFTmj^WXagf^P?33BMUS6PG[WWXXYYXTNJE?<9;<=@??>@BBDCFILQWfv{ledefhlnquuqrz}t_ELikbYTSW[_]WF6,2@FE*P"QMRSTTUWWSME>9568:>AFMRTTURMLLMPWhy~vuy{{|}uaHNhnjd[QLOSWZWI6*,263;IJKNOPRQPIC=6456=CMW_efgaYSLJJMVgr}|wqbLL_ddeaZOJGINRPF8/,+*&P;=>ADFJLMNMJF>644;CLV_glmhaYPKFIO\dmwzlZKCP[[_ee^ULFDFFE>651,'"Q&426:?EIKOPQMF=647=FOZdimlg`VPLLPU]dlv~w\ICQ[XY_kie]VJB>=:<@@:60(Q*,/36=CGKMQPLD:66:AHU]eklif\WRTUZafjmot|}||~vQDQ\ZZ]flljf_TI@;?EIKJGH9L%&,-/35:>CEEFD<=?FNV\ehjlkfb`_ent{~|sgafkrvz{vpnqwk\faa`ZXTRV]_`]SF><@CFF7K$&'+,-02569;;<=FMU\behjlkjga_dmt{|pe`aflnomos|vefopj_QFBFOZ\TE;989<=0%&&(*,--03677NZZOC:6866356&"%$&&*++./0337>GRY]^^[ZTPO.S[boywnfbeglu|tkdVTfosqhSA9?OYZOB:64221&S%$&&)(*)*,/048>FMPQOKFD?>ADIQWdpzvnhehnwzqdTR[enpgUF=BOZWLC@A><9798*&)*,,+(&%&),.36=A@@=:8669=BFLWhr{}skgglsyiTJNZipl_OEFMSOFEFGGFED@9678650*(&G)-05676542356;=@BEMYiu|{piegmu~yaOFGSbmmh[KDEFEEDHLNLHH36BCB@<86.+)'),../ 0048=DFIGFHQ_ozvnhfiou|p^L?@HWhnj_MCBDDADIKJJG !BDFEEDC=81,)()@()*-3>HSZ[YQHITdr|zqlijot}~o\F86>R`kj^MEDEDBCDEG9/6BFGHD?4-)&$=&*0;KYdid\PHJUht}}volkmswoVA66FLKF?4*&!!"#'/:HXejh`SFCHWflnmjhikqu|t]IB><>DJOLKMSVTRQ'8'9DFGC7/)%$$&+4@O]hlg\MEBFQW\`bdejnsz~|iWHEGEFLY]\]LC+:AC@6+&%&*/7FVdhheWIC@CIMTZ^binqty|ufTIKNSYWQIHS]_]6-782,'7,3KZfiid\SQSV\_dhnssuvurrqruy~mfbhnmdQG>4$/?P_fihe^YY[afkqvz}{wsqsv{ynkopok`T002EWbghea_`gmrv{|yz{~rklle^grpjeT.);IWaeghlqtz}sfXRSW[Z[ipja@*?P^jntw{{~~ui\SKHJVdmjfhgV&/DTepy|~~~wnbYPIFISbsyj_?$1EUdotuwzytmbZQJGFO^qn_,!/GT^glqyvne\TMIHMXkv=B' #1@KWep{ymaYQMJNWgz\ +>Pevzm_WPLNVewj 5Mds~}tiZUOOXes(  (;P`f_TPPVaq}; *BQMLP\j{ye-  6GHQ`ss_H!  9DPdvmVC6%   !9J\pmS?4,(    9Nbt|{lU@3--1   9JW^ZK?4.17H9   #6?BA:313K]p~{'  AA,19G\o~p UB3>Pj{]   7dH?OhL  OiQM^v~:  ^mZXi~~o*  0bOK^p~|vzZ  ("Ift}~ywuutG Khsvursq9 FgotsrppurO! Aelopmory|mCEdj loui2)?Zejlowvk_W6[dks|}g:5[is}~lT)Dfo}o]GOm{m`Q6Xtwl`VJ*(ey}sh]XPB6m{~vmd\YOK8Goy}~umf^ZXSNI) Rotpld^YUUSQLC&Vkhd\WUTSTRI>+ )Q\[TTRQSLA3,( ,KQMMNM?60-,*% ,DHIJ<001-++( ,AA6.//0/-+*"*0)+../-+' )*,.00/.,)& "(+,-.//.+) **,-/-+& !*+,.//.,' *+,-.-.+&!+,-)!)+,-+$!*+,+(!'*+*+)  '(**($&'&"&##&%$"$"!! 231-6,.41'490.!195/0::70,*9663,*&22661*&6321.(&#60..-&"62,& !73//,% &830/(  "631.#%/?6 #520.&! @JB?GE-32/,& #"==9-(,.0+'%&# ALGCC@>@>:1'+01/*&'(GD>CA<;<<:6++//-)&()&;B:;<<8788775,*,+&$)*AFB=>95651156251,*)*(!6 41.//01-(% 6"%#"%%#%'&&%*C<69<852./352034-*-0/)&" #!""!%696411/--,+),//0/121-*),//125799;<;;::6$5411/2453564.,/1-'#-5330.+(&$! #&%$& !5.--,**'&'++&$&''),*,.20451149;;85123122668985/-/0-&'/11,& (#! ,-,*&&'&9'&&$%$"$$%&%$$''++*,,./352266::9743344567@BFIGHGE<1+'.6441,+))'&&! "#!   &()(',,-./01034345567<>>@BBDEFDED?>5'"+2132-)('& $$ "$#   " "! &&$')*+.-.1566545465368;??ABBCDDA><;2 "-/01/,-,(& %! !  "" $&')'+,-./566532353249:=??AA@?><==<;:9,&*.30.,++&$% ""#&$$  ##%%&%'*,/14431/21255669<#;<:8:;99797/-0/+,+)'$&''$$!!#$#  %&(,.02211./055678:<;:;<;;8:98::8663++,*)*'$"$%%$! #%&$#   #$%%&),.0/..12513669;:9;:;<:=?;656.+--,*($ ##%$"!"##   !##$$#"!!$&(,-,,-02125569;=<;:9=@>:6892+*-..)$ ##&%"! !   "#  $%$&**+,010/154269<=;<989:;<=;:;=7.&(,*%!"#&%%$!$#!  ?  $&''),,-//0255359;:;<:968:;8899;<;;7.'%&)*('&&$&$&$#%!"   9$&&$',-,.0.0245579899:<;<;;87768:8::6,$!#&('(*&$&&%#$!"! @"&'(%&*,'+--.0266788:<=>=<<;:<;:>><<962*&%$&&*)'&)*+'$%&  #%&&%&()&'*+.1136989;>>=<==;<=>;;9972+'$##&&)*+'$&& &A!#%&&'('&&'+..0367:9<>>==>>=<;::;<;;>=<70'&"!"#'*(&$&# "&&(&'&&(+,/23699<>@@?@??=;<<;<@?<;4*'((&%$%&%%"$! #%*(&'& ')+-23689@@AACDCB>;98<<9976-+*&'*+,(%&  %'))&'+,-./26699<==@CDBAA>:9889;998973,+*',-+*&#$ $&''**++,./246899;=?@@A?>==:9::<998991,-)),++(&##  #%%$'+,).12569:<;=<<>?=<;9989899><989851,+((*))'%""$&&((,-,.226678 9:8:<98:<;;:99;<99:97663+),,*'(*  %*+.1/1365544656689<;;:9:;:9:96211.*&+0,+&)",264/1102235677899;;:;:9 40.,+)+($)*,($#.371./014466799:;9663//.,+*,/)$&,&&-676645545698:863100//./112-(+$(.4455665344236;:8774211/.--25327;-%+0232126776673/01.,+-4754Tp, "',00/1676561/0.-./37:;6t͉;!',167646430..,,157:=:6_էm "*.134422., 1668:63B$,2211.-35461|ˇ6'..//./16676523+}ʽ:"(*,-/366860,((pÒ= &*-1563-&#!O<!'*.4652/(" 7&*.12/(%!&yq #&('(&! $$Ss!#""! !%)&=N  #',1/i5  ")*-32Fwo# $$,-/176LU& #',354658Ui+""*05665769^|j; ,+(-4668;;9@kufP&2,*0569;<=?Fo~paW0)+017<=>>A=Lw|vk[T5(-4:>A@=;:84=Qbb`YMMC&47<=:8<86FKOVLIE&26=<8:9668EHHFB 26789765535/#3/697655643,&04575488252/.2%11532574863.+#'.32243586652*'.,/22466365/.+'-3356767743.,,/035:897503% *,-378876962-"(,.5658752,"+)-42342696." &+*.346652,%# *+-.465.,,.' ',/5,043//+& *-,,./0/.+*" &'./-+' +/-.00/.,)& !*+,-.//.+) **,-/-+& !*+,.//.,' *+,-.-.+&!+,-)!)+,-+$!*+,+(!'*+*+)  '(**($&'&"&##&%$"$"!! t8mk@gl-117-1.3.2/macosx/GL-117/GL-117.xcode/0000755000175000017500000000000010211771236015704 5ustar cedriccedricgl-117-1.3.2/macosx/GL-117/GL-117.xcode/project.pbxproj0000644000175000017500000006030210211770064020757 0ustar cedriccedric// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 39; objects = { 080E96DDFE201D6D7F000001 = { children = ( 20E6114E07D5650600D2F778, 20E6114F07D5650600D2F778, ); isa = PBXGroup; name = Classes; refType = 4; sourceTree = ""; }; 089C165CFE840E0CC02AAC07 = { children = ( 089C165DFE840E0CC02AAC07, ); isa = PBXVariantGroup; name = InfoPlist.strings; refType = 4; sourceTree = ""; }; 089C165DFE840E0CC02AAC07 = { fileEncoding = 10; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; //080 //081 //082 //083 //084 //100 //101 //102 //103 //104 1058C7A0FEA54F0111CA2CBB = { children = ( 20E611C507D5660300D2F778, 20E611C307D565E800D2F778, 20E611C107D565D800D2F778, 1058C7A1FEA54F0111CA2CBB, ); isa = PBXGroup; name = "Linked Frameworks"; refType = 4; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; refType = 0; sourceTree = ""; }; 1058C7A2FEA54F0111CA2CBB = { children = ( 29B97325FDCFA39411CA2CEA, 29B97324FDCFA39411CA2CEA, ); isa = PBXGroup; name = "Other Frameworks"; refType = 4; sourceTree = ""; }; //100 //101 //102 //103 //104 //190 //191 //192 //193 //194 19C28FACFE9D520D11CA2CBB = { children = ( 8D1107320486CEB800E47090, ); isa = PBXGroup; name = Products; refType = 4; sourceTree = ""; }; //190 //191 //192 //193 //194 //200 //201 //202 //203 //204 205E59F807D5A15F00245160 = { isa = PBXFileReference; lastKnownFileType = image.icns; path = "GL-117.icns"; refType = 4; sourceTree = ""; }; 205E59F907D5A15F00245160 = { fileRef = 205E59F807D5A15F00245160; isa = PBXBuildFile; settings = { }; }; 20E6114E07D5650600D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMain.h; refType = 4; sourceTree = ""; }; 20E6114F07D5650600D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMain.m; refType = 4; sourceTree = ""; }; 20E6115107D5650600D2F778 = { fileRef = 20E6114F07D5650600D2F778; isa = PBXBuildFile; settings = { }; }; 20E6115207D5654800D2F778 = { children = ( 20E6115307D5654800D2F778, 20E6115407D5654800D2F778, 20E6115507D5654800D2F778, 20E6115607D5654800D2F778, 20E6115707D5654800D2F778, 20E6115807D5654800D2F778, 20E6115907D5654800D2F778, 20E6115A07D5654800D2F778, 20E6115B07D5654800D2F778, 20E6115C07D5654800D2F778, 20E6115D07D5654800D2F778, 20E6115E07D5654800D2F778, 20E6115F07D5654800D2F778, 20E6116007D5654800D2F778, 20E6116107D5654800D2F778, 20E6116207D5654800D2F778, 20E6116407D5654800D2F778, 20E6116507D5654800D2F778, 20E6116607D5654800D2F778, 20E6116707D5654800D2F778, 20E6116807D5654800D2F778, 20E6116907D5654800D2F778, 20E6116A07D5654800D2F778, 20E6116B07D5654800D2F778, 20E6116C07D5654800D2F778, 20E6116D07D5654800D2F778, 20E6116E07D5654800D2F778, 20E6116F07D5654800D2F778, 20E6117207D5654800D2F778, 20E6117307D5654800D2F778, 20E6117407D5654800D2F778, 20E6117507D5654800D2F778, 20E6117607D5654800D2F778, 20E6117707D5654800D2F778, 20E6117807D5654800D2F778, 20E6117907D5654800D2F778, 20E6117A07D5654800D2F778, 20E6117B07D5654800D2F778, 20E6117C07D5654800D2F778, 20E6117D07D5654800D2F778, 20E6117E07D5654800D2F778, 20E6117F07D5654800D2F778, 20E6118007D5654800D2F778, 20E6118107D5654800D2F778, 20E6118207D5654800D2F778, 20E6118307D5654800D2F778, 20E6118407D5654800D2F778, 20E6118507D5654800D2F778, ); isa = PBXGroup; name = src; path = ../../src; refType = 2; sourceTree = SOURCE_ROOT; }; 20E6115307D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = 3ds.cpp; refType = 4; sourceTree = ""; }; 20E6115407D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 3ds.h; refType = 4; sourceTree = ""; }; 20E6115507D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = aiobject.cpp; refType = 4; sourceTree = ""; }; 20E6115607D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = aiobject.h; refType = 4; sourceTree = ""; }; 20E6115707D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audio.cpp; refType = 4; sourceTree = ""; }; 20E6115807D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio.h; refType = 4; sourceTree = ""; }; 20E6115907D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = cockpit.cpp; refType = 4; sourceTree = ""; }; 20E6115A07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cockpit.h; refType = 4; sourceTree = ""; }; 20E6115B07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = common.cpp; refType = 4; sourceTree = ""; }; 20E6115C07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = common.h; refType = 4; sourceTree = ""; }; 20E6115D07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = conf.cpp; refType = 4; sourceTree = ""; }; 20E6115E07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = conf.h; refType = 4; sourceTree = ""; }; 20E6115F07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dirs.cpp; refType = 4; sourceTree = ""; }; 20E6116007D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = dirs.h; refType = 4; sourceTree = ""; }; 20E6116107D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = effects.cpp; refType = 4; sourceTree = ""; }; 20E6116207D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = effects.h; refType = 4; sourceTree = ""; }; 20E6116407D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = fileloader.cpp; refType = 4; sourceTree = ""; }; 20E6116507D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fileloader.h; refType = 4; sourceTree = ""; }; 20E6116607D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = gl.cpp; refType = 4; sourceTree = ""; }; 20E6116707D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gl.h; refType = 4; sourceTree = ""; }; 20E6116807D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glland.cpp; refType = 4; sourceTree = ""; }; 20E6116907D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glland.h; refType = 4; sourceTree = ""; }; 20E6116A07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = land.cpp; refType = 4; sourceTree = ""; }; 20E6116B07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = land.h; refType = 4; sourceTree = ""; }; 20E6116C07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = loader_tga.cpp; refType = 4; sourceTree = ""; }; 20E6116D07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = loader_tga.h; refType = 4; sourceTree = ""; }; 20E6116E07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; refType = 4; sourceTree = ""; }; 20E6116F07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = main.h; refType = 4; sourceTree = ""; }; 20E6117207D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = maploader.cpp; refType = 4; sourceTree = ""; }; 20E6117307D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = maploader.h; refType = 4; sourceTree = ""; }; 20E6117407D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mathtab.cpp; refType = 4; sourceTree = ""; }; 20E6117507D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mathtab.h; refType = 4; sourceTree = ""; }; 20E6117607D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = menu.cpp; refType = 4; sourceTree = ""; }; 20E6117707D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = menu.h; refType = 4; sourceTree = ""; }; 20E6117807D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = mission.cpp; refType = 4; sourceTree = ""; }; 20E6117907D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mission.h; refType = 4; sourceTree = ""; }; 20E6117A07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = model.cpp; refType = 4; sourceTree = ""; }; 20E6117B07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = model.h; refType = 4; sourceTree = ""; }; 20E6117C07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = net.cpp; refType = 4; sourceTree = ""; }; 20E6117D07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = net.h; refType = 4; sourceTree = ""; }; 20E6117E07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = object.cpp; refType = 4; sourceTree = ""; }; 20E6117F07D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = object.h; refType = 4; sourceTree = ""; }; 20E6118007D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = objload.cpp; refType = 4; sourceTree = ""; }; 20E6118107D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = objload.h; refType = 4; sourceTree = ""; }; 20E6118207D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = pilots.cpp; refType = 4; sourceTree = ""; }; 20E6118307D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pilots.h; refType = 4; sourceTree = ""; }; 20E6118407D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = vertexarray.cpp; refType = 4; sourceTree = ""; }; 20E6118507D5654800D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vertexarray.h; refType = 4; sourceTree = ""; }; 20E6118607D5654800D2F778 = { fileRef = 20E6115307D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6118807D5654800D2F778 = { fileRef = 20E6115507D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6118A07D5654800D2F778 = { fileRef = 20E6115707D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6118C07D5654800D2F778 = { fileRef = 20E6115907D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6118E07D5654800D2F778 = { fileRef = 20E6115B07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119007D5654800D2F778 = { fileRef = 20E6115D07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119207D5654800D2F778 = { fileRef = 20E6115F07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119407D5654800D2F778 = { fileRef = 20E6116107D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119707D5654800D2F778 = { fileRef = 20E6116407D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119907D5654800D2F778 = { fileRef = 20E6116607D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119B07D5654800D2F778 = { fileRef = 20E6116807D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119D07D5654800D2F778 = { fileRef = 20E6116A07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E6119F07D5654800D2F778 = { fileRef = 20E6116C07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611A107D5654800D2F778 = { fileRef = 20E6116E07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611A507D5654800D2F778 = { fileRef = 20E6117207D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611A707D5654800D2F778 = { fileRef = 20E6117407D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611A907D5654800D2F778 = { fileRef = 20E6117607D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611AB07D5654800D2F778 = { fileRef = 20E6117807D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611AD07D5654800D2F778 = { fileRef = 20E6117A07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611AF07D5654800D2F778 = { fileRef = 20E6117C07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611B107D5654800D2F778 = { fileRef = 20E6117E07D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611B307D5654800D2F778 = { fileRef = 20E6118007D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611B507D5654800D2F778 = { fileRef = 20E6118207D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611B707D5654800D2F778 = { fileRef = 20E6118407D5654800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611C107D565D800D2F778 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = /System/Library/Frameworks/GLUT.framework; refType = 0; sourceTree = ""; }; 20E611C207D565D800D2F778 = { fileRef = 20E611C107D565D800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611C307D565E800D2F778 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; refType = 0; sourceTree = ""; }; 20E611C407D565E800D2F778 = { fileRef = 20E611C307D565E800D2F778; isa = PBXBuildFile; settings = { }; }; 20E611C507D5660300D2F778 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; refType = 0; sourceTree = ""; }; 20E611C607D5660300D2F778 = { fileRef = 20E611C507D5660300D2F778; isa = PBXBuildFile; settings = { }; }; 20E611D807D56B6F00D2F778 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; refType = 4; sourceTree = ""; }; 20E6133D07D56EC700D2F778 = { isa = PBXFileReference; lastKnownFileType = folder; name = maps; path = ../../maps; refType = 2; sourceTree = SOURCE_ROOT; }; 20E6134407D56EC700D2F778 = { fileRef = 20E6133D07D56EC700D2F778; isa = PBXBuildFile; settings = { }; }; 20E6134507D56F0700D2F778 = { isa = PBXFileReference; lastKnownFileType = folder; name = models; path = ../../models; refType = 2; sourceTree = SOURCE_ROOT; }; 20E6137F07D56F0700D2F778 = { isa = PBXFileReference; lastKnownFileType = folder; name = music; path = ../../music; refType = 2; sourceTree = SOURCE_ROOT; }; 20E6138A07D56F0700D2F778 = { isa = PBXFileReference; lastKnownFileType = folder; name = sounds; path = ../../sounds; refType = 2; sourceTree = SOURCE_ROOT; }; 20E6139707D56F0700D2F778 = { isa = PBXFileReference; lastKnownFileType = folder; name = textures; path = ../../textures; refType = 2; sourceTree = SOURCE_ROOT; }; 20E613F407D56F0700D2F778 = { fileRef = 20E6134507D56F0700D2F778; isa = PBXBuildFile; settings = { }; }; 20E613F507D56F0700D2F778 = { fileRef = 20E6137F07D56F0700D2F778; isa = PBXBuildFile; settings = { }; }; 20E613F607D56F0700D2F778 = { fileRef = 20E6138A07D56F0700D2F778; isa = PBXBuildFile; settings = { }; }; 20E613F707D56F0700D2F778 = { fileRef = 20E6139707D56F0700D2F778; isa = PBXBuildFile; settings = { }; }; //200 //201 //202 //203 //204 //290 //291 //292 //293 //294 29B97313FDCFA39411CA2CEA = { buildSettings = { }; buildStyles = ( 4A9504CCFFE6A4B311CA0CBA, 4A9504CDFFE6A4B311CA0CBA, ); hasScannedForEncodings = 1; isa = PBXProject; mainGroup = 29B97314FDCFA39411CA2CEA; projectDirPath = ""; targets = ( 8D1107260486CEB800E47090, ); }; 29B97314FDCFA39411CA2CEA = { children = ( 080E96DDFE201D6D7F000001, 29B97315FDCFA39411CA2CEA, 29B97317FDCFA39411CA2CEA, 29B97323FDCFA39411CA2CEA, 19C28FACFE9D520D11CA2CBB, ); isa = PBXGroup; name = "GL-117"; path = ""; refType = 4; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA = { children = ( 20E611D807D56B6F00D2F778, 20E6115207D5654800D2F778, 32CA4F630368D1EE00C91783, ); isa = PBXGroup; name = "Other Sources"; path = ""; refType = 4; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA = { children = ( 205E59F807D5A15F00245160, 20E6134507D56F0700D2F778, 20E6137F07D56F0700D2F778, 20E6138A07D56F0700D2F778, 20E6139707D56F0700D2F778, 20E6133D07D56EC700D2F778, 8D1107310486CEB800E47090, 089C165CFE840E0CC02AAC07, ); isa = PBXGroup; name = Resources; path = ""; refType = 4; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA = { children = ( 1058C7A0FEA54F0111CA2CBB, 1058C7A2FEA54F0111CA2CBB, ); isa = PBXGroup; name = Frameworks; path = ""; refType = 4; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; refType = 0; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; refType = 0; sourceTree = ""; }; //290 //291 //292 //293 //294 //320 //321 //322 //323 //324 32CA4F630368D1EE00C91783 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GL-117_Prefix.pch"; refType = 4; sourceTree = ""; }; //320 //321 //322 //323 //324 //4A0 //4A1 //4A2 //4A3 //4A4 4A9504CCFFE6A4B311CA0CBA = { buildSettings = { COPY_PHASE_STRIP = NO; GCC_ALTIVEC_EXTENSIONS = YES; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 3; ZERO_LINK = NO; }; isa = PBXBuildStyle; name = Development; }; 4A9504CDFFE6A4B311CA0CBA = { buildSettings = { COPY_PHASE_STRIP = YES; GCC_ENABLE_FIX_AND_CONTINUE = NO; ZERO_LINK = NO; }; isa = PBXBuildStyle; name = Deployment; }; //4A0 //4A1 //4A2 //4A3 //4A4 //8D0 //8D1 //8D2 //8D3 //8D4 8D1107260486CEB800E47090 = { buildPhases = ( 8D1107290486CEB800E47090, 8D11072C0486CEB800E47090, 8D11072E0486CEB800E47090, ); buildRules = ( ); buildSettings = { GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "GL-117_Prefix.pch"; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = "GL-117"; WRAPPER_EXTENSION = app; }; dependencies = ( ); isa = PBXNativeTarget; name = "GL-117"; productInstallPath = "$(HOME)/Applications"; productName = "GL-117"; productReference = 8D1107320486CEB800E47090; productType = "com.apple.product-type.application"; }; 8D1107290486CEB800E47090 = { buildActionMask = 2147483647; files = ( 8D11072B0486CEB800E47090, 20E6134407D56EC700D2F778, 20E613F407D56F0700D2F778, 20E613F507D56F0700D2F778, 20E613F607D56F0700D2F778, 20E613F707D56F0700D2F778, 205E59F907D5A15F00245160, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8D11072B0486CEB800E47090 = { fileRef = 089C165CFE840E0CC02AAC07; isa = PBXBuildFile; settings = { }; }; 8D11072C0486CEB800E47090 = { buildActionMask = 2147483647; files = ( 20E6115107D5650600D2F778, 20E6118607D5654800D2F778, 20E6118807D5654800D2F778, 20E6118A07D5654800D2F778, 20E6118C07D5654800D2F778, 20E6118E07D5654800D2F778, 20E6119007D5654800D2F778, 20E6119207D5654800D2F778, 20E6119407D5654800D2F778, 20E6119707D5654800D2F778, 20E6119907D5654800D2F778, 20E6119B07D5654800D2F778, 20E6119D07D5654800D2F778, 20E6119F07D5654800D2F778, 20E611A107D5654800D2F778, 20E611A507D5654800D2F778, 20E611A707D5654800D2F778, 20E611A907D5654800D2F778, 20E611AB07D5654800D2F778, 20E611AD07D5654800D2F778, 20E611AF07D5654800D2F778, 20E611B107D5654800D2F778, 20E611B307D5654800D2F778, 20E611B507D5654800D2F778, 20E611B707D5654800D2F778, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8D11072E0486CEB800E47090 = { buildActionMask = 2147483647; files = ( 8D11072F0486CEB800E47090, 20E611C207D565D800D2F778, 20E611C407D565E800D2F778, 20E611C607D5660300D2F778, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 8D11072F0486CEB800E47090 = { fileRef = 1058C7A1FEA54F0111CA2CBB; isa = PBXBuildFile; settings = { }; }; 8D1107310486CEB800E47090 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; refType = 4; sourceTree = ""; }; 8D1107320486CEB800E47090 = { explicitFileType = wrapper.application; includeInIndex = 0; isa = PBXFileReference; path = "GL-117.app"; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; }; rootObject = 29B97313FDCFA39411CA2CEA; } gl-117-1.3.2/macosx/GL-117/GL-117_Prefix.pch0000644000175000017500000000021710211226520016603 0ustar cedriccedric// // Prefix header for all source files of the 'GL-117' target in the 'GL-117' project // #ifdef __OBJC__ #import #endif gl-117-1.3.2/macosx/GL-117/Info.plist0000644000175000017500000000141310214472322015737 0ustar cedriccedric CFBundleDevelopmentRegion English CFBundleExecutable GL-117 CFBundleIconFile GL-117 CFBundleIdentifier com.apple.myCocoaApp CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.3.2 NSMainNibFile MainMenu NSPrincipalClass NSApplication gl-117-1.3.2/macosx/GL-117/SDLMain.h0000644000175000017500000000046310160006402015363 0ustar cedriccedric/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs */ #import @interface SDLMain : NSObject @end gl-117-1.3.2/macosx/GL-117/SDLMain.m0000644000175000017500000001702610211431476015405 0ustar cedriccedric/* SDLMain.m - main entry point for our Cocoa-ized SDL app Initial Version: Darrell Walisser Non-NIB-Code & other changes: Max Horn Feel free to customize this file to suit your needs */ #import #import "SDLMain.h" #import /* for MAXPATHLEN */ #import /* Use this flag to determine whether we use SDLMain.nib or not */ #define SDL_USE_NIB_FILE 0 static int gArgc; static char **gArgv; static BOOL gFinderLaunch; #if SDL_USE_NIB_FILE /* A helper category for NSString */ @interface NSString (ReplaceSubString) - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; @end #else /* An internal Apple class used to setup Apple menus */ @interface NSAppleMenuController:NSObject {} - (void)controlMenu:(NSMenu *)aMenu; @end #endif @interface SDLApplication : NSApplication @end @implementation SDLApplication /* Invoked from the Quit menu item */ - (void)terminate:(id)sender { /* Post a SDL_QUIT event */ SDL_Event event; event.type = SDL_QUIT; SDL_PushEvent(&event); } @end /* The main class of the application, the application's delegate */ @implementation SDLMain /* Set the working directory to the .app's parent directory */ - (void) setupWorkingDirectory:(BOOL)shouldChdir { char parentdir[MAXPATHLEN]; char *c; strncpy ( parentdir, gArgv[0], sizeof(parentdir) ); c = (char*) parentdir; while (*c != '\0') /* go to end */ c++; while (*c != '/') /* back up to parent */ c--; *c++ = '\0'; /* cut off last part (binary name) */ if (shouldChdir) { assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */ } } #if SDL_USE_NIB_FILE /* Fix menu to contain the real app name instead of "SDL App" */ - (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName { NSRange aRange; NSEnumerator *enumerator; NSMenuItem *menuItem; aRange = [[aMenu title] rangeOfString:@"SDL App"]; if (aRange.length != 0) [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; enumerator = [[aMenu itemArray] objectEnumerator]; while ((menuItem = [enumerator nextObject])) { aRange = [[menuItem title] rangeOfString:@"SDL App"]; if (aRange.length != 0) [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; if ([menuItem hasSubmenu]) [self fixMenu:[menuItem submenu] withAppName:appName]; } [ aMenu sizeToFit ]; } #else void setupAppleMenu(void) { /* warning: this code is very odd */ NSAppleMenuController *appleMenuController; NSMenu *appleMenu; NSMenuItem *appleMenuItem; appleMenuController = [[NSAppleMenuController alloc] init]; appleMenu = [[NSMenu alloc] initWithTitle:@""]; appleMenuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; [appleMenuItem setSubmenu:appleMenu]; /* yes, we do need to add it and then remove it -- if you don't add it, it doesn't get displayed if you don't remove it, you have an extra, titleless item in the menubar when you remove it, it appears to stick around very, very odd */ [[NSApp mainMenu] addItem:appleMenuItem]; [appleMenuController controlMenu:appleMenu]; [[NSApp mainMenu] removeItem:appleMenuItem]; [appleMenu release]; [appleMenuItem release]; } /* Create a window menu */ void setupWindowMenu(void) { NSMenu *windowMenu; NSMenuItem *windowMenuItem; NSMenuItem *menuItem; windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; /* "Minimize" item */ menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [windowMenu addItem:menuItem]; [menuItem release]; /* Put menu into the menubar */ windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; [windowMenuItem setSubmenu:windowMenu]; [[NSApp mainMenu] addItem:windowMenuItem]; /* Tell the application object that this is now the window menu */ [NSApp setWindowsMenu:windowMenu]; /* Finally give up our references to the objects */ [windowMenu release]; [windowMenuItem release]; } /* Replacement for NSApplicationMain */ void CustomApplicationMain (argc, argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDLMain *sdlMain; /* Ensure the application object is initialised */ [SDLApplication sharedApplication]; /* Set up the menubar */ [NSApp setMainMenu:[[NSMenu alloc] init]]; setupAppleMenu(); setupWindowMenu(); /* Create SDLMain and make it the app delegate */ sdlMain = [[SDLMain alloc] init]; [NSApp setDelegate:sdlMain]; /* Start the main event loop */ [NSApp run]; [sdlMain release]; [pool release]; } #endif /* Called when the internal event loop has just started running */ - (void) applicationDidFinishLaunching: (NSNotification *) note { int status; /* Set the working directory to the .app's parent directory */ [self setupWorkingDirectory:gFinderLaunch]; #if SDL_USE_NIB_FILE /* Set the main menu to contain the real app name instead of "SDL App" */ [self fixMenu:[NSApp mainMenu] withAppName:[[NSProcessInfo processInfo] processName]]; #endif /* Hand off to main application code */ status = SDL_main (gArgc, gArgv); /* We're done, thank you for playing */ exit(status); } @end @implementation NSString (ReplaceSubString) - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString { unsigned int bufferSize; unsigned int selfLen = [self length]; unsigned int aStringLen = [aString length]; unichar *buffer; NSRange localRange; NSString *result; bufferSize = selfLen + aStringLen - aRange.length; buffer = NSAllocateMemoryPages(bufferSize*sizeof(unichar)); /* Get first part into buffer */ localRange.location = 0; localRange.length = aRange.location; [self getCharacters:buffer range:localRange]; /* Get middle part into buffer */ localRange.location = 0; localRange.length = aStringLen; [aString getCharacters:(buffer+aRange.location) range:localRange]; /* Get last part into buffer */ localRange.location = aRange.location + aRange.length; localRange.length = selfLen - localRange.location; [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; /* Build output string */ result = [NSString stringWithCharacters:buffer length:bufferSize]; NSDeallocateMemoryPages(buffer, bufferSize); return result; } @end #ifdef main # undef main #endif /* Main entry point to executable - should *not* be SDL_main! */ int main (int argc, char **argv) { /* Copy the arguments into a global variable */ int i; /* This is passed if we are launched by double-clicking */ if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { gArgc = 1; gFinderLaunch = YES; } else { gArgc = argc; gFinderLaunch = NO; } gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1)); assert (gArgv != NULL); for (i = 0; i < gArgc; i++) gArgv[i] = argv[i]; gArgv[i] = NULL; #if SDL_USE_NIB_FILE [SDLApplication poseAsClass:[NSApplication class]]; NSApplicationMain (argc, argv); #else CustomApplicationMain (argc, argv); #endif return 0; } gl-117-1.3.2/macosx/GL-117/version.plist0000644000175000017500000000071210211226520016524 0ustar cedriccedric BuildVersion 92 CFBundleVersion 1.0 ProductBuildVersion 7K571 ProjectName NibPBTemplates SourceVersion 1200000 gl-117-1.3.2/macosx/README0000644000175000017500000000516010211774414014046 0ustar cedriccedricMac OS X Port of GL-117 Being an SDL/OpenGL program, there were three basic ways to port this to OS X: The best would be to make the configuration and build process Framework-aware. This would make a whole bunch of stuff work better, and is the right thing to do, but it's more work than I want to do right now. :-) The worst thing to do would be to compile everything plain-UNIX style as libraries and such. This would be bad because we'd either have to compile it static, so the libraries would get out of date, or make the user install a bunch of dynamic libraries. The way I did it was to take the path of least resistance. I bypassed the configure script to make my own config.h, loaded the code into Xcode, and built it against the frameworks in the Apple style. Not a lot of work, and only a couple of tweaks to the original source later, we're in business. Hooray! Prerequisites Whether you want to compile it for yourself or just run it, you need the SDL Framework. You can get it from: http://www.libsdl.org/release/SDL-1.2.8.pkg.tar.gz Once you've installed that, you should be in business. Open GL-117.xcode and put the hammer down. It should build and run. Drag the resulting application wherever you like and enjoy! Notes and Future Improvements I put the support files in the App wrapper, as you should, but I didn't use the methods to get them from there. That's sort of a hack, but it should work. It did require one change to the original code. The old code was hardwired to look in "DATADIR/gl-117", but that was inconvenient here, so I made DATADIR be the Resource folder and took "/gl-117" out of the path. They get copied in during the build process. The config.h thing is a bit of a hack, but its heart is in the right place. As I mentioned earlier, if configure and friends were Framework aware, we wouldn't need to do that and could then either build it from Xcode or with make if we generated the necessary files. The SDLMain files are from the SDL distribution. I modified them only enough to make them compile cleanly. Could use a simple NIB. You won't even see it if you run the program fullscreen. I just think people should be able to find the website if they didn't know where it is. And I could stick my name in there too. :-) There are a lot of code generation options in Xcode that you can play with if you want to make it G5-specific or something. I tried to keep it relatively conservative. Fact is, you need a studly graphics card and the CPU matters a lot less. On a G4 with a GeForce 2, it's pretty slow. On a G4 with a GeForce 4, it's OK. Still runs better on the GeForce 5 in my PC, though. gl-117-1.3.2/Makefile.am0000644000175000017500000000112510145416156013727 0ustar cedriccedricAUTOMAKE_OPTIONS = gnu SUBDIRS = src EXTRA_DIST = gl117dir = $(datadir)/gl-117 glmodelsdir = $(gl117dir)/models glmusicdir = $(gl117dir)/music glsoundsdir = $(gl117dir)/sounds gltexturesdir = $(gl117dir)/textures glmodels_DATA = models/*.* glmusic_DATA = music/*.* glsounds_DATA = sounds/*.* gltextures_DATA = textures/*.* #glbin_PROGRAMS = gl-117 #gl_117_SOURCES = src/main.cpp src/gl.cpp src/model.cpp src/3ds.cpp src/audio.cpp src/land.cpp src/glland.cpp src/aiobject.cpp src/effects.cpp src/roam.cpp src/net.cpp src/mathtab.cpp src/dirs.cpp #noinst_HEADERS = DEFS=-I. -I.. gl-117-1.3.2/Makefile.in0000644000175000017500000005300410145416202013733 0ustar cedriccedric# Makefile.in generated by automake 1.8.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ depcomp install-sh missing mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive am__installdirs = "$(DESTDIR)$(glmodelsdir)" "$(DESTDIR)$(glmusicdir)" "$(DESTDIR)$(glsoundsdir)" "$(DESTDIR)$(gltexturesdir)" glmodelsDATA_INSTALL = $(INSTALL_DATA) glmusicDATA_INSTALL = $(INSTALL_DATA) glsoundsDATA_INSTALL = $(INSTALL_DATA) gltexturesDATA_INSTALL = $(INSTALL_DATA) DATA = $(glmodels_DATA) $(glmusic_DATA) $(glsounds_DATA) \ $(gltextures_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ #glbin_PROGRAMS = gl-117 #gl_117_SOURCES = src/main.cpp src/gl.cpp src/model.cpp src/3ds.cpp src/audio.cpp src/land.cpp src/glland.cpp src/aiobject.cpp src/effects.cpp src/roam.cpp src/net.cpp src/mathtab.cpp src/dirs.cpp #noinst_HEADERS = DEFS = -I. -I.. DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = gnu SUBDIRS = src EXTRA_DIST = gl117dir = $(datadir)/gl-117 glmodelsdir = $(gl117dir)/models glmusicdir = $(gl117dir)/music glsoundsdir = $(gl117dir)/sounds gltexturesdir = $(gl117dir)/textures glmodels_DATA = models/*.* glmusic_DATA = music/*.* glsounds_DATA = sounds/*.* gltextures_DATA = textures/*.* all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: 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) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi 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) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 uninstall-info-am: install-glmodelsDATA: $(glmodels_DATA) @$(NORMAL_INSTALL) test -z "$(glmodelsdir)" || $(mkdir_p) "$(DESTDIR)$(glmodelsdir)" @list='$(glmodels_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(glmodelsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(glmodelsdir)/$$f'"; \ $(glmodelsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(glmodelsdir)/$$f"; \ done uninstall-glmodelsDATA: @$(NORMAL_UNINSTALL) @list='$(glmodels_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f '$(DESTDIR)$(glmodelsdir)/$$f'"; \ rm -f "$(DESTDIR)$(glmodelsdir)/$$f"; \ done install-glmusicDATA: $(glmusic_DATA) @$(NORMAL_INSTALL) test -z "$(glmusicdir)" || $(mkdir_p) "$(DESTDIR)$(glmusicdir)" @list='$(glmusic_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(glmusicDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(glmusicdir)/$$f'"; \ $(glmusicDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(glmusicdir)/$$f"; \ done uninstall-glmusicDATA: @$(NORMAL_UNINSTALL) @list='$(glmusic_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f '$(DESTDIR)$(glmusicdir)/$$f'"; \ rm -f "$(DESTDIR)$(glmusicdir)/$$f"; \ done install-glsoundsDATA: $(glsounds_DATA) @$(NORMAL_INSTALL) test -z "$(glsoundsdir)" || $(mkdir_p) "$(DESTDIR)$(glsoundsdir)" @list='$(glsounds_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(glsoundsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(glsoundsdir)/$$f'"; \ $(glsoundsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(glsoundsdir)/$$f"; \ done uninstall-glsoundsDATA: @$(NORMAL_UNINSTALL) @list='$(glsounds_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f '$(DESTDIR)$(glsoundsdir)/$$f'"; \ rm -f "$(DESTDIR)$(glsoundsdir)/$$f"; \ done install-gltexturesDATA: $(gltextures_DATA) @$(NORMAL_INSTALL) test -z "$(gltexturesdir)" || $(mkdir_p) "$(DESTDIR)$(gltexturesdir)" @list='$(gltextures_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " $(gltexturesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gltexturesdir)/$$f'"; \ $(gltexturesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gltexturesdir)/$$f"; \ done uninstall-gltexturesDATA: @$(NORMAL_UNINSTALL) @list='$(gltextures_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ echo " rm -f '$(DESTDIR)$(gltexturesdir)/$$f'"; \ rm -f "$(DESTDIR)$(gltexturesdir)/$$f"; \ done # 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. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; 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; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if (etags --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ else \ include_option=--include; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || mkdir "$(distdir)/$$subdir" \ || exit 1; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="../$(top_distdir)" \ distdir="../$(distdir)/$$subdir" \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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 $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir $(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__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) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(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 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { 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)$(glmodelsdir)" "$(DESTDIR)$(glmusicdir)" "$(DESTDIR)$(glsoundsdir)" "$(DESTDIR)$(gltexturesdir)"; 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_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 mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-glmodelsDATA install-glmusicDATA \ install-glsoundsDATA install-gltexturesDATA install-exec-am: install-info: install-info-recursive install-man: 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 pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-glmodelsDATA uninstall-glmusicDATA \ uninstall-glsoundsDATA uninstall-gltexturesDATA \ uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ check-am clean clean-generic clean-recursive ctags \ ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ dist-tarZ dist-zip distcheck distclean distclean-generic \ distclean-hdr distclean-recursive distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am \ install-glmodelsDATA install-glmusicDATA install-glsoundsDATA \ install-gltexturesDATA install-info install-info-am \ install-man install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-glmodelsDATA uninstall-glmusicDATA \ uninstall-glsoundsDATA uninstall-gltexturesDATA \ uninstall-info-am # 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: gl-117-1.3.2/maps/0000755000175000017500000000000010145416156012634 5ustar cedriccedricgl-117-1.3.2/maps/CVS/0000755000175000017500000000000010145416156013267 5ustar cedriccedricgl-117-1.3.2/maps/CVS/Entries0000644000175000017500000000025110145416156014621 0ustar cedriccedric/demo1.map/1.2/Sun Feb 1 14:47:58 2004// /maps.txt/1.1/Sat Jan 24 16:07:02 2004// /tirol.map/1.2/Sun Feb 1 14:47:58 2004// /tirol.tga/1.1/Sat Jan 24 16:07:02 2004// D gl-117-1.3.2/maps/CVS/Repository0000644000175000017500000000001410145416156015364 0ustar cedriccedricgl-117/maps gl-117-1.3.2/maps/CVS/Root0000644000175000017500000000006310145416156014134 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/maps/demo1.map0000644000175000017500000001414310145416156014343 0ustar cedriccedric############################################################################### # This is an example mission text file. # Important rules: # - There are several blocks like "INFO" consisting of special attributes # - Assigments have the form "attribute = value" and are put in one line # - All attributes are optional if not described as "required" # - Everything is case-insensitive (iNfO=info=INFO) # - Quotes have to be used if a value consists of whitespace (tabs, spaces) # - Comments start with a '#' and end with a line feed (end of line) # - Syntax errors are currently displayed on stderr when initing the mission ############################################################################### ############################################################################### # INFO block: # NAME: Mission name # BRIEFING: Mission briefing # PILOTnn: Allied pilot number nn, nn in [1...10] # - Allied fighters get their pilots in the order defined here # - Possible values (predefined in this order): # PRIMETIME, HEPTARGON, LARA, SHARK, BOSS, DRDOOM, SHADOW, MATRIX, # FIREBIRD, THUNDER # FIGHTERn: Set fighter selection number n, n in [1...3] # - Possible values: FALCON, HAWK, STORM, HAWK2, REDARROW, PHOENIX # - Predefined: FIGHTER1=FALCON, FIGHTER2=HAWK, FIGHTER3=STORM # WEAPONn: Set weapon pack selection number n, n in [1...3] # - Possible values: AAMPACK, AGMPACK, DFPACK # - Predefined: WEAPON1=AAMPACK, WEAPON2=AGMPACK, WEAPON3=DFPACK # MAXTIME: Maximum time in seconds (float) to receive a score bonus # Predefined: 120s ############################################################################### INFO name = "DEMO1" briefing = "We place an enemy fighter near the player and a surface air cannon to flat ground. After 15 seconds dr doom will appear near the player and help." PiLoT1 = DRDOOM pilot2 = primetime maxtime = 150 ############################################################################### # TERRAIN block: # TYPE: Type of landscape to be randomly generated # ALPINE (predefined), ALPINE_LOW, ALPINE_EROSION, ALPINE_SEA, SEA, MOON, # CANYON, DESERT # FILE: 32 bit TGA file, alpha channel=height values, RGB=landscape type # The colors for landscape types depend on the landscape type # Alpine: blue=water, dark green=woods, light green=grass, white=glacier, # grey=gravel, dark grey=rocks # Canyon: blue=water, white=sand, red=stone/rocks, brown=tree&sand # Desert: blue=water, green=cactus, yellow=sand # SCALEHEIGHT: Scaling factor for height values # TREE[0-2]: tree borders for deciduous, coniferious, mixed, pine woods # HEADING: Degree of northern direction, 0...360, 0 is predefined # WEATHER: SUNNY, CLEAR, CLOUDY, DULL, THUNDERSTORM # TIME: Time of the day (hours) in [0...24], determines day/night, sun level ############################################################################### TERRAIN type = alpine_erosion heading = 90 weather = sunny time = 8 ############################################################################### # OBJECT block: a block for each object, first object is the player! # TYPE: Type of object (ignored for the player) # FALCON, SWALLOW, HAWK, HAWK2, BUZZARD, CROW, PHOENIX, REDARROW, # BLACKBIRD, STORM, TRANSPORT, WIESEL, PANTHER, SAM, SAC, PICKUP, TRUCK, # TRUCK2, SAMTRUCK, DESTROYER, CRUISER, TENT, BIGTENT, CONTAINER, HALL, # HALL2, OILRIG, COMPLEX, RADAR, MOONBASE, DEPOT, LASERBARRIER, ASTEROID # PARTY: 1 for player ally, any other value for enemies # LEVEL: Level of artificial intelligence in [0...10], 10 is highest # Note that the difficulty settings influence the level additionally! # X: Relative x coordinate on the map # Y: Relative y coordinate on the map # INITTIME: Time in seconds (float value) after that the fighter appeares # CRITICAL: 1 for mission objective, 0 else # - Enemies are critical at default, allies are not critical at default # - If any allied critical object is destroyed, the mission is failed # - If all critical enemy objects are destroyed, the mission is successful ############################################################################### OBJECT # Player x = 0 y = 0 # always: type is taken from selection, party=1, inittime=0, critical=1 OBJECT # The first enemy type = crow party = 0 level = 2 x = 40 y = 40 # implicit: inittime=0, critical=1 ############################################################################### # RELCOORDS block: set origin of the coordinate system, (0,0) is predefined # FIND: set origin to PLAYER, LASTOBJECT, FLATTERRAIN # Use this feature to place enemies later on near to the player, # or to place ground objects on flat terrain # QUADRANT: Set map quadrant in [1...16] for searching flat terrain # - Quadrants are 1...4 first row, 5...8 second row, etc. # - Note that 4 and 1, or 16 and 1 are adjacent due to the cyclic map # - Leave the quadrant to get the best flat terrain of the map ############################################################################### RELCOORDS find = flatterrain quadrant = 1 # player is at the corner of the first quadrant # so lets set (0,0) to flat terrain somewhere in quadrant 1 OBJECT # place a surface-air-cannon type = sac level = 0 party = 0 x = 0 y = 0 # (0,0) is now at the flat terrain, not the player! critical = 1 RELCOORDS find = player # set player as the origin of the coordinate system OBJECT # get DrDoom (see INFO) as reinforcement after 15 seconds type = falcon party = 1 x = 0 y = 50 inittime = 15 ############################################################################### # TEXT block: print text to the screen # MESSAGE: the message string, currently only one line # STARTTIME: time in seconds (float value) # DELAY: describes how long the text is displayed ############################################################################### TEXT message = "dr doom has arrived!" starttime = 15 delay = 3.5 gl-117-1.3.2/maps/maps.txt0000644000175000017500000000014010145416156014330 0ustar cedriccedric# This file contains a list of all map file names that shall be loaded demo1.map tirol.map gl-117-1.3.2/maps/tirol.map0000644000175000017500000000112110145416156014457 0ustar cedriccedricINFO NAME = "AUSTRIA: TIROL" briefing = "This example shows how to load a tga file. The alpha channel contains 256 levels for the height map and the landscape is derived from typical colors. The map shows the surface of southern germany through tirol." TERRAIN file = tirol.tga scaleheight = 0.15 tree1 = 0 tree2 = 10 tree3 = 40 heading = 0 weather = sunny time = 10 OBJECT # Player x = 240 # start at some distance in front of the German highest mountain Zugspitze y = 120 OBJECT # a dummy object type = tent party = 0 x = 0 y = 0 gl-117-1.3.2/maps/tirol.tga0000644000175000017500000401002610145416156014465 0ustar cedriccedric                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       !!!!!!       "######"!  !!     !"#####"!  !!                             !!!!!     !!!!!!      """"!!         ###""!       $$##""        $$##""       !!!!!!                                                                                  !!!!        !!""""""!!!         !""##$$####""!!!    !!!!!!!      !"##$$$$####""!!   !$'*+**)))***'%####$#    !""$%''&&%%%$##""!!  %&*/34321123440,))*+,,&!   !""%')))(''&&%%$#"!  $)*06<<;:88:<>>94/.0243-' !"!   ""%(+++*))('&&%$""  %*+17<=<:99;=??:5001354.("!""#"   !"%(+++*))('&&%#"" "  %+,04788889;>AA=:6666661-((((''#   "$&''&&&%$$#"! '$  &,-/0224688<?BB@><<:97742//.-,+(#     !!  """###""!! +(" &-.--,-0378;?CCCCBB>;8876554200,(%$    ###"""  +(# &,--,,,/367;?CCCCBB?;8776664200,)%$   !###""" '%! "'(())*-0449=AAA@??;733445531/.*&"!     !!!!  #" ""$%''*.126:>?>=<;73//02331/-,(#     """""""!!   "%%(+./38<<;:873.**,/220-+*%       !$$%%%%%%$$#"!! "%%(+..37;;:9762.)),.11/-*)$    !$$%%%%%%%%#"!!  !#$'),-03665321-)&%'())('%%!     ""##$$$$$$#"""!   "#&(++-/110.-,)%"""""""!     !""""###"""""!!!  ""%')*+,,,+)('$"     !!!!!!"""""##"   ""%'**++,,*)''$!     !!!!"""""##"   #%%')++,-..,*('&$##"! !""""""!!     !!!!!!!   !%()*+--.///-+((('''&%%%&'''((('&$""    #! #'+,,-../011.,))**+++***+,------*'%$    #! #'++,-../011.,))*+,,,+++,-.....-*(%$    #!  $''()++,-//-,++,-..//0001110.-,)&#"   "!  "#$&'()+,,,,,,-.00134455441.++($!    ""  "$%'(**+,-./012468988762.*)&"    ""  "%%'(**+,../012468887662.))%"    #" !! ""$'))*+,--..//011223320/.+(%%"     !!!!!!! $#  !"##! #&&)+.../////000000/.--+)''%#!!     !!"#$$##""! %#  $%%&&%#!#&**-02322221110000/-+((%#  #$#"!      !!!"""#%&&%%$$"! %# !&&&&&&$" #'*+.0333322211100//-*('%"  $$$#!!     !!!!"""#%&&%%$$"! #! !(..-+*)('&&')++.1456677542210..-,**(&##"! #&'&&%%"      !!!!"""##$$$###"!    (/5631.--,,,++++/26689;;96431/------+)('&%##! "%))))))'%#"     !!"""!!!"""""""!!!  $&.6=>:6111111/-,,/377:=??<9652/,,./00/-,+*('&%#""%(++,---,*(("       !! !!!!"""!!!!   &'/7>?;73322320.,,0377:=??=:7630--./11/.,,+)''%$""%(+,,-..,+)(#       !!! !!!!"""!!!!  "',.4:@@@?==;976543344569;>>>>>=:733334320//-,**(&%%(,/0//..,*((#    !!!!""""""!! !!!!!""!! !#(.349=BBDFGGC?;;::::86557:==@CEEA>:9876653110/--+)''+04421/.,*('$!     !!!!!!"""""!!!!!!!""###"""!! "'(.4::=@CDHMQQKE@??@A@<84479<=BGLLIE@@=;9976443210.,)*.38852//,*''%"        !!!!!!""##""!!!"""##$$$###"! "()/4:;>ACDINRRLFA@AABB>:668:=>CHMMJFBA?<::87554311/,*+/489630/-*('%#!          !!!!!!""##""!!!"""##$$$$##"! "().389=AEFHKMNKIGGGHIZZZIHFEDEEEFILNOMJHHEB@??>==;977420037;;85220/..,*(($        !!! !!!""""####"!!""""##$$##""!! "()-278=BFGHHIIJKMMNOPZZZQZZZRZZZSZZZSZZZSZZZRPNNNOPPPOONKIFEEEEEB@=<:7558;==:7444444310/+&"!      !!!"###"!!  !""###$$#"""""#######""!! !'(,045<BGHFECDHMRSTUZZZWW[^bZZZbZZZ^ZZZZWVTRQQRTUUROLKLMMMJFBB?=::<>??=:7789;;:8762-('!     !""#$%%%%%%$#""!!  !"##$$$$$#"""#######""!! !'(,045;AGGEDBBGLRRTUZZZWZZZWZZZ[ZZZ_ZZZbZZZbZZZ_[XWUSQQRTVVSPMMMNONKGCB@>;;=>@@=:779:<<;:984/*("     !"##$%&&&%%%$#""!! !"##$$$$$#""########""!!!  %%),005:>>=<;<@DHIKNPQZZZTZZZWZZZ[ZZZ[ZZZZZZZYZZZXXVTRRSUWWVUUTTSRRMIDCB@>>@ACC?<99;>@@ABBA=832+$    !"#$%%%%%%&'))*+,,+*))'%##"!  !""#$%%%$$$%&''&&&&&&%%%$$$$$$$#"""!!!!! "#&)+,/25555558;>?BFIJMORRZZZTZZZVZZZXZZZXZZZVZZZTZZZRZZZRZZZTZZZVZZZXZZZXZZZYZZZ[ZZZ\\ZXUTOJEDCBAACDEEB>::>ADEGIKJFA=;4,$#    !&*+,-..-+**+-./01221/--*'$#"!!""#$%%&&&&')***)))))**))))))))('&%%$$$##""!  #%'()+,,-../02459>BCEGIJNSXXVZZZUZZZSZZZSZZZTZZZVZZZXZZZYZZZ\ZZZ_ZZZbZZZb_\XWQKFEDDDDEGHGD@<<@DHILPSSOJFD<3+)%      !'-33567741//024567886410,(%$"  !!#$&&''((*,-.-,,,,-./..--....-+))('''&%%$"  "$''(*++,,--/1237<@ACEGHMRVWUTRRTVWX[_bb_[WVQKEEDDDDEFHGC@<<@DHILPSSOKGF=4,*&!    !"(.4578996300235678997421-)%$"  ""#%'''())+-./.-,,./00//////0/.,+*)((''&%%"  !#%%%&&'()**+,..1488:<>?CGKKLMMMNOPQSVXXUSPOKFBB@???@BCC@=::=AEEHJMMLJHG?6.,)&#"   !!!!!!   $%,4;<>@AA>:778:;<<<=<9632.)$#! !#%&(*-----.0244432235666666667653220/..,+**'$!  !""####""! ! !###"""$%&''())+-/024679<?@CEHHIIIIKLMMLJHGEB??=;99;=>><:88;>ABCEFFHIJIA80/-+))('%$  !$$%%%$!  #'(19BCFHJJFB>>?@AAA@??<854.)##! !!""###"""! "&)*-034332258:::988:;===>>>>>>=<;99764421//,)&%" !!"$%%&&'&%$##! "!!!  !!  "##$$%%%&''*,./02459>BCCCBBCCCCBA@@?=<<964468::97669;=>>??@DGJJB:210000000/&  !$'(((('$    !%)+4>HIMORRNIEEEFGGEDBA>:65/)#"  !"#$%%%&''&&%%#" $)-.26::9877:=@@??>>?ACCDEEFEEDDCB@@><::86441.+*&" "##%&(())**('&&#! "!!!   !###$$$%&&')+-.02449=ABBBBBBBBBA@??>=<;8633579987668:===>>?CGJIB:2111111110'  "%())))(%!   "&*+5?HJMPSSNJEEFGGGFDBA=:65/)#" !##$%&&''((''&&$" !%)./37;<;:99<>AA@@??ABDEEFGGGFEEDCAA?=;;98663/,+(#  "#$%'(())**)'&&#! " !!"#$%%&''),./2589:;<=>@ABBCDDCBAA@>=<83//12454322579:;<==@CFF@:4333444332+#    !##'*..--,+(%#"    "##&),.6>GHLORRMHCCDEFFC@=<9633-'"! #'**,.//.-,,+*))&$""',238=ABBCCCDEEEDCBBEGJKLMMMLJHHFDBB@?>>>???<9761-((%"  !##$%'''((('&%$"!  ! !#%%&'((*-/049=><977;>ABCDEEEDDCB?=<71++-.000///14778:;<>@BB>:6666666655/)#"  "#$&'(,03420/.,*('%"  "%&&'((*-/07>EFJNQQLFAABCDD@<775310+&! !$$(-1146886300/.,,)&##)/67<BGHJKMMLKIIGFEEHLPQRSSSPNKJHECBBA@@CEHHFCA@;610-)%%"  !""#$%%&&&&%$##!  !!""""##""""    #%%&'()+-017=BB=8227<ABDFGGGGFFCA>=6/(()*,,,,,,/14579:;<=?><:88899998773/*)"   &'(*,,059974210.--)&##    !%(,,,,--.0228=CDHLPPJD>>?ABA<7220/..)% #'(-278<?AA=95421//+(%%+29:AGMNQTVVSPMLJIGGLQVVWXYYUQMLIFCCCBCCGLPQOMKJE@:94/+*'$!! !!!"###$$$$#"!!  !""#$%%%&'''&&%$"    "$$%'((*-/06<BB<7116;@ACEGGGFFFCA>=6/(')*+,,,,-/25579;;<=>><:8899::998840,+$  !!'()+,-15::853210..+($$!  ""&*-...../1238>CDHLPOJD>=>@A@<6110.--)$ #'(.389<?BB>:553200,(%%+29:@GMNQTWVSPMLJHGGLQVVWYYYUQMLIFDCCCCCHLPQONLKFA<;61-,)%""  !!""###$$$#"!!  !""#$%%%&'''&&&$"    !"$&)).38841--159:<?AAABBBA@?>81+****+.14579<<=>@@?>>=<:88:<>>?@@ZZZ@ZZZ=954,$ !(.///./38<=;97776652/+*&"  $)*.15543223577<AEFHJKKE?:99:::62..,+))%"#&',167:=@@>;886533.)%%*/46;AFGKNQQNJFEEDDDHMQQTUWWSOKJIHFFEDDDFGIIIIIHGECB?;8730,+(%"! !!""####"!!  !""##$$$$$##!   "" "#&*--,+**,.1258;;<<==>???93-,+*)*06<=?ACCCDDDB?==;988;>BBEGIZZZHZZZEB><4,$# '/6643116;@@?=<<<===:621,'"!  $*0159==;97789;<@DHHHHGFA;6543320-++)'%%" "%&+/458;>>=<;;:8660+%%(,015:?@DHLKGC>>?@AAEHKLORUTQMIIIIIIGFDDCCBBCDEEGHIIHECC>:650,''$! !!"""""!!  !!""!!  !! !$**(%"" "#$%&&'()*-1456789;=??:5//,*()1:CDFHIIIIHHD@=<:978<AFFJMZZZPZZZPZZZMZZZJFE<4,*&" $&.5==:7338=BCBAAABCEDA=982+%$!  #$*178<@DDB?<;<>?@DGKKHFCB<721/-,,*)((&#!!"$%)-2269<<==>>=;982,&%')+,0489=AEEA<779;>>ACFGJNRRNJGFHIKKIGEEA>;:<?ABFKOPOONMID?>82-,($  !!!!!!!   !!!!! "$++)&$#!!#$%&&'(),/3346779<>>94/.,)'(1:CDFGIIHHGGC@<;:878<AFGJZZZMZZZQZZZQZZZNZZZJZZZGZZZE=5-,'""&(/7>?<8459?DDCCBBCDFEB>:93-'&#    $%,289>BEEC@=<>?@ADHKKHEBA<711/-++*)('%#! "$%)-1258;;<=>>=;992,&%')++/377<@DD?;668:==@BEFIMPPMIFFGIKKIGEEA>::<>AAFJOOOONNIEA?:4.-)%!! !!!!!!!   !!!!! "$++*)('%#!  !#%%%%%%')++,-..01330,)(&%#$*189:<===<<;:8666667;?CDGIZZZKZZZKZZZIZZZGED>821*$ "#$%).34:@FGDA>>BFJKKJJJIHGGDA?>:511.,))$   %+,28=>ADGGEDBBCDFFGHIIFDA@<722/,**('&&$" "%((+.013689:;<<:9762-((()**,/1258;;964468:;=?AADFHHFCA@BDFFFFFFDA?????@ACEEFFFFFEED>932.*&%" !!""!  !!!!""!!!!!!!!!!!!!! !#*++,,,,,,,(%"! "$$##""##$$$$%%&'''&$#"! $(--./000000000023569=@ACDEEEDCB?:65-%!#$&(**,.005:@AEJNNLJHHKNQRRRRROLIHFECB@><<:8650+&%!  "*138=BCEFHHHHHHIJKJIHGFDB@@;732/,))'&$$"! $(+,-./0246679::86441.++**))*+,-/13322224688:;==>?@@?=;;=?@ACEFGFEEDB@>><;::;=>?BEHHC>873/**&" !""!  !!!"""#$$########""!!! !")*,.0025773.))%" "$%%%%$ !##"! ""##$$$$$$&(*+.1447:=>>???@@@@><:9/&!&++.13468;<AGLMPRUUTSQQSVXXYYZYTOJJHHGGGGFFECBA<61/)#  &/89>BFGHHIIKLMMNOOOKHDDBA??;743/,((&$#"! !"&+/0//./0234568864210/--,*))((((()*+,.0024567899999887678:;<?CGGHIJJEA=<84001367>ELLGB=<73/.)$  !##! """"""""##$$%%%%%%$$$$#""!!  !(*,.0036884/+*&#!#%%%%%%! ""!  !!"""""#%')*-03369<<====>>>>=;:8/%!&+,/2568:=>CINOQSUUTSRRTVXYYZZZUOJJIHGGGHHHFEDC>831+%   &09:>CGGHIIJKLMNNOOOKGCCA@>>:732/+('&$""! !"'+000///0233568864210/.-,*))((''()**,./0135567888888776689;;?CFGHIJIEA<;73..0245=DKKFA<;73/.)% !""! """"""""##$%%%%%%%$$$$#""!! ,+&!"#'*./269962/.*%!!""##$$%%! !##""!!  !!"$&((*+--/0222222233321/.(! &+,16<<@CFGKPTUSRPPONMMPSVVWWXWTPLKJHGGHHIIIIIHD?:950,+'#    *3<>@CEEGHJJJJKKKKLKFA=<:8663/,,)&$$"! !##).443322234468::864320..-,++++++****+-./02345677777889:::;;<>@CCCCCC?<9840,,-/127<AA=8431.,+)&$#"   !!"""""##$$$$$$$$$$$#"!! ! 960*#!!',-15997522-($#""!!"#$$"!%)))(''$  !#$&''''''((((''''''&&%%$!$*+2:ACGKOPSWZZUPKJIIHILOSSTUUUROLLJIGGHIJKLMNNJFBA>;8740,+%   "$-7@ABBCCFHJJIHGGGHHGA;6520.-+(%%#!  "$%+178765555557:==;86631...---..//-,**+,-./02235667788:<====<<=>??>=<;97541-**+-//24663/++*)))((''&%$#  !"""""""########$$$#!  !" GA:2*)!#)+/48987550+&&#!!"$$" #)///.-,(# "#%%$#!! #(*3=GHMRWWZ]_^VMEDCCCDGLPPQRRRQOMMKIGGHIKKNPSSPLIHGECC@<87.&  %'0:CDCBAADGJJHFDDDCCB<5/.+(&%#! !#%&-4;;;:8876669<??=;9852/.//0012320.++,,--./1124556788;>AA@>==<<;;97554211.+(()+,,,,,+)&##$%&&')***)((# !"""""""""""""##$$#!  !# GB;4,*#"(*.37776550,('$" !#$$" #)./..-,(# "#%%$#!! #()3<FGLQVWY\^]ULDCBBCCGKOPPQQQPNMLJHFFHIKKNQTTPMJIHFDD@=980'  %'09BCBA@ADGJJGECCBBBA;4.-*'%$" !!"$&'.5<<;:9987669=@@>;9852////0012331.,,,,--./0124556788;>AA@?==<;;:86443211.+(()+,,,+**(%#"#$&&()+++*))$ !""""""""""""""#$$"!  !$ C@<720*$!"%),,./0000//-*(('&&%#" "&&&&%%" "$$%'((&$#"!#$+29:?DIJMORQJC<;=?BCGKNONMLLKJIHFDCCDFIINRVVSOKJFB>><;:93,%$  #%-5==>>>>@ABB@><<<;:94/*)'$"" !"#&)++*)))08?@??>><;99<?BB?<8865332222345432000000012234566777:=??>=<<;;::87554321/-+*+,,,+*)(('&&'())+,....--(# !!!!!!!""""!!!!!"""!!  #&%?><:771,'%  !$'*+/3775300-*''%#"!!"""!!  ##'+//-*('%" #',-16;<?BED?:448=ABFJNNLJGGFEDDB@>?ACFGMSXXTPLJD>7789::61,+%  "#*0789;<<<<;;98665322.*&%#" "%().2663/,,3;BCCCCCA><<?BEEA<87777765444566655543333333456666779;==<<;;::::987754220/------+)''())**+,,./111110,&!! !!!!!!!!!"""!! !!! !$()<;<<=<84/.&$&.6>?=;872-)(&%##%&((('&&"!")06640-,)&""$(-.158840--3:ABFJMMJFBBAA@@><:;=@DELSYYUQLJA90036::8532*#   !',1258:;97443210/-+*'%""  %)./5;AA;5//6>EFGGHGEB@@BEGGB=879:;;986567778999876655555677776789;;;::::::::99875332100/.--+(&&(+-..///12444554/*%$! """"!!!!!!!"""!  !!&*.<:;<=<951/'#$-6>?=;872-)(&%$$%'()((''#!")07741.-)&#""&++/2552/,,39@AEIMMIEBAA@??=;::<@CDKQXXTOJI@7/.25997521*"   !',1258;;97443211.,*)'$"!  !%*/06<BB<6007>EFGHHHFCAACFHHC>98:;<<:97777889:::987766666788877789;;;::::;;;::99753322110/.-+)&&)+..//00235555550+&%" """"!!!!!!!"""!  !"&*.5567776432,&! '.56420/,)%%%%%%&&&''())'%##! '.452/,,($! "%%(+--,+**07=>BEIIGEBB@><;97558;>?BFIIEA<;4.('),//-+)(# $%+178:<>?=<;;::9950,+(%!!  "%%).239>BB>9559>CDEGHHHHIIJKLLIFBBA@@@???>>=<<=>@?=;:9:;<<>?@@?>==<;;;<=??@ABB@><;97556677420/-*((*-/0123368:::98840-,'# !""!!!!!!!!!!!!  !!"&+0//011234441-*)'$!  &,,+*('&$""#%&'&%$$&)+++,,,*(&&&&'&%#!!  !""! $+220-+*&"!#%%&'().49:>AEEEDCC?<87531136999::952.-($ !#%%#"  "'(/6==?ABCBBBBBBBA;5.-)%"!  !!$&)*.267;?CC@=99<?BBDFGHKNPQPPPPONLLIFCCDEGGECAABCEEB?=<>@CCEGIIHFDC@=;;>ADDFHJJFC?><9779;==9621/,**,.012467:=?@>=;;8632-($#  !!!!!!!!!!!!!!  !""',2)**+,,/2665422/+('!##"! "%((&$""%),-/24420..//0/-+(('&%%%%$$%%&%$#""""""#$%%#" "(//-+)($! #&',167:>AABCDC>9541/,,/1331.+*&# %*,3;BCDFGGHHIIJKKJB:10+'""!  "#$'+./26:;=@CCA@>>?@@ACEGHMSXXWUSSTUVVQLGGILONKHEEFHJJFC@@CFIJMPRRPMJIE@;;@DHILORRLGBA><9:<@BB>9441.,+-/12479:=ADEC@>=<;993.('# !!!!!!!!!!!!!  !"#',4)))**+.1554322/+('!""! "%((&$""&)--0255310/0111/,**)'&&&&%%&&''&%$$$$$$%%&&%#!!!'..,*('$  #&',156:=@ABCCC>9430.,,.022/,(($! %+,4;CCEFGHIJKKLLMLD;32-(##"  !#%&),0148;<?ACDBA@@@@AACEGHNSYYXVTTUVWWRMHHJMPPLIFFGIKKGDAADGKKNQTTQOLKFA<<@EJJMPSSMHCB?=::=ACC?:652/-,.022479:>AEECA>>=<::4/)($!!!!!!!!!!!!!!!  !"#',4####$$'),,+*))'$"!"#"!!!!!!!#$&&&&&&),//012221123577654420--,+**+,--./00111110//,)%%!#''&%## #&',1569<>?>>==84/.,*(()*++)&$#"  #(*18?@DHKLMNOPQRSSMF@>83-,($! $'**,.0148;<?BEEGHJJIHGGHHIIJKMMQUYZYXWWWXXXUQNNPQSSOKHHJMPPNKIILORSUWYYXWUUOHCCFJOOQSUTPKGFDCAACEGGDA>=:74332224688<@DDCA@@>=<;840/+'#" !!!!!!!!!""""  !!"&*1 !##"! #$##""#######$&(**-/110/..01336:<=>>?>;84420..013369<=>???=;983.*)$  "&',1568:<<;9873.**('%%%%%%#!   !&(.5<=CIOPQRTTVXYYUQLKD=65.("""#$$*/5579;<?CFGJLNNOOPPOONNOPQQQQRRTWYYYYYYYXXXWVUTUUUUQNJJMQTUTRQQTWYZ[]^____^WPJILPTTUVWVSOKJJIHHIJJJIHGFC?;;85324567;?BCCBAA@?==;9762-)($ !!!!"""""###!  !!%(/$$$$$$%%%%$#""&*./02330-**-1459=ABDFHHD?;:7522469:>CHIJKLLIEA@:4-,'!"'(,05579::8521-*&&%$##!  !!"######""""#$$$ $%,28:BJRSUVWXZ\^^\ZXWOG?=4,$#$%'(/7?@BDFFJMQQSUWWVUUUUUUUVWXXWWVVWWXYYZ[ZZYXXXYZZYXWWSOLLPTYYYYYY[^`aabccefgg_XPPRUXYYXXXUROOOOOOONNNNOOOKGBA=83334569=ABBCCCB@??>>>=83.-(" !!!""####$$$"  #&,#$$$$$$%%%$#""&*//12330-**-0459=ABDFHHD@<;8533579:?DIIKLNMJFBA:4-,'""&',04568996410-)&&%$##"  !!"#$%%%%%$$##$%%%  $%+289BJSTUVWWY[]]\ZXWOG?=4,##$%'(/7>@BDFFIMPQRTVVUTTSSTTTUVWWVUUUUVWWXXYYXWVVWXYYXWVVRNKKOTXYYYYY[^`aabccefhg`XQQSVYYYYXXVSQPPPPPPOOOOOPOKGCB=83334559=ABCCDDBA????>>94/.)# !!!"""###$$$$"  !!$&,  "####$$(,0124540,''*-0159=======<;;9877789:=@CCFHJIEA<;50*)&#! !%&),/011220.,,+*))))*****)('&%$#""%(+,./11100/,)&&#  !'(-289AIQQPNMMMNOONMKJD=64.'!!!"$$*/45689:<>AABDEEDDCCCCCCDEFFFEEEFGGGIJKKJJJJJKLLLKJJGEBBGKOPQQRRUWZZ[\^^_aba]XSSTVXXYYZZZYYYXVUUTSRRQPPOJEA@<8434456:?DDFHJJGDBA@?>=950/+'#" !""##$$%%&&%%$$"  "$&&()-$$&'))('&&#  !"$&'*.2245650*%%'),,0477642258:;;::::999:;==@CEE@;650+'&&%%%%%%%$$##!  #$&(*++****)))*+--.011245531/.*'##(-347:=>>=<<5.'&&&&& #)*.379@GNOKGBBA@????>=82,+'# !#&)*++,,./112233322222223444555567789:<<<<<<=>??>>>=<;9:>BFGHIJKMPSSUVXXYZ[[YWUUUVWWXZ\\^`aa_]ZZXWVUSQONIC>=:7545566;AFGJMPPLHDCA?==9511.*''#  !"##$%&&''(('%$$"  $(+,,,-+*,/110/--)%! !%(),/334566/)#"$&((,/22.*''-3::<===<:887767:=@@;60/+'##%'***+++*)('%#!!  ""#$&&%$##$$%&)-114689;>@@=:760*%%,3:;@EJJJJIH=2('*-//& $+,0378?FLLF?8752000110,'#"  !!!!!!!!"""""""###$$%%&'((*+--./0001111111110159=>?ACCFIKLNPRRSTTTUUVVVUUVXZ]^bfiifb_^\ZYXURNMGA;:87555677=BHIMQUUPKFFC@=<96320.,,'#!!"#$%&')))***(&$$"  &+010.-++-/2210//+'""! !$((+/223455.("!#%''+.11-)&&,39:<=>><:8876669=@@;50/+'##&(++,,,,+*((&$""!  ""#$%%$###$%&'*.2368;;>@CC@<971+&&-4;=BFKKLLKJ?4)(+.11( $*+/367>EKKE>7631...//.*&!! !!!""##$%&'()++,-...///0000///037;<>?ABDGIJLNPPQRSSTUVVUUUUWZ]]bfjjgc`_][YXUQNMGA;:87666678=BHIMQUUQLGGD@>=:7431/--($  ""#$%%&()))***(&$$"  &+010/-''+/347:<<72-,+)''$" !"$&()*+++'# !#$'),,*(&&,178:<>?=;998877:<>>;8440,((+/2210//-,+++***('&&$#!!!!!!  !""""""$&()+.0159=>BFJKLMNNHB<;50,,3:BCFILMOQSRG<1037;:1' "#&*./6>DE@<762.**))))&#   !!""#$%%&'(())**+++,,,,,,,,,/25579:;<>@@BDFGHJKLMOPQPOOORVYZ_ejjhfdc^YTSQOLKF@:99999:;<=?ADDIMQRPOMMJGDCA?<;8510,'"" #&&()*+**)))))))))(&$"!  $(,-..0"$*/56<CIID>8741.-)%  !!! "%'''&&'+0459<??><::9988:;==<:9851..159974110/../0110.--+*)(((((&$""  !""""""! %)./37;<@DHIOTZZZZZYPH?>:633:AIIKLMNRW[ZPD99=ADD:/$" !%'.6=><:761+&&%$$$"  "$$$##"! !!"""#$$$%%&&&''''(((())))))+-//124456779;<=?BDEGIKKKJIJMQUW]cijiihg_WONMLKJE?:9:<=>?ABBA@@@DIMNPQSSPNKJIGED?:54/*&%"""&+/012331/.-,+))((''$" #&()+-2"(.57AKUUPICB>:54.'!  ""$%''+.237;??><;:::99:;;;<===:6337;??<8432211368876443100000/-*''$! !!!#$%&%$#" %-45;@EFJNRT[bhihfdcXMCA>;9:AHOPONNNU\cbXMBBFJNMC7,*! &.6777760)#"!  !!#&((('&&$!  !!!!""""######$$$$$$$%%%%&&&'''(())+,-.....01347:>>ADGGFEEEINRSZahijklk`VKJJJJID?:9<>ABDFHHD@<<@DIJOTXYWTRQPONMG@:83.)(%! #&'-288::;;8511.,))('&%"  !#%%),4"(/57ALUVQKED?;75/(! !!#$&'*-115:=><;:999889::;<=>=:7448<@@<84432124689765542111111.+('%" !!!!""#%&&%$#" %-46;AFGKOSU\cjjigedYNDB?=;<CJQQPPOOV]ddZOEDHLPOE:.,# %-456665/)#""!!! !"##&(++*)((&#!!!!!!! !!!!!!!!""""##############$$$%%%&&&&'''(())*,------/1337:>>ADGGFFEFJNST[biikllk`VKJJJJJE@;;=@CCFHJIEA=<@DHINTYYWUSSRQPOIB<:50+*&# $'(-389::;;8410.+)('&%%" !"#%%)-4*,.145>FNONLJJE@;92+$#! !"$&)),/2210//////135579;;97558<??<965432234556677777665441.+*)'%%%&&&&&&&'())'&$#!#*028>DEJNSTZ`ffeca`YQJIGFEEKQWXXXXX]chga[TTVXZYOE;9/% $**+,--*(%%(*------/14479;<;98865331/-,)'$$&),,++******++,,*(&%%$$$$$$$%&''(*++,,---....-,,,-..0367:>BCGJNNOPPQSVYZ`gmmljhg_XPOPQRQNJFFHIKLORUUPKFEFFGGMRWXYZ[[[[ZZTNHGB>983.)($  !$'(,/333211.,*)(&%%$###! !#%%%&''()++,.1765434:@FGJMPOJE?>6/('%#!!"$$"  !!#$&&%%$$$$%%(,/0368987668;==;9765322222246889;<<:98741..-,++++++++++++,+)'%$!!',.4;ABHMRSX]ab`_]\XTQPOONOTY^__``adhkkifddddccZRIG<1&$  !#$$%'().399::;;>BEFHJMMKJHHGGFFB=983-((-1666544444445551-)('%$$$$$$&(**,.00123334441/,,,-//269:>CGHLPUUXZ\\]^_`fkZZZrZZZrmidc_ZVUWXYYWTRRSSTUY]aa[VPOLHFFKPVWZ^bccddd_ZUTPKGF@931,& !!"#####""!  #%'(*+--+)&&%$"""!!!!!!!  !"#%(++,-../01110-C@;7226;?@GNUUOICB;3,+*('&  $(++)&#"""""!  $)*.256667789;;:97754220/..1599<>@@>=;:74111111111100////..+)&%"#()07>@EKQRVY]][ZXXWWWWWWXX\`eeghiikmnnZZZnZZZqZZZqZZZsZZZqZZZpmle^VTH<1.& !&+,4<DEFGHHMQVVY[]][ZXXXXXXRKEC;4--39@A@?>=====>>>>82,+)'%%%%%%(*--036678999:::50,+-.0049=>BGLMRW\]`dgggfefkZZZmZZZuZZZrng`_^][\]_aa`_^^^]]^chZZZmZZZmf`ZXRKEEJOTU\bijklZZZmZZZnie``\XTSLD<:3+$# "$$%&&&&%%%#"!!!!!"#%''''''#  "$%&*.123455678852*CB=8337;?@HOVVQKEC<5..,*('! $(,,)&######""! #()-04455667899976653110.--1489;>@@?=;:75211222222111000//.,)&%"#')/7>?EKPQUX\\ZYWWWWXXXXXY]aefgijjlmnopZZZrZZZuZZZuZZZrpnmg`YWK?31)  !&,-5=EFGGHIMRWWZ\^_][ZZZZ[ZTMGE=5--4:ABAA@@@@@@AAA@:3-,*'%%%%%&(+./247789::;;;;61,,-.0159=>BGLMRW\]adhhggffkZZZqZZZrZZZsmg`_^]]]_`bbaa```__`eiZZZlZZZohb\ZSLFFJOUV\cijklZZZmZZZoie``\YUTLD=;3,%$  "$$%&&&&%%$#"!!!!!!#%'''&&&" !!!#%'(,044567899::73*MLGB<<@CGHOU[[XSONIC=<83.-&#'*+)'%%&'(()*++,,--+)'&$"  #$'),,,---.////.--,+***))*-03369<<<<;;97555666555554443200-)&%""&'.5;<BGLMPTXXVSQQSUWWWWWW[^bbegijklmmnopppppplhdcYNDB:3+*$ !$$(,/048<=>?AAFKPQTX[\\\\\]^_^XRLJA9005;ABEHJKMOPPPONME>650+'&'(**/5:;<>??@@@@@@@?:4///0113689>CHIOUZ[^beeedddfhjjgdaabcddddeeffggghhhknZZZqZZZqlhcaZTMMQV[[^`ccbba`]YUTQNKJD>873.+*&" "####""!! !!"""""""!!!  "#####" !$'''''')+--/1348<@ACDFFFFFFB?7XVPKFFILPQV[``^\YYUQLKD<43+""%))('&&(*--03669<??<9540,('&$"" !"$$$%%%%%%%%$$$$###$%&&(*--14789:<<;:9999::988888886421.*'&"!$%,29:>CGHLPSSQNLLORUVUUUUX[^_behijkllllllnprrqZZZpZZZpZZZpf]USLE>=5.&%  $(,-/13333335799>CHINSWXZ\]^_abb\VPOE<437<@AHOUVZ]`a_][YQH?>6/(')+./7>FGGHHHGGFFFEED>832211123349?DFLQWX[^aaabbba`__`abcehjjihggilnoZZZnZZZqZZZrZZZnZZZsZZZsZZZtspmjhb[UTX]aa`^\\YWTTPLHGECA@<7322110,($#  !%(,,,++*(%#"!!   "#(,010/..1599;=?@DIMNPSUUTSSRNJDb_ZUPORUXY]aeeedcc`]ZYOE:8/& $'(((((+.126;?@FKPQLHCB<600-+(($! "#$%''+/2369;<<<<<<===<<;;;;;;9632/+'&#!#$*067;>BCGKOOLIFFKOTTTSSSUX[[_cgghijjihhhlpttvZZZyZZZyZZZwZZZqled^WQOF<30& $&+/4556651.**,.116;ABGMSTX[^_aced_ZUSI@769<@AKU_`fkZZZrZZZqZZZojgf\SIG=3))+.23=GQRRQPPOMLLKJIIC=76543210//5;ABHNTUWZ\]^___\XUUZ^cdhlZZZoZZZoZZZpliimZZZsZZZrZZZuZZZvZZZwZZZzZZZwZZZwZZZwZZZvZZZutrZZZoZZZnhb\\_cggb\VUQLHGC?<;:87630..14762.*)$  "#).454432.)%$" !$'(.4::9755:?DEGIKLQUZZ]`cca`^^YUQb`[VRQTWZZ^beeeddca^[ZPE;9/&!$((((((+.126;@AFLQQNIED>832/-+*&" ""#$&&*-1258:;;;<<<<==<<;;;<<;9632/+'&# #$*056:=ABFJNNKHEFJOTTTSSSUXZ[_cfghiiiihhhlptuwyZZZxZZZ{ZZZunhg`ZTRH?53( $%*/4455651-))+.016;@AGMRSWZ^^aced`ZUTJA88:<@AKU_aflZZZsZZZqZZZqlih^UKI>4*)+.24>HRSSRQQPONNNMLKE?98754421//5:@AGMSSVY[[\]^^ZWTTX^cdhlZZZqZZZqZZZmkiimZZZpZZZsZZZuZZZwZZZxZZZyZZZyZZZxZZZwZZZvZZZuZZZtZZZrZZZqZZZmib]\`dZZZhhb\VUPLGFB>::876530..258840,+&! "#)/555432.)%$""%)*06<<:977<AEFIKMNRW[\_acdb`_^ZVQb`^\ZZ\]__`abba_^^ZVSQIA87.%!#$'+./.-,,,-..1478=BGHHHHGEB??=:872-'&$"  "#$&'(()**('%%$#""!  !!""%'*+-/112344567789::::997532/,)(%! "#',1259<=@CGGEDCDINTTTTTTVWYZ^befeeeegikkoZZZuxxwvZZZvZZZssqong`YXOE<:1' !%)*-03320//02559=ABFJNORUXY\_bb^[WVOHBAAABCJRZ[afklmnnne\SQE9-,-.01;DNOQSUUWXZZ[\]\UMEDDCCB>:668:<=AEIILOQRSUVVUSRRVY\]aeiigdabglZZZqZZZrZZZtZZZuZZZvZZZvZZZuZZZsZZZqZZZqZZZoZZZliid`\\`dZZZhZZZheb^]WPJID?:987776666:=@@><:93-'&#! !"##$%&&),//.-++(%!!!""##$$$%%%).239?EECA??ADGGKNQRVZ^__^^^\ZXXTQKb`abbccdddb`^^\ZXWRNIHB<64-%!%)*.256420/-,**+-./38<=AFJJKLLLJHFE>70/,(%$! %*+-033456641//-+))'%""!  "##%&'()+,-./114799987754220-+*&# !""%),-0478:=??@@ABHNTUUUTUVWYY]`ddca``einoZZZrZZZwZZZ|ZZZ}xtpprtZZZwZZZvnf_]ULDB;3+)" $*0023446799=@CDFHJJMPRSW[__][YXTPLKIFDEIOTUZ`fgkpZZZqZZZtld\ZL>1/.../7@IJOSXY]affilZZZmZZZoe[SRRRRQKE>><:99:<??BEGHJLNNOPQQSTVVZ^aa_\ZZ`gmZZZnZZZpZZZrZZZtZZZtZZZromlifcb`][[`dhZZZiZZZhgfe]UMKF@::9989:=??BEGHHHHG@810,($$$$$%&(***))))))('%$#! !!  !"$&(()*+++,,,17<=CINNLJGGGGHHMQUVZ^aa^[XWURPPNLFa`cgjjjihhc_ZYWTQPJE?>;732+$#)/159<<:743/+'&&&&&*.23;CKMQUXYWVSRJA973.*)$ $*126:>>@ABB?<986310-*'&#  #%%')++0488754432110.,,(%!!!!!!#&(),/235689;=?@GNTUUUUUVWXY\_bb`][\bjZZZqZZZtZZZwZZZ}ZZZZZZZZZvZZZrjjpZZZwZZZ~ZZZyZZZtkcbZSLJD>76,# $,.259:;<==@BEEEEFFHJLMRW[\[[ZZYWVUQLGGIKNOTZ`aiZZZrZZZvZZZvZZZqkdbRC42/-,-4<DELSZ\ciZZZrZZZrZZZxZZZ|ZZZ|ZZZ}ZZZrj_^_`a`XOGE@;6555558;>>ACFFILOPPOOOSVYYWTRRZaijlnZZZsZZZrnkhhd`\\[ZZZ_chZZZiZZZkZZZlZZZkZZZmcZPNHA;::::;?CHHKMOPRTUULD;:4.)(())),.00/.,,)%"" "%%$" !#%&)+./023333339@FGLRWWURPOMKIJOTYZ]acc]XRQNKHIGGAa_cgjjiihgb]YXURONHC=<9632+$$*016:>><9651,''&%%%)-23;CKLQVZZYWUTKB:94/+*% $+237;>?@BCC@=::7532/,)(%! "$$&(**.37764332111/.,,)%""!!!!#%((,/234688:=?@GMTTUUUUVWXX[^aa_\Z[biZZZrZZZsZZZvZZZ{ZZZZZZZZZvZZZpiioZZZsZZZ}ZZZyZZZtldb[UNMG@:9/% #+-1599:;<=?ADDDDDEGIKLQVZ[[[ZZZYXXRMHHJLNOTY_`hZZZoZZZvZZZuZZZrkdbSC420.,-4<CEKRY[biZZZoZZZsZZZwZZZzZZZ~ZZZ}ZZZuka`abcbZRIHB<6655557:==?BDEHKNONNMNQTWWUSPQX`ghkmZZZnZZZnmjggc_\[[ZZZ^cghjZZZkZZZkZZZmcYPNHA;;;;<<AEJKMOQQSUWVNE<;5/*)))**,.01/.,+(%!!"%%$" !$&'*-0124555445;AGHNSXYWTRROMKKPUZ[^adc^WQPMJGHFFAYX[^aa`_]]XSNMJFBA<732100/+($$(,128>DDEEDD=60/+(&&-3:;?BFGNU\\ZWTSKD<;50+*%!$*/0369:;=>>>=<<<<<<:8551-*)('&&$#!! !!"#%&'),...-,,,,,+++**)('&%#""$&)*.267899:;=?@EKPQPPPPRSUVWXXXWWVW^emnZZZrZZZsZZZvZZZuZZZoicchmZZZqZZZqmidc`^[ZUPJH=1&$ $%*.22333358:;<>??ADFGLQWWXY[[]`bb\VPPQSUUX\_`flZZZrZZZrlf_]OB4311016<BCGJNOU\bciZZZpZZZuZZZrZZZojffhjmle^WUNHA@><::::::<=?@BDFGFFEEHJLLKJIJQY`abdeedcbba_]]\ZYY[]__````YSLKGC??@BDEJPZZZUZZZVZZZWWXXWWVUME=;61-,,,,,,---+)'&$! "#""!!!"##&),-28==?ABB?<99>CHIQX_```__\YWWZ]aacdee_XRQMIEECA;QPRUWWVTSRMIDC>:540,))*+--,+**,.12:BJKNQSSJA871,'(1:CDCBBBLU^^[WRQKD>=71,+&! $(,-/2446799;<=>@CEFEDBB>9553210-*'&%$""! !"##$%&&&%%%%&&&''(()*++(%""%'*+05:;;;;<=>?@DHLMLKKKMPSSRQOOPQRSZahiklmlgb]]`dhhgeccefhhc_ZXK>1.% "'++*)()+.01479:<?ABGMRSVX[[aglle_XWYZ[\]^_`dhkke_YWK@4333459>BCCBBCHNTU[`fghikkoZZZqZZZtZZZsZZZojdc[TLKGD@@=:889:;;<=??>>==?@AAABBCJQXYZZ[[\]]^^_`_]ZXWWVVVUUTSPLHGEDBCFJMNUZZZ[ZZZaZZZaZZZaZZZ`ZZZ_^[XUSLD=<830//...,+))&$!!  !!""$%'(+/24;BIJLNONID>>AEIJS]fgikllifccdegggggf`YSQLGBB?=6HIJLMMKIHGC>:94.)(%" #'++-/000112<FPQW]aaWLA?70)*5@LLGB=>IT_`[VQPJE@?92,+&! !$'**,-./02447;>?DINOOOONJEA@>=;;61-,*(&%#!  !!"$%&),//+'##%),-38>>>>==>>??BFIIHGFFIMPPMJGGIKNOV]ddddcc_[WWY[^_`acciZZZpZZZsZZZvZZZpZZZnhfXJ;8-" #$" !$''+04579<=CHNOSWZ\dmZZZtZZZuZZZlg`_`abbaa``bced_YSQG>435689<?BB?;88<AFGMSYZahZZZoZZZoZZZsZZZyZZZZZZZZZyZZZxZZZtZZZph`WVQLGFA;7666777777776667778:<=CJQRQQPQSVYY\_bb^[WVSPMMKIHGFEDDDEFGLQVXZZZ^ZZZeZZZkZZZlZZZjZZZgZZZeZZZd^YSQKD=<9522110/,)%%"!#$&),,048:CMVWYZ[ZSKCCDGIKValmZZZtZZZvZZZwZZZyZZZwZZZpZZZmZZZoZZZlmZZZmZZZmZZZkZZZjhgaZSRLF@@<90HGHJJJIGEEA<873.)(%" #'+,./111112<FPRX^cbXMB@80**5AMMHC>>IT_`[VQPKFA?93-,&! !$'**,-./02347:>?DINOOOOOJFBA@?>=84/.,*('%"   "#%%),//+'##&),-38>>>>==>>>?BEHHGFEEILOOLIEEHJMNU[bcbba`]YUUWZ\\^`bciZZZnZZZsZZZvZZZpZZZnjhZK=:.# ""! "%&*/3368;<AGMNRVZ[dlZZZwZZZsZZZoha`abccba``acdd^XRPG=435799=@DD@<88<@EFKQWX_gZZZnZZZqZZZtZZZ{ZZZ}ZZZZZZ{ZZZzZZZuZZZrjbYWRMHGB<7777888888776677778:;<BIOPOOOORTWX\_bb_[XWSPMLKIGGFEDDEFGHMRXZZZYZZZ`ZZZfZZZlZZZmZZZjZZZhZZZed^XRQJC=;8522100/,(%$!!#%%(+..26:;ENWYZ\\\TLDCEGJKValnZZZsZZZtZZZxZZZ{ZZZvZZZsZZZmZZZpZZZoZZZmZZZmZZZlZZZkigf`YSRLE@?;90A@@@@@><::9755310/.,++.03333332223=HRTZ_dcYNCA:3..8BLLJGEEMU]^ZVQQMJFE>70/)#!"&*..024455556678=BGHHHGGFEDDEGIIFB?><9662.*)'%$#"! !"#%(**'%"#&*./37:;::99::;;>ADEEEFFGHIIFDAADGJJNRVVVUUTROMMNPRSUXZ[aglmllki\OB?3'   ""&*-.1467;@DEJNST\eZZZlZZZkjeaaa`a``___acee^WOME<4358:;BHNOMKIHIIIIKMOQX_ghnZZZtZZZ{{{{ZZZ}ZZZ{ZZZsg^\VQLKGDAABBCCCDDDCA@@@@AA?>==@CFGGHHILOSTY^ccb_]\XSOOPPQQNKHGHJKLRY_ZZZ`ZZZdZZZgZZZjZZZjfb^]XRMKE?9852...---)&#" !!$&(),/2369<=>@BCJRZ[\]^]UMEEFIKMV_hjnZZZrZZZwZZZwZZZqnjjhgeec`^]XSNLGB=<;;999876642001233567777678:;;97554445?ITU[`ddYNCB<722:BKLLLMMRW[\YURRPNKJC;32+$ "#(-2358;;:87753127;@A@@??ACEEJOTTSQONKHED?:430,((&$"!  !#$$##"#'+01357766556677:=@ACEGGFDCCA?>>@CFGHIJJJIIIGFEEFHIJLPSSY^cdfiji^SGD7+ "%)),/2369<=BGKMU]eedcaa`_^^^^^_bdff^ULKC;3359<>GPYZZ[ZZVRNMLJIJQX`ahoZZZtZZZx{ZZZZZZZZZwmba[UOONMLLMNOPPPQQOMKJKKLKGC>>>=>>?@BBFJNOV]deddcb]WRRUX[ZVQLKLNPQX_fZZZfZZZgZZZhZZZhZZZgb\WVQLGFA;652.******'$!   #&'+/348<@AEHKLKJJKPW]]^__^VNGFHJMNV]efjnZZZqZZZpmiedb`^]ZWTTPLHGC>:9<>B131/-,*(&'*.227;??@ABBCCCC?;876556@KUW\addZODB>:67=CJKNQTUWXZZXUSSRRQPG?64-%!#$*067:>AA?<9940,,05998767;@EGOW^___^^[WSRLE?>82-,)'%$"  !""',1233332111123479<=ADGGD@=<;;::=@CCB@>>>>=====>>?@ADHKLPUZ[`eji`VKI</"  "%%(+./1356;@EFNU\]_`aa`^\\]]^^begg]TJHA9326:>@LXdehjZZZjZZZld\TRMHDDJRY[bjZZZqZZZtZZZzZZZZZZZZZZZZ|ZZZsfe^XSRTUWWYZ\\]]^^[XUUVVWVOHA?<8557:<=AFJLT]efghhga[UUZ_dd]WPOPRTU]dlZZZlZZZjhed]VPOJFBA<832.*&&&'''$"!"" "',-28=>CINOSWZZXURRV[_````_XPHGJLOPV[abfiZZZmZZZmid`_\YVURNKJHEBB>;87<@K130.,+*(&'*.338<AABCDDEEED@<987767AKUW\aedZODB>:78>EKLPSVVWYZZXVTSSRQPH?65-%!#$*078;?BC@>;:51--04998656:?EFNW_````_\YUTNGA?:4.-*(%%#! ""',1222221000113368;<@CFFC?<;;:::=@CCA?========>>??@ADGJKOTXY^dhh_VLJ=0$"  #&&)-002467;@DEMT[\^`aa_^\\]^^_begf]SIG@9336;?AMYegjmZZZpZZZof^VTOIEEKRYZbiZZZqZZZqZZZyZZZZZZZZZZZZ{ZZZsge_YTTUWYZ[]^__`aa^[YXYYYYQIBA<84479<=AFJLT]efghhha[UUZ_dd^WPPQSUV^elZZZmZZZjhec]VONIEA@;721-)&%&&''$!!#"!#(-.39>?EJPQUY\\ZWTTX\`aaaa`YQIHKMPQW\abfiZZZmZZZlhd`_[XUTQMIIFDBA>;88=AK562/,+-/0159=>AEHHIJJJJIHHFC@@@@@@GNUW\afeZNBA?>>?GPXYZZZZ[\]][YWVUSQPG>54,%"%&,289>DIIHGFEA<8789::85337;?AHPXY[]^^\YWVQLGE@;652.**'$""!!  !$(+,,,,,,,,,-.//13558;>><:777899<@CCBA@@AABBDFHHHIIIIIJJLOQRV[_^ZUPND9/-& !%&+/458;>?@BCDEFGGMSYZ\]___```abccccbaXOED?;77<CIKU_ijoZZZtZZZvZZZxZZZoha`[WSSW[`aflrZZZszZZZZZZZZZZZZ{ZZZrfda]ZZ^aefgikkllmmlkjiihgf]TKJB<558;??EJPRYahhhfed^YTSVY\\WSOORVZ[`eiZZZigeba[TMLGB>=83.-*&######! !! !#%&)-126;?@FLRSX]bcba``cfijjjihaYQQSVYY^chikmnnkhed^YTSNIEDCA@@??>>BEM9940,,16;<@DGHJMOOPPPPOMLLKJIHIIIJNQUV\bgfZMA?@BEFQ\fgeb_^_`aa_\ZYWTQOF=42+$ #&'-39:AHOPQQQQMHCCA?=<952247:;BIQRUY\\[YWWSPLLGC?>940/,)&%%$##! "$&&&&'''(()*+,,-../135554335688<@DDDDCCEFHILPSSSRQQNLIIIJKKNQUUUUTSKB:80(  !'-/6<CDGJMNOPRQOLJJNRWXY[]]_addefggda]\SJB@><:;BJRT\dlmZZZtZZZyZZZ~ZZZ|ZZZyZZZqmlhdaaceggkosty~ZZZZZZZZZzoedbaaafkZZZpZZZrZZZqZZZsZZZwZZZwZZZwZZZyZZZwZZZxZZZwZZZyZZZyZZZyZZZzZZZuZZZtZZZqj_USI?669=ACIPVW^djjhda`[WRRRRSSQONNTZ_`bdffdb`_YRLJE@;:4/*)&#!  "#$'*--03569<@AGMSU[aghjkllnZZZqZZZrZZZpZZZtZZZpZZZpZZZriaZY\^abfjZZZoZZZoppppnZZZljibZSQKF@@??>?ACEEGIO=<71,-5=EGKNRRSUVVVUUUSQPPPPQQRRSSTUVW]chhZM?>BFKMZgZZZsZZZuZZZnicccdeeb_]\XTPNE<31*$!$().49;CLTVXZ\\XTONID?>:5112356<CIJPUZZYYXWVTRQNKGFA;541-*)('&%#  !!!"$%%&'((((((*+--./002578<@DEFFGGILNOTY^^]\ZYTNIHGFEEGIKLPTXXRKEC:0'% $-57@IRSVY\\^_`_YSMMORUVWY[[_cghikkke_XWNF>===>?HR[]ciZZZpZZZnZZZuZZZ}ZZZZZZZZZZZZzZZZyZZZuZZZrZZZpZZZmZZZpZZZmZZZnmnZZZqrtuy|ZZZZZZZZZumdcdefgnZZZtZZZyZZZ|ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZui^\OC77;?EFMU\]chllgb]\XTPPNLJJJKLMU\dedcbb`_^]WQJIC>871+&%#  #'',04568::<>@AGNTV]elmZZZnZZZrZZZvZZZxZZZvZZZzZZZ{ZZZxZZZzZZZyZZZxZZZuZZZribbdfijnZZZpZZZuZZZtZZZusqqqZZZpZZZmZZZle[RPIC<<<<==BGKKLLQ==71,-5>FHKORSTUVVVVUUSRPPQRRSSTUUVVWX^dih[M@?CGMO\iZZZuZZZuZZZrkedeefec_\[WSNMD;21*$!%)*.39:CLTUX[]]YVQPKFA@;7323456<BHIOTXYYXWWVUSSPLIHB<652.+*)('&$! !"#%%&'(((((()*,,-/002578<@DEFFGHJMOPUZ__^][ZUOIHGFEEGIKKPUYYSMGE<2('  $-67AJSTW[]^_aba[UONPSVVXY[[_cghiklke^XVNF>===>?IR\]ciZZZpZZZpZZZwZZZ~ZZZZZZZZZZZZzZZZxZZZzZZZwZZZrZZZqZZZnZZZmZZZmmmZZZprtuy|ZZZ~ZZZwmdddeggnZZZuZZZ{ZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxj_\PC87;@EFNU\^cgllga\[WSOOMKIIJKLMU\decb``_^]\VPJIC=761+%$" !$()-1678:<<>@BBHNTV]dklZZZpZZZrZZZxZZZwZZZwZZZyZZZ{ZZZxZZZyZZZzZZZzZZZyZZZojccehjkoZZZrZZZvZZZuZZZuZZZrZZZppZZZpZZZpZZZoZZZmd[QOIB<;;<==BGKLLLQ@?92,,4<EFILOOPQRSRRRRQPPPSWZ[\^__``aaehkj_RGFJOTValZZZtwuZZZqoomjhgb\VUPJED<5-,)&$$'*-./023;CLMRW[[[ZYXSNIIFC@@>=<=@DGHKNQQRRSSVXZZWTQPIC<;8411/-,+($!  !"##$%%&&&''*,//146678::=?BBDFHHLOSSW[^^]\[ZUOJIIIIIKNQQV[__YSMKA7-+$ (02<GQSVY\]`cffb]YXY[\\]^__aceeghjid^XVOHA@?>>?FMUV]elmZZZrZZZzZZZZZZZZZ}ZZZvZZZtZZZunieedddeimqrw{ZZZxZZZrjigeccgjmnZZZnZZZtZZZtZZZuZZZtZZZtZZZyZZZvZZZ}ZZZ}ZZZZZZZZZZZZ|ZZZ{ZZZune[YMB77<AGHNU[\_cffa\VURNKJJIIIJKMNSY^_\ZWVVVVVQMHGA;54/)$#! !""##$'*..49>?CGKKKKKKNPSTX\`adgjjklmnnZZZmZZZqZZZqkheehkZZZnZZZnooZZZpZZZpmkihgfed\UMKF@;:::;;?CFGHHKCA:2++3;CDFIKKLMNNNNNNOOOPV\bceghiijjjlmnmcXNNRW\]fnvwyZZZwZZZ|ZZZzZZZwZZZrkiaXPNHB<:4.((()*+-0330.+,3;CEKRXY\^`_[WRRPONMJGDDEFGGHHIIKMOPU[``^[YWPIBA>;875311,($#!  !!"""###$%&'*.2369<<<<<==>??BEHHMQVVYZ\\\[[ZUPKJKLMNQTWX\`dd_YRQF<20)!#*,7CNPTW[\`ejjhebbbbccccccbbbbdfggb]XVPJDCA?>>CHMOW`hjZZZoZZZwZZZzZZZyZZZvZZZrnmg`ZZZZ[[ahnouzzZZZwZZZnZZZnje`____`bdffhiklpZZZrZZZvZZZxZZZvZZZqong_WUKA77<BHIOTYY\^``[VQPLIFEGHIIKLMNQUXXUQMLMNOOLIFE?932-(#"! #&&'()*-045;AGHNTZZXWUTTSSSTUVVX[]]_`abcefffffgjnZZZqZZZqZZZoljifc``^][ZTNHGC>:99999<?ABCCEFC;3++29@ACEFGHIJJJKKKLMNOX`ijmZZZoZZZpZZZoZZZpZZZqZZZqZZZrZZZqqpZZZqf^VUZ^cdjpvwZZZ|ZZZZZZZZZZZZzZZZumk`UJH@921,($$(,0146871+%%,3:<DMUV\affb_[Z[[\[VQLKJHGFECBBDGKLU^fgec`_XPHGDA?><9761,'&$! !!!!!!!#$%&+056:>ABA@??>=<=@DGHNSXYYZZZZZZYUPKKMORRVZ]^bfiic]WVK@64-%#%2>KMQUXY`fZZZnZZZlmmllkjihhgffda__aceea\XWRMGGC@>>@CFGQ[dfkZZZrZZZsZZZvZZZpmhg_WOOOPQRZbklZZZtZZZwZZZZZZ|ZZZzZZZxZZZvld\[XURRTVXYZ\^_dimmkhfe_YSRI@77=CJKOSVWXYZYUPLKHDAADFIJKLMNOQRRMHCCDGIIGECB=710,'"" "&**,./036:;AHOQYahheb^^ZVSRPMKKMOQQSTVVX[]^aehimpZZZsZZZuZZZnicb_[XWUSQQLHDC@<9988779:<<>??FC;3++29@ABDEFGHIIIJJJKLMNW`hilZZZoZZZpZZZpZZZsZZZtZZZuZZZtZZZqqpZZZpg_XW[`efkqZZZvZZZxZZZ|ZZZZZZZZZZZZ|ZZZvlj_TIG@810+'$$)-2368:93,&&,29;CKSU[`eeb_\[\]^]XSNMKIHGEDBBDGJKT]fgfda`YQJIFC@@=;872-('%" !!!!!!!"$%&+056:>BBA@??>=<<@CGHMRWXXXYYYXXXSOKKMPRSVZ]^behhc]WUK@64-&"$0=IKOSWX_eZZZjZZZkmmllkjhhgffec`^^`beea]YXSNIHEA>>@BEFPYcdiZZZoZZZuZZZtZZZmkfe]UNMNOQRYaikZZZpZZZwZZZ~ZZZZZZ~ZZZwZZZvZZZrld\[WTQQSUWWYZ\]afkkigdc^YSRI?77<CJKNRUVWXXXTPLKGDAACFIIJKLMNOPPKFAACEGGFDBA<610+&"! "&*+,.0147;<CJQRZbjjgda`\XTTQNKKMOQQSTVVY[^_bfijmqZZZsZZZsnhba^ZWWTRPOKGCC?<9887778:;;=>?=<840049==>?@@AABBCDEFFFGGNTZ[^`bcefhikmonjeaacgjkmpssZZZsZZZxZZZxZZZwZZZslge\SIG>6-,+)()07>?BEGG?70/1367=DKLQW\\\\\\_beea\XWUSRQOMKKJIIJRZcdeffe^WPONLKKGD@?:5/.*&#"!  !!!#$$).459=AA@?>>=<;;=>@@DHLLLLLLLLMLJHGGKOSSUWXYZ\]]XSMLD<43-'! !*4=>CGKLSY_`beggeb``^]\\ZXWW[_ccb`^]ZVRQLGBBBBCCIOUVZ^bb_[WVSPMMOQSTX\`agmZZZqZZZvZZZtZZZtZZZpZZZrje_^\YWWWWWWVUTUX\_``aba^YUSJ@76<AGHKMPPQQQQPOMMJGDCCDDDCCCCDDEDA=::;=>>><;:61-,($! !$''+.127;@AGNTV]djZZZkZZZlmnmjgdc^YTTW\``bdefgikloZZZsZZZsZZZusqZZZoZZZoje`_\ZWWTPMMJGCC?<8877667899::;45555578::;;;;;;;<=?AAA@@ADHLMORTUWZ]]chmmlkjjkmooopponljigda`YQIG=3*)*+-.8AJLORUTKC:975338=ACHMRRUX[\bgllifba`^\\ZWUUPLHIPW_`dgjjd]WVVVVVQMHGB<650+'&#! !!! !!"#(-237;?@?>==<;:::989;=@@@@??@@@AAABCHNSTSSSSSRRQMHCB=721,'#"#*016;?@FLRSW\``]ZWWUSRRQPOPU[abcccc`^[ZTMFECB@@BDGGKNQQNKGGIJLLORUVVVVW]ciijjkjhebb`_^]\ZXXTPMMOQSTX\__]ZWUK@66:@EFGIJJJKKKLNOOMJGFDA?>=;9999997533456655430,)(%" !#$)-239?EFLRXY_ekZZZlZZZpZZZvZZZxZZZyZZZxZZZwZZZrZZZpkd]]ciZZZqZZZqZZZsZZZrZZZtZZZuZZZtZZZxZZZxZZZwZZZ{ZZZZZZ~ZZZZZZvqkjea]\ZYWWSOKJHFCC?<8876666677777+.269:9887777766558:==<;::;=>?ACFGJMQRZcklnZZZoZZZtZZZtZZZqssZZZtZZZrnlkfa]\\\[[UOIG<1'&*.24?KVX[_aaXNDC<6103599>CGINTZ\ckZZZtZZZsZZZqZZZmlkjhffdb`_WOHHNT[\ciZZZnZZZpic]]^`aa[VPOIC=<60+*&" !!! !!&+015:>>=<;;;::974112344433334558:=>ELRSQOMLKIGFB=9852/.+(%$ $%).35:?DFLSYYVRNMKIHHGHHIPX_`cfhhgedc[RJIEB>><:99<>AA>;89>EKLPTWWTPMMSY^_aceeeeeeeddda]ZYRLFEFGHIPW]^\[XWLA659>BCDDEEEEEEINRRPMJID?:963100///..--....--,,*'%%#! &-34;BIKPU[\`ejZZZlZZZrZZZ{ZZZZZZZZZZZZZZZZZZZZZyZZZrggZZZnZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZqfda]ZYYXWWRMIHFECC?;8766555555443+-16:::988776665457:==<;::;<==@BEEILPQYajkmZZZnZZZtZZZuZZZtZZZrZZZsZZZuZZZrmjid_ZYYYYYTNHF<1'&*.35@LWY]`cbYPFD>7102578<AFGMTZ[ckZZZsZZZrrpmmkjhhfdb`XPIINT[\ciZZZqZZZqjd_^`bcc]XRPJD>=71+*&" !!!!! !&+0159==<;:::998630011222111123369<=DKQRPNKKIGED@;7741.-+(%$"#',127=BCJPWWTPLKIHFFFFGHOW^_beggfedc[SKIFB>>;9779<>>;967<CIJNRVVROKKQW\]_acccddddddda^ZYRKEDEFGHOV]]\ZXVK@659=BBCDDDEEEFJNSSPNKJE?:963000///....-----,++)'%$"  &,24;BIJOUZ[`eikZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZ{ZZZqihZZZoZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZmdc_\XXWWVUQLHGFDCB?;8766555555543-/26::;;<<;:9875337;>?@ABBA@??BEIIJLMNT[abeilllkjjfc_^YTPOONNMID?>6/'',179CMWY]`bbZSKIB<5443338>CDJQWX_fmnoqqrqqZZZoZZZrolji`XPOSX]^dkpqnjggiklle^WVNG@>82,+'#  !""""!!!!!!!!!"&*/02456544433220.,,--..-------.0366;?DDDCBBA?==9521.+)(%# !%)*.267=BHHFDBBA@??ACEEKPVWY[]]\\[[UPJIFCA@<8444455310049=>ADGHFECDIOUUVWWXZ\^^^^^^]\[ZRJCBCDEFMT[\XTPNE<3259<=@BEEIMPQSUWWTQMLHC?><:888888765420.-,*))'&%$#!#(,-39>@FMSTY^bcjZZZqZZZxZZZwZZZxZZZ}ZZZ|ZZZ{ZZZurllpZZZuZZZvZZZwZZZ{ZZZyZZZyZZZzZZZ{ZZZzZZZxZZZyZZZxZZZxZZZwZZZulbYXUROONMLKHEBA@@?><97677889:;;;;</1469:<>@@?=;;85227<@AEHKKHDAAEIMNMLLLPTXY]aeedcba]XSSNJFEDCBA>:651,((.4;=FNWX\_aa[VONGA:952//5:@AGNTU[aghmqZZZuvwZZZyZZZzZZZzZZZxZZZvZZZqZZZrh`WWY\``flrrqqZZZoZZZoZZZqZZZqZZZtZZZume][RIA?93-,($!  !"#######"""""""&*.//....---,,++*)))))**))))((()+-/024678999876630,,)&#"  !$'*+048998888888;?BCFIMMOPQQRRRROLIHGECB<710/-,,+***,/1146889:<<BGMMMLKLOSWWWXXXY[\[RI@@@BCDLSYZTNHF?70/1478<AEGNU\]]\\[XTPOKHDDCA@@@AAA@><<73/.,)''&&%%#!!#&'+/35<DKMRV[\`dhimZZZsZZZwZZZutrppppZZZpZZZoZZZpZZZqpomjggfdbb[TNMJHFEDCBA@><<;;;:976679:;=@BBBAD13579:=AEECA>>:5227=CDIOTTOIDDINRSPMJJLNPQVZ__]\ZYTNIHD@=<:97630--+*))07?@HOVWZ]``\XTRLE?=71,,17=>EKQRW\abiZZZrZZZvZZZzZZZ|ZZZZZZZZZZZZZZZ|ZZZ|ZZZwZZZrg_^_acchnstuvZZZwZZZwZZZzZZZ{ZZZ|ZZZ|ZZZtjb`VLB@:4-,)%"!! !"##$$$$$$####"#&*..,)''''''&&%%%%%%%&&&&%%%%$$$%')))))),.1100//,*''$  #&)*+-../0116;?@ABDDDEEFGHIIHHGGFFDD=5.-*'$$$$%%%%%%&()*-045:@EEDB@@EJOPPQQQUY\[RH?>?@BCJQXWPH@>82-,.0239?FHR]ZZZgZZZhfc``[WRQOLJJIIHHIJKKIFDC<60/,(%%%%%%#!  !#&)*2;DEJOSTUWYZ`gmZZZnprtsplihgfed`\XWUROOKGCB@>=<;9888777777766668;=>BEIIIHM156799>BFFDB@?;6227=CDJPUUPKFFJOSTQNKKMNPQUZ__]\ZYTNIHD@=<:8652/,,*)))08?@HOVWZ]__\XTSMF@>82,,17=>DJPQUZ_`hZZZrZZZvZZZxZZZ{ZZZ|ZZZZZZ~ZZZ|ZZZ{ZZZria`abdejoZZZutuwZZZwZZZwZZZ{ZZZ|ZZZ{ZZZ}ZZZukb`VLCA:4-,)%"!! !"$$$$$$$$$$####&*--+)&&&&&&&%%%%%%%%%&&%%%%$$##%'((((''*,///..-+)&%"!$'')*,,-./049>>?@AABBCCDEFFFFFFEDCB<5.-)&###$$$$$##%&'(+/239>CCA@>>CHMMNNOOSWZZQG>=>?ABIPVVOG>=71,,-/128?EGR]ZZZgZZZhfda`\WSRPNLKKJJJJKLKIFDC=60/,)&%%%%%#!  "%')1:BDIMRSTUWX_elmprttplhgfdbb^YUTROMLHEAA?><<:9888888888877669<??CGKJJJM;=;988>EKLLKJIC<55:@FGMTZZVSOORVYZXUSSTVXX\aeedcba]XTSNJEDA=:940++**)*06=>DKQRUXZZXVSRMHCB=72258<<@DGHLQUV^emnZZZuZZZyZZZ{ZZZ~ZZZZZZZZZyZZZpkklnZZZnZZZrZZZqZZZwxxvtZZZqZZZpZZZrZZZpZZZnZZZokhdbYOED<4-,(%"!! !#%%%%$$$$$$$##$&(++)(''()****))('&&&&&&&&&&$###%&(('&$$%'((''&&$"  "#$$%&''+.22344555566788888777662.*)('&&&&&&$#!!""##&)+,048876569<??ABCCGKNMGA::::;<BHMMG@973.***,-.4:ACLU^ZZZ_ZZZ`ZZZaaa^\YYWVTTRPNNLJIHEA=<8511.,*)(&%%#"!  "$&'.6=>CGLMPSVW]cijmprrnidd`]ZYUQLLIGEDBA??????????@@AAABCB@>==AEJKNRUUSPPEE@;77?HPQSTUTKB98=BHIQX^_][XX[]``^][[]^``dgkkkkjjfc_^YSNMHC><60**)**+05;<AGLMPSUUTSRRNKGFB=989:;;<>?@CGKLSZbcjZZZqZZZvZZZv~ZZZZZZZZZZZZZZZ}ZZZuZZZvZZZvZZZ|ZZZ{ZZZ|ZZZ{}}ZZZ~wZZZrlkhebbcded[RHF>5-,(%"!! "$&&&%%%%%%$$$$$%'((('''*,//...-+)''''''''''%$"#%'))'$""!!!! !#&&''(((((())****))))))('&&'()))(((%"  !#$%'*,---../0123577;>AA>:665556:?DC>932/+((()*+06<>EMTUZZZYZZZ]ZZZ`a``__^]\\YURQMIED@;65443310..+($$#""!  "$%&,178=AFGLPUV[afgjnqplgb`\WRQLHDCA?>=====?ACDEFGGHIKKLMNNJFCCIOUVZ]``\WSOME=66@JUVZ]_^SG<;@EKLT[cdcbbbcdffedddefhikZZZmZZZoqZZZrZZZpZZZsZZZtZZZqZZZmjic]WVOHB@91*))*+,0489>CHIKNPPQQQQOMKJGC@?=<::9878;>ABIPWX`iZZZoZZZsZZZ{ZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZwnfd_YUUZ`ee]TKI?6,+(%"!! "%''&&%%%%%%%%%%%%%%&'((,/333322/,)(((((((((&$##%'**'$  ##&),,++**&" ""$%&'&%%%'),,/245433310/037::62.-+)'''''(-289>DJKRY_ZZZ`ZZZbceedddc^ZUTNHB@;5//13555432.)$$###"! !!"#%%)-237<@AHNUVZ_ddhloojd_^WPJID@<;:8778:;<@DHHKMOPQSTUVXYXSNJJQX`aehkjd]WOOF=66@KUW[^a`TH=<@FKMT\ddddccefggfeeefhijloqrrZZZsZZZqZZZtZZZqZZZnkjd^WVOIB@91*))*+,0489>CGHKMPPQQRRPNLLHEAA?=;;:877:=@AGNVW_hZZZpZZZrZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvmdc]XSSX^dc\SJI?5,+(%""! "%'''&%%%%%%%%%%%%%%&'((,0343322/,)))((())))'%$$&(**'$!! ##&),,,+**&" !!#%''&%%%')++.033322210//269952.-+*(('''(-278=BHIPW]^ZZZ`ZZZbZZZdZZZdZZZdZZZccb^YTSMGA@:4//14776644/*%$###"! !!"#$%)-126;?AGNUVZ_cdhloojd_]VOIGC?;:98779:<=AEIJMORRSUVVXYZZTOJKRYabfilke^WUTJA88AKUW[_cbVK??CINPW_ghijkkkkkkjihhijkklmmmlkiihhgf`YSQKD><6/)))+,-159:?CHHKNPQSUXXWVVURNKJHFDDA?<<<==>FNVW_fnpZZZwZZZ~ZZZZZZZZZZZZZZZ{ZZZzZZZZZZZZZZZZZZZ~ZZZ|ZZZxZZZwnf^\VQKKOSVVQKED<4,+(%""!! #%''''&&&&&&&%%%%&&&'()),03332220.,+,,,-./00/.--/011.+)(&$""  "$'')+---,+*&! "$&'*-0011100///012210/////025886311123320///0226:>?DINOQSUZZZUZZZVVVVQMHGC?<;:988<AEEC@=<5.''%$##!   !!""#$&*-.38>?FMTUZ_deimqpke_^VMEDA>;;<=??ADFGKPTUWZ]]]]\\\[ZYUPLLRX_`eimlga\\ZOD::BKUV[`ddYMBBFLQSZbjkmZZZpZZZqZZZqZZZppoomljjkkllkjiifc```aaaZTNLF?983.)(*,-.27;<@DHILOQRVZ]^^__^[XTTRPNMIEAA?=;<DMVW^ekmZZZsZZZ{ZZZ|ZZZZZZ|ZZZzwwxZZZxZZZ{ZZZ|ZZZxZZZpmle^XVPJEDFGIIFC@?82+*(%#""! !#%''''''''''&&&&&&&&')**-/2222110/../0113577777778885300.,**(&$$#""""#$#!#$$$$$$$$%')++,.//.,+*&!!!""##&(+,15::<<==:63322110.,,-/01357765458<??<:7630--/2458;??ADFFGHHHD@<;:877:=ABHNSTOJED;3+)'&$$"! !""! !!!"""$&)*06<>ELSUZ_dejnrrmg`_ULCA?=;;?CFGJNQRVZ^_bfiigebb_\ZYUQMMRW]^chmmieab_SG<<DLTV\afeZPEDINTV]elmZZZrZZZwZZZzZZZxZZZwZZZsZZZrZZZtZZZqnlllllljgdc_ZVVXY[[UNHGA:540,((*,/048=>AEIJMORSX^cdefggda^][YWVQLGFA=::CLVW]cijnZZZqZZZuZZZyZZZwZZZuZZZpqZZZtZZZrZZZtZZZrnidc]WRPJD?>==<<<;;:50+*(%##"!!!#%'(((((((''''''''''(*++-/111111111123558:==>?@@@??><:876421/-++*)))*+,+%!#%%%$## $(()))))***,-//0000.-,+&!!#$$%&&)-127>CDFHJID>875321/,**,/1135677889?EKKGC?>70)()*,,-.0025779:;;74001234;BJLS[ab[TMKA7.,*'%%#! !"##"!!  !!!!!"$%&-4;<DKSTZ_efkpttnha_UJ@?=<<<BHNOSW[\`diimZZZpZZZuZZZrZZZrlhgc^YXUROORVZ[agmmkhgb_SH=<DLUV\aee[PFEJOUV]elmZZZrZZZuZZZvZZZwZZZvZZZtZZZsZZZrZZZomkkkkkkhecb]XTTUWYYSMFE?943/,)(+-0159>>BFIJMORSX]ccefggeb_^\ZWVQLGFB>:;CLUW\bghlZZZqZZZtZZZtZZZuZZZrZZZrZZZoZZZrZZZpZZZrZZZnlgba\VQPJD?>=<<<;;;:50+*(%##"!!!#%'((((((((((((('''()*++-/111111111123558:==?@AA@@??=;9865330.,,++**+,,,&  "$''&%$$ !$())******+,.000000/.,,'"!$$$%&&)-128>DEGIKKE@:975320-**-/12357789:;AGMMJFA@91***+,,--./1355789963001245<DLNU\cc\UMKB8.-*(%%#" !"#$#"!! !"#%&,3:<CKRTY_efkpZZZtZZZtnhb`UJ@?=<;<BHNPTX\]aeijZZZnZZZqZZZsZZZvZZZsZZZmZZZihc_ZYVSPPSVZ[agmmkig_]SH??HQZ\_acb[SKKNRWX\affikmmkhffca___```][XWSNJIJJJJEA<<8410.,**.389<@DEGIJKLMNNSW[\^`bbbbba]YUTOJEDB@>>CHMNSW\]adhhhgffffffc_\[XURQMIFEEDDDCA@?94.-*'$$####$%'''((()+,,,,,,+***+,--./0111111111122246789:;;;;;;::98765431000111/-+*&! $''()))+,..,+*)&"!%()*+,,+++,-.00234444430-+*('%%$###'*./49>?DIMNKHEDB?<<8511111259==@CFGLQVWTRONG@:975443211100024668:;<=?@AGNTU[`dd\SJH@7/.,*('&$""#$%%$#"" !"$%+29:AIPRX^dekZZZpZZZuZZZupjdbWLB@=;9:@FMNRVYZ_cghlZZZpZZZsZZZsZZZpZZZlihgfdda]ZYZZ[[ahnnmkk[[RIAAKV`abaa`[VQQSVXY[]__`aaa_\ZZWUSSSTTTROMLHD@?>=;;853210//-,+,29@ADHKKLLLLKJJJMPSTWY\\_bed_YRQLGBBBBCCCDEFIMQRUX[\\]]]]\\\ZXVVUTSSQOMMMMMMJHED>710,(%%$$$$%&&&'''(*-000000.-,,-.//00001122211110//00112344578888888766544456772-((%#!!&*//1233445531//+'$#" !%()*+---,,,./0135889:;;:9872,&&$" $'++049:AHOPPQPPMJGFA=9863227=BCHMQRW[_`_^\[VPJIEA=<:7541.++.034:@GGIKMNRW\\_ZZZbZZZdZZZdZZZZPFD=710.,+*(&$$%&''&%$#" !#$*179@GNPV]cdkZZZpZZZvZZZvZZZrlgeZNCB>:78>DJKOSVW[`deimqqnkhhjmZZZoZZZqkhdc`^\\bhnnnmoXXQJCDO[fgeb_^\YWWXYZZZYYXWVUUSPNNKIGGGHIHFDBA>:6530--,*)*+,-----.6?GILOQRPONMKHFFHJLLORVV\bgg_XPNID@@BDGGDA==@CFGJMPPQSTTSSRRRQQQRTUUUUUUUVVVROKJC;43.*&%%&&&&&&&&''(,034444420/./1221000112222220.-,,+++,-..02445788877777779;==5.&%%$$%*0679;<<<<;;97541-))'%#"!"%((*,...---./1148;<>@BBDEED;2('# !$'(+/34>GQRUY\[XTPOJE@?:6239@HIOV\]adZZZhZZZhZZZiZZZiZZZiZZZid_ZYSLFEA=983-((*-02<GQSUWYY\_bbZZZcZZZdZZZdZZZcZZZXMB@;6210/--+(&&'())('%%#! "#)/57>ELNT[bcjZZZpZZZuZZZvZZZtZZZnZZZig\PEC>:56;BHILOSSX\abfjZZZpZZZpljhZZZhZZZmZZZtZZZwZZZxZZZtZZZqZZZmZZZlgb]]bhnoootXYQJDEP\gheb_^\ZXXXYZZYXWWVUSSQNLKIGDDEFFFDB@@<9541/,++*)*+-...../7?HILORRQPONLIFFHIKLORUV\bgg`XPNIE@@CEHHDA==@CFFILOOQRTTSRQQRRRRSUVVVVVVWWWWSPLKD=54/*&%%&&&&&%%&''(,044455431//01332100122322220.,,,+**+,-.02445678777777779;=<5-&%$$%%+178:<>>>===;9662.+*(&$$" "%((*,..----./0148;<>ACCEFGF=3*($!!$'(+/24=GQRVZ]]ZVRQKFA@;734:AHIPV\]aehijZZZjZZZkZZZjZZZfa][UOHGC?;:4.((*,01<GQSUWYY\^ZZZaZZZaZZZbZZZbZZZbZZZaVLA?;6221/..,)'''())('&%$"  "#)/57>ELNT[bciZZZoZZZtZZZwZZZqnig\PED>955;AGHKNQRV[_`diZZZlZZZlkiggZZZmZZZqZZZzZZZxZZZwZZZrZZZmZZZnhb]]cinooot\\VPKKU_ijigedb_]\[YXXWVUTROLKHFCCA><<==>>=<;;96431/--/02358::74127>DEJOTTVWXXTPMLLLLMQUYZ_cgg`XQPMJHHIJKKGD@ADIMNPRTTVY[[YWVVY\^_____^\[[YXWVUTRQKC<;4,&%%%%%%%%%&'((+.2235665433579:87666555566631..-,++-.0023555555555443333333-(""#%'(.4:;=>@@AABBA@??<84420..+)''# ""#####"""""!!""""$&()*+,,,,++,-..1478<@DEHJLLE=64.(#"#%''+046>GPRW]bb]XSRMHCB?=<<>ADDJOUVZ_dehkmZZZmZZZjZZZgcb^YTTPKGF>5-,,-./6=DEFHIILNPZZZQZZZRZZZRZZZSRKD=<964444441/,,++**))((('''((('%" !!'-35=DLMSX^_diZZZoZZZnkgcbXOFD>9448=BCEGIIMPTTX[^^^^]^chmnlkiifcaaejoopqvaa[VQRZckllkjjgdaa]YVUTSRRMHDC@=;:8655555566776433200047;<@CGFA;558<@AGNUVZ^aa]YTSQPNOSX]^aegg`YRQQQQQPONNKGDEJOUVWXYZ]`bb`^[\afllkjhheb`_\YVVVWXWQJCA8/&%$###$$%%&'((+-0024777667:=@A?><<:98889::7400/-,,.13345665433322210//-+))&" "%)*06<=?ABBDEGGHHIHEB>><:875300+&!!!!""%(+++++**)(((('''&%%&')))********++,.145:@EFJNQQLGB@80''&&&',178@HOQX_ff`ZTSNIEDDDDDBA?@DHMNTZ`aZZZfkopZZZnZZZkZZZihfc``\XTRH=31/-,,/3677899;=??ABCC@=:9865579::7411/-+++***,-//0121,'"!  %+23;DLMQUYZ^bffd`]\UMFD>8336:=>>?@@CEHHKMPPQRTTY]bbccddddeehkooqsyee`\XX_fmnooZZZmZZZplied^YSRRPOOIC=<96321/...--./133333322239?EFKOSSJB989:;<EMVX^ekkfa[ZWSQQV\abdfhgaZTTUWYYWTRQNKHIOV]^^__`cgjjgdabiZZZqZZZyZZZwZZZuZZZvZZZrZZZplhdc^YUUWZ]]WPIH<1&$#"""#$%%&'()*,..147889::?CGGFDBA?<::;=>=:6220/..0366788863110000.-++'$ !&+,28>?ABDDFIKLNPQQNKHGEDBA?<983-''''((,045432210///..-,*((())))))))))))))),.128?FHMRVVTQNLB7,+)'&'-39;AHOQYbjjc]VTPKGGHJLLFA;;>AEFMT[ZZZ]ZZZdZZZjZZZrqpoZZZnZZZnmlkkgc_^QE872.+**)))))))+,..024455666677:=@@=:6630-,,,--03679:;;3,%$" $*01:CKLORUUX[^^\YWVPKED>822469998889;==?@BBEHKKOSVWY\^_behiklnnqt{eea]YY`gmnooZZZpZZZmlhdc^XRQPONNHA;:85221/...---0244444433239?FGLQUULC:99:;<DMVX_ekkgb]\XURRW]ccegihb\VUWY[ZXUSROLIJPW^_``aaeillifddkZZZuZZZyZZZyZZZxuZZZsZZZsmidc^YTTWZ\\VPJH<1&$#"""#$%%&'))*,..15889:;;@DHHGECB@=;;<=>>:6321/..1467788863110000.-++'# "&*,28>>@BCDFILLOQRROLIIGEDCA>;:5/)((()).27776554321100/-+))))**))))))))))**,/129@GHMRWWURONC7-+)(''-4:<BIOQZbjjd]VUQLHHJKMMGA;;>AEFMZZZUZZZ\ZZZ]ZZZdZZZjZZZpqponmmlZZZlZZZkhd`^RF:84/,+*)(((((()+,-.02234555667:=@@=:7630-----.14779;<;4-%$" $)/09AIKNPSTVY\\YWTTOIDC=722468988889;<<>?AADGJKNRUVX[^^behijlnnZZZqs{iheb__chmmkifeb^ZYTOJIHGEE@<766666789975448=BB@><;85339@GHOV]\TKCA><:;EOXZ_eijigfeb_\\`dhiloZZZrZZZslgbbaaa`^[YXUQNOTZ`adgjkoZZZrZZZxZZZxZZZuZZZuZZZsZZZsZZZxZZZy~~zvqqlhcb\VQPQQRRMIDB90'&$#""#$%%&(**,.013699;<>?BFJJIGFEB?<<<<<<95111111357778887544433321//-+))'&%%&'((-277:<>?CGLLOQTTRPNNMMMLJHED>932/-+,5>GHHGFFECBB@><;73......-,++++++,./048<=CHNOSVZZWTQOC7+*((()08?AGMSU]dllgb\[YXVUSPMLHC??DJOPZZZVZZZ]ZZZcZZZdZZZgknnkheZZZeZZZeZZZdZZZdda^[ZRJBA=9542/--,,,,,,----../011122357::976543211100234456761,'&%#""$')*06<=ADHHJKMMKIGFC?<;852258;<=?@AAABBDEGHJMOPQSUVY]`abdeeffggkowlkifddgillgb][WSNNIEAA?>=<963358:;>ADDA>;;BIPPMIDC>8339@GIR[dd\TKJD?:;EP[\`dghjlnnliggilopZZZrZZZwZZZyZZZzZZZxZZZuooligfda_^ZWTTX]bchnZZZrZZZuZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZ|vqpkgbaZSMLJIHGDA>=6/)(&$""#$$%')++.03358::=?ABEHKKJIHHDA==<;;:740023556677888888777777654333221/.-*(%%(,/0369:@EKLORTTTSRRSUVVTRONIC=<72./<JXZYXWWVTSSPLIHA:43333320......0356<BGHMQUVXZ\\YVRPC6)((()*3;DFLRWY`gmmjfbabccc\UMLIGDELSZ\aZZZeZZZjZZZkZZZkllkgb]]\\\\ZXVVRNKJFB?>:73321110/..,+***+,--../024444455666554432111121.+((''&&%$$$'+/048<<=>>><:98643222237:>?CFIIIIHHJLNNPRUUUVVW[_cccbbba`_`eksomljiiijjjbZSQMHCC?<99765421//4:?@FKPPKGBCLU__ZTMLC;339@GIU`jkc\TRJB;;FQ]^`cefkZZZrZZZuZZZvZZZwZZZuZZZrZZZpZZZsZZZtZZZvZZZuZZZzZZZ~ZZZZZZZZZZZZZZZ~ZZZ|ZZZvZZZpmligdd`\YY\`demZZZvZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwpojfa`XQJHEA==;:883/+*'%####$$')+,/25679;;>ADDGJLLLKJJFB>><:9852002588888888999::::;;;:9889;<<:865/(""$&(),045<CJKNQTUUVVVY\^^][YXSMGF>702CVZZZiZZZgjiggfedc_ZUTKB:988886421111258<=DKRSVY\\]^__[WSQC5(''(*,5?IKPV[\cinoljhhkZZZoZZZrZZZpeYNLKJJKT]egkZZZmZZZsZZZoZZZnljib\VUUUUUTSRRRSSSPLIHC?;:9766420/,)&&''())*++,-..023469;;:97741/.--,,+*******&" ""',1110//.,++****-0338=ACHMRRQPOOQSUUWYZZYXWX\affdb__\[YY`goolkjihiiihaYQPKFBA>;98764420//5:@AGMSSNIEEOXbb\VONE<439@GIU`kke]VTLD<=GR]^aceflZZZtZZZwZZZ{ZZZvZZZvZZZsZZZsZZZvZZZtZZZwZZZvZZZ}ZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZvZZZunmkhfea]ZZ]aefmZZZtZZZ}ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxpojfb`YQJIE@=<;:9840++(%####$$')+,/25679;;>ADDGILLKKJIFB>=<:885200258988888999:;;;;;;;;:99;<>><:870)""#%'(+/34;BIJMQTTUUVVY\__^][ZUPJHA923EWZZZiZZZikjiihhgfb]XWND;:::::753222336:=>FMTUXZ]]^___[WSQC6('')*,5?IKPV[]ciZZZnomkiilZZZnZZZpZZZrfZNMLLMNV_hiZZZmZZZoZZZuZZZqZZZqnjic]WVVVVVTSRRSTUUROLKFB==;9885300,)&&&'(()**+,-..024579<<;:9852/.--,,+*******&" !%*///.--,*)))))),/238=BCHMRSRQOOQTVVXZ[[ZYXY]bggeb``][YZ`goddcbaa`^]\UOIGD@==<<;;;;::74118?FHQZbb]WQR\fZZZpZZZrjbZXMA76:@EGS_jkhd`_WOHHNU\]`cghoZZZvZZZ~ZZZZZZZZZZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwZZZtZZZrZZZqmjieb__cgklZZZqw|}ZZZZZZyZZZtZZZsolhg_WONIFBBBBBA<721-)%%$$$$%')),/2245679;>>ADGGFDCC@=:99877643357:::;;;<=>>?@BBA@@?????@ABB@?=<4,%$$%%&)-127<ABEILLNPRRVZ^_acdd`\XWOHABMXcegikkmnZZZqZZZpmjfeZPFDCBAA?<::;;<=@CGHMRWXZ\^___^^[WSQE9-,+**+4=GHNTZ[`ekknpZZZrZZZprqpZZZng_WWY\_`fmZZZuZZZrZZZuZZZyZZZyZZZxZZZzZZZvZZZsZZZuokggffffc`^]]]]]]]]\XSNNJFBB=832.*'''(()**,,.02369<<>?@@AAAA=9541/,,+*))((''$!#&))))(('&&%&&''*-005:?@EJNOOOPPRUWXZ\__`abbehkllkkkhecbfinY[ZYYYVSPOJE@?=;99;<>>?@A@<734;DMO[fZZZsZZZske__jZZZuZZZ}ZZZZZZyofcUG:9;?CEQ]ijkkkjc\UTVY[\`dijZZZqZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZwZZZqmmifddhlZZZoZZZtux{|ZZZ~ZZZvwtZZZrone]TSOLHHIKLKE?872,'&%$##$%''*,//01224688;>AA@><<:8656677666689;<=>??@ACCEGHHGEDDDEEEFFFFECB@80('&%$$(+//369:>ADEHJMNSY^_dhmmkigf_WQQTY]^chlmZZZrZZZtZZZyZZZ{ZZZyZZZvZZZsZZZqg\POMKIHFDBBCEFGJMQQTWZZ\^``_^]]ZVSQG=21.+**3;DFLRWY]bghnZZZvZZZxZZZ{ZZZusnmid`afkZZZoZZZsZZZwZZZyZZZZZZ~ZZZZZZZZZ~ZZZ|ZZZZZZ|ZZZ{ZZZzZZZwZZZyZZZwZZZyZZZvZZZwZZZsniigfeehkZZZoZZZpid`^YSMKD<540,((()))+,-.1478<@DEEEEEGHJIE@;:62.-+*(('&$$"  "$$$$$$##""#$%%'*-.38=>BFJJLNOPRUXY\_bbehkkmoZZZpZZZqZZZrZZZuZZZxZZZwZZZsZZZnllkkmORRQQQMHDC?<887656:>BBDFHGA;66?ISUdZZZsZZZZZZZZZyZZZtllZZZvZZZZZZZZZZZZZZZyZZZrZZZl]M=;<>ACO[gimZZZrZZZtZZZuZZZphba_][[`fkmZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZvZZZnZZZqmjhhmZZZqZZZtZZZyZZZwyyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZ|{zZZZyZZZvZZZtlcZYUROOQTVUNF?=70)(&%###$$%'*,,--../02269<<:86643223566789:;<==?ACCEFHHJLOOLJHHIJKKKKKJIHFE=4+*'%##&*--/1236:=>AEIJPW]_fnZZZvZZZxZZZxZZZvZZZvZZZvZZZng`_\ZWX_fmnZZZsZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZug[YVSQPNLJJLNPQTWZZ[[\\]_``_^\\YVRQI@761-))19BCIOUV[_deoZZZzZZZZZZZZZzZZZvmlkjjkZZZrZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZuZZZrolmZZZpZZZzZZZ|ZZZ~ZZZ|ZZZtZZZoZZZpg^VTKA761-*)****,-/048<=BGLMLJIILPRRMGA@:50/,*('%$""!  !"##%(*+05:;>AEEHKNORUYY]aefjZZZmZZZuZZZttuZZZuZZZuZZZ{ZZZZZZZZZZZZZZZxZZZuZZZuZZZsmlORQPPPLGBA>;876656:?CDFHJIC<67?ISUdZZZsZZZZZZZZZ|ZZZuooZZZzZZZZZZZZZZZZZZZ|ZZZrZZZq^N><=>ABN[ginrZZZtZZZvZZZrkeda_]]bgmnZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZxZZZsZZZnZZZpljhhlZZZpZZZxZZZvZZZvZZZwZZZxZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|{ZZZzZZZwZZZwne\[XURRTVXWPH@?81*)'%###$$%'),,---./01259<<:866432245778:;;<=>>@CEEGHIJLNPPNKIIJKLMLLLLJIGF>5,+(%##&*-./1236:=>BEIJPW^_goZZZtwwZZZxZZZxZZZvZZZrjcb^[XX_fmoZZZsZZZzZZZZZZZZZZZZZZZZZZZZZsi^\YVSRPNKKMORRUX[\\\\\]_``^][[XURQI@862-))19ACIOUVZ_depZZZ{ZZZZZZZZZ|ZZZunmlllmZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZyZZZvZZZspnnZZZvZZZzZZZ~ZZZ~ZZZyZZZuZZZpZZZng_VTJ@751.***+++-.0159>?DIOONLJKNQTTNHBA<610.+)(&$#""!   !##%')*/49:=@CCGJMNQTXX\`dejZZZqZZZsZZZtuuvZZZvZZZyZZZZZZZZZZZZZZZ{ZZZvZZZwZZZqnlRTSQQPKF@@=:7789:;BIPPRTUTLC;;@GNP_nZZZ{ZZZ|}ZZZZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZsZZZrbRCA???@LYegmrxxvZZZvZZZtZZZppnllpZZZsZZZvZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZ|ZZZwZZZxZZZuZZZqZZZnZZZmkhedb`__behhiijjnZZZqZZZtZZZvZZZrZZZrZZZrZZZqZZZxZZZ|ZZZ}ZZZZZZZZZZZZ~ZZZxZZZrjihgffdca`XPHG?70/+'$##$%%(,//000112337;>>>=;;;:::;=?@BEHHGGFGKOSTTUUUUUUUSRPPPQRRSSSSQNLJA8/.*'%%(,/047;<@DHHKMOPV\bcjZZZrwx{ZZZ}ZZZZZZZZZ}ZZZxZZZoZZZojeaaejoprZZZtZZZxZZZuZZZ|ZZZ{ZZZZZZ|ZZZyZZZsmlhd`_[WSSTUVVX[]]\[YYYZZZXWVUSPMLE>651-**29ABHMRSZ`giZZZtZZZ~ZZZZZZZZZZZZZZZ|ZZZ{ZZZ|ZZZyZZZxZZZ|ZZZ}ZZZZZZZZZZZZ}ZZZ~ZZZ|ZZZ|ZZZ{ZZZ|ZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZ}yxwuZZZtZZZtvxZZZxZZZxZZZslec\TLJC;320/--/022579:>CGHNU[[XTQQTX[[VPKJEA=<:7431.++)(''%$""""""""""!  !!#$&&*-114689;>AAEIMNSX\^ciZZZpZZZpruwx|ZZZZZZ~zxwtvVXUSQPKE?>;9669<?AJS\]_`a`UJ@?AEHJYiZZZxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZvfVGEB?=>JWcelrxyZZZ{ZZZZZZZZZZZZ~ZZZ~ZZZ{ZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZ{ZZZtZZZsZZZooljigda`^\YYXWVVXYZZ[[[\^`cccddejZZZnZZZwZZZvZZZzZZZZZZZZZZZZZZZZZZ~ZZZwZZZxZZZzZZZyZZZ{ZZZ{ZZZuZZZpkiaYPOG?75/*%$$$%%*.22334444448<@AAAAAABBBDFHHMQUUSQOPV]cccbaa_][[YXVVWWXXYZ[[WTPOF<32.*''*.238>DEJNSSTUVW\afgmrxyZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZqkjloqqpnlmZZZqZZZxZZZ}|}ZZZ}ZZZ|ZZZ|ZZZyZZZqmlfa[[ZZZZ\]^^\YWWVTSSRQPOMKHGA;430-++29ABFKOQYbkmZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ{ZZZxZZZxZZZtZZZsZZZrZZZsZZZoppZZZsZZZtZZZvZZZvZZZzZZZ|ZZZ}ZZZ~}|zzzzZZZ|ZZZ{xuZZZrZZZsiaYWPHA@:500000147::=@CCHLQRY`ggb]XX[_bb]XSROLIIFB??;74310.-+(&&%%%%%%%%#! !""#%&()*,..02459=BCHNTV\bhiotyZZZzZZZ~ZZZZZZ|zzzZ[XTRQJD>=:867;@EGR]ijkllj^QDCBBCEScZZZqZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZviZLJE@<=HUacjZZZqZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZyZZZwZZZuqnmjgdc`^[[XURRQPOONNNNMMMMMMNNOPRRSUVW^fmoZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZpjaYWNF=<4-&%%%%&+05667776656:>CCEFGGHIJJLNQQW]bb_\YYajZZZtZZZsZZZsZZZomlhea`_^]]]]]]_abb^ZUSJ@751-)),045=EMNSY]^^]]^bfjkotZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZuZZZsZZZttZZZvZZZqnhccjqZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZ{ZZZyZZZpjcca`____`_\YUTRPMMLKJIHFCC=832/-+,39@AEIMNYdZZZnZZZrZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZzZZZwZZZuZZZsokhgfeeehjmnZZZoZZZtZZZxZZZzZZZyzzZZZ}ZZZ{ZZZ|ZZZZZZ~ZZZwZZZqki_VLJD=7620--/1449=ABEILMRV[\dlZZZtZZZule_^beiie`[ZYWUUQNJJEA<<97440-**)))))(((%" !!#$$%&((-268>ELNT[bckZZZsZZZyZZZyZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZ~Z\YURQJD>=:867;AFHT_klmnml`SFECCCDRaZZZqZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZzZZZxi[MKE@<=HTacjZZZpZZZvZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZzZZZwZZZtplkiecb_]ZZWTRQPPOONNNMMMMLLLMMNOPPQSTU\dkmZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZslc[YQH?>6.&%%%%&+05667777666:>CCEGHHIJLLNPSTZ_eeb_[\dlZZZuZZZvZZZsZZZrookfbb`_^^^^^^`bcc_[VULB973.**-145>FNPUZ_``___cgklpZZZsZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZyZZZvZZZuZZZvZZZsoiccjqZZZyZZZzZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZsnffdcbaaaa`]YUUROMLKJIHGECB=822/-+,29@AEILNYdZZZpZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZyZZZwZZZsZZZqZZZolifedcbcehkkZZZnZZZqZZZvZZZvZZZxZZZzZZZ{ZZZyZZZzZZZ}ZZZ~ZZZ~ZZZvZZZohg]SJHB;542/--0256:?DEHLOPTX]^fZZZnZZZxZZZvZZZoha`dgjjfa\[YXVVROLKFB==:7541.+******)))&#  !!"#$%&'+056<CJLRY`aiZZZoZZZwZZZxZZZ|ZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZ}~cc]XRQKD>=;978?GOQ\gZZZsZZZurrqZZZnf\SQLGCDOZfiZZZuZZZZZZZZZZZZZZZZZZ{ZZZrZZZqeZOMGB>>IT_ahoZZZuZZZyZZZ{ZZZ}ZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZ~}ZZZyZZZ|ZZZvpjjihhhd`]\\[ZZ[[[[YWUUTTTTSRQQQQQQPPOPTY^_fmZZZqZZZtZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxohf^ULJ?5*)'&%&*/3457888777:=@ADGIJMPSTW[_`flZZZqZZZqZZZonlmZZZtZZZyZZZ|ZZZ~ZZZ{ZZZ{ZZZyZZZwZZZtpkjhebb`_^_acffdca_WOFE?:544445?JTV[afgffeeinZZZqZZZqZZZyZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZuppZZZsZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZyZZZwZZZsZZZvZZZrnkje_ZYUQMLIGEDCA??;732/-**06=>CHMOZfZZZqZZZrZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrZZZrmjffb_\[ZYXXZ\^^adfghjllnZZZqZZZpZZZpib[YQIA@<84444457:=>EKRSW[__adfgZZZrZZZzZZZZZZZZZ{ZZZvZZZonnnnmhb\[XVTSPNKJFB>=:73310//0122110/-*''&%##""!! !"""#$$'+./5;@BHNUV\cijZZZnZZZuZZZvZZZyZZZvZZZwZZZtZZZqZZZrsxljc[SRKE>=;989CMXZdoZZZxZZZzxvtsmf`^ULDDKS[^lZZZzZZZZZZZZZZZZZZZZZZxmkbYPOID@@JS]_elZZZsstZZZtZZZvZZZtZZZtZZZuZZZuZZZsZZZyZZZyZZZ{ZZZ{ZZZ}~ZZZ~ZZZ}ZZZypiijlnnie``acddfgihea]]\\]\ZYWVUTSSPMKKMORRX]bdkZZZrZZZxZZZzZZZyZZZ}~~ZZZZZZZZZZZZZZZZZZZZZ|ZZZtZZZukbYWI</-*'%%)-12479998889;=>BFJKPUZ[`ejkZZZqZZZ{ZZZZZZZZZ~ZZZ~ZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZrZZZtojffca``behijkkjc\TSLF?>;755AMY[aglmlkkkZZZoZZZuZZZyZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZuZZZtmf_]XRMLHDA@?=<;9643/,)).49;AHNP\hZZZtZZZuzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZqigc`\[XURQPOMMNPQQSUWWY\^^_`a`ZTMLF?98754479<<?BFGOX`afjZZZoZZZpZZZnooZZZpZZZ|ZZZZZZZZZZZZZZZZZZ{yZZZwZZZvZZZqZZZrib[ZWTPPNLJIEA>=9522223358::987742//-*((&$##"!!!!!!!""""$&()-278=CIJOUZ[`fkkkkjjigduqh^TSLE?><:9:FS`clZZZuZZZZZZ~ZZZ~ZZZ{ZZZyZZZwZZZtZZZqmk^RFEHLRTcZZZsZZZZZZZZZZZZZZZZZZZZZZZZthf_XRQKFBBJS[]ciZZZmZZZpmkiiijjkmpZZZtZZZvZZZyZZZ|ZZZ|~ZZZZZZZZZ}ZZZpihlZZZrZZZvZZZwZZZpjddgkZZZpZZZpZZZqZZZtZZZuZZZwZZZqkeeeeeeb`]\ZYWVQLGGFFFFJNRS[dlmZZZqZZZwZZZxZZZz|}ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZmebSC31,(%%(,/037:::9999::;@FKLSZ`bhZZZpZZZuZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZwZZZrkjgdaadhkloZZZsZZZxZZZvZZZohb`YQJIA;55BP^`flZZZqZZZoZZZpZZZqZZZqZZZpZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvmdb[TNLGB==;:987644/+'',168?GOQ]iZZZtZZZtyZZZ}ZZZ}ZZZ|ZZZZZZZZZ}ZZZ~ZZZ|ZZZ|ZZZzZZZzZZZoh`^ZVRQNKHHFECCCDEEFGHHKMPPQQRQLF@?:6112345:?CDGKNOYcZZZnZZZnZZZtZZZwZZZ{ZZZ{ZZZyZZZxZZZxZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZsZZZqkb[YUQMLKIHGDA==84002477;?CCB@>><:7740--*(%%$#""""!!!!!!!"##&*-.39>?CGJKQX^^`aab_\Quri`VTMF@?<:9:GTacmZZZxZZZZZZZZZ|ZZZ{ZZZwZZZvZZZvZZZtpnaTGFILPRaZZZsZZZ~ZZZZZZZZZZZZZZZZZZ~ZZZuhf_YRQLGCCJS[\bhZZZkZZZmljhghijjmpZZZuZZZsZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZ|ZZZskjnZZZqZZZuZZZwZZZplffimZZZsZZZpZZZvZZZxZZZxZZZwZZZrmgggghgeb__][YXSNIHGFFFIMPQYaijZZZpZZZuZZZxZZZyZZZx|~ZZZZZZZZZZZZZZZZZZZZZZZZxZZZmfcSC31-(%%(,/048;;;:::9:::?EJKRY_agZZZoZZZvZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZuZZZslkifddgjmmqZZZsZZZvZZZxZZZqjdb[TMKC<56BO]_ejZZZnZZZqZZZrZZZnZZZqZZZqZZZuZZZzZZZ~ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZznec\UNMHB==;:887644/+'',168?GOR]hZZZsZZZtZZZwZZZyZZZ{ZZZ|ZZZ}ZZZzZZZ~ZZZ}ZZZ{ZZZ|ZZZvZZZxZZZpg^]XTPOLIGFECBBBBCCDEEFHKNNNOONID>=95112456;@EFILOQZdZZZlZZZpZZZtZZZxZZZ~ZZZ}ZZZ|ZZZwZZZyZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtZZZpjbZYTPLKJIGGDA==94102578<AEEDBA@><:9630/,*''%$####"""!!!!"""%(,-27<=AEHIOU[\]^_`]ZQyvZZZnh`^VMED@<9:ER^`kZZZuZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZpcWURPOP\hZZZtZZZxZZZ|ZZZZZZZZZZZZZZZwkjc]WUPKGGLQWX\`deddddgjnoZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZ}ZZZZZZZZZ}ZZZ{ZZZuZZZsZZZrZZZtZZZ{ZZZZZZZZZZZZZZZ~ZZZ~ZZZ{ZZZvZZZrZZZpZZZpZZZpZZZrZZZsZZZqpnnmljic]VVTRQPONMNSX]^chmnZZZpZZZu|~ZZZZZZZZZZZZZZZZZZzZZZ{ZZZsg^[N@31-)%%)-238=BBBA@@=:88;?BCHMRSY_dflZZZqZZZxZZZyZZZ~ZZZZZZZZZZZZZZZ|ZZZyZZZvZZZwZZZvZZZvZZZxZZZxZZZxZZZyZZZvZZZwZZZ~ZZZ}ZZZZZZZZZxZZZrkid^YWLA77?GPRVZ^^`acdiZZZlZZZuZZZwZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZshf_XQPJE??=;987533/+''-3:<BJQRZcjlnZZZrZZZqZZZpZZZrZZZrZZZpZZZqZZZpZZZpZZZpZZZqh`WVQLHGECAA@>==>>???@@@BCEEEEEDA=:986558;>?DIOOQRSTZ`fgjmZZZpZZZnZZZpZZZooqZZZ|ZZZZZZZZZ{ZZZvnme]USNIDDCCCCA@>>:74468;<BIOPPPOOLJGGDA>=:74310..,+))'%$##"""$&()-267<@DEINRSTTUVTSL~zZZZsZZZrji_ULJD>9:DOZ]iZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZqgd\UNNW`ikZZZvZZZ~ZZZZZZZZZZZZvpnha[ZUPKKMPRSVY\\^_abglZZZqZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZ~ZZZ|ZZZZZZZZZZZZ~ZZZZZZ}ZZZ}ZZZ}ZZZ~ZZZ|ZZZrmedb_\\VQKKLNPQV\bckZZZqZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZvZZZsi_VSH=21-)%&*/45<BIIIHGGA<6679:;>ADEJOTUZ_dflZZZsZZZxZZZyZZZ~ZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZrZZZrmiecUG:9<?CDGIKLOSWX]cijZZZoZZZvZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzljb[TSMGBA><997532.*&'.6>@FLQSW\abdfhhfeccegihaYQOJE@?>=<;;::::;;;;;;;<<==<<;;976678::>BGHMSXYXXWWY\^^_abbceghp{ZZZ~zuvrlhf_WONHB=<=>??????=:88:<>?HQZ[\]^^[XUTRPMMIEAA><996300-*'&$#!!"#%%)-016;@ADGIJJJJLLMF}ZZZzZZZwZZZsZZZrh]RPH@9:CLVYgZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZsfZNMRW^`lZZZwZZZZZZZZZZZZyZZZtZZZrle_^YTPOONOOPRSTW[^`goZZZvZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZrZZZsZZZqlig^TJIGFEEJPWXcnZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZznkaWMKC:20-)&&+067@HOPPONME=5443234577;?DEIMQR[dmnZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZwuZZZtZZZpZZZl^M=;988889:;@EJKQX^_goZZZuZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~omf^WVPJDC@=:97421-)&'/9BCHMRSTVWXZ\^^[YVVZ^aaYRJIC>8877777777789988777666532222236:>?DJOPV[aa_]ZZXWUUTTTTW[_`hrx{spkjgda`YQJHB<6679;<=?AA?><<=?ABMXdehjZZZnZZZmiebb`^\[WSONKHED@<873.*)&$"!!!""%(+,17=>?@AAAA@BDHA~|ZZZzZZZwZZZtj_TRJA::CLUXfZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZsh[ONRW\^jZZZuZZZZZZZZZZZZzZZZrZZZplf_^ZUPPOOOOPRSTW[_ahqZZZxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZwZZZtolj`UKJGECDIOUWbmZZZxZZZyZZZZZZZZZZZZZZZZZZzmj`VLJB:20-)&&+067?HOPQPPOG>65432234569=ABFJNPXajkZZZpZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZwvsZZZrZZZp_N?=;9889:;;@EIKPV\]elZZZtZZZxZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}qng_XWQJED@=:97411-)&'/8ACHLQQSTUVXZ\[YVTTX[_^WPIGB=877777777789::99887766543333337;?@EJOPV\aa_\ZYXVTTSRRRUY]^fZZZouvtniheb_^WPIGA;667:<<>@BBA?>>>?ABMXdehkZZZlZZZkjgdcb`^^ZVSROKHGC?:94/+*'$"!!!!"$'*+16<=>?@@@@@ACGA~}ZZZ{ZZZyZZZqh_]SJAADIMO[hZZZrZZZtZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZwlaWVWXZ[fZZZsZZZ}ZZZ|ZZZyZZZwqZZZqkfa`\XTTTTTTVXZZ_dijZZZpZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{nbVTNHCCGLQS_kZZZtZZZxZZZZZZZZZZZZZZZZZZznkaWMKB910,)&&)-12:BJKOSWWPHA@<96655457:<=@CFGNU\]bglmZZZqZZZsZZZsZZZtZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZslj`VLKJIHHKMPPOONNPQSTY^cdhkZZZnZZZoZZZpZZZvZZZvZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZtmc[YRLFEA=:96300,)''.5;=@CFGHIJKMOQQOLJJLNPPKFA@><::<>@@AAAACEGGFEDCCBAA@?>>==<<==>>BFJKPUYYXVTTSQPOOOOORTWX^djjgda`\WSRMIEDB@>>@CEFILNNLIFFCA?@HQZ[`dhhhgggggggfedda]ZYSMGF?921-($$#"""$&()-278:<=>?@ACEIB}|ZZZwZZZnjh^SIHFFFGQ[egnZZZsZZZ|ZZZ{ZZZZZZZZZZZZZZZZZZ~yxZZZoh`_\ZXYblZZZvZZZvZZZvronjfba^[XWXYZZ\_abgmZZZqZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|na_ULDDFJNO[gZZZrZZZxZZZZZZZZZZZZZZZZZZ|ombXMKB910,)&&'),-4<DENV^_YSLKE@;:86556788:<>?DINORUXY]bfhZZZpZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsgfb^ZZYYZZ^cff`ZTSPNLLNPSTVXZ[^aefkpZZZsZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZsh][TNGFB>:962/.,*'(,15689;;=>@@BEGGEB@?@AAA?<::;<>>BFJJKKLLORUUTRPPONMMLKJJHGFEB@==@BEFJMQQQPONMLLKLLMMNOQQUY]]\ZYXRLGFDBAACEGGJMPPTW[[WSONHC>>CIOPV]bcegijkmZZZoZZZqZZZpZZZrZZZwZZZxZZZrZZZpmld]USKB:82,'&$#""#$&&*.3369;<?ADFGKD|ZZZzZZZvZZZtg\PNIC??GOWX_flmZZZtZZZxZZZ}ZZZ~}{yxsnihb\VW_goponllifcb`][[\^``cfijZZZoZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxli]QFEFHJLXdZZZqZZZuZZZ~ZZZZZZZZZZZZZZZ|ZZZqZZZndYNLC90/,)&%&&''.6=@LYefb]WVOG@?<85554445677:=AABDEFLSY\iZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~pcbcehhijklZZZpZZZxZZZ|ZZZ~ZZZqfZXRKEDDDDDEFHHLPSTZ_efkpZZZwZZZxZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwl`]VOIGC>9951.-+*((*,///00023568;==;966543333448<ABHMSTUUVW[_ccb_]][ZYXXWVVSQONHB<;=>@ADFIIIIIIIHHHIJKKKKKLMOQRQQQPIB;:;<>?DJPPTWZ[_cggb]XVME=<>AEFMU\^bgklZZZnZZZuZZZuZZZxZZZ|ZZZZZZZZZZZZZZZZZZ|ZZZZZZukb`VKA?80)(&$""##$$'+./26::?CGIJME|yZZZtZZZti]QOIC>>EMUV]cjkZZZsZZZvZZZZZZ|{yxtokjc]WW^fnonmllifcc`^\\]_abehlmZZZqZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~nk^RGFFHJKWcZZZpZZZrZZZ|ZZZZZZZZZZZZZZZ|ZZZoZZZndYOLC90/,(&%%&&'.5=?LYfgc^ZXQJCB>:76654455669<??@ACDJQXZhZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZpcbdgjklmnoZZZwZZZ}ZZZZZZZZZti][TMFFEEEEFGHHLOSTY^deinZZZuZZZrZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|m`^WPIHC>9851.-+)((*,....//023469;;9754322223448=BCIOUUVXYY]bffdb`_^][[ZYWWURPOHB<<=?@ADFIIIIIIHHHHIJKLLKKLMOPPPPOOHA::;<>?EKQRUY\\aeiid_YXOF=<>ADELT[\afjkZZZnZZZtZZZwZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZ}ZZZwmdbXMCA91*)'$""##$$'*-.26::?CHJKNE|y{|||zwuZZZti^TRLFA@EINPV]cekZZZoZZZyZZZwxxxxusZZZoZZZmhaZZ_eklnopplifeca__beijpZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZqZZZqeZPNLJIIQZbdnZZZwZZZZZZZZZ|zZZZsZZZqg[PMC8.-*(&&&&&'/7?ALXcdeeed_ZTSMGBA><99865578::<=?@HPXZhZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvlkmoZZZsZZZsZZZvZZZwZZZyZZZ{ZZZ~ZZZZZZZZZZZZZZZyonga[ZZZZZZZYZ\_bcdfggijlmZZZpZZZvZZZy|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{mcaYRKIC>8730,,*)''(*+++++,-.//13554322222357:;>AEFLRYZ]adehknnnnnnkigfb^YYURNMHC>>@CFGJLOOMLJJJKKLMOQQQQQQRRRRPNKJFB>>ADGHNTYZ]`cdhmZZZrZZZpkf`^TJA@BEHINRWX[^bciZZZpZZZuZZZv}ZZZxZZZsmk`UJH?7/-*&#"###$&)+,16;<BIOQTYWssZZZvwyywvsZZZri`WUOICCDFIJPW]_ekZZZqZZZptvxxwvZZZtZZZule^]aeijnqZZZvZZZtZZZqlhhfdbbgkZZZoZZZrZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsZZZujaYWRLGGKPUWblZZZyZZZwxxZZZwZZZtj]QNC7,*)'&&&&'(08ACLW`bglZZZrZZZrmjfe]UMLHC?>;855556689;=EOXZgZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtZZZvZZZuZZZvZZZxZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwpoZZZoZZZoZZZpZZZqZZZqnmmoZZZnZZZtZZZpZZZqnkkigfflZZZqZZZxZZZx~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwnec\TLKD=752/++)('''((((()))**+,-////0012448=ABDFIJPV\^djZZZnZZZqZZZsZZZuZZZtZZZvZZZwZZZxZZZ~ZZZ|ZZZzZZZsZZZpZZZpjb[ZVQMLHDAADHLMPSUUROLLMNOPRUWXXXXWWVUTPLGGEDCCGLQRW\abdgjkZZZrZZZvZZZvZZZzZZZrlfdZOEEGJLMOQSSUWYZckZZZvZZZtZZZ{|ZZZxZZZtZZZth\QOE<32-(##"###%')*06<=FNVX]chjlpsvvutrqiaYXRLFFEDCDJQXY_eklpZZZuwwxxZZZyZZZvZZZribacehinZZZrZZZzZZZwZZZsplkigfflZZZqZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZuZZZqia`WNFEFGHJUalnZZZtZZZuZZZzZZZyl_ROC6*(''''''()1:CEMU]_hZZZtZZZyZZZ}ZZZxZZZ{ZZZyZZZvZZZkcYWQKEC?:654322469:DNXZfZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZupojeaahnZZZuZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZsngf^VNLD=541-**)'&&&&&&&&&&&&&''())+,..1356<BHIJKMMSZ`bjZZZrZZZ|ZZZ|ZZZ|}}ZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZsg][VPKJHECDHNSTWZ\\XSNNOQSTW[^^^^^^\ZWVPJDCDEGHNTZ[_dhiknZZZpZZZpZZZtZZZ}ZZZZZZ~ZZZxZZZslj_TJIKNQQQPPPPPQR]gZZZrZZZsZZZ|ZZZ~~}ZZZ|ZZZzZZZrdXUKA860)##""##$&'(/6=?IS]_fmzjlorvvusrqibZYSMGGEDCDJPWX^dijnZZZtZZZtvwxyZZZzZZZsjccegijpZZZvZZZxZZZzZZZxrnmkjiinZZZuZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZuZZZrib`WNFEEEFHS^ikZZZnZZZsZZZwZZZwk^ROB6*(('''(()*2;CEMU]_iZZZtZZZ{ZZZ|ZZZ|ZZZzZZZzZZZxZZZqe\ZTMGFA<8754334689CMWYeZZZnZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwrqlgbcioZZZwZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZsmge]UMLD<540-**)'&&&&&&&&&&&&&&'())+,./1467=CIJKMNOTZ`bjZZZrZZZ}ZZZ|}~~ZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZsg]\VQKKHFDEJOTUX\^^YTONPRTUY\````__]ZXWPJCCDFHHNTZ\`dhilorrZZZvZZZ{ZZZZZZZZZxZZZsmk`UKJLORRRQQQQQQR\gZZZqZZZu{ZZZZZZ~~~~ZZZ~ZZZ{ZZZreYVLB970*$##""#$%'(/6=?IS^_fmzllpswwusppkfa`ZSMLJGEFJOTUY]abfjnoZZZstvvtZZZsnnZZZsZZZrZZZtZZZxZZZ~ZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZ|ZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZuZZZpZZZnjd^\UNGFDCBCJRY[_cgf_WOMA5*)*+--/0239@FHOW^`hZZZqZZZxZZZxzzzzZZZvnhfa[VUPLGFB>::8767>EMOXbklZZZpZZZrZZZyZZZ{ZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZyZZZxZZZqZZZrZZZwZZZyZZZ~ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwZZZqZZZnje`^WPIGA:32/-++)(''&&&%%%&&&&&&()+,.1347:==CIOPRUWWZ\_`hZZZnZZZxZZZwz{}}ZZZZZZZZZxZZZyZZZpia`ZTNNMMMMQVZ[`eiib[TSVY\]bfjkifdc_[WVPICCCEFGLRWX]bghlosty~ZZZZZZZZZtondYPOPQSSX\__]ZWX`hZZZsZZZsZZZ{ZZZZZZZZZ}}}}|ZZZ}ZZZph^\QF<:3,%$####$%&'-39;EOXZ`gommquxxvspomkhgaZSROKHHKORSUWYZ^bgglZZZrtuvZZZzZZZ{ZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZrZZZrZZZvZZZvZZZwZZZyZZZyZZZuZZZsZZZuZZZsmihc^ZYSNHGDA>>BEIJNRUUROKJ?4*),/2369<=@EIJQX_agnZZZrZZZtwy{{xZZZxZZZtZZZtnied`\WVPIBA=8449>CDKRYZ`ejknZZZoZZZtZZZuZZZxZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZtZZZoked`\XWQKDC=710/-,+*)(('&&&%%%%&&&&),./269:=@CDJOUVY]``_^^^elZZZuZZZtwy{|ZZZZZZZZZ}ZZZtZZZtojed^WQQRTVVZ]abhnZZZsZZZrkbYY\`dekZZZrZZZtZZZsZZZrmhgb\WVOICCCDEEJOSUZ`efkptv{ZZZZZZ~ZZZwZZZqZZZrg^UTSSTU^fZZZoZZZpid^^djZZZsZZZqZZZzZZZZZZZZZ|{{{{zZZZpkcaVJ?=5.&%$$###$%&+067@JSTZ`dnnrvZZZyZZZ{ZZZxZZZspooZZZnZZZpZZZohaYXTPLKMOQQQRRSW[_`flZZZrZZZsZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZuZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{rqppprZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZuZZZvZZZ|ZZZ|ZZZzZZZtldcfillllkkhea`]YUTQMIHD?;:::::=ADEFGHG=3**.278<@EEGIKLRY`afjZZZpZZZqZZZqZZZwZZZyzZZZ{ZZZ|ZZZZZZZZZxZZZxZZZsZZZsZZZpkgf]SJIA:32469:>CHIPW]^beijmpZZZtZZZrZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzsmhgc^ZZWSPOJE@?:4//.---,*))('&&&&%&&&&'*.226;??CFJKPUZ[`eiiea]]ciopZZZtZZZvZZZyZZZ|ZZZ}ZZZZZZZZZZZZZZZvrqoljib[UUX[^_begiZZZpZZZxZZZ~ZZZZZZti^^bglmZZZsZZZzZZZZZZZZZzZZZuljd]VUOICCCCCDHLPQW]dejpZZZvZZZxZZZ}ZZZZZZZZZZZZZZZ{ZZZtZZZsjbZYWVUWcZZZnZZZ}ZZZ|ZZZvnfehlZZZsZZZrZZZ|ZZZZZZZZZZZZZZZZZZzyyyyZZZvZZZqmgeZNB@80('%$###$$%)-24<EMOSYYnnZZZsZZZzZZZ{ZZZ{ZZZvZZZtqqqZZZrZZZpZZZpjb[ZVRNNOQSSSSSSW[_`flZZZuZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZtZZZvZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ponmmnZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZwZZZtZZZvZZZxZZZyZZZyZZZpia`cfiiiiiifc`_\XUTQMJID?::9888;>ABDEFF<3**.278<AEEGIJKQX^`dhZZZlZZZoZZZqZZZtZZZxZZZzZZZ{ZZZ|ZZZ|ZZZZZZ{ZZZuZZZsZZZsZZZnlhg^ULJB:324588=BFHNU\]aeiimpZZZqZZZrZZZvZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwZZZupkfea]YXURONID?>940/...-,+**('&&&&&&&&''+/238<@ADHKLQV[\afkkfb^^djpqZZZsZZZxZZZyZZZ}ZZZZZZZZZZZZZZZZZZysrpnlkd]WWZ]aadgjkZZZrZZZxZZZZZZZZZwj`_chmnZZZtZZZyZZZZZZZZZzZZZuljd]VUOICCCCDDHLPQW]dejZZZnZZZsZZZuZZZ|ZZZ~ZZZZZZZZZzZZZvZZZrkc\[YWVWdZZZoZZZ}ZZZZZZzphgjmZZZqZZZuZZZ}ZZZZZZZZZZZZZZZZZZyZZZwZZZyZZZvZZZwZZZxZZZslgeZNCA90)(&%###$$$)-23;DLNRXYsrZZZyZZZ~ZZZZZZZZZZZZZZZ~ZZZ}ZZZZZZ|ZZZzZZZyZZZpmgfda__beggec``acdelZZZvZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}rqpZZZnZZZoZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZvonjfccmZZZwZZZZZZZZZ~ZZZ}ZZZ{ZZZzZZZtZZZokjkllle^XWXZ\\\\\\[ZYXXWVUROLKE?:9765579;<<===60*),/236:==>?@AFKPQUZ^_cgklnZZZrZZZtZZZuZZZonlkifdc\UOME=544566<AGHPX`bgmZZZtZZZtZZZuZZZxZZZ|ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZvnmie``\XTSPMJIEA=<9633334320..,*((''&&''().389>CHIMPTUY]abglZZZrZZZpomklpZZZsZZZxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZzZZZxZZZtZZZupjddfhklpZZZrZZZvZZZzZZZ{ZZZZZZZZZZZZwofeimZZZpZZZqtwZZZzZZZxZZZtmgf`[UTNHBBDFIINRVW\aefilZZZnZZZrZZZtZZZxZZZ}ZZZ~|zwwZZZolgfc_]^hZZZrZZZZZZZZZ|ZZZyZZZuZZZrZZZsZZZuuZZZu{ZZZ~ZZZZZZZZZ|ZZZvponlkjfb^]UMFD<5-,*'%$$$$%(,018@GIPWZwvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZtZZZtZZZrZZZsZZZoZZZpZZZtZZZxZZZ}ZZZzZZZyZZZqonlkjkZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZvZZZtZZZuZZZvZZZ}ZZZZZZZZZZZZZZZzpnjfbbhoZZZwZZZxZZZxZZZwZZZyZZZwZZZurnmf_XY`iZZZqZZZqZZZpnllheaa`_^]XSONNNNNNOOOPQRRSUVVSQMLF?986422346655541-))+,..02455556:=ABFJNOTX]^aehhgedcb`_^ZVRPH@875545;AGIR\egnZZZrZZZ|ZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZ{ZZZyZZZ{ZZZ}ZZZ~ZZZ|ZZZ}ZZZyZZZxZZZ{ZZZwZZZqmgeb_[[WSPOLHEDA>::987789::85320-**)(''')*+17=?DJPQUY\]`cghmZZZsZZZvZZZyZZZwZZZxZZZxZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZsZZZrZZZsZZZrZZZvZZZvZZZ{ZZZZZZZZZZZZZZZZZZ|ZZZrlkoZZZrZZZtvusZZZoZZZokgba]XTSMGAAEINOSX\]`dgghijjnZZZpZZZvZZZvwyzzZZZzZZZwZZZqZZZumhddlZZZtZZZ}~ZZZZZZZZZ}ZZZZZZ{yyz{ZZZzZZZ{ZZZtngfc`^][XUTPLHG@921-)&%%$$%'+./5<CEMV[{zZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZwZZZqpqZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyrpmjghZZZqZZZ}ZZZZZZZZZ}ZZZvnld\TTX\abfjmnnnmlbXONT[bba`^^\ZXWURPOLIFFDCAAABBCEHKKOSWWTRONG@9853100010/.,,+*******++,,,,++.0347;?@EJPQUY]]]\[[[ZYYXVTSKB:97533:AHJT_ikZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZ{ZZZ~ZZZZZZZZZZZZZZZwZZZuZZZrZZZwZZZvZZZyZZZxZZZ}ZZZZZZZZZZZZZZZ~ZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZyZZZ{ZZZwZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZqZZZsqpnnoooopqZZZrZZZrke`_\ZWVSPLKHDA@>;99:;<<>@AA>;8740-,+)''(*,-4;BDJQWX\`degilmZZZtZZZwZZZ~ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZsZZZtZZZvZZZuZZZzZZZ{ZZZvoihd`]\YVSRLF@@FLSTY^bceghhgfddgjnoZZZtx|}~ZZZ~ZZZZZZZZZyZZZskkZZZoZZZyZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZyZZZvZZZrZZZqkd^\YUQQOMLKKKJJD=761,'&&%%%'),-28>@JU]{|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxrsZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzpnjgefZZZpZZZxZZZZZZZZZZZZwmkbZRRUY^_cgjkkkkj`VMMRY__^][[YWVUSPMMJHEECA@@@@AADGIJNRUVSQNMF?9853100000/-,,+++++***++,,,+*+-/1259=>CINOSW[\[[ZZZYXXWVTSKB:97433:AHJT^hjZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZyZZZ|ZZZ~ZZZZZZZZZZZZxZZZrZZZoZZZrZZZrZZZvZZZwZZZyZZZ}ZZZZZZZZZ~ZZZ|ZZZvZZZyZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZzZZZvZZZwZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZpZZZnomlllmmmnoZZZpZZZojd_^\YWVSPLLHEBA><99;<>>@BCC@=:952.-+)(()*,-4;BCJPWX\`degillZZZtZZZxZZZ~ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtZZZsZZZtZZZxZZZzZZZxZZZsnhgc_\[XUSRLFAAGMSUY^bceghhgeddgjmnZZZtZZZx}~ZZZZZZZZZyZZZunnZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZzZZZ{ZZZuZZZuZZZqZZZphb[ZVSOOMKJJJJJID>761,''&%%%')+,17=?IT]ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZqgfb_\\dkZZZqZZZtZZZojdc[TLLNQSTWY\\\]]\UMGFJNRSRQPONMKKIHFEDCBAAA@@@@@@ABCCFHJJHFDD@<876433332222123466543333321/....//37;<AGMNRVZZ[[ZZYXWWUSQPIA:974337<ACJRZ\cjZZZoZZZqZZZtZZZzZZZ}ZZZ}ZZZ|ZZZ~ZZZ{ZZZ}ZZZ|ZZZ}ZZZ{ZZZ|ZZZxZZZsnnZZZsZZZtZZZuZZZxZZZqnjjjjkkZZZrZZZvZZZzZZZyZZZwZZZpnnZZZuZZZ}ZZZZZZZZZ}ZZZuZZZsZZZoomllZZZqZZZvZZZ{ZZZ{ZZZvZZZwZZZsZZZqZZZsZZZrZZZtZZZrZZZpkggfeeeefgghiiieb^]\[YYWTQQOMKKHEBBEHKLOQSSOKGF@:541.++++,,17<=CHMNRW[[_bfglZZZsZZZvZZZyZZZxZZZ|ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZ|ZZZ{ZZZxZZZvZZZy|ZZZZZZZZZZZZZZZZZZZZZZZZzZZZ|ZZZ}}~ZZZ|ZZZvpihb]WWURPPMIFGJNRSVY[\`dghfecdgjnoZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZuZZZrmgba[UPOLIFFEDCCDEEE@;651-)(('''(()*.268ALQZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZyZZZyZZZxZZZzZZZ~ZZZZZZZZZZZZxZZZwZZZvng`^ZVSSX]ab`^\[TNGGHHJJKLNNNNNMIEA@BDFGFEDDCBAA@@??????@ABBAA@@?>==>>>>=<::9877666665556788;>AA@>==<;:97411/.,-0489?EKLQUYYZZZZYWVUSPNMF@:9753358;<AFKMRX]^aehhiijjlnookhddfhkkhebbaa`aejnnkhefjoZZZtZZZuZZZolhgfdbbdgiigfddddddb`^]]^^^_`aabccca_]]]]\\[YWWWWVVRNKKOTYZ]acc^YTSKD<;72..-,+,/267;?CDHMQRV[`afkZZZqZZZqZZZpZZZsZZZvZZZwZZZwZZZzZZZ{ZZZwZZZ|ZZZ|ZZZzZZZ}ZZZyZZZzZZZzZZZzZZZyZZZ}ZZZ|ZZZ{ZZZvZZZupoooooZZZrZZZz~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZsjhaZSRQPONNMMMNPQRRSTU[afgfdccgkopZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvpihaZSRNIEDB@>>>===>?@@<9541.+***)))(''*,/1:DEZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxsrpommmmnnmljjd^YXSOKKMOQQRSSSNHCCBAAAAAAA@@@@>=<;<<<<;;:::9999999;<=>@BDDCBA@>;8864332111346678999888:<>?CHLLKHFFDBA@=9551.++.267>DJLPTXXYZZZXVTTQNJID?:9753234457:=>BFJJNQTTUWXY\`cc`]ZZ\]__^\[[YXVW[`ddb`]^adggeb_^][YYYYYYXWVVVVUUUUUUVWXXYZ[\\]^^^^]]^_``_^]]_`aa]XTTZ`fhlZZZqZZZtZZZuZZZnga_VMCB<721/-++-.0147::>CGHNSYZ_chhjlnnnnoonmmmlkjjlmonjfbbceghoZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZrkiaXONNMMMOQSSSRQQONMNV]efedccgkZZZoZZZqZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuZZZunf_^VMFDA>;:987777889:;;96431/--,,,,*'%%&'(+3=9ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZysrpnlllllllkjid_YXTPLLMNOOPQRRMHDCBBAAAAAA@@??>=<<<<<<;;;;::999::;<>@@BDFGEDBB?<9864221100247789:::999;=?@EJNNLJGGECAA=:652.++.267=CJKOSWWXYYYWUSSPMJID?:97532334469;<@CGHKNQQRTUVY]`a^[YXZ[]]\[ZYXVUUY^bb`^\\_beec`]][ZXXXXWWWVUUUTTTTTUUVWXXY[\\]^^^^^^^_`bba`__aced`[VW\bhinZZZqZZZwZZZuZZZrjdbXNDC>8430.,,-.003689=AEFLRWX]aefhjkklllllkjjihggikmmieaabeghoZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZsji`WONMMNNPSUUTSRRPOMNU]dedcbbfjZZZoZZZrZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZtZZZpkd][TLDC@=;:988777889:<<975420...--,*(%%%&'*2;9}ZZZ|ZZZZZZ~ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxZZZtZZZvZZZsZZZurqqpoolheda]ZYWUSSRQPPONMMLLLLMOPOMKHHHHIIIIIIIHHHGGFGIKMNQTWWYZ[[XURQMHDC?;77531158;<>@AAA@@@BDGGLQUUQMIHEC@?=;9840,,.0349>CCGJMMNOPONMKKIHFFB?;;8633344468::=?ABDFIIJLMNQTVWUTRRSTVVUTSSRRQQUX[[ZXVVXZ\\[YWWVUUUUVWWWWWWXYZZZZ[[]_aabdeeffggffefhknnljiinZZZrZZZwZZZuZZZplfffhijZZZoZZZ{ZZZZZZZZZyZZZvmk`TIGC?<;841111113467:=@AEIMNQTWXZ\]^_`bba`___`aadgiihgefimZZZsZZZoZZZvZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZzZZZ|ZZZxZZZwZZZrjcb[TNNPRUUY\``````\YUUX[__^\[[^aefmZZZsZZZ|ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZtmfe^XRQMIFEEEEEDDDDB@>>@BEECA?><:886533.*&%%&')/74pmkjggmZZZwZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ|ZZZwZZZvvvuuZZZrZZZpZZZsZZZrnkhgb]XWTQNNPSVVWXXY[]__[VRRSTVVVWWWWVVVUUUUY]abfkZZZqZZZnZZZoZZZqZZZnZZZqkgba[UONIC=<96337<@ADFIIHHGGIKNOSX\[VPJIFB?>=<;;62--./0148<<?ACDDEFFEDCCCCCCA?=<974444556899:;<<>?AACDEEHJLMLLKLMNOONMMMMMNNPRTTSRQQRSTTSRQQRRRRTUVWXXYZ\_aaabbbegjjlmnoooZZZpZZZponmnZZZpZZZxZZZyZZZxZZZyZZZsZZZqZZZuZZZ{ZZZZZZZZZZZZZZZ{ZZZwZZZvZZZpmjkZZZvZZZZZZZZZZZZZZZZZZxZZZvhZMKIGED@;765322334579;;>@CCEGIJLMOPRUWWVUTTVXZ[_bffhijkZZZnZZZuZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZqZZZqZZZpZZZoZZZqZZZnib\[VRNNRW\]afjkmnZZZmZZZlic^]\ZYYWUTTVXZ[bhopZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZxqog`XWRLHGGHHIKMOPPQQQMHDDGKNNMKIIGECB@=:93,&%%&&(-3/^]ZVRR\gZZZqZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZwZZZyZZZyZZZyZZZ|ZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}||{{ZZZzZZZZZZ}ZZZ~ZZZzZZZyZZZwZZZsZZZoe][VQLMSY``bcdehlZZZpZZZpib\\^`ccdeeeeedddddejZZZnZZZtZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZsZZZrib[YRJCB=955:@EFIMPPONNNPRUVZ^baZSKJEA===>>>94/.....025578::;<<<<<;;=?@@@?>>;85455667899887789::;=>>@ACCDEEFFGHHHGGGHIKKLMNNMMLLLLLLLLLLNOPPRUWWY[]^aeiiijjjmZZZoZZZsZZZrZZZwZZZxZZZxZZZvZZZwZZZxZZZxZZZzZZZxZZZwZZZvZZZxZZZyZZZZZZZZZZZZZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtklZZZyZZZZZZZZZZZZZZZZZZ~ZZZZZZo`RPONMMHB=<9644333345677899:;<<>@BCFIMMLKJJMQTUZ^cdgkZZZnZZZpZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZrnhgggff`ZUTRONNU[bdiZZZnZZZuZZZvZZZwZZZ|ZZZ}ZZZ~ZZZvnge_ZTSQOMMNOPQW]cekZZZtZZZzZZZ{ZZZZZZZZZZZZZZZzoec[SKIEA>>BGLMQVZ[\^_^XQKJOSWXWUTTQOMLIEA?7/'&&&&(+/+^[WSOOZeZZZoZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZxZZZyZZZuZZZwZZZuZZZzZZZyZZZ{ZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~}}|{{ZZZ{ZZZ|ZZZ~ZZZ~ZZZ{ZZZ|ZZZwZZZuZZZof^\WRMMT[abdefgjnZZZsZZZokd^]`beefghhhhgggghhmZZZqZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZsZZZsjc[ZRKCB>966;@FGJMPQPPOOQTVW[^baZSKJEA>=>???:4//..-.02446899:;<<<;;;=>@@@?>>;8555666789987778899;<==?@BBCDEEFGGHGGFFHIKKLMNNMMMLLLLLLLMMNPQQTVXY[]_`dhlmmmmmoZZZtZZZtZZZsZZZxZZZwZZZzZZZyZZZ{ZZZyZZZzZZZ}ZZZwZZZzZZZwZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZsllZZZzZZZZZZZZZZZZZZZZZZZZZZZZrbSRPOONIC>=:75544334566778899::<>AAEHKKJIHHLOSTX]bbgkZZZoZZZrZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZumggfeed_ZUTRPNNU\cdjZZZnZZZvZZZwZZZw|ZZZ~ZZZZZZxpiha[UTROMMNNOPU[abiZZZoZZZuZZZxZZZyZZZZZZZZZZZZvlcaYQIHDA>>CHNOSX\]_`aaZSLLPUYZYXWVTRONJFB@8/'&&&&(+/+YVRNIJUampZZZzZZZZZZZZZZZZZZZZZZyZZZzZZZ}ZZZ~ZZZZZZZZZ}ZZZuonkiffgijkZZZpZZZuZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~zzywwvvZZZvZZZtZZZvZZZuZZZuZZZrZZZrke`_[XUV\bijkkllZZZnZZZqZZZxZZZuZZZpjdcegjjmZZZrZZZrZZZuZZZsZZZtZZZvZZZwZZZxZZZwZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtnle]VTNG@@>=<<?CGGJMPQRRSTVX[[\]^]VOHGEDBBDEFE?9321/..025579;<>?AAAA@@@@@@??>=<:999:;;::::98778899::;<=?@@BCDDEFGHHHHIJLNNPQSSSTTTTUUUUUVVXZ\\_beejnZZZpZZZuZZZwZZZ~ZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZ|zzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxrrZZZ}ZZZZZZZZZZZZZZZZZZZZZ}m_]ZVSSNHCC@=;;:988877788998888;>BBDFGGFECCGJMNRUYZ_ejlZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZskjgdbb`_^]YTPPTY^_flZZZtZZZux}ZZZ~ZZZxZZZuZZZume]\[YXWUSQQSVXY^cghkmZZZoZZZpg`XWQKEEFHKLRX^_beghijkjbZRRV[`abdeea]XWRLFD;2)''&&(,22TQMIDEQ]ilZZZsZZZ}ZZZZZZZZZ~ZZZskjloZZZpZZZplfa`]ZWWXZ[\cjZZZpZZZsZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxvvtsrqqpoonmlliebb`_^^dkZZZsZZZprrrsZZZuxZZZ|ZZZzZZZupjjkmopZZZsZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZvohf_WPOIC>=?@BBDFGHKNPQSUXXZ]__][YXRKEEEFGHIKLLE>7630..03669;>?ADGGGGFFDCAA?>======>???>=;;:988888899::<=??@BCDEFHHIJKKMPRRTWYYZ\]]^^^^^__`bdggjnZZZqZZZsZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZzZZZZZZZZZZZZZZZZZZZZZvkic]XWRNIHFCAA@>==<:9999::8767;?CDDCCCA@??ADGHKNQRX_egoZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzonid`_begg`YRQSVYZahopZZZy}ZZZZZZZZZZZZ|ZZZrgedcbb]XSSQPOORUXYZ\]\XSNMIEBBIPXY`gZZZlZZZqZZZqZZZrZZZqZZZqZZZvZZZwZZZvZZZukbXX\bghlZZZrZZZtZZZtnha`YQJH>4*)('&(.59OMID@AMYfhnZZZtZZZwZZZvpg^]^_``\XTSPLIIJLMNW`ikpZZZvZZZ{ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZ|ZZZtZZZrrpommkihgggggfeeeefggmZZZrZZZvZZZxZZZwZZZyZZZzZZZwZZZzZZZ|ZZZZZZZZZ}ZZZwqqZZZoZZZsZZZrZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZupib`YQJID?;;?CHHHHHHKNPQUX[\_acc^ZUSNHBBEILMOQSRKC<;62..1477:>AAEILMLLLKHEAA?><<>?AABCDDA?=<;:9998888999;<=>@ACCEGIIKLNOQTVWZ\_`bdfgghhhhiiilZZZnZZZoZZZrZZZuZZZzZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZsld][WSONLJHGFDCC@>;;;;<<9756;@EECB@?=<::<?ABDFIJQX`bkZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrZZZtkd^^djZZZqZZZog]TSSSUV]dlmZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZ|ponnmle^VUPKGGHIJJKLLLJGEDB@?@LXdfZZZpZZZyZZZ}ZZZZZZZZZ}ZZZ|ZZZ}ZZZZZZZZZ~ZZZZZZri_^chnoZZZvZZZZZZZZZZZZ|ZZZujh`WNLA6,*)''(08@OKGC?@KWdekZZZoZZZtZZZvld[Z[\]]ZVRQNLIIJKMNW`ijoZZZtZZZvZZZyZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZxZZZxZZZtrqonmljihhhhhggffghiioZZZtZZZzZZZzZZZyZZZ|ZZZ{ZZZ|ZZZ|ZZZ~ZZZZZZZZZ~ZZZwtsZZZvZZZwZZZxZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZtog`_WPIHC?;;?DHIIIIILNQRUY\]_acc^YTSMHBBFIMNPRTSLD=<73//1477:=@AEILLLLLKHEAA?>==>@ABCDEEB@>=<;::99888899:<=>@ACDFGIJLNPPSVYZ\_bcegjjjjjjjjkkmZZZpssZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZvnf^]XTPOMKIIGFEEB@======;866;@EECA>><;99<>@ACEHIPX_ajZZZtZZZ|ZZZZZZZZZZZZZZZZZZuZZZqke^^elZZZpZZZqh^TSSSTU\dlnZZZtZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ~rppoong_WVPKGFGGHHIJKJIGDDB@?@LYegZZZpZZZvZZZ}ZZZ~ZZZ~~ZZZZZZZZZtka`ejpqZZZvZZZZZZZZZZZZ|ZZZukjaXOMB7,+)('(08@EC@=::CLUV[_cc]VPPPQQQQPPPPPQQTWZ[bhopZZZuZZZy{ZZZzZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZywwZZZwZZZvZZZzZZZxZZZyZZZzZZZzZZZyZZZvZZZxZZZxZZZwZZZsZZZrZZZqZZZsZZZrZZZtZZZwZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtZZZrjaYXRKEDB@??BEHHJLMNPSVWY\^^__``]ZWVPJDDHLPQTVYXQJCA<83334557:<<?BEEFGGGDB@@????@ABCDFHHGFEDCB@@>;999989:<=>@BEFILOPTY]^chmmqZZZuZZZwZZZvZZZyZZZ}ZZZZZZZZZ~ZZZ|ZZZxZZZwZZZuZZZtppqrttwz}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvnfd`[WVTQOOPRSSQNLLKJIHEB??@BCC?;7765559<@ACEGHOW^`jZZZtZZZ~ZZZZZZZZZZZZ~ZZZwZZZsZZZrlhhmZZZpZZZwZZZulbWVVVWX`hZZZqZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZvvvZZZuZZZsle][VPKJIGFFHJLMMMMLHC?@JT_ajZZZtZZZ}ZZZ|}~~ZZZZZZZZZZZZvkkpZZZsZZZzZZZ{ZZZZZZZZZZZZZZZZZZypne\RPE:/.+)'(09D;;9755:@FGJMPPMIFEFFGGILNORVZZ_chimZZZqZZZtZZZuZZZx|ZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZtomd[SQLGBBBBCCEFGHKNRRVY\\]_``_^]]\[ZYSLFFJOSTX[^]WPHGB=8764334678:<>>?@AA@?>>?@AABBCDFHJKKLLLJHGFB>;:9988:;==@DGHLQVW]djlZZZqZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvuttttvxz{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwmlgb^][XVVZ^bb`^\[YWUTPLHGFDBB<61000016;@@BDFGNV]_iZZZrZZZ|ZZZZZZZZZZZZZZZZZZyyvZZZrZZZqZZZqZZZsZZZyZZZ}ZZZ}ZZZqeZYXXYZckZZZvZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ}|ZZZ}ZZZyZZZrjba[UPOKGDDHKOORTUUNG@@HPXZdnZZZvZZZw{}~ZZZZZZZZZZZZZZZ~ZZZyZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZsi_VSH=20-*'(1:G1431013578:=???>=====>CHNOV]cekZZZqZZZxZZZwZZZyZZZ}ZZZ}ZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZuZZZpji_VLKGC??BEHHGGGGLQVWZ^aabbba_\ZZ[\\\UOHHLQVW[_bb\UNMHB=<8522223345779:<<<===?ACCCDDDGJMMOQSSQOMLGA<;:988:;=>AEIJPV\^fZZZnZZZvZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ{ZZZuuttuvwwZZZzZZZ}ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvZZZuZZZnjeda_\]ciZZZpZZZqZZZomkjgda`[VQPKFB@92***+,-39?@BCEFMU]_iZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|{ZZZ{ZZZzZZZ{ZZZ~ZZZZZZZZZ~ZZZrh]\[[\]fZZZoZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZngf`ZTSNHCCHMRSW[_^UKAAEKQR]hZZZrZZZrZZZyZZZzZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZvmcYVK@53/+((1:J1332113577:<>?>>>>>>??EJPRY`ghnZZZtZZZyZZZ{ZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZuZZZmig^TKJFB??BFIIIHHHMRVW[_bbcccb`]ZZ[\]\VOHHMRWX\`dd^WPOJD?>:633333345668:;<<<==?ACCDDDEGJMNPRTTRPNMGB<;:988:;=>AEIKPW]_gZZZoZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZuZZZtZZZtZZZsZZZtZZZvZZZwZZZtZZZzZZZyZZZ|ZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZuZZZsZZZqkgfca__elZZZrZZZrZZZppnmjgdc^XSRMHCA:2+**+,,28>?ACEFMU]_iZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZ~ZZZ|ZZZ|ZZZZZZZZZZZZti^\[[\]fZZZnZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrhf`ZTSNIDDHNSTY]a`VLCBFJPQ\fZZZrZZZtZZZxZZZwZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxmbXVK@53/+((1:J9:;<<==>?@BEHHKMOOQTVW\bhioZZZuZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZpZZZqlfa_WOGEDBABGLPQPONNPSUV[`deghiigecca_^]VOIHNU[]bgllga[ZUPKJFB?>=;::987789::;;<=?ACCDDEEHJLMORTTRQONHC=<;:99;>@@EIMNTZ`ajZZZuZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZrkjigffhikkmoZZZsZZZrZZZpZZZsZZZuZZZuZZZwZZZzZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxponmmmmnnoZZZsZZZsvwxZZZyZZZzZZZzZZZuZZZrooic^\XTONE=430.,,/367;?CDLT]_iZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZymba]ZXYbkZZZtZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZunfd^WPOMKIINSXY_ejjaWMLLLMNV_ghknZZZsZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZuome]TRI?54/,()08BA@CFHHHHHILORSX\abfjZZZoZZZnZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZ|ZZZ~ZZZZZZZZZZZZ~ZZZ|ZZZ{ZZZzZZZrooljhgc^YXPIBABCDEKRXYWVUTTTTU[aghknZZZrZZZponllgc^]VOIIPX`ahoZZZsZZZvZZZrlfea\WVRNJJGDAA>;888899:;<<>@BCDEFFHJLLOQSSRQPOJD>=<;;;=@BCHLPRW\bclZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtZZZtld]\[ZZZ\^``bdffgghhknZZZrZZZtZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtkkmpZZZsZZZtZZZxZZZzZZZZZZ~ZZZ}ZZZ{{{ZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZsnhgc`\ZQH>=71,,,-./5;ACKT]_jZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsge_ZUU^gZZZpZZZsZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvldb[SMLLMNOTY^_fnZZZvZZZrkbXWROKLQW]^adfhZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZtlfd^WPOF>640,))/5:IGKPSTSRRRUY\^dkZZZrZZZrZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZzZZZyZZZyZZZtsollllllkkjifb^^^^^^ZUQPJD>>@CFHPX``_][[XUSSZbikoZZZrZZZvZZZywvZZZuZZZsmf_]VOIIRZdenZZZxZZZ}ZZZZZZzZZZtZZZrZZZolgcb^ZVUQMIHC>9988889:;<>@BBDEFGHJKLNPRSRRQPKE?>=<<<?BEFJOTUY^cdmZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtmec\VONNMMNPRUUWY[\\\\]aejkpZZZsZZZ{ZZZzZZZ}ZZZ~ZZZZZZZZZzZZZvqpomkkjjjjklmmrZZZvZZZZZZ}ZZZ~ZZZZZZZZZZZZZZZ~ZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZtnfflZZZtZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZqZZZoZZZokhg]SIG>5-,*(''/7?AJS\_iZZZtZZZ|ZZZZZZZZZZZZ|ZZZ{ZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZukiaYRRZclmZZZqZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZqja`XPIILPTUY^cdmZZZwZZZ}ZZZ}ZZZtlcaYQJIMPTUWY\]hZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxnlgb]\WRMKD=651-)*-23IHLQTUTSSSVZ]^elZZZuZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZzZZZyZZZwZZZyZZZtZZZwrnkkjjjjihggc_\\\\]\YTPOID>>ADGHPYaa`^]\YVTT[cjlpZZZrZZZwZZZwxwvZZZunf^]VOIJR[dfnZZZwZZZ}ZZZZZZ{ZZZxZZZrZZZtmied`[WWRNJID?:998889:;<>@BBDEGGHJKKNPRRRRQPKE?>==<=?BEFJOSTX]ackZZZrZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZrjbaZSMLLKKLNQSTVXZZZZ[[_dhinZZZrZZZxZZZxZZZzZZZxZZZ{ZZZ|ZZZuZZZsmmkjihhgffghjjpZZZuZZZ{ZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvmeekZZZpZZZyZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuZZZtZZZqmji_UJH?6.-*'&&.6>@IS\^iZZZuZZZ~ZZZ}ZZZZZZZZZ~ZZZ}ZZZ{ZZZ{ZZZxZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtljbZRRZckmZZZqZZZxZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZ|ZZZxZZZpia_XPIIMQVW[_denZZZuZZZZZZZZZvnecZRJJMPSTVY[]hZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtmlgb]\WRNLE>761-)*-13HGKPSTSSRSUXZ[`eklZZZpZZZuZZZzZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~|{{zyyxxwwtqonmkiifdba^ZWWWWXWTPMLIFCCEGJKS[cddcbb`_]^djZZZpZZZtZZZwZZZ|ZZZZZZZZZ|yvZZZtld[ZUQMNU\dfZZZoZZZxZZZZZZZZZZZZyvupkfea\XWSNJIEA<<;9889:;<=?AACEFFHIJKLNOPOOONJFBA@???ACDEGJLLNOQRX_egmZZZrZZZxZZZzZZZzZZZ{ZZZyZZZzZZZsZZZqkjd^XWQKEEEEFFIKNNQSUVWXYY\`cdfillnZZZpZZZsZZZske__`acc`]ZZ]`cdkZZZrxy}}|{zZZZ{ZZZyZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZpiaagnZZZvZZZvZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZxZZZomld[RPG=42-($$+29;DMVXaiZZZsZZZrZZZqZZZqZZZtZZZuZZZrZZZqZZZqZZZqZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZpZZZmh`ZY^chioZZZv{}ZZZZZZZZZ{ZZZ|ZZZqh^\XTPPV[abcefgZZZpZZZyZZZZZZZZZ}ZZZujh`XQPSUXX[^`bkZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZuZZZtpkgfb]YWOF><60**,//GFJNRRRRRRSUWW[^aadgjknZZZsZZZvZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZwZZZsZZZtZZZqZZZuZZZqZZZpZZZrZZZpZZZsZZZsZZZsZZZqZZZrZZZtZZZrZZZvZZZvZZZtZZZvZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZ~{zyyxxxxxyzywuZZZtZZZuolihd`]\YVTSSSSRPMJJIHGHIKLMU]efghhhgggglZZZqZZZuZZZxZZZ|ZZZZZZZZZZZZZZZzZZZuZZZujaXWUSQRX^egZZZqZZZ|ZZZZZZZZZZZZ}ZZZyZZZwrmgfb]XWSOJJFB?>=;99::;<=?@ABDFFGIJJKLMMMLLLIGDDCBAABCCDDDEDCA@@DIMNTZ`acdfeb^YYUQNMHC>=>?@ACFHIKNQQSUWWY\^^_``acegf_XQQUY]]XSNNSX]_fnZZZtw|~}yZZZvqqZZZ|ZZZZZZZZZZZZZZZZZZwZZZtme]\biZZZmZZZpZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZtZZZrZZZmhaYWMC970)##(-35>GPRY_efggghikmnZZZrZZZzZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZ~~{xZZZsZZZrngaabcdelZZZqZZZ{|ZZZ}ZZZ{ZZZsf[ZXWWX_fmmljijZZZvZZZZZZZZZZZZZZZzpng_XXY[]]`cghpZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZoZZZnmiecYPFD;2**+-+FEHLOPPPPPQRSSTUVWXY[[^adekZZZpZZZwZZZwZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZxZZZuplkgb^^]\\\]^``bceefhiilorrZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZ{ZZZxZZZxZZZwZZZxvwwwwwwy{||{yxZZZxsnihc^XXUSQPPONNLJHHJKLMMNOPW_fgikmnnoZZZpZZZoZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZsZZZsh_UUTUVV[`egZZZuZZZ~ZZZZZZZZZZZZZZZ|ZZZ{ZZZvnigb]XWSOKJGDAA?<:::;;<=>@@BDFFGHIJJJJJJJJJIHGGFECCCCCBA?=<83//1356<AFGKNQQNKIHGEDC?;7789;<>@CCFILMORUUVWXXWVUVXZ\\TLDDJQWWQJCCIPXYbkZZZuZZZuZZZ|ZZZZZZZZZZZZZZZZZZ|ZZZxpjjZZZsZZZzZZZZZZZZZZZZ|ZZZwZZZrjaYX^djkpZZZsZZZzZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZtZZZqlf`^TI><3*""%*.09BKLQUYZZ[\\`dghlpZZZvZZZwZZZwZZZyZZZ|ZZZ}ZZZ|ZZZyZZZwZZZyyyyyyyxZZZxZZZsnihfcabiZZZpZZZzZZZ}ZZZ~ZZZ{ZZZrdXWY[^_gZZZqZZZyZZZxZZZspklZZZwZZZZZZZZZZZZZZZZZZsZZZsmf___`bbfimnZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZyZZZvZZZrZZZndYMK@5++*,'FCGKNNNNOOPPQQRSTTUVXX[^abhZZZlZZZtZZZvZZZuZZZzZZZ|ZZZ}ZZZ~ZZZZZZZZZ}ZZZ{ZZZzZZZuZZZrZZZolhgc_[[ZYYYZ\]^_acdefhhknqrZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ{ZZZwZZZuZZZwZZZwZZZxZZZzZZZyZZZyxxxz{}}{zxwsnjhc^YXVTRQPONNLJIIJLNNNOPPW^efikmnopqrZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrZZZph^UUUVWW\`egZZZtZZZ~ZZZZZZZZZZZZZZZ{ZZZzZZZwoihc]XWSOKJGDBA?<:::;;<=>?@BDEFGHJJJJJJJJJJIHGGFEDDCCBB@><;61,,.0238>CDGJMMKHFEDCBA=95578::=?ABDGJKNPSSTUVVUTSSUXZYQJBBHOUUOHAAHOVW`iZZZrZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZuohiZZZpZZZ{ZZZZZZZZZZZZ{ZZZtZZZsi`XW]cijnZZZsZZZwZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZrZZZoke_]SH><3*"!%).08AJLPTWXYZ[[_cghkoZZZtZZZsZZZvZZZvZZZzZZZ|ZZZyZZZyZZZuwwxxxxxxZZZxZZZsojifcaaiZZZpZZZzZZZzZZZZZZ~ZZZ}ZZZpdXWY\_`iZZZqZZZzZZZzZZZxqmnZZZzZZZZZZZZZZZZZZZ~ZZZxZZZsnga`abccgkopZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZxZZZuZZZrZZZofZOLB7,,+,'99;>@@AABBCCDDEFFFHIJKMOQRV[_`cfhikmnnljhgb\WVUUTTUUVVWYZ[]_abehklpZZZvZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ~~~}}{ywvsokjgda`_^]\YUQQQPPPQSTTSRRRVZ^^adghknqrxZZZ}ZZZZZZZZZZZZZZZyonf_XXY[]^adhjZZZvZZZZZZZZZZZZZZZZZZ|ZZZwomga\[VQLKGD@@><:::;<<=>??ACFFHJLLMMNNMLKKIHGFEDCCCCCB@=:93-''(*,,16:;<>??>=;;:98741..02446789;=??ACEFGGHHHGGGHJKJE@;;@DHHD@<<AFKLT\dekZZZrZZZxZZZwZZZuZZZxZZZzZZZuZZZpkeejZZZoZZZtZZZuZZZuZZZqqZZZog]UTY^cdfhjkZZZpZZZsZZZyZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZvZZZokic\USI?64-'!!',24;CKLNQSTWY\]`befhkmnoZZZsZZZrZZZpZZZrqqqqrssstttqmiifc`ahZZZoZZZwZZZ|ZZZZZZZZZZZZZZZZZZ{ZZZxlbWWY\`akZZZtZZZZZZ}ZZZ{ZZZwZZZwZZZvZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZsnhgggghnZZZsZZZ{ZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~{ZZZyZZZtkaVTJ@6531,,./022344556777899:;==?ABCEHJKNQUUX[]]\[ZYSMGFHKMNPRTTUWXXZ]_`ejZZZoZZZoZZZtZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~~{yvuspmmkjiiiiihb[UUUWXXYYZZXVTTTUVVZ]abglqsZZZzZZZZZZZZZZZZ~ZZZslje`\\^adegiklZZZvZZZZZZZZZZZZZZZZZZ|ZZZuZZZrlf_^XRMKGC?>=;::;;<<==>>ACFFILNOPPQQONLLJHFFDCBBBBBB?;76/("!"$%&*.23211111110/--+)'')+-../001233467789::::::;;<<975579;;:877:=@AHOUW\bhiknZZZrZZZokfaacfiiklmlcZRQUZ^^^]]]`dghmZZZsZZZwZZZyZZZ|ZZZzZZZ|ZZZZZZ{ZZZxZZZqZZZplgbaYQIH?5-+($!!(/68?ELLNOPPUZ__acddfghiiijjjkkklmnnopppnliieb``goZZZvZZZ{ZZZZZZZZZZZZZZZZZZ{ZZZrZZZsi`WWZ]acmZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZwonmllmZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ}ZZZpf\ZRI@?:62##$%%&''(()***++,-/0023445566:>ABFIMMMMMLE>87<BGHLORSTUVWY[^_elZZZsZZZtZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~{xuusqoopZZZsZZZqZZZrZZZrZZZvZZZuZZZvkbYXZ]``````]ZWVSPNNRV[\cjZZZrZZZsZZZyZZZZZZZZZZZZ|ZZZuiheb``dgkllmnoZZZ{ZZZZZZZZZZZZZZZZZZZZZyZZZxZZZricaZTMLGB>=<;::;<====>>@CFFJMPQRSTTRPNMJHEEDBAABBBB>953,% $'++(&##%&(('%##"! #%''''''''''())**+,,-......../////..01223456<AGHNSYZ_diieb^^]\\\aeih`WONRUXXVSPPRTVW\bghjlnmkigfb^ZXPG><4,$#"!!"*2;<BGMMMMMMT[abccddddddccbbcefghijjklmmljihec``gnZZZtZZZvZZZZZZZZZZZZZZZZZZZZZxnle^WWZ^bdoZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZwZZZqqpqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZtkb`YQJHB;7"""##$%&&&'((())*+-../12223337;>?CFIJJJJJC<66;AGHLOSSTUWWY\^_elZZZsZZZsZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZ~ZZZyZZZtZZZtZZZsZZZpqqrZZZrZZZsZZZuZZZwZZZtZZZtZZZtlcYY[^aabbba^[XWTQNNRVZ[cjZZZsZZZsZZZ|ZZZZZZZZZZZZ{ZZZrjhfdbbfjmnnopqZZZxZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZpjcaZTMLGB==<;::;<===>>>@CFFIMPQRSTTRPNMJGEDCBA@AAAA<832+#"&))&$!!#$&&%#""! !$&&&&&&&&&&&''(()**+,,,,,,,,-...---.0112344:?EFKQVW\bggda^^\[[[_cgg_VNNPTWWTQMMOQSTY^cdfhjjhfdc_[WVMD<:2*#"!!!"*3;=BHMMMMMNU\cddeeeeeeedcbbceghhijjklmmlkjifcaagnZZZxZZZuZZZZZZZZZZZZZZZZZZZZZwnle_YY\_ceoZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZvZZZuZZZsqrZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtja`YQKIC<7 !!!!!"#$$$%%%&())**+++,,,/2458:==>>>><:89>EKLPSWXY[\\^_aaejnoZZZtZZZvZZZvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ~ZZZ}ZZZ{ZZZ{ZZZ~ZZZ}ZZZZZZZZZZZZZZZ|ZZZ{ZZZzZZZne[[^aefgijjfb^]YURRTWZ\ckZZZuZZZsZZZ~ZZZZZZZZZZZZ|ZZZvZZZrZZZrZZZpZZZsZZZpZZZuZZZyZZZyZZZ}ZZZzZZZxZZZzZZZ{ZZZZZZZZZZZZZZZyZZZtng`^WQJIE@<<;;;;=@BBBBBBBBCCFILLMOPPOMLKHEBB?=;:98763.*)#   """"""""""##$$$%&&''(((()))*+++***+,---../27;<@DHJOUZ[\^^^]\ZZZ[[ZTNHHJLNNKHEEFGIIMPSTVWYYWUTSOJFE>820+&"!"#%&.5=>CHLMPSVW^elmoZZZrZZZrZZZqZZZrpnnliggmZZZoZZZxZZZxZZZuZZZvZZZuZZZuZZZvZZZvZZZvZZZwZZZvZZZtZZZsZZZtnkhhkoZZZvZZZtZZZZZZZZZZZZZZZZZZZZZxmljgffgijkZZZsZZZxZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ{ZZZwZZZuZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZuZZZvZZZsZZZnlkd\TSOKGEC?A !!"##$$$%%%%%&')++-.00112258;<BHNOSW[\^_aabbccegiijkkloZZZrZZZxZZZwZZZ{ZZZ|ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuh^]aejjmZZZrZZZsZZZqnjed_[WVXY[\emZZZvZZZuZZZ}ZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZsZZZtkd\[TNGFB?;;;;<<@CGGGFFEDBAACEGGIJLLKJJIFC@?;8441/-,(%!  !!""##$$%%&&''((((((()))))))+.1148;<BHNOTZ__^\ZYVRNMJFBBCDEEB@===>>>@BCDEFHHFECB>9540,('%#!!$&)*18?@DHKLRX^`gnZZZvZZZwZZZyZZZ|ZZZZZZZZZ|ZZZ}ZZZ{ZZZxZZZuZZZrmnZZZxZZZZZZZZZZZZZZZZZZ{ZZZ~ZZZ{ZZZ}ZZZZZZ~ZZZZZZZZZ}ZZZyZZZuZZZtoopqsZZZuZZZ}ZZZZZZZZZZZZZZZZZZvmmnZZZpZZZsZZZqZZZrZZZpZZZsZZZqtwZZZzZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZzZZZtqqZZZrZZZtZZZxZZZ{ZZZwZZZwZZZqZZZtmidc`]ZYSMGGEDCBCCJ !"""#$$%&''.6=>EKQRW[_`bdffeedddddcb`^^behiknqrZZZuZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxl``dinoZZZsZZZzZZZzZZZ|ZZZxZZZrlkf`\[[\]^foZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzqphaYXQJDC@=;:;;<=BGLLLKJIEB>>?ABCDFHHHHGGD@=<73.-*&"!  !"$$$%%%%&&&&&&&%$$$%&'(*,./5;BCMV_`^\ZXQIBA?><<<==<:8555544444456776532.)$#"  !"%)./5;ABEHKLU^giZZZoZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZsZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvZZZxZZZuZZZrrsZZZzZZZZZZZZZZZZ~ZZZtnnZZZrZZZwZZZZZZZZZZZZyZZZxZZZywuZZZsZZZsZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZyZZZtnhghjkkigdc^XSROKHHC?;:;=?>CFT !!""#$%&-5<>DJPQUZ^^`ceeddcccbaa_]\\_befiknoZZZrZZZxZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{mbbfkpqZZZvZZZyZZZ~ZZZ|ZZZyZZZqmlgb]]]]^_gpZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|qphaYXQJDC@=::;;<=BGLMLKJJFB?>?@BBDEGGGGFFC?<;61-,($   !"##$$$%%%&&%%%%$$##$%&'(*,-39@AKT^^][XWPH@?><;;;;<;97444333322234554210+'"! !"#'+/16<ABEHKLU^giZZZrZZZuZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZvZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZwZZZwZZZustZZZ|ZZZZZZZZZZZZZZZuooZZZsZZZ}ZZZZZZZZZZZZZZZzZZZxwuttwzZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZwZZZtlfefghhfdaa[VPOLIFEB>::;=??DGT !!',137<AAEILMPSVVVVVVTSQQQPPPTX\\^_abflZZZpZZZoZZZuZZZzZZZ|ZZZZZZ|ZZZzZZZ{ZZZ|ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrZZZrZZZwZZZzZZZ{ZZZ{ZZZ}ZZZZZZZZZZZZ~ZZZzZZZrZZZtnjfffghioZZZtZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwZZZrZZZsZZZzZZZ~ZZZZZZZZZyZZZuZZZtkc\ZSKDC?<88:;=>BFJKLLMMIFCCCBBBCDDDCBA@<954/*%$   !!!"""########"""""#$$&()*/49:BJRRRPONHB<;:99999997533222110///000.,**&# !""&+/048<=@CFFHJKLT\dekZZZrZZZyZZZyZZZ~ZZZZZZZZZZZZZZZZZZ|ZZZwZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ{ZZZ}ZZZZZZZZZ~~{xvvy{~ZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZtZZZrmf__^^]][XVUROKKIGEDCCBBDFIHLN\ #&'*-1147:;?CFGHHHHFCAABCDDIMRRSSTTY^cdgjlllkkkmoZZZsZZZsZZZxZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxZZZ{ZZZuZZZqppZZZoZZZrZZZsZZZtZZZvZZZ}ZZZZZZZZZ|ZZZyZZZyZZZzZZZzZZZ~ZZZZZZZZZZZZ{ZZZvZZZvZZZvZZZrZZZsZZZqmgccjZZZsZZZyZZZyywvZZZsnf_]ULDC>:769;>?BEIIKMOOMJHHFDCBBAAA?=::62.-(#   !!!!!!!! !""#$%''*.239?EFFEED@<877666666653222110/-,,,,,,)'$#! #&'.5<=AEIIJJJKKKLMSY`aflZZZpZZZpZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|yy{}ZZZZZZZZZZZZZZZZZZ{ZZZ~ZZZ}ZZZ}ZZZwpng`YXVTSRPMKJIHGGFEDDFHJKMPSQTUd   !!#&()-2779:::74113689>CHHHGGGLQVWXZ\\[[ZZ\]_`gnZZZsZZZtZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZ{ZZZxZZZ|ZZZ|ZZZZZZ~ZZZ~ZZZZZZZZZ}ZZZzZZZwZZZwqnnZZZsZZZwZZZzZZZ||}ZZZ|ZZZzZZZvngffeed^XSS\eopZZZtvZZZxZZZxZZZqib`WMDC>9558;??BDGGKNQQPNMLIFCCA?>=:743/+&%!   !!"#$%')+,059::;;;97444444444432221000.,**)))(%" %*,5?HINQUUSQOONMMNRW\]afjkpZZZtZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ||}ZZZZZZZZZ|ZZZxZZZvZZZuZZZxZZZyZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZsjiaYRQNLIHFCA@BCDDDDDDINSTWZ][]\k   !#%&+/44677741..1367<AFFEEDEINSTUWXXXXWWYZ\]dkZZZrZZZrZZZxZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZ~ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZytpllZZZpZZZsZZZ{ZZZ|{{{ZZZ}ZZZqleddccb\VPQZcmnZZZtZZZuZZZwZZZvZZZpia_VMDB>9558;>?ADFGJMQQPNMLIFBB@><<9521-)%$   !!"#$$&(*+/378899976443333444433221100.,**))((%! %*,6?IJORVVTRPPONNNRW\]afjkpZZZrZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ||}ZZZzZZZyutZZZxZZZwZZZxZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZxZZZrig`XQPMKHHEC@@BDFFEEEFKPUVY\`^_^k   !$''()**)'&&)+./26:::::;>BEFHJLLLLLLMOQRW]cdhlZZZnZZZrZZZrZZZsZZZuZZZvZZZyZZZyZZZ{ZZZ{ZZZ}ZZZ~ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxsmggilZZZnZZZpZZZsZZZtxZZZvZZZqjdc`\YXRMHIR\egjmZZZoZZZpib[ZRJBA<8447:==?ACDFIKKJHFFC?<<8521-)&%"   !!"#$%&()*-03344544322234445666666655530..,+))%!"&(1;DFKPUUUTSSSRRSVZ^_dinoZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|}}~~~~~zvrrqqZZZqZZZsZZZrZZZtZZZyZZZvZZZwZZZtZZZrZZZrke_^XSNMLLKKIHFFKOSTSRQQUZ^_dinlZZZihu   #&')+../0013577:=??@@@ABDFGKOSTX\`adfijlnZZZrZZZooonoZZZsZZZuZZZ}ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZtjbabcdejoZZZuZZZsnicb\UONIEAAJT^_behgb[UTMG@?;74368;;=?@ABDEECB@?<9650,'&"    !"$%%&'))+,..//000000134457889:;;;:::85330-**%!"#,6?AGMSTUUVVVWWXZ]`aflZZZqZZZuZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZzZZZwZZZrZZZsZZZtZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}}||{{||}|yuppmkhhhhggfdbb^YUTQNJJLMOONMMNT[bba_]]`dhioZZZwZZZ|ZZZzZZZvq~    !"#$%''()**-033456689;<?BEEIMQRUX[\^accba``dimoZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZrg]\ZZZZaiZZZoZZZolgbaXOFEA=::CMVX[]`_ZTOMHC>=:6335799;<==>>??=;9852/.("   !####""  !"$%&&'(())**+++,,-..025578::<>@@@@??=;9840,+&!'1:;CJQRTVXYZ[\\^`bciZZZnZZZwZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}pnhc__ejpqZZZsZZZxZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~~|zxxy{{{ZZZwZZZsonje``]ZXXWUTTQOLKJIHHLOSSTTTU^gZZZoZZZnZZZlliiknZZZnZZZtZZZyZZZZZZZZZZZZ{   !!"$%%&'((+.112334579:=?BCGKNORVYY\^``_^]]bfkmZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrf[ZYXXY`gZZZlZZZqkgbaXOFD@<99BKTVY[]]XSMLGB=<952246889:<<<===;96630-,&    !""""""  "$%&&'((()***+++,-..035579;<>@BCBBBA?=::61-,'!&/8:AIPQSVXXZ[\\^`bbhZZZmZZZtZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{nlga]]ciopZZZsZZZwZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~}ZZZ}ZZZyZZZzz{|ZZZ}ZZZvZZZtqpkfa`]ZXWVUTSPNKJJIHIMQUUVVVW`hZZZoZZZqZZZpmkkmoZZZsZZZuZZZ~ZZZZZZZZZZZZ|   !"##%'))**++-/1247::=@CDGILMORTTSRRRX^deoZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZqZZZrf\RQQQRSX]ccba`_XPIHB<77=DJKMPRRNIED@<8841--.0222111100/.,**'$!!    "$%&&''()))**++,.//2588<@EEIMQRRQQPNKGGA;53-& ")019AIJMQTTUWXXY[]^bgklZZZsZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZukic^YZbkZZZrZZZuZZZv{}~~ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZzZZZxZZZrpokhdca^[[UPJJLNQRW]bccbbcgjnoprZZZuZZZtZZZuZZZtZZZwZZZ{ZZZZZZZZZZZZZZZ  !"""""#%')),/124689;=@@CEHHGGGGNU\^hZZZrZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwmdcZQIHIKLMPTWWY[]\WRLKD=669<?@BDFFC@=<9633/+(()*++*('&%#""!   !#$%&''(())*++,-.0037:;AHNOU[`aaa``]YUTLE=;3+$##()19ACGKOPQRSSUVXX[^abeilmnoZZZoZZZrZZZsZZZvZZZvZZZvZZZyZZZ{ZZZ|ZZZ{ZZZzZZZ|ZZZxZZZyZZZumgf`[VWbZZZoZZZyZZZ|}}{ZZZwZZZwZZZwZZZvZZZxZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZsZZZpZZZolhdbZRJJOTZ[biZZZpZZZqZZZpZZZooonlllqZZZvZZZzZZZyZZZ|ZZZ}ZZZZZZ~ZZZZZZZZZZZZZZZ   !!$')*+-..024479<<<<<=EMUWakZZZwZZZuZZZ~ZZZZZZZZZZZZZZZ}ZZZwZZZwZZZsqoorZZZsZZZyZZZ{ZZZzZZZZZZZZZ~ZZZ|ZZZwZZZrZZZsi`XVNG@@BDGGIJKLQUZZWSPNF=54455579;;975420.-*&""##$$"    "#$&''()))*+,-./1259=>GOWYahZZZmZZZrZZZoZZZqZZZnZZZpkgbaXNEC:1(&" !)1:;@EJJLMNOPQSSTUVWXZ[\\]^^adggiklmmllligdc]XTUcZZZoZZZ~ZZZZZZZZZZZZZZZZZZ|ZZZvZZZtZZZrpnllnprsZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZwZZZtlj_UJJRZbdlZZZuZZZ}ZZZZZZ~ZZZ|ZZZyZZZyZZZvniiZZZoZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZ  "%((*+,-.012479:::;;CKTV_jZZZsZZZtZZZyZZZ~ZZZZZZZZZ}ZZZ{ZZZtZZZrZZZsnkknZZZqZZZsZZZwZZZwZZZzZZZ{ZZZ|ZZZ{ZZZtZZZsZZZrh_VUMF@?ACFFGHIINSXXURONE=543334579975321/-,(%!!!"#"     ""$&(()**+,-../0236:>?GPXZbiZZZqZZZrrrZZZpZZZomidcZPGE;2)(# (089>CHIJLMMOPQRRSTTVWXYYZZ[^addfhijiiiigebb\WSTbZZZsZZZ}ZZZ~ZZZZZZZZZ~ZZZZZZ}ZZZxrqonllmoqrZZZtZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxZZZqlj_UKJR[dfnZZZuZZZZZZZZZZZZ~ZZZ}ZZZ|ZZZwpjjZZZqZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZ    !#%&'(*++-/113467?GOPX_fgkoZZZpZZZrZZZnmjid`\[^befjoZZZtZZZqZZZrrpoh`XVOHA@@????>>>BGKKIHFE>70//.//01330.,+)'$$!   "%''%"  !"&*..034567899999;=@AHPXZbjqrtuvvZZZrZZZpmlbXNLC:10*% "(-/38=>@BDEFHIJJKKKLLMMNOOPRTVWXZ[[[ZYYXXXWSOLMYeZZZpZZZsZZZrZZZsZZZqZZZrZZZrppprZZZtZZZwZZZuZZZwZZZxvZZZyy|~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtZZZtZZZqjdc[SLLU_ikZZZrZZZxZZZZZZZZZZZZZZZZZZxZZZsZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ  !!"#$$&'()+/23:BJKPTYY\_aaa`_^XRLLORVW]chilnpohaZXQJCB?<9975336:===<;;60+***)*+,-,*'$$!   "$%%%%%&')),033/,)((''&"   !'-458;??ABCCBA@@AAABIPWYaiqrux{{yZZZwZZZvZZZsj`USKB:82+%$! #$(-1258;<=?AAAABBAAAABCEEFGIIJLMMLJIIJKLLJHFGPYabbbbbfjopZZZvZZZ{ZZZ~ZZZZZZZZZZZZz|}~ZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZ{ZZZyZZZvZZZtZZZrmmgb]\WRNNYdZZZpZZZoZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZ~v|     %)./6=EFGIKLMOQQSTUTME>=@CGHPW_`fkZZZqZZZqic\[SLED>943/,))+-000111-*&%%%%%%&''#   !$$(+....../1226:>>:6212333-("!    (19;?DHIJLNNLJGGFDCDJPVX`hZZZsZZZrvZZZ|~~ZZZZZZzZZZsg][SJBA91*)%!"&'+/2357999998877789:;;;<<=>??=;99<?BBBAAAGMSTTTTU]enoZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZzZZZ{ZZZwsrpmjjhged_ZVUSQOP\gZZZrZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZsmq  #(-.5<CCEGHHJLNNPQRRJC<;>BFGNV^_ejZZZqZZZqic\[TLED?943/,((*,...///+($$$###$$%%"   #%&)-00011123448<@@<84345650*$#   '09:?DHIKLNNLJHHFEDDJPVW`hZZZrZZZsZZZxZZZx~ZZZ}ZZZ|ZZZri_]ULDC;3+*&" $%)-0135777777655568999:::;<==;977;>ABAAABGMSSSTTU]enpZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZ|ZZZwsroliigfed_[VUSQPQ\gZZZtZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZskq  "&'+05578::<=?@BCEE@;66<BIJQW^_cfjje`ZYTNIHD@<;50++*)(('&%%"  !#&&()*+05:;<<==>>??CFJJEA<<=?@@;610+&!   './49>?ADFFFFFFFEEEINRT[bikZZZqZZZvZZZ{|~ZZZZZZzZZZqig^ULJB:21,($#! #%((*+,-./0000002345556667887666;@EEHJMMSY^_`bcdhmZZZrZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ|ZZZvohhhijjgdba\WRRZckmZZZsZZZzZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzwZZZofh!$$"   "$''(*++-/1136885311:CKMRX]^`bdd`\XWTPLLIFCB<5/-*&""   !$%(,/////07>EFGIJJJJJJMQTSOIDDFIKKGC>=82-,'" #$).347:==?BDDDEEFHKNOU\bcjZZZnZZZuZZZw{ZZZZZZxZZZtZZZsh^USJB:83.*)&#!  !"#%')**+,,-/00112222223445;BHINSXY_ejknZZZpZZZuZZZvZZZuZZZuvZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZphgjmZZZrZZZpZZZnonme\TTY^cejoZZZwZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZ}xZZZvl`^  !%),-*(%$   !##%(*++++-7CNPTX\]]^^][XUUSQONMLJIB910*#   $(+,04776544=FOPSUVVVUUUX[]]XRMMPSVVROKJD?981)#"#$%%$"!   #(),0348=AACDEEGIJKPU[\ckZZZtZZZuZZZzZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZpg\ZRIA@:50/,)&%" ##%&'()+,,-....---/145<DLNU\cekZZZoZZZwZZZxZZZ{ZZZ}ZZZZZZZZZZZZZZZzZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvhhlZZZsZZZxZZZyZZZwZZZzZZZ|ZZZwZZZmbWVWY\\aglnZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ}ZZZ|yZZZvZZZqh[T! !"&*..,)'&!   #%((()*+6ALNRVZZZ[[ZXUSRQOMMLJIH@80/("  ""&*..26998645>HQRUWYYYXXXZ]__YTOORUXXUQMLGA;:3+%$%&''&$#"   !&'*.126:>?ABCDEGHINSYZaiZZZpZZZpZZZwZZZ{ZZZZZZZZZZZZZZZ{ZZZ{ZZZth^\TKCB<721.+('$ ""$%&'(*++,-----,-/134<DLMU\dekZZZrZZZuZZZvZZZ|ZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuihmZZZrZZZyZZZzZZZyZZZzZZZ|ZZZyZZZqdYWXY[[`flmZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ~}ZZZ}ZZZzZZZ|ZZZvZZZvZZZsgZT!%&'*+/36730-,'"   '/78;?BBCDEEDB@@><::98760)#"   #$'+./37;<>@BB?;89BLVW\`defghhggffb^ZZ[]__]ZWVOHA@:50/023320/.,*)(('''#   "$%(+..013369<=BGLMT[bdjZZZnZZZwZZZvZZZvZZZzZZZwZZZwZZZrkdc\VONIEA@;732.)%%" !!#$&&'(())***-/128>DFLSZ[agmnZZZqZZZyZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvllZZZrZZZ~ZZZZZZZZZZZZZZZZZZZZZ{ncb^\YZ`gnpZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZ~{xZZZtZZZsZZZtZZZrnkaVO'*,/348;??;732,&!!#%''$!  !!$&))+-/0/.-,*)'&%$##  !"%)-.27;<@EIJKKLKFA<=FP[\cjZZZpZZZqZZZuZZZtZZZwZZZwZZZtZZZqnmjheeffggedbaXPGFB?;;<>??>=;;:87765431.+*&"  "#'+/05:?@FMTV\bijmZZZqZZZrZZZvpmjid`[ZWSPOID>=83.-)%! !!"##$%'((+-/049=>DJOQW]cdioZZZvZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzppZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZxnle^XX`iZZZoZZZqZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}~yZZZupplifd[QK,/37;<@DGGB>971+%%(,//,)&%"      !#&()-267=BHINSWXWVUTMF@@JT_ajZZZsZZZ|ZZZzZZZZZZZZZZZZZZZZZZ}ZZZuZZZuZZZqZZZpZZZrZZZrZZZnonnnmlkaWNLJHGGHJKKJIHHGFFEDB@@=;872,'&$"  #$(-139?FGNU[]bhmnnoZZZnZZZmliffda_^WPJHC=761+&%# !$&&)+..1366;@EFLRYZ`ekmZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZtZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZwlaXX`jZZZsZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwqljgb^]UMF,048=>BEIHD?:92,&&)-00-*''$!     !##%(*+/49:@EKLQVZ[ZXVUNGAAKU`bkZZZvZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZ}ZZZxZZZvZZZuZZZtZZZrZZZvZZZqqppponmcYONLKIIKMNNNMLKKJIIGECC@=:94/))'%#" !"&*/06<BDJQXY_eklmZZZmZZZoZZZnljggeca`ZSLKE@:93.)(%" !#%&(+-.0255:?CEKQWX^dikZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZymbXXakZZZsZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzrlkgb^\ULF7:=AFGJMOOJE@>82,+.03310.-*&#"     !##%')*,.113577<AFGNU\]aeiiea]\SKDDMWaclZZZvZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZzZZZ{ZZZzZZZyZZZyodZYXWWWZ]aa``__^\[ZWSPOKFAA>;988765/*$#!  #$(-129@FHNTZ\_cfggffghjkjf`[ZTOIHC=873/,+(&## !#$'),,.0237;@AFLQRW]bdmZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{oe[[clZZZuZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZwZZZtng`_WOHBCGJNORTVVQKFE>710245655540,('%"     !#$&&(*,,/367:<??ABDDINSU]emnZZZqZZZuZZZwZZZxZZZsjcbYPGGOXacmZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{pfedeefjoZZZrZZZsZZZtZZZsZZZsZZZsZZZoZZZnllgb]\UOIHHHIIIIIHB<652/,+*(&%#!  !'.46<CIKQW]^`bdejZZZnZZZsZZZrZZZomjid^YXRMGFA=8741--($!"%'**,./048<=BGLMQVZ\enZZZyZZZwZZZ}ZZZZZZZZZZZZZZZZZZ{ZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZqg^^foZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZslcaZRJMMPSWXY[]\WQLJD=6567889:;;61-,)&#""! !!   "&&),//12459>CDGJMMNPQQV[`bkZZZtZZZZZZZZZZZZZZZZZZZZZ~ZZZtjh^TKKRZbdnZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZqZZZqZZZsZZZqZZZtZZZsZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZxZZZpih_WPORUXYZ[[[TNHGC?<;96430-*)" #$+28:CKTUY^bckZZZvZZZ{ZZZzZZZzZZZ{ZZZwZZZvZZZrZZZmigb\WVPJDC@<871+%$ #%()*,-.1599>BFGKOSU]fopZZZpZZZtZZZuZZZsrommqZZZxZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvjaahZZZqZZZzZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZqgd\ULMORVYZ[]^]XSMKE>777788:;<<83.-*'$#""!! !!!   #'(+.113467;@DEILPPQRTTY^cenZZZvZZZZZZZZZZZZZZZZZZZZZZZZski_ULLS[ceoZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZrZZZsZZZvZZZtZZZvZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvZZZrkiaYRQUX\\]^^^WQJIFC??<97630-+$  "(/57@HQRW[`ajZZZqZZZ|ZZZ~ZZZ{ZZZzZZZxZZZwZZZuZZZqkje_ZYSMGFB>;93-'&! "%((*+--1489=AEFJNRS\dmnZZZmZZZqZZZsZZZtpmkkpZZZsZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZukbbjZZZsZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZrge]ULXY\`ddddcb]WQPIC<<;::;=@BB>9541.**('&%$"! !"##"!    !!&+/037::;<==@CFGMSXY\_bcgkopZZZyZZZZZZZZZZZZZZZvomdZRQX`hjZZZtZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|vrmlhc__cfjjihfe_YSSQPNNKHFEA=:82+$#   $)*29ABGLQS\eZZZpZZZpZZZpZZZtvvvvZZZtZZZsZZZqkfe`[VUQMIHB<650+&%""%%')++.2559=ABFJMOU\cdfhjkjiiipZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZriiZZZoZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsig`YPccgkZZZmZZZpmkhga[UTNHBA?><=AEHHE@<;8521/-+*(&%$$$$$#""!!!    !$'(-389=@DDDDDDEGHIQYabglZZZqZZZrZZZuZZZyZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZxZZZrZZZri`XX^emoZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvxuroonmmmZZZsZZZuZZZzZZZzZZZsZZZqnmgb\\\]^][XUTPKGF@:42/+'&$"  $*027<BCMV`agmZZZrZZZtwZZZzZZZ|ZZZZZZzZZZwZZZtZZZpmied`\XWRLFE@:43-'! "#%')*,/226:>>BEIJOTYZ]`ccdfghpZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzppZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzkic]TnmZZZoZZZtZZZ{ZZZ{ZZZxZZZpmlf`ZXRLGFCA>?DINNKGCC?<98520/-+))('&&%$####$##!!     !!%*./5;@AFJMNMLKKJJJKT_ikZZZrZZZxZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZtne^^dkZZZtZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZuZZZutrrZZZsZZZtZZZwZZZ|ZZZ{ZZZZZZZZZZZZZZZZZZ{ZZZsZZZuojeegjlljgdc^YTSNHCB=8430-**'$"!!  !"'-24>GQS\eZZZoZZZnZZZyZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZyZZZuZZZuZZZtZZZmkgfa[VUOICA80'%  "%'(*,//36:;>AEFILOPTX\\`cfhZZZoZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|mke`XnnZZZqZZZyZZZ{ZZZ|ZZZyZZZrnmga[YTNHGDA??DJOOLIEDA>;:7421/-**)(''&%$$$$$$#"!!!      !##',017=CDHLPPOONMLKKLU_ikZZZsZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZunf__elZZZsZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZuZZZuZZZuZZZvZZZsZZZsZZZyZZZ{ZZZZZZ|ZZZZZZZZZZZZZZZZZZ|ZZZyZZZuqlggilooljgfa\WVPKED@;6530-,)&$##""! %*01;ENPZcZZZkZZZmZZZyZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwZZZwZZZwZZZqnjid^YXRLED;2)'!"$''*,./269:=ADEHKNOSW[\_cfhZZZnZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxlkfaXttZZZ{ZZZZZZZZZZZZ}ZZZzZZZtZZZunga`ZTNMIEAAFKPPONMLJHEEB?=<:755310/.,***)))'&%$$###"!!!      !"$$%&'(*-/048=>DJPQUY]]]\[ZXVTTZ`fhnZZZvZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZpkddhmrZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZqZZZsZZZtZZZvZZZ|ZZZzZZZwZZZuZZZtZZZrmhdc]VPOJD?><:9852//.-,+'# #(*19ACLU^`hZZZnZZZwZZZxZZZ|}ZZZZZZZZZZZZZZZ{ZZZzZZZuZZZqlfe^WPNE;20'"%&)+./2588<?CDGJMNRW[\_cfgoZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZufeeeczzZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZunhgaZTSNHDDHLQQRSTTSRPPMKIHEC@?=;9864210/.-,*)('&%%$##""!  !$%'),,.02369<=AEIKQW]^bfjjjihgda]]_acdjZZZnZZZvZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZxZZZpjjlorZZZsZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZzZZZwZZZpZZZpib[ZTNHGFEEDA>;:98650*$# !"(.46>GOQX`gipZZZv}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrZZZsjbZYOE<9.# #$'+./1366:>BCFIMNRW[\_cfgnZZZsZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwl``dinZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtnmg`ZYRLFFIMQRUY\\\[[ZXVTSQNKJGDBA><9964220.,,+*(('&$$$#"""!!!  "%)*-0347:=>AEIJNRVW]cijZZZnZZZsZZZuZZZvZZZwZZZtZZZsZZZrZZZokgfdb`aflZZZsZZZqZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvppppqZZZqZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZzZZZrmfd^WQPPPPPMJFFDB@?80)(" #()19ABIPXZeZZZpZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtldbXNEB5(!"&*./02459=ABEIMMRW\]`dghnZZZuZZZzZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxpe[[dmyZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwonha[ZSMGGJNQRVZ]^^]]]ZXVUSPMLJGDC@>;;864320..,+))(&%%$$###"!!! "&)*-1448;>?CGJKOSWX^djkZZZpZZZsZZZyZZZxZZZvwvZZZvZZZrmihecaaflZZZpZZZrZZZw~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxsrrrZZZtZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZungf_YRRRRRROLIHFDBA:2*)# "&'/6>?FMUWbZZZnZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZwmdbYOEC6(!"&*..02459=ABEIMNSX]^aehioZZZwZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|oe[[dny}~ZZZZZZZZZZZZZZZZZZZZZZZZxZZZsZZZrkd^]WQKKMOQRX]ccdeeeb`^][YVVSQONKIFEC@>=;9664200.,+*)(''&%$$#"!! "&**.1558<??CFJJNQUVZ`efjnZZZsZZZttuvvtrppnmllnZZZrsty}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|wZZZslke_ZYZ[\\YVSROLIHA;42,&!   &,34;BIKVbZZZoZZZrZZZwZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZvZZZsld][TLDB6+ $(+,.0338<@AEINOU\cdjpZZZwZZZxZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZrZZZsZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZulddluz|ZZZZZZZZZZZZZZZZZZZZZZZZyZZZtZZZtnhb`[UPOPPQRZahiklmmkheeca`_^\ZYWTQQNKHGEB??<:875310/-,+*(''&%$##"!!!!!! #&)*.1569<?@CFHILORSW[_`dimnpsvvwwZZZzZZZxZZZyZZZvZZZxZZZwZZZwwvwz}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}||{zwsZZZpZZZqjea`bceeb`]\YTPOIC=<60+)$#')/6=?JU`bkZZZrZZZzZZZzZZZxZZZwZZZvZZZvZZZpmiga[UTNHB@7,#!"%)),/127;@AEJOPXaikZZZtZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZ~ZZZ{ZZZzZZZyZZZwZZZspomkiinZZZtZZZwZZZzZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtnmZZZw|x{ZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZwZZZoked^YTTRRRR[eZZZoZZZpZZZpZZZsZZZwZZZvZZZqZZZpmlkjiigfddb_]\YURQNKHGEB??<9764200.,*)('&&%$####"""!!!   #&)*.1569<?@BEGHJMPPSVYZ^cghmZZZsvvyZZZ{ZZZZZZ~ZZZZZZZZZZZZZZZ~ZZZ~ZZZ{ZZZz{~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZzywwwxyywusZZZtZZZnkggikZZZpZZZpkigfa\WVQLGF@:53.("! $+13=HSU]elmkiggc`]\WRMLHD@>6.&$ #&'*-016:?@EJPQ[eZZZnZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuZZZrpmjieb^^^_``cfijqZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZvZZZ~x{ZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxZZZskfe_ZUTSRRS\eZZZnZZZqsZZZwZZZxZZZvZZZtZZZpnnmlkjihgfda_^[XTTPMJIGDAA>;886421/-+*)('&%$######""!!  !!!!!!  #&))-1569<?@BEGHKNPQTVYZ^cghmZZZpZZZvwzZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZzZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|zxvvwwxxvuZZZtZZZtZZZnkhgjlZZZnZZZoljggb]XWRMIGB<760*$# ")/1;FPRZbijhgeda^ZZUPKJFB?=6.&%#&')-015:?@EJOQ[eZZZnZZZrZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZsZZZqnjgfc`]\]^``begipZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZ~y|ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZxZZZqkje_ZYWUST^hZZZrZZZsZZZyZZZ|ZZZ~ZZZZZZ|ZZZvZZZvZZZtZZZuZZZuZZZsZZZoZZZroonljhgda^]ZVSSPMKJHEBB?=;:7521/-+*)'&&%%%$$$##"!  ""#$%%&&''''((((('&%$$####""!!  !"##"  !!#$%&*.237;@@DHLMPTWXZ]`adhlmZZZrZZZuZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{{yywvuttssrZZZnnllifddfhjjigfea]ZYURNNJGCB>953+#!&(09BDLT[\\\[[XURQLFA@=9650+&%!$%(+./38<=BHMOWajlZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZrfdb`__``abdfhhhijjZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZy}ZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvZZZrZZZqjd^]ZWUU_jZZZwZZZwZZZzZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZyZZZ{ZZZwxZZZxZZZvZZZuZZZuZZZuZZZtZZZqZZZqnjgfc`\\YWUTROLLIGDC@=9952//-+))('&&&%%%$"!! !"$%&')**+,--./000010/-++**))('&&%$""!! !!""##$%''&%$$$$###"""&+/05;@AFKPQUZ^^adghknZZZqZZZqZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ}ZZZ|ZZZ{ZZZzZZZzxwwvutssqommjhfecbaaceggfecc`^[[XVTTRQOOLIED9/%#&-46>EMNOPQQOLJIC=7630-,*(&%"#&),-159:?EJLT\dfnZZZtZZZ}ZZZ}ZZZ~ZZZ}ZZZ}ZZZzZZZpeYXWWWX]bghknZZZrZZZsZZZpnmmZZZtZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZz~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZwZZZtZZZpicb]YVWalZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZzZZZxZZZtZZZtZZZnZZZnlieec`^^[YVVSPNMIEA@<8430.,+*)((('''&$#" !##%'))+-//023456888999742210//.-,,*(&&%$""###$%&''()******('&&#!#',-3:@AGNTV[_dehkZZZlZZZpZZZpsvZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZwrrrusssttttssroliheb__^^]]_acccbaa_^\\[ZYYZZZZYWTSG:.+"!')08?@CEGGFDBA:3-,)&$$$%%$ !$'*+.256<BGIPW^`gmZZZqZZZsZZZsZZZuZZZtZZZqeXLKLNQR[dmnZZZtZZZuZZZyZZZyZZZyZZZtpqZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZz~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZvZZZrjdb^ZVWbmZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ}ZZZzZZZyZZZwZZZrZZZsnkggeb``][YXUSPOKGCB>9542/-,+*))((''&$#" !#$&(**,.00235578:::;;;964322110/.-,*((&%##$$%%&'(()*++++++*)''$"#',-39?@GNTUZ_dehkZZZmZZZqqtvZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZurrrqssZZZuZZZtZZZuZZZwZZZtZZZsZZZsZZZtpliheb`__^]^_acccbaa_^]\[ZYYZZZZYWUSG:.+" %'.5<>@CEECA?>81+*'%#"#$$$ #&)*-145;@FGNU]^dkZZZsZZZrZZZtZZZsZZZsZZZocVJIKMQR[enpZZZtZZZzZZZ|ZZZ|ZZZyZZZursZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZtlfd`[XXcoZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZuZZZpoomkjigecb`^[[VQMLHC?>;8542/--+*))'%##!"$&&)+--0477:<>>@ACCDDDDA>;;::9999986411/-+*+,..0244310012333322.*&&')*+/49:@FLMRX]^bfjknpstZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|{{|ZZZzZZZ{ZZZyZZZzZZZwZZZzZZZZZZZZZZZZZZZZZZ{ZZZ~ZZZxZZZtpomkiigfedefggfdcca^\\YWUTSQPPMKHF<1'% &,2356776432.)$$"  ##&),-26;<CJPRX]cdeggf[ODCHNUWbmZZZvZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuohfa]YZeZZZoZZZ}ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZxZZZuZZZsZZZrZZZsZZZqZZZrommkigfb\WVRMIHDA=<9511/-+*(&$$! !"$&)),.0159>>ADGGIKLLMMNMJFCCBBBBCCDCA>;;85223577:=??<95579;;<=>=83..,*)),/239>CDJPUW\afgjmpqZZZuZZZwZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZyZZZtZZZuZZZrZZZtZZZqnllkkkkigedb_\[WSONKHEDA>:90'#(())))('&&#!"$%),017=DEJOTUX[]\RG==FPZ\hZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvZZZtZZZyZZZ{ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZpjhc^Z[gZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|}|ZZZzZZZ{ZZZ|ZZZxZZZyZZZuZZZtZZZvZZZtZZZrmgba\WSRNIED?:652/,,)'%$! "#$&),,.144:?DEILOPRTUVVVVVRNKJJJJKLMNNKHED@=99;>@ADHKKE@::=?BCEGIIC<651-)()+,-16;<BHNOU[abeilmZZZrZZZsZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZz{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZ{ZZZ|{}}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZ}ZZZ|ZZZ}ZZZ{ZZZxZZZusqpoZZZnlifeb^[ZTOIHC>:951,+% "%&,178=BFGLPTSI@77DQ^aZZZmZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}popqstZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrjid_[\gZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|}}|||{zZZZxZZZ{ZZZwZZZxZZZvZZZvoidc^YUTOKFE@;763/,,*'%$! "$%'*,-/255:@EFIMPQSUWWWXXXTPLLLLLLMOPPMIFEB>;;=@BCFJMLGA;;>ADEGIKKE>872.))*+,,059;@FLMSY_`dgklZZZnZZZuZZZwZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZywZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZxz{}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{xtsrpZZZpZZZmkheda]YXSMHFB=873/+)#!$$*/46:>CDHMQPG>66CP^aZZZlZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{onoqssZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZvlkfb_`kZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyyyyzzz|~ZZZZZZZZZZZZ~ZZZZZZxZZZrmlgb][VQLKE@:951-,*'%$!!$'(+.1258:;?CGGJNQQTX[[\]]]ZXUUTTSSSSRROLIIGEDDFHKKMOQQJB<;@EKLORUTNG@?:510/.--0478;?CDIOUVY]abgkZZZpZZZpZZZvZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|{zzzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ytsokgfb^ZYTPKJFA=<9521.*'&   #&)),0337;??:512>KXZeZZZqZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZpjjoZZZwZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtnmifcdoZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZzZZZuttuvxx}ZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtZZZrZZZqjdc]WQPJD>=83.-*(%%!"&*+.267:=@ACFHIKNQRVZ__abcca_^]\\[ZYWUTROLLLLMMOQTTUUVULD<<CJRSW[^^WPHGB=8741..035679:;@EJKOSWX^cijoZZZvZZZxZZZzZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ{ZZZvZZZsZZZsZZZwx{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|srle_^YSNMGB=<8521/-++)&#"!#$&'))(&$$ !$$%%%%#!!##&*--,,,-8DPR\enpZZZuZZZ{ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZtZZZpmhefpZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxpolighZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZvZZZtZZZqqooqsuZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZwZZZrkjc\VTNHBA:4.-+(%% #(-.27;<?CFFHIJJLOQRW]cceghhhgffecba^ZWVTQOOQSVVXZ\\\[ZYOF==FOYZ_cgg`XPOJE@?:40/124433227;@AEIMNU[bchmZZZsZZZqZZZtZZZuZZZxZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ{ZZZ|ZZZxZZZxZZZvZZZwZZZvZZZxZZZ{ZZZxZZZ~ZZZZZZZZZZZZzZZZtqpnlkkqtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZpZZZrh_WUOIBA;4.-+)'''&&%$"  "%(),/231/,,(# %)../000-*'&$" #'(3>HJRY`bfjnoZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ncba``bZZZqZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwpomjhiZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZvZZZsZZZsqpoqstZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZyZZZrljc]VTNHBA:4.-+(%% #(-.37<=@DGGIJKKMPRSY^deghjjiihhfecb_[WVTRPPRUXXZ\^^]\ZYPF==GPZ\aeihaZRQKFA@:510235543237;?@DHLMSY`afjZZZnZZZqZZZrZZZtZZZuZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZwZZZwZZZxZZZtZZZtZZZuZZZtZZZwZZZvZZZxZZZ{ZZZ{ZZZ}ZZZ~ZZZxZZZvponlkkqxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZrng^UTMF@?82,+)'&%%%%$#!  !$'*+.14431..*%! !!&+/012330,))'%#"!%'1;FHOV]^bfjkZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzla`__`bZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxqpppqrZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZzZZZvZZZvtsrqrZZZvZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZyZZZunhg`YSQKE?>83-,*'$# !%)./38=>BFIJLNPQTX\\bhmnpZZZsZZZrZZZtZZZqZZZpooljgfa\WVVVWW[_bcegihe`\[RJCCMWabglZZZrZZZqh`XWPHBA>;889;<====>?@AACEGGKPTUX\`aceghlZZZnZZZrZZZuZZZsZZZtZZZxZZZuZZZuZZZsZZZoZZZoonlllkkklmnnZZZqZZZrZZZtZZZqsssssZZZrZZZsZZZuty|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsjh_VMLE=750*%$#"!!!!  $'+,03779:<<;:9851-,(%!!  !!!  #&',278;>AA?=;;96430,(('&%$! '.57=DJKPTY[clZZZrZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZrf[Z]aegZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{rrtZZZwZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZzvrnnnopqZZZwZZZ{ZZZ|ZZZZZZzZZZzZZZxZZZsZZZnjdc\VONHB<;61,+(%"!"#'+/049>?CHLMPSVW\`eflZZZoZZZtZZZxZZZwZZZzZZZ~ZZZzZZZ{ZZZyZZZuZZZxZZZuolkd]WWY[^_chmnZZZoZZZsZZZsZZZtle^\UOIIS]ginZZZuZZZvZZZuZZZqg^\TKCBA@??ACDEFHIIGECCCCCCDFHIKNQRUX[[^addddddcbbbbbbbbbcccdddfghimqwvZZZwZZZ|ZZZ~ZZZ|ZZZ||{{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtlcaXNEC<4-,'"!#&',167<@DEDDCCCCDC@<983.)())**)(''''''%$"! "',-39?@EJNOONNMKIFE@<76420/+'#"!%&+167=CHJRZcdkZZZoZZZwZZZxZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZyZZZxZZZvj_UU[bjlZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZrZZZtZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZtlkhecchnZZZqZZZtZZZrZZZqZZZpZZZpkf`_XRLKE>973/+*'$ $%),/05:?@EJNOSX\]biZZZmZZZnZZZwZZZ{ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZxZZZsZZZpZZZog_WW[`eflZZZsZZZvZZZzZZZzZZZzZZZ~ZZZ|ZZZti_]XSOOYcZZZoZZZpZZZsZZZ|ZZZ}ZZZZZZtmdbWMCBCEGGIKLMPSUUQLGFDA??>>>>?ACDGKOOQSUUUTSRSTTUVWXXY[\\\\\\]^_`hoxZZZ{ZZZ~ZZZZZZZZZZZZZZZ~ZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvne\ZPG><4,$#!"$$&),-4:ACHMQROMJJKMNNKHDC=600135531/..--,*(%%"$+129@FHNU[\^_`_]ZXWQKFEB>;;61,+%$%+189AJRSY`efhkmmopZZZqZZZtZZZqpnmcYPPZdZZZoZZZpZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuZZZuZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZtljgdbbglZZZqZZZrZZZsZZZpZZZoZZZmjd_^WQKJD>873.**&# %&)-016;?@EJOPTX\]ciZZZoZZZpZZZvZZZzZZZZZZZZZZZZZZZZZZZZZ~ZZZxupZZZmg_XX\afgnZZZtZZZ|ZZZ|ZZZz}ZZZ|ZZZ}ZZZsi_^XTPPZdZZZmZZZqZZZuZZZ}ZZZ~ZZZ}ZZZumdbXMCBDFHIJLNORUWWSNIHFCA@??>>?ABCFJMMOQSSSRQQRSTUVWYYZ\]]]]\\]]^_hpZZZxZZZ{ZZZ~ZZZZZZZZZZZZZZZ~ZZZzZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxnd[YPF<:3*#" "$%&(+./6=DEJOTTROLLMOQPMJFE?82235775300//..+)&&# %+139@GHOV]^_abb_]ZYTNHGDA>=83.-& !"(/56>FNOV\abdgiikmZZZmZZZoZZZpmlkbYPPZdZZZoZZZpZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvomifbbdfghfecc_\XWRMGF@:42.)%$#! "()-0349>BCHLQRUY\]bhmnZZZu{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvqpic^]bgmnZZZuZZZ{ZZZZZZ~ZZZuj`^ZVST]gZZZpZZZrw{ZZZ|ZZZslb`VLCCFJNNQTVWZ\__^\[ZWTQQOMLLKJIHIIIJKMOORUWX[]`acfhikmooljhgecabirZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrg\ZOD970(! !!$')*,/1258;<CJQRW\aa\XSSVY\[WQLKFA=<=>@?=;88765431/.*'#" #*028?FHOV]^adffecaa\XSROLIHC<65/)#" "'+,28>?DINORUXXZ\^^_`a`[WRS[dmoZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZqZZZplgcba`^^\YWVUSRQMHCB<6/.)$ ! %+,0478<AEFJOSTVY\\afklZZZsZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{rqlgcdhnZZZrZZZuZZZ{ZZZZZZZZZZZZZZZ}ZZZvj`_\YWXajZZZtux{~ZZZ{ZZZsj`^ULCCHNSTX[^_bdggikllifcb`][ZWSPOLIFFGIJKQX^_dhmnquy{||wuqnieekqxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZui^[OC75-&!!$&()-0458;>>BEHIPW^`einmga[[_cgf`YRQNKHHHHHHEC@@>=<<:9762.*)$ ")/07>EFNU\]bfjjjihhda^][XUTMF?>81,+)'%%$#""! !"&*./37;<@CGGILMNPSUVUUUV]dklZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZtZZZtojdc_ZVURNKKKKKKGC@?82+*% !#$$!!(./37;;?DHIMQUVXZ\\`dijZZZrZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtZZZpnlijoZZZvZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuka`^\[[dmZZZvwy|}ZZZ~ZZZsh^\SKDCJQXZ^bfgilnoZZZsZZZwZZZ~ZZZZZZyZZZvZZZsZZZtZZZrnjid^XVPJDCDEFHQ[egmqyyZZZZZZZZZZZZwqhhnv|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyl`]OB52+$!#&'*-126:??CGJKNRUW]elmZZZrZZZxZZZyZZZ{ZZZsjcbgmZZZqZZZsi`XWUTSRRQPPMJHGFECCBA??:50/("!'-/6=CELS[\bhmnnnnnljihfc`_WOHF@:4310..-,++)'%$  #&)).378:<>?CGKLPTYZ_dikZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZyZZZvrsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZwpjed_ZVUQMJJJJJIFB?>71+*$ "#%$!"(./37;<@DHIMRVWY[]]aeikZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuZZZsomkkpZZZuZZZ|ZZZzZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwka`^\[\emZZZuwz|}ZZZ{ZZZth^\SKDDKRYZ_chhkmpqZZZtZZZyZZZ~ZZZZZZ~ZZZ|ZZZvZZZvZZZrqnmg`ZXRKEDDEFGQ\fhnvzZZZ|ZZZZZZZZZZZZZZZZZZZZZzpiinuZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzma^PB53+$"%(),0459>BCFJNNRUYZahopZZZuZZZ{ZZZ}ZZZzZZZslddinZZZvZZZrkbYXWVUUTRQQNLJIHGEEDCAA<610)#!'-.5<CDKSZ[aglmnnnnmljjgebaYQIHB<653100/.--+)'&" #&',0568:==BFKLQVZ\`ejlZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ{ZZZvZZZtqrZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZyZZZupkid_ZYTPLKIHFEA=984/+*$!$$%&''# "',-159:>CHIOU[\_cfgknZZZqZZZuZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ|ZZZuZZZuZZZsZZZpZZZwZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyndca`_`hZZZqZZZwz|~ZZZ}ZZZvlb`XPHHNTZ[aflloZZZtZZZwZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZ|ZZZumfe]TMKIGFFPZdfnuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzukkqyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZuifWH96.&"$%+067=CIJOSXYZ\^_beijZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZzZZZrllZZZrZZZuZZZ}ZZZ|ZZZrh^]]^`_[WSSSSTTSSSRPLIHB<64.("!#%'(/5<=DKQRX^cdgjmmopZZZrZZZrnlih`WONHB=<;::9::::8643/*&%!!"'-347;>?FLSTZ`fglZZZpZZZtZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxqpooooZZZx}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZuZZZpZZZmid^]XSNMIEBA<8330-*)%  $()))))%""%)*.267=BHIQX_afkZZZrZZZoZZZuZZZxZZZzZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZyZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZsfedcbckZZZuZZZ}|ZZZZZZyofd\TMLQUZ\biZZZnZZZqZZZtZZZxZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZuZZZqh^USNJEFOXbdmx~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmmsZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠȠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZrZZZp^M=:1( "&*,4<DFNV^_djZZZnZZZqZZZnZZZnopZZZsZZZwZZZzZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZtZZZuZZZyZZZ}ZZZZZZZZZ{ncbdgjjc\UUWZ^^_`a`\WRPIB;93-('%#"#)/56<BHIOTZ[`fklpsZZZyZZZwZZZsZZZtZZZpZZZng^UTNIDCCCDDEFGGFCAA<721+$$*026;@AJS\]dkZZZrZZZsZZZvZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxphhikmmZZZr{{}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZsZZZtZZZnhca\VPOID>=83.-,+*)%!#(----,+'# "$'(,045;AGIR[celZZZsZZZzZZZ|ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuihgfffnZZZxZZZZZZZZZyZZZukiaYQQTW[\dkZZZrZZZux|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuh][TLFFNV_blyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxpouZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZwdR@=3*!!%*02<GRT^iZZZtZZZuZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZthgkZZZpZZZvZZZujaWW\aghjmZZZpZZZogaZXPG?>93.-'"#(.05:?AFKPQYaijZZZrZZZvZZZzZZZ}{yZZZtZZZumd[ZTOJJKLMNPRUUSQNNID?=4+"  '.06<BDNYdfZZZkZZZuZZZ~ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZtnga`dhllqvw{}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZwZZZtZZZoicb\VPOIC=<72-,,+*)&"$)....-,($ "$''+/34:@GHQZcdkZZZtZZZyZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrihgffgoZZZyZZZ}ZZZZZZ{ZZZrljbZRRTW[\dkZZZsZZZuy}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}uj_]UMFFNV_aluZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwppwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠŠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠РZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZvdR@=3*!!&+13>ITVakZZZvZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvihmZZZsZZZxZZZxlbXW]cijloZZZqZZZrjc\ZRIA?:4/.(""'-.39>?DINPX`hiZZZoZZZxZZZ~ZZZ{{zZZZzZZZvnf]\VQLLMNPPSUWWUSQPKF@?6,#" '-/5;ABMXceZZZkZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZsmgaaeimnrwwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ|ZZZvZZZsZZZrZZZolga`ZTNMG@:94/*))((('%%%*0566554/)$$$%&&(+-.39@AIQYZagmnZZZsZZZsZZZuZZZxZZZxZZZyZZZxZZZvZZZxyzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZsjiiiijZZZrZZZyZZZZZZZZZZZZZZZxonf^WVWXZ[bjZZZqsx}ZZZZZZZZZZZZZZZZZZZZZxnecZRJJOU\]huZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~styZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠZZZZZZZZZZZZZZZZZZZZZ̠̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠǠʠʠ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvol[J:7/("")08:DOY[eoZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmmZZZpZZZwZZZ{ZZZ}ZZZsg]\bhnoZZZsZZZxZZZ{ZZZyZZZrlec[RJHA;43-'!!#%((-278=BHIQYaciZZZoZZZyZZZyyzzZZZzZZZrmfe`[WVXY[\^_aa^[XWQJDB:2*)&" #&'+/35>HQS\dmnZZZsZZZvZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZxZZZsqponnnZZZtZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZxZZZvZZZuZZZvZZZtZZZrZZZrZZZpommid_^XRLKD>761+&&&&&'()+,17=>==<<5/)('&%%&&''-289@GNPU[`aehlllmmmpZZZqZZZwZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZrkkkklmZZZtZZZ|ZZZZZZZZZZZZZZZzZZZrZZZsjc\[ZYXYaiZZZnZZZtw}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|tjh`WONQUXZdozZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxx~ZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠ̠ǠZZZZZZZZZZZZZZZZZZɠƠZZZZZZZZZZZZZZZZZZZZZĠƠǠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzoebRB31,'##,5>@JT^`iZZZsZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|rrZZZwZZZ}ZZZZZZZZZxmbagmZZZrZZZvZZZwZZZZZZZZZZZZ~ZZZwnld[SQIA:82,&%$#"#'+016<ACJRZ[cjZZZqZZZqvz}}ZZZyZZZwZZZpZZZojfbaceggijkkhd`^WOGE?821/,*)'%""! !#&'/7?AJS\^bfklZZZvZZZZZZZZZZZZZZZukjjkmnrZZZwZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ|ZZZxZZZvrqnkhhhhhhhiiiea]\VPJHB;43.(###$%%)-139?DEEEDC<4-,)'%$#"!!&+128>DEJOSTX\```abbgmZZZrZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZuZZZslllmopZZZvZZZZZZZZZZZZZZZZZZ}ZZZyZZZung`_\ZWX_gZZZnZZZrZZZw}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxnZZZle\TSSTUWakvZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|zZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZΠƠZZZZZZZZZZZZZZZZZZ̠ϠРРΠ̠ɠɠǠZZZZZZZZZZZZZZZZZZZZZàƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsg[XI;-+(%$%/9DFOYbdlZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZyZZZZZZZZZZZZZZZZZZrgglZZZsZZZxZZZxZZZZZZZZZZZZZZZZZZ~ZZZwZZZwmd\ZQH?=71+)%!!%)*06;=DLSU\dkmZZZuZZZzZZZZZZ~|ZZZzZZZyZZZvZZZollnZZZrZZZpZZZqZZZrZZZsZZZuZZZwZZZpkfe\RIHC>:986540,('" &-/8BKMQVZ\gZZZrZZZ~ZZZ~ZZZsdXW]cikZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZ{ZZZwZZZsqpmjgfffffggggc`\[UOIHA:32-(###$&&*/34:@FGFFED<5.,*'%$#"!!%*/16<BCHLQRVZ^^^_``fmZZZuZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvZZZsmmmnopZZZyZZZZZZZZZZZZZZZZZZZZZzZZZvpiba]ZXX_gZZZpZZZrZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxqZZZmf^UTTTUV`ktvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZ͠ƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtfZXI:,*(%$%/:DFPYcemZZZvZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZyZZZ~ZZZZZZZZZZZZZZZuhhmZZZtZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZyZZZvof^\SI@?82,+&! $()/5;<CJRS[cjlZZZrZZZwZZZZZZ~|ZZZ{ZZZxZZZvZZZrooqZZZsZZZvZZZuZZZwZZZxZZZxZZZvZZZolge\SJHD?;;98762.)(#$*,5?HINRWXdZZZrZZZ{ZZZzZZZlbUU[aikZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZxZZZsZZZqkffca^^]]\\YVSRMHCB<5/.+(%%(+./49>?DHMMKHFE>70/,)&&$#!"%(+,16;<@DIJNRVVXY[\ckZZZsZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZsZZZrsrrrZZZ{ZZZZZZZZZZZZZZZZZZ|ZZZvZZZrjid_[[aflnZZZtZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZ~wsme]\YWVV`kwyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ҠϠʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuj`]M=-+(&%&/9BEOZdfnZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxmlZZZqZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvnfd[RIG@921*$ $'(.39:AHNPW^efmZZZtZZZyZZZ{|~ZZZ~ZZZ|ZZZzZZZzZZZZZZZZZ~ZZZZZZZZZ}ZZZ{ZZZ}ZZZtmed[RJIGECBAA@?;621,&!!"&',278=CHJUallbXNNV_hjZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZ|ZZZtmge`[VVTSQQNLIIEA=<61+*)('(,167>DJJNPSSOKFE?932.+('%$##$%''+0458<@AEJNOQSVWajZZZtZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZwvtu{ZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZpZZZoke__bfjkZZZoZZZwZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ytlec^ZVW`kuvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZӠנԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvofcR?.,)'&'/8ACNZegpZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~qpZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvmlcZQPH@87.& #'(-278>EKLSY_agnZZZuZZZtz~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxmdbZRKJJJJJJIHHD?;:50,+'# !""$%&'-39;GR]]VNGGR]hjZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyogf^WONLIFFDBA@=:761,''()*+18?@GNTUWXYXSMGF@;651-))'%$$####&*-.1589>BGGKNRS^iZZZvZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZwZZZu|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZxZZZqjcbdfijnZZZtZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzulkd]WXakrxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠƠZZZZZZZZZZZZZZZ۠٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZʠϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZrliVB/,*(''/7?AMZfhZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZskbZXPG?=3)!#&',156<BHIOTZ[bhnpZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZznb`YRKKMORRRQQPLHDC?:650*%$#!$+-8DNOJEABNZgjZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxphf^WONKHEECA??<9650+'&()+,2:ABIPVWXYYYSMGFA<762.*)(&$$##"#&),-0478<AEFIMQR]hZZZuZZZsZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZpkdcegjjoZZZrZZZxZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{wnme^XXakvZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZڠ٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠ̠ϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZrliUB.,*(''/7@BNZgiZZZpZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtZZZslc[YQH@>4) !#&',056<AGHNTY[agmoZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyncaZSMLNQTTSSRRNJFEA=872,'&$"")+6AKLHD@AMZgjZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtmkd\UTPLHGDA==9510-*''*-029@HIOU[\[YXWRMGGDA>=84/.,)'&%$##%')),/238<ABEIMOW`hjoZZZrZZZxZZZ{ZZZyZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZvngfjnZZZuZZZuZZZvZZZwZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|uZZZvme]]cjqZZZqZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZՠڠנZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxZZZyZZZwZZZvZZZtZZZplga_N=,*)('(1;EGTampZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}vtme^\TLDA7,"!"#%&*/34:@EGLRXY_flmZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZsiga[VVX[]]\YWWUSPPKGBA;50/,(%$"#+4;<>?@BMYdfoZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZpZZZrib[ZUPJIE@;:61-,*)'(,168?GOPV[``]YVUQLHGGFED?:430,)('%$$$%%&(+./38<=AFJKQW]^chlmnpZZZrZZZpZZZvZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZrjjpZZZxZZZ}ZZZ{ZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}skbbejopZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠؠؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmljhfea[VTF8*(''()4?JMZgZZZuZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|vtnga_WOGE:/$###$%)-238>CEJQVX^djlZZZrZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyonid``ceggd`]\\\[[VQLJE?984/+*#!&,-3:@BLWachnZZZuZZZvZZZxZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZuZZZsZZZnha`ZTMLF@:93.)(((()/6<>FNVW\`dd_YTSOLIHJKLLF@:940++)'%%$#"#%'**/378=BGHLOSTX\`abdfglZZZqZZZxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZummZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ogfgilmZZZrZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtca_\ZYUPKI>2'&&')*6CPS`mZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyutnicaZRJH=1&%$$$$(,017<BCIOUV\cijZZZrZZZvZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZvZZZsnkkmZZZnZZZrZZZplgbbcdee`ZUTNHBA<610')5@BKT]^behhjlnoZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZ~ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZvZZZohbaZTNLF@983-(((()*07>?GOWX]aed_ZTSPLIIKLNMGA;:51,,*(&&%$##%')*.278<BGHKORSW[_`bdfglZZZoZZZvZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZunnZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~rhghiklZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrb`][XWSNIG<1'&&')*6CPSanZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZsZZZqnhcaZRJH=1&%$$$%(,016<ABHNTV\bhjZZZrZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZuZZZvpmmoZZZpZZZsZZZsniddefhgb\WUPIDB=821('3?AJS[\`befgijlZZZt|ZZZZZZZZZZZZ~zzxZZZxZZZvZZZwZZZuZZZ{ZZZzZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZuZZZtnga_YRLJD>861,'&)+./6=DFMT\]`cfe`[VUSQOOPQRRLGA@;7321/..+)''''''+.239?EFKPUV\afgilnnZZZssuvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxppZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZukjjjklZZZqZZZ|ZZZZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ob`\XTSMG@?7/'&'()+7DQTanZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvpnic^\UNGE;2)((()*,/226;?@EKPQW]celZZZpZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZwZZZzZZZ~ZZZ~ZZZ~ZZZzZZZtpopZZZqZZZrZZZnjd^\VOIGA;54+#"+46>EMNQTVWXY[]cknZZZZZZZZZZZZ~ZZZ{ZZZtZZZuZZZqolkmoZZZsZZZqZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvsZZZqle_^WQJIB<65/*%%*/45<CKLSZ`acegfb]XWVVUUVWWWRLGFA=9987663/,+)'%%(+./5<CDKRYZagmnZZZoZZZtZZZuZZZxvuttxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZqZZZrZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxmlkkklZZZsZZZxZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxmba[VPOG@871,'''(*,8ERUanZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZskjd^YWQJCB:2+*+-//12346:==BGLMSY_`gnZZZvZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ{ZZZ{ZZZxZZZ|ZZZ{ZZZtlec\UNMF?87/' #)+18>?BEGHIJKMRYWZZZZZZZZZZZZZZZZZZyZZZvZZZsZZZolhccdfhinZZZtZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~}yupojd^\VOHF@:43.)$%+29;BJQRY_defgggc^ZZZ[[[\\\[VQLKGD@@???>:510,'##%')*29ACKT\^fmZZZvZZZwZZZwZZZ|ZZZZZZ~ZZZ|ZZZxZZZtZZZsZZZvZZZxZZZ}ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwonmlklZZZpZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZyZZZqjcaZSMKB90/,*''()+,9FSUamZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ààZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZsngf`ZTSLF@>82-,/255555579;;?CGINTZ[biZZZoZZZpZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrkjb[SRJC<:3,%#%*/03699:;<>BHAZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZwZZZpZZZplgcbcefgmZZZsZZZxZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|xtpoic]\UNGF@:43.)$%+2:;CJRSY_eefghgc_[Z[\]]]\\\WRMLIEBAAAA@<721,($#%')*19@BKT\^fmZZZtZZZwZZZy}ZZZZZZ~ZZZzZZZxZZZuZZZrZZZuZZZyZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZuZZZvZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzonmlllZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZzZZZrjb`ZSLJA8/.,)''()+-9FRUalZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZààZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZsnhf`ZTRLE?=82--0366666679;;?CGHMSYZahZZZoZZZrZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvmkd\USLD=;4-&% #(-.036679:<@FAZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZuZZZxZZZrkeedcbcglZZZrZZZsZZZxZZZzZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|{wrnlf`YXQJDB=710,)&&,3:<CKRSX^ccfhjjgda`aabb`^\\XTPPNMLLKKJJD?982,'&&'((/5<>FOWYahZZZnZZZpZZZv|ZZZZZZ}ZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZvmlmmnoZZZvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxof]\TLEC<5.-+)(()+./:EPR\gZZZtZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàƠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwpog^VTLC;:62..38==========?ADEJOUV\cijoZZZvZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZuZZZskd]\TLEC<5.-(#"&')+-./0037=7ZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ}ZZZwnihda^_behimZZZpZZZsZZZxZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{zupkjc\UTMG@?:4/.+)'(.4;<CKRSX\`aeillkiffggggd`]\YVTTUUVVVUTTMG@?81*)(''',279AJRT[cjlZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvkklnpZZZpZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZulbXVNE=<72-,+)((+.12;DMOXbkmZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠʠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvmcYVLA7631007>DEEEEDCA??@@ABFLQRW]cdhmZZZpZZZqZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZxZZZplfd]UMKD=65/*%$! "$%&&''*.5-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZrlke`[[\^`adhkloZZZrZZZvZZZwZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~zytnih`YRPJC=<72-,+)))/5;=CKQSVZ^_diZZZponmllllmlgb]\ZYWX[^aa`_^]VOGF>5-,*(&&*.34<EMOV]egZZZpZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsjilosZZZsZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠŠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZzZZZ}ZZZ|ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZti^SQH?652/,,+*)),045<DKMU]egoZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrg[XL@432112:CKLLLLLIEBB@???CHMNSW\]bfjlZZZqZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}}~~ZZZZZZZZZZZZZZZ}ZZZ{ZZZqnle]USLE><71,+&!"'.#ZZZZZZZZZZZZZZZ~ZZZxZZZrlkf`[[\^_`cfijmZZZqZZZuZZZtZZZzZZZ{ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{yxsnig`YQPJC=<72-,+*))/5;=CJQRVZ^_diZZZmonmmmmmmmhb]][ZYY]`ddcb`_XPIG?6.-*(&&*.23;DLNU\ceZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~tiilptZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ|ZZZ{ZZZ}ZZZ}ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZti]RPG>541/,,+*))-156=ELMU]efnZZZxZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠ̠͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZofZWK?422223<EMNNNNNJGCCA@??CHLMRV[\`eijZZZpZZZuZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZyZZZzZZZ}ZZZZZZ{ZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZ{ZZZtnme]UTMF?=83-,'#"&.#ZZZZZZZZZztnmid__^]]]^`aadgijmZZZsZZZsZZZrZZZvZZZvZZZxZZZwZZZwZZZ|ZZZzZZZyZZZ}ZZZzZZZ|ZZZ}ZZZyywvrmigaZTRLE?=83/.-,+,17=>CHMNRV[[`eijklnnnnnmjfbbbbcdinZZZtZZZqZZZrmjh`WNLD;32.+''*,/08?GHOW^_iZZZqZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvjimrZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZuZZZneXLJB:320.-,,++,29@AHOVW]bhjZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠΠZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZumkbXNLD;43579;DNWXXYYXSOJIFDBBDGJJNRVWZ]abgmZZZqZZZtZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZxZZZqZZZqZZZtZZZrZZZuZZZwZZZwZZZ~ZZZ}ZZZ~ZZZ~ZZZyZZZyZZZxZZZqnjib[TRMGB@<732.)$$  !"#####'*0$ZZZZZZZZZzupokhdc`^[[ZYYY[]_`cfijkmnoopZZZqZZZnZZZrZZZqZZZsZZZqZZZustsplihb\VUNGA@:510/.-.39?@CFIJNSXX\`dehknnnnnnljhhjlnoZZZvZZZzZZZZZZZZZ}ZZZwZZZuZZZpg]SQI@972-))*+-.4;ACJQXZbkZZZuZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtkjotZZZxZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠʠˠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZxZZZuZZZuZZZtZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZ{pn`SFD=711/.----./8AKMSZ`aehlnZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠ͠РZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZtZZZslcZYQJBA=8448<ACMWabccdc]WQPLIEEFGHHKNQQTVYZ_diinZZZrZZZtZZZzZZZ{ZZZZZZZZZZZZZZZ~ZZZ~ZZZ|ZZZtpjjklnnZZZpZZZsZZZwZZZwZZZtZZZsnmkhed^XRQLHDC@<873/+*%"&&'((((((,.4%ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~zvrqnkhgc^ZYVTRRSTUVY\_`bceeefffghiiknZZZoZZZonkhgb]XWPICB<73210/05;ABCDEFKPUVY\_`ejnoonnnnmmnZZZoZZZsZZZ{ZZZxZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZocXVNE><60+****+16<=DKRT\dlnZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZwlkptZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZrZZZroliinZZZrZZZyZZZ}ZZZZZZZZZZZZZZZZZZumj\N@>940//.-../12>JVX^ejkmnpZZZpZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZvZZZrnhf\RHFA<776556<BIKU`klmnZZZoZZZof_XVRMIIHGFFHJLLNPRRV[_`dgklpZZZrZZZxZZZvZZZxZZZxZZZwZZZtoibbcdffikmmjgedca`_ZTONKHFEB@=<9510)#!',--......127'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}zvrqnkhhc_ZYWTQQRSTUWZ^^`bccccccdefgjlZZZpZZZnljggb]XWQJCB=83210006;ABCDEFKPUVY\_`dinnnnnnnnooZZZsZZZvZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZqeYWOG?=71++***+05;<CJQS[cklZZZtZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠZZZZZZZZZZZZZZZZZZZZZZZZymlpuZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZàϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ϠӠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZvZZZqokgglZZZpZZZuZZZzZZZZZZZZZZZZZZZZZZvli[M@>9400/.../023?LXZagmmnoqZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZvZZZojecZPFE@<777778>DKMXbmnopZZZrZZZqhaZXTOKJIGFGHJLLNOQQUZ^_bfjjnZZZqZZZtZZZtZZZwZZZvZZZvZZZunga`acdegijjhecba`^]XSNMJGEDB?<<8510*#"(..//0000/249'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{zwsppmjhgeca`]YUTTTTTUVWWXXYYYYYZZ[\\_acdcb``]ZVVPKFD?94320/05:?@BDFGLQWWZ\^_bfijklnnrZZZwZZZyZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxk`^VMDB<5..,+**.268>FMNW_gioZZZvZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZ}qpruZZZyZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ϠZZZZZZZZZZZZZZZZZZZZZZZZРؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ|ZZZunihjlnoZZZsZZZzZZZzZZZ|ZZZrkcaWMCB=8431/..26:<IUbdkZZZoZZZwZZZvZZZtsqZZZrZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwohfa[UTPKGFEDCCDDEFLRXZdnZZZuZZZvZZZwZZZzZZZwZZZzZZZtkdc]XRRPNMMNOPPPPPPTX\\_befhknnmlkje_ZYYZ[[\^_^][YXWVTTOJEDA>;:75220.,,)&#$).345799998;=A4ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}xwtqonligghhihc^YXVUTSSRQQPPOOOOPPPQQQTVXXXYYYWVTTPLHGA;5521//49>?BEHINSYY[]^_`ceehkmnZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZshf\SIH@921.,**,/23:AHJR[celZZZtZZZzZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZvtsstZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZՠ٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZtjihgffhkmmgaZYSMGFA<8741./5<CER_kmZZZwZZZzZZZZZZZZZ{ZZZwqrZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsZZZrh`XWQKFEFGHHKMPPRSTUZ`egZZZnZZZzZZZZZZZZZZZZZZZZZZZZZzZZZunmga[ZXVTTTTTSRQPPSVZZ\^aaceffeca`[WRRRQQQRRSRQPNNMLJJE@;:7300-*((((((()*+/489<?BCBBBDFJAZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZzZZZwZZZsrpmmkiggjmZZZqZZZnjc]\YWTTQOLLJHFFFFGGGGGGIKMMNPQQRRRROLIHB<6531//38<=AEJKPV[\]^^__``aeimoZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwomcYOME=540-*)*,-.5<CENW`ahnZZZvZZZvZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZwZZZuZZZrZZZqZZZqZZZtZZZsZZZrZZZwZZZvZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyyurqrZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZàZZZZZZZZZԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtlkfb]]^_`_[WRQOMJJE@<;72//8BLN[gZZZtZZZuZZZ|ZZZZZZZZZZZZZZZzrrZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ àZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzpfd[RJHB<77=DJKQW]^_acdhmZZZpZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZvZZZqicb_][[ZYXWURPPRUXYZ[]]^_`_\YVVROLKJIHHHGGGFEDDCB@@;621-*&&# !#$(,126:>?CGLLLKKMOSNZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZxZZZtZZZrpnnkighkoZZZsZZZple_^[XUUROLLJHFFFFFFFFFFHJKKMNPPPQQQNLIHB<6531//38<=AFJKQV\\]^___``adimoZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwpndZPNF>651-***+-.4;BDLU^`flZZZqZZZvZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZxZZZuZZZqZZZoZZZoZZZrZZZnZZZqZZZoZZZqZZZvZZZxZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzwurqqZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZĠàZZZZZZZZZZZZԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvmkfa]\]^_^ZVRQOMKJEA<;73009CMO[hZZZvZZZtZZZ|ZZZZZZZZZZZZZZZ|rrZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxmcbYPHFA;77=DKMSY_`bdefkpZZZvZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZqkdca^\\[ZYXVSPPSUXYZ[\\]^^^[WTSPMJIHGFFEEEEDCBBA?>>950/,)&%#  "$%).348;?@DIMNNNMOQUNZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZ{ZZZyZZZwZZZvZZZtpmmZZZrZZZxZZZ}ZZZ|ZZZuohgda^^ZWTTRPOONMLLKIGGGGHHHIIIIIJIGECB=94310//38<>BGLMSY__bdffedddfilnZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzpnf^VTMF?=83.-,,,,16;<CKRSZ`fglZZZpZZZwZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZyZZZrkjhfddeeffhjllZZZpZZZsZZZzZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzyvsqZZZpZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠϠZZZZZZZZZZZZZZZZZZZZZZZZZZZ۠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}qojd___`aa]YVUROLKE?998777>FNOYclnZZZwZZZZZZZZZZZZZZZ{ZZZwZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZrZZZph_WUPJEDB@>?FNVW]cijkklmZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZulkgd``_^]]ZWTTVXZZ[[\\ZXVVQMIHFCAA?>====<<:97654331.+++++**)((*-/06;@ACEGGLPTUWYZ[\]VZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZrZZZuZZZxZZZZZZZZZZZZ~ZZZzZZZrZZZonkhgd`]\[ZYYWUSSPMIIGFEDDCCCBBBB@>=<95210///48=>DIOPV\bcfjmnljggijlmZZZrZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzqoib\[TNGE?810/-+,.034:@FGMSYZ`fkmZZZsZZZzZZZZZZZZZ|ZZZwZZZsZZZqkd]\[ZZZ[\]]_`bbfimnZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠˠZZZZZZZZZZZZZZZZZZZZZ~ZZZ}xurZZZpZZZ~ZZZZZZZZZZZZZZZZZZà͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZtmgbabccc`]ZYUQLKD=769;>?DINPV]dfoZZZvZZZZZZ~ZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZwZZZrnha`YRKJGECBDEGHPXabhnZZZsZZZuZZZtZZZqZZZrZZZrZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZsZZZtniedccbb_\YYZ[\\\\[[WSNMHC>=;988765444441.,+**))((''*-00123369<=CINOOOOOSW\]`dghfe]vyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZ{ZZZ}ZZZyZZZtZZZsZZZomieeddcc`]ZZUQLKHEBB@?==<<;;:87641//////49>?EKQRX^dfkZZZrZZZvZZZvZZZqolkkkllZZZrZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~qpkgcb\UOME=541.+++,,-15:;@FLMT[acjZZZqZZZwZZZyZZZungf^WPOOOPPQSUUVXYZ\_bcioZZZvZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàΠZZZZZZZZZZZZZZZZZZ|zvsvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZࠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZqkedefffda^]XRLKC<449?EFILOOSX\^hZZZsZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZyqked^XRQKE@?@@ABFKPRZckmZZZsZZZvZZZ|ZZZ{ZZZzZZZ{ZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZzZZZtoihgggfc`]]]^^^]\[ZTMFE?93210//.-,,,,,,(%!! !"#$*0679;>>AEHIPV\\ZYWW[_cdiZZZmZZZrZZZtZZZolevxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZ{ZZZxZZZvZZZsokhggffec_\[WRNMJFCCA?>==<;;986631/////059>@EKQSY_eflZZZoZZZuZZZvZZZupmmmmmnZZZqZZZzZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~rqmied]WPOG>652/,,,,,,0489>DIKQX_ahZZZpZZZxZZZxZZZskec\UONNOPPRTUVWXZZ\_bbhmZZZrZZZsZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyvssZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwZZZplffffgfda^]WRLJC<55:@FGJLOPSW[]gZZZoZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZsZZZsnhba[VPOJD??@ACDHMST\enoZZZtZZZ{ZZZ}ZZZZZZ|ZZZzZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZvpjihhggda^^^^^^]\ZYRKDC=7210/..-,,+,,,+($! !"$%+178:=@@DGKLRX^_][YZ]aeflZZZqZZZwZZZuZZZrnersZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZvZZZtZZZqZZZuZZZqZZZrZZZqnjgfb^ZYVRONMKJIGECB?<8852//02449>CDINSTZ_efmZZZrZZZ{ZZZ}ZZZxZZZyZZZvZZZzZZZwZZZ{ZZZxZZZyZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZwZZZrome]USKC;:8755310012458<@AHNUV]dkke`ZYVTRRTWZZ]`ccdfggggggikmnZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZsZZZrZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠̠ҠؠݠݠZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrnmjhed`ZUTPKGFB>;;@EJKMOQRUY]^iZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZoigb]XWUSQPNKIILOSSWZ^_gpZZZvZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvpomkiheb`_^][[XVSQIA98520//...--,,--.-+)&&&&&'(*,-16:;@EJJNSWX]bghhhhiloZZZpZZZtZZZvZZZxZZZ|ZZZ|ZZZyrlmpZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZZZZ~ZZZ}ZZZ}ZZZ{ZZZuZZZqZZZqmjffb_[ZYXVVRNKJE?:962//2589>CHIMQUV[`dfnZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZyncYWPHA@????;84421113578>DJKRX^^YTONQSVW[`deimZZZrZZZqZZZrZZZsZZZwZZZvZZZrZZZnnmkjhimZZZtZZZxZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠʠˠѠ֠ڠZZZZZZZZZZZZZZZZZZZZZŠʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZvoidb[TMKHDAAAAABFJNOQRTTW[^`lZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠנZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ{ZZZrf][WRNNOQRRRRSSX^cdfhjkZZZtZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtZZZtZZZpnkjgda`^[XXTOKI@6-,--.......---./00/.---.//13558;>?FLSTY^bchlZZZoZZZsZZZrZZZwZZZvZZZxZZZyZZZZZZZZZZZZZZZZZZZZZ{wrilqZZZwZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ|ZZZwZZZsZZZuZZZqZZZpkgfedbb]WRQJC=;73//38<=BGLMQTXY\`dfpZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZui][TLFEFGIHC>9851..../05:@AGMRRNIDEKSZ\biZZZoZZZrZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZsZZZrniddgkopZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠՠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠȠɠϠZZZZZZZZZZZZZZZZZZ̠͠ZZZZZZZZZZZZ栠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZqjb`VMDC@><<@DHHLORSTUWWZ]`boZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrZZZqg\RPLIEFJOTUXZ]^elZZZsZZZvZZZwZZZuZZZtZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZwZZZqlkheba]YUTOICA7,#"%)-..///////0233333456779;>>?ABCKT\]chZZZmZZZnZZZqZZZuZZZzZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|xilpZZZtZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZxZZZvZZZuZZZsZZZqlhhfecb]XSQJC<;730049=>DINORVYZ]aegpZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwj^\TMGFHIKKF@;:62//..//49>?EKPPLGCDKS[]cjZZZqZZZrZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvZZZupjeegknpZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠɠϠZZZZZZZZZZZZZZZˠ͠ZZZZZZZZZZZZ堠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZpi`^ULCA?=;;?DHILPSSUVXX[^acpZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZpZZZpe[POKHEFKPVVY\_ahoZZZuZZZxZZZxZZZxZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyvqmlieba]XTSMGA@5+"!%*./00000111234555567899;=@@ABDELU]^diZZZoZZZqsZZZyZZZxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}xmopqZZZrZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}{yZZZzZZZsokjfb_^XSMLE?9865348=CDJQWX\_ccfilmZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwk^\VQLLORVVQLHGB>:97533579:>AEFEDCDLU^`fmZZZvZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvqqZZZsZZZorrvZZZyZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠʠˠѠ֠ڠZZZZZZZZZZZZ̠ǠʠZZZZZZZZZZZZZZZ砠蠠䠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZylaWUMF?><;::>BFGLQVWY[]^bfjlZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZnig^UMLLMNNT[abehklZZZsZZZxZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|{wsnnid`_YSMLF@:82+%%+289;<=>>>>??@@@AABBBAAADGJJKLLMQVZ[agmntZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZpromlmZZZtZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZvZZZrmlf`ZXSMGF@;655678=BHIQX`aeilmZZZnZZZoZZZrZZZuZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzk^\XTQQV[aa]YUTOKFE@<87654469;;>@CDNWacjZZZrZZZzZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZZZZyZZZwvuutZZZsZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàĠȠ̠͠ҠؠݠݠZZZZZZZZZZZZZZZȠĠƠZZZZZZZZZZZZZZZZZZ㠠ZZZZZZ蠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsZZZseYMKF@;;:999<@DELSZ[^acdinZZZsZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠѠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZqh_^WPJJNRWX_fmnZZZpZZZrZZZvZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~{{wtpoic^\UMFD>821.+)*1:BCFHKKLLMMMMMMMNONMKJJNQUUUVUVVWWX^djlZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtupjfgmZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZsnme]USMGA@;62257;<AGLNW`hjZZZnZZZrZZZwZZZtZZZwZZZzZZZzZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{l^\YWVV]dklifba\WRPJC=<840000127=CEOYcelZZZsZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZwplkorZZZuZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠȠ̠͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠȠZZZZZZZZZՠZZZZZZZZZZZZZZZZZZŠàŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyol_QDB>;888888;>BCLU]_bfjkZZZrZZZuZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZvj`VUPLHHPXabjZZZoZZZvZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}|zzwtrZZZojb[YQH?=71+*++-.7AKMQTXXYZ[[[ZYYZZ[[XURRW[_``__^[XUU[ahjZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtvpjfflZZZrZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZxZZZvnmd\TRLF@?;62248;<AGLNW_hiZZZlZZZpZZZsZZZwZZZvZZZzZZZ{ZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|l^\ZXVW^fmmkhed_ZTSLF?>:51100016=CEOYcelZZZsZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxZZZwqllorZZZuZZZwZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàǠ̠̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠZZZZZZZZZZZZZZZZZZà ĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxnk]PB@=:887788;>BCLV_`dhklZZZsZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZti_UTPLIJRZcelZZZsZZZzZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZ}ZZZ{yywtqZZZoib[YPG><6/*)*+-.8BLMQVYZ[]^^]]\\\]^]ZWTTX]abbaa`\YVV[ahjZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|~ZZZvnhhjmZZZpZZZtZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ~ZZZzZZZwZZZyZZZvZZZqojibZSQKE?>951147;<@EIJQX^_cgjkmZZZqZZZrZZZrZZZwZZZxZZZ|ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzn`^\ZXYbjZZZuZZZvZZZsZZZsZZZsZZZqlf`_YSMLGA<<85237;@BKU_ahZZZoZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZxZZZyZZZwxxyzZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ǠZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrheXL?>;9877788=BHIS^gimZZZsZZZxZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ˠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZpf[QPQSUV`iZZZrZZZsZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZtZZZsZZZsZZZrZZZrZZZqZZZponmf_XWMC:82,&&'(*+4>GIOV\]aeiijjjjjihgd`]]aejjjjjifb^^aeijZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZtjihhghmZZZsZZZzZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZ{ZZZ}ZZZ{ZZZyZZZuZZZtZZZsZZZnooligf_XRPJD>=951147;;?BFGKOTTX[^_cgklnZZZpZZZtZZZrZZZvZZZ{ZZZ{ZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~pca^\Z[eoZZZwZZZyZZZ~ZZZ}ZZZZZZZZZwZZZtmkfa[ZTNIGA;657:=>HQ[]dlZZZrZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~|{ywZZZvZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ǠˠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠĠĠĠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyma_SH=;:9877889?GNP[fZZZoZZZpZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠ̠ȠZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZqZZZncXMLSZbdnZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZuZZZokkjjjjjjiic\VTJ@64.(#"#%'(1:CEMV^`fmZZZvZZZvZZZuZZZxZZZyZZZ{ZZZwZZZuZZZqZZZrnjggjnZZZrZZZrZZZsZZZqZZZqZZZsokhghijkZZZqZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZulkfb__cglmpZZZsZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZxZZZxZZZvZZZqqommkigfedcb]WQPIC=<841147:;>@CCEGIILORSX]ccfillnZZZoZZZrZZZuZZZxZZZzZZZyZZZxZZZxZZZsrsZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZpec`^\]hZZZqZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZxZZZxZZZtnihb[USJB9889:;DMVX`goqZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZsqqZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZrg[YND:988888889BKTWbnZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠˠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{pm`TIIUbZZZoZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZvohbaabbbcded_YSQG=31+%  "$%-5>@JU`bkZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZwZZZrZZZrZZZnZZZtZZZuZZZyZZZyZZZ{ZZZ|ZZZ}ZZZ{ZZZyZZZtZZZqZZZoomllZZZtZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmkfb^^bfkknZZZrZZZsZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|{xZZZxZZZuZZZsqommjhffedcb\WQOIC=<841147;;>@CCEFGHKMPQV[`adgjjlZZZmZZZoZZZqZZZrZZZvZZZwZZZwZZZtZZZrpqZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZqfda^\]hZZZrZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZyZZZ|ZZZtqlke^WVMC;:99:;CLUW_fnpZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxqqZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZqfZXND:98888889:CLVXdoZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠǠʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxnl_TIIVcZZZqZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZuZZZumf````aabccc^XRQF<20*$ !#$,5>@JU_bkZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZZZZyZZZwZZZrZZZrZZZuZZZ{ZZZzZZZ}ZZZZZZ}ZZZ|ZZZ~ZZZ{ZZZuZZZrZZZtpomnZZZrZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZtlkgc`adhllmnnoZZZsZZZuZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZ~}{ywvtsqqomkkhfcb\VPOHB;:85336:=>@CFFEDDDEGIJMQUVX[]^`cefilnnmkjjZZZpZZZwZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZzmkfa]^hZZZqZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZyZZZuZZZpjdbYOFD@=:;AIPQYahjZZZoZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZӠԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZocVTKB:988889;=?IS^`kZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzncaZSNN\jZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZyZZZrnihc^ZYYYYYZZZZVQMKB8.-(# !#$-6?AJT]_iZZZrZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZ{ZZZzZZZuZZZuZZZtZZZy{ZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZulkhfcdgknnlkiiiijknZZZqZZZvZZZyZZZyZZZ{ZZZyZZZyZZZ~ZZZ}|zzxwuusrZZZqZZZqkgcb\VONGA:986559<@@CFIIFCA@AABCEGJJLOQRUX[[^acccccdkZZZtZZZzZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZskd^_hZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZxZZZrZZZne[QOHA;;?EJLS[bdlZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ{m_RPH@988888;?BDOZfhZZZqZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZààZZZZZZZZZZZZZZZZZZZZZРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZvlbXWUSRTbZZZqZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠʠʠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxonhc]\YVSSRRQQQQPPMJGF=4+*&"!#$-7@BJS[]enZZZvZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|~}}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZqlkihggjmZZZoZZZplhdc`]ZZ\^abfkppZZZtZZZyZZZxZZZzZZZ~ZZZZZZZZZ~ZZZZZZ~ZZZyZZZyZZZxZZZvvZZZuZZZuZZZmidc\UNMF@998778;?BCFILLGC>==<<<=>??ACEFIMPQSVXYZ\]^elZZZuZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxZZZsh__hZZZpZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZsg\ZOE<;>AEFMU\^gZZZpZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ蠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ӠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZvi\OLF?988889=BGIUaZZZlZZZpZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuki`VMMPSWYgZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZzZZZsked^XRQPNMMLKJJIHFFECA@80('$!!#$.7ACJQYZbkZZZrZZZtZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZqlkjihiloZZZrZZZsmidc_\XXZ\__dimnZZZrZZZuZZZzZZZxZZZzZZZ}ZZZ}ZZZ}ZZZ~ZZZZZZ}ZZZ{ZZZ|ZZZyZZZwZZZwZZZxZZZtZZZrZZZuZZZpidb\UNLF@998888<?CDGJMMHD?>==<<==>>@BDEHKNOQTWWYZ\]dlZZZtZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZti``iZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZsi^\QG=<>AEFLSZ\eZZZoZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZՠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠӠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZwhZNKE?988889=BHJVbZZZqZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrig^ULLOTY[iZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠǠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZvZZZniba[UPOMLKKJIHHGFDDCA@?7/'&# !#$.7ACJQXZajZZZrZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}zuZZZsZZZqZZZqZZZqZZZrZZZrZZZtZZZwZZZyZZZyZZZuojiea]\\\\\_beehkmnZZZnZZZqZZZsZZZrZZZtZZZrZZZqZZZnZZZqnmmnnonkgcaZRKID?::;<>>ADHIMPTTPLHHFEDDCCBBCCDDFGIILNPQTX[]emZZZtZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxpffkZZZrZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZrge[QHFEDCDHMRS]fZZZnZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZР렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZZZZZZZZZZxZZZshf\QGFA=9899:;@FKMZgZZZrZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠʠР֠۠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZqi`_YSNNSY_amZZZxZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZxZZZuoihaZTRNIEDCCBBA@??>=<<:9761+%%" !#$,5>@GNUV^fnoZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZz}{xwZZZwZZZyZZZzZZZ|ZZZZZZZZZZZZZZZZZZzZZZuZZZpZZZokfaa_][[[\]]^`abceggfeddccbbdfhhfda`XPGFB?<<>ACDGJMMRW[[XURRPNLLJIGGFEDDDDDDFHJKPUZ\eoZZZxZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxmlmoZZZrZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|pne\SQLGCCDGIJT^hjZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZ{ZZZxZZZ|ZZZuZZZwZZZuZZZuqommnopoh`YWPHA@=;99:;<=CIPR^kZZZwZZZz~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠʠ̠֠۠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZtlbXWTQPPW_fhZZZpZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZtpoic][TLEDA=;::9998877654320..*'$#" !#$+3;=DJQSZbikZZZsZZZvZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZw|{{ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZwZZZplgfb^ZYXVUUUVVWXZ[[ZYXXWWWX[^aba`_^VMDCA?==AEIILOQRX]bb`^\\YWUTROMLJGEDCA@@ABDEKRY[eZZZqZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZqponnZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZxZZZlf^\TKCBAAABLV`blZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ砠ZZZZZZߠڠؠ֠ӠѠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZ{ZZZxZZZsrqpnlligdca_\\]]^]WQJID?;::999;<>?FMTVcZZZqZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZrZZZneZPOPQRS\dmoZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZtZZZokfd^WPOG?7643111100000/.-,,*(&&%$##!  !#$*18:@GNOW^eflZZZtZZZwZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZw||ZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZrnihc_[ZXWUUUUVVWYZZYXWWVVVVY\_``_^]ULCB@?=>AEJJMPRSY^cdb`^^[YVVSQNNKHFEDB@@ABCDKQXZdZZZnZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZsronnZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxZZZph`_VLDCAA@AJT^`jZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ⠠ZZZZZZ砠ZZZݠՠӠҠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZzZZZwZZZvZZZtppnmkkhfcc`^[[[\\[UOIHC?::999:;>@AGOVXdZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZrZZZpdYONOQST]foqZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZuZZZwZZZnidb\UNME>65421111111000/.--+(&&%%$$"  !#$*18:@GMOV]dekZZZpZZZtZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZtZZZrZZZplgcb`^\\\\\\\]^]\ZYXWUTTUUVVUUTSMGA@????CGKLOSWX^dijihggda_^][YYVROOLIFFEDCDHLQR[dmoZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZtZZZsZZZy~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZski`WNLHEABGMTV`jZZZsZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZᠠܠ۠٠ؠננ٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZxZZZvtsrrqqqqqZZZsZZZromjjgdba`^]\VPKID?::;=>?CGKLU]fhZZZoZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZǠՠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtji`WOORW[]fZZZoZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZuonha[ZTOIHD?;;::::;<===>>><:98631000//*&!!!"##+2:;@EJKQW]^djZZZpZZZpZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZxZZZvZZZqlkifddcccbbbba_][ZXUSRPNLLKJJIFB>>?@AAEHLMRW\]ciZZZnZZZppZZZoZZZoZZZomjggfedd`]YXUQMLIFDDEGIJQYabjZZZtZZZyZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZz{~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZukaXWPICCEGJKU`jlZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZ àZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZؠݠܠ۠۠ݠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZuZZZqponnoprrtZZZvZZZxZZZxZZZuZZZtZZZtZZZtoljifb_^XRMKF@::=@CDJPWXblZZZvZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyndb\VPPV]deZZZpZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZwoig`YRQMIEECBAABCDDFHJJKLLLJGEEB?<;;;;:3+$#"""#+3;<@CFGLQVW^djlZZZqZZZxZZZ}ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZuZZZvZZZrollkjjihgffc`^]YURQLGCBAA@@>=<<>@BCFJMNTZ`bhZZZnZZZvvwZZZwZZZ|ZZZ{ZZZuZZZsooZZZoZZZnZZZnZZZqkgcb]YTSNIDDCBBBHNTV_hZZZqZZZpZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~}~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvlcaXOFECAABKU`bnZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ⠠𠠠ZZZZZZZZZZZZZZZ٠۠ܠޠࠠᠠ⠠㠠㠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxmkkjjkmpZZZuZZZuZZZwZZZ~ZZZZZZZZZZZZZZZyZZZ|ZZZwZZZuZZZqZZZqlga`[UONGA;;?CHIQZbdZZZnZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZui^]XTQQZclnZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZzZZZqibaYRJIGDBBDFHHJLNNQTWXYZ[[XURQNJGGGFFE;1'&$#"#+4=>?ABCGKPQW^eflZZZoZZZuZZZvZZZ{ZZZ{ZZZ~ZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZuZZZtqnnmlkkjhggda^]YUQPKFBAA@@?>=<<>@BCFJNOU[abiZZZnuvxZZZ{ZZZ|ZZZzZZZzZZZuqqZZZsZZZsZZZrZZZsmied_[VUPJEECBABGMRT]fZZZoZZZpZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~~}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZunecZQHGDB@AJT^`lZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠҠӠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZܠ⠠ZZZZZZZZZZZZZZZՠ֠ZZZZZZڠݠࠠ⠠ᠠZZZᠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwlkkkklnqZZZrZZZsZZZxZZZ~ZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZvZZZuZZZrnhcb\VPOHB;;?CHIRZceZZZrZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZth]\XTRR[dnpZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwZZZvZZZoha_XQJIGECCEGJJLNPPTWZ[\]]]ZWTSPLIIIHHG<2(&$#"#+3<=?@BBFJOPV]dejZZZmZZZvZZZvZZZvZZZwZZZyZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZ~ZZZzZZZuZZZxZZZwZZZuZZZqZZZrZZZromlhc_^YTONJFCBDEFFDB@@@BCCGJNOU[bcipwx|ZZZZZZZZZZZZZZZ}ZZZyZZZzZZZwZZZzZZZ{ZZZ|ZZZuZZZtnmid`_YSMLIFCCFILMT[bciZZZmZZZuZZZvZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvomf^WUPKFFKPUWbmZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠРՠڠ۠ࠠ堠ZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZڠݠޠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxppZZZqZZZrZZZxZZZuZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvmle]VUMF?>@BDEOXbeZZZqZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZvlbZYXXYZclZZZtZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwonf_WVSPMMNPRRTVWXYYZ[^beeffffca^]ZVSRQOMKA7-+'$!!'.459<@AEIMNSY^_cgklnZZZpZZZsZZZtZZZrZZZyZZZyZZZ|ZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZyZZZwZZZvZZZwZZZuZZZslf`^XRMLIFDDHKNNJGCCCCCCGKOPV\bcjqwyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZxZZZuZZZtnjib[TSOJFFFFFGLQUW\bginZZZvZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZuZZZslfd\TMLLLMNXcnpZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàȠɠΠӠؠ٠ޠ㠠ꠠZZZZZZZZZZZZZZZʠ̠ZZZZZZZZZZZZZZZ٠ݠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}{wZZZsZZZtZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZvmd\ZRJCBA@@AKVadZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZumld]VVY]abkZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZrge]UNMNOPQV\abcefffeefimZZZoZZZnZZZnZZZoonljhgc`\\XUQPF<21+% #(,-28>?CHLMQUXY\_abdfiiknZZZqZZZqZZZrZZZyZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZyZZZuZZZoh`^XQJJHGFGLQUUQLGGEDCDGKOPV\cdjZZZqZZZvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvZZZuZZZtkc\ZUOIIFDAADGJJOUZ[cjZZZtZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZti^SRMIFFOYcepZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZݠZZZZZZZZZZZZZZZZZZZZZƠǠ̠РՠZZZZZZ⠠砠ZZZZZZZZZZZZZZZȠǠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZvZZZyxZZZ{ZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtka_WNFEA><=HS_bZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{odb]XSSZahjZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwk_\TLEEIOTV_gZZZnZZZoZZZqZZZuZZZrZZZrZZZqZZZsZZZrZZZoZZZuZZZxZZZ{ZZZ{ZZZzZZZxvvZZZvZZZrZZZqZZZqlied_ZUTKA76.& "$%,4<=BFKKNPSSUVXX[^aacehhmZZZtZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ~ZZZ|ZZZwZZZwZZZpg_^WQKJIHHIMRWWRMHGFDCDGKOPV\bdjZZZpZZZyZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ~ZZZxZZZtZZZtme^\VQKKGEBBDFHINSXY`hZZZpZZZqZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZyZZZtk`USNIEFNWacmZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZߠߠZZZZZZZZZZZZZZZZZZZZZƠǠ̠РՠZZZZZZ⠠砠ZZZZZZZZZZZZZZZȠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZwZZZxZZZ|ZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtlb`WNFEA>;<GS_bZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmca\WST[bjlZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvj][SKDDIOUW`iZZZrZZZuZZZtZZZwZZZuZZZuZZZuZZZsZZZsZZZtZZZuZZZzZZZ~ZZZ}{ywwusZZZsZZZqmied`[VTKB86/' !#$+3:<AEJKMORRSUVWZ\_`bdgglrZZZvZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZzZZZtZZZuZZZtZZZqZZZnmjjd^XWTQNNPRUUXZ\\VPJIGECCGKOPU[abhnZZZtZZZvZZZZZZZZZZZZ|yZZZyZZZpkeda^[ZUPKKJIHHKNQRW]bckZZZqZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZui^\UNGGLRXZdnZZZwZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ䠠䠠䠠堠ZZZZZZZZZZZZZZZZZZZZZɠɠʠΠҠנZZZZZZZZZ頠렠ZZZZZZZZZZZZZZZZZZ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZti^\SKCA?<;<EP[^nZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZrg]\ZYYZaiZZZpZZZrZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwi\ZRKDDKRZ\fZZZqZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~{wvspllhd`_[WSRKC;:3+$$""!"',239?DEHKNNOPRRUX\\`dghmqvwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZzZZZyZZZxZZZyZZZxZZZzZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZvZZZxZZZunjjhfdca`^]YUPPPQRRW\abbbbaZSLKHECCGJNOTZ`aflZZZqZZZtZZZzZZZZZZZZZ|{ZZZwZZZpllkkjic\UTPLHHIIJKNQUV[afhnZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZqhe\SJJKMPQZclnZZZrZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ頠頠ꠠZZZZZZZZZZZZZZZZZZZZZZZZѠ̠̠РԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtgZXOG?><;:;DNXZjZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZuj`WWY\_`hZZZnZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvh[YQJDDMV`blZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|vuqlhgc^ZYWTQPJD?=70*)&# #&)*17>?CGJKKLMMQTXY^chimquvyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZpwspnnlkkkmpZZZtZZZrZZZtZZZsZZZwZZZuZZZwZZZxZZZwZZZvZZZtokjfa\\ZXVUTSQQNLJJMQUW_fZZZpZZZoljgf^UMLIFCCFJNNTY^_dinpZZZwZZZZZZZZZ~~zZZZwZZZqZZZtZZZwZZZwZZZxZZZ{ZZZoh`^WPIIGFDDEGHILPTU]dlnZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZoZZZpcXNLKIIIQYacjZZZsZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠנZZZZZZZZZZZZ󠠠򠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZqcVTKC;::::;CKTWfZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|omd[RRX_fgoZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwh[XQJDEOZdgZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZunicb]YTSRPONJFBA;50/)$ !")089>BGGHHIIMQUV\cijmqttvxZZZxZZZ|ZZZyZZZ~ZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZpvsommljiikmZZZoZZZpZZZoZZZpZZZsZZZpZZZrZZZtZZZsZZZqZZZqmihd_[ZXVTTSRPPNLJJNRVX`hZZZqZZZpnkhg^VNMIFCCFIMNSX^_dinoZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~{xZZZstZZZuZZZzZZZzZZZyZZZtkbaYRJIHFEEFGHHKNRSZbikZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZtZZZoeZONKIHIPX`ahZZZpZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ𠠠񠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ𠠠򠠠򠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZnbUSJB;:9::;CLTWfZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZznlcZRRY`hiqZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuh[XQJDEOZegZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvZZZtoicb]XTSRPONKGCB=720+& !(/78=AFFGHHIMQUV\bijmpZZZssuvZZZvZZZwZZZ{{ZZZ}ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZzZZZvZZZtZZZolhhgfeeeffffgggedbb_\ZYXWVVVVVUTSRRUX[\ckZZZpsqnkjbYQOJFBBDHKLQW\]bglmZZZvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{xxZZZ|ZZZZZZZZZZZZ~ZZZxZZZpZZZrf\SRQQQQONMMMNNOTY_ajZZZrZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZwncYWSOKKOTY[cmZZZuZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ렠ZZZZZZZZZZZZZZZZZZZZZ٠ܠޠߠ䠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZpZZZmdYOMF@:::;<>FOXZhZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuge`[WXajZZZvZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxj]ZSKDENYdfZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZqmhga\WVUTRRPNKKFA=<60+*'$""',128>DEGIJKNRVW[`degjllnZZZnZZZrZZZqZZZrvxZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvohgc_\[[ZZZZ[[[[[[[[ZYYYYYYZ[\\[[ZZ\^_`gntusqnme\SQLFA@CFIJOUZ[`eijZZZrZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZug[Z[\]]ZWTSPNKKNRUV_gZZZoZZZqZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZࠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZymca[UONOQST_jZZZtZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZࠠ蠠렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàĠĠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZznb`XPHGC>::;=?@IS\^kZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}o`^]]]^iZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwl_]TLDDNXceoZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZvZZZsmlf`[ZYWVVVUTTPLHGA;54.)$$&(+,3;BCFIMMPTWWZ]``bceegijknZZZoZZZrZZZsZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZrhf_YSRQPOOOPPQRTVVWYZZ[[\\^`bbcccccddejZZZqZZZvvusZZZrZZZmg^UTMF@@BDGHMSXZ^bghnZZZrZZZzZZZz~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrdbegjie`[ZTOIIIJLMT\dfqZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwmkc[SRPNMNZgZZZsZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ砠젠ZZZZZZZZZZZZZZZZZZZZZ蠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ˠʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZzm`TRMHCB?<::<?BDMV`bnZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyjZX[^bdZZZqZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ڠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{na_VLDDMWadnZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvZZZsZZZske_^][[[[\]\YVSRLF?>6.&&%%%&.7@AFJOORUXXYZ[[\]^_`bdehlopZZZsZZZy}~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZrhf_XRQPOOOOPPPRTVWXZ[\\]^^`bdddeeeeeefkZZZnZZZuZZZutrZZZoZZZpg^UTMF@@BDGHMRXY]afgmZZZrZZZzZZZz}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtedfillgb]\VPJJJJKLSZbdoZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzome\TSPNMNZfZZZuZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ۠⠠砠젠񠠠ZZZZZZZZZZZZ蠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàȠʠ͠ʠZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZuk_SQLGBA?=;;=ADENXacoZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZziYX[_dfZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ob`VMDDMWacnZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvZZZtZZZslf`_^]\\]^^^[XUTNGA?7/'&%%%&.6?@EJOORUWWXYZZ\]^^`bdehloptx}}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsiga\VVWXYYYYYZ]`ddfgiiijkklnoonmllkjiikmZZZpZZZpmkihaYRQLHCCDFGHKOSSW\`ahoZZZvZZZwy|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{kjmZZZoZZZtZZZxZZZtolkd\UTROMMQUZ\fZZZoZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZyof^\WRNNXcnpZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠƠZZZZZZZZZĠǠZZZZZZZZZ֠ܠ𠠠렠렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZuZZZnkibZSRMHDCBBBBFJOPX`hjZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZziYX^dkmZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwgdYOEEMU_akZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}vuZZZpkfeeeffeeeda^ZYRJCB;4-,*(&',178?FLMOQRRTUWX[^abdfiilorsvz}~ZZZZZZZZZZZZZZZZZZ|ZZZrjhd_\[^acdddddimZZZqZZZqZZZtZZZuZZZvZZZwZZZyZZZvZZZxZZZ{ZZZwZZZ{ZZZyZZZyZZZyZZZwZZZsZZZuZZZqomlkjhhfdba[UNNKIGGGHHIJLNNRVZ[bjZZZqZZZruxzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}qpZZZuZZZyZZZZZZZZZ|ZZZ{ZZZzZZZ{ZZZsia`ZUOOPQRS]gZZZoZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZנZZZZZZZZZZZZŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZnge^VOPW_hjZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZˠ̠ZZZҠנݠ񠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZqnhb]\YVTSOJFFGHIJOUZ\bioqZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{iZY`iZZZrZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZՠԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}li]QFELT\^iZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxxtpllmnZZZoZZZpnmkkgc_]VNFD?943/+((*,/09AJKLLMMORTUZ`efhkmnprtux{~~ZZZZZZZZZZZZZZZZZZskjgdaafjZZZqZZZpZZZmnnoZZZtZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZ{ZZZvtpokfba_][ZUPKKKKKKJJJJIIIIMPTU]emnqZZZuZZZvZZZuZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZwmkcZRQOMKLT]fhZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZqZZZodZQQV\bdpZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ젠頠頠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠΠZZZZZZZZZZZZZZZZZZZZZZZZxeb\UOOQSUUQMIIKNQRX_fglZZZsZZZvZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZziZZcnZZZyZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZנ٠۠۠٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZqm`SGFLRZ\gZZZrZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZxZZZwZZZrZZZqZZZtZZZvZZZxZZZxZZZuZZZrZZZqZZZplhcaYPHGC>:94/**)('(3=GHHHGGJNRSZaijmprstuwwz|~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvlkhecdhlZZZqZZZoZZZsqpqZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}xtqpkfa`^\ZYUPLKKLLLLKKKJJIILPSU\dlmZZZrZZZpZZZvZZZvZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZypne\SROMKLS\dfZZZrZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠZZZZZZZZZϠʠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZqZZZrf[RQV[acnZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ頠򠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠǠɠʠZZZZZZZZZZZZZZZĠZZZZZZǠ͠ϠϠZZZZZZZZZZZZZZZZZZZZZZZZZZZsb`YSNMPRUURNKKMPSU[bijoZZZsZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZziZYcoZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZؠ٠٠٠٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrnaTGGLRY[fZZZtZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZzZZZvZZZsZZZtZZZuwZZZyZZZywtZZZqZZZrlhcbYQIHD@<;61++)('(1<FGGFFFJMQRZbijmpsstuZZZwZZZwZZZyZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZqZZZpZZZrZZZtZZZrZZZtZZZwZZZyZZZ{ZZZ}ZZZ{ZZZ|ZZZ|ZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZzupohb\[ZYYXVTSRSSTTTTTTROMMORTUZ_dehjlmZZZsZZZtZZZwZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyncYWTPNNRX]^gZZZqZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZukaWVWZ\^gZZZrZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ蠠젠ZZZZZZZZZZZZZZZZZZZZZ͠ʠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~jXVQLIIMRVWXXYY]aefmZZZrZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxgYXbnZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZޠؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrZZZseYNMOQUV`kZZZsZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|{ywwtqonid_^YSNNKIGF@:43.*''-4;<=?@AFKPRZckloqssrpooZZZsZZZtZZZvZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZ}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|uomf^WWWWXXXYZZ[\\]]]^]ZVRRSTVVY[]^`beeimZZZrZZZrZZZtZZZwZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvk_]YUQQRTVW]dkmZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZqf[ZYXXY`hZZZoZZZpZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ砠ZZZZZZZZZZZZZZZZZZ̠͠ȠZZZZZZZZZZZZZZZZZZZZZZZZ ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZu`NLHFDDKQXY^bghlZZZrZZZwZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwfWWamZZZzZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZݠᠠܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtZZZui^TSRQPQZcmoZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvtqnlke`[ZXVTTSSRQJC<;4-''*-0147;<BIOQZdlnpqrrokggijlmZZZsZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtnlc[SRSUWX[^abcdeefggga\WVWWXXWWVVX[]^aeijmpZZZsZZZrZZZxZZZxZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZqec^YUUSQPPTY^`hpZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuk`^ZWTUZ`fgmZZZtZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ àƠȠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZkWDBA@@AIQZ\dlZZZrZZZtZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtdVV`kZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ䠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZ~yZZZvZZZxmd[YTPLMT\egZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsZZZpolihb\WVWYZZ[\\\TLDC:1('&&&&+057>FNPZdZZZlZZZppqrZZZrke`_`bdelZZZrZZZ|ZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsmkcZRRSUXX\_ccdfgghhihc]XWXXYYXWVVXZ\]`dghknZZZsZZZsZZZvZZZwZZZwZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZsfd_[WWTRPPTX]^fnZZZuZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxk`_[XUV[`eglZZZpZZZwZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ΠZZZננZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZziVDA@@@AJR[]emZZZtZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZudVV`kZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ堠⠠ᠠᠠߠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZxZZZ{ZZZyne\ZUPLLS\dfZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZqZZZqolihb]WWXZ\\]^^]VNFD;2)('&%%*/46=EMOYcZZZnZZZmoZZZrZZZpZZZpjd__`bdekZZZrZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZ|ZZZ{ZZZzZZZxZZZyZZZsmhf_XRQUY]^beijlnZZZqZZZpZZZnpZZZnZZZnic]]^`bb_]ZZZZZZ\]_`behiknZZZpZZZrZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtjhhggfc_\\\]^^chmoZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZulbabbcdfhjkmoZZZsZZZsZZZxZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZࠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZנZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZvdTDCCEGHQZceinZZZpZZZsZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ՠ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrfXW`kZZZtZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZڠ۠۠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZula_XQKKR[cfZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvtrqpoic^^aehhgecbZRJHA:43/,))*-/06=DFP[fggfeeca__beijosxy~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZuZZZvZZZuZZZpZZZsponnjfba\VQQW\bcgkZZZnZZZpZZZrZZZuZZZzZZZ{ZZZ{ZZZzZZZvZZZwZZZqibbehkkgc_^\ZXWWWWXZ\__behimZZZqZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtmmZZZoZZZuZZZxZZZvZZZrmiheb__aceflZZZpZZZxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZumedhmZZZpZZZsZZZrZZZopponmmopZZZtZZZtZZZvZZZ|ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZՠԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{pm`RFEGJNOYblmnnopZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZugYYajZZZrZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZrge[RJJRZceZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}wvwwZZZxZZZwZZZskffjZZZnZZZvZZZvZZZpmhg_VNMHC?>83.-+*)*/4:<GS^_]\ZZ\^``ejopruxy}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZzZZZqokjihggfedda_]\XTQQX`himZZZoZZZuZZZvZZZyZZZ}ZZZZZZZZZZZZ|ZZZ|ZZZvnhgkZZZnZZZvZZZrZZZpjdc_ZVVTRPPRTVWZ\_`ekZZZpZZZqZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|vZZZsZZZpZZZwZZZ}ZZZZZZZZZZZZ|ZZZwZZZrngaa_^]^ciopZZZsZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZsmggoZZZxZZZZZZZZZ|ZZZ|ZZZxZZZuZZZpmihgfffiloopqrrZZZtZZZzZZZzZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZݠ۠ڠZZZZZZנԠѠѠѠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuhf[QHGKPUWakZZZtZZZtZZZpolmZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxh[ZajZZZrZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠͠ϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzmj_TIIQZcfZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZwZZZ|ZZZ}ZZZZZZ}ZZZyZZZtmnZZZvZZZ{ZZZZZZZZZzZZZrmlc[SROLJIA:21-(%$(,12>JVWTROOU[abhoZZZsZZZtwwxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZxZZZtnjjigffedcca^\\XTQQY`hinrvvZZZ|ZZZZZZZZZ~ZZZ~ZZZuoihlZZZqZZZuZZZsZZZrkfe`[VVTRPPRTVVY\^_diZZZoZZZqZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|vZZZrZZZsZZZzZZZZZZZZZZZZZZZ~ZZZzZZZwpicb`_]^chmnZZZtZZZvZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZumggpZZZxZZZZZZZZZZZZZZZxZZZwZZZvojjhfeehknnopqrZZZrZZZxZZZzZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZݠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ۠۠ڠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsgd[QIHLQWXcmZZZuZZZyZZZuqnoZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvi[ZajZZZqZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZznl`TJIQZcfZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ}ZZZ{ZZZ~ZZZZZZZZZxZZZuopZZZwZZZ}ZZZZZZZZZ}ZZZvome\TSQNLKC;42-)$$'+/1=HSTSPNOU[bcjpZZZuZZZvZZZxZZZzZZZzZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZ{ZZZvZZZuZZZsZZZrpnnkigfc`]\XUQRY`ghlptuy}ZZZwZZZtmlZZZpZZZvyyZZZsZZZtomga[ZYXWWXYZZ[[\\`cghoZZZsZZZyZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~yZZZtZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxonkgeefhjknZZZsZZZsZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZʠZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvpjjZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZwZZZqnnpZZZsZZZuZZZuZZZvZZZyZZZyZZZ|ZZZ~ZZZ}ZZZ~ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZ٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠؠܠߠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}na_YTPPTY_alZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwh[[bjZZZrZZZuZZZZZZZZZZZZZZZZZZZZZZZZ ĠРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZrfYMLS[cfZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|ZZZ}ZZZZZZZZZZZZZZZ}ZZZtZZZrmga`\XTSJA982-(()*,-6?HILNPRYaikZZZpZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZà ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ|ZZZwZZZtZZZtZZZqolkgc_^YURRX_fgkostw{~~ZZZ|ZZZxqqZZZvx||{ZZZzZZZyZZZuog`__^______][ZZ\^`aflZZZsZZZrZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZzZZZtZZZrmljiggikmnZZZvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtmnZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZxZZZyZZZyZZZ}ZZZ~ZZZZZZZZZZZZZZZZZZZZZ~~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠZZZZZZZZZZZZ٠٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ٠ܠࠠZZZ㠠ݠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxhZYXWWX\bgiZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwh\[bjZZZtZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZ  Ǡ͠ҠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}m^POU\dfZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZwZZZsmlgb\ZQH?=72-,+*))06=>ELSU^gZZZrZZZsZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZxZZZuZZZpZZZpje`_[VRSX^efjnqrux{|ZZZ~ZZZxZZZsZZZtZZZx|ZZZZZZZZZxmdddefffedd`\XXXYYZ^cghmqZZZwZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZxZZZtojfeefghoZZZyZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvqqZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠǠZZZѠՠ٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZߠࠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZpbUTWZ^_ejZZZpZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwh\\ckZZZqZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZŠZZZҠԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZucSRW]dfZZZrZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZwZZZzZZZskcbXNDB=721-*&&*.23>JUXbmZZZxZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZqZZZolfa`[WSSX^deimqrux{|ZZZZZZyZZZuZZZwZZZy|ZZZZZZ~ZZZxneeefggggfea]YYXYYY]bfglqZZZwZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZwZZZyqlgffghhpZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwssZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠˠР٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZܠݠᠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}naTSW[`aflZZZrZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZᠠ堠렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsh\\ckZZZsZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZՠՠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvcSRX^egZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZ{ZZZqkdbXOEC>832.+''*-02=ITWalZZZwZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ĠàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxZZZyZZZtmhga[VUY]abglqrvz}~ZZZ~ZZZ}ZZZy}ZZZZZZ}ZZZqjiijkkmoZZZoZZZnlgcb`^\\`cghoZZZtZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZsZZZsZZZrZZZvZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZڠݠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZؠޠࠠ㠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZxj^SSYahjpZZZxZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠۠ࠠ砠젠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZui]]eoZZZzZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZ ͠ҠԠZZZZZZZZZZZZZZZZZZZZZZZZ٠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZpbSRYajlZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}{yZZZuZZZwZZZpha_WPHGDB?>94//.-,-6?HJU`jlZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZsomf_YXZ\^_ejpqv{ZZZZZZZZZZZZZZZwonnnooZZZtZZZwZZZ}ZZZ}ZZZxZZZomlgc__beijZZZtZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZܠߠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ۠ᠠ⠠栠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZsZZZrf\SS\fZZZoZZZsZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ٠ݠ栠砠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwj^^hZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZà͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZ⠠ᠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}o`SR[eZZZoZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ywuZZZrZZZskd]\VQLKKKKJE>872-))/5<>HS]_jZZZrZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwZZZslc\[Z[[\bipqw|ZZZZZZZZZyZZZrrrrrZZZtZZZ{ZZZZZZZZZZZZZZZ}ZZZuZZZuZZZpicbehklZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠѠҠؠݠ⠠ZZZZZZZZZZZZZZZZZZߠߠ㠠䠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{nlcZRS_kZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠǠZZZZZZZZZZZZZZZڠޠ⠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuj__jZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZĠ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZ頠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{m_RR\hZZZuZZZuZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{vusqnmg`ZXUROORUWVPIA@7.&&),02;FPR]iZZZtZZZsZZZyZZZ|ZZZZZZZZZZZZ|ZZZzZZZwZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZvZZZsmd\[[Z[[biZZZqqw|ZZZZZZZZZzZZZtsssstZZZyZZZZZZZZZZZZZZZ|ZZZvZZZuZZZoiccehklZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠȠȠˠϠZZZZZZנ⠠⠠⠠ZZZZZZZZZޠࠠ⠠䠠堠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{mjbZRS_lZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuj__jZZZuZZZZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZꠠ頠砠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ|l_SR]hZZZtZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}yuurpnmg`ZYVSPQTWYYRKDB90''),/0:CMOZfZZZrZZZrZZZuZZZ{ZZZZZZZZZ{ZZZ{ZZZvZZZtZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvZZZqia`][YY`gnou{ZZZZZZZZZZZZzxwvuvZZZ|ZZZyxZZZskfefhjkZZZvZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ  ŠȠˠ̠ϠZZZZZZZZZڠ䠠䠠䠠砠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZrge_YST_kZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZsi``kZZZxZZZZZZZZZZZZʠZZZZZZZZZZZZZZZZZZZZZ堠䠠砠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|naUU^hZZZqZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{xutrpnmid`_\YWW[`dd^WPNE=4321126;@BLWabhnZZZrZZZsZZZtttuy~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZvmfd`[WW^elmsy~ZZZZZZZZZZZZZZZ~{yxxZZZ~ZZZzysmhgghijZZZsZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ŠƠɠ̠ϠРӠZZZZZZܠޠ蠠頠ꠠꠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtlb`\XTU_iZZZvZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠϠРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZxZZZnhaalZZZyZZZZZZZZZZZZZZZǠɠZZZZZZZZZZZZZZZZZZZZZZZZߠ砠렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrcXW_hZZZpZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРРZZZZZZZZZZZZàƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}}zwuusqonliffc`]]ciZZZnZZZpic\ZRJBA<8433345>GPRY_efjnqsx~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZtkib[UU\bjkZZZnZZZvZZZ{ZZZ~ZZZZZZZZZZZZZZZ~|zZZZ{ZZZ{zuojiihhioZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZڠޠߠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZyne\[YWUV_hZZZsZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ˠˠ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtZZZtmgbbmZZZxZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZZZZ蠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZsfZZ`hZZZpZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠРZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ywvutrpoonmmifcdkZZZtZZZxZZZ|ZZZvZZZnhg_WPNF?761-))09ABIPWY`hZZZnZZZoZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZsljc\VU[bijZZZoZZZwZZZ}ZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZ}{ZZZ}ZZZ{zupkjiihioZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ  ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZݠߠ頠頠ꠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZumd[ZXWVV_hZZZpZZZrZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZwZZZqmgbcmZZZyZZZZZZZZZZZZZZZŠƠƠȠZZZZZZZZZZZZZZZZZZZZZZZZ頠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZrf[ZahZZZoZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZǠɠȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ|ZZZyZZZwZZZvZZZxZZZtZZZrqqppookhdelZZZsZZZzZZZ}ZZZwZZZskibZSQIA982-((/7>@GNTV]eZZZnZZZmZZZuZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZuZZZpjb[Z\_abfkZZZpZZZoZZZtZZZ{ZZZ|ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~{zvsoonmllZZZswZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZܠࠠ堠ZZZZZZZZZ栠젠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZpdYWWVWXblZZZtZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZtoicdoZZZ{ZZZZZZZZZZZZZZZŠZZZˠˠΠZZZZZZZZZZZZZZZZZZZZZ렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrg[[biZZZqZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZzZZZ}ZZZyZZZxZZZsmhhoZZZuZZZ~ZZZ|ZZZxZZZyZZZwoh`_WOGF>7102477<AFHNU\]emZZZvZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZoh`_]\ZZ]adekZZZsZZZuZZZvZZZvZZZwZZZxZZZyZZZyZZZ}ZZZ|ZZZZZZZZZzywvttrqpptx}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZӠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ㠠䠠堠ZZZZZZZZZZZZZZZᠠ렠렠ZZZZZZZZZZZZZZZZZZĠàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtdVTUVXZdoZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZwZZZrjdeZZZpZZZ|ZZZZZZZZZZZZ ZZZZZZϠҠZZZZZZZZZZZZZZZZZZ렠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZui\\bjZZZrZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZrllZZZrZZZyZZZZZZZZZZZZzZZZvnme]VTKC:963002589?DJLT]fgnu|xxZZZ{ZZZ}ZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZvofe_YTSUWYZaiZZZqZZZoponoqZZZvZZZuZZZyZZZ{ZZZZZZZZZ~zyyyyywuttvy}ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ àĠĠZZZZZZZZZZZZZZZZZZZZZРZZZZZZZZZZZZZZZԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZנؠZZZZZZZZZZZZZZZZZZݠ⠠堠蠠栠䠠ZZZZZZZZZZZZZZZZZZZZZZZZ堠ZZZZZZZZZZZZZZZǠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvdSRSVY[fZZZrZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZrlffZZZsZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwj]]ckZZZqZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZӠԠӠҠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyooZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ{ZZZtldbYNDB:1*))*+,049:CMVXaktxwZZZyZZZ}ZZZZZZZZZZZZ}ZZZ|ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZypgf_YSSTVXY`gZZZmZZZmnmmmpsvZZZuZZZ{ZZZZZZZZZZZZzzzzzZZZ|ZZZwZZZvuZZZwwzZZZ~ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠѠѠРѠҠӠԠՠ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ٠ؠZZZנڠ栠ZZZZZZZZZZZZZZZZZZZZZZZZZZZ䠠ᠠZZZZZZZZZZZZɠƠȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtdSRSVYZfZZZpZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZꠠ頠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZslfgZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠZZZZZZZZZZZZZZZ򠠠򠠠ZZZZZZZZZZZZZZZZZZˠƠ ZZZZZZZZZZZZZZZZZZZZZwk^]dkZZZtZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZנZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ppZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZzZZZtnge[QGE<2*)))*+.268AJTV_htnmZZZpZZZtZZZvZZZwZZZsZZZrZZZuZZZwZZZuZZZtZZZyZZZxZZZzZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvmke_YXXWWX\`ddefghkotuzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZ|}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠՠ֠ؠ٠ڠܠZZZZZZZZZZZZƠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZՠؠZZZZZZZZZZZZZZZZZZZZZZZZZZZ堠堠ZZZZZZZZZؠנZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZࠠܠ頠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZᠠ栠ᠠޠZZZZZZZZZŠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZveUSSTUV_iZZZsZZZwZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ|tmghZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZʠZZZZZZZZZZZZ렠ZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZ~obaflZZZrZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZwxzZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZ~ZZZxZZZsZZZth]SPF<320.,,./12:CKMU^fedfhjjjkkklmnnZZZrZZZqZZZvZZZsZZZwZZZ}ZZZ|ZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZsZZZske_^\ZXXXYZZ]_abglrsw|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZyZZZyZZZyZZZ{ZZZzZZZ~ZZZ{ZZZyZZZ{ZZZxZZZyZZZ{ZZZ{ZZZ|ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZʠΠՠؠ٠۠ݠߠࠠZZZZZZZZZZZZǠȠƠZZZZZZZZZ ƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZꠠ頠ZZZZZZZZZܠܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ堠ᠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZߠ㠠ZZZZZZZZZZZZàĠàZZZZZZZZZZZZZZZZZZZZZufWUSRQQYajkZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZᠠ䠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZytnijZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠŠȠɠΠ۠ZZZZZZZZZ栠򠠠ZZZZZZZZZZZZZZZZZZҠˠZZZZZZZZZZZZZZZZZZZZZtfeimZZZqZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{{xZZZxZZZuZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZti_]RG=;73//.---4<CELSX[[]^_``abbcdeegjlmpZZZqZZZuZZZwZZZtZZZwZZZtZZZtZZZxZZZyZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZuZZZskfea\XXUSQQTX\]cjZZZrZZZpuZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZvZZZokgfghjjiiiijlnoprZZZuZZZuZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZʠ͠Ҡנ۠ܠߠᠠ䠠ZZZZZZZZZZZZˠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ󠠠젠ZZZZZZࠠZZZZZZZZZZZZZZZZZZZZZZZZ𠠠󠠠󠠠ZZZZZZZZZZZZ砠堠⠠砠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZᠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZugYXSPLMSY`bjZZZsZZZ|ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZޠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{toklZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠˠ̠٠ZZZZZZZZZ蠠렠ZZZZZZZZZZZZZZZZZZנZZZZZZZZZZZZZZZZZZZZZzjhknsZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZtppZZZrZZZxZZZ}ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZtkh]RGE?932.+))/5;=BHJ[Z\]^^_`aabccdfhjknZZZqZZZqZZZtZZZrZZZsZZZtZZZvZZZyZZZzZZZ{ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZxZZZqmgfb^YYVSPPTW[\biZZZnZZZnZZZvZZZwZZZZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZuZZZlidcdeggggfghjllnpZZZtZZZqZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠͠Ҡנܠ䠠ZZZZZZZZZӠ̠ZZZZZZZZZڠߠZZZZZZZZZZZZZZZ򠠠󠠠頠ZZZᠠZZZZZZZZZZZZZZZZZZ𠠠򠠠񠠠頠㠠ᠠߠZZZZZZZZZZZZ䠠栠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvhZXTOLLRX_`iZZZrZZZxZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZwtoklZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠˠ̠٠ZZZZZZZZZ頠렠ZZZZZZZZZZZZZZZZZZZZZҠˠʠŠZZZZZZZZZZZZZZZZZZZZZyjikosZZZsZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyppZZZrZZZxZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZymk`TIGA:43/,().4:;@FJ\[\]]]]]]]^^^_`accehjjjjjkmZZZoZZZrZZZuZZZwZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{zZZZuZZZonmiea`\XTTUVWX^djkoZZZuZZZvZZZyZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzogfb^ZZ[\^^_`aacehhkmpqZZZtZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠˠРՠZZZZZZ٠ԠϠѠѠ֠ࠠZZZZZZZZZZZZ蠠栠栠ZZZZZZZZZ젠𠠠젠蠠㠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZti][VPLLQW]_goZZZuZZZv~ZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZݠࠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZwsomnZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠȠɠΠؠܠZZZZZZ栠頠񠠠񠠠ZZZZZZZZZZZZZZZZZZZZZΠǠZZZZZZZZZZZZZZZZZZZZZxjilosZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZՠՠϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZuttZZZrZZZtZZZzZZZ{ZZZZZZZZZZZZZZZZZZ}ZZZyZZZwkaWUNF?=70**-0459>>^\\]\\[[ZZZZZZZ[[\]_``aaabdgjjmZZZpZZZsZZZvZZZyZZZ}ZZZZZZZZZZZZZZZZZZ~}zZZZwZZZvZZZuZZZqmihc^YXVUSTY_deimZZZrZZZpZZZvZZZyZZZyZZZ}ZZZZZZ~ZZZZZZZZZZZZ~ZZZ|ZZZyZZZzZZZ{ZZZyZZZyZZZuZZZqoonmmlf_YXVTRRSTUVXZ\]_bddhknorZZZuZZZuZZZuZZZyZZZ{ZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠΠӠޠޠѠԠՠᠠZZZZZZZZZZZZ렠ꠠZZZZZZZZZ렠栠ᠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtk`^XQLKQV\^emZZZsZZZx|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZࠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZuZZZwrpopZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠˠڠݠZZZZZZ堠렠ZZZZZZZZZZZZZZZZZZZZZɠ ZZZZZZZZZZZZZZZZZZZZZzjilptZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZzuqnnZZZtZZZuZZZ{ZZZyZZZ}ZZZZZZZZZZZZZZZxnecZRIG>5,,,-/0363`]]]\[ZYXWWVVVUUUUUVWWXXYY\^abdgjkpZZZuZZZzZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZyZZZ{ZZZyZZZsZZZsZZZqjd^]XTPPUZ_`dgkloZZZsZZZtZZZuZZZuZZZxZZZwZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZtZZZsomjjfb^^\[ZYTPKKJJJJKLNNRUXY\^abfjnnopqqZZZsZZZrZZZrZZZuZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠǠZZZZZZZZZZZZZZZZZZܠݠݠZZZZZZZZZZZZҠΠ̠͠ZZZZZZZZZנZZZZZZZZZZZZꠠ򠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwlcaZRLKPV[]dlZZZsZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ頠䠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZusqqprZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠנڠZZZZZZZZZ栠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxjilpuZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZvoiiloZZZtZZZrZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZoZZZpf]SQE:/.,+*,-/'`__^]\[ZXXXWVVVUTTUVVWWWXXZ]``cfiinZZZrZZZxZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ}ZZZzZZZtZZZtZZZqle_^YTPPTY^_bfjjmZZZoZZZqZZZrZZZtZZZvZZZxZZZxZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZrZZZrmjggc_\[ZXWVRNJJIJJJKLNNRUYZ\_bcgkoppqqqZZZrZZZsZZZsZZZvZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠ̠̠ZZZZZZZZZZZZZZZZZZ٠۠ݠݠݠZZZZZZZZZZZZZZZ򠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZwlcaZRLLPV\]dlZZZuZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ蠠蠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZtsqqqrZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠנ٠ZZZZZZZZZꠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyjilpuZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZtoihknZZZpZZZtZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZrZZZpg]TQF;0/-,+,-/'ljjjihfdaa`_^^\ZYXXWWWVVUUWXZZ\_abglZZZoZZZqZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZ|ZZZsled^XRQSUVWZ]aadgjjmZZZqsZZZsZZZyZZZ|ZZZZZZZZZZZZZZZ~ZZZZZZZZZZZZZZZZZZ~ZZZvZZZqZZZsmgba_\ZZWUSSRRQQPNMMNPQQSTVVZ^ccgjmnZZZqZZZxZZZ|ZZZ}ZZZyZZZyZZZ{ZZZzZZZzZZZ|ZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZנננZZZZZZZZZZZZZZZ砠񠠠ZZZZZZZZZZZZZZZZZZZZZZZZ⠠ߠZZZZZZZZZΠƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZvZZZmg`^XRMMRW]_fnZZZwZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|rqqrsZZZvZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzkjmqZZZwZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZӠؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|}wZZZpkjklmnZZZrZZZsZZZwZZZwZZZxZZZ|ZZZ~ZZZZZZxZZZqgf^VNLF?98766778/yuZZZxZZZuZZZtZZZtZZZtnkkihffc`^][ZXXWUSSTTTTVXYZ_ejlZZZsZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZtljc\UTRPOORUXX[^abfjnoZZZpZZZuZZZzZZZ{ZZZyZZZtZZZsZZZtZZZqZZZtZZZsZZZqmhcb]XSSQOMMLLKKLLMMNOPQTVYY[\^_chmnZZZsZZZtZZZxZZZyZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠҠZZZZZZZZZZZZZZZ䠠䠠砠񠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZڠ٠ZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZvonhb]\WSNOTY_ahZZZqZZZvZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|poqruZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ堠젠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwlknrZZZxZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠZZZZZZZZZʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~}xrmmkjiiiijjmpZZZrZZZpkd][UNHGECAAAABCBB8ZZZZZZZZZZZZZZZ~ZZZ{ZZZvZZZvZZZsZZZsonkgcb`]ZZWURRQPOOPQRSX^demZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZqZZZoh`WVQMIHJMOPSVYZ_dijlmnnkheeddcb]XSRMIEEDBAABCDDFGIIMQTUY]abcegglZZZsZZZuZZZyZZZzZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠȠɠʠ̠ΠZZZZZZZZZZZZڠߠᠠ䠠䠠񠠠򠠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZ|ZZZyZZZtZZZspkgfb^ZYVSPPU[ackZZZsZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxonqtZZZyZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZР̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmlptZZZyZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZrpolhedb`^^adff`YRPLGCCEHJKLMNOMLAZZZZZZZZZZZZZZZ}ZZZyZZZvZZZwZZZtZZZrqqmieeb_\[XVSSQPOOPQRRX]cemZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZsZZZpiaXWRMHHIKNNQTXX]bghikkkhecbba`_ZUPOKHDCBAAABCDEFHIJMQUVZ_cceghinZZZqZZZyZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ΠҠ֠۠۠ޠᠠ㠠䠠蠠젠񠠠򠠠ZZZZZZZZZZZZZZZ렠蠠䠠ZZZޠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ~ZZZ{ZZZyZZZtZZZvojfea]YXUSPQV\bckZZZrZZZ}ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxporZZZvZZZvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠנZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠ̠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxmlptZZZ{ZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠ܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZZZZyZZZvrqmiedb_]]`cee^WQPKGDDFJMMNPQRPOAZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZvZZZsZZZtplhgc_\[XUSSRQQRW\bdmZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZvnf^]WPKJIIIILOQRUX[\\\\\ZWUUUTTTQNKJHFEEEFFGIKMMOPRRUWZ[`ejjmoZZZqZZZrZZZsxz{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZޠࠠᠠ堠ꠠZZZZZZZZZZZZZZZZZZ㠠ޠڠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZyZZZumfe`[WVUTSTZ`ghpZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZyZZZxZZZyZZZ|ZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠʠϠРՠڠߠZZZZZZZZZZZZ󠠠ZZZZZZZZZZZZZZZӠΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzmmrZZZuZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ àZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZʠǠZZZZZZZZZZZZZZZZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZ{ZZZtZZZsmliebabbcb]XRRQPPPSWZ[]_ab_]QZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZuZZZtnied`[WWUSQQV\acmZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZqldc\TMLJGEEGIKKLNOONNMMKJHHHHHHGGFFFFFGIKMMPSVVXY[[\]__ekZZZoZZZrZZZuZZZwZZZ|ZZZ}||}}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZޠޠ⠠砠렠ZZZZZZZZZZZZZZZ砠⠠ݠؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzofe_ZUTUUVW^elmZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠԠZZZZZZZZZZZZȠ̠ϠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠ͠ΠӠؠݠޠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠѠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxnmZZZtZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàȠZZZZZZԠؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ{ZZZtZZZvZZZqkgfdcaa\XTTWZ]^aehhlnZZZqZZZqol`ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZZZZxZZZrnmga\[WTQRV[ablZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZrjh`XPOJEAABCEEDDCCA@??>=<<<=>>?@BBDGIIMPSTX[__abdddccdjZZZpZZZvZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZà۠ܠࠠZZZZZZZZZZZZZZZZZZZZZZZZꠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZpge_YSSUWYZbiZZZqZZZtZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠˠˠ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠ̠ѠנZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxnmZZZvZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠĠZZZ àZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ{ZZZxZZZrlkgc`_\YWW]dklZZZnZZZsZZZuZZZtZZZxZZZZZZZZZZZZ~{pZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ|ZZZuonic]\YURRV[`blZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZxZZZskiaYQOJE@@ABDDCBAA@?>>=<;;<==>?ABCEHJKNQUUY]`acdffedddkZZZoZZZwZZZy}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZǠȠˠ͠ߠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZpge_YTSUXZ[cjZZZrZZZuZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠˠ̠Ѡ֠ᠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwnmZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠ͠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZyZZZolkgc`_\ZXY_fmnZZZtZZZsZZZyZZZyZZZ~ZZZZZZZZZZZZ}pZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|xZZZuZZZtplhg`ZUTVX[\enZZZvZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZyrkjbZRPJD>==>???@@AAABBBBBBCDDEHKNOQTVWXZ\\`cggiklljgeekqwx}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZϠҠҠࠠ⠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ˠˠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZunfea^\\]^`ahoZZZtZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZӠ֠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠ̠͠ZZZZZZʠ䠠ZZZZZZZZZZZZZZZ㠠ࠠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZymmZZZtZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠZZZՠؠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZŠʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZzZZZuniheb_^_`abhoZZZuZZZwZZZ{ZZZ~ZZZZZZZZZZZZZZZZZZZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}{yyZZZuZZZuZZZrZZZsh`XWVVVV^emoZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~xrkjbZSQJB;:::::<>@@BDFGHHIJJKLMQVZ[^`cccccdgjmnZZZoZZZsZZZtZZZqnjgglqwx~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ|ZZZ{ZZZ||}ZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠՠנݠݠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠǠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠РРРZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZvZZZpkedddddeefgmZZZtZZZ{ZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠӠ֠٠ԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZР砠ZZZZZZZZZ頠㠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmmZZZuZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZZZZננܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZyZZZvZZZrkfeb`^^bfjkZZZrZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~~~}}ZZZzZZZzZZZoe[YVSQQW]ceoZZZwZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzqkjb[SRIA9876569=@ADHKLNPQRRSTU[`fgjmZZZoZZZonlkknZZZrZZZqZZZuZZZxZZZwZZZzZZZwZZZrnhhlqZZZtZZZyZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZvZZZuZZZurrZZZtZZZvZZZzZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ֠נ٠ޠࠠߠݠZZZנZZZZZZZZZZZZZZZZZZZZZZZZZZZР̠ȠȠĠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠZZZZZZΠՠZZZZZZZZZZZZZZZZZZŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZrpkgdcfilllllmZZZsZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZРҠՠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ̠ZZZZZZZZZנԠנؠܠ栠栠堠㠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvmmZZZvZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZܠ۠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrZZZqlgbb`_^_elZZZtZZZsZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZ}ZZZrf\[WTQQV[acmZZZyZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ}ZZZxZZZpkjb[SQI@8766569=ABEIMMOQSTTUVW\bghloZZZrZZZrpnlloZZZqZZZwZZZuZZZvZZZyZZZ{ZZZxZZZtoiimZZZqZZZuZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZzZZZvZZZttrqqZZZrZZZxZZZ{ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠРԠؠ۠ܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠҠZZZӠˠȠȠŠ ZZZàŠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZʠ̠̠Ϡ֠ZZZZZZZZZZZZZZZɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ|pnjfccfillllmmZZZtyZZZZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZࠠߠߠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZҠנӠРנؠݠᠠ堠堠䠠⠠ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZwmmZZZwZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ۠ڠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠƠƠ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZtZZZslgbba`_`fmZZZsZZZvZZZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZxZZZvZZZoh`_[VSRUWZ\eZZZmZZZxZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZzZZZyZZZuZZZslfe^VOME>666788<AEFKOSTVY[[[[Z[_cghmZZZrZZZwZZZvZZZtZZZtZZZuZZZqZZZwZZZwZZZxZZZzZZZ{ZZZ}ZZZ~ZZZ{ZZZvZZZtnnZZZoZZZvZZZzZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZ~ZZZ{ZZZuZZZuZZZrZZZqZZZpnnpqZZZtZZZsZZZwZZZ|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZȠРՠՠҠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠǠŠZZZZZZZZZZZZZZZZZZZZZZZZĠĠŠŠŠŠŠZZZZZZZZZZZZZZZȠɠǠŠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZujhea^^`ceeghijpv|}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZӠڠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZРӠZZZZZZΠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZˠԠZZZޠ㠠ޠܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZtkkZZZtZZZxZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZѠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZxZZZslkhfccdfghlZZZpZZZvZZZv{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~xZZZrZZZpmied_ZUTTTTU]fZZZoZZZtZZZ~ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ~ZZZ}ZZZwZZZtZZZoZZZokfb`YRJIB;4458:;@EJKPUYZ]`cca`__adfgZZZmZZZsZZZzZZZzZZZyZZZyZZZxZZZxZZZ{ZZZ|ZZZ}ZZZ~ZZZ~ZZZZZZZZZ}ZZZuZZZsZZZqZZZxZZZ{ZZZ~ZZZ}ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}ZZZzZZZxZZZrmligddefghlZZZqZZZvZZZwZZZ{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZԠנؠؠӠZZZ̠ʠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZàZZZZZZZZZZZZZZZZZZàĠŠŠŠƠƠZZZZZZZZZZZZZZZZZZ̠ǠZZZȠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZvZZZjdb_\YYZ\^^acfgmsyzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZΠԠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ͠ZZZ̠àZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZĠZZZZZZZZZZZZܠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ{ZZZrhhZZZmZZZvZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZƠɠZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZààZZZZZZZZZZZZZZZZZZZZZZZZ|ZZZxZZZwZZZoZZZlfeeddehZZZnZZZnZZZpZZZpZZZrwwy{~ZZZ~ZZZZZZZZZZZZZZZ{sjihgff`ZUTQNLLT\dfr}{utokffb_[ZSKDC=71148;<BHMNSX\]adggec``abcdksz{||}}}~~~~{xttvy|}~yyuplkf`[ZWUSSWZ^_gnuw||omga\[XURRSTUUY\`agmstx|}{skcciovxzsmlgb^^_acdiottuuuuuuuv{~rrrsssld]]YUQQZdnn|zuookgccZRIIB;338=BBIPWW\bhhlpuuqnjjklllv~yttmf__\ZWW\affpzvvpicc`\YYZ[\\`ejjqxukks{~vvqkffhknnu|gl-117-1.3.2/missing0000644000175000017500000002466610145416172013304 0ustar cedriccedric#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2003-09-02.23 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 # Free Software Foundation, Inc. # Originally 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, 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. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then # We have makeinfo, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 fi # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: gl-117-1.3.2/mkinstalldirs0000644000175000017500000000653510145416172014506 0ustar cedriccedric#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2004-02-15.20 # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit 0 ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # 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-end: "$" # End: gl-117-1.3.2/models/0000755000175000017500000000000010145416156013157 5ustar cedriccedricgl-117-1.3.2/models/aster1.3ds0000644000175000017500000002036710145416156015001 0ustar cedriccedricMM  ==>=  VMtl01   (((0 @0A0P0R0S00 ?30dASTER1_N.RGBQS  ?@pSphere1_0AAh 6>>h>6>h6>A@?|A@?6>|>6>ho:A?ho:X]?|6>A@?|o:A?h~6>Fr]0ݾA@?|o:X]?|~6>Fr])q>Fr]w?6>|0ݾA@?|)q>Fr]߾gmFr]Gr]o:|w?6>|߾gmFr]0ݾ~Fr]w?0ݾ|Gr]o:|0ݾ~Fr]~9|h0ݾw?|w?0ݾ|~9|ho:Z'ho:Fr]|0ݾw?|o:Z'h>0ݾEr]6>w?|o:Fr]|>0ݾEr]6>~hA@?0ݾ|6>w?|6>~hA?:hY]?o:|A@?0ݾ|A?:h6>>hA@?6>|Y]?o:|A@?6>|6>A@?|A?X]?:Y]?A?o:6>A@?|o:X]?|o: ?o:A?X]?:o:X]?|0ݾA@?||G=?:o: ?o:0ݾA@?|w?6>|Gr]A?o:|G=?:w?6>|Gr]o:|wo:o:Gr]A?o:Gr]o:|w?0ݾ|zHӾC:wo:o:w?0ݾ|0ݾw?|nվ5:zHӾC:0ݾw?|o:Fr]|o:U:nվ5:o:Fr]|6>w?|A?Fr]*:o:U:6>w?|A@?0ݾ|Y]?|o:A?Fr]*:A@?0ݾ|Y]?o:| ?o:o:Y]?|o:Y]?o:|A@?6>|Y]?A?o: ?o:o:Y]?A?o:A?X]?:>Z?A?A@?6>A?A?X]?:o: ?o:o:P{?A?>Z?A?o: ?o:|G=?:0ݾ)X3?A?o:P{?A?|G=?:Gr]A?o:MK(6>A?0ݾ)X3?A?Gr]A?o:wo:o:Gr]o:A?MK(6>A?wo:o:zHӾC:w?0ݾA?Gr]o:A?zHӾC:nվ5:0ݾYe"A?w?0ݾA?nվ5:o:U:o:vHA?0ݾYe"A?o:U:A?Fr]*:?BUA?o:vHA?A?Fr]*:Y]?|o:]?LN A??BUA?Y]?|o: ?o:o:wr?ҨA?]?LN A? ?o:o:Y]?A?o:A@?6>A?wr?ҨA?A@?6>A?>Z?A?>6>rS?6>>^U?>Z?A?o:P{?A?o:A?M?>6>rS?o:P{?A?0ݾ)X3?A?~6>X]?o:A?M?0ݾ)X3?A?MK(6>A?>8p?~6>X]?MK(6>A?Gr]o:A?Z-D:\j?>8p?Gr]o:A?w?0ݾA?+B X]?Z-D:\j?w?0ݾA?0ݾYe"A? 蒹Z?+B X]?0ݾYe"A?o:vHA?o:|CUh? 蒹Z?o:vHA??BUA?>0ݾCUh?o:|CUh??BUA?]?LN A?6>~Y]?>0ݾCUh?]?LN A?wr?ҨA?A?:^U?6>~Y]?wr?ҨA?A@?6>A?6>>^U?A?:^U?>6>h6>>ho:a:Ao:A?h>6>ho:a:A~6>Fr]o:A?ho:a:A)q>Fr]~6>Fr]o:a:A߾gmFr])q>Fr]o:a:A0ݾ~Fr]߾gmFr]o:a:A~9|h0ݾ~Fr]o:a:Ao:Z'h~9|ho:a:A>0ݾEr]o:Z'ho:a:A6>~h>0ݾEr]o:a:AA?:h6>~ho:a:A6>>hA?:ho:a:A6>>^U?>6>rS?o:o: ?>6>rS?o:A?M?o:o: ?o:A?M?~6>X]?o:o: ?~6>X]?>8p?o:o: ?>8p?Z-D:\j?o:o: ?Z-D:\j?+B X]?o:o: ?+B X]? 蒹Z?o:o: ? 蒹Z?o:|CUh?o:o: ?o:|CUh?>0ݾCUh?o:o: ?>0ݾCUh?6>~Y]?o:o: ?6>~Y]?A?:^U?o:o: ?A?:^U?6>>^U?o:o: ?@AHJ?aEĕ?HT?>?'>ĕ?HT?HZ?UN>?>?HZ?UN>W-ꣾ>{3 ]r=/E8K'>r=/EM>?>4=>8KM>7>؂G>D>?>4=>7>؂?Ջ?F>G>D>?Ջ%?ݶ'?D>?F>%?ÁL?= P?4=>ݶ'?D>ÁL?= %u?"2y?q3>P?4=>%u?"2J?aE?'>y?q3>?'>?>7?,I??9??>?UN>?3O?7?,I??UN>u?>???3O?-ꣾ>'>C 9?K?'>8Kwj<_&?C 9?8K?>4=>3>dW?wj<_&??>4=>G>D>>p?3>dW?G>D>?F>?d?>p??F>ݶ'?D>{(? ??d?ݶ'?D>P?4=>P??{(? ?P?4=>y?q3>z?_&?P??y?q3>?'>?9?z?_&??9?7?,I?N{?S??DY?7?,I??3O??gS?N{?S??3O???t?%`??gS?K?C 9?a% xa?4,%`?C 9?wj<_&?8KdW??>ZT?8KdW?>p?>ͯZ??>ZT?>p??d??vpX?>ͯZ??d?{(? ?P5*?J??vpX?{(? ?P??;VM?X8I?P5*?J?P??z?_&?'s?&P?;VM?X8I?z?_&??9??DY?'s?&P??DY?N{?S?ĕ?"l?J?Ϻ?N{?S??gS??!>?ĕ?"l??gS?t?%`??4,%`?a% xa?#*?W(?a% xa?8KZT?>>x?!'=Y??>ZT?>ͯZ?>ٔ?>>x?>ͯZ??vpX?? ?>ٔ??vpX?P5*?J?%??? ?P5*?J?;VM?X8I?ÁL?X?%??;VM?X8I?'s?&P?%u???ÁL?X?'s?&P??DY?J?Ϻ?%u???ĕ?HTJ?aE?N{?HZĕ?HT?N{Wr=/E?N{7>؂M>?N{?Ջ7>؂?N{%??Ջ?N{ÁL?= %??N{꾻%u?"2ÁL?= ?N{J?aE%u?"2?N{J?Ϻ?ĕ?"l??Ԟ?ĕ?"l??!>? @Ԟ?!>?W(??Ԟ?W(?#*??Ԟ?#*?!'=Y??Ԟ?!'=Y?>>x??Ԟ?>>x?>ٔ??Ԟ?>ٔ?? ??Ԟ?? ?%???Ԟ?%??ÁL?X??Ԟ?ÁL?X?%u????Ԟ?%u???J?Ϻ??Ԟ?`A6?3?3o:o:o: Ax    !"# !#&'$$%&*+(()*-./,-/1230135674579:;89;=>?<=?ABC@ACFGDDEFJKHHIJLMNLNOQRSPQSUVWTUWYZ[XY[^_\\]^c`aabcgdeefghijhjklmnlnopqrprswtuuvwxyzxz{~||}~0AVMtl01x  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwPA> MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &!*"&??? # # # #< #< #<0pSphere1_0@ &!*"&???gl-117-1.3.2/models/barrier.3ds0000644000175000017500000001236610145416156015230 0ustar cedriccedricMM ==>=  VMtl01 fff  fff0 @0A0P0R0S00 ?30dBARRIER_.RGBQS  ?@pPlane1_0GAA|o :|'o :|' :'| :''o :|)o :|) :'' :')o :|o:o :|o: :') :'o:o :|+>o :|+> :'o: :'+>o :|->o :|-> :'+> :'->o :|A?o :|A? :'-> :'| :'' :'':)|:)' :') :'):)':)) :'o: :'o::)):)o: :'+> :'+>:)o::)+> :'-> :'->:)+>:)-> :'A? :'A?:)->:)|:)':)'o:o:|o:o:':)):))o:o:'o:o:):)o::)o:o:o:)o:o:o::)+>:)+>o:o:o:o:o:+>:)->:)->o:o:+>o:o:->:)A?:)A?o:o:->o:o:|o:o:'o:o:':+>|:+>'o:o:)o:o:):+>':+>)o:o:o:o:o:o::+>):+>o:o:o:+>o:o:+>:+>o::+>+>o:o:->o:o:->:+>+>:+>->o:o:A?o:o:A?:+>->:+>|:+>':+>':->|:->':+>):+>):->':->):+>o::+>o::->):->o::+>+>:+>+>:->o::->+>:+>->:+>->:->+>:->->:+>A?:+>A?:->->:->|:->':->'o:A?|o:A?':->):->)o:A?'o:A?):->o::->o:o:A?)o:A?o::->+>:->+>o:A?o:o:A?+>:->->:->->o:A?+>o:A?->:->A?:->A?o:A?->o:A?@A*?*?*?*?*???*?*?*??@@*??*?@*@*@*?@*?*@PUU@PUU@*?*@*?PUU@@@*?PUU@*?*?*?*?*???*?*??*???*???*?@*?@???@*?*@*?*@?@?*@*?PUU@*?PUU@?*@?PUU@*?@*?@?PUU@??*??*?@@*?????@*?@??@?@@?@@?*@?*@@@@*@?PUU@?PUU@@*@@PUU@?@?@@PUU@@@*?@*?*@*@*?@?@?*@*?*@?@@@@*@?*@@@*@@*@*@@*@*@@PUU@@PUU@*@*@*@PUU@@@@@*@PUU@*@*@*?*@*?PUU@PUU@*?*@?*@?PUU@*?PUU@?*@@*@@PUU@?PUU@@*@*@*@*@PUU@@PUU@*@*@PUU@*@PUU@PUU@*@PUU@PUU@*@@*@@PUU@PUU@PUU@PUU@*?PUU@*?@@*?PUU@?PUU@?@*?@?PUU@@PUU@@@?@@PUU@*@PUU@*@@@@*@PUU@PUU@PUU@PUU@@*@@PUU@PUU@@PUU@@@PUU@@`A6?4ߴo:o:o: A H     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJHJKLMNLNOPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfghijhjklmnlnopqrprstuvtvwxyzxz{|}~|~0AVMtl01H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGPA&= MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pPlane01 &!*?"&??? # # # #< #< #<0pPlane1_0G@ &!*"&???gl-117-1.3.2/models/base1.3ds0000644000175000017500000002573010145416156014574 0ustar cedriccedricMM+ ==$>=  VMtl01   (((0 @0A0P0R0S00 ?30dBASE1_NO.RGBQS VMtl02   (((0 @0A0P0R0S00 ?30dBASE1_NO.RGBQS VMtl03  0 @0A0P0R0S00 ? ?@JpSphere1_0A9A(?{/>}w?S=?q4S?3x?M-)J?}l?~Hq?<3?"S?3x?M-)/?k_;4 ?Z:J?}l?~Hr.{_-?@yr)?)m(L'V(9_-?@yr)u??x4o?&6^?)m(Lu??x4@?ѾŚ<7? Ǿ&o?&6^@?ѾŚ<?q$޻@?9?ڻ7? Ǿ&?q$޻@??{/>}9?ڻC?>q?<3?"55f?b"&?8>9?->>q?<3?"J?}l?~HC?Y?Ga>55f?b"&?8>J?}l?~H_;4 ?Z:=Vl?>C?Y?Ga>'V(9?)m(L>$[S`>`<@Tl<>?)m(Lo?&6^WBd?W(7>>$[S`>o?&6^7? Ǿ&Ak?>WBd?W(7>7? Ǿ&9?ڻ#?'ѻ>Ak?>9?ڻC?>9?->>#?'ѻ>9?->>55f?b"&?8>7?MC> >^Xk?5>U>55f?b"&?8>C?Y?Ga>t>3&?E>7?MC> >C?Y?Ga>=Vl?> \=!5?ƌ>t>3&?E>`<@Tl<>>$[S`>g><'>K:=4'>>$[S`>WBd?W(7> 6?9v>g><'>WBd?W(7>Ak?>ĉj?o.> 6?9v>Ak?>#?'ѻ>@}?𢻜>ĉj?o.>#?'ѻ>9?->>^Xk?5>U>@}?𢻜>^Xk?5>U>7?MC> >>(>? ?fx>6?7?MC> >t>3&?E>J>ٕ>;?>(>?t>3&?E> \=!5?ƌ>8=>-$?J>ٕ>;?K:=4'>g><'>k>ZrO"?=4þ$?g><'> 6?9v>rT>Cv?k>ZrO"? 6?9v>ĉj?o.>2?lrN,?rT>Cv?ĉj?o.>@}?𢻜> ?-5?2?lrN,?@}?𢻜>^Xk?5>U> ?fx>6? ?-5? ?fx>6?>(>?ώ=Ȥi91?>(>?J>ٕ>;?ώ=Ȥi91?J>ٕ>;?8=>-$?ώ=Ȥi91?=4þ$?k>ZrO"?ώ=Ȥi91?k>ZrO"?rT>Cv?ώ=Ȥi91?rT>Cv?2?lrN,?ώ=Ȥi91?2?lrN,? ?-5?ώ=Ȥi91? ?-5? ?fx>6?ώ=Ȥi91?@A>=>=??=>>>>?=?>>@>>@>?>?0?>@?>@??0??@?>P?>P??@??P?>`?>`??P??`?>p?>p??`??p?>?>??p???=?= ? ?=?>?> ?= ?>?@>?@> ?> ?0??@??@? ?0? ?@??P??P? ?@? ?P??`??`? ?P? ?`??p??p? ?`? ?p????? ?p? ? ?= ?=@?@?= ?> ?>@?=@?> ?@> ?@>@?>@?0? ?@? ?@?@?0?@?@? ?P? ?P?@?@?@?P? ?`? ?`?@?P?@?`? ?p? ?p?@?`?@?p? ?? ??@?p?@?@?=@?=`?`?=@?>@?>`?=`?>@?@>@?@>`?>`?0?@?@?@?@?`?0?`?@?@?P?@?P?`?@?`?P?@?`?@?`?`?P?`?`?@?p?@?p?`?`?`?p?@??@??`?p?`?`?=`???=`?>`???>`?@>`???0?`?@?`???@?`?P?`???P?`?`?`???`?`?p?`???p?`??`???`A6&?ZN:Ì=K_1?߾~o:o:o: A H      !" "#$%&$&'()*(*+/,--./012023456467;899:;?<==>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSWTUUVWXYZXZ[_\]]^_`ab`bcgdeefghijhjkolmmnospqqrswtuuvwxyzxz{|}}~0AVMtl01H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGPA&@JpSphere2_0A9A(_}嶾?D~ {85l9~v)+N(YB~ {85l9o Et * O&g0X~v)+No Et *R⻦=s޸vI< O&g0X5==D?2}?0/)MO{q?9$=h?U(2}?0/#l=0G?t=.GhP2>?$)MO{q?9#l=0G?t=^ps>dF8>ŝ".GhP2>?$^ps>dFr PJ=2HR`Q=N+8>ŝ"r PJ=2H_}嶾?D(YBR`Q=N+(YB~v)+NElz\ڥ&>:@>~v)+N O&g0X*oT\>Elz\ڥ&> O&g0X޸vI<𷌽Mj->*oT\>$=h?U()MO{q?9x8`?H>t{;Bm?~>)MO{q?9.GhP2>?$#_0?Ɉ>x8`?H>.GhP2>?$8>ŝ".|>=#_0?Ɉ>8>ŝ"R`Q=N+_S==.|>=R`Q=N+(YB:@>_S==:@>Elz\ڥ&> >_^>o+jL>Elz\ڥ&>*oT\>dV!M> >_^>*oT\>𷌽Mj->aWƓ2>dV!M>t{;Bm?~>x8`?H>fɾ,?v>[@(7?x>x8`?H>#_0?Ɉ>3e?t>fɾ,?v>#_0?Ɉ>.|>=t=jƟ>>3e?t>.|>=_S==35=R>t=jƟ>>_S==:@>o+jL>35=R>o+jL> >_^>tP{1? Y? >_^>dV!M>@0GQ?tP{1?dV!M>aWƓ2>k ½𽾧$?@0GQ?[@(7?x>fɾ,?v>[t>hF?> "?fɾ,?v>3e?t>ھ/4>*?[t>hF?3e?t>t=jƟ>> 3>?ھ/4>*?t=jƟ>>35=R>Kd<? 3>?35=R>o+jL> Y?Kd<? Y?tP{1?䰽LH<1?tP{1?@0GQ?䰽LH<1?@0GQ?k ½𽾧$?䰽LH<1?> "?[t>hF?䰽LH<1?[t>hF?ھ/4>*?䰽LH<1?ھ/4>*? 3>?䰽LH<1? 3>?Kd<?䰽LH<1?Kd<? Y?䰽LH<1?@A>=>=??=>>>>?=?>>@>>@>?>?0?>@?>@??0??@?>P?>P??@??P?>`?>`??P??`?>p?>p??`??p?>?>??p???=?= ? ?=?>?> ?= ?>?@>?@> ?> ?0??@??@? ?0? ?@??P??P? ?@? ?P??`??`? ?P? ?`??p??p? ?`? ?p????? ?p? ? ?= ?=@?@?= ?> ?>@?=@?> ?@> ?@>@?>@?0? ?@? ?@?@?0?@?@? ?P? ?P?@?@?@?P? ?`? ?`?@?P?@?`? ?p? ?p?@?`?@?p? ?? ??@?p?@?@?=@?=`?`?=@?>@?>`?=`?>@?@>@?@>`?>`?0?@?@?@?@?`?0?`?@?@?P?@?P?`?@?`?P?@?`?@?`?`?P?`?`?@?p?@?p?`?`?`?p?@??@??`?p?`?`?=`???=`?>`???>`?@>`???0?`?@?`???@?`?P?`???P?`?`?`???`?`?p?`???p?`??`???`A6sOHM=T,I/8?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSWTUUVWXYZXZ[_\]]^_`ab`bcgdeefghijhjkolmmnospqqrswtuuvwxyzxz{|}}~0AVMtl02H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGPA&@VpCube1_0GeAEA iH?CثX>iH?C?ԫX>iHC?ԫX>iHCثX>iH?C?:iHC?:iHC?ԫX>iH?C?ԫX>iHC:iH?C:iH?CثX>iHCثX>`A6ge4C?C9p39p?i?AOBO)ヲヾ Aq  0AVMtl03PAH MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &!*M= o=?"&?=2?? # # # #< #< #<0pSphere1_0@ &!*"&???0$$$DUMMY@pSphere02 &!*[F@=%|wX;"&?=2?? # # # #< #< #<0pSphere2_0@ &!*"&???0$$$DUMMY@pCube01 &ヾ!*?"&C?9p?i? # # # #< #< #<0pCube1_0Ge@ &!*"&???gl-117-1.3.2/models/cannon1.3ds0000644000175000017500000000117410145416156015132 0ustar cedriccedricMM| ==>= 01 - Standard 999  9990 @0 A0P0R0S00 ? ?@Ebene02AA8=ҭBB<ҭB-BnQBnQ-B`A6.;?.;?yB#B A@0A01 - StandardPA MAXSCENEdd 0Ebene02@ &yB#B!*?"&???gl-117-1.3.2/models/cannon1b.3ds0000755000175000017500000000175010145416156015277 0ustar cedriccedricMM ==Q>= 01 - Standard 999  9990 @0 A0P0R0S00 ? ?@Ebene02AA8=ҭBBQ%<ҭB-BO%nQBPեnQ-BPե`A6??yB#B A@0A01 - StandardPA@Ebene01AA8=ҭB\BQ%<ҭBbO%nQ^BPեnQbPե`A6??yB\B A@0A01 - StandardPA MAXSCENEdd 0Ebene02@ &yB#B!*?͈"͈""&???0Ebene01@ &yB\B!*?͈"͈""&???gl-117-1.3.2/models/cannon2.3ds0000644000175000017500000000272610145416156015137 0ustar cedriccedricMM ==>=  VMtl01  0 @0A0P0R0S00 ? ?@pCube1_0GeAA81< }>>1< }>>1 }>1 }>`A6>tz?1? A90AVMtl01PA< MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &?!*"&??*ē> # # # #< #< #<0pCube1_0Ge@ &!*"&>tz?=gl-117-1.3.2/models/cannon2b.3ds0000755000175000017500000000350110145416156015274 0ustar cedriccedricMMA ==H>=  VMtl01  0 @0A0P0R0S00 ? ?@pCube1_0GeAA81< }>>1< }>>1 }>1 }>`A6>tz?1? A90AVMtl01PA@pCube1_0G0AA8 }>> }>> }> }>`A6>tz?1? A90AVMtl01PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &?!*"&??*ē> # # # #< #< #<0pCube1_0Ge@ &!*"&>tz?=0pCube1_0G0@ &n?!*"&>tz?=gl-117-1.3.2/models/chaff1.3ds0000644000175000017500000000306110145416156014722 0ustar cedriccedricMM1 ==>=  VMtl01   fff0 @0A0P0R0S00 ?30dCHAFF_CH.RGBQS  ?@pCube1_0GeAA8>?>?33@A(@@?@@?@@`A6?3?33> A90AVMtl01PA< MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &?!*"&??? # # # #< #< #<0pCube1_0Ge@ &!*"&???gl-117-1.3.2/models/container1.3ds0000644000175000017500000003144310145416156015642 0ustar cedriccedricMM#3 ==%>=  VMtl01  0 @0A0P0R0S00 ? VMtl02 fff  fff0 @0A0P0R0S00 ? VMtl03 iii  iii0 @0A0P0R0S00 ? VMtl04 iii  iii0 @0A0P0R0S00 ? VMtl05 fff  fff0 @0A0P0R0S00 ? VMtl06 iii  iii0 @0A0P0R0S00 ? VMtl07 iii  iii0 @0A0P0R0S00 ? ?@bpCylinder1AQAh n!= =n!'==( =1>(1>=n!'==o!: >(w:M>( =1>o!: >o!_=(Pʽ1>(w:M>o!_=o! =(/=(Pʽ1>o! =p!N <:( K$:(/=p!N <:o!z(/eʽ( K$:o!zo!^ッ(Nʽ/(/eʽo!^o!F: ( : K(Nʽ/o!F: n!(=ョ(=/( : Kn!(=n!=y(1>cʽ(=/n!=yn! >:(!M>:(1>cʽn! >:n!= =(1>=(!M>:(1>=( =1>:==>`:=>=( =1>(w:M>o::cZ>:==>(w:M>(Pʽ1>P:׽=>o::cZ>(Pʽ1>(/=~:`;=P:׽=>(/=( K$:1:X:~:`;=( K$:(/eʽ~:`;׽1:X:(/eʽ(Nʽ/P:׽`;~:`;׽(Nʽ/( : Ko::XP:׽`;( : K(=/:=`;o::X(=/(1>cʽ`:=>׽:=`;(1>cʽ(!M>::cZ>:`:=>׽(!M>:(1>=`:=>=:cZ>:`:=>=:==>«?=1>«?1>=:==>o::cZ>? :M>«?=1>o::cZ>P:׽=>?{ʽ1>? :M>P:׽=>~:`;=?/=?{ʽ1>~:`;=1:X:? K$:?/=1:X:~:`;׽?/eʽ? K$:~:`;׽P:׽`;?yʽ/?/eʽP:׽`;o::X?g : K?yʽ/o::X:=`;«?=/?g : K:=`;`:=>׽«?1>cʽ«?=/`:=>׽:cZ>:«? M>:«?1>cʽ:cZ>:`:=>=«?1>=«? M>:«?1>=«?=1>!?==!?= =«?=1>? :M>!? : >!?==? :M>?{ʽ1>!?=!? : >?{ʽ1>?/=!?, =!?=?/=? K$:!?h <:!?, =? K$:?/eʽ!?+z!?h <:?/eʽ?yʽ/!?a!?+z?yʽ/?g : K!? : !??g : K«?=/!?=a!? : «?=/«?1>cʽ!?=y!?=«?1>cʽ«? M>:!?ۣ >:!?=y«? M>:«?1>=!?= =!?ۣ >:n!'==n!= =823:o:o!: >n!'==823:o:o!_=o!: >823:o:o! =o!_=823:o:p!N <:o! =823:o:o!zp!N <:823:o:o!^o!z823:o:o!F: o!^823:o:n!(=o!F: 823:o:n!=yn!(=823:o:n! >:n!=y823:o:n!= =n! >:823:o:!?= =!?==J3? :o:!?==!? : >J3? :o:!? : >!?=J3? :o:!?=!?, =J3? :o:!?, =!?h <:J3? :o:!?h <:!?+zJ3? :o:!?+z!?J3? :o:!?a!? : J3? :o:!? : !?=J3? :o:!?=b!?=yJ3? :o:!?=y!?ۣ >:J3? :o:!?ۣ >:!?= =J3? :o:`A6Z4?.;3.;??ZI0wo:o:o: Ax    "#  !"%&'$%')*+()+./,,-.1230136744569:;89;=>?<=?BC@@ABEFGDEGIJKHIKNOLLMNQRSPQSUVWTUWZ[XXYZ]^_\]_`ab`bcgdeefghijhjklmnlnospqqrstuvtvwxyzxz{|}}~0AVMtl01x  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwPA@:pCube4_0GeA)A(> Ԣ^> Ԣ^> ԢEK> ԢEK> ԢEK> ԢEK> Ԣ=EK> Ԣ=EK> Ԣ=EK> Ԣ=EK> Ԣ=^> Ԣ=^> Ԣ=^> Ԣ=^> Ԣ^> Ԣ^> Ԣ^> Ԣ=^> Ԣ=EK> ԢEK> Ԣ=^> Ԣ^> ԢEK> Ԣ=EK`A6h2T A     0A'VMtl02  PA6@:pCube1_0GeA)A(X>oX>/boX>1b3X>3X>3X>1b3Bн>,b3Bн>3Bн>3Bн>,b3Bн>*boBн>oBн>oBн>*boX>/boX>oX>/boBн>*boBн>,b3X>1b3Bн>oX>oX>3Bн>3`A6S2 =40 /A>o=j۝܇g>S< A     0A'VMtl03  PA6@:pCube3_0GeA)A(X>|b=oX>==oX>;=3X>zb=3X>zb=3X>;=3Bн>>=3Bн>b=3Bн>b=3Bн>>=3Bн>?=oBн>b=oBн>b=oBн>?=oX>==oX>|b=oX>==oBн>?=oBн>>=3X>;=3Bн>b=oX>|b=oX>zb=3Bн>b=3`A6S2 =40 /A>o=j۝܇g>>F=S< A     0A'VMtl04  PA6@:pCube4_0_0A)A(6 Ԣ^Ⱦ Ԣ^Ⱦ ԢEK6 ԢEK6 ԢEKȾ ԢEKȾ Ԣ=EK6 Ԣ=EK6 Ԣ=EKȾ Ԣ=EKȾ Ԣ=^6 Ԣ=^6 Ԣ=^Ⱦ Ԣ=^Ⱦ Ԣ^6 Ԣ^Ⱦ Ԣ^Ⱦ Ԣ=^Ⱦ Ԣ=EKȾ ԢEK6 Ԣ=^6 Ԣ^6 ԢEK6 Ԣ=EK`A6ho=j۝܇gվS< A     0A'VMtl06  PA6@:pCube3_0_0A)A(Ǿ|b=oǾ==oǾ;=3Ǿzb=3Ǿzb=3Ǿ;=3 >=3 b=3 b=3 >=3 ?=o 侁b=o 侁b=o ?=oǾ==oǾ|b=oǾ==o ?=o >=3Ǿ;=3 侁b=oǾ|b=oǾzb=3 b=3`A6S2 =40 /A>o=j۝܇gվ>F=S< A     0A'VMtl07  PA6] MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&??? # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCube01 &>T!*"&h # # # #< #< #<0pCube4_0Ge@ &!*"&???0$$$DUMMY@pCube02 &>S<=!*?"& =/A>o= # # # #< #< #<0pCube1_0Ge@ &!*"&???0 $$$DUMMY@pCube03 &>S<=F!*?"& =/A>o= # # # #< #< #<0 pCube3_0Ge@  &!*"&???0 $$$DUMMY@pCube4_01 &pվT!*"&h # # # #< #< #<0 pCube4_0_0@  &!*"&???0 $$$DUMMY@pCube1_01 &վS<=!*?"& =/A>o= # # # #< #< #<0pCube1_0_0@  &!*"&???0$$$DUMMY@pCube3_01 &վS<=F!*?"& =/A>o= # # # #< #< #<0pCube3_0_0@ &!*"&???gl-117-1.3.2/models/CVS/0000755000175000017500000000000010145416156013612 5ustar cedriccedricgl-117-1.3.2/models/CVS/Entries0000644000175000017500000000500310145416156015144 0ustar cedriccedric/aster1.3ds/1.1.1.1/Thu Aug 1 06:16:58 2002/-kb/ /barrier.3ds/1.1/Fri May 2 20:45:04 2003/-kb/ /base1.3ds/1.1.1.1/Thu Aug 1 06:16:58 2002/-kb/ /cannon1.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /cannon1b.3ds/1.1/Fri Nov 14 10:59:25 2003// /cannon2.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /cannon2b.3ds/1.1/Fri Nov 14 10:59:25 2003// /chaff1.3ds/1.1/Wed Nov 6 21:05:01 2002/-kb/ /container1.3ds/1.2/Tue Jul 15 19:58:13 2003/-kb/ /depot1.3ds/1.1/Fri Nov 14 10:59:25 2003// /egg.3ds/1.3/Fri Nov 14 10:53:13 2003/-kb/ /flak2.3ds/1.2/Tue Jul 15 19:58:13 2003/-kb/ /flarak1.3ds/1.2/Tue Jul 15 19:58:13 2003/-kb/ /flare1.3ds/1.1/Wed Nov 6 21:05:01 2002/-kb/ /gl-117.3ds/1.1.1.1/Thu Aug 1 06:16:59 2002/-kb/ /gl-14.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-14b.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-14c.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-14d.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-15.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-16.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-21.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-21b.3ds/1.2/Fri Nov 14 10:53:13 2003/-kb/ /gl-29.3ds/1.1/Fri Feb 21 15:05:36 2003/-kb/ /gl-50.3ds/1.1/Sun Jan 25 16:57:49 2004// /hall1.3ds/1.3/Tue Jul 15 19:58:13 2003/-kb/ /hall2.3ds/1.2/Tue Jul 15 19:58:13 2003/-kb/ /house1.3ds/1.1/Sat Jan 24 18:39:25 2004// /mine1.3ds/1.1.1.1/Thu Aug 1 06:16:37 2002/-kb/ /missile1.3ds/1.1.1.1/Thu Aug 1 06:16:44 2002/-kb/ /missile2.3ds/1.1.1.1/Thu Aug 1 06:16:45 2002/-kb/ /missile3.3ds/1.1.1.1/Thu Aug 1 06:16:45 2002/-kb/ /missile4.3ds/1.1.1.1/Thu Aug 1 06:16:46 2002/-kb/ /missile5.3ds/1.1.1.1/Thu Aug 1 06:16:46 2002/-kb/ /missile6.3ds/1.1.1.1/Thu Aug 1 06:16:47 2002/-kb/ /missile7.3ds/1.1/Wed Nov 6 21:05:01 2002/-kb/ /missile8.3ds/1.1/Wed Nov 6 21:05:00 2002/-kb/ /oilrig.3ds/1.2/Sun Feb 23 17:18:10 2003/-kb/ /pickup1.3ds/1.2/Fri Dec 12 15:57:14 2003/-kb/ /pickup2.3ds/1.2/Fri Dec 12 15:57:14 2003/-kb/ /radar.3ds/1.1.1.1/Thu Aug 1 06:16:59 2002/-kb/ /rubble.3ds/1.1/Tue Jul 15 20:05:42 2003/-kb/ /ship1.3ds/1.2/Tue Jul 15 19:58:13 2003/-kb/ /ship2.3ds/1.2/Tue Jul 15 19:58:13 2003/-kb/ /tank1.3ds/1.2/Sun Feb 23 17:18:10 2003/-kb/ /tank2.3ds/1.2/Sun Feb 23 17:18:10 2003/-kb/ /tent1.3ds/1.1.1.1/Thu Aug 1 06:16:34 2002/-kb/ /tent4.3ds/1.1.1.1/Thu Aug 1 06:16:34 2002/-kb/ /transp1.3ds/1.2/Tue Jul 15 19:58:13 2003/-kb/ /transp2.3ds/1.1/Fri Nov 14 10:59:25 2003// /transp4.3ds/1.1/Fri Nov 14 10:59:25 2003// /trsam.3ds/1.2/Fri Dec 12 15:57:14 2003// /truck1.3ds/1.2/Fri Dec 12 15:57:14 2003/-kb/ /truck2.3ds/1.2/Fri Dec 12 15:57:14 2003// /wall.3ds/1.1/Fri Nov 14 10:59:25 2003// D gl-117-1.3.2/models/CVS/Repository0000644000175000017500000000001610145416156015711 0ustar cedriccedricgl-117/models gl-117-1.3.2/models/CVS/Root0000644000175000017500000000006310145416156014457 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/models/depot1.3ds0000755000175000017500000000630110145416156014771 0ustar cedriccedricMM  ==>=  VMtl01 lll  lll0 @0A0P0R0S00 ?30dDEPOT_FR.RGBQS VMtl02 O4  O40 @0A0P0R0S00 ? ?@VpolySurfa0AEA,>XA?픇=>X>씇={A>씇={AA?픇={AA?[;{AA?픇={A>씇={A>[;>X>[;>X>씇=>XA?픇=>XA?[;]¾A?[;]¾|^;]¾|7[>]¾A?7[>c>|^;c>A?[;c>A?7[>c>|7[>>X>[;>XA?[;c>A?[;c>|^;]¾|^;]¾A?[;{AA?[;{A>[;{AA?픇={AA?[;]¾A?[;]¾A?7[>c>A?7[>c>A?[;>XA?[;>XA?픇=]¾|7[>c>|7[>c>A?7[>]¾A?7[>]¾|^;c>|^;c>|7[>]¾|7[>@Ah,?????? > ??>?G>?????>???@@???4>B@4>@@?@@?@@@@d>>@@d>>B@d>>@d>>@@@@@?@?@@4>@@4>@????@@????`A6?.;?.;o:o:o: A     # # !!"#$%&$&'()*(*+0ACVMtl01 PAn@polySurfa1AA8{A>[;{A>씇=>X>씇=>X>[;`A6?.;?.;o:o:o: A90AVMtl02PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@polySurfac &!*"&??? # # # #< #< #<0polySurfa0@ &!*"&???0polySurfa1@ &!*"&???gl-117-1.3.2/models/egg.3ds0000644000175000017500000001377310145416156014347 0ustar cedriccedricMM ==>= 01 - Standard  0 @0 A0P0R0S00 ?G0dEGG_CHEC.TGAQS T @AV @A ?@Kugel01AAyo::.e.A :E@f%A3t'<@f%A]b @f%A!?f%A<ֶt?f%AE(:e%A<3te%A]e%A]迠e%A3t<f%A :Ef%At?<f%A&?e%Ad @]e%A'<@3te%AE@Z#:f%A'<@t?f%Aa @&?f%A?d @f%A϶t?'<@f%A :@I A]@I A ]w3@I A#-]@I A{ڲ?I A-J:I A{ڲ]I A# ]I A ]#I A]{ڲI AL,:-I A)?zڲI A-]@#I Ax3@ ]I A@]I A@4:I A@+?I Av3@-]@I A-]@y3@I A?@I A:ouAg>@%?@g>@#y@g>@&iu3@g>@._ @g>@=mI:g>@.g>@$i#g>@#'ig>@.g>@6:=mg>@f @.g>@y3@$ig>@y@#g>@'?@g>@ouA{A:g>@%?@h @g>@y@y3@g>@u3@y@g>@[ @&?@g>@|:_/Aƒ=@<üAƒ=@|ڲ%?@ƒ=@.@Ã=@'<@Ã=@-':ƒ=@<ƒ=@.|ڲƒ=@yڲ.Ã=@<Ã=@H<:-'Ã=@'<@Ã=@@.Ã=@(?@xڲƒ=@ļA<ƒ=@_/AlJ:Ã=@üA'<@Ã=@$?@@Ã=@@(?@ƒ=@'<@ļAƒ=@: A8E_/A8.ouA9=m@;.'E@5:7-'E9m5E.'6o>:6E@-'6@)>**>?*?++?@+@,,@A,A--AB-B..BC.C//CD/D00DE0E11EF1F22FG2G33GH3H44HI4I55IJ5J66JK6K77KL7L88LM8M99MN9N::NO:O;;OP;P<<P=<=)=QR=R>>RS>S??ST?T@@TU@UAAUVAVBBVWBWCCWXCXDDXYDYEEYZEZFFZ[F[GG[\G\HH\]H]II]^I^JJ^_J_KK_`K`LL`aLaMMabMbNNbcNcOOcdOdPPdQPQ=QefQfRRfgRgSSghShTThiTiUUijUjVVjkVkWWklWlXXlmXmYYmnYnZZnoZo[[op[p\\pq\q]]qr]r^^rs^s__st_t``tu`uaauvavbbvwbwccwxcxddxedeQ0A01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PAv MAXSCENEdd 0Kugel01@ &!*"&???gl-117-1.3.2/models/flak2.3ds0000644000175000017500000003012310145416156014570 0ustar cedriccedricMMS0 ==b!>=  VMtl01 fff  fff0 @0A0P0R0S00 ? VMtl02  0 @0A0P0R0S00 ? VMtl03  0 @0A0P0R0S00 ? VMtl04  0 @0A0P0R0S00 ? VMtl05  0 @0A0P0R0S00 ? VMtl06 fff  fff0 @0A0P0R0S00 ? VMtl07 fff  fff0 @0A0P0R0S00 ? VMtl08 fff  fff0 @0A0P0R0S00 ? ?@"pCylinder1AAl&Ⱦ.([<>&Ⱦdc:>k >&Ⱦdc:>Xо¼}># s=k >Xо¼}>=׾ac:>k'=# s==׾ac:>=׾0([<>>L<'=k'==׾0([<>Xо<}>" 3=s=>L<'=Xо<}>&Ⱦ.([<>" 3=s=k >?!>rҳ@!>$ա<ҳk ># s=l >Z?!>rҳ# s=k'=2=rq l >Zk'=>L<'=2=&աL<'=" 3=s=l >ż=Z2=&ա@!>$ա<ҳl >ż=Z@!>$ա<ҳ?!>rҳr>tys>۩<?!>rҳl >Z}!>Xr>tyl >Z2=rq >ry}!>X2=rq 2=&ա۩<>ry2=&աż=Z}!>%=X>۩<l >ż=Z@!>$ա<ҳs>۩<}!>%=X&Ⱦdc:>&Ⱦ.([<>Xо3:}>Xо¼}>&Ⱦdc:>Xо3:}>=׾ac:>Xо¼}>Xо3:}>=׾0([<>=׾ac:>Xо3:}>Xо<}>=׾0([<>Xо3:}>&Ⱦ.([<>Xо<}>Xо3:}>s>۩<r>ty}!>:Xr>ty}!>X}!>:X}!>X>ry}!>:X>ry>۩<}!>:X>۩<}!>%=X}!>:X}!>%=Xs>۩<}!>:X`A6b2l=>Ld1=?>pD?v8ˍ$o:o:o: A0    "#  !"%&'$%')*+()+./,,-.123013567457:;889:=>?<=?ABC@ACFGDDEFHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk0AoVMtl010  !"#$%&'()*+,-./PA@:pCube1_0GeA)A(4+z ris>z r.is>| r䷾4+{ r5޾4+{ r5޾is>| r䷾is> r=䷾4+ r=5޾4+ r=5޾is> r=䷾is> r=.4+ r=4+ r=is> r=.is>z r.4+z ris>z r.is> r=.is> r=䷾is>| r䷾4+ r=4+z r4+{ r5޾4+ r=5޾`A6d>(ѱ%> DsX2 ۾ A     0A'VMtl02  PA6@:pCube2_0GeA)A(h>۴(>Wm<.(>Qm<䷾h>۴5޾h>۴5޾(>Qm<䷾=6䷾ꪌ>kӾ5޾ꪌ>kӾ5޾=6䷾=6.ꪌ>jӾꪌ>jӾ=6.(>Wm<.h>۴(>Wm<.=6.=6䷾(>Qm<䷾ꪌ>jӾh>۴h>۴5޾ꪌ>kӾ5޾`A6dYD>i2(ѱ%>= r=E11 a>K ۾ A     0A'VMtl03  PA6@:pCube3_0GeA)A(>>Z=r.=.Z=r.=䷾>>4޾>>4޾Z=r.=䷾&H+>2䷾V>ѳ>5޾V>ѳ>5޾&H+>2䷾&H+>2.V>ѳ>V>ѳ>&H+>2.Z=r.=.>>Z=r.=.&H+>2.&H+>2䷾Z=r.=䷾V>ѳ>>>>>4޾V>ѳ>5޾`A6dYDf(ѱ%>ѽ r=P11%c>I> ۾ A     0A'VMtl04  PA6@:pCylinder3A)AH01>-v^=.ľ.=M=.ľ.=< ><.=M=.ľ=-v^=.ľA=<.=<=-v^=.ľ-=Ώ2.ľx=1A=<-=Ώ2.ľ=$v^/ľA=x=1=$v^/ľ.=M/ľ.=żA=.=M/ľ1>$v^/ľ >.=ż1>$v^/ľ[H>Ώ2.ľ>1 >[H>Ώ2.ľ1>-v^=.ľ ><>11>-v^=.ľ[H>Ώ2.ľ1>$v^/ľ.=M/ľ=$v^/ľ-=Ώ2.ľ=-v^=.ľ.=M=.ľ ><.=<A=<x=1A=.=ż >>1`A6߆=ż[>߆E.=K:A2 A     !" "# #$ $% %& &')*+()+/(+./+-.++,-0AGVMtl05 PAv  @:pCylinder5A)AH0>wi<+GӜ>l̤<60Tf̤<=l̤<6$>xi<0B#li<ो=0Tf̤<=$>xi<0Bd4>}2iFYaC?ng=#li<ो=d4>}2iF$>gi0B#siो=YaC?ng=$>gi0BGӜ>d̤60Tj̤=#siो=GӜ>d̤6>hi+hi+*r>1'YF1'>wi<+wi<+*r>1'>hi+GӜ>d̤6$>gi0Bd4>}2iF$>xi<0BGӜ>l̤<6h̤1q/i>z1JK A    !"# !#' #&'#%&##$%)*+()+/(+./+-.++,-0AGVMtl06 PAv  @:pCube4_0GeA)A(v=FUL< `G!!>FUL< `G!!>IULIUL=ULnv==ULnv==ULnG!!>=ULnG!!>@UL `v=@UL `v=@UL `G!!>@UL `G!!>FUL< `v=FUL< `G!!>FUL< `G!!>@UL `G!!>=ULnG!!>IUL"1 A     0A'VMtl07  PA6@:pCube5_0GeA)A(: ` =` =`Ǜܽ: `Ǜܽ: `Ǜܽ=`Ǜܽ=`<Ǜܽ: `<Ǜܽ: `<Ǜܽ=`<Ǜܽ=`< : `< : `< =`< =` : ` =` =`< =`<Ǜܽ=`Ǜܽ: `< : ` : `Ǜܽ: `<Ǜܽ`A6W>P&~c<`~:s61o A     0A'VMtl08  PA6 MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?ŝc>"&l=> @>? # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCube01 &s ۾!*"&d>%> = # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 & a> ۾K>!* @?"&d>%> = # # # #< #< #<0pCube2_0Ge@ &!*"&???0 $$$DUMMY@pCube03 &%c> ۾I!* @?"&d>%> = # # # #< #< #<0 pCube3_0Ge@  &!*"&???0 $$$DUMMY@pCylinder2 &.=!*"&߆=[>߆= # # # #< #< #<0 pCylinder3@  &!*"&???0 $$$DUMMY@pCylinder4 &/i>JK!*f_?"&h̤<CM>h̤< # # # #< #< #<0pCylinder5@  &!*"&???0$$$DUMMY@pCube04 &t >!*"&0d5V,CU̼ # # # #< #< #<0pCube4_0Ge@ &!*"&???0$$$DUMMY@pCube05 &so!*"&W>~c<`~= # # # #< #< #<0pCube5_0Ge@ &!*"&???gl-117-1.3.2/models/flarak1.3ds0000644000175000017500000002350210145416156015115 0ustar cedriccedricMMB' ==>=  VMtl01 >>>  >>>0 @0A0P0R0S00 ? VMtl02 >>>  >>>0 @0A0P0R0S00 ? VMtl03 _nO  _nO0 @0A0P0R0S00 ? VMtl04 _nO  _nO0 @0A0P0R0S00 ? VMtl05 |||  |||0 @0A0P0R0S00 ? VMtl06 |||  |||0 @0A0P0R0S00 ? VMtl07 |||  |||0 @0A0P0R0S00 ? VMtl08 _nO  _nO0 @0A0P0R0S00 ? VMtl09 _nO  _nO0 @0A0P0R0S00 ? ?@pCube3_0GeAA8.)>,qמ&>]מ71v>^Ō=1v>`A6UE3I=5N=撳"!*Q~EzJ:y> A90AVMtl01PA@pCube4_0GeAA8.;)>,@=&>]@=71v>^{;=1v>`A6UE3I=5N=撳"!*Q~4I=:y> A90AVMtl02PA@pCube2_0GeAA,>X;,>YB=U>XB=h=U>X;f=U>X;f=U>XB=h=<ΌSB=K><ΌgX;K>8GlX;|{>8GTB=|{>,>YB=,>X;,>YB=8GTB=|{><ΌSB=K>U>XB=h=8GlX;|{>,>X;U>X;f=<ΌgX;K>`A6=E1#=֍=>ѧ3펾nZ߷a=+4> A     0A#VMtl03  PA.@pCube1_0GeAA,>ѽ,>U>h=U>ѽf=U>ѽf=U>h=<Ό!K><ΌѽK>8Gѽ|{>8G|{>,>,>ѽ,>8G|{><Ό!K>U>h=8Gѽ|{>,>ѽU>ѽf=<ΌѽK>`A6=E1#=֍=>ѧ3펾nZ YV+4> A     0A#VMtl04  PA.@:pCube5_0GeA)A(@'>-J:$m<=/$m<=-@'>-Jjo@'>-Jjo$m<=-缀2El.='wjo='wjo2El.缀2Eh/=&w:=&w:2Eh/$m<=/@'>-J:$m<=/2Eh/2El.$m<=-=&w:@'>-J:@'>-Jjo='wjo`A6 n>v /2I.=t=6=J.1?l=Dӽ>e A     0A'VMtl05  PA6@:pCube6_0GeA)A(s69<6/𽌲<6-s6gos6go<6-缌<6=+s6=fos6=fo<6=+缌<6=/s6=8s6=8<6=/𽌲<6/s69<6/𽌲<6=/𽌲<6=+缌<6-s6=8s69s6gos6=fo`A6ω>I.=I.ӽ[1=e A     0A'VMtl06  PA6@:pCube7_0GeA)A(sۭ=u>7Ka;/𽦇Ka;*sۭ=u>cosۭ=u>coKa;*G>co'&>G>coG>7'&>G>77Ka;/G>7sۭ=u>7sۭ=u>co'&>G>co`A6 ns /I.=t6=R.1&f=(=jqS=m>jqS=m>= m>= m>=qS=m>=qS=m>== m>== m>==qS=m>==qS=m>=j m>=j m>=jqS=m>=jqS=m>j m>jqS=m>jqS=m>=jqS=m>==qS=m>= m>=j m>j m>= m>==`A6x%I=R걟 >m;z~< A     0A'VMtl08  PA6@:pCube9_0GeA)A(] , ~>R, ~>R- E>] - E>] - E>R- E>R# <E>] # <E>] # <E>R# <E>R$ <~>] $ <~>] $ <~>R$ <~>R, ~>] , ~>R, ~>R$ <~>R# <E>R- E>] $ <~>] , ~>] - E>] # <E>`A6( 4=w( 4=( 4wܸ|c/> A     0A'VMtl09  PA6\ MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &Q~:y>BzJ=!*#Qw@e'?z>e'"&I=u"=s= # # # #< #< #<0pCube3_0Ge@ &!*"&???0$$$DUMMY@pCube02 &Q~:y>7I!*#Qw@e'?z>e'"&I=u"=s= # # # #< #< #<0pCube4_0Ge@ &!*"&???0$$$DUMMY@pCube03 &nZ+4>a!*?IcoI>"&=ǣ=? # # # #< #< #<0pCube2_0Ge@ &!*"&???0 $$$DUMMY@pCube04 &nZ+4>YV=!*?IcoI>"&=ǣ=? # # # #< #< #<0 pCube1_0Ge@  &!*"&???0 $$$DUMMY@pCube05 &?l==eD=!* @?"&ω>== # # # #< #< #<0 pCube5_0Ge@  &!*"&???0 $$$DUMMY@pCube06 &ӽ=e!*"&ω>== # # # #< #< #<0pCube6_0Ge@  &!*"&???0$$$DUMMY@pCube07 &&f==e(ν!* @?"&ω>== # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube08 &;~<!*"&x%I= >m= # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCube09 &ܸc/>!*"&( 4=( 4=( 4= # # # #< #< #<0pCube9_0Ge@ &!*"&???gl-117-1.3.2/models/flare1.3ds0000644000175000017500000000306110145416156014744 0ustar cedriccedricMM1 ==>=  VMtl01   fff0 @0A0P0R0S00 ?30dFLARE_CH.JPGQS  ?@pCube1_0GeAA8>?>?33@A(????`A6?3?33> A90AVMtl01PA< MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &?!*"&??? # # # #< #< #<0pCube1_0Ge@ &!*"&???gl-117-1.3.2/models/gl-117.3ds0000644000175000017500000002454210145416156014511 0ustar cedriccedricMMb) ==>=  VMtl01 '!  Ũ0 @0A0P0R0S00 ? VMtl02 '!  Ũ0 @0A0P0R0S00 ? VMtl03 '!  Ũ0 @0A0P0R0S00 ? VMtl04 '!  Ũ0 @0A0P0R0S00 ? VMtl05 '!  Ũ0 @0A0P0R0S00 ? VMtl06 '!  Ũ0 @0A0P0R0S00 ? ?@Z pCube1_0GeAI Ax]96>̽*6>̽*6>=]96>=]96>=*6>=*>=X9>=X9>=*>=*>̽X9>̽X9>̽*>̽*6>̽]96>̽*6>̽*>̽*>=*6>=VѸ>̽[Ѹ6>̽[Ѹ6>=VѸ>=X9>̽]96>̽[Ѹ6>̽VѸ>̽b9T ̽b9S =`ѸS =`ѸT ̽]96>=X9>=VѸ>=[Ѹ6>=X9>=X9>̽VѸ>̽VѸ>=]96>̽]96>=]9=]9̽]96>=[Ѹ6>=[Ѹ=]9=[Ѹ6>=[Ѹ6>̽[Ѹ̽[Ѹ=[Ѹ6>̽]96>̽]9̽[Ѹ̽(R+̽(R+=2R+S =2R+T ̽]9=[Ѹ=`ѸS =b9S =[Ѹ=[Ѹ̽`ѸT ̽`ѸS =[Ѹ̽]9̽b9T ̽`ѸT ̽]9̽]9=FX=FX̽]9=b9S =FXS =FX=b9S =b9T ̽FXT ̽FXS =b9T ̽]9̽FX̽FXT ̽LL2wi>i Ae<     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;=>?<=?@AB@BCDEFDFGHIJHJKLMNLNOPQRPRSWTUUVWXYZXZ[^_\\]^`ab`bcefgdeghijhjkolmmnopqrprstuvtvw0AVMtl01<  !"#$%&'()*+,-./0123456789:;PA@pCube2_0GeAA88U̽/#R>̽/#R>=8U=8U=/#R>=&R>=ヘU=ヘU=&R>=%R>̽ホU̽ホU̽%R>̽/#R>̽8U̽/#R>̽%R>̽&R>=/#R>=゚̽:̽:=゙=ホU̽8U̽:゚̽̽u>U̽u>U=u>=u>̽8U=ヘU=゙=:=ヘU=ホU゚゙̽̽=8U̽8U=u>U=u>U̽8U=:=u>=u>U=:=:̽u>̽u>=:̽8U̽u>U̽u>̽`A64L?LL2L>L>'g*l=*l A     !" "#$%&$&'()*(*+,-.,./0120234564670AGVMtl02 PAv@:pCube3_0GeA)A(n>̽̽ P?̽̽ P?̽=n>̽=n>̽= P?̽= P?==n>==n>== P?== P?=̽n>=̽n>=̽ P?=̽ P?̽̽n>̽̽ P?̽̽ P?=̽ P?== P?̽=n>=̽n>̽̽n>̽=n>==`A6?L2L>LL2 ? A     0A'VMtl03  PA6@:pCube4_0GeA)A(?̽t?̽t?=?=?=t?=t?>=?>=?>=t?>=t?>̽?>̽?>̽t?>̽t?̽?̽t?̽t?>̽t?>=t?=?>̽?̽?=?>=`A6L>L2L>kk3? A     0A'VMtl04  PA6@:pCube5_0GeA)A(k?̽?̽?=k?=k?=?=?>=k?>=k?>=?>=?>̽k?>̽k?>̽?>̽?̽k?̽?̽?>̽?>=?=k?>̽k?̽k?=k?>=`A6L>L2L>kk38? A     0A'VMtl05  PA6@pCube6_0GeAA88@|>̽9@*̽9@*=8@|>=8@|>=9@*=@*=@|>=@|>=@*=@*̽@|>̽@|>̽@*̽9@*̽8@|>̽9@*̽@*̽@*=9@*=@͸>̽8@˸>̽8@˸>=@θ>=@|>̽8@|>̽8@˸>̽@͸>̽?|>̽?|>=?Ƹ>=?Ƹ>̽8@|>=@|>=@θ>=8@˸>=@|>=@|>̽@͸>̽@θ>=8@|>̽8@|>=?|>=?|>̽8@|>=8@˸>=?Ƹ>=?|>=8@˸>=8@˸>̽?Ƹ>̽?Ƹ>=8@˸>̽8@|>̽?|>̽?Ƹ>̽`A64LL3L2L>L'_ @fbgb1 A     !" "#$%&$&'()*(*+,-.,./0120234564670AGVMtl06 PAv MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &wi!*"&?L>L> # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &g*l!*?"&L?L>L> # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube03 & ?!*"&?L>L> # # # #< #< #<0pCube3_0Ge@ &!*"&???0 $$$DUMMY@pCube04 &?!*"&L>L>k? # # # #< #< #<0 pCube4_0Ge@  &!*"&???0 $$$DUMMY@pCube05 &8?!*"&L>L>k? # # # #< #< #<0 pCube5_0Ge@  &!*"&???0 $$$DUMMY@pCube06 &_ @gb=!*??"&L?L>L> # # # #< #< #<0pCube6_0Ge@  &!*"&???gl-117-1.3.2/models/gl-14.3ds0000644000175000017500000022757610145416156014441 0ustar cedriccedricMM~/ ==x>= 01 - Standard  0 @0 A0P0R0S00 ?[0dGL-14_C2.TGAQS T >V >X S?Z U VMtl02 GGG  GGG0 @0A0P0R0S00 ? VMtl04 GGG  GGG0 @0A0P0R0S00 ? VMtl05   0 @0A0P0R0S00 ? VMtl06 GGG  GGG0 @0A0P0R0S00 ? VMtl07  0 @0A0P0R0S00 ? VMtl08 GGG  GGG0 @0A0P0R0S00 ? VMtl09  0 @0A0P0R0S00 ? VMtl11 GGG  GGG0 @0A0P0R0S00 ?02 - Standard  0 @0 A0P0R0S00 ?Q0dGL-14_CH.TGAQS T V ?X G? VMtl17 GGG  GGG0 @0A0P0R0S00 ? VMtl18 GGG  GGG0 @0A0P0R0S00 ? VMtl19 GGG  GGG0 @0A0P0R0S00 ? VMtl20 GGG  GGG0 @0A0P0R0S00 ?01 - Standard1 KKK  KKK0 @0 A0P0R0S00 ? ?@pCylinder2AAH Pd PNѽ [ս I,1PNѽPg꽂 Ͻ%Ͻ [սPg꽂PM+' [սTt Ͻ%ϽPM+'Pd [սTtPdP&.* 4V׼ ^P&.*PM C3_ 4V׼PMPd*' l~Tt C3_^Pd*'Pf %Ͻ l~TtPfPdѽ l~ %ϽPdѽPM B3_I,1 l~PM P%. 444 B3_I,1P%.Pd I,1 444 I,1 [ս7%=˽dE7%=y }B [ս Ͻ%Ͻ7%=+SŽڽ7%=˽dE Ͻ%Ͻ [սTt7%=˽^q7%=+SŽڽ [սTt 7%=y ü7%=˽^q 4V׼7%=::7%=y ü 4V׼ C3_7%=lü7%=:: C3_ l~Tt7%=n ^q7%=lü l~Tt %Ͻ7%=Ţڽ7%=n ^q %Ͻ l~7%=m cE7%=Ţڽ l~ B3_I,17%=l}B7%=m cE B3_I,1 4447%=:xE7%=l}B 444 I,17%=y }B7%=:xE7%=y }B7%=˽dEg>[̽܀g>w 67%=˽dE7%=+SŽڽg> ƽ޽g>[̽܀7%=+SŽڽ7%=˽^qg>[̽w1g> ƽ޽7%=˽^q7%=y üg>w '뻫g>[̽w17%=y ü7%=::g>f8>M5og>w '7%=::7%=lüg>p'뻫g>f8>M5o7%=lü7%=n ^qg>w1g>p'7%=n ^q7%=Ţڽg>|޽g>w17%=Ţڽ7%=m cEg>ۀg>|޽7%=m cE7%=l}Bg>p6g>ۀ7%=l}B7%=:xEg>e8>!:g>p67%=:xE7%=y }Bg>w 6g>e8>!:g>w 6g>[̽܀D>;ֽtD> g>[̽܀g> ƽ޽D>н~D>;ֽt齫g> ƽ޽g>[̽w1D><ֽǼD>н~g>[̽w1g>w 'D> A<ֽǼg>w '뻫g>f8>M5oD>.:T< Af8>M5og>p'D>hA.:T<p'뻫g>w1D>rBǼD>hAw1g>|޽D>~D>rBǼg>|޽g>ۀD>qBtD>~g>ۀg>p6D>hD>qBt齫g>p6g>e8>!:D>.:xGD>hg>e8>!:g>w 6D> D>.:xGD> D>;ֽt:?Gڽf :?H< ܽD>;ֽtD>н~:?3ԽC:?Gڽf D>н~D><ֽǼ:?Gڽ::?3ԽCD><ֽǼD> A<:?H<  <:?Gڽ:D> A.:T<<:?X4=7 =:?H<  .:T<hA<:?u] <:?X4=7 =D>hArBǼ:?1{::?u] rBǼD>~:?7~C:?1{:D>~D>qBt:?1{f :?7~CD>qBtD>h:?u]ܽ:?1{f D>hD>.:xG:?X4G:?u]ܽD>.:xGD> :?H< ܽ:?X4G@A"~@Ͷ=~@M =@mL@OL@M>?L@=A@5>@>>bL@Yj>OL@M>@>>@Lo>~L@3>bL@Yj>@Lo>@>ՔL@"m>~L@3>@>-@J>*L@ۼ>ՔL@"m>-@J>~@y>vL@>*L@ۼ>~@y>~@I*>L@ >>vL@>~@I*>"~@Ͷ=L@O=L@ >>L@O=@mL@@Pg>@=OL@M>bL@Yj>@!>@Pg>bL@Yj>~L@3>T@>@!>~L@3>ՔL@"m>@>T@>ՔL@"m>*L@ۼ>@w,>@>*L@ۼ>vL@>&@>@w,>vL@>L@ >>@qqT>&@>L@ >>L@O= @`=@qqT> @`=z@B];d?w+?Vz>ZK?9=@Pg>@!>n?;>+?Vz>@!>T@>r?J>n?;>T@>@>M?7>r?J>@>@w,>f?>M?7>@w,>&@>k?3>f?>&@>@qqT>?f>k?3>@qqT> @`=G?3=?f>G?3=d?w(+F?c2=ZK?9=+?Vz>N}@?|>@?Y>+?Vz>n?;>c A?>N}@?|>n?;>r?J>PF?]>c A?>r?J>M?7>VM?c>PF?]>M?7>f?>5T?p>VM?c>f?>k?3>Y?^>5T?p>k?3>?f>Y? i>Y?^>?f>G?3=qY?9=Y? i>qY?9=A T?Y= =S=o=y=A T?Y=.M?d=n=g*D= =S=.M?d=(+F?c2= <$k=n=g*D=(+F?c2=@?Y>";9& > <$k=@?Y>N}@?|>Yv>";9& >N}@?|>c A?>p;w>Yv>c A?>PF?]>Xo<5>p;w>PF?]>VM?c>Am=F[>Xo<5>VM?c>5T?p>g=>Am=F[>5T?p>Y?^>W=>g=>Y?^>Y? i>>=.te>W=>Y? i>qY?9=o=y=>=.te>`A6퀽?L?L0޼e8>ڽ Ax    !"# !#%&'$%'*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSVWTTUVZ[XXYZ^_\\]^abc`acefgdegijkhikmnolmoqrspqsuvwtuwz{xxyz~||}~0A01 - Standardx  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwPA@"pCylinder1AAhHPNѽPd 7&.Pg꽂PNѽ7&.PM+'Pg꽂7&.PdPM+'7&.P&.*Pd7&.PMP&.*7&.Pd*'PM7&.PfPd*'7&.PdѽPf7&.PM Pdѽ7&.P%.PM 7&.Pd P%.7&.:?H< ܽ:?Gڽf :?X4C:?Gڽf :?3ԽC:?X4C:?3ԽC:?Gڽ::?X4C:?Gڽ::?H<  <:?X4C:?H<  <:?X4=7 =:?X4C:?X4=7 =:?u] <:?X4C:?u] <:?1{::?X4C:?1{::?7~C:?X4C:?7~C:?1{f :?X4C:?1{f :?u]ܽ:?X4C:?u]ܽ:?X4G:?X4C:?X4G:?H< ܽ:?X4C`A6퀽?L?L0޼e8>ڽ Am   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG0A?VMtl02 PAf@pCylinder4AAH B?ҟ>B?=ѽ>=>! >?,1B?=ѽB?=^>lG=%Ͻ>=B?=^B?='>=St>lG=%ϽB?='B?ҟ>>! >JV>=StB?ҟ>B?y?.>>4>׼>! >J3B?y?.>B?M>>s_>AV>4>׼B?M>B?ie>'>~>St>s_>A2B?ie>'B?g>_>一>%Ͻ>~>StB?g>_B?ie>ѽ>~>>一>%ϽB?ie>ѽB?M>>s_>?,1>~>B?M>B?{?.>>4>44>s_>?,1B?{?.>B?ҟ>>! >?,1>4>44>! >?,1>=>!=`E>p >yB>=>lG=%Ͻ>=ڽ>!=`E>lG=%Ͻ>=St>!=^q>=ڽ>=St>! >J,>p >ü>!=^q>! >JV>4>׼>5;>>p >ü>4>׼>s_>A,>2^l>ü>5;>>s_>AV>~>St>M->^q>2^l>ü>~>St>一>%Ͻ>ĉ>ڽ>M->^q>一>%Ͻ>~>>L->`E>ĉ>ڽ>~>>s_>?,1>1^l>zB>L->`E>s_>?,1>4>44>5;>uE>1^l>zB>4>44>! >?,1>p >yB>5;>uE>p >yB>!=`ES<=߀S< >6>!=`E>=ڽT<}|=޽S<=߀>=ڽ>!=^qV<=w1T<}|=޽>!=^q>p >üV< >Q(V<=w1>p >ü>5;>V>6oV< >Q(뻌>5;>>2^l>üV<;q>Q(V>6o>2^l>ü>M->^qV<2>w1V<;q>Q(뻌>M->^q>ĉ>ڽT<׌>޽V<2>w1>ĉ>ڽ>L->`ES<2>߀T<׌>޽>L->`E>1^l>zBS<;q>6S<2>߀>1^l>zB>5;>uES>":S<;q>6>5;>uE>p >yBS< >6S>":S< >6S<=߀/A=齚B >S<=߀T<}|=޽N=~/A=T<}|=޽V<=w1.A=ǼN=~V<=w1V< >Q(뻚B >CA<.A=ǼV< >Q(V>6o[4;><CA>6oV<;q>Q(뻚&i>CA<[4;><Q(V<2>w1"d>Ǽ&i>CAw1T<׌>޽>~"d>ǼT<׌>޽S<2>߀"d>齛>~S<2>߀S<;q>6&i>"d>S<;q>6S>":\4;>G&i>S>":S< >6B >\4;>GB >/A=.H= .HVw > ܽ/A=齛N=~/Hf=C.H= N=~.A=Ǽ/H=y:/Hf=C.A=ǼB >CACA<[4;><7 =/HVw ><[4;><<&i>CA7 =&i>CA<"d>Ǽ/H{>y:/H]><"d>Ǽ>~/HGz~>C/H{>y:>~"d>.H{> /HGz~>C"d>齚&i>.H]> ܽ.H{> &i>\4;>G.H4>h.H]> ܽ\4;>GB >.HVw > ܽ.H4>h@AJ~@Tq>M1@>/L@>L@G>M1@>s@B>XL@>/L@>s@B>@>zL@ >XL@>@>@%>t]L@x%>zL@ >@%>0@k>sJL@e>t]L@x%>0@k>@FB>:L@=sJL@e>@FB>h@S= ?L@6=:L@=h@S=F@!==TL@4= ?L@6=F@!==~@Y=vlL@j=TL@4=~@Y= ~@)>L@ >vlL@j= ~@)>~@j1x>RL@u>L@ >~@j1x>J~@Tq>L@G>RL@u>L@G>/L@>@n>@5>/L@>XL@>@>@n>XL@>zL@ >M@_}>@>zL@ >t]L@x%>@U>M@_}>t]L@x%>sJL@e>@Ő\>@U>sJL@e>:L@=<@=@Ő\>:L@= ?L@6=~@<<@= ?L@6=TL@4=@<~@@=v@fRL@u>@|o>@=RL@u>L@G>@5>@|o>@5>@n>$?Ѯ>e?*>@n>@>W ?Y>$?Ѯ>@>M@_}>f?>W ?Y>M@_}>@U>(b?kծ>f?>@U>@Ő\>? Z>(b?kծ>@Ő\><@=>?*=? Z><@=~@<(?>?*=~@<@<?77(?@?o>@?8=@|o>@5>e?*>?o>e?*>$?Ѯ>/T?հ>Y?X>$?Ѯ>W ?Y>OM?@>/T?հ>W ?Y>f?>xGF?>OM?@>f?>(b?kծ>6A?>xGF?>(b?kծ>? Z>!t@?8j>6A?>? Z>>?*=@?=!t@?8j>>?*=(?"F?E* =@?=(??77&M?, ="F?E* =?77\?Sς<T?D=&M?, =\?Sς<@?8=X?M >T?D=@?8=?o>Y?~{>X?M >?o>e?*>Y?X>Y?~{>Y?X>/T?հ>=B>IK=b>/T?հ>OM?@>0m=Hm>=B>OM?@>xGF?>^<>0m=Hm>xGF?>6A?>p;̵>^<>6A?>!t@?8j>W>p;̵>!t@?8j>@?=cD";z>W>@?="F?E* =Q<=cD";z>"F?E* =&M?, =n=#=Q<=&M?, =T?D=x= =n=#=T?D=X?M >ڭ=7(>x= =X?M >Y?~{>=>ڭ=7(>Y?~{>Y?X>IK=b>=>`A6퀽?~5OzBL?V?/ݼv>>ڽ Ax    !"# !#%&'$%'*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSVWTTUVZ[XXYZ^_\\]^abc`acefgdegijkhikmnolmoqrspqsuvwtuwz{xxyz~||}~0A01 - Standardx  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwPA@"pCylinder5AAhHB?=ѽB?ҟ>a)?y?.>dB?=^B?=ѽa)?y?.>dB?='B?=^a)?y?.>dB?ҟ>B?='a)?y?.>dB?y?.>B?ҟ>a)?y?.>dB?M>B?y?.>a)?y?.>dB?ie>'B?M>a)?y?.>dB?g>_B?ie>'a)?y?.>dB?ie>ѽB?g>_a)?y?.>dB?M>B?ie>ѽa)?y?.>dB?{?.>B?M>a)?y?.>dB?ҟ>B?{?.>a)?y?.>d.HVw > ܽ.H= /H4>C.H= /Hf=C/H4>C/Hf=C/H=y:/H4>C/H=y:/HVw >C/HVw >7 =/H4>C/H4>7 =/H]>C/H]>y:/H4>C/H{>y:/HGz~>C/H4>C/HGz~>C.H{> /H4>C.H{> .H]> ܽ/H4>C.H]> ܽ.H4>h/H4>C.H4>h.HVw > ܽ/H4>C`A6퀽?~5OzBL?V?/ݼv>>ڽ Am   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG0A?VMtl04 PAf@" pSphere1_0A AxZKO=/=捿==V%l=^=^L?=<=捿==酣KO==M?==V%l=^=酣KO==z&\$~x==[S=M?==z&\$~x=酣KO=L?==[S=酣KO=捿=V%l^=L?=捿=ZKO/=^L?<=V%l^=ZKO/=BAyJ=.I%A>^L?<=BAyJ=ZKO=/=^L?=<=.I%A>^L?=<=V%l=^=GKO=u>Yk=@!>V%l=^=M?===>GKO=u>M?===[S=棿FVX%5,>=>=[S=L?=>棿FVX%5,>L?=V%l^=GKOu>>V%l^=^L?<=Yk@!>GKOu>^L?<=.I%A>Z9%G$>Yk@!>.I%A>^L?=<=Yk=@!>Z9%G$>Yk=@!>GKO=u>e`<4>}<%8>GKO=u>=>ɫ<1>e`<4>=>棿FVX%5,>*_<$š0>ɫ<1>棿FVX%5,>>ɫ1>*_<$š0>>GKOu>e`4>ɫ1>GKOu>Yk@!>}%8>e`4>Yk@!>Z9%G$>t@$9>}%8>Z9%G$>Yk=@!>}<%8>t@$9>}<%8>e`<4> p^,$=>e`<4>ɫ<1> p^,$=>ɫ<1>*_<$š0> p^,$=>*_<$š0>ɫ1> p^,$=>ɫ1>e`4> p^,$=>e`4>}%8> p^,$=>}%8>t@$9> p^,$=>t@$9>}<%8> p^,$=>`A6S?#=q>6O>Ȑ= A-8     # !!"#'$%%&'+())*+,-.,./012023456467;899:;<=><>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVW[XYYZ[\]^\^_`abcdefghijklmnopqrstuvw0AVMtl058  !"#$%&'()*+,-./01234567PA@pCylinder9AAT18?kmƽ)8?s ݽ~aV? IIV?| 4 )8?s ݽ~CR7?t ݽSU?PhaV? ICR7?t ݽS6?k|< #U?| U-imƽ@/8?Fw>~sgV?ͫj> IV?{U>3 @/8?Fw>~W7?Fw>S9U?ͫj>PhsgV?ͫj> IW7?Fw>S6?]>|<(U?{U>U-i<9U?ͫj>Ph6?]>|<0g6?233><ap<(U?{U>U-i<0g6?233><<6?K >|<(U?>U-iap<6?K >|U-inƽV?>4 sgV?1u= I8?K >nƽ 9?333>b,W?233>'CV?>4  9?333>ὃ8?]>mƽV?{U>3 b,W?233>'C@/8?==~W7?==S7?233>'`A6??o:o:o: AC     !" "#'$%%&'()*0A9VMtl08 PAZ@(pCylinde11AA9@/8?Fw>~8?]>mƽ7?233>'W7?Fw>S@/8?Fw>~7?233>'6?]>|S7?233>'0g6?233><<6?]>|<7?233>'6?K >|<0g6?233><<7?233>'W7?==S6?K >|<7?233>'8?K >nƽ@/8?==~7?233>' 9?333>ὃ8?K >nƽ7?233>'8?]>mƽ 9?333>ὤ7?233>'V?{U>3 sgV?ͫj> IMV?233>sgV?ͫj> I9U?ͫj>PhMV?233>9U?ͫj>Ph(U?{U>U-i(U?{U>U-iapIT?233>ap<(U?>U-i(U?>U-i<9U?1u=PhMV?233>9U?1u=PhsgV?1u= IMV?233>sgV?1u= IV?>4 MV?233>V?>4 b,W?233>'CMV?233>b,W?233>'CV?{U>3 MV?233>`A6??o:o:o: A'   !"#$%&'()*+,-./0123456780A5VMtl09 PAR@&pCylinde13A&AHpu¿<#5u¿7=3Oh= O<,ou¿7=3u¿~I=FOd=&Oh= u¿~I=Fu¿Z=H,<u¿~I=R*=u¿7= V=Oh=S=Oe=n=u¿7= V=u¿<̅=O<u¿~IFu¿72Oh Od&u¿72u¿림#5O,oOh u¿림#5u¿1GO2%#O,ou¿1Gu¿<#5O<,oO2%#O<,oOh= ?EQ_=E5?E G=:Oh= Od=&?E=9?EQ_=E5Od=&O{=>=?E==[=Oh=S=O=O?EG=U,=O 2a=Op=?E GU,=?E%<>Op=OhS=?EQ_>=?E GU,=OhS=Oen=?E󬽘[=?EQ_>=Oen=O{>=:8|u==:^=\h=?EQ_=>=?EG=U,=:=A=:8|u==?EG=U,=?E%<>:\R=:=A=?E%<>?E GU,=:C=:\R=?E GU,=?EQ_>=:8|u=:C=?EQ_>=?E󬽘[=:^\h=:8|u=?E󬽘[=?E37V<:IC<:^\h=?E37Vp̼Y:G㖽:=,ppHN`vHY~`gEQX>p^@@=>@!=Q->@2>^@@=(_@=J?@ط=>@!=(_@=Z`@Z==(@@5C)xB@r>A@B=Qb@A>b@dG>wB@kL>)xB@r>b@dG>enb@ϟv>#B@J>wB@kL>enb@ϟv>b@:=>(+B@a>#B@J>b@:=>ga@b>.pA@mS>(+B@a>ga@b>7`@y̠>ҍ@@>.pA@mS>7`@y̠>_@o>?@K">ҍ@@>_@o>3_@c>>@'>?@K">3_@c>Z^@Iv>S>@~q>>@'>Z^@Iv>Q^@caH>>@nM>S>@~q>Q^@caH>,^@Qk>Q->@2>>@nM>Q->@2>>@!=%@=$@>>@!=J?@ط= %@R <%@=J?@ط==(@@5C< s&@ %@R <=(@@5C<8A@}]=<'@P]< s&@8A@}]=A@B='@:h=<'@P]w(@i='@:h=)xB@r>wB@kL>(@P>w(@i=wB@kL>#B@J>I(@q>(@P>#B@J>(+B@a>>(@+>I(@q>(+B@a>.pA@mS>'@>>(@+>.pA@mS>ҍ@@>&@>'@>ҍ@@>?@K">&@S>&@>?@K">>@'>f%@">&@S>>@'>S>@~q>h$@H>f%@">S>@~q>>@nM>$@%$R>h$@H>>@nM>Q->@2>$@>$@%$R>$@>%@=d?=?Yi>%@= %@R ?S!=w(@i=(@P>2?sZ>?>(@P>I(@q>8?Y6>2?sZ>I(@q>>(@+>?>8?Y6>>(@+>'@>?>'@>&@>/O?>&@>&@S>?n>/O?>&@S>f%@">wj?H>?n>f%@">h$@H>?>wj?H>h$@H>$@%$R>2?'[>?>$@%$R>$@>?Yi>2?'[>?Yi>d?=?!=ד?)>d?=vO?2%=ˀ?=?!=vO?2%==?0?&> ?9_=?>2?sZ>J?`a>?&>2?sZ>8?Y6>l"?C>J?`a>8?Y6>?>K?*>l"?C>?>5|?1>K?*>/O?>?D>5|?1>/O?>?n>VՓ?:$>?D>?n>wj?H>?Ǥ>VՓ?:$>wj?H>?>n?PŒ>?Ǥ>?>2?'[>?Pa>n?PŒ>2?'[>?Yi>ד?)>?Pa>ד?)>?!=9 ?G.>?H>?!=ˀ?=^?x>9 ?G.>ˀ?=P?=p?>^?x>P?=&?= ?>p?>&?= ?9_=; ? t-> ?> ?9_=?&> ?N H>; ? t->?&>J?`a>+ ? g> ?N H>J?`a>l"?C> ?~>+ ? g>l"?C>K?*>*q ?ؐ> ?~>K?*>5|?1>?>*q ?ؐ>5|?1>?D>?>?>?D>VՓ?:$>@?^>?>VՓ?:$>?Ǥ>-??Gw>@?^>?Ǥ>n?PŒ>b?G>-??Gw>n?PŒ>?Pa>?g>b?G>?Pa>ד?)>?H>?g>?H>9 ?G.>m>9 ?G.>^?x>m>^?x>p?>m>p?> ?>m> ?>; ? t->m>; ? t-> ?N H>m> ?N H>+ ? g>m>+ ? g> ?~>m> ?~>*q ?ؐ>m>*q ?ؐ>?>m>?>?>m>?>@?^>m>@?^>-??Gw>m>-??Gw>b?G>m>b?G>?g>m>?g>?H>m>`A6ޞ?ö-?[6V< A     "#  !"&'$$%&*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSUVWTUWYZ[XY[^_\\]^bc``abfgddefjkhhijnollmnrsppqrvwttuvz{xxyz}~|}       # !!"#'$%%&'+())*+/,--./301123745567;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinde14AAH0u¿7=3u¿<#5͛߿K9\u¿~I=Fu¿7=3͛߿K9\u¿Z=H,<u¿~I=F͛߿K9\u¿~I=R*=u¿Z=H,<͛߿K9\u¿7= V=u¿~I=R*=͛߿K9\u¿<̅=u¿7= V=͛߿K9\u¿^A-% =u¿<̅=͛߿K9\u¿림̅=u¿^A-% =͛߿K9\u¿7 V=u¿림̅=͛߿K9\u¿~IS*=u¿7 V=͛߿K9\u¿ZH,<u¿~IS*=͛߿K9\u¿~IFu¿ZH,<͛߿K9\u¿72u¿~IF͛߿K9\u¿림#5u¿72͛߿K9\u¿1Gu¿림#5͛߿K9\u¿<#5u¿1G͛߿K9\`A6ޞ?ö-?[6V< A   !"#$%&'()*+,-./0A/VMtl11 PAF@AMpCylinde16A0MA"w~=S+D(cϿ=>w~K">DGv;c K>(w~r^7>I=cTn>hGv;w~&=>I=w~r^7>A=cf>;hA=w~K">q@:=c K>=cf>;q@:=w~=(C=cϿ=/=c K>=w~=(C=w~o:DcD=cp:(2=cϿ=/=w~o:DcD=w~|(C=ck/=cp:(2=w~|(C=w~> q@:=cI=ck/=w~> q@:=w~'R5A=c@ d; A AcI(w~{R+w~o:co:RFcϿ=>c K>(HHԓj>ȸHH=`⼿c K>(cf>Gv;HHp>rHHԓj>ȸcf>Gv;cTn>h<HH$L>*1;HHp>r껿cTn>h;<HHp>U<HH$L>*1;cf>;=HHӓj>0=HHp>U=cϿ=/=HH=a,=HHӓj>0=cϿ=/=cp:(2=HHo:/=HH=a,=cp:(2=ck/=HHHؽa,=HHo:/=ck/=cI=HHh0=HHHؽa,=cI=c@ d;<HHNU<HHh0=c@ d;HHGؽ`HHhȸcl>co:RFHHo:HHGؽ`⼿co:RFcϿ=>HH=`HHo:HH=`HHԓj>ȸN -aA>N -"=U4HHԓj>ȸHHp>rN -x>,N -aA>HHp>rHH$L>*1;N -0Ԛ>o:N -x>,HH$L>*1;HHp>UIo:HHp>U<HHӓj>0=N -aA>F=N -x>I<HHӓj>0=HH=a,=N -"=<=N -aA>F=HH=a,=HHo:/=N -p:9@=N -"=<=HHo:/=HHHؽa,=N -<=N -p:9@=HHHؽa,=HHh0=N -<;F=N -<=HHh0=HHNU&aA>&"=U4N -aA>N -x>,&x>,&aA>N -x>,N -0Ԛ>o:p?o:&x>,N -0Ԛ>o:N -x>I<&x>I<p?o:N -x>IF=&aA>F=&x>IF=N -"=<=&"=<=&aA>F=N -"=<=N -p:9@=&p:9@=&"=<=N -p:9@=N -<=&<=&p:9@=N -<=N -<;F=&<;F=&<=N -<;F=N -mrJ<&mrJ<&<;F=N -mrJ=)>=>U4&aA>&x>,=0>,=)>&x>,p?o:= [?o:=0>,p?o:&x>I<=0>J<= [?o:&x>I<&aA>F==)>F==0>J<&aA>F=&"=<==><==)>F=&"=<=&p:9@==p:9@==><=&p:9@=&<==<==p:9@=&<=&<;F==#F==<=&<;F=&mrJ<= 뻾J<=#F=&mrJ<%po:=0[o:= 뻾J<%po:&mr+= 뻾+=0[o:&mr+&<;=#= 뻾+&<;&U4=U4=#&U4&o:8=o:8=U4&o:8&"=U4=>U4=o:8=>U4=)> =)> =>U4=)>=0>, =0>, =)>=0>,= [?o: =>o: =0>,= [?o:=0>J< =0>J< =>o:=0>J<=)>F= =)>F= =0>J<=)>F==><= =><= =)>F==><==p:9@= =p:9@= =><==p:9@==<= =<= =p:9@==<==#F= =#F= =<==#F== 뻾J< = 뻾J< =#F== 뻾J<=0[o: =ٱ¾o: = 뻾J<=0[o:= 뻾+ = 뻾+ =ٱ¾o:= 뻾+=# =# = 뻾+=#=U4 =U4 =#=U4=o:8 =o:8 =U4=o:8=>U4 =>U4 =o:8 =>U4 =)>Z>u>GZ>j=\c =)> =0>,Z>> OZ>u>G =0>, =>o:Z>>r;Z>> O =>o: =0>J>>ͨ>r; =0>J< =)>F=Z>u>=Z>>>ͨ< =)>F= =><=Z>k=w4=Z>u>= =><= =p:9@=Z>p: 8=Z>k=w4= =p:9@= =<=Z>Rw4=Z>p: 8= =<= =#F=Z>s =Z>Rw4= =#F= = 뻾J쉾ͨs = = 뻾J< =ٱ¾o:Z>g玾s;Z>쉾ͨ< =ٱ¾o: = 뻾+Z>쉾 OZ>g玾s; = 뻾+ =#Z>sGZ>쉾 O =# =U4Z>S\cZ>sG =U4 =o:8Z>p:oZ>S\c =o:8 =>U4Z>j=\cZ>p:oZ>j=\cZ>u>G>.`>+U>=&Z>u>GZ>> O>@~>E>.`>+UZ>> OZ>>r;>(>r<>@~>EZ>>r;Z>>>ͨ<>@~>Z<>(>r>>ͨu>=>`>=>@~>Zu>=Z>k=w4=>='=>`>=Z>k=w4=Z>p: 8=>p:V*=>='=Z>p: 8=Z>Rw4=>Ͻ'=>p:V*=Z>Rw4=Z>s =>^=>Ͻ'=Z>s =Z>쉾ͨ<>4|V[<>^=Z>쉾ͨg玾s;>r<>4|V[g玾s;Z>쉾 O>4|D>r쉾 OZ>sG>k^+U>4|DZ>sGZ>S\c>Ͻ&>k^+UZ>S\cZ>p:o>o:ü>Ͻ&Z>p:oZ>j=\c>=&>o:ü>=&>.`>+UQ?R>Q;Q?|=;>.`>+U>@~>EQ?_Pn>e=@Q;>@~>E>(>r;e=@<>(>r<>@~>ZX;<>@~>Z<>`>=Q?R>=Q?_Pn>X<>`>=>='=Q?=$*+=Q?R>=>='=>p:V*=Q?o:,=Q?=$*+=>p:V*=>Ͻ'=Q?½$*+=Q?o:,=>Ͻ'=>^=Q?^=>4|V[4|V[<>rr<>4|DQ?Dle=@4|D>k^+UQ?k^+U>Ͻ&Q?½;Q?Ͻ&>o:üQ?o:6Q?½;>o:ü>=&Q?|=;Q?o:6Q?|=;Q?R>Q;31)?O-L><31)?V=lԿQ;Q?_Pn>e=@<31)?ƹf><31)?O-L>e=@;<31)?n> =31)?ƹf>;X<31)?ƹf>g=31)?n> =Q?_Pn>X=31)?O-L>L1=31)?ƹf>g=Q?R>=Q?=$*+=31)?V=a7=31)?O-L>L1=Q?=$*+=Q?o:,=31)?p:B8=31)?V=a7=Q?o:,=Q?½$*+=31)?B>a7=31)?p:B8=Q?½$*+=Q?a7=Q?mԿ<31)?!JmԿDD<<هo:o 7=w~&=>I=w~r^7><<هo:o 7=w~r^7>A=w~&=>I=<هo:o 7=w~K">q@:=w~r^7>A=<هo:o 7=w~=(C=w~K">q@:=<هo:o 7=w~o:DcD=w~=(C=<هo:o 7=w~|(C=w~o:DcD=<هo:o 7=w~> q@:=w~|(C=<هo:o 7=w~'R5A=w~> q@:=<هo:o 7=w~;I=w~'R5A=<هo:o 7=w~'R5 A A<<هo:o 7=w~o:<0D2?p:>)=31)?O-L><31)?ƹf><0D2?p:>)=31)?ƹf><31)?n> =0D2?p:>)=31)?n> =31)?ƹf>g=0D2?p:>)=31)?ƹf>g=31)?O-L>L1=0D2?p:>)=31)?O-L>L1=31)?V=a7=0D2?p:>)=31)?V=a7=31)?p:B8=0D2?p:>)=31)?p:B8=31)?B>a7=0D2?p:>)=31)?B>a7=31)?!JM1=0D2?p:>)=31)?!JM1=31)?|dg=0D2?p:>)=31)?|dg=31)?Sl =0D2?p:>)=31)?Sl =31)?|d<0D2?p:>)=31)?|d<31)?!J<0D2?p:>)=31)?!J<31)?C>mԿ<0D2?p:>)=31)?C>mԿ<31)?o:<0D2?p:>)=31)?o:<31)?V=lԿ<0D2?p:>)=@A-h@4? h@P?h!Y@?GY@? h@P?h@b?L7Y@S˾?h!Y@?h@b?U.h@?SY@m?L7Y@S˾?U.h@?4Ih@Gu?wY@q?SY@m?4Ih@Gu?lh@?צY@yW?wY@q?lh@?<@?3J@CS?șJ@?<@j?{<@?șJ@?J@=?#<@_?<@j?J@=?J@k?&9<@?#<@_?J@k?"J@d?2Y<@?&9<@?"J@d?<@?am<@3Q?2><@?{<@?s8@?F9@=?{<@?<@j?8@?s8@?<@j?#<@_??8@?#<@_?&9<@?8@4??&9<@?2Y<@?E9@6˵?8@4?2Y<@?=<@? R9@,?E9@6˵?=<@?<@G?09@SY? R9@,?<@G?<@@ղ9@@09@SY?<@@^+=@!@r9@ß!@ղ9@@^+=@!@%=@(&@9@&@r9@ß!@%=@(&@=@eV'@ ?@9@&@=@eV'@\=@%@9@%@ ?@\=@%@<@!!@9@ !@9@%@<@!!@<@k@d9@Kt@9@ !@<@k@am<@3Q?49@b?d9@Kt@am<@3Q?2><@?F9@=?49@b?F9@=?s8@??|?ߨ?e?s8@?8@?T6?ܚ??|?8@??c?y5>T6?ܚ??8@4?Ѫ?A?c?y5>8@4?E9@6˵?m?=?Ѫ?A?E9@6˵? R9@,??~?m?=? R9@,?09@SY? ?mt??~?09@SY?ղ9@@G?D@ ?mt?ղ9@@r9@ß!@?,@G?D@r9@ß!@9@&@Lī?Y1@?,@9@&@ ?@Q? u@Lī?Y1@ ?@9@%@x)?Y1@Q? u@9@%@9@ !@֭?Y+@x)?Y1@9@ !@d9@Kt@ ?W@֭?Y+@d9@Kt@49@b??q? ?W@49@b?F9@=?ߨ?e??q?ߨ?e??|??˦?k?B{??|?T6?ܚ??s??˦?T6?ܚ?c?y5>a?0??s?c?y5>Ѫ?A??%$?a?0?Ѫ?A?m?=?$?S??%$?m?=??~?3??$?S??~? ?mt?Ρ??3?? ?mt?G?D@?+O@Ρ??G?D@?,@ܷ?%,@?+O@?,@Lī?Y1@?l1@ܷ?%,@Lī?Y1@Q? u@N?Qj3@?l1@Q? u@x)?Y1@?d1@N?Qj3@x)?Y1@֭?Y+@#?d+@?d1@֭?Y+@ ?W@?'@#?d+@ ?W@?q?ե?M??'@?q?ߨ?e?k?B{?ե?M?k?B{??˦?~8?G?f???˦??s?L?X?~8?G??s?a?0?r?o?L?X?a?0??%$?R?8?r?o??%$?$?S??3?R?8?$?S?3??舄???3?3??Ρ??(??舄??Ρ???+O@ƾ?D@(???+O@ܷ?%,@N+?d @ƾ?D@ܷ?%,@?l1@C?$@N+?d @?l1@N?Qj3@@?%@C?$@N?Qj3@?d1@Ї?y=$@@?%@?d1@#?d+@?E@Ї?y=$@#?d+@?'@sو?@?E@?'@ե?M?&Ȉ??sو?@ե?M?k?B{?f??&Ȉ??f??~8?G?h?>q?9~?( >h?y:??C9?!w?>Q?d\>9~?C9?!w?U7?"?S>2:?>Q?U7?"?5?C?~>l?S>2:?5?C?w5?.?>M?~>l?w5?.?5?I?2>V?>M?5?I? 5? @{>Y @2>V? 5? @g6?m@>@{>Y @g6?m@18?̙!@Ҭ>@>@18?̙!@9?N"@6> @Ҭ>@9?N"@qv;?1`!@=>J@6> @qv;?1`!@t&=? ]@_>@=>J@t&=? ]@=? @x)> @_>@=? @Ή=?,D?3>?x)> @Ή=?,D?yW=?D?>q?3>?>q?( >h?=?dγ=q?( >h?d\>9~?=i?=?d\>9~?>Q?A=e?=i?>Q?S>2:?n=a?A=e?S>2:?~>l?g,=?n=a?~>l?>M?:̗=?g,=?>M?2>V?m9=@:̗=?2>V?{>Y @T7= @m9=@{>Y @>@=q@T7= @>@Ҭ>@f= @=q@Ҭ>@6> @/ݤ=' @f= @6> @=>J@[=)@/ݤ=' @=>J@_>@c=Q@[=)@_>@x)> @F=[ @c=Q@x)> @3>?ҳ=A@F=[ @3>?>q?dγ=q?ҳ=A@ h@P?-h@4?q@V+?h@b? h@P?q@4+?U.h@?h@b?q@V+?4Ih@Gu?U.h@?q@V+?lh@?4Ih@Gu?q@V+??<=?BC@@ABFGDDEFJKHHIJNOLLMNRSPPQRVWTTUVZ[XXYZ]^_\]_abc`acefgdegijkhikmnolmoqrspqsuvwtuwz{xxyz}~|}        !"# !#%&'$%'+())*+,-.,./230012674456:;889:=>?<=?@AB@BCDEFDFGHIJHJKOLMMNOPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfghijhjkolmmnopqrprstuvtvwxyzxz{|}~|~         !" "#$%&$&'()*(*+,-.,./01202345646789:8:;?<==>?C@AABCGDEEFGKHIIJKOLMMNOSPQQRSWTUUVW[XYYZ[\]^\^_`ab`bcdefdfghijhjklmnlnopqrprstuvtvwxyzxz{|}}~0A01 - Standard`  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_PA@ pCylinde18A AHp@?/r>k?.s>z>c*D=qK>b+:=k?.s>??/s>fV6?b+O=z>c*D=??/s>UE?8d>??As>fV6?EO=k?Bs>z>FD=fV6?EO=k?Bs>@?Ar>qK>E:=z>FD=@?Ar>G?8d>h$2>89=qK>E:=G?8d>@?/r>qK>b+:=h$2>89=qK>b+:=z>c*D={> ?}c*D=fV6?b+O=? [}<{> ?}FD={>9(m?}<?3h[}FD=qK>E:=n3h|<{>9(m?}<qK>E:=h$2>89=jԽ8|89=qK>b+:=n |@?/r>k?8d>??/s>k?.s>k?8d>UE?8d>??/s>k?8d>??As>UE?8d>k?8d>k?Bs>??As>k?8d>@?Ar>k?Bs>k?8d>G?8d>@?Ar>k?8d>@?/r>G?8d>k?8d>n |<{> ?}<{>8?}<{> ?}<? [}<{>8?}<? [}8?}8?}<?3h[}<{>9(m?}<{>8?}<{>9(m?}8?}8?}8?}<@Apd?2?h;??;?L>R+@C>h;??=(,?A>p>;?L>=(,?'?;z>Xv>A>p>'?>[?a>>;z>Xv>>[?c*=?>?g?t>a>>c*=?>?{?[?o+@b>g?t>{?[?6Ξ?u?Bz2@<.>o+@b>6Ξ?u?d?2?R+@C>Bz2@<.>R+@C>;?L>\?bA>p>^?\?b<A>p>;z>Xv>2?=^?;z>Xv>a>>If?)w=2?=a>>g?t>?k=If?)w=g?t>o+@b>s@g@>?k=o+@b>Bz2@<.>@">s@g@>Bz2@<.>R+@C>u@=@">h;??d?2?AG;?D?=(,?h;??AG;?D?'?=(,?AG;?D?>[?'?AG;?D?c*=?>?>[?AG;?D?{?[?c*=?>?AG;?D?6Ξ?u?{?[?AG;?D?d?2?6Ξ?u?AG;?D?u@=\?b?=s@g@>@">?=@">u@=?=`A63N ?33 5z>8UB> A0    "#  !"&'$$%&*+(()*-./,-/123013567457:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@ pCylinde20A AHp߳?YA>r>?}JB>s>>uF>D=K> :E><=?}JB>s>??YA>u>p6? :E>P=>uF>D=??YA>u>nE?Q8>d>,P=p6? :E>P=nE?Q8>d>??PJ/>u>p6?i+>O=,P=??PJ/>u>?]Y.>s>>d*>D=p6?i+>O=?]Y.>s>߳?PJ/>r>K>i+><=>d*>D=߳?PJ/>r>`?Q8>d>2>Q8>;=K>i+><=`?Q8>d>߳?YA>r>K> :E><=2>Q8>;=K> :E><=>uF>D=>g>I}<'nc>|<>uF>D=p6? :E>P=?'nc>d}<>g>I}<p6? :E>P=,P=s$?Q8>k}<?'nc>d}<,P=p6?i+>O=?5 >d}k}<p6?i+>O=>d*>D=>=>I}<?5 >d}<>d*>D=K>i+><=5 >|<>=>I}i+><=2>Q8>;=gӽQ8>|<5 >|<2>Q8>;=K> :E><='nc>||<?}JB>s>߳?YA>r>?Q8>d>??YA>u>?}JB>s>?Q8>d>nE?Q8>d>??YA>u>?Q8>d>??PJ/>u>nE?Q8>d>?Q8>d>?]Y.>s>??PJ/>u>?Q8>d>߳?PJ/>r>?]Y.>s>?Q8>d>`?Q8>d>߳?PJ/>r>?Q8>d>߳?YA>r>`?Q8>d>?Q8>d>'nc>|<>g>I}<>Q8>I}<>g>I}<?'nc>d}<>Q8>I}<?'nc>d}k}<>Q8>I}k}<?5 >d}<>Q8>I}<?5 >d}<>=>I}<>Q8>I}<>=>I}<5 >|<>Q8>I}<5 >||<>Q8>I}|<'nc>|<>Q8>I}<@Apܐ??|+@'>|l>?y>u=r?*?|~>Gs>>l>*?>Y?.>ʊ>|~>Gs>>Y? =?pϻ?Q?V>.>ʊ> =?pϻ??? +@ͯ>Q?V>??R??2@Ҭ> +@ͯ>R??ܐ??+@'>2@Ҭ>+@'>?y>{??y>>l>u:`?{?<>l>|~>Gs>3?OGs>.>ʊ>g?=3?O<.>ʊ>Q?V>Na?=g?=Q?V> +@ͯ>s@I>Na?= +@ͯ>2@Ҭ>@A,>s@I>2@Ҭ>+@'>u@>@A,>|Y?*?Y;?|? =?pϻ?>Y?Y;?|??? =?pϻ?Y;?|?R????Y;?|?ܐ??R??Y;?|?u@>{?s?p=s@I>@A,>s?p=@A,>u@>s?p=`A63N ?33 5>Q8>UB> A0    "#  !"&'$$%&*+(()*-./,-/123013567457:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@ pCylinde22A AHpŬ?`?݅>Ő>@f缑>Ő>-޼}-?`?i}-?`?i>Ő>-޼hF?Ő>@f缇O?`?O?`?hF?Ő>@fL?Ő>6 gU?!?6 gU?!?6 L?Ő>6 hF?Ő>LO?`?TZ?O?`?TZ?hF?Ő>L>Ő>\Q}-?`?͘B}-?`?͘B>Ő>\Q݅>Ő>LŬ?`?TZ?Ŭ?`?TZ?݅>Ő>Lnr>Ő>6 Y?!?6 Y?!?6 nr>Ő>6 ݅>Ő>@fŬ?`?݅>Ő>@ff-ro>L>-ro>=?>Ő>-޼>Ő>-޼>-ro>=?H6?-ro>LhF?Ő>@fhF?Ő>@fH6?-ro>LV?-ro>6 L?Ő>6 L?Ő>6 V?-ro>6 H6?-ro>KhF?Ő>LhF?Ő>LH6?-ro>K>-ro>>Ő>\Q>Ő>\Q>-ro>f-ro>K݅>Ő>L݅>Ő>Lf-ro>K(-ro>6 nr>Ő>6 nr>Ő>6 (-ro>6 f-ro>L݅>Ő>@f缮}-?`?i}-?!?6 Ŭ?`?O?`?}-?!?6 }-?`?igU?!?6 }-?!?6 O?`?O?`?TZ?}-?!?6 gU?!?6 }-?`?͘B}-?!?6 O?`?TZ?Ŭ?`?TZ?}-?!?6 }-?`?͘BY?!?6 }-?!?6 Ŭ?`?TZ?Ŭ?`?}-?!?6 Y?!?6 f-ro>L>-ro>6 >-ro>=?>-ro>=?>-ro>6 H6?-ro>LH6?-ro>L>-ro>6 V?-ro>6 V?-ro>6 >-ro>6 H6?-ro>KH6?-ro>K>-ro>6 >-ro>>-ro>>-ro>6 f-ro>Kf-ro>K>-ro>6 (-ro>6 (-ro>6 >-ro>6 f-ro>L@Ap?o=&@/???@43? ƈ=@43? ƈ=??K>ɨ?9==9==K>ɨ?=>W[?9O<9O<=>W[?>?=)?==)?=>?+O?? 9?Cs= 9?Cs=+O??'@|??{1=?{1='@|?O.@?5F?5F?O.@?&@/??o=&@/?Mr@B?Y??????Y??Ú?a?K>ɨ?K>ɨ?Ú?a?9?ƾ?=>W[?=>W[?9?ƾ?Ǟ?B?>?>?Ǟ?B?'?M?+O??+O??'?M?Uu@0?'@|?'@|?Uu@0?@?O.@?O.@?@?Mr@B?&@/?@43? ƈ=K#6?O;?o=9==K#6?O;@43? ƈ=9O?<<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@ pCylinde24A AHp?& b -?& >s֏4 ޼>s֏`S-?& O?& b &mF?s֏`S>s֏4 ޼O?& b kU?r6 HL?s֏6 &mF?s֏`SkU?r6 O?& `?&mF?s֏PLHL?s֏6 O?& `?-?& #B>s֏fgQ&mF?s֏PL-?& #B?& `?>s֏PL>s֏fgQ?& `?]?r6 r>s֏6 >s֏PL]?r6 ?& b >s֏`S缢r>s֏6 >s֏`S>s֏4 ޼>]m 7]mkЗ>s֏4 ޼&mF?s֏`S缊:?]mkЗ>]m &mF?s֏`SHL?s֏6 ?]m6 :?]mkЗHL?s֏6 &mF?s֏PL:?]m?]m6 &mF?s֏PL>s֏fgQ>^m:?]m>s֏fgQ>s֏PL7]m>^m>s֏PLr>s֏6 t']m6 7]mr>s֏6 >s֏`S7]mkЗt']m6 -?& ?& b -?r6 O?& b -?& -?r6 kU?r6 O?& b -?r6 O?& `?kU?r6 -?r6 -?& #BO?& `?-?r6 ?& `?-?& #B-?r6 ]?r6 ?& `?-?r6 ?& b ]?r6 -?r6 7]mkЗ>]m >]m6 >]m :?]mkЗ>]m6 :?]mkЗ?]m6 >]m6 ?]m6 :?]m>]m6 :?]m>^m>]m6 >^m7]m>]m6 7]mt']m6 >]m6 t']m6 7]mkЗ>]m6 @Ap=??S4?z? N?j>&@ ~>S4?z?=:?MM>(> N?j>=:?/i?PU!> >MM>(>/i?6=?7> >PU!> >6=?h9? ?3?|>7> >h9? ????4(@Nw>3?|>??? ??.@4(@Nw> ??=??&@ ~>.@&@ ~> N?j>$_?1/=r@>< N?j>MM>(>R?^08=$_?1/=MM>(>PU!> >Rш?Z=R?^08=PU!> >7> >I+? >3?|> ?<(+?<3?|>4(@Nw>Xu@ ?<4(@Nw>.@@:;Xu@.@&@ ~>r@><@:;S4?z?=??6?r?=:?S4?z?6?r?/i?=:?6?r?6=?/i?6?r?h9? ?6=?6?r????h9? ?6?r? ?????6?r?=?? ??6?r?r@><$_?1/=?r=$_?1/=R?^08=?r=R?^08=Rш?Z=?r=Rш?Z=I+?<?r=I+?< ?<?r= ?<?r=`A6??o:o:o: A0    "#  !"$%&$&'()*(*+/,--./301123567457;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@pCube1_0GeAA8xaef>@Qٻ ef>@Qٻb-ef>|(OEef>|(`A6p>h=@L A90AVMtl17PA@pCube2_0GeAA8gfDQٻhtgfDQٻ-gf}(awgf}(`A6p>h=R33s A90AVMtl18PA@pCube3_0GeAA8U333?_qc333?_qc2:b333? {ď333? {`A6Ԑ>l= #L> A90AVMtl19PA@pCube4_0GeAA8U433_qc433_qc2:b633 {ď633 {`A6Ԑ>l= # A90AVMtl20PA@Quader01AqAh$׻.̿׻$`O:׻.̿`O:׻$9.̿9$`O:9.̿`O:9`A6??2}?ۿ~≻׻ A 0A/01 - Standard1  PA6 @@@Quader02AqAhE>&1>>7A?&1>>E>Zd;>>7A?Zd;>>E>&1>o>7A?&1>o>E>Zd;>o>7A?Zd;>o>`A6??2}?V?E6>> A 0A/01 - Standard1  PA6 @@@Quader03AqAhE>Zd;>7A?Zd;>E>&1>7A?&1>E>Zd;o>7A?Zd;o>E>&1o>7A?&1o>`A6??2}?V?E6> A 0A/01 - Standard1  PA6 @@ MAXSCENE 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &0޼ڽe8>>!*"&퀽?L?L? # # # #< #< #<0pCylinder2@ &!*"&???0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder3 &/ݼڽv>!*I@"&퀽LV # # # #< #< #<0pCylinder4@ &!*"&???0pCylinder5@ &!*"&???0 $$$DUMMY@pSphere01 &O>Ȑ=!*="&Ì?#>6> # # # #< #< #<0 pSphere1_0@  &!*"&???0 $$$DUMMY@pCylinder6 &!*"&??? # # # #< #< #<0 pCylinder9@  &!*"&???0 pCylinder7@  &!*"&???0$$$DUMMY@pCylinder8 &!*"&??? # # # #< #< #<0pCylinde10@ &!*"&???0pCylinde11@ &!*"&???0$$$DUMMY@pCylinde12 &[6V<!*"&ޞ?ö-?? # # # #< #< #<0pCylinde13@ &!*"&???0pCylinde14@ &!*"&???0$$$DUMMY@pCylinde15 &!*"&?h>@ # # # #< #< #<0pCylinde16@ &!*"&???0$$$DUMMY@pCylinde17 &z>UB>8>!*??"&N >?= # # # #< #< #<0pCylinde18@ &!*"&???0$$$DUMMY@pCylinde19 &>UB>Q8!*??"&N >?= # # # #< #< #<0pCylinde20@ &!*"&???0$$$DUMMY@pCylinde21 &!*"&??? # # # #< #< #<0pCylinde22@ &!*"&???0$$$DUMMY@pCylinde23 &!*"&??? # # # #< #< #<0pCylinde24@ &!*"&???0$$$DUMMY@pCube01 &@L=!*"&p>h=? # # # #< #< #<0pCube1_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &R33s?!*"&p>h=? # # # #< #< #<0!pCube2_0Ge@  &!*"&???0"$$$DUMMY@pCube03 & #L!*"&Ԑ>l=? # # # #< #< #<0#pCube3_0Ge@" &!*"&???0$$$$DUMMY@pCube04 & #?!*"&Ԑ>l=? # # # #< #< #<0%pCube4_0Ge@$ &!*"&???0&Quader01@ &ۿ~≻׻!*"&??2}?0'Quader02@ &V?E6>>!*"&??2}?0(Quader03@ &V?E6>!*"&??2}?gl-117-1.3.2/models/gl-14b.3ds0000644000175000017500000021303310145416156014562 0ustar cedriccedricMM ==t>= 01 - Standard  0 @0 A0P0R0S00 ?[0dGL-14B_D.TGAQS T V u>X (?Z տ VMtl02 ###  ###0 @0A0P0R0S00 ? VMtl03 GGG  GGG0 @0A0P0R0S00 ? VMtl05 ###  ###0 @0A0P0R0S00 ? VMtl06 GGG  GGG0 @0A0P0R0S00 ? VMtl07   0 @0A0P0R0S00 ? VMtl08 GGG  GGG0 @0A0P0R0S00 ? VMtl09  0 @0A0P0R0S00 ? VMtl10 GGG  GGG0 @0A0P0R0S00 ? VMtl11  0 @0A0P0R0S00 ? VMtl13 GGG  GGG0 @0A0P0R0S00 ?02 - Standard  0 @0 A0P0R0S00 ?G0dGL-14B_C.TGAQS X 9 ?Z VMtl17 GGG  GGG0 @0A0P0R0S00 ? VMtl18 GGG  GGG0 @0A0P0R0S00 ? VMtl19 GGG  GGG0 @0A0P0R0S00 ? VMtl20 GGG  GGG0 @0A0P0R0S00 ?01 - Standard1 EEE  EEE0 @0 A0P0R0S00 ? ?@pCylinder2AAH P Pѽ f &J,1PѽP %Ͻ fPP+' fTt %ϽP+'P ' fTtPP D* (K[׼ '^P D*PVi )} (K[׼PViP+' wTt )}^P+'PJ x%Ͻ wTtPJPѽ v x%ϽPѽPUi (}I,1 vPUi P D 'K44 (}I,1P DP &J,1 'K44 &J,1 f7%=߽cE7%=n}B f %Ͻ7%=k׽ڽ7%=߽cE %Ͻ fTt7%=߽^q7%=k׽ڽ fTt '7%=nü7%=߽^q ' (K[׼7%=:S>7%=nü (K[׼ )}7%=dü7%=:S> )} wTt7%=u^q7%=dü wTt x%Ͻ7%=Sڽ7%=u^q x%Ͻ v7%=ucE7%=Sڽ v (}I,17%=d}B7%=ucE (}I,1 'K447%=:SxE7%=d}B 'K44 &J,17%=n}B7%=:SxE7%=n}B7%=߽cEg>0*܀g>67%=߽cE7%=k׽ڽg>xwؽ޽g>0*܀7%=k׽ڽ7%=߽^qg>0*w1g>xwؽ޽7%=߽^q7%=nüg>'뻫g>0*w17%=nü7%=:S>g>> WM5og>'7%=:S>7%=düg>='뻫g>> WM5o7%=dü7%=u^qg>w1g>='7%=u^q7%=Sڽg>_젾޽g>w17%=Sڽ7%=ucEg>܀g>_젾޽7%=ucE7%=d}Bg>=6g>܀7%=d}B7%=:SxEg>= W!:g>=67%=:SxE7%=n}Bg>6g>= W!:g>6g>0*܀D>tD>ng>0*܀g>xwؽ޽D>A"~D>t齫g>xwؽ޽g>0*w1D>콞ǼD>A"~g>0*w1g>'D>nA콞Ǽg>'뻫g>> WM5oD>>9ST<nA> WM5og>='D>KA>9ST<='뻫g>w1D>2ǼD>KAw1g>_젾޽D>~D>2Ǽg>_젾޽g>܀D>2uD>~g>܀g>=6D>JD>2u齫g>=6g>= W!:D>=9SxGD>Jg>= W!:g>6D>nD>=9SxGD>nD>t:?)f :?*TܽD>tD>A"~:?B齧C:?)f D>A"~D>콞Ǽ:?)::?B齧CD>콞ǼD>nA<:?*T <:?):D>nA>9ST<<:?;zKB7 =:?*T >9ST<KA<:?K{ <:?;zKB7 =D>KA2Ǽ:?o::?K{ 2ǼD>~:?C:?o:D>~D>2u:?of :?CD>2uD>J:?L{ܽ:?of D>JD>=9SxG:?:zKG:?L{ܽD>=9SxGD>n:?*Tܽ:?:zKG@A"~@Ͷ=~@M =@mL@OL@M>?L@=A@5>@>>bL@Yj>OL@M>@>>@Lo>~L@3>bL@Yj>@Lo>@>ՔL@"m>~L@3>@>-@J>*L@ۼ>ՔL@"m>-@J>~@y>vL@>*L@ۼ>~@y>~@I*>L@ >>vL@>~@I*>"~@Ͷ=L@O=L@ >>L@O=@mL@@Pg>@=OL@M>bL@Yj>@!>@Pg>bL@Yj>~L@3>T@>@!>~L@3>ՔL@"m>@>T@>ՔL@"m>*L@ۼ>@w,>@>*L@ۼ>vL@>&@>@w,>vL@>L@ >>@qqT>&@>L@ >>L@O= @`=@qqT> @`=z@B];d?w+?Vz>ZK?9=@Pg>@!>n?;>+?Vz>@!>T@>r?J>n?;>T@>@>M?7>r?J>@>@w,>f?>M?7>@w,>&@>k?3>f?>&@>@qqT>?f>k?3>@qqT> @`=G?3=?f>G?3=d?w(+F?c2=ZK?9=+?Vz>N}@?|>@?Y>+?Vz>n?;>c A?>N}@?|>n?;>r?J>PF?]>c A?>r?J>M?7>VM?c>PF?]>M?7>f?>5T?p>VM?c>f?>k?3>Y?^>5T?p>k?3>?f>Y? i>Y?^>?f>G?3=qY?9=Y? i>qY?9=A T?Y= =S=o=y=A T?Y=.M?d=n=g*D= =S=.M?d=(+F?c2= <$k=n=g*D=(+F?c2=@?Y>";9& > <$k=@?Y>N}@?|>Yv>";9& >N}@?|>c A?>p;w>Yv>c A?>PF?]>Xo<5>p;w>PF?]>VM?c>Am=F[>Xo<5>VM?c>5T?p>g=>Am=F[>5T?p>Y?^>W=>g=>Y?^>Y? i>>=.te>W=>Y? i>qY?9=o=y=>=.te>`A6퀽?L?&0޼= Wڽ Ax    !"# !#%&'$%'*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSVWTTUVZ[XXYZ^_\\]^abc`acefgdegijkhikmnolmoqrspqsuvwtuwz{xxyz~||}~0A01 - Standardx  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwPA@pCylinder1AA$PѽP 7 DPPѽ7 DP+'P7 DPP+'7 DP D*P7 DPViP D*7 DP+'PVi7 DPJP+'7 DPѽPJ7 DPUi Pѽ7 DP DPUi 7 DP P D7 D`A6퀽?L?&0޼= Wڽ A    !"#0A'VMtl02  PA6@pCylinder3AA$:?*Tܽ:?)f :?;zKC:?)f :?B齧C:?;zKC:?B齧C:?)::?;zKC:?)::?*T <:?;zKC:?*T <:?;zKB7 =:?;zKC:?;zKB7 =:?K{ <:?;zKC:?K{ <:?o::?;zKC:?o::?C:?;zKC:?C:?of :?;zKC:?of :?L{ܽ:?;zKC:?L{ܽ:?:zKG:?;zKC:?:zKG:?*Tܽ:?;zKC`A6퀽?L?&0޼= Wڽ A    !"#0A'VMtl03  PA6@pCylinder5AAH B?!>B?Z>ѽ>Y=>$>?,1B?Z>ѽB?>_>=%Ͻ>Y=B?>_B?Y>'>Y=St>=%ϽB?Y>'B?!>>#>FV>Y=StB?!>B?e D>>gK>׼>#>F3B?e D>B?i>>}>FV>gK>׼B?i>B?#>'>>St>}>F2B?#>'B?$L>_>>%Ͻ>>StB?$L>_B?$>ѽ>>>>%ϽB?$>ѽB?i>>}>?,1>>B?i>B?f D>>gK>44>}>?,1B?f D>B?!>>$>?,1>gK>44>$>?,1>Y=>'=`E>l>zB>Y=>=%Ͻ>h=ڽ>'=`E>=%Ͻ>Y=St>'=^q>h=ڽ>Y=St>#>F,>k>ü>'=^q>#>FV>gK>׼>:S>>k>ü>gK>׼>}>F,>|f>ü>:S>>}>FV>>St>y>^q>|f>ü>>St>>%Ͻ>BV>ڽ>y>^q>>%Ͻ>>>y>aE>BV>ڽ>>>}>?,1>}f>zB>y>aE>}>?,1>gK>44>:S>uE>}f>zB>gK>44>$>?,1>l>zB>:S>uE>l>zB>'=`ES<=߀S<>6>'=`E>h=ڽTh=ڽ>'=^qV<=w1T'=^q>k>üV<>?(V<=w1>k>ü>:S>V<: W>5oV<>?(뻌>:S>>|f>üV?(V<: W>5o>|f>ü>y>^qV< >w1V?(뻌>y>^q>BV>ڽT<>޽V< >w1>BV>ڽ>y>aES< >T<>޽>y>aE>}f>zBS6S< >>}f>zB>:S>uES<; W>":S6>:S>uE>l>zBS<>6S<; W>":S<>6S<=߀ =齚Mj>S<=߀T?(뻚Lj>LA< =ǼV<>?(V<: W>5o8S><LA5oV?(뻚샄>LA<8S><?(V< >w15>Ǽ샄>LAw1T<>޽>~5>ǼT<>޽S< >5>齛>~S< >S6샄>5>S6S<; W>":8S>G샄>S<; W>":S<>6Mj>8S>GMj> =.H= .HDP> ܽ =齛=~/Hq=C.H= =~ =Ǽ/H=7z:/Hq=C =ǼLj>LALA<8S><7 =/HCP><8S><<샄>LA7 =샄>LA<5>Ǽ/Hr>7z:/H{><5>Ǽ>~/HF>C/Hr>7z:>~5>.Hr> /HF>C5>齚샄>.H{> ܽ.Hr> 샄>8S>G.HwyK>i.H{> ܽ8S>GMj>.HDP> ܽ.HwyK>i@AJ~@Tq>M1@>/L@>L@G>M1@>s@B>XL@>/L@>s@B>@>zL@ >XL@>@>@%>t]L@x%>zL@ >@%>0@k>sJL@e>t]L@x%>0@k>@FB>:L@=sJL@e>@FB>h@S= ?L@6=:L@=h@S=F@!==TL@4= ?L@6=F@!==~@Y=vlL@j=TL@4=~@Y= ~@)>L@ >vlL@j= ~@)>~@j1x>RL@u>L@ >~@j1x>J~@Tq>L@G>RL@u>L@G>/L@>@n>@5>/L@>XL@>@>@n>XL@>zL@ >M@_}>@>zL@ >t]L@x%>@U>M@_}>t]L@x%>sJL@e>@Ő\>@U>sJL@e>:L@=<@=@Ő\>:L@= ?L@6=~@<<@= ?L@6=TL@4=@<~@@=v@fRL@u>@|o>@=RL@u>L@G>@5>@|o>@5>@n>$?Ѯ>e?*>@n>@>W ?Y>$?Ѯ>@>M@_}>f?>W ?Y>M@_}>@U>(b?kծ>f?>@U>@Ő\>? Z>(b?kծ>@Ő\><@=>?*=? Z><@=~@<(?>?*=~@<@<?77(?@?o>@?8=@|o>@5>e?*>?o>e?*>$?Ѯ>/T?հ>Y?X>$?Ѯ>W ?Y>OM?@>/T?հ>W ?Y>f?>xGF?>OM?@>f?>(b?kծ>6A?>xGF?>(b?kծ>? Z>!t@?8j>6A?>? Z>>?*=@?=!t@?8j>>?*=(?"F?E* =@?=(??77&M?, ="F?E* =?77\?Sς<T?D=&M?, =\?Sς<@?8=X?M >T?D=@?8=?o>Y?~{>X?M >?o>e?*>Y?X>Y?~{>Y?X>/T?հ>=B>IK=b>/T?հ>OM?@>0m=Hm>=B>OM?@>xGF?>^<>0m=Hm>xGF?>6A?>p;̵>^<>6A?>!t@?8j>W>p;̵>!t@?8j>@?=cD";z>W>@?="F?E* =Q<=cD";z>"F?E* =&M?, =n=#=Q<=&M?, =T?D=x= =n=#=T?D=X?M >ڭ=7(>x= =X?M >Y?~{>=>ڭ=7(>Y?~{>Y?X>IK=b>=>`A6퀽?~5OzBL?&?/ݼ= W>ڽ Ax    !"# !#%&'$%'*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSVWTTUVZ[XXYZ^_\\]^abc`acefgdegijkhikmnolmoqrspqsuvwtuwz{xxyz~||}~0A01 - Standardx  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwPA@pCylinder6AA$B?Z>ѽB?!>a)?f D>dB?>_B?Z>ѽa)?f D>dB?Y>'B?>_a)?f D>dB?!>B?Y>'a)?f D>dB?e D>B?!>a)?f D>dB?i>B?e D>a)?f D>dB?#>'B?i>a)?f D>dB?$L>_B?#>'a)?f D>dB?$>ѽB?$L>_a)?f D>dB?i>B?$>ѽa)?f D>dB?f D>B?i>a)?f D>dB?!>B?f D>a)?f D>d`A6퀽?~5OzBL?&?/ݼ= W>ڽ A    !"#0A'VMtl05  PA6@pCylinder7AA$.HDP> ܽ.H= /HxyK>C.H= /Hq=C/HxyK>C/Hq=C/H=7z:/HxyK>C/H=7z:/HCP>C/HCP>7 =/HxyK>C/HwyK>7 =/H{>C/H{>7z:/HxyK>C/Hr>7z:/HF>C/HxyK>C/HF>C.Hr> /HxyK>C.Hr> .H{> ܽ/HxyK>C.H{> ܽ.HwyK>i/HxyK>C.HwyK>i.HDP> ܽ/HxyK>C`A6퀽?~5OzBL?&?/ݼ= W>ڽ A    !"#0A'VMtl06  PA6@" pSphere1_0A AxJKO=G=$==n삿(l=>NN?=m>$==KO=`=єN?=>n삿(l=>KO=`=!K$^=G;#>єN?=>!K$^=KO`=єN?>G;#>KO`=$=n삿'l>єN?>$=JKOG=NN?l>n삿'l>JKOG=5f=fv;H%Q>NN?l>5f=JKO=G=NN?=m>fv;H%Q>NN?=m>n삿(l=>KO=r+>Z=u1>n삿(l=>єN?=>Ɛ= w'>KO=r+>єN?=>G;#>=sv%%>Ɛ= w'>G;#>єN?>Ɛ w'>=sv%%>єN?>n삿'l>KOr+>Ɛ w'>n삿'l>NN?l>Zu1>KOr+>NN?l>fv;H%Q>BEK&'%r4>Zu1>fv;H%Q>NN?=m>Z=u1>BEK&'%r4>Z=u1>KO=r+>O/`Rj<F>KO=r+>Ɛ= w'>O/`Ɛ= w'>=sv%%>򪍿 %9n?>=sv%%>Ɛ w'>R@>򪍿 %9n?>Ɛ w'>KOr+>O/`༎zB>R@>KOr+>Zu1>RjF>O/`༎zB>Zu1>BEK&'%r4>Tb$MG>RjF>BEK&'%r4>Z=u1>Rj<F>Tb$MG>Rj<F>O/`8$J>O/`8$J>򪍿 %9n?>8$J>򪍿 %9n?>R@>8$J>R@>O/`༎zB>8$J>O/`༎zB>RjF>8$J>RjF>Tb$MG>8$J>Tb$MG>Rj<F>8$J>`A6 |?p=Y|P>6!}= A-8     # !!"#'$%%&'+())*+,-.,./012023456467;899:;<=><>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVW[XYYZ[\]^\^_`abcdefghijklmnopqrstuvw0AVMtl078  !"#$%&'()*+,-./01234567PA@pCylinder9AAT1+5?ؙȽe4?05~ R?fM,S? }e4?05~3?0τQ?evx R?fM3?0τ]2?ؙIkȽk4?>5~R?9C>M72S?k>}k4?>5~B3?>΄Q?9C>vxR?9C>MB3?>΄2?ws>HkXvx2?ws>Hk<{2?D>i<.Q?D>9?X<{2?D>i<2?u>HkX<.Q?D>9?<2?u>HkvxdQ?>XMQ?/g>vxk4?Xp=4~5?u>Ƚ72S?>~R?/g>M5?u>ȽS\5?D>3㽭hS?D>qO72S?>~S\5?D>35?ws>Ƚ72S?k>}hS?D>qOk4?Xp=4~B3?Wp=΄3?D>g+`A6??x `1E AC     !" "#'$%%&'()*0A9VMtl10 PAZ@(pCylinde13AA9k4?>5~5?ws>Ƚ3?D>g+B3?>΄k4?>5~3?D>g+2?ws>Hk΄3?D>g+{2?D>i<2?ws>Hk<3?D>g+2?u>Hk<{2?D>i<3?D>g+B3?Wp=΄2?u>Hk<3?D>g+5?u>Ƚk4?Xp=4~3?D>g+S\5?D>35?u>Ƚ3?D>g+5?ws>ȽS\5?D>33?D>g+72S?k>}R?9C>MKR?D>R?9C>MQ?9C>vxKR?D>Q?9C>vxdQ?k>XdQ?k>X<.Q?D>9?.Q?D>9?XdQ?>XvxKR?D>Q?/g>vxR?/g>MKR?D>R?/g>M72S?>~KR?D>72S?>~hS?D>qOKR?D>hS?D>qO72S?k>}KR?D>`A6??x `1E A'   !"#$%&'()*+,-./0123456780A5VMtl11 PAR@&pCylinde15A&AHpiԨ<ۧ=wyTFk=|T0J>TFk=k=iԨ<=\0/Q=T}٤.W>T0<>J>\0/Q=iԨ=T0>J>T}٤.W>iԨ=Y=TFkk=T0>J>Y=BKsm=T{R=TFkk=BKsm=Ɩ\=T]F=T{R=Ɩ\=BK|DJ>pwU=!>pw==T0<>J>T}٤.W>pwo>pwU=!>T}٤.W>T0>J>pw!>pwo>T0>J>TFkk=pwㅽ=pw!>TFkk=T{R=pw=pwㅽ=T{R=T]F=pw6XU=pw=T]F=T{Ed<pwQ<pw6XU=T{EdE _=P>E ;Kx==pwU=!>pwo>E I>E _=P>pwo>pw!>E _P>E I>pw!>pwㅽ=E ;Kx=E _P>pwㅽ=pw=E 4X=E ;Kx=pw=pw6XU=E Z9=E 4X=pw6XU=pwQ{;E I>{vȭjG={;E _P>{μO={vȭjG=E _P>E ;Kx={9?-={μO=E ;Kx=E 4X={yT={9?-=E 4X=E Z9={L7l={yT=E Z9=E 4K <{yǽ(<{L7l=E 4K P%><.NT=SP%><.NT= =<.NT=kV=X<N>P%><.NT=kV=X<.NT= =a&=N>P%><.NT= =a&=.NT=S<<[=N>P%><.NT=S<<[=.NT=c<=N>P%><.NT=c<=.NT=Oå,=N>P%><.NT=Oå,=.NT=c=N>P%><.NT=c=.NT=WѼ<[=N>P%><.NT=WѼ<[=.NT= a&=N>P%><.NT= a&=.NT=kVX<N>P%><.NT=kVX<.NT= <N>P%><.NT= <.NT=SѼeZN>P%><.NT=SѼeZ.NT=cEN>P%><.NT=cE.NT=%7xN>P%><.NT=%7x.NT=cP%><@A p,^@Qk>^@@=>@!=Q->@2>^@@=(_@=J?@ط=>@!=(_@=Z`@Z==(@@5C)xB@r>A@B=Qb@A>b@dG>wB@kL>)xB@r>b@dG>enb@ϟv>#B@J>wB@kL>enb@ϟv>b@:=>(+B@a>#B@J>b@:=>ga@b>.pA@mS>(+B@a>ga@b>7`@y̠>ҍ@@>.pA@mS>7`@y̠>_@o>?@K">ҍ@@>_@o>3_@c>>@'>?@K">3_@c>Z^@Iv>S>@~q>>@'>Z^@Iv>Q^@caH>>@nM>S>@~q>Q^@caH>,^@Qk>Q->@2>>@nM>Q->@2>>@!=%@=$@>>@!=J?@ط= %@R <%@=J?@ط==(@@5C< s&@ %@R <=(@@5C<8A@}]=<'@P]< s&@8A@}]=A@B='@:h=<'@P]w(@i='@:h=)xB@r>wB@kL>(@P>w(@i=wB@kL>#B@J>I(@q>(@P>#B@J>(+B@a>>(@+>I(@q>(+B@a>.pA@mS>'@>>(@+>.pA@mS>ҍ@@>&@>'@>ҍ@@>?@K">&@S>&@>?@K">>@'>f%@">&@S>>@'>S>@~q>h$@H>f%@">S>@~q>>@nM>$@%$R>h$@H>>@nM>Q->@2>$@>$@%$R>$@>%@=d?=?Yi>%@= %@R ?S!=w(@i=(@P>2?sZ>?>(@P>I(@q>8?Y6>2?sZ>I(@q>>(@+>?>8?Y6>>(@+>'@>?>'@>&@>/O?>&@>&@S>?n>/O?>&@S>f%@">wj?H>?n>f%@">h$@H>?>wj?H>h$@H>$@%$R>2?'[>?>$@%$R>$@>?Yi>2?'[>?Yi>d?=?!=ד?)>d?=vO?2%=ˀ?=?!=vO?2%==?0?&> ?9_=?>2?sZ>J?`a>?&>2?sZ>8?Y6>l"?C>J?`a>8?Y6>?>K?*>l"?C>?>5|?1>K?*>/O?>?D>5|?1>/O?>?n>VՓ?:$>?D>?n>wj?H>?Ǥ>VՓ?:$>wj?H>?>n?PŒ>?Ǥ>?>2?'[>?Pa>n?PŒ>2?'[>?Yi>ד?)>?Pa>ד?)>?!=9 ?G.>?H>?!=ˀ?=^?x>9 ?G.>ˀ?=P?=p?>^?x>P?=&?= ?>p?>&?= ?9_=; ? t-> ?> ?9_=?&> ?N H>; ? t->?&>J?`a>+ ? g> ?N H>J?`a>l"?C> ?~>+ ? g>l"?C>K?*>*q ?ؐ> ?~>K?*>5|?1>?>*q ?ؐ>5|?1>?D>?>?>?D>VՓ?:$>@?^>?>VՓ?:$>?Ǥ>-??Gw>@?^>?Ǥ>n?PŒ>b?G>-??Gw>n?PŒ>?Pa>?g>b?G>?Pa>ד?)>?H>?g>?H>9 ?G.>m>9 ?G.>^?x>m>^?x>p?>m>p?> ?>m> ?>; ? t->m>; ? t-> ?N H>m> ?N H>+ ? g>m>+ ? g> ?~>m> ?~>*q ?ؐ>m>*q ?ؐ>?>m>?>?>m>?>@?^>m>@?^>-??Gw>m>-??Gw>b?G>m>b?G>?g>m>?g>?H>m>`A6?/?/U= A     "#  !"&'$$%&*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSUVWTUWYZ[XY[^_\\]^bc``abfgddefjkhhijnollmnrsppqrvwttuvz{xxyz}~|}       # !!"#'$%%&'+())*+/,--./301123745567;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinde16AAH0=wyiԨ<ۧ "ֿV}#%b.D(bPe=>6{:D>D<6{ ]^>Gv;bv>(6{ ]^><6{Sf>J=b@>hGv;6{Sf>J=6{ ]^>A=b>;h<6{ ]^>A=6{:D>q@:=bv>=b>;<6{:D>q@:=6{i=(C=bOe=/=bv>=6{i=(C=6{o:CcD=bp:(2=bOe=/=6{o:CcD=6{EQ(C=bL佚/=bp:(2=6{EQ(C=6{Bq@:=bt=bL佚/=6{Bq@:=6{P\A=b჊;bt(6{EQS+<6{o:6{o:<6{i=S+bo:RFbPe=>bv>(ȸ`⼹bv>(b>Gv;rȸb>Gv;b@>h<*1;r껹b@>h;<U<*1;b>;=0=U=bOe=/=a,=0=bOe=/=bp:(2=a,=bp:(2=bL佚/=bo:RF``ȸ01m>01>U4ȸr껾01S>,01m>r*1;01}Ի>o:01S>,*1;U<01S>I<01}Ի>o:U<0=01m>F=01S>I<0=a,=01><=01m>F=a,=<=`⼾01>U401o:801>U401m>+m>+>U401m>01S>,+S>,+m>01S>,01}Ի>o:p.?o:+S>,01}Ի>o:01S>I<+S>II<01m>F=+m>F=+S>I<01m>F=01><=+><=+m>F=01><=01p:9@=+p:9@=+><=01p:9@=01<=+<=+p:9@=01<=01gF=+gF=+<=01gF=01MJ<+MJ<+gF=01MJ<01Xκo:p.p:+MJ<01Xκo:01M++M+p.p:01M+01g+g+M+01g01U4+U4+g01U401o:8+o:8+U401o:801>U4+>U4+o:8+>U4+m>=)>=>U4+m>+S>,=0>,=)>+S>,p.?o: \ [?o:=0>,p.?o:+S>I<=0>J< \ [?o:+S>I<+m>F==)>F==0>J<+m>F=+><==><==)>F=+><=+p:9@==p:9@==><=+p:9@=+<==<==p:9@=+<=+gF==#F==<=+gF=+MJ<= 뻾J<=#F=+MJU4=>U4=o:8=>U4=)> =)> =>U4=)>=0>, =0>, =)>=0>, \ [?o:&= h?o: =0>, \ [?o:=0>J< =0>J<&= h?o:=0>J<=)>F= =)>F= =0>J<=)>F==><= =><= =)>F==><==p:9@= =p:9@= =><==p:9@==<= =<= =p:9@==<==#F= =#F= =<==#F== 뻾J< = 뻾J< =#F== 뻾J< \0[o:&=gp: = 뻾J< \0[o:= 뻾+ = 뻾+&=gp:= 뻾+=# =# = 뻾+=#=U4 =U4 =#=U4=o:8 =o:8 =U4=o:8=>U4 =>U4 =o:8 =>U4 =)>Z>u>GZ>j=\c =)> =0>,Z>> OZ>u>G =0>,&= h?o:>#?s;Z>> O&= h?o: =0>J>=ͨ<>#?s; =0>J< =)>F=Z>u>=Z>>=ͨ< =)>F= =><=Z>k=v4=Z>u>= =><= =p:9@=Z>p: 8=Z>k=v4= =p:9@= =<=Z>Rv4=Z>p: 8= =<= =#F=Z>s =Z>Rv4= =#F= = 뻾J쉾ͨs = = 뻾J<&=gp:>ဿs;Z>쉾ͨ<&=gp: = 뻾+Z>쉾 O>ဿs; = 뻾+ =#Z>sGZ>쉾 O =# =U4Z>S\cZ>sG =U4 =o:8Z>p:oZ>S\c =o:8 =>U4Z>j=\cZ>p:oZ>j=\cZ>u>G>.`>+U>=%Z>u>GZ>> O>@~>D>.`>+UZ>> O>#?s;Q?"l?@;>@~>D>#?s;Z>>=ͨ<>@~>Z>=ͨu>=>`>=>@~>Zu>=Z>k=v4=>='=>`>=Z>k=v4=Z>p: 8=>p:V*=>='=Z>p: 8=Z>Rv4=>Ͻ'=>p:V*=Z>Rv4=Z>s =>k^=>Ͻ'=Z>s =Z>쉾ͨ<>4|U[<>k^=Z>쉾ͨ<>ဿs;Q?|k@;>4|U[<>ဿs;Z>쉾 O>4|CQ?|k@;Z>쉾 OZ>sG>k^+U>4|CZ>sGZ>S\c>Ͻ%>k^+UZ>S\cZ>p:o>o:ü>Ͻ%Z>p:oZ>j=\c>=%>o:ü>=%>.`>+UQ?R>Q;Q?|=;>.`>+U>@~>DQ?_Pn>e=@Q;>@~>DQ?"l?@;.?LDT?C;Q?_Pn>e=@@~>ZX<.?LDT?C;>@~>Z<>`>=Q?R>=Q?_Pn>X<>`>=>='=Q?=$*+=Q?R>=>='=>p:V*=Q?o:,=Q?=$*+=>p:V*=>Ͻ'=Q?½$*+=Q?o:,=>Ͻ'=>k^=Q?k^=>4|U[4|U[4|CQ?Dle=@<.?:SC;>4|C>k^+UQ?k^+U>Ͻ%Q?½;Q?Ͻ%>o:üQ?o:6Q?½;>o:ü>=%Q?|=;Q?o:6Q?|=;Q?R>Q;31)?O-L><31)?V=lԿQ;Q?_Pn>e=@<31)?ƹf><31)?O-L>e=@<.?LDT?C;:8?9?50<31)?ƹf><.?LDT?C;Q?_Pn>X<31)?ƹf>g=:8?9?50X=31)?O-L>L1=31)?ƹf>g=Q?R>=Q?=$*+=31)?V=a7=31)?O-L>L1=Q?=$*+=Q?o:,=31)?p:B8=31)?V=a7=Q?o:,=Q?½$*+=31)?B>a7=31)?p:B8=Q?½$*+=Q?a7=Q?mԿ<31)?!JmԿD<6{i=S+<܀o:o 7=6{ ]^><6{:D>D<܀o:o 7=6{Sf>J=6{ ]^><܀o:o 7=6{ ]^>A=6{Sf>J=܀o:o 7=6{:D>q@:=6{ ]^>A=܀o:o 7=6{i=(C=6{:D>q@:=܀o:o 7=6{o:CcD=6{i=(C=܀o:o 7=6{EQ(C=6{o:CcD=܀o:o 7=6{Bq@:=6{EQ(C=܀o:o 7=6{P\A=6{Bq@:=܀o:o 7=6{FdI=6{P\A=܀o:o 7=6{P\<6{FdI=܀o:o 7=6{BD<6{P\<܀o:o 7=6{EQS+<6{BD<܀o:o 7=6{o:<6{EQS+<܀o:o 7=6{i=S+<6{o:<܀o:o 7=31)?V=lԿ<31)?O-L><0D2?p:>)=31)?O-L><31)?ƹf><0D2?p:>)=31)?ƹf><:8?9?50<0D2?p:>)=:8?9?50<31)?ƹf>g=0D2?p:>)=31)?ƹf>g=31)?O-L>L1=0D2?p:>)=31)?O-L>L1=31)?V=a7=0D2?p:>)=31)?V=a7=31)?p:B8=0D2?p:>)=31)?p:B8=31)?B>a7=0D2?p:>)=31)?B>a7=31)?!JM1=0D2?p:>)=31)?!JM1=31)?|dg=0D2?p:>)=31)?|dg=:8?850<0D2?p:>)=:8?850<31)?|d<0D2?p:>)=31)?|d<31)?!J<0D2?p:>)=31)?!J<31)?C>mԿ<0D2?p:>)=31)?C>mԿ<31)?o:<0D2?p:>)=31)?o:<31)?V=lԿ<0D2?p:>)=@A}?8@}?֎? >C8? >0@}?֎?}?C? >P? >C8?}?C?}?N? >? >P?}?N?}?C? >P? >?}?C?}?֎? >C8? >P?}?֎?}?8@ >0@ >C8?}?8@}?Z@ >Z@ >0@}?Z@}?Z@ >@ >Z@}?Z@}?&n)@ >_/@ >@}?&n)@}?,@ >.3@ >_/@}?,@}?2-@ >4@ >.3@}?2-@}?,@ >.3@ >4@}?,@}?&n)@ >_/@ >.3@}?&n)@}?Z@ >@ >_/@}?Z@}?Z@ >Z@ >@}?Z@}?8@ >0@ >Z@ >0@ >C8?>?>h@ >C8? >P?>?>? >P? >?>?>? >? >P?>?>? >P? >C8?>?>? >C8? >0@>h@>? >0@ >Z@>Z@>h@ >Z@ >@>!@>Z@ >@ >_/@>84@>!@ >_/@ >.3@>8@>84@ >.3@ >4@>1:@>8@ >4@ >.3@>8@>1:@ >.3@ >_/@>84@>8@ >_/@ >@>!@>84@ >@ >Z@>Z@>!@ >Z@ >0@>h@>Z@>h@>?%? ?%?L?>?>?%??%? ?>?>?%??%??>?>?%??%??>?>?%? ?%??>?>h@%?L?%? ?>h@>Z@%?Z@%?L?>Z@>!@%?#@%?Z@>!@>84@%?8@%?#@>84@>8@%?=@%?8@>8@>1:@%?m?@%?=@>1:@>8@%?=@%?m?@>8@>84@%?8@%?=@>84@>!@%?#@%?8@>!@>Z@%?Z@%?#@>Z@>h@%?L?%?Z@%?L?%? ?3? ?3?L?%? ?%??3??3? ?%??%??J ?!%?3??%??%??3??J ?!%?%??%? ?3? ?3??%? ?%?L?3?L?3? ?%?L?%?Z@3?Z@3?L?%?Z@%?#@3?#@3?Z@%?#@%?8@3?8@3?#@%?8@%?=@3?=@3?8@%?=@%?m?@J ?;my@3?=@%?m?@%?=@3?=@J ?;my@%?=@%?8@3?8@3?=@%?8@%?#@3?#@3?8@%?#@%?Z@3?Z@3?#@%?Z@%?L?3?L?3?Z@3?L?3? ?ƣ@n1?ƣ@?3? ?3??ƣ@40?ƣ@n1?3??J ?!%?GZ @d>ƣ@40?J ?!%?3??ƣ@40?GZ @d>3??3? ?ƣ@n1?ƣ@40?3? ?3?L?ƣ@?ƣ@n1?3?L?3?Z@ƣ@Z@ƣ@?3?Z@3?#@ƣ@(@ƣ@Z@3?#@3?8@ƣ@C@ƣ@(@3?8@3?=@ƣ@gI@ƣ@C@3?=@J ?;my@GZ @2@ƣ@gI@J ?;my@3?=@ƣ@gI@GZ @2@3?=@3?8@ƣ@C@ƣ@gI@3?8@3?#@ƣ@(@ƣ@C@3?#@3?Z@ƣ@Z@ƣ@(@3?Z@3?L?ƣ@?ƣ@Z@ƣ@?ƣ@n1? @n1? @?ƣ@n1?ƣ@40? @40? @n1?ƣ@40?GZ @d>@== @40?GZ @d>ƣ@40? @40?@==ƣ@40?ƣ@n1? @n1? @40?ƣ@n1?ƣ@? @? @n1?ƣ@?ƣ@Z@ @Z@ @?ƣ@Z@ƣ@(@ @(@ @Z@ƣ@(@ƣ@C@ @C@ @(@ƣ@C@ƣ@gI@ @gI@ @C@ƣ@gI@GZ @2@@@ @gI@GZ @2@ƣ@gI@ @gI@@@ƣ@gI@ƣ@C@ @C@ @gI@ƣ@C@ƣ@(@ @(@ @C@ƣ@(@ƣ@Z@ @Z@ @(@ƣ@Z@ƣ@? @? @Z@ @? @n1?D,@?D,@;@ @n1? @40?D,@ ?D,@? @40?@==Y@H?Z@=KC@?Y@H?q@>KC@?KC@?Y@ ?Y@H?KC@?KC@ @Y@m@Y@ ?KC@ @KC@Z@Y@Z@Y@m@KC@Z@KC@u!@Y@ @Y@Z@KC@u!@KC@2@Y@>0@Y@ @KC@2@KC@(7@Y@\4@Y@>0@KC@(7@Z@@q@v@Y@\4@Z@@KC@(7@Y@\4@q@v@KC@(7@KC@2@Y@>0@Y@\4@KC@2@KC@u!@Y@ @Y@>0@KC@u!@KC@Z@Y@Z@Y@ @KC@Z@KC@@Y@m@Y@Z@Y@m@Y@ ?n@g ?n@&@Y@ ?Y@H?n@G ?n@g ?Y@H?q@>w@ ?n@G ?q@>Y@H?n@G ?w@ ?Y@H?Y@ ?n@g ?n@G ?Y@ ?Y@m@n@&@n@g ?Y@m@Y@Z@n@Z@n@&@Y@Z@Y@ @n@@n@Z@Y@ @Y@>0@n@ͮ/@n@@Y@>0@Y@\4@n@n3@n@ͮ/@Y@\4@q@v@w@@n@n3@q@v@Y@\4@n@n3@w@@Y@\4@Y@>0@n@ͮ/@n@n3@Y@>0@Y@ @n@@n@ͮ/@Y@ @Y@Z@n@Z@n@@Y@Z@Y@m@n@&@n@Z@}?֎?}?8@vZ@}?C?}?֎?vZ@}?N?}?C?vZ@}?C?}?N?vZ@}?֎?}?C?vZ@}?8@}?֎?vZ@}?Z@}?8@vZ@}?Z@}?Z@vZ@}?&n)@}?Z@vZ@}?,@}?&n)@vZ@}?2-@}?,@vZ@}?,@}?2-@vZ@}?&n)@}?,@vZ@}?Z@}?&n)@vZ@}?Z@}?Z@vZ@}?8@}?Z@vZ@n@&@n@g ?Ys@Z@n@g ?n@G ?Ys@Z@n@G ?w@ ?Ys@Z@w@ ?n@G ?Ys@Z@n@G ?n@g ?Ys@Z@n@g ?n@&@Ys@Z@n@&@n@Z@Ys@Z@n@Z@n@@Ys@Z@n@@n@ͮ/@Ys@Z@n@ͮ/@n@n3@Ys@Z@n@n3@w@@Ys@Z@w@@n@n3@Ys@Z@n@n3@n@ͮ/@Ys@Z@n@ͮ/@n@@Ys@Z@n@@n@Z@Ys@Z@n@Z@n@&@Ys@Z@`A6?h>o:o:o: Ad`    !"# !#%&'$%')*+()+-./,-/123013567457:;889:=>?<=?BC@@ABFGDDEFJKHHIJNOLLMNRSPPQRVWTTUVZ[XXYZ]^_\]_abc`acefgdegijkhikmnolmoqrspqsuvwtuwz{xxyz}~|}        !"# !#%&'$%'+())*+,-.,./230012674456:;889:=>?<=?@AB@BCDEFDFGHIJHJKOLMMNOPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfghijhjkolmmnopqrprstuvtvwxyzxz{|}~|~         !" "#$%&$&'+())*+,-.,./01202345646789:8:;?<==>?C@AABCGDEEFGHIJHJKOLMMNOSPQQRSWTUUVW[XYYZ[\]^\^_`ab`bcdefdfghijhjkolmmnopqrprstuvtvwxyzxz{|}}~0A01 - Standard`  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_PA@ pCylinde20A AHp?cvO>ʡ(?pvO>5>xqh=Kx>s^=ʡ(?pvO>8J?cvO>A?ss=5>xqh=8J?cvO>NjP?>9G?t=A?ss=NjP?>8J?΃O>A?ts=9G?t=8J?΃O>ʡ(?HO>5>D f=A?ts=ʡ(?HO>?΃O>Kx>t^=5>D f=?΃O>} ?>^>]=Kx>t^=} ?>?cvO>Kx>s^=^>]=Kx>s^=5>xqh=5>F|K<3aqPY<5>xqh=A?ss=%?aqPË<5>F|K<A?ss=9G?t=/?ʋ<%?aqPË<9G?t=A?ts=%?PǗËD f=5>A<%?PǗË<5>D f=Kx>t^=3PǗY<5>At^=^>]=uS<3PǗY<^>]=Kx>s^=3aqPY<uS<ʡ(?pvO>?cvO>ʡ(?>8J?cvO>ʡ(?pvO>ʡ(?>NjP?>8J?cvO>ʡ(?>8J?΃O>NjP?>ʡ(?>ʡ(?HO>8J?΃O>ʡ(?>?΃O>ʡ(?HO>ʡ(?>} ?>?΃O>ʡ(?>?cvO>} ?>ʡ(?>3aqPY<5>F|K<5><5>F|K<%?aqPË<5><%?aqPË<%?PǗË<5>A<5><5>A<3PǗY<5><3PǗY<uS<5><uS<3aqPY<5><@ApdA@E@M@E@b2@F[ @P@F[ @M@E@`@E@ [@F[ @b2@F[ @`@E@}d@H@_@F[ @ [@F[ @}d@H@`@E@ [@F[ @_@F[ @`@E@M@E@b2@F[ @ [@F[ @M@E@dA@E@P@F[ @b2@F[ @dA@E@`=@H@ @F[ @P@F[ @`=@H@dA@E@P@F[ @ @F[ @P@F[ @b2@F[ @b2@@?@b2@F[ @ [@F[ @RK@@b2@@ [@F[ @_@F[ @Q@@RK@@_@F[ @ [@F[ @RK@@Q@@ [@F[ @b2@F[ @b2@@RK@@b2@F[ @P@F[ @?@b2@@P@F[ @ @F[ @Z?@?@ @F[ @P@F[ @?@Z?@M@E@dA@E@M@H@`@E@M@E@M@H@}d@H@`@E@M@H@`@E@}d@H@M@H@M@E@`@E@M@H@dA@E@M@E@M@H@`=@H@dA@E@M@H@dA@E@`=@H@M@H@?@b2@@b2@@b2@@RK@@b2@@RK@@Q@@b2@@Q@@RK@@b2@@RK@@b2@@b2@@b2@@?@b2@@?@Z?@b2@@Z?@?@b2@@`A6y3Ҵ?33 55>xCX> A0    "#  !"&'$$%&*+(()*-./,-/123013567457:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@ pCylinde01A AHp?σ>O>ʡ(?H>O>5>D >h=Kx>t>^=ʡ(?H>O>8J?σ>O>A?t>s=5>D >h=8J?σ>O>NjP?>>9G?>t=A?t>s=NjP?>>8J?cv>O>A?s>s=9G?>t=8J?cv>O>ʡ(?ov>O>5>xq>f=A?s>s=ʡ(?ov>O>?cv>O>Kx>s>^=5>xq>f=?cv>O>} ?>>^>>]=Kx>s>^=} ?>>?σ>O>Kx>t>^=^>>]=Kx>t>^=5>D >h=5>A><3OǗ>Y<5>D >h=A?t>s=%?OǗ>Ë<5>A><A?t>s=9G?>t=/?>ʋ<%?OǗ>Ë<9G?>t=A?s>s=%?`qP>Ëʋ<A?s>s=5>xq>f=5>F|K><%?`qP>Ë<5>xq>f=Kx>s>^=3`qP>Y<5>F|K>s>^=^>>]=u>S<3`qP>Y<^>>]=Kx>t>^=3OǗ>Y<u>S<ʡ(?H>O>?σ>O>ʡ(?>>8J?σ>O>ʡ(?H>O>ʡ(?>>NjP?>>8J?σ>O>ʡ(?>>8J?cv>O>NjP?>>ʡ(?>>ʡ(?ov>O>8J?cv>O>ʡ(?>>?cv>O>ʡ(?ov>O>ʡ(?>>} ?>>?cv>O>ʡ(?>>?σ>O>} ?>>ʡ(?>>3OǗ>Y<5>A><5>><5>A><%?OǗ>Ë<5>><%?OǗ>Ëʋ<5>>ʋ<%?`qP>Ë<5>><%?`qP>Ë<5>F|K><5>><5>F|K><3`qP>Y<5>><3`qP>Y<u>S<5>><u>S<3OǗ>Y<5>><@ApdA@E@M@E@b2@F[ @P@F[ @M@E@`@E@ [@F[ @b2@F[ @`@E@}d@H@_@F[ @ [@F[ @}d@H@`@E@ [@F[ @_@F[ @`@E@M@E@b2@F[ @ [@F[ @M@E@dA@E@P@F[ @b2@F[ @dA@E@`=@H@ @F[ @P@F[ @`=@H@dA@E@P@F[ @ @F[ @P@F[ @b2@F[ @b2@@?@b2@F[ @ [@F[ @RK@@b2@@ [@F[ @_@F[ @Q@@RK@@_@F[ @ [@F[ @RK@@Q@@ [@F[ @b2@F[ @b2@@RK@@b2@F[ @P@F[ @?@b2@@P@F[ @ @F[ @Z?@?@ @F[ @P@F[ @?@Z?@M@E@dA@E@M@H@`@E@M@E@M@H@}d@H@`@E@M@H@`@E@}d@H@M@H@M@E@`@E@M@H@dA@E@M@E@M@H@`=@H@dA@E@M@H@dA@E@`=@H@M@H@?@b2@@b2@@b2@@RK@@b2@@RK@@Q@@b2@@Q@@RK@@b2@@RK@@b2@@b2@@b2@@?@b2@@?@Z?@b2@@Z?@?@b2@@`A6y3Ҵ?33 55>>xCX> A0    "#  !"&'$$%&*+(()*-./,-/123013567457:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@pCube1_0GeAA82W> => =>T^>T`A6>X=Q A90AVMtl17PA@pCube2_0GeAA82W = =T^T`A6>X=Q A90AVMtl18PA@pCube3_0GeAA8kG:?Qպ>G:?QպU>G:? @|_G:? `A6>X==k>S A90AVMtl19PA@pCube4_0GeAA8kH:Qպ>H:QպU>I: @|_I: `A6>X==pS A90AVMtl20PA@Quader01AqAhz>>pM?>z>>>pM?>>z>$>pM?$>z>>$>pM?>$>`A6T?U?U?(?N>> A 0A/01 - Standard1  PA6 @@@Quader02AqAhz> >pM? >z>X#>pM?X#>z> $>pM? $>z>X#$>pM?X#$>`A6T?U?U?(?\> A 0A/01 - Standard1  PA6 @@ MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &0޼ڽ= W>!*"&퀽?L?&? # # # #< #< #<0pCylinder2@ &!*"&???0pCylinder1@ &!*"&???0pCylinder3@ &!*"&???0$$$DUMMY@pCylinder4 &/ݼڽ= W!*I@"&퀽L& # # # #< #< #<0pCylinder5@ &!*"&???0 pCylinder6@ &!*"&???0 pCylinder7@ &!*"&???0 $$$DUMMY@pSphere01 &!}=!*="&5|?&p>6> # # # #< #< #<0 pSphere1_0@  &!*"&???0 $$$DUMMY@pCylinder8 &`-n!*"&??x ? # # # #< #< #<0pCylinder9@  &!*"&???0pCylinde10@  &!*"&???0$$$DUMMY@pCylinde11 &`1E:!*"&??x ? # # # #< #< #<0pCylinde12@ &!*"&???0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &/U=!*"&?/?? # # # #< #< #<0pCylinde15@ &!*"&???0pCylinde16@ &!*"&???0$$$DUMMY@pCylinde17 &!*"&?h>@ # # # #< #< #<0pCylinde18@ &!*"&???0$$$DUMMY@pCylinde19 &5>UB>>!*??"&N >?= # # # #< #< #<0pCylinde20@ &tiy1!*"&LI???0pCylinde01@ &tiy1p!*"&LI???0$$$DUMMY@pCylinde21 &i>UB>!*??"&N >?= # # # #< #< #<0$$$DUMMY@pCube01 &Q !*"&>X=? # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &Q ?!*"&>X=? # # # #< #< #<0pCube2_0Ge@ &!*"&???0 $$$DUMMY@pCube03 &=S k!*"&>X=? # # # #< #< #<0!pCube3_0Ge@  &!*"&???0"$$$DUMMY@pCube04 &=S p?!*"&>X=? # # # #< #< #<0#pCube4_0Ge@" &!*"&???0$Quader01@ &(?N>>!*"&T?U?U?0%Quader02@ &(?\>!*"&T?U?U?gl-117-1.3.2/models/gl-14c.3ds0000644000175000017500000014730210145416156014570 0ustar cedriccedricMM ==>=  VMtl01   0 @0A0P0R0S00 ?01 - Standard  0 @0 A0P0R0S00 ?[0dGL-14C_D.TGAQS T LV Q8>X z@Z ( VMtl03 GGG  GGG0 @0A0P0R0S00 ?02 - Standard  0 @0 A0P0R0S00 ?G0dGL-14C_C.TGAQS X =Z # VMtl07 GGG  GGG0 @0A0P0R0S00 ? VMtl08 fff  fff0 @0A0P0R0S00 ? VMtl09  0 @0A0P0R0S00 ? VMtl10 GGG  GGG0 @0A0P0R0S00 ? VMtl11 GGG  GGG0 @0A0P0R0S00 ? VMtl12 GGG  GGG0 @0A0P0R0S00 ? VMtl13 GGG  GGG0 @0A0P0R0S00 ? ?@" pSphere1_0A AxsKO= *=OǗ=~=&l= >wL?= >OǗ=~=+KO=?8=8M?==&l= >+KO=?8=]%]v=DZʥ=8M?==]%]v=+KO?8=8M?=DZʥ=+KO?8=OǗ}=&l!>8M?=OǗ}=sKO *=wM? >&l!>sKO *=*^?_=Rd>wM? >*^?_=sKO= *=wL?= >Rd>wL?= >&l= >$KO=R(>?=QG/>&l= >8M?===ɮ$>$KO=R(>8M?==DZʥ=䫿y2#>=ɮ$>DZʥ=8M?=ɮ$>䫿y2#>8M?=&l!>$KOR(>ɮ$>&l!>wM? >?QG/>$KOR(>wM? >Rd>>te] y1>?QG/>Rd>wL?= >?=QG/>>te] y1>?=QG/>$KO=R(>yA`#<2~E>$KO=R(>=ɮ$>EП<0?>yA`=ɮ$>䫿y2#>\.G>>EП<0?>䫿y2#>ɮ$>EП0?>\.G>>ɮ$>$KOR(>yA`rcA>EП0?>$KOR(>?QG/>#0~E>yA`rcA>?QG/>>te] y1>OL8F>#0~E>>te] y1>?=QG/>#<2~E>OL8F>#<2~E>yA`K\S J>yA`EП<0?>K\S J>EП<0?>\.G>>K\S J>\.G>>EП0?>K\S J>EП0?>yA`rcA>K\S J>yA`rcA>#0~E>K\S J>#0~E>OL8F>K\S J>OL8F>#<2~E>K\S J>`A6{}?r=A"ip>6 -= A-8     # !!"#'$%%&'+())*+,-.,./012023456467;899:;<=><>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVW[XYYZ[\]^\^_`abcdefghijklmnopqrstuvw0AVMtl018  !"#$%&'()*+,-./01234567PA@&pCylinder4A&AHpY˿<`Y˿7= n̮h=̮<=/+Y˿7= nY˿~I=V;̮d=;̮h=Y˿~I=V;Y˿Z=<̮{= ?'=̮d=;Y˿Z=̮<=Y˿h5$Lq=Y˿림3=̮=̮ + d>Y˿림3=Y˿7=̮h"=̮=Y˿7=Y˿~IAL=̮e=̮h"=Y˿~IAL=Y˿Z<̮{ ?'=̮e=Y˿ZTG̮=/+Y˿)Y˿<`̮<=/+̮hk>TG̮<=/+̮h=—Q_=ἁ— G=5K̮h=̮d=;—=_;—Q_=̮d=;̮{= ?'=—3= 5=—=_;̮{= ?'=̮d==—==—3= 5=̮d==̮h="=—Q_=b=—==̮h="=̮<=—G=f >—Q_=b=̮<=̮ + d>—%x>—G=f >̮ + d>̮=— Gg >—%x>̮=̮h"=—Q_b=— Gg >̮h"=̮e=—ª=—Q_b=̮e=̮{ ?'=—3 5=—ª=̮{ ?'=̮d;—Ne;—3 5=̮d;̮h—Q_ἁ—Ne;̮ḫ=/+—G5K—Q_̮=/+̮hk>TG—Gxj—G5K̮hk>TG̮<=/+— G=5K—Gxj— G=5K—Q_=M8|u=}M=SK—Q_=ἁ—=_;M^=q:M8|u=}!—=_;—3= 5=MI==M^=q:—3= 5=—==M^=%Ɩ=MI==—==—Q_=b=M8|u=a{=M^=%Ɩ=—Q_=b=—G=f >M=a=M8|u=a{=—G=f >—%x>Mc%J >M=a=—%x>— Gg >Ma=Mc%J >— Gg >—Q_b=M8|ua{=Ma=—Q_b=—ª=M^%Ɩ=M8|ua{=—ª=—3 5=MI=M^%Ɩ=—3 5=—Ne;M^q:MI=—Ne;—Q_M8|u}M^q:—Q_ἁ—G5KMSKM8|u}!—G5K—GxjMȢOhMSK—Gxj— G=5KM=SKMȢOhM=SKM8|u=}{ R==2z{ <M8|u=}M^=q:{ 2w=ŕE;{ R==2zM^=q:MI=={ =g<{ 2w=ŕE;MI==M^=%Ɩ={ 1w=T8p={ =g<M^=%Ɩ=M8|u=a{={ R==g={ 1w=T8p=M8|u=a{=M=a={ ޣ<={ R==g=M=a=Mc%J >{ b={ ޣ<=Mc%J >Ma={ ̼={ b=Ma=M8|ua{={ R=g={ ̼=M8|ua{=M^%Ɩ={ 2wT8p={ R=g=M^%Ɩ=MI={ g<{ 2wT8p=MI=M^q:{ 1wE;{ g<M^q:M8|u}{ R=2z{ 1wE;M8|u}MSK{ ̼{ R=2zMSKMȢOh{ ‹iq+{ ̼MȢOhM=SK{ <{ ‹iq+{ <{ R==2zg^@@=>@!=Q->@2>^@@=(_@=J?@ط=>@!=(_@=Z`@Z==(@@5C)xB@r>A@B=Qb@A>b@dG>wB@kL>)xB@r>b@dG>enb@ϟv>#B@J>wB@kL>enb@ϟv>b@:=>(+B@a>#B@J>b@:=>ga@b>.pA@mS>(+B@a>ga@b>7`@y̠>ҍ@@>.pA@mS>7`@y̠>_@o>?@K">ҍ@@>_@o>3_@c>>@'>?@K">3_@c>Z^@Iv>S>@~q>>@'>Z^@Iv>Q^@caH>>@nM>S>@~q>Q^@caH>,^@Qk>Q->@2>>@nM>Q->@2>>@!=%@=$@>>@!=J?@ط= %@R <%@=J?@ط==(@@5C< s&@ %@R <=(@@5C<8A@}]=<'@P]< s&@8A@}]=A@B='@:h=<'@P]w(@i='@:h=)xB@r>wB@kL>(@P>w(@i=wB@kL>#B@J>I(@q>(@P>#B@J>(+B@a>>(@+>I(@q>(+B@a>.pA@mS>'@>>(@+>.pA@mS>ҍ@@>&@>'@>ҍ@@>?@K">&@S>&@>?@K">>@'>f%@">&@S>>@'>S>@~q>h$@H>f%@">S>@~q>>@nM>$@%$R>h$@H>>@nM>Q->@2>$@>$@%$R>$@>%@=d?=?Yi>%@= %@R ?S!=w(@i=(@P>2?sZ>?>(@P>I(@q>8?Y6>2?sZ>I(@q>>(@+>?>8?Y6>>(@+>'@>?>'@>&@>/O?>&@>&@S>?n>/O?>&@S>f%@">wj?H>?n>f%@">h$@H>?>wj?H>h$@H>$@%$R>2?'[>?>$@%$R>$@>?Yi>2?'[>?Yi>d?=?!=ד?)>d?=vO?2%=ˀ?=?!=vO?2%==?0?&> ?9_=?>2?sZ>J?`a>?&>2?sZ>8?Y6>l"?C>J?`a>8?Y6>?>K?*>l"?C>?>5|?1>K?*>/O?>?D>5|?1>/O?>?n>VՓ?:$>?D>?n>wj?H>?Ǥ>VՓ?:$>wj?H>?>n?PŒ>?Ǥ>?>2?'[>?Pa>n?PŒ>2?'[>?Yi>ד?)>?Pa>ד?)>?!=9 ?G.>?H>?!=ˀ?=^?x>9 ?G.>ˀ?=P?=p?>^?x>P?=&?= ?>p?>&?= ?9_=; ? t-> ?> ?9_=?&> ?N H>; ? t->?&>J?`a>+ ? g> ?N H>J?`a>l"?C> ?~>+ ? g>l"?C>K?*>*q ?ؐ> ?~>K?*>5|?1>?>*q ?ؐ>5|?1>?D>?>?>?D>VՓ?:$>@?^>?>VՓ?:$>?Ǥ>-??Gw>@?^>?Ǥ>n?PŒ>b?G>-??Gw>n?PŒ>?Pa>?g>b?G>?Pa>ד?)>?H>?g>?H>9 ?G.>m>9 ?G.>^?x>m>^?x>p?>m>p?> ?>m> ?>; ? t->m>; ? t-> ?N H>m> ?N H>+ ? g>m>+ ? g> ?~>m> ?~>*q ?ؐ>m>*q ?ؐ>?>m>?>?>m>?>@?^>m>@?^>-??Gw>m>-??Gw>b?G>m>b?G>?g>m>?g>?H>m>`A6ޞ?ö-?.n 5= A     "#  !"&'$$%&*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSUVWTUWYZ[XY[^_\\]^bc``abfgddefjkhhijnollmnrsppqrvwttuvz{xxyz}~|}       # !!"#'$%%&'+())*+/,--./301123745567;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinder1AAH0Y˿7= nY˿<`鿴 [;Y˿~I=V;Y˿7= n鿴 [;Y˿Z=D(c2=>w~}<>DGv;c l>(w~NT>I=cu)>hGv;w~+\>I=w~NT>A=cb>;hA=w~|<>q@:=c l>=cb>;q@:=w~K=(C=c2=/=c l>=w~K=(C=w~o:DcD=co:(2=c2=/=w~o:DcD=w~2(C=cڽ/=co:(2=w~2(C=w~1:q@:=cPj=cڽ/=w~1:q@:=w~RA=c[;cPj(w~2S+w~o:co:RFc2=>c l>(HH?>ȸHH =`⼿c l>(cb>Gv;HH<>rHH?>ȸcb>Gv;cu)>h<HH2>*1;HH<>r껿cu)>h;<HH<>U<HH2>*1;cb>;=HH@>0=HH<>U=c2=/=HH=a,=HH@>0=c2=/=co:(2=HHo:/=HH=a,=co:(2=cڽ/=HHa,=HHo:/=cڽ/=cPj=HH0=HHa,=cPj=c[;<HHU<HH0=c[;HH`HHȸcڽ>co:RFHHo:HH`⼿co:RFc2=>HH =`HHo:HH =`HH?>ȸN -Y>N -.>U4HH?>ȸHH<>rN -R>,N -Y>HH<>rHH2>*1;N ->o:N -R>,HH2>*1;HH<>UJo:HH<>U<HH@>0=N -Y>F=N -R>J<HH@>0=HH=a,=N -.><=N -Y>F=HH=a,=HHo:/=N -p:9@=N -.><=HHo:/=HHa,=N -"<=N -p:9@=HHa,=HH0=N -RF=N -"<=HH0=HHUU4N -o:8N -.>U4N -Y>&Y>&.>U4N -Y>N -R>,&R>,&Y>N -R>,N ->o:pMh?HG&R>,N ->o:N -R>J<&R>JJF=&Y>F=&R>JF=N -.><=&.><=&Y>F=N -.><=N -p:9@=&p:9@=&.><=N -p:9@=N -"<=&"<=&p:9@=N -"<=N -RF=&RF=&"<=N -RF=N -KJ<&KJ<&RF=N -KJU4&.>U4&o:8&.>U4&Y>=/>=( >U4&Y>&R>,=q->,=/>&R>,pMh?HG \ǤD?o:=q->,pMh?HG&R>J<=q->I< \ǤD?o:&R>J<&Y>F==/>F==q->I<&Y>F=&.><==& ><==/>F=&.><=&p:9@==p:9@==& ><=&p:9@=&"<== <==p:9@=&"<=&RF== 䒾E== <=&RF=&KJ<=L'J<= 䒾E=&KJU4=( >U4=o:8=( >U4=/> =/> =( >U4=/>=q->, =q->, =/>=q->, \ǤD?o:&= O?o: =q->, \ǤD?o:=q->I< =q->I<&= O?o:=q->I<=/>F= =/>F= =q->I<=/>F==& ><= =& ><= =/>F==& ><==p:9@= =p:9@= =& ><==p:9@== <= = <= =p:9@== <== 䒾E= = 䒾E= = <== 䒾E==L'J< =L'J< = 䒾E==L'J< \!Do:&=,Oo: =L'J< \!Do:=L'+ =L'+&=,Oo:=L'+= 䒾 = 䒾 =L'+= 䒾= U4 = U4 = 䒾= U4=o:8 =o:8 = U4=o:8=( >U4 =( >U4 =o:8 =( >U4 =/>Z>)Y>GZ>T=\c =/> =q->,Z>8u> OZ>)Y>G =q->,&= O?o:>yd?s;Z>8u> O&= O?o: =q->I8u>>ͨ<>yd?s; =q->I< =/>F=Z>)Y>=Z>8u>>ͨ< =/>F= =& ><=Z>B=w4=Z>)Y>= =& ><= =p:9@=Z>p: 8=Z>B=w4= =p:9@= = <=Z>Ƚw4=Z>p: 8= = <= = 䒾E=Z>ߐW =Z>Ƚw4= = 䒾E= =L'JߐW = =L'J<&=,Oo:>ocs;Z>sͨ<&=,Oo: =L'+Z>s O>ocs; =L'+ = 䒾Z>WGZ>s O = 䒾 = U4Z>Ƚ\cZ>WG = U4 =o:8Z>p:oZ>Ƚ\c =o:8 =( >U4Z>T=\cZ>p:oZ>T=\cZ>)Y>G>G>+U>=&Z>)Y>GZ>8u> O>(a>E>G>+UZ>8u> O>yd?s;Q?%9?@;>(a>E>yd?s;Z>8u>>ͨ<>(a>Z8u>>ͨ)Y>=>GG>=>(a>Z)Y>=Z>B=w4=>='=>GG>=Z>B=w4=Z>p: 8=>o:V*=>='=Z>p: 8=Z>Ƚw4=>r'=>o:V*=Z>Ƚw4=Z>ߐW =>E=>r'=Z>ߐW =Z>sͨ<>^V[<>E=Z>sͨ<>ocs;Q?h9@;>^V[<>ocs;Z>s O>^EQ?h9@;Z>s OZ>WG>E+U>^EZ>WGZ>Ƚ\c>q&>E+UZ>Ƚ\cZ>p:o>o:ü>q&Z>p:oZ>T=\c>=&>o:ü>=&>G>+UQ?:>Q;Q?=;>G>+U>(a>EQ?R>e=@Q;>(a>EQ?%9?@;.?;?C;Q?R>e=@(a>ZX<.?;?C;>(a>Z<>GG>=Q?:>=Q?R>X<>GG>=>='=Q?=$*+=Q?:>=>='=>o:V*=Q?o:,=Q?=$*+=>o:V*=>r'=Q?Tҫ$*+=Q?o:,=>r'=>E=Q?8=Q?Tҫ$*+=>E=>^V[^V[^EQ?Pe=@<.?*&C;>^E>E+UQ?8Q;Q?Pe=@<>E+U>q&Q?Sҫ;Q?8Q;>q&>o:üQ?o:6Q?Sҫ;>o:ü>=&Q?=;Q?o:6Q?=;Q?:>Q;31)?94><31)?\=mԿQ;Q?R>e=@<31)?1L><31)?94>e=@<.?;?C;:8?W ?50<31)?1L><.?;?C;Q?R>X<31)?1L>g=:8?W ?50X=31)?94>M1=31)?1L>g=Q?:>=Q?=$*+=31)?\=a7=31)?94>M1=Q?=$*+=Q?o:,=31)?p:B8=31)?\=a7=Q?o:,=Q?Tҫ$*+=31)?|Ca7=31)?p:B8=Q?Tҫ$*+=Q?8=31)?2M1=31)?|Ca7=Q?8=Q?PX<31)?`%Jg=31)?2M1=Q?PX<.?*&C;:8?50<31)?`%Jg=.?*&C;Q?Pe=@<31)?`%J<:8?50DD<<هo:o 7=w~+\>I=w~NT><<هo:o 7=w~NT>A=w~+\>I=<هo:o 7=w~|<>q@:=w~NT>A=<هo:o 7=w~K=(C=w~|<>q@:=<هo:o 7=w~o:DcD=w~K=(C=<هo:o 7=w~2(C=w~o:DcD=<هo:o 7=w~1:q@:=w~2(C=<هo:o 7=w~RA=w~1:q@:=<هo:o 7=w~tZJ=w~RA=<هo:o 7=w~R<0D2?o:>)=31)?94><31)?1L><0D2?o:>)=31)?1L><:8?W ?50<0D2?o:>)=:8?W ?50<31)?1L>g=0D2?o:>)=31)?1L>g=31)?94>M1=0D2?o:>)=31)?94>M1=31)?\=a7=0D2?o:>)=31)?\=a7=31)?p:B8=0D2?o:>)=31)?p:B8=31)?|Ca7=0D2?o:>)=31)?|Ca7=31)?2M1=0D2?o:>)=31)?2M1=31)?`%Jg=0D2?o:>)=31)?`%Jg=:8?50<0D2?o:>)=:8?50<31)?`%J<0D2?o:>)=31)?`%J<31)?2<0D2?o:>)=31)?2<31)?|CmԿ<0D2?o:>)=31)?|CmԿ<31)?o:<0D2?o:>)=31)?o:<31)?\=mԿ<0D2?o:>)=@A}?8@}?֎? >C8? >0@}?֎?}?C? >P? >C8?}?C?}?N? >? >P?}?N?}?C? >P? >?}?C?}?֎? >C8? >P?}?֎?}?8@ >0@ >C8?}?8@}?Z@ >Z@ >0@}?Z@}?Z@ >@ >Z@}?Z@}?&n)@ >_/@ >@}?&n)@}?,@ >.3@ >_/@}?,@}?2-@ >4@ >.3@}?2-@}?,@ >.3@ >4@}?,@}?&n)@ >_/@ >.3@}?&n)@}?Z@ >@ >_/@}?Z@}?Z@ >Z@ >@}?Z@}?8@ >0@ >Z@ >0@ >C8?>?>h@ >C8? >P?>?>? >P? >?>?>? >? >P?>?>? >P? >C8?>?>? >C8? >0@>h@>? >0@ >Z@>Z@>h@ >Z@ >@>!@>Z@ >@ >_/@>84@>!@ >_/@ >.3@>8@>84@ >.3@ >4@>1:@>8@ >4@ >.3@>8@>1:@ >.3@ >_/@>84@>8@ >_/@ >@>!@>84@ >@ >Z@>Z@>!@ >Z@ >0@>h@>Z@>h@>?%? ?%?L?>?>?%??%? ?>?>?%??%??>?>?%??%??>?>?%? ?%??>?>h@%?L?%? ?>h@>Z@%?Z@%?L?>Z@>!@%?#@%?Z@>!@>84@%?8@%?#@>84@>8@%?=@%?8@>8@>1:@%?m?@%?=@>1:@>8@%?=@%?m?@>8@>84@%?8@%?=@>84@>!@%?#@%?8@>!@>Z@%?Z@%?#@>Z@>h@%?L?%?Z@%?L?%? ?3? ?3?L?%? ?%??3??3? ?%??%??J ?!%?3??%??%??3??J ?!%?%??%? ?3? ?3??%? ?%?L?3?L?3? ?%?L?%?Z@3?Z@3?L?%?Z@%?#@3?#@3?Z@%?#@%?8@3?8@3?#@%?8@%?=@3?=@3?8@%?=@%?m?@J ?;my@3?=@%?m?@%?=@3?=@J ?;my@%?=@%?8@3?8@3?=@%?8@%?#@3?#@3?8@%?#@%?Z@3?Z@3?#@%?Z@%?L?3?L?3?Z@3?L?3? ?ƣ@n1?ƣ@?3? ?3??ƣ@40?ƣ@n1?3??J ?!%?GZ @d>ƣ@40?J ?!%?3??ƣ@40?GZ @d>3??3? ?ƣ@n1?ƣ@40?3? ?3?L?ƣ@?ƣ@n1?3?L?3?Z@ƣ@Z@ƣ@?3?Z@3?#@ƣ@(@ƣ@Z@3?#@3?8@ƣ@C@ƣ@(@3?8@3?=@ƣ@gI@ƣ@C@3?=@J ?;my@GZ @2@ƣ@gI@J ?;my@3?=@ƣ@gI@GZ @2@3?=@3?8@ƣ@C@ƣ@gI@3?8@3?#@ƣ@(@ƣ@C@3?#@3?Z@ƣ@Z@ƣ@(@3?Z@3?L?ƣ@?ƣ@Z@ƣ@?ƣ@n1? @n1? @?ƣ@n1?ƣ@40? @40? @n1?ƣ@40?GZ @d>@== @40?GZ @d>ƣ@40? @40?@==ƣ@40?ƣ@n1? @n1? @40?ƣ@n1?ƣ@? @? @n1?ƣ@?ƣ@Z@ @Z@ @?ƣ@Z@ƣ@(@ @(@ @Z@ƣ@(@ƣ@C@ @C@ @(@ƣ@C@ƣ@gI@ @gI@ @C@ƣ@gI@GZ @2@@@ @gI@GZ @2@ƣ@gI@ @gI@@@ƣ@gI@ƣ@C@ @C@ @gI@ƣ@C@ƣ@(@ @(@ @C@ƣ@(@ƣ@Z@ @Z@ @(@ƣ@Z@ƣ@? @? @Z@ @? @n1?D,@?D,@;@ @n1? @40?D,@ ?D,@? @40?@==Y@H?Z@=KC@?Y@H?q@>KC@?KC@?Y@ ?Y@H?KC@?KC@ @Y@m@Y@ ?KC@ @KC@Z@Y@Z@Y@m@KC@Z@KC@u!@Y@ @Y@Z@KC@u!@KC@2@Y@>0@Y@ @KC@2@KC@(7@Y@\4@Y@>0@KC@(7@Z@@q@v@Y@\4@Z@@KC@(7@Y@\4@q@v@KC@(7@KC@2@Y@>0@Y@\4@KC@2@KC@u!@Y@ @Y@>0@KC@u!@KC@Z@Y@Z@Y@ @KC@Z@KC@@Y@m@Y@Z@Y@m@Y@ ?n@g ?n@&@Y@ ?Y@H?n@G ?n@g ?Y@H?q@>w@ ?n@G ?q@>Y@H?n@G ?w@ ?Y@H?Y@ ?n@g ?n@G ?Y@ ?Y@m@n@&@n@g ?Y@m@Y@Z@n@Z@n@&@Y@Z@Y@ @n@@n@Z@Y@ @Y@>0@n@ͮ/@n@@Y@>0@Y@\4@n@n3@n@ͮ/@Y@\4@q@v@w@@n@n3@q@v@Y@\4@n@n3@w@@Y@\4@Y@>0@n@ͮ/@n@n3@Y@>0@Y@ @n@@n@ͮ/@Y@ @Y@Z@n@Z@n@@Y@Z@Y@m@n@&@n@Z@}?֎?}?8@vZ@}?C?}?֎?vZ@}?N?}?C?vZ@}?C?}?N?vZ@}?֎?}?C?vZ@}?8@}?֎?vZ@}?Z@}?8@vZ@}?Z@}?Z@vZ@}?&n)@}?Z@vZ@}?,@}?&n)@vZ@}?2-@}?,@vZ@}?,@}?2-@vZ@}?&n)@}?,@vZ@}?Z@}?&n)@vZ@}?Z@}?Z@vZ@}?8@}?Z@vZ@n@&@n@g ?Ys@Z@n@g ?n@G ?Ys@Z@n@G ?w@ ?Ys@Z@w@ ?n@G ?Ys@Z@n@G ?n@g ?Ys@Z@n@g ?n@&@Ys@Z@n@&@n@Z@Ys@Z@n@Z@n@@Ys@Z@n@@n@ͮ/@Ys@Z@n@ͮ/@n@n3@Ys@Z@n@n3@w@@Ys@Z@w@@n@n3@Ys@Z@n@n3@n@ͮ/@Ys@Z@n@ͮ/@n@@Ys@Z@n@@n@Z@Ys@Z@n@Z@n@&@Ys@Z@`A6?h>|o:o:o: Ad`    !"# !#%&'$%')*+()+-./,-/123013567457:;889:=>?<=?ABC@ACFGDDEFJKHHIJNOLLMNRSPPQRVWTTUVZ[XXYZ]^_\]_abc`acefgdegijkhikmnolmoqrspqsvwttuvz{xxyz}~|}         !" "#$%&$&'+())*+,-.,./301123745567;899:;<=><>?@AB@BCDEFDFGIJKHIKNOLLMNPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfgijkhiknollmnpqrprstuvtvwxyzxz{|}~|~         !" "#$%&$&'+())*+,-.,./01202345646789:8:;?<==>?C@AABCGDEEFGKHIIJKLMNLNOSPQQRSWTUUVW[XYYZ[\]^\^_`ab`bcdefdfgkhiijklmnlnopqrprstuvtvwxyzxz{|}}~0A01 - Standard`  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_PA@ pCylinder6A AHpg?y<,>d8%?<->3>dɁN<`3=d8%?<->6M?yBj1?ɁNd]gS?>i7?*%t3=Bj1?ɁN6M?y/>Bj1?ɁNs3=i7?*%t3=6M?y/>d8%?->3>dg3=Bj1?ɁNs3=d8%?->g?y,>nI>ɁN`3=3>dg3=g?y,>^ ?3>"0>_3=nI>ɁN`3=^ ?3>g?y<,>nI>ɁN<`3="0>_3=nI>ɁN<`3=3>dj>= 3<p,= 3<3>dj>= 3dg3=4>j> 3<?p, 3<3>dg3=nI>ɁN`3=p, 3<4>j> 3ɁN`3="0>_3=t 3<p, 3<"0>_3=nI>ɁN<`3=p,= 3<t 3g?y<,>b8%?>6M?yd8%?<->b8%?>]gS?>6M?yb8%?>6M?y/>]gS?>b8%?>d8%?->6M?y/>b8%?>g?y,>d8%?->b8%?>^ ?3>g?y,>b8%?>g?y<,>^ ?3>b8%?>p,= 3<4>j>= 3<4>k 3<4>j>= 3<?p,= 3<4>k 3<?p,= 3k 3k 3<?p, 3<4>j> 3<4>k 3<4>j> 3<p, 3<4>k 3<p, 3<t 3<4>k 3<t 3<p,= 3<4>k 3<@Apa@H@Nm@H@kR@W@LR1@W@Nm@H@@H@U{@W@kR@W@@H@C@\J@~@W@U{@W@C@\J@@H@U{@W@~@W@@H@Nm@H@kR@W@U{@W@Nm@H@a@H@LR1@W@kR@W@a@H@!w]@\J@-@W@LR1@W@!w]@\J@a@H@LR1@W@-@W@LR1@W@kR@W@kR@p @{ @p @kR@W@U{@W@Mk@p @kR@p @U{@W@~@W@5q@p @Mk@p @~@W@U{@W@Mk@p @5q@p @U{@W@kR@W@kR@p @Mk@p @kR@W@LR1@W@{ @p @kR@p @LR1@W@-@W@o@p @{ @p @-@W@LR1@W@{ @p @o@p @Nm@H@a@H@Nm@\J@@H@Nm@H@Nm@\J@C@\J@@H@Nm@\J@@H@C@\J@Nm@\J@Nm@H@@H@Nm@\J@a@H@Nm@H@Nm@\J@!w]@\J@a@H@Nm@\J@a@H@!w]@\J@Nm@\J@{ @p @kR@p @kR@p @kR@p @Mk@p @kR@p @Mk@p @5q@p @kR@p @5q@p @Mk@p @kR@p @Mk@p @kR@p @kR@p @kR@p @{ @p @kR@p @{ @p @o@p @kR@p @o@p @{ @p @kR@p @`A6Y.3?33 51>c6T> A0    "#  !"&'$$%&*+(()*-./,-/123013567457:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@}pCylinder8AlA #9L=#9L>ǽ>S̽=A #9L>ǽ#9L!$>¼!$>u>S̽#9L!$>¼#9L=8=( !$>u#9L=8#9L"%~ndE%hN=( #9L"%~n#9L8( dE%hN#9L8#9L $¼ $u( #9L $¼#9LǽS̽ $u#9Lǽ#9LA S̽#9L#9L] ^"8=A #9L] ^#9L==A "8==A >S̽'6T2> {'6=>S̽!$>u'6BM>Pܼ'6T2> {!$>u=( '6=ڪ'6BM>Pܼ=( dE%hN'6j %!'6=ڪdE%hN( '6ڪ'6j %!(  $u'6BMPܼ'6ڪ $uS̽'6T2 {'6BMPܼS̽A '6'6T2 {A "8='6E$'6"8==A '6='6E$'6='6T2> {v(>>v(> ='6T2> {'6BM>Pܼv(>>uv(>>'6BM>Pܼ'6=ڪv(> =ܠv(>>u'6=ڪ'6j %!v(>k %ouv(> =ܠ'6j %!'6ڪv(> ܠv(>k %ou'6ڪ'6BMPܼv(>uv(> ܠ'6BMPܼ'6T2 {v(>v(>u'6T2 {'6v(> v(>'6'6E$v(>r}v(> '6E$'6=v(> =v(>r}v(> =v(>>>=9>r=Ȟҽv(>>v(>>u>=' 8>=9v(>>uv(> =ܠ>r=8 -:>=' 8v(> =ܠv(>k %ou>lJs%|;>r=8 -:v(>k %ouv(> ܠ>r8 -:>lJs%|;v(> ܠv(>u>޽' 8>r8 -:v(>uv(>>޽9>޽' 8v(>v(> >rǞҽ>޽9v(> v(>r}>~w>rǞҽv(>r}v(> =>r=Ȟҽ>~w>r=Ȟҽ>=9?{=d/Y?@==@[>=9>=' 8?{= ;?{=d/Y>=' 8>r=8 -:?@==<?{= ;>r=8 -:>lJs%|;?ͳ%P<?@==<>lJs%|;>r8 -:?@=<?ͳ%P<>r8 -:>޽' 8?| ;?@=<>޽' 8>޽9?{b/Y?| ;>޽9>rǞҽ?@=@[?{b/Y>rǞҽ>~w?%Zཅ?@=@[>~w>r=Ȟҽ?@==@[?%Zཅ?@==@[?{=d/Y?TY%Zl?{=d/Y?{= ;?TY%Zl?{= ;?@==<?TY%Zl?@==<?ͳ%P<?TY%Zl?ͳ%P<?@=<?TY%Zl?@=<?| ;?TY%Zl?| ;?{b/Y?TY%Zl?{b/Y?@=@[?TY%Zl?@=@[?%Zཅ?TY%Zl?%Zཅ?@==@[?TY%Zl@A8@>>@>>0?0?>@> ?@> ?0?>0? ?@>KT?@>KT?0? ?0?KT?@>ׇ?@>ׇ?0?KT?0?ׇ?@>?@>?0?ׇ?0??@>K?@>K?0??0?K?@>?@>?0?K?0??@>ׇ @@>ׇ @0??0?ׇ @@>8@@>8@0?ׇ @0?8@@>0@@>0@0?8@0?0?>0?>??>0? ?0? ??>? ?0?KT?0?KT?? ??KT?0?ׇ?0?ׇ??KT??ׇ?0??0???ׇ???0?K?0?K????K?0??0???K???0?ׇ @0?ׇ @???ׇ @0?8@0?8@?ׇ @?8@0?0@0?0@?8@??>?>@@>? ?? ?@>@ ??KT??KT?@ ?@KT??ׇ??ׇ?@KT?@ׇ?????@ׇ?@??K??K?@?@K?????@K?@??ׇ @?ׇ @@?@ׇ @?8@?8@@ׇ @@8@?0@?0@@8@@@>@>;@;@>@ ?@ ?;@>;@ ?@KT?@KT?;@ ?;@KT?@ׇ?@ׇ?;@KT?;@ׇ?@?@?;@ׇ?;@?@K?@K?;@?;@K?@?@?;@K?;@?@ׇ @@ׇ @;@?;@ׇ @@8@@8@;@ׇ @;@8@@0@@0@;@8@;@;@>;@>c@c@>;@ ?;@ ?c@>c@ ?;@KT?;@KT?c@ ?c@KT?;@ׇ?;@ׇ?c@KT?c@ׇ?;@?;@?c@ׇ?c@?;@K?;@K?c@?c@K?;@?;@?c@K?c@?;@ׇ @;@ׇ @c@?c@ׇ @;@8@;@8@c@ׇ @c@8@;@0@;@0@c@8@c@c@>c@?@>c@ ?c@?@ ?c@KT?c@?@KT?c@ׇ?c@?@ׇ?c@?c@?@?c@K?c@?@K?c@?c@?@?c@ׇ @c@?@ׇ @c@8@c@?@8@c@0@c@?@`A62??/O~V A(n     !"# !#&'$$%&)*+()+-./,-/12301374556789:8:;>?<<=>BC@@ABFGDDEFJKHHIJMNOLMOSPQQRSWTUUVW[XYYZ[_\]]^_`ab`bcdefdfghijhjklmnlnopqrprswtuuvw{xyyz{|}}~0A01 - Standardn  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmPA@fpCylinder9AUAp#9L>ǽ#9L=:#W#9L!$>¼#9L>ǽ:#W#9L=8#9L!$>¼:#W#9L"%~n#9L=8:#W#9L8#9L"%~n:#W#9L $¼#9L8:#W#9Lǽ#9L $¼:#W#9L#9Lǽ:#W#9L] ^#9L:#W#9L=#9L] ^:#W`A62??/O~V A   0A#VMtl07  PA.@^pCylinde11AMAPFm?Τ%=m?=W`jK6?m=WNi6?=㥽?=W`?=I;&6?m=PjK6?m=WN?=I?Τ%=<&6?=b<;&6?m=P?Τ%=<͇?ź}H=5?RI<&6?=b<͇?ź}H=?Ϥ%<&6?b<5?RI<?Ϥ%<?I;&6?mP&6?b<?I?W`jK6?mWN;&6?mP?W`m?Τ%mi6?㥽jK6?mWNm?Τ%m_?sѽt6?C%Ži6?㥽_?sѽm?Τ%=mi6?=㥽t6?C%Ž?=W`m?Τ%=m?f",~ ?=I?=W`?f",~ ?Τ%=<?=I?f",~ ͇?ź}H=?Τ%=<?f",~ ?Ϥ%<͇?ź}H=?f",~ ?I?Ϥ%<?f",~ ?W`?I?f",~ m?Τ%m?W`?f",~ _?sѽm?Τ%m?f",~ m?Τ%=m_?sѽ?f",~ `A69`=:0>R4%?x A    # !!"#$%&$&'()*+,-./0123456789:;<=>?@ABCDE0AKVMtl08 PA~@fpCylinde12AUApi6?=㥽jK6?m=WN86?d碠sjK6?m=WN;&6?m=P86?d碠s;&6?m=P&6?=b<86?d碠s&6?=b<5?RI<86?d碠s5?RI<&6?b<86?d碠s&6?b<;&6?mP86?d碠s;&6?mPjK6?mWN86?d碠sjK6?mWNi6?㥽86?d碠si6?㥽t6?C%Ž86?d碠st6?C%Ži6?=㥽86?d碠s`A69`=:0>R4%?x A   0A#VMtl09  PA.@pCube1_0GeAA82Q>P(8=Q>P{¼Q>yUQ>y`A6>=L)\' A90AVMtl10PA@pCube2_0GeAA82{P(8={P{¼{yU{y`A6>=L= W' A90AVMtl11PA@pCube3_0GeAA80?P>?P"x>?yF?y`A6>===' A90AVMtl12PA@pCube4_0GeAA80P>P"x>yFy`A6>==̌' A90AVMtl13PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 & -=!*="&3?͒>6> # # # #< #< #<0pSphere1_0@ &!*"&???0$$$DUMMY@pCylinder0 &.n 5=!*"&ޞ?ö-?? # # # #< #< #<0pCylinder4@ &!*"&???0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder2 &!*"&?h>|? # # # #< #< #<0 pCylinder3@ &!*"&???0 $$$DUMMY@pCylinder5 &>E>!*??"&N >?= # # # #< #< #<0 pCylinder6@  &Y@u!*"&vY???0 $$$DUMMY@pCylinder7 &~V!*"&2??/O? # # # #< #< #<0 pCylinder8@  &!*"&???0pCylinder9@  &!*"&???0$$$DUMMY@pCylinde10 &4%?x!**Qv<"&g=R>R> # # # #< #< #<0pCylinde11@ &!*"&???0pCylinde12@ &!*"&???0$$$DUMMY@pCube01 &L')\>!*"&>=? # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &L'= W?!*"&>=? # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube03 &='̽!*"&>=? # # # #< #< #<0pCube3_0Ge@ &!*"&???0$$$DUMMY@pCube04 &='̌?!*"&>=? # # # #< #< #<0pCube4_0Ge@ &!*"&???gl-117-1.3.2/models/gl-14d.3ds0000644000175000017500000014730210145416156014571 0ustar cedriccedricMM ==>=  VMtl01   0 @0A0P0R0S00 ?01 - Standard  0 @0 A0P0R0S00 ?[0dGL-14D_C.TGAQS T LV L>X *\?Z ȿ VMtl03 GGG  GGG0 @0A0P0R0S00 ?02 - Standard  0 @0 A0P0R0S00 ?G0dGL-14D_D.TGAQS X ==BKO=L=M?==&l=M=BKO=L=q%i\=Vʥ=M?==q%i\=BKOL=L?=Vʥ=BKOL==&lM=L?==XKO=1L]M?>&lM=XKO=7C?E=I>1L]M?>7C?E=XKO==1L]L?=>I>1L]L?=>&l=M=xKO=X >h=X:'>&l=M=M?==ט=С>xKO=X >M?==Vʥ=Ty9>ט=С>Vʥ=L?=טϡ>Ty9>L?=&lM=xKOX >טϡ>&lM=1L]M?>hX:'>xKOX >1L]M?>I>ѵYd] l)>hX:'>I>1L]L?=>h=X:'>ѵYd] l)>h=X:'>xKO=X >"`y<7q=>xKO=X >ט=С><#7>"`ט=С>Ty9>Y\.:6><#7>Ty9>טϡ>#7>Y\.:6>טϡ>xKOX >"`yV9>#7>xKOX >hX:'>y7q=>"`yV9>hX:'>ѵYd] l)>qL?>>y7q=>ѵYd] l)>h=X:'>y<7q=>qL?>>y<7q=>"`3\SA>"`<#7>3\SA><#7>Y\.:6>3\SA>Y\.:6>#7>3\SA>#7>"`yV9>3\SA>"`yV9>y7q=>3\SA>y7q=>qL?>>3\SA>qL?>>y<7q=>3\SA>`A6{}?r=A"ip>6A= A-8     # !!"#'$%%&'+())*+,-.,./012023456467;899:;<=><>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVW[XYYZ[\]^\^_`abcdefghijklmnopqrstuvw0AVMtl018  !"#$%&'()*+,-./01234567PA@&pCylinder4A&AHpY˿<`Y˿7= n9̭h=9̭<=/+Y˿7= nY˿~I=V;9̭d=;9̭h=Y˿~I=V;Y˿Z=<9̭{= ?'=9̭d=;Y˿Z=9̭<=Y˿h5$Lq=Y˿림3=9̭=9̭ + d>Y˿림3=Y˿7=9̭h"=9̭=Y˿7=Y˿~IAL=9̭e=9̭h"=Y˿~IAL=Y˿Z<9̭{ ?'=9̭e=Y˿ZTG9̭=/+Y˿)Y˿<`9̭<=/+9̭hk>TG9̭<=/+9̭h= qQ_= q G=5K9̭h=9̭d=; q=_; qQ_=9̭d=;9̭{= ?'= q3= 5= q=_;9̭{= ?'=9̭d== q== q3= 5=9̭d==9̭h="= qQ_=b= q==9̭h="=9̭<= qG=f > qQ_=b=9̭<=9̭ + d> q%x> qG=f >9̭ + d>9̭= q Gg > q%x>9̭=9̭h"= qQ_b= q Gg >9̭h"=9̭e= qª= qQ_b=9̭e=9̭{ ?'= q3 5= qª=9̭{ ?'=9̭d; qNe; q3 5=9̭d;9̭h qQ_ qNe;9̭h9̭=/+ qG5K qQ_9̭=/+9̭hk>TG qGxj qG5K9̭hk>TG9̭<=/+ q G=5K qGxj q G=5K qQ_=xO8|u=}xO=SK qQ_= q=_;xO^=q:xO8|u=} q=_; q3= 5=xOI==xO^=q: q3= 5= q==xO^=%Ɩ=xOI== q== qQ_=b=xO8|u=a{=xO^=%Ɩ= qQ_=b= qG=f >xO=a=xO8|u=a{= qG=f > q%x>xOc%J >xO=a= q%x> q Gg >xOa=xOc%J > q Gg > qQ_b=xO8|ua{=xOa= qQ_b= qª=xO^%Ɩ=xO8|ua{= qª= q3 5=xOI=xO^%Ɩ= q3 5= qNe;xO^q:xOI= qNe; qQ_xO8|u}xO^q: qQ_ qG5KxOSKxO8|u} qG5K qGxjxOȢOhxOSK qGxj q G=5KxO=SKxOȢOhxO=SKxO8|u=}|sR==2z|s<xO8|u=}xO^=q:|s2w=ŕE;|sR==2zxO^=q:xOI==|s=g<|s2w=ŕE;xOI==xO^=%Ɩ=|s1w=T8p=|s=g|sb=|sޣ<=xOc%J >xOa=|s̼=|sb=xOa=xO8|ua{=|sR=g=|s̼=xO8|ua{=xO^%Ɩ=|s2wT8p=|sR=g=xO^%Ɩ=xOI=|sg<|s2wT8p=xOI=xO^q:|s1wE;|sggY~`~=h";*>g;=J<*>~=h";|s=g<|s1w=T8p=*>~=%$=*>;=J<|s1w=T8p=|sR==g=*>g<_<=*>~=%$=|sR==g=|sޣ<=*>Y~`<(_=*>g<_<=|sޣ<=|sb=*>k=*>Y~`<(_=|sb=|s̼=*>Y~`(_=*>k=|s̼=|sR=g=*>gϼ^<=*>Y~`(_=|sR=g=|s2wT8p=*>~%$=*>gϼ^<=|s2wT8p=|sg<*>ߨJ<*>~%$=|sg<|s1wE;*>~h";*>ߨJ<|s1wE;|sR=2z*>gϼR+*>~h";|sR=2z|sޣ̼*>Y~`v*>gϼR+|sޣ̼|s‹iq+*>NR*>Y~`v|s‹iq+|s<*>Y~`NR*>Y~`gg~=h";+@?;*>~=h";*>;=J<+@?;*>;=J<*>~=%$=+@?;*>~=%$=*>g<_<=+@?;*>g<_<=*>Y~`<(_=+@?;*>Y~`<(_=*>k=+@?;*>k=*>Y~`(_=+@?;*>Y~`(_=*>gϼ^<=+@?;*>gϼ^<=*>~%$=+@?;*>~%$=*>ߨJ<+@?;*>ߨJ<*>~h";+@?;*>~h";*>gϼR++@?;*>gϼR+*>Y~`v+@?;*>Y~`v*>NR+@?;*>NR*>Y~`^@@=>@!=Q->@2>^@@=(_@=J?@ط=>@!=(_@=Z`@Z==(@@5C)xB@r>A@B=Qb@A>b@dG>wB@kL>)xB@r>b@dG>enb@ϟv>#B@J>wB@kL>enb@ϟv>b@:=>(+B@a>#B@J>b@:=>ga@b>.pA@mS>(+B@a>ga@b>7`@y̠>ҍ@@>.pA@mS>7`@y̠>_@o>?@K">ҍ@@>_@o>3_@c>>@'>?@K">3_@c>Z^@Iv>S>@~q>>@'>Z^@Iv>Q^@caH>>@nM>S>@~q>Q^@caH>,^@Qk>Q->@2>>@nM>Q->@2>>@!=%@=$@>>@!=J?@ط= %@R <%@=J?@ط==(@@5C< s&@ %@R <=(@@5C<8A@}]=<'@P]< s&@8A@}]=A@B='@:h=<'@P]w(@i='@:h=)xB@r>wB@kL>(@P>w(@i=wB@kL>#B@J>I(@q>(@P>#B@J>(+B@a>>(@+>I(@q>(+B@a>.pA@mS>'@>>(@+>.pA@mS>ҍ@@>&@>'@>ҍ@@>?@K">&@S>&@>?@K">>@'>f%@">&@S>>@'>S>@~q>h$@H>f%@">S>@~q>>@nM>$@%$R>h$@H>>@nM>Q->@2>$@>$@%$R>$@>%@=d?=?Yi>%@= %@R ?S!=w(@i=(@P>2?sZ>?>(@P>I(@q>8?Y6>2?sZ>I(@q>>(@+>?>8?Y6>>(@+>'@>?>'@>&@>/O?>&@>&@S>?n>/O?>&@S>f%@">wj?H>?n>f%@">h$@H>?>wj?H>h$@H>$@%$R>2?'[>?>$@%$R>$@>?Yi>2?'[>?Yi>d?=?!=ד?)>d?=vO?2%=ˀ?=?!=vO?2%==?0?&> ?9_=?>2?sZ>J?`a>?&>2?sZ>8?Y6>l"?C>J?`a>8?Y6>?>K?*>l"?C>?>5|?1>K?*>/O?>?D>5|?1>/O?>?n>VՓ?:$>?D>?n>wj?H>?Ǥ>VՓ?:$>wj?H>?>n?PŒ>?Ǥ>?>2?'[>?Pa>n?PŒ>2?'[>?Yi>ד?)>?Pa>ד?)>?!=9 ?G.>?H>?!=ˀ?=^?x>9 ?G.>ˀ?=P?=p?>^?x>P?=&?= ?>p?>&?= ?9_=; ? t-> ?> ?9_=?&> ?N H>; ? t->?&>J?`a>+ ? g> ?N H>J?`a>l"?C> ?~>+ ? g>l"?C>K?*>*q ?ؐ> ?~>K?*>5|?1>?>*q ?ؐ>5|?1>?D>?>?>?D>VՓ?:$>@?^>?>VՓ?:$>?Ǥ>-??Gw>@?^>?Ǥ>n?PŒ>b?G>-??Gw>n?PŒ>?Pa>?g>b?G>?Pa>ד?)>?H>?g>?H>9 ?G.>m>9 ?G.>^?x>m>^?x>p?>m>p?> ?>m> ?>; ? t->m>; ? t-> ?N H>m> ?N H>+ ? g>m>+ ? g> ?~>m> ?~>*q ?ؐ>m>*q ?ؐ>?>m>?>?>m>?>@?^>m>@?^>-??Gw>m>-??Gw>b?G>m>b?G>?g>m>?g>?H>m>`A6ޞ?ö-?.n 5= A     "#  !"&'$$%&*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSUVWTUWYZ[XY[^_\\]^bc``abfgddefjkhhijnollmnrsppqrvwttuvz{xxyz}~|}       # !!"#'$%%&'+())*+/,--./301123745567;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinder1AAH0Y˿7= nY˿<`鿴 [;Y˿~I=V;Y˿7= n鿴 [;Y˿Z=D(C]=>h|kz>DFv;C]74>(h|kN">J=C]R>hFv;h|kp(>J=h|kN">A=C]*K>;hA=h|kz>q@:=C]74>=C]*K>;q@:=h|kd=(C=C]=/=C]74>=h|kd=(C=h|ko:DcD=C]o:(2=C]=/=h|ko:DcD=h|kЏ(C=C]7̥/=C]o:(2=h|kЏ(C=h|k2 n@:=C]7+2=C]7̥/=h|k2 n@:=h|kXB A=C]I;C]7+2(h|kЏS+h|ko:C]o:RFC]=>C]74>(OϙO>ȸO=`C]74>(C]*K>Fv;Omj>rOϙO>ȸC]*K>Fv;C]R>h<Or>*1;Omj>rC]R>h;<Omj>U<Or>*1;C]*K>;=OϙO>0=Omj>U=C]=/=O =a,=OϙO>0=C]=/=C]o:(2=Oo:/=O =a,=C]o:(2=C]7̥/=Owsa,=Oo:/=C]7̥/=C]7+2=OM0=Owsa,=C]7+2=C]I;<O"hU<OM0=C]I;Ows`OMȸC]8̥>C]o:RFOo:Ows`C]o:RFC]=>O=`Oo:O=`OϙO>ȸN -j>N -QX=U4OϙO>ȸOmj>rN -C>,N -j>Omj>rOr>*1;N -&>p:N -C>,Or>*1;Omj>UJp:Omj>U<OϙO>0=N -j>F=N -C>J<OϙO>0=O =a,=N -PX=<=N -j>F=O =a,=Oo:/=N -p:9@=N -PX=<=Oo:/=Owsa,=N -?ؽ<=N -p:9@=Owsa,=OM0=N -\hF=N -?ؽ<=OM0=O"hU&j>&QX=U4N -j>N -C>,&C>,&j>N -C>,N -&>p:pMh?HG&C>,N -&>p:N -C>J<&C>JJF=&j>F=&C>JF=N -PX=<=&PX=<=&j>F=N -PX=<=N -p:9@=&p:9@=&PX=<=N -p:9@=N -?ؽ<=&?ؽ<=&p:9@=N -?ؽ<=N -\hF=&\hF=&?ؽ<=N -\hF=N -=J<&=J<&\hF=N -=J=/>=( >U4&j>&C>,=q->,=/>&C>,pMh?HG \ǤD?o:=q->,pMh?HG&C>J<=q->I< \ǤD?o:&C>J<&j>F==/>F==q->I<&j>F=&PX=<==& ><==/>F=&PX=<=&p:9@==p:9@==& ><=&p:9@=&?ؽ<== <==p:9@=&?ؽ<=&\hF== 䒾E== <=&\hF=&=J<=L'J<= 䒾E=&=JU4=o:8=( >U4=/> =/> =( >U4=/>=q->, =q->, =/>=q->, \ǤD?o:&= O?o: =q->, \ǤD?o:=q->I< =q->I<&= O?o:=q->I<=/>F= =/>F= =q->I<=/>F==& ><= =& ><= =/>F==& ><==p:9@= =p:9@= =& ><==p:9@== <= = <= =p:9@== <== 䒾E= = 䒾E= = <== 䒾E==L'J< =L'J< = 䒾E==L'J< \!Do:&=,Oo: =L'J< \!Do:=L'+ =L'+&=,Oo:=L'+= 䒾 = 䒾 =L'+= 䒾= U4 = U4 = 䒾= U4=o:8 =o:8 = U4=o:8=( >U4 =( >U4 =o:8 =( >U4 =/>Z>)Y>GZ>T=\c =/> =q->,Z>8u> OZ>)Y>G =q->,&= O?o:>yd?s;Z>8u> O&= O?o: =q->I8u>>ͨ<>yd?s; =q->I< =/>F=Z>)Y>=Z>8u>>ͨ< =/>F= =& ><=Z>B=w4=Z>)Y>= =& ><= =p:9@=Z>p: 8=Z>B=w4= =p:9@= = <=Z>Ƚw4=Z>p: 8= = <= = 䒾E=Z>ߐW =Z>Ƚw4= = 䒾E= =L'JߐW = =L'J<&=,Oo:>ocs;Z>sͨ<&=,Oo: =L'+Z>s O>ocs; =L'+ = 䒾Z>WGZ>s O = 䒾 = U4Z>Ƚ\cZ>WG = U4 =o:8Z>p:oZ>Ƚ\c =o:8 =( >U4Z>T=\cZ>p:oZ>T=\cZ>)Y>G>G>+U>=&Z>)Y>GZ>8u> O>(a>E>G>+UZ>8u> O>yd?s;Q?%9?@;>(a>E>yd?s;Z>8u>>ͨ<>(a>Z8u>>ͨ)Y>=>GG>=>(a>Z)Y>=Z>B=w4=>='=>GG>=Z>B=w4=Z>p: 8=>o:V*=>='=Z>p: 8=Z>Ƚw4=>r'=>o:V*=Z>Ƚw4=Z>ߐW =>E=>r'=Z>ߐW =Z>sͨ<>^V[<>E=Z>sͨ<>ocs;Q?h9@;>^V[<>ocs;Z>s O>^EQ?h9@;Z>s OZ>WG>E+U>^EZ>WGZ>Ƚ\c>q&>E+UZ>Ƚ\cZ>p:o>o:ü>q&Z>p:oZ>T=\c>=&>o:ü>=&>G>+UQ?:>Q;Q?=;>G>+U>(a>EQ?R>e=@Q;>(a>EQ?%9?@;.?;?C;Q?R>e=@(a>ZX<.?;?C;>(a>Z<>GG>=Q?:>=Q?R>X<>GG>=>='=Q?=$*+=Q?:>=>='=>o:V*=Q?o:,=Q?=$*+=>o:V*=>r'=Q?Tҫ$*+=Q?o:,=>r'=>E=Q?8=Q?Tҫ$*+=>E=>^V[^V[^EQ?Pe=@<.?*&C;>^E>E+UQ?8Q;Q?Pe=@<>E+U>q&Q?Sҫ;Q?8Q;>q&>o:üQ?o:6Q?Sҫ;>o:ü>=&Q?=;Q?o:6Q?=;Q?:>Q;31)?94><31)?\=mԿQ;Q?R>e=@<31)?1L><31)?94>e=@<.?;?C;:8?W ?50<31)?1L><.?;?C;Q?R>X<31)?1L>g=:8?W ?50X=31)?94>M1=31)?1L>g=Q?:>=Q?=$*+=31)?\=a7=31)?94>M1=Q?=$*+=Q?o:,=31)?p:B8=31)?\=a7=Q?o:,=Q?Tҫ$*+=31)?|Ca7=31)?p:B8=Q?Tҫ$*+=Q?8=31)?2M1=31)?|Ca7=Q?8=Q?PX<31)?`%Jg=31)?2M1=Q?PX<.?*&C;:8?50<31)?`%Jg=.?*&C;Q?Pe=@<31)?`%J<:8?50DDJ=h|kN">A=h|kp(>J=l%to:o 7=h|kz>q@:=h|kN">A=l%to:o 7=h|kd=(C=h|kz>q@:=l%to:o 7=h|ko:DcD=h|kd=(C=l%to:o 7=h|kЏ(C=h|ko:DcD=l%to:o 7=h|k2 n@:=h|kЏ(C=l%to:o 7=h|kXB A=h|k2 n@:=l%to:o 7=h|k(&I=h|kXB A=l%to:o 7=h|kXB <0D2?o:>)=31)?94><31)?1L><0D2?o:>)=31)?1L><:8?W ?50<0D2?o:>)=:8?W ?50<31)?1L>g=0D2?o:>)=31)?1L>g=31)?94>M1=0D2?o:>)=31)?94>M1=31)?\=a7=0D2?o:>)=31)?\=a7=31)?p:B8=0D2?o:>)=31)?p:B8=31)?|Ca7=0D2?o:>)=31)?|Ca7=31)?2M1=0D2?o:>)=31)?2M1=31)?`%Jg=0D2?o:>)=31)?`%Jg=:8?50<0D2?o:>)=:8?50<31)?`%J<0D2?o:>)=31)?`%J<31)?2<0D2?o:>)=31)?2<31)?|CmԿ<0D2?o:>)=31)?|CmԿ<31)?o:<0D2?o:>)=31)?o:<31)?\=mԿ<0D2?o:>)=@A}?8@}?֎? >C8? >0@}?֎?}?C? >P? >C8?}?C?}?N? >? >P?}?N?}?C? >P? >?}?C?}?֎? >C8? >P?}?֎?}?8@ >0@ >C8?}?8@}?Z@ >Z@ >0@}?Z@}?Z@ >@ >Z@}?Z@}?&n)@ >_/@ >@}?&n)@}?,@ >.3@ >_/@}?,@}?2-@ >4@ >.3@}?2-@}?,@ >.3@ >4@}?,@}?&n)@ >_/@ >.3@}?&n)@}?Z@ >@ >_/@}?Z@}?Z@ >Z@ >@}?Z@}?8@ >0@ >Z@ >0@ >C8?>?>h@ >C8? >P?>?>? >P? >?>?>? >? >P?>?>? >P? >C8?>?>? >C8? >0@>h@>? >0@ >Z@>Z@>h@ >Z@ >@>!@>Z@ >@ >_/@>84@>!@ >_/@ >.3@>8@>84@ >.3@ >4@>1:@>8@ >4@ >.3@>8@>1:@ >.3@ >_/@>84@>8@ >_/@ >@>!@>84@ >@ >Z@>Z@>!@ >Z@ >0@>h@>Z@>h@>?%? ?%?L?>?>?%??%? ?>?>?%??%??>?>?%??%??>?>?%? ?%??>?>h@%?L?%? ?>h@>Z@%?Z@%?L?>Z@>!@%?#@%?Z@>!@>84@%?8@%?#@>84@>8@%?=@%?8@>8@>1:@%?m?@%?=@>1:@>8@%?=@%?m?@>8@>84@%?8@%?=@>84@>!@%?#@%?8@>!@>Z@%?Z@%?#@>Z@>h@%?L?%?Z@%?L?%? ?3? ?3?L?%? ?%??3??3? ?%??%??J ?!%?3??%??%??3??J ?!%?%??%? ?3? ?3??%? ?%?L?3?L?3? ?%?L?%?Z@3?Z@3?L?%?Z@%?#@3?#@3?Z@%?#@%?8@3?8@3?#@%?8@%?=@3?=@3?8@%?=@%?m?@J ?;my@3?=@%?m?@%?=@3?=@J ?;my@%?=@%?8@3?8@3?=@%?8@%?#@3?#@3?8@%?#@%?Z@3?Z@3?#@%?Z@%?L?3?L?3?Z@3?L?3? ?ƣ@n1?ƣ@?3? ?3??ƣ@40?ƣ@n1?3??J ?!%?GZ @d>ƣ@40?J ?!%?3??ƣ@40?GZ @d>3??3? ?ƣ@n1?ƣ@40?3? ?3?L?ƣ@?ƣ@n1?3?L?3?Z@ƣ@Z@ƣ@?3?Z@3?#@ƣ@(@ƣ@Z@3?#@3?8@ƣ@C@ƣ@(@3?8@3?=@ƣ@gI@ƣ@C@3?=@J ?;my@GZ @2@ƣ@gI@J ?;my@3?=@ƣ@gI@GZ @2@3?=@3?8@ƣ@C@ƣ@gI@3?8@3?#@ƣ@(@ƣ@C@3?#@3?Z@ƣ@Z@ƣ@(@3?Z@3?L?ƣ@?ƣ@Z@ƣ@?ƣ@n1? @n1? @?ƣ@n1?ƣ@40? @40? @n1?ƣ@40?GZ @d>@== @40?GZ @d>ƣ@40? @40?@==ƣ@40?ƣ@n1? @n1? @40?ƣ@n1?ƣ@? @? @n1?ƣ@?ƣ@Z@ @Z@ @?ƣ@Z@ƣ@(@ @(@ @Z@ƣ@(@ƣ@C@ @C@ @(@ƣ@C@ƣ@gI@ @gI@ @C@ƣ@gI@GZ @2@@@ @gI@GZ @2@ƣ@gI@ @gI@@@ƣ@gI@ƣ@C@ @C@ @gI@ƣ@C@ƣ@(@ @(@ @C@ƣ@(@ƣ@Z@ @Z@ @(@ƣ@Z@ƣ@? @? @Z@ @? @n1?D,@?D,@;@ @n1? @40?D,@ ?D,@? @40?@==Y@H?Z@=KC@?Y@H?q@>KC@?KC@?Y@ ?Y@H?KC@?KC@ @Y@m@Y@ ?KC@ @KC@Z@Y@Z@Y@m@KC@Z@KC@u!@Y@ @Y@Z@KC@u!@KC@2@Y@>0@Y@ @KC@2@KC@(7@Y@\4@Y@>0@KC@(7@Z@@q@v@Y@\4@Z@@KC@(7@Y@\4@q@v@KC@(7@KC@2@Y@>0@Y@\4@KC@2@KC@u!@Y@ @Y@>0@KC@u!@KC@Z@Y@Z@Y@ @KC@Z@KC@@Y@m@Y@Z@Y@m@Y@ ?n@g ?n@&@Y@ ?Y@H?n@G ?n@g ?Y@H?q@>w@ ?n@G ?q@>Y@H?n@G ?w@ ?Y@H?Y@ ?n@g ?n@G ?Y@ ?Y@m@n@&@n@g ?Y@m@Y@Z@n@Z@n@&@Y@Z@Y@ @n@@n@Z@Y@ @Y@>0@n@ͮ/@n@@Y@>0@Y@\4@n@n3@n@ͮ/@Y@\4@q@v@w@@n@n3@q@v@Y@\4@n@n3@w@@Y@\4@Y@>0@n@ͮ/@n@n3@Y@>0@Y@ @n@@n@ͮ/@Y@ @Y@Z@n@Z@n@@Y@Z@Y@m@n@&@n@Z@}?֎?}?8@vZ@}?C?}?֎?vZ@}?N?}?C?vZ@}?C?}?N?vZ@}?֎?}?C?vZ@}?8@}?֎?vZ@}?Z@}?8@vZ@}?Z@}?Z@vZ@}?&n)@}?Z@vZ@}?,@}?&n)@vZ@}?2-@}?,@vZ@}?,@}?2-@vZ@}?&n)@}?,@vZ@}?Z@}?&n)@vZ@}?Z@}?Z@vZ@}?8@}?Z@vZ@n@&@n@g ?Ys@Z@n@g ?n@G ?Ys@Z@n@G ?w@ ?Ys@Z@w@ ?n@G ?Ys@Z@n@G ?n@g ?Ys@Z@n@g ?n@&@Ys@Z@n@&@n@Z@Ys@Z@n@Z@n@@Ys@Z@n@@n@ͮ/@Ys@Z@n@ͮ/@n@n3@Ys@Z@n@n3@w@@Ys@Z@w@@n@n3@Ys@Z@n@n3@n@ͮ/@Ys@Z@n@ͮ/@n@@Ys@Z@n@@n@Z@Ys@Z@n@Z@n@&@Ys@Z@`A6?h>|o:o:o: Ad`    !"# !#%&'$%')*+()+-./,-/123013567457:;889:=>?<=?BC@@ABFGDDEFJKHHIJNOLLMNRSPPQRVWTTUVZ[XXYZ]^_\]_abc`acefgdegijkhikmnolmoqrspqsuvwtuwz{xxyz}~|}        !"# !#%&'$%'+())*+,-.,./230012674456:;889:=>?<=?@AB@BCDEFDFGIJKHIKNOLLMNPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfgijkhiknollmnpqrprstuvtvwxyzxz{|}~|~         !" "#$%&$&'+())*+,-.,./01202345646789:8:;?<==>?C@AABCGDEEFGKHIIJKLMNLNOSPQQRSWTUUVW[XYYZ[\]^\^_`ab`bcdefdfgkhiijklmnlnopqrprstuvtvwxyzxz{|}}~0A01 - Standard`  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_PA@ pCylinder6A AHp ?yi#?S>dɁNEK?y/?ɁNdИQ?N>5?*%b=/?ɁNEK?yR>/?ɁNb=5?*%b=EK?yR>i#?R>S>db=/?ɁNb=i#?R> ?yR>4B>ɁNb=S>db= ?yR>E?3M>r(>򪥗b=4B>ɁNb=E?3M> ?y4B>ɁN򪥗b=4B>ɁNdj>=G=p,=G=S>dj>=G=/?ɁNdb=S>j>G=A!?p,G=S>db=4B>ɁNb=p,G=S>j>G=4B>ɁNb=r(>򪥗b={;tG=p,G=r(>򪥗b=4B>ɁN ?yi#?M>EK?yi#?i#?M>ИQ?N>EK?yi#?M>EK?yR>ИQ?N>i#?M>i#?R>EK?yR>i#?M> ?yR>i#?R>i#?M>E?3M> ?yR>i#?M> ?yE?3M>i#?M>p,=G=S>j>=G=S>kG=S>j>=G=A!?p,=G=S>kG=A!?p,=G=A?hG=S>kG=A?hG=A!?p,G=S>kG=A!?p,G=S>j>G=S>kG=S>j>G=p,G=S>kG=p,G={;tG=S>kG={;tG=p,=G=S>kG=@Apa@H@Nm@H@kR@W@LR1@W@Nm@H@@H@U{@W@kR@W@@H@C@\J@~@W@U{@W@C@\J@@H@U{@W@~@W@@H@Nm@H@kR@W@U{@W@Nm@H@a@H@LR1@W@kR@W@a@H@!w]@\J@-@W@LR1@W@!w]@\J@a@H@LR1@W@-@W@LR1@W@kR@W@kR@p @{ @p @kR@W@U{@W@Mk@p @kR@p @U{@W@~@W@5q@p @Mk@p @~@W@U{@W@Mk@p @5q@p @U{@W@kR@W@kR@p @Mk@p @kR@W@LR1@W@{ @p @kR@p @LR1@W@-@W@o@p @{ @p @-@W@LR1@W@{ @p @o@p @Nm@H@a@H@Nm@\J@@H@Nm@H@Nm@\J@C@\J@@H@Nm@\J@@H@C@\J@Nm@\J@Nm@H@@H@Nm@\J@a@H@Nm@H@Nm@\J@!w]@\J@a@H@Nm@\J@a@H@!w]@\J@Nm@\J@{ @p @kR@p @kR@p @kR@p @Mk@p @kR@p @Mk@p @5q@p @kR@p @5q@p @Mk@p @kR@p @Mk@p @kR@p @kR@p @kR@p @{ @p @kR@p @{ @p @o@p @kR@p @o@p @{ @p @kR@p @`A6 3ᢹ?33 5S>g9o> A0    "#  !"&'$$%&*+(()*-./,-/123013567457:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@}pCylinder8AlA #9L=#9L>ǽ>S̽=A #9L>ǽ#9L!$>¼!$>u>S̽#9L!$>¼#9L=8=( !$>u#9L=8#9L"%~ndE%hN=( #9L"%~n#9L8( dE%hN#9L8#9L $¼ $u( #9L $¼#9LǽS̽ $u#9Lǽ#9LA S̽#9L#9L] ^"8=A #9L] ^#9L==A "8==A >S̽'6T2> {'6=>S̽!$>u'6BM>Pܼ'6T2> {!$>u=( '6=ڪ'6BM>Pܼ=( dE%hN'6j %!'6=ڪdE%hN( '6ڪ'6j %!(  $u'6BMPܼ'6ڪ $uS̽'6T2 {'6BMPܼS̽A '6'6T2 {A "8='6E$'6"8==A '6='6E$'6='6T2> {v(>>v(> ='6T2> {'6BM>Pܼv(>>uv(>>'6BM>Pܼ'6=ڪv(> =ܠv(>>u'6=ڪ'6j %!v(>k %ouv(> =ܠ'6j %!'6ڪv(> ܠv(>k %ou'6ڪ'6BMPܼv(>uv(> ܠ'6BMPܼ'6T2 {v(>v(>u'6T2 {'6v(> v(>'6'6E$v(>r}v(> '6E$'6=v(> =v(>r}v(> =v(>>>=9>r=Ȟҽv(>>v(>>u>=' 8>=9v(>>uv(> =ܠ>r=8 -:>=' 8v(> =ܠv(>k %ou>lJs%|;>r=8 -:v(>k %ouv(> ܠ>r8 -:>lJs%|;v(> ܠv(>u>޽' 8>r8 -:v(>uv(>>޽9>޽' 8v(>v(> >rǞҽ>޽9v(> v(>r}>~w>rǞҽv(>r}v(> =>r=Ȟҽ>~w>r=Ȟҽ>=9?{=d/Y?@==@[>=9>=' 8?{= ;?{=d/Y>=' 8>r=8 -:?@==<?{= ;>r=8 -:>lJs%|;?ͳ%P<?@==<>lJs%|;>r8 -:?@=<?ͳ%P<>r8 -:>޽' 8?| ;?@=<>޽' 8>޽9?{b/Y?| ;>޽9>rǞҽ?@=@[?{b/Y>rǞҽ>~w?%Zཅ?@=@[>~w>r=Ȟҽ?@==@[?%Zཅ?@==@[?{=d/Y?TY%Zl?{=d/Y?{= ;?TY%Zl?{= ;?@==<?TY%Zl?@==<?ͳ%P<?TY%Zl?ͳ%P<?@=<?TY%Zl?@=<?| ;?TY%Zl?| ;?{b/Y?TY%Zl?{b/Y?@=@[?TY%Zl?@=@[?%Zཅ?TY%Zl?%Zཅ?@==@[?TY%Zl@A8@>>@>>0?0?>@> ?@> ?0?>0? ?@>KT?@>KT?0? ?0?KT?@>ׇ?@>ׇ?0?KT?0?ׇ?@>?@>?0?ׇ?0??@>K?@>K?0??0?K?@>?@>?0?K?0??@>ׇ @@>ׇ @0??0?ׇ @@>8@@>8@0?ׇ @0?8@@>0@@>0@0?8@0?0?>0?>??>0? ?0? ??>? ?0?KT?0?KT?? ??KT?0?ׇ?0?ׇ??KT??ׇ?0??0???ׇ???0?K?0?K????K?0??0???K???0?ׇ @0?ׇ @???ׇ @0?8@0?8@?ׇ @?8@0?0@0?0@?8@??>?>@@>? ?? ?@>@ ??KT??KT?@ ?@KT??ׇ??ׇ?@KT?@ׇ?????@ׇ?@??K??K?@?@K?????@K?@??ׇ @?ׇ @@?@ׇ @?8@?8@@ׇ @@8@?0@?0@@8@@@>@>;@;@>@ ?@ ?;@>;@ ?@KT?@KT?;@ ?;@KT?@ׇ?@ׇ?;@KT?;@ׇ?@?@?;@ׇ?;@?@K?@K?;@?;@K?@?@?;@K?;@?@ׇ @@ׇ @;@?;@ׇ @@8@@8@;@ׇ @;@8@@0@@0@;@8@;@;@>;@>c@c@>;@ ?;@ ?c@>c@ ?;@KT?;@KT?c@ ?c@KT?;@ׇ?;@ׇ?c@KT?c@ׇ?;@?;@?c@ׇ?c@?;@K?;@K?c@?c@K?;@?;@?c@K?c@?;@ׇ @;@ׇ @c@?c@ׇ @;@8@;@8@c@ׇ @c@8@;@0@;@0@c@8@c@c@>c@?@>c@ ?c@?@ ?c@KT?c@?@KT?c@ׇ?c@?@ׇ?c@?c@?@?c@K?c@?@K?c@?c@?@?c@ׇ @c@?@ׇ @c@8@c@?@8@c@0@c@?@`A62??/O~V A(n     !"# !#&'$$%&)*+()+-./,-/12301374556789:8:;>?<<=>BC@@ABFGDDEFJKHHIJMNOLMOSPQQRSWTUUVW[XYYZ[_\]]^_`ab`bcdefdfghijhjklmnlnopqrprswtuuvw{xyyz{|}}~0A01 - Standardn  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmPA@fpCylinder9AUAp#9L>ǽ#9L=:#W#9L!$>¼#9L>ǽ:#W#9L=8#9L!$>¼:#W#9L"%~n#9L=8:#W#9L8#9L"%~n:#W#9L $¼#9L8:#W#9Lǽ#9L $¼:#W#9L#9Lǽ:#W#9L] ^#9L:#W#9L=#9L] ^:#W`A62??/O~V A   0A#VMtl07  PA.@^pCylinde11AMAPFm?Τ%=m?=W`jK6?m=WNi6?=㥽?=W`?=I;&6?m=PjK6?m=WN?=I?Τ%=<&6?=b<;&6?m=P?Τ%=<͇?ź}H=5?RI<&6?=b<͇?ź}H=?Ϥ%<&6?b<5?RI<?Ϥ%<?I;&6?mP&6?b<?I?W`jK6?mWN;&6?mP?W`m?Τ%mi6?㥽jK6?mWNm?Τ%m_?sѽt6?C%Ži6?㥽_?sѽm?Τ%=mi6?=㥽t6?C%Ž?=W`m?Τ%=m?f",~ ?=I?=W`?f",~ ?Τ%=<?=I?f",~ ͇?ź}H=?Τ%=<?f",~ ?Ϥ%<͇?ź}H=?f",~ ?I?Ϥ%<?f",~ ?W`?I?f",~ m?Τ%m?W`?f",~ _?sѽm?Τ%m?f",~ m?Τ%=m_?sѽ?f",~ `A69`=:0>R4%?x A    # !!"#$%&$&'()*+,-./0123456789:;<=>?@ABCDE0AKVMtl08 PA~@fpCylinde12AUApi6?=㥽jK6?m=WN86?d碠sjK6?m=WN;&6?m=P86?d碠s;&6?m=P&6?=b<86?d碠s&6?=b<5?RI<86?d碠s5?RI<&6?b<86?d碠s&6?b<;&6?mP86?d碠s;&6?mPjK6?mWN86?d碠sjK6?mWNi6?㥽86?d碠si6?㥽t6?C%Ž86?d碠st6?C%Ži6?=㥽86?d碠s`A69`=:0>R4%?x A   0A#VMtl09  PA.@pCube1_0GeAA82Q>P(8=Q>P{¼Q>yUQ>y`A6>=L)\' A90AVMtl10PA@pCube2_0GeAA82{P(8={P{¼{yU{y`A6>=L= W' A90AVMtl11PA@pCube3_0GeAA80?P>?P"x>?yF?y`A6>===' A90AVMtl12PA@pCube4_0GeAA80P>P"x>yFy`A6>==̌' A90AVMtl13PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &A=!*="&3?͒>6> # # # #< #< #<0pSphere1_0@ &!*"&???0$$$DUMMY@pCylinder0 &.n 5=!*"&ޞ?ö-?? # # # #< #< #<0pCylinder4@ &!*"&???0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder2 &!*"&?h>|? # # # #< #< #<0 pCylinder3@ &!*"&???0 $$$DUMMY@pCylinder5 &>E>!*??"&N >?= # # # #< #< #<0 pCylinder6@  &V 7ȼ!*"&B???0 $$$DUMMY@pCylinder7 &~V!*"&2??/O? # # # #< #< #<0 pCylinder8@  &!*"&???0pCylinder9@  &!*"&???0$$$DUMMY@pCylinde10 &4%?x!**Qv<"&g=R>R> # # # #< #< #<0pCylinde11@ &!*"&???0pCylinde12@ &!*"&???0$$$DUMMY@pCube01 &L')\>!*"&>=? # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &L'= W?!*"&>=? # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube03 &='̽!*"&>=? # # # #< #< #<0pCube3_0Ge@ &!*"&???0$$$DUMMY@pCube04 &='̌?!*"&>=? # # # #< #< #<0pCube4_0Ge@ &!*"&???gl-117-1.3.2/models/gl-15.3ds0000644000175000017500000015652410145416156014434 0ustar cedriccedricMMT ==G>= 01 - Standard  0 @0 A0P0R0S00 ?[0dGL-15_C2.TGAQS T >V >X ?Z VMtl02 FFF  FFF0 @0A0P0R0S00 ? VMtl03   0 @0A0P0R0S00 ? VMtl04 FFF  FFF0 @0A0P0R0S00 ? VMtl05  0 @0A0P0R0S00 ? VMtl06 FFF  FFF0 @0A0P0R0S00 ? VMtl07  0 @0A0P0R0S00 ? VMtl10   0 @0A0P0R0S00 ? VMtl11 FFF  FFF0 @0A0P0R0S00 ? VMtl12 FFF  FFF0 @0A0P0R0S00 ? VMtl13 FFF  FFF0 @0A0P0R0S00 ? VMtl14 FFF  FFF0 @0A0P0R0S00 ?01 - Standard1 EEE  EEE0 @0 A0P0R0S00 ? ?@apCylinder1AaA+l񾘘)ƅ:94̾;l񾄘)`,l:P.̾:O8̾xG>94l:P.l=]J<^,̾5 _<94̾:O8l=]J<^,l<r̾< <̾5 _<94l<rlҰ<̼̾&=̾< <lҰ<̼l/<̾:<̾:O<̾G>:<̾Q94yrQ65yrȼ̾xG>94̾:O8yr:e<̾:O:|<6Bļ=yrc$2||<:GnN_ <:GBļc =6lN_>|<6 9<:G :p<:GnN_ <6 9<62.hK6;:G4.T<:G :p<62.hK6;6Ġ:GĠVR:G4.T<6Ġ6 u:G u:GĠVR6 u6l@65:Gl@F<:G u6l@656:e<:G:1C:Gl@F<6:e<60a<65:G0a4F=T<:G=;p<:Gg= <4g=K<:=mb>:Gg= <:G>H\Ǿt)Z5|<:=H\Ǿ44.TH\Ǿ44.T<4ĠVRtc~OtK;4ĠVR4 utoʠtc~O4 u4l@FW>mb>t=nL;:=mb>4g=Kmb>4g=K<4@gQ<]>͵H\Ǿ >:E]>gQ<W>H\ǾtK;]>]: >:E⻅tK;tc~O]>8]>]:tc~Otoʠ]>Uf6]>8toʠtF4v1]>Uf6t:'8]>F4v1t:?t\<_ 9]>T:'8t\<_ 9t &x=]>n=,]>T^2=m8]>n=,t{=c~Ot=nL;]>Ч=:]>^2=m8t=nL;W>mb> >@>M]>Ч=:W>mb>tNb=5|<]>Y=< >@>M⻅tNb=5|6<͵<]>Y=.:E$<]>6<͵͵<]>.:E$<]>͵<]>gQ<‡o>QN<‡o>sɵ<]>gQ< >:E‡o>؞;‡o>QN< >:E]>]:‡o>4:‡o>؞;]>]:]>8‡o>5‡o>4:]>8]>Uf6‡o>YQf‡o>5]>Uf6]>F4v1‡o>41‡o>YQf]>F4v1]>:'8‡o>:j8‡o>41]>:'8]>THT<1‡o>:j8]>Tn=,‡o>n=v‡o>HT<1]>n=,]>^2=m8‡o>/=5‡o>n=v]>^2=m8]>Ч=:‡o>ͧ=:‡o>/=5]>Ч=: >@>M‡o>/=;‡o>ͧ=: >@>M]>Y=<‡o>Y=s<‡o>/=;]>Y=<]>6<͵<‡o>~<{ɵ<‡o>Y=s<]>6<͵<]>.:E$<‡o>.:<‡o>~<{ɵ<]>.:E$<]>͵<‡o>sɵ<‡o>.:<‡o>sɵ<‡o>QN<3>XI/;3>BԼN<‡o>QN<‡o>؞;3>6]|;3>XI/;‡o>؞;‡o>4:3>Q3>6]|;‡o>4:‡o>53>6A3>Q‡o>5‡o>YQf3>a 3>6A‡o>YQf‡o>413>O//3>a ‡o>41‡o>:j83>:!43>O//‡o>:j8‡o>HT<13> ZP</3>:!4‡o>HT<1‡o>n=v3> 8i={ 3> ZP</‡o>n=v‡o>/=53>˺='3> 8i={ ‡o>/=5‡o>ͧ=:3>=43>˺='‡o>ͧ=:‡o>/=;3>xO=|;3>=4‡o>/=;‡o>Y=s<3>%`=/;3>xO=|;‡o>Y=s<‡o>~<{ɵ<3>Q%`=/;‡o>~<{ɵ<‡o>.:<3>2:\<3>Q.:<‡o>sɵ<3>BԼN<3>2:\<3>BԼN<3>XI/;>>bT$;>>I<3>XI/;3>6]|;>>3iq;>>bT$;3>6]|;3>Q>>2>>3iq;3>Q3>6A>>♋>>23>6A3>a >>ax >>♋3>a 3>O//>>/.>>ax 3>O//3>:!4>>:4>>/.3>:!43> ZP</>>bUP<.>>:43> ZP</3> 8i={ >>-3i=n >>bUP<.3> 8i={ 3>˺='>>=ə>>-3i=n 3>˺='3>=4>> =1>>=ə3>=43>xO=|;>>L=q;>> =13>xO=|;3>%`=/;>>j=$;>>L=q;3>%`=/;3>Q>6= J<>>j=$;3>Q2:\<>>3:۽<>>6= J<3>2:\<3>BԼN<>>I<>>3:۽<>>I<>>bT$;1>c;;1>+}.<>>bT$;>>3iq;N>nd1>c;;>>3iq;>>21>HscN>nd>>2>>♋1>׋1>Hsc>>♋>>ax 1>aL1>׋>>ax >>/.1>'0l/1>aL>>/.>>:41>:k51>'0l/>>:4>>bUP<.1>>P:k5>>bUP<.>>-3i=n 1>!i=B1>>P>-3i=n >>=ə1>:-=e׋1>!i=B>>=ə>> =11>ۋ=Ab1>:-=e׋>> =1>>L=q;N>'f>1>ۋ=Ab>>L=q;>>j=$;1>$k=;N>'f>>>j=$;>>6= J<1>P=<<1>$k=;>>6= J<>>3:۽<1>3:s<1>P=<<>>3:۽<>>I<1>+}.<1>3:s<1>+}.<1>c;;f>K#X;f>4b <1>c;;N>ndq>ndf>K#X;N>nd1>Hscf>oxdkq>nd1>Hsc1>׋f>ȋLf>oxdk1>׋1>aLf> UDf>ȋL1>aL1>'0l/f>%V!f> UD1>'0l/1>:k5f>:+f>%V!1>:k51>>PfHF:+1>>P!i=Bf>64]=Df>fHF!i=B1>:-=e׋f>p=Lf>64]=D1>:-=e׋1>ۋ=Abf>=dkf>p=L1>ۋ=AbN>'f>q>'f>f>=dkN>'f>1>$k=;f><(=$X;q>'f>1>$k=;1>P=<A<=r <(=$X;1>P=<<1>3:s2:FWA<=r <1>3:s<1>+}.4b 2:FW4b K#X;%{>SI@;%{>/BK#X;q>nd%{>x! 9%{>SI@;q>ndf>oxdk%{>jfiz%{>x! 9f>oxdkf>ȋL%{>!`%{>jfizf>ȋLf> UD%{>kOhe%{>!`f> UDf>%V!%{>0 b%{>kOhef>%V!f>:+%{>:Yr%{>0 bf>:+f>fHFA:Yrf>fHF64]=D%{>W=Ve%{>A64]=Df>p=L%{>~:=-a%{>W=Vef>p=Lf>=dk%{>=hz%{>~:=-af>=dkq>'f>%{> :=v 9%{>=hzq>'f>f><(=$X;%{>k=I@;%{> :=v 9f><(=$X;f>A<=r <%{>58=C<%{>k=I@;f>A<=r 2:FW<%{>4:<%{>58=C2:FW4b <%{>/B<%{>4:<%{>/B<%{>SI@;ɫ>Y}:ɫ>% w<%{>SI@;%{>x! 9ɫ>k#Vɫ>Y}:%{>x! 9%{>jfizɫ>ul ɫ>k#V%{>jfiz%{>!`ɫ>x#ɫ>ul %{>!`%{>kOheɫ>T<|ɫ>x#%{>kOhe%{>0 bɫ>Q>ɫ>T<|%{>0 b%{>:Yrɫ>:6,ɫ>Q>%{>:Yr%{>A82<>ɫ>:6,%{>AW=Veɫ>E=|ɫ>82<>%{>W=Ve%{>~:=-aɫ>!=k#ɫ>E=|%{>~:=-a%{>=hzɫ> =ɫ>!=k#%{>=hz%{> :=v 9ɫ>u=Tɫ> =%{> :=v 9%{>k=I@;ɫ>? =:ɫ>u=T%{>k=I@;%{>58=C<ɫ>!W(= w<ɫ>? =:%{>58=C<%{>4:<ɫ>>:<ɫ>!W(= w<%{>4:<%{>/B<ɫ>% w<ɫ>>:<ɫ>% w<ɫ>Y}:ɫ>:ûɫ>Y}:ɫ>k#Vɫ>:ûɫ>k#Vɫ>ul ɫ>:ûɫ>ul ɫ>x#ɫ>:ûɫ>x#ɫ>T<|ɫ>:ûɫ>T<|ɫ>Q>ɫ>:ûɫ>Q>ɫ>:6,ɫ>:ûɫ>:6,ɫ>82<>ɫ>:ûɫ>82<>ɫ>E=|ɫ>:ûɫ>E=|ɫ>!=k#ɫ>:ûɫ>!=k#ɫ> =ɫ>:ûɫ> =ɫ>u=Tɫ>:ûɫ>u=Tɫ>? =:ɫ>:ûɫ>? =:ɫ>!W(= w<ɫ>:ûɫ>!W(= w<ɫ>>:<ɫ>:ûɫ>>:<ɫ>% w<ɫ>:û@A߿a@0?֋a@7n?0IQ@ ?|Q@XƦ?֋a@7n?a@4?VP@U?0IQ@ ?a@4?v`@F(?1P@V?VP@U?v`@F(?_@倭?zO@?1P@V?_@倭?+_@?N@?zO@?+_@?*^@Ϧ?>N@6?N@?*^@Ϧ?P5^@͡?hM@ҩ?>N@6?P5^@͡? ^@?M@%?hM@ҩ? ^@?aP^@?M@ɘ?M@%?aP^@?^@ɮ?jN@} ?M@ɘ?^@ɮ?uZ_@?O@)=?jN@} ?uZ_@?`@ĕ?fO@?O@)=?`@ĕ?<`@w?~rP@Po?fO@?<`@w?Pa@P5?Q@)?~rP@Po?Pa@P5?a@ ^?eQ@&Ƞ?Q@)?a@ ^?߿a@0?|Q@XƦ?eQ@&Ƞ?|Q@XƦ?0IQ@ ?&<@m?h!=@?0IQ@ ?VP@U?y<@)?&<@m?VP@U?1P@V?<@Ĵ?y<@)?1P@V?zO@?Ih;@?<@Ĵ?zO@?N@?j:@(?Ih;@?N@?>N@6?e4:@]?j:@(?>N@6?hM@ҩ?<9@0?e4:@]?hM@ҩ?M@%?9@?<9@0?M@%?M@ɘ?9@?9@?M@ɘ?jN@} ?U:@ϕ?9@?jN@} ?O@)=?:@k?U:@ϕ?O@)=?fO@?a;@n?:@k?fO@?~rP@Po?H;@W?a;@n?~rP@Po?Q@)?d:<@_`?H;@W?Q@)?eQ@&Ƞ?=@?d:<@_`?eQ@&Ƞ?|Q@XƦ?h!=@?=@?h!=@?&<@m?|`7@?Hp7@D?&<@m?y<@)?57@7?|`7@?y<@)?<@Ĵ?uu7@g?57@7?j:@(?e4:@]?4@?5@?e4:@]?<9@0?…4@0?4@?<9@0?9@?o4@?…4@0?9@?9@?Q3@7݊?o4@?:@k?a;@n?O5@H|? 4@rz?a;@n?H;@W?N5@?O5@H|?H;@W?d:<@_`?E6@z?N5@?d:<@_`?=@?Y7@>?E6@z?=@?h!=@?Hp7@D?Y7@>?Hp7@D?|`7@?!@F?!@?|`7@?57@7?'"@c?!@F?57@7?uu7@g?E "@Χ?'"@c?uu7@g?ɰ6@S?!@p?E "@Χ?ɰ6@S?5@?p @-?!@p?5@?4@? @@?p @-?4@?…4@0?k@? @@?…4@0?o4@?_@ڢ?k@?o4@?Q3@7݊?L5@6?_@ڢ?Q3@7݊?14@Z?D@GɃ?L5@6?14@Z? 4@rz?X@_?D@GɃ? 4@rz?O5@H|?@Kr?X@_?O5@H|?N5@?6 @?@Kr?N5@?E6@z? @ke?6 @?E6@z?Y7@>?!@Ů? @ke?Y7@>?Hp7@D?!@?!@Ů?!@?!@F?Ή@v?V@/?!@F?'"@c??2@Ή@v?'"@c?E "@Χ?)@;??2@E "@Χ?!@p?W@l[?)@;?!@p?p @-?@#?W@l[?p @-? @@?@?@#? @@?k@?@?@?k@?_@ڢ?A@oH?@?_@ڢ?L5@6?@ t?A@oH?L5@6?D@GɃ?@7?@ t?D@GɃ?X@_?\@?@7?X@_?@Kr?]?\@?@Kr?6 @?@r?]?6 @? @ke?@H?@r? @ke?!@Ů?+/@&?@H?!@Ů?!@?V@/?+/@&?V@/?Ή@v???z?^e?Ή@v??2@ ?\4@???2@)@;?6t?D? ?\4@)@;?W@l[?L?$?6t?D?W@l[?@#?e??L?$?@#?@??h˱?e??@?@?y?P??h˱?@?A@oH?A.??y?P?A@oH?@ t?M?9?A.??@ t?@7?5?4?M?9?@7?\@?i?????_F<"?x?ɰ??/N?m >"?x???-?)^?ɰ????xc?Nѩ?h?5?-?)^?xc?Nѩ?z?^e??6?h?5??6?Z??&x?N?9u?M?Z??N c?-@y??&x?N?N c?-@/Q?U?jz?f?y??/Q?U?VG?8?|?x ?jz?f?VG?8???"S~?n0?|?x ???dž?s?8~?+۷?"S~?n0?dž?s? І?k'?Q1~??8~?+۷? І?k'?ff??Y}??Q1~??ff??'?k?z?u?Y}??'?k???B>x?%?z?u?????~u?.V?B>x?%???/N?m >t?7?~u?.V?/N?m >ɰ??u?~?t?7?ɰ??-?)^?ct?ȥ?u?~?-?)^?h?5?1t?M?ct?ȥ?h?5??6?9u?M?1t?M?9u?M?&x?N?5\?*?X? ?&x?N?y?? ]??5\?*?y??jz?f?^?d? ]??jz?f?|?x ?5``??^?d?|?x ?"S~?n0?b?6\?5``??"S~?n0?8~?+۷?b?~?b?6\?8~?+۷?Q1~??Bb?LP?b?~?Q1~??Y}??0ha??Bb?LP?Y}??z?u?W^?pљ?0ha??z?u?B>x?%?Y1\?y?W^?pљ?B>x?%?~u?.V?`Y??Y1\?y?~u?.V?t?7? X??`Y??t?7?u?~??Y? &? X??u?~?ct?ȥ?K\W???Y? &?ct?ȥ?1t?M?W?m?K\W??1t?M?9u?M?X? ?W?m?X? ?5\?*?4?o?W1??5\?*? ]??o5??4?o? ]??^?d?n6?(?o5??^?d?5``??D9??n6?(?5``??b?6\?Z;?_?D9??b?6\?b?~?;??Z;?_?b?~?Bb?LP?;?P?;??Bb?LP?0ha??;??;?P?0ha??W^?pљ?Ct8?VҚ?;??W^?pљ?Y1\?y?)y5?{?Ct8?VҚ?Y1\?y?`Y??#2?B?)y5?{?`Y?? X??q1?TƏ?#2?B? X???Y? &?1? ?q1?TƏ??Y? &?K\W??h/?1E?1? ?K\W??W?m?u:0?[|?h/?1E?W?m?X? ?W1??u:0?[|?W1??4?o?Lp*?i?&?(?4?o?o5??>@Lp*?i?o5??n6?(?e,??>@n6?(?D9??}"/?m?e,??D9??Z;?_?*R1??}"/?m?Z;?_?;??1?7ǹ?*R1??;??;?P?]1?O?1?7ǹ?;?P?;??1?/4?]1?O?;??Ct8?VҚ?|.??1?/4?Ct8?VҚ?)y5?{?m+?ۤ?|.??)y5?{?#2?B?a(?,?m+?ۤ?#2?B?q1?TƏ?즔>r"?a(?,?q1?TƏ?1? ?'?r"?1? ?h/?1E?%?t{?'?@=S@=?>@e,??1|>@?=S@e,??}"/?m?t>5?1|>@?}"/?m?*R1??nj >?t>5?*R1??1?7ǹ?L%>R ?nj >?1?7ǹ?]1?O?%>,?L%>R ?]1?O?1?/4?X$> ?%>,?1?/4?|.??>?X$> ?|.??m+?ۤ?e >?>?m+?ۤ?a(?,?Y=fܔ?e >?a(?,?즔>r"?[r"?'?@?FD=2"?o= ?1|>@?t>5?=?FD=2"?t>5?nj >?=?=?nj >?L%>R ?=f-?=?L%>R ?%>,?D=S?=f-?%>,?X$> ?E=m?D=S?X$> ?>?RF=(Ӡ?E=m?>?e >?줾=0*?RF=(Ӡ?e >?Y=fܔ?w=)?줾=0*?Y=fܔ?[.= V?<6?=?=?^=w?l>.= V?=?=f-?s=Z?^=w?=f-?D=S?.t=?s=Z?D=S?E=m?$o=N(?.t=?E=m?RF=(Ӡ?BI=(?$o=N(?RF=(Ӡ?줾=0*?Mh=.?BI=(?줾=0*?w=)?g.= V?pa<ڷ?l>.= V?^=w?pa<ڷ?^=w?s=Z?pa<ڷ?s=Z?.t=?pa<ڷ?.t=?$o=N(?pa<ڷ?$o=N(?BI=(?pa<ڷ?BI=(?Mh=.?pa<ڷ?Mh=.?g[3o:o:o: A    !"# !#%&'$%')*+()+-./,-/1230135674579:;89;>?<<=>C@AABCFGDDEFHIJHJKNOLLMNRSPPQRVWTTUVZ[XXYZ]^_\]_abc`acefgdegijkhikolmmnoqrspqstuvtvwz{xxyz}~|}       "#  !"$%&$&'*+(()*-./,-/012023567457:;889:?<==>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVWXYZXZ[]^_\]_bc``abgdeefghijhjkolmmnopqrprstuvtvw{xyyz{|}}~         !" "#$%&$&'*+(()*-./,-/30112374556789:8:;?<==>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVWXYZXZ[_\]]^_`ab`bcdefdfgjkhhijmnolmoqrspqsuvwtuwz{xxyz~||}~        # !!"#'$%%&'+())*+,-.,./01202345646789:8:;?<==>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVWXYZXZ[_\]]^_c`aabcgdeefgkhiijklmnlnopqrstuvwxyz{|}~0A01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA&@RpCylinder2AAAHp7 {⻰;7 Ig_H le4g_*lӡrl{Nؼ̼7 >g_*7 bIl񾄘)`,lӡr7 bI7 :l:P.l񾄘)`,7 :7 '<$Jl=]J<^,l:P.7 '<$J7 <'l<rl=]J<^,7 <'7 פ<̼lҰ<̼l<r7 פ<̼7 <l/g_*7 t̼:JI7 bI7 >g_*:JI7 :7 bI:JI7 '<$J7 ::JI7 <'7 '<$J:JI7 פ<̼7 <':JI7 <7 פ<̼:JI7 פ[3o:o:o: A0    !"# !#%&'$%')*+()+-./,-/123013674456:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0AoVMtl020  !"#$%&'()*+,-./PA@pCylinder3AAyrhx:yrDgLX6Ġ62.hK6;yrDgLXyrȼ6 u6Ġyr"<yro =@X6ܤ=􌒼6R}=yro =@Xyr=}y:6F=YL6;6ܤ=􌒼`A6[}?_i3 !Yc>[3o:o:o: A    0AVMtl03PA&@ZpCylinder5AIAT>3ٮ0<>]\1;E? X;E?f00#<>]\1;>s*kE?wfE? X;>s*k>[\TE? XE?wf>[\T>3UmE?c0ټE? X>3Um>E? E?c0ټ>>yPmE?S,ټE? >yPm>ͻTE?zE?S,ټ>ͻT>)E?tE?z>)>ͻ1;E?;E?t>ͻ1;>y0y0<>qaqa<>3ٮ0]\1;>3ٮ0<>>s*k>]\1;>>[\T>s*k>>3Um>[\T>>>3Um>>yPm>>>ͻT>yPm>>)>ͻT>>ͻ1;>)>>y0<>ͻ1;>>qa<>y0<>>3ٮ0<>qa<>`A6X=Ep3/Z>g3`? A$     # !!"#$%&$&'()*(*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl04$  !"#PA@pCylinder6AA$E?f00#g3`? A    !"#0A'VMtl05  PA6@ZpCylinder8AIATo >y<ٮ0;1;?;;?R,;1;o >);?t;?;;o >);o >;T?;?t;o >;To >yy<?< ?Z,<ټo >3=Qm༁?f0=ټ?< o >3=Qmo >\\=T? X=z?f0=ټo >\\=To >s*k=?wf=? X=zo >s*k=o >[\=1;? X=;?wf=o >[\=1;o >3=0<?b0=:#<? X=;o >3=0y<ٮ0<?R,;1;o >y<ٮ0<o >);o >;1;o ><o >;To >);o ><o >y;To ><o >y<o >3=Qmo ><o >\\=To >3=Qmo ><o >s*k=o >\\=To ><o >[\=1;o >s*k=o ><o >3=0[\=1;o ><o >3=0<o >y<ٮ0<`A6X=Ep3/Z>g3?< A$     # !!"#$%&$&'()*(*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl06$  !"#PA@pCylinder9AA$?R,g3?< A    !"#0A'VMtl07  PA6@)pSphere1_0AAX >zhU?l㷼?t9">K>?l㷼?l㷼ǜ i">b?ǜ i">?l>?l㷼Hhi<>b">w>ǜ i">xї>Hhi<> `1< >\">>b">> `1TXs<>W󕽝##> >\">xї>TXsNTӎI#>>W󕽝##>?l>NTNTw>ӎI#>K>NT<> X<? ╽%#>b?ӎI#>> X<> `1<?\">? ╽%#>> `1<>zhU<?t9">?\">>fz:d>0`V;!>TQ8;>f_:į>f_:+>_ZT;>`P;%Ƀ>fz:7>ҤTQ8;[ ~>dTN>;2>`e;8>T;2>۾G0h;[ ~>QTF=;8>cU;%Ƀ>R`A5~;>Gh;7>\UAm;į>AK};>AK};+>iUN;d>/Gi;>kbA~;!>hUAm;l>PTF=;>nGLi;B>WU;>B`H;l>dTN>;B>˹T;?t9">b?ǜ i">>_Pl!>b?ǜ i">w>ǜ i">>_Pl!>w>ǜ i">>b">>_Pl!>>b"> >\">>_Pl!> >\">>W󕽝##>>_Pl!>>W󕽝##>w>ӎI#>>_Pl!>w>ӎI#>b?ӎI#>>_Pl!>b?ӎI#>? ╽%#>>_Pl!>? ╽%#>?\">>_Pl!>?\">?t9">>_Pl!>K>?l㷼<>zhU0`V;>fz:>zhU<+>qBan<!>TQ8;d>0`V;+>qBan?l㷼<>fz:!>TQ8;?l>?l㷼?l㷼<į>f_:>f_:K>?l㷼<+>qBan<+>_ZT;į>f_:+>qBan?l㷼<>f_:+>_ZT;xї>Hhi?l㷼<%Ƀ>fz:>`P;?l>?l㷼<+>qBan<7>ҤTQ8;%Ƀ>fz:+>qBanHhi<>`P;7>ҤTQ8;> `1Hhi<2>`e;[ ~>dTN>;xї>Hhi<+>qBan<8>T;2>`e;+>qBan<> `1<[ ~>dTN>;8>T;xї>TXs<> `1<[ ~>QTF=;2>۾G0h;> `1<+>qBan<8>cU;[ ~>QTF=;+>qBanTXs<2>۾G0h;8>cU;?l>NTTXs<>Gh;%Ƀ>R`A5~;xї>TXs<+>qBan<7>\UAm;>Gh;+>qBanNT<%Ƀ>R`A5~;7>\UAm;K>NTNT<>AK};į>AK};?l>NT<+>qBan<+>iUN;>AK};+>qBanNT<į>AK};+>iUN;> XNT<>kbA~;d>/Gi;K>NT<+>qBan<!>hUAm;>kbA~;+>qBan<> X/Gi;!>hUAm;> `1<> X<>nGLi;l>PTF=;> X<+>qBanWU;>nGLi;+>qBan<> `1PTF=;B>WU;>zhU<> `1dTN>;>B`H;> `1<+>qBan˹T;l>dTN>;+>qBan<>zhU<>B`H;B>˹T;@A@9"@o@'J"@[D,@!?/-@1?o@'J"@@?'J"@X@!?[D,@!?@?'J"@n? 9"@o@?X@!?n? 9"@]?"@g@?o@?]?"@n?4!@o@*S?g@?n?4!@@?!@X@ ;?o@*S?@?!@o@!@[D,@ ;?X@ ;?o@!@@j!@/-@Q?[D,@ ;?@j!@@"@7.@?/-@Q?@"@@9"@/-@1?7.@?+@ )@s @6)@7@3l(@?)@+1@)@`@i(@!?)@T? )@@Dl(@C?(@#?\)@@l(@#?(@C?W(@@ n(@T?k~(@!?F(@@;n(@+1@~(@?~(@`@n(@s @(@+@|~(@7@Ln(@!@W(@r @(@*@ n(@r @)@!@(@*@l(@/-@1?[D,@!?@F?[D,@!?X@!?@F?X@!?o@?@F?o@?g@?@F?g@?o@*S?@F?o@*S?X@ ;?@F?X@ ;?[D,@ ;?@F?[D,@ ;?/-@Q?@F?/-@Q?7.@?@F?7.@?/-@1?@F?o@'J"@@9"@s @6)@+@ )@@9"@`@B!@7@3l(@s @6)@`@B!@o@'J"@+@ )@7@3l(@@?'J"@o@'J"@+1@)@?)@o@'J"@`@B!@`@i(@+1@)@`@B!@@?'J"@?)@`@i(@n? 9"@@?'J"@T? )@!?)@@?'J"@`@B!@@Dl(@T? )@`@B!@n? 9"@!?)@@Dl(@]?"@n? 9"@#?\)@C?(@n? 9"@`@B!@@l(@#?\)@`@B!@]?"@C?(@@l(@n?4!@]?"@C?W(@#?(@]?"@`@B!@@ n(@C?W(@`@B!@n?4!@#?(@@ n(@@?!@n?4!@!?F(@T?k~(@n?4!@`@B!@@;n(@!?F(@`@B!@@?!@T?k~(@@;n(@o@!@@?!@?~(@+1@~(@@?!@`@B!@`@n(@?~(@`@B!@o@!@+1@~(@`@n(@@j!@o@!@+@|~(@s @(@o@!@`@B!@7@Ln(@+@|~(@`@B!@@j!@s @(@7@Ln(@@"@@j!@r @(@!@W(@@j!@`@B!@*@ n(@r @(@`@B!@@"@!@W(@*@ n(@@9"@@"@!@(@r @)@@"@`@B!@*@l(@!@(@`@B!@@9"@r @)@*@l(@`A6?4욿?L4o:o:o: Ad    !"# !#&'$$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefgdegjkhhijmnolmorsppqrvwttuvyz{xy{|}~|~0A01 - Standardd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcPA@)pSphere2_0AAX >-`=&p ]= <?Y=U#>ן?=u1#>!8>p ]= p ]= <#d>Y=U#>?Y=U#>X>p ]= <>va=k<\> =/#>#d>Y=U#>>va=k<(>,h=Ü=K">\> =/#>(>,h=<>yp=mw<\>S{=">r>Ü=K">>yp=mwpt=Bż<#d>]=t">\>S{=">X>pt=Bżpt=Bż<?]=t">#d>]=t">!8>pt=Bż<>,p=c<ן?=">?]=t">>,p=c<~>,h=ן?=">~>,h=<>-`=&<ן?=u1#>L?Ü=K">}>I=#~;>VO=i; >N]=t;>I=};^>I=};>]=}V;9y>P=h;>yI=#~;#>M]=t;}>#\=P=;z>O=s=h;J%>8]=D;z>h=k;}>5\=X>;J%>\=L ;>4'o=:9y>h=;#>\=@;^>n=:>n=:>\=;>Wi=;}>%o=: >\=@;-Y>5\=X>;(>ii=[O; >\=L ;(>DO=Yi;-Y>\=P=; >}7]=D;ן?=u1#>?Y=U#>,>h=C!>?Y=U#>#d>Y=U#>,>h=C!>#d>Y=U#>\> =/#>,>h=C!>\> =/#>r>Ü=K">,>h=C!>r>Ü=K">\>S{=">,>h=C!>\>S{=">#d>]=t">,>h=C!>#d>]=t">?]=t">,>h=C!>?]=t">ן?=">,>h=C!>ן?=">L?Ü=K">,>h=C!>L?Ü=K">ן?=u1#>,>h=C!>!8>p ]= <>-`=&<>VO=i;}>I=#~;>-`=&<>si=)}< >N]=t;>VO=i;>si=)}p ]= <}>I=#~; >N]=t;X>p ]= p ]= <^>I=};>I=};!8>p ]= <>si=)}<>]=}V;^>I=};>si=)}p ]= <>I=};>]=}V;>va=kp ]= <>yI=#~;9y>P=h;X>p ]= <>si=)}<#>M]=t;>yI=#~;>si=)}<>va=k<9y>P=h;#>M]=t;(>,h=<>va=kO=s=h;}>#\=P=;>va=k<>si=)}8]=D;z>O=s=h;>si=)}<(>,h=<}>#\=P=;J%>8]=D;>yp=mw<(>,h=<}>5\=X>;z>h=k;(>,h=<>si=)}\=L ;}>5\=X>;>si=)}<>yp=mwh=k;J%>\=L ;X>pt=Bż<>yp=mw<9y>h=;>4'o=:>yp=mw<>si=)}<#>\=@;9y>h=;>si=)}pt=Bż<>4'o=:#>\=@;!8>pt=Bżpt=Bż<>n=:^>n=:X>pt=Bż<>si=)}<>\=;>n=:>si=)}pt=Bż<^>n=:>\=;>,p=cpt=Bż<}>%o=:>Wi=;!8>pt=Bż<>si=)}< >\=@;}>%o=:>si=)}<>,p=c<>Wi=; >\=@;~>,h=<>,p=c<(>ii=[O;-Y>5\=X>;>,p=c<>si=)}< >\=L ;(>ii=[O;>si=)}<~>,h=<-Y>5\=X>; >\=L ;>-`=&<~>,h=<-Y>\=P=;(>DO=Yi;~>,h=<>si=)}< >}7]=D;-Y>\=P=;>si=)}<>-`=&<(>DO=Yi; >}7]=D;@A_|@=I@@6@3O*@?.+@?@6@?6@9@?3O*@??6@K?8J@)\@M?9@?K?8J@ ?p@a@,,?)\@M? ?p@K?@)\@,b?a@,,?K?@?@9@}?)\@,b??@@@3O*@}?9@}?@@_|@@.+@|c?3O*@}?_|@@v@p@),@,,?.+@|c?v@p@_|@=I@.+@?),@,,?*@@e@l@@g@$^?G@@G@@@?@3j?@@V@4H?)@?@@@?e@4H?'@@@3j?f@?ke@@ @@؂@$^?؂@@}@e@f@*@U@@@t @'@j@g@@@j@@t @)@@@.+@?3O*@?M@$?3O*@?9@?M@$?9@?)\@M?M@$?)\@M?a@,,?M@$?a@,,?)\@,b?M@$?)\@,b?9@}?M@$?9@}?3O*@}?M@$?3O*@}?.+@|c?M@$?.+@|c?),@,,?M@$?),@,,?.+@?M@$?@6@_|@=I@e@l@*@@_|@=I@@@@g@e@l@@@@6@*@@@g@?6@@6@@G@$^?G@@6@@@@@@G@@@?6@$^?G@@@K?8J@?6@3j?@?@?6@@@@V@3j?@@@K?8J@?@@V@ ?p@K?8J@?@4H?)@K?8J@@@@@?@@@ ?p@4H?)@@@K?@ ?p@4H?'@?e@ ?p@@@@@4H?'@@@K?@?e@@@?@K?@?ke@3j?f@K?@@@@ @?ke@@@?@3j?f@@ @@@?@$^?؂@@؂@?@@@@}@$^?؂@@@@@@؂@@}@_|@@@@*@U@e@f@@@@@@@*@U@@@_|@@e@f@@@v@p@_|@@j@g@t @'@_|@@@@@@j@g@@@v@p@t @'@@@_|@=I@v@p@t @)@j@@v@p@@@@@t @)@@@_|@=I@j@@@@`A6??4L?L4o:o:o: Ad    !"# !#&'$$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefgdegjkhhijmnolmorsppqrvwttuvyz{xy{|}~|~0A01 - Standardd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcPA@N pSphere3_0A= A: \ʀq^I =@?i3=Kpe'=ü9q^I =k_`n;=֣Dt=: \ʀp;c?<<=>BC@@ABEFGDEGIJKHIKNOLLMNRSPPQRUVWTUWYZ[XY[]^_\]_bc``abfgddefjkhhijmnolmoqrspqsvwttuvxyz{|}~0AVMtl10F  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEPA@pPlane1_0GAA8jz ;L>t!l=L>t!=L>p~ûL>p~û`A6 >4X+ ?A=L>A A90AVMtl11PA@pPlane2_0GAA8jz ;Ls!l=Ls!=Lr~ûLr~û`A6 >4X+ ?A=LA A90AVMtl12PA@pPlane3_0GAA8=33>,VvM>33>,d>33> f=33> `A6 >4X+ 0,>33>ϼ A90AVMtl13PA@pPlane4_0GAA8=33,VvM>33,d>33 f=33 `A6 >4X+ 0,>33ϼ A90AVMtl14PA@Quader01AqAh(E>[#>E>(>[#>>(E>xqK[#>E>xqK(>xqK[#>>xqK`A6???A=> A 0A/01 - Standard1  PA6 @@@Quader02AqAh(ɾ[#>ɾ( Aľ[#> Aľ(ɾxqK[#>ɾxqK( AľxqK[#> AľxqK`A6???A=ƾ A 0A/01 - Standard1  PA6 @@ MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*I@"&[}? !>Yc> # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0$$$DUMMY@pCylinder4 &`?Z> # # # #< #< #<0pCylinder5@ &!*"&???0 pCylinder6@ &!*"&???0 $$$DUMMY@pCylinder7 &?!*I@"&X=/>Z> # # # #< #< #<0 pCylinder8@  &!*"&???0 pCylinder9@  &!*"&???0 $$$DUMMY@pSphere01 &!*I@"&??? # # # #< #< #<0pSphere1_0@  &!*"&???0$$$DUMMY@pSphere02 &!*I@"&??? # # # #< #< #<0pSphere2_0@ &!*"&?L??0$$$DUMMY@pSphere03 &^<!*mH@&ۦ1<"&G>)v>4= # # # #< #< #<0pSphere3_0@ &!*"&???0$$$DUMMY@pPlane01 &?A=AL!*?"& >? = # # # #< #< #<0pPlane1_0G@ &!*"&???0$$$DUMMY@pPlane02 &?A=AL>!*?"& >? = # # # #< #< #<0pPlane2_0G@ &!*"&???0$$$DUMMY@pPlane03 &0,>ϼ33!*?"& >? = # # # #< #< #<0pPlane3_0G@ &!*"&???0$$$DUMMY@pPlane04 &0,>ϼ33>!*?"& >? = # # # #< #< #<0pPlane4_0G@ &!*"&???0Quader01@ &A=>!*"&???0Quader02@ &A=ƾ!*"&???gl-117-1.3.2/models/gl-16.3ds0000644000175000017500000013701510145416156014427 0ustar cedriccedricMM  ==>= 01 - Standard  0 @0 A0P0R0S00 ?G0dGL-16_C2.TGAQS X Z Y¾ VMtl02  0 @0A0P0R0S00 ? VMtl03 DDD  DDD0 @0A0P0R0S00 ? VMtl04 "%  "%0 @0A0P0R0S00 ? VMtl06 ###  ###0 @0A0P0R0S00 ?02 - Standard  0 @0 A0P0R0S00 ?[0dGL-16_CH.TGAQS T ?V X (>Z VMtl08 DDD  DDD0 @0A0P0R0S00 ? VMtl09 DDD  DDD0 @0A0P0R0S00 ? VMtl10 DDD  DDD0 @0A0P0R0S00 ? VMtl11 DDD  DDD0 @0A0P0R0S00 ?02 - Standard1 eee  eee0 @0 A0P0R0S00 ? ?@DpCylinder1ACA+?E6>&B+?< >?P/>ʼ?TRe>s+?< >+?k2==?/-=߽?P/>ʼ+?k2==*?: ý?:~?/-=߽*?: ý*?=?߽?:~*?=)? ?-ʼ?߽)? )?84TB?Fc+s?-ʼ)?84TBɨ?Gyۯ?-4>?Fc<*? j$ >+?FJ>?_>?-4>+?FJ>+?_:h\>?]:xu>?_>+?_:h\>+?d2=FJ>?*-=_>?]:xu>+?d2=FJ>+?= >j$ >?Q/>5>?*-=_>+?= >j$ >+?j2>#=?VRe>5>+?j2>#=ɨ?I>ۯ :?VRe><ɨ?I>ۯ<+?E6>&B?TRe>s?ڮ> :?TRe>s?P/>ʼ ƽ?P/>ʼ ƽ?TRe> ?P/>ʼ?/-=߽ ƽ?0-=߽ ƽ?P/>ʼ?/-=߽?:~ ƽ?:~ ƽ?0-=߽?:~?߽ ƽ?߽ ƽ?:~?߽?-ʼ ƽ?-ʼ ƽ?߽?-ʼ?Fc+s ƽ?Fc ƽ?-ʼ?Fc+s? : ƽ? : ƽ?Fc? :?Fc< ƽ?FcU%= ƽ? :?Fc ƽ?-4> ƽ?FcU%=?-4>?_> ƽ?Zg> ƽ?-4>?_>?]:xu> ƽ?|: G}> ƽ?Zg>?]:xu>?*-=_> ƽ?--=[g> ƽ?|: G}>?*-=_>?Q/>5> ƽ?O/>5> ƽ?--=[g>?Q/>5>?VRe>< ƽ?TRe>\%= ƽ?O/>5>?VRe> : ƽ?ڮ>) : ƽ?TRe>\%=?ڮ> :?TRe>s ƽ?TRe> ƽ?ڮ>) : ƽ?TRe> ƽ?P/>ʼs%?S/>ʼE?{ݹ? ƽ?P/>ʼ ƽ?0-=߽s%?0-=߽s%?S/>ʼ ƽ?0-=߽ ƽ?:~s%?:~s%?0-=߽ ƽ?:~ ƽ?߽s%?߽s%?:~ ƽ?߽ ƽ?-ʼs%?-ʼs%?߽ ƽ?-ʼ ƽ?Fc}E?󛹿s%?-ʼ ƽ?Fc ƽ? :s%? :}E?󛹿 ƽ? : ƽ?FcU%=s%?Fc:=s%? : ƽ?FcU%= ƽ?-4>s%?-5>s%?Fc:= ƽ?-4> ƽ?Zg>s%?Mo>s%?-5> ƽ?Zg> ƽ?|: G}>s%?:>s%?Mo> ƽ?|: G}> ƽ?--=[g>s%?+-=Mo>s%?:> ƽ?--=[g> ƽ?O/>5>s%?O/>5>s%?+-=Mo> ƽ?O/>5> ƽ?TRe>\%=s%?TRe>:=s%?O/>5> ƽ?TRe>\%= ƽ?ڮ>) :r%?خ>^ :s%?TRe>:= ƽ?ڮ>) : ƽ?TRe> E?{ݹ?r%?خ>^ :E?{ݹ?s%?S/>ʼ8?V/>UʼB?{ݹ?s%?S/>ʼs%?0-=߽8?6-= ߽8?V/>Uʼs%?0-=߽s%?:~8?z:~8?6-= ߽s%?:~s%?߽8?߽8?z:~s%?߽s%?-ʼ8?-`ʼ8?߽s%?-ʼ}E?󛹿>?󛹿8?-`ʼ}E?󛹿s%? :8?:>?󛹿s%? :s%?Fc:=8?Fcvd=8?:s%?Fc:=s%?-5>8?-5>8?Fcvd=s%?-5>s%?Mo>8?2w>8?-5>s%?Mo>s%?:>8?:|>8?2w>s%?:>s%?+-=Mo>8?0-=2w>8?:|>s%?+-=Mo>s%?O/>5>8?R/>5>8?0-=2w>s%?O/>5>s%?TRe>:=8?WRe>vd=8?R/>5>s%?TRe>:=r%?خ>^ :8?ٮ>5:8?WRe>vd=r%?خ>^ :E?{ݹ?B?{ݹ?8?ٮ>5:B?{ݹ?8?V/>UʼW/>ʼ;?~ݹ?8?V/>Uʼ8?6-= ߽=-=߽W/>ʼ8?6-= ߽8?z:~7:~=-=߽8?z:~8?߽߽7:~8?߽8?-`ʼ-(ʼ߽8?-`ʼ>?󛹿;?󛹿 -(ʼ>?󛹿8?:a:;?󛹿 8?:8?Fcvd=Fcvd=a:8?Fcvd=8?-5> - 5>Fcvd=8?-5>8?2w> > - 5>8?2w>8?:|>:gȊ> >8?:|>8?0-=2w>7-= >:gȊ>8?0-=2w>8?R/>5>X/>5>7-= >8?R/>5>8?WRe>vd=ZRe>vd=X/>5>8?WRe>vd=8?ٮ>5:ۮ>:ZRe>vd=8?ٮ>5:B?{ݹ?;?~ݹ?ۮ>:;?~ݹ?W/>ʼ#Z/>ʼ#[Re>-˼W/>ʼ=-=߽#@-={#Z/>ʼ=-=߽7:~#a:#@-={7:~߽#{#a:߽-(ʼ# -ʼ#{-(ʼ;?󛹿 #Fc;˼# -ʼ;?󛹿 a:#:#Fc;˼a:Fcvd=#Fcvd=#:Fcvd= - 5>#-51>#Fcvd= - 5> >#sl>#-51> >:gȊ>#:V7>#sl>:gȊ>7-= >#8-=tl>#:V7>7-= >X/>5>#V/>5>#8-=tl>X/>5>ZRe>vd=#[Re>vd=#V/>5>ZRe>vd=ۮ>:#ۮ>?:#[Re>vd=ۮ>:;?~ݹ?#[Re>-˼#ۮ>?:#[Re>-˼#Z/>ʼ I#Z/>ʼ#@-={ #@-={#a:6:H=6:#Fcvd=#-51>H=#-51>#sl>#sl>#:V7>#:V7>#8-=tl>#8-=tl>#V/>5>>f5>#V/>5>#[Re>vd=>H=>f5>#[Re>vd=#ۮ>?:;e8D>M:>H=#ۮ>?:#[Re>-˼I;e8D>M:I ^~=>:=^:>Q :=6:^$<^:8=T6:H=^88IX=^$<H=^.1 0>^88IX=^◽f`>^.1 0>^=:Kyq>^◽f`>^\=f`>^=:Kyq>>f5>^|=>0>^\=f`>>f5>>H=^:>OX=^|=>0>>H=;e8D>M:^*><^:>OX=;e8D>M:I^:>Q^*><^:>Q^~=>:=ИZ=yИ[>BgW^~=>:=^^=6ИA= ИZ=y^^=6^:И':ۦИA= ^:^◽ɅИ,~ И':ۦ^◽Ʌ^0 :=И0ByИ,~ ^0 :=^:8=TИOkWИ0By^:8=T^$<И"1(ƈ<ИOkW^$<^88IX=ИO=И"1(ƈ<^88IX=^.1 0>И3B>ИO=^.1 0>^◽f`>И4~$?>И3B>^◽f`>^=:Kyq>И:gSN>И4~$?>^=:Kyq>^\=f`>И==$?>И:gSN>^\=f`>^|=>0>ИZ=>И==$?>^|=>0>^:>OX=И[>=ИZ=>^:>OX=^*><Иs=*>Lj<И[>=^*><^:>QИ[>BgWИs=*>Lj<И[>BgWИZ=yXk_4=nZkY >移ИZ=yИA= Yki=ʳXk_4=nИA= И':ۦYk:=Yki=ʳИ':ۦИ,~ Zka˳Yk:=И,~ И0ByZkҽðnZka˳И0ByИOkWZk WZkҽðnИOkWИ"1(ƈYkҽ>Zk o=И3B>И4~$?>YkaR,>Ykҽ>И4~$?>И:gSN>Zk:8>YkaR,>И:gSN>И==$?>Zki=S,>Zk:8>И==$?>ИZ=>Zk\4=>Zki=S,>ИZ=>И[>=Zk[ >r=Zk\4=>И[>=Иs=*>Ljr=Иs=*>Lj<И[>BgWZkY >移Zk >Lj<@A:_=>U=>֗=>=7>U=>ʚ=c>4i=N>֗=>ʚ=c>'=N>¹=:b>4i=N>'=N>1=Y8> =/u>¹=:b>1=Y8>YU=7>=> =/u>YU=7>1l= >cf=>=>1l= >Ѥ=>P=?cf=>Ѥ=>9c=H>90=!?P=?9c=H>$;=C>(o=>90=!?$;=C>Y=>L=k:>(o=>Y=>=>dC=U+>L=k:>=>*=s>P=%>dC=U+>*=s>B=>v=>P=%>B=>k=P*>=b>v=>k=P*> => =>=b> =>:_=>=7> =>=7>֗=>0=>=a>֗=>4i=N>;=m>0=>4i=N>¹=:b>R=>;=m>¹=:b> =/u>c=>R=> =/u>=>={>c=>=>cf=>=q?={>cf=>P=?";=-?=q?P=?90=!?+=9?";=-?90=!?(o=>6=8>+=9?(o=>L=k:>=`>6=8>L=k:>dC=U+>D=K>=`>dC=U+>P=%>H=?>D=K>P=%>v=>=>H=?>v=>=b>{=o>=>=b> =>=l>{=o> =>=7>=a>=l>=a>0=>zC=>i=0=>;=m>Td>+>zC=>;=m>R=>[>–>Td>+>R=>c=>z>>[>–>c=>={>j=>z>>={>=q?텂=Q^?j=>=q?";=-?=8?텂=Q^?";=-?+=9?=I?=8?+=9?6=8>q0=e>=I?6=8>=`>s=|>q0=e>=`>D=K>E=Ga>s=|>D=K>H=?>t=N>E=Ga>H=?>=>=F>t=N>=>{=o>!={>=F>{=o>=l>*=!>!={>=l>=a>i=*=!>i=zC=>i->A>@> :zC=>Td>+>ĭ>>i->A>Td>+>[>–>%>>ĭ>>[>–>z>>_>>%>>z>>j=> p>'>_>>j=>텂=Q^?r2>#^? p>'>텂=Q^?=8?<><?r2>#^?=8?=I?`>?<><?=I?q0=e>Ev>) >`>?q0=e>s=|>>>i>Ev>) >s=|>E=Ga>:>>>>i>E=Ga>t=N>>K~>:>>t=N>=F>"<>@B>>K~>=F>!={>ҕ>>"<>@B>!={>*=!>!>ޫ>ҕ>>*=!>i=@> :!>ޫ>@> :i->A>?>>F2;i->A>ĭ>>(? >?>ĭ>>%>>?>(? >%>>_>>?/>?>_>> p>'>P?>?/> p>'>r2>#^?>_?P?>r2>#^?<><?Qs?_ ?>_?<><?`>?G\??Qs?_ ?`>?Ev>) >?>G\??Ev>) >>>i>?=>?>>>i>:>>?,>?=>:>>>K~> ?D>?,>>K~>"<>@B>e?> ?D>"<>@B>ҕ>>?>e?>ҕ>>!>ޫ>?8I>?>!>ޫ>@> :>F2;?8I>>F2;?>#?{>#?q̽>?>(? >:#?,>#?{>(? >?>f#?iT>:#?,>?>?/>u#?W~>f#?iT>?/>P?>#?>u#?W~>P?>>_?v#?t?#?>>_?Qs?_ ?qo#?ɠ ?v#?t?Qs?_ ?G\??v#?N?qo#?ɠ ?G\???>`#?=>v#?N??>?=>W#?i>`#?=>?=>?,>e#?uV>W#?i>?,> ?D>#?%>e#?uV> ?D>e?>ֲ#?>#?%>e?>?>#?=>ֲ#?>?>?8I>#? >#?=>?8I>>F2;#?q̽>#? >#?q̽>#?{>J:?0>`:?>#?{>:#?,>L:?P>J:?0>:#?,>f#?iT>3:?>L:?P>f#?iT>u#?W~>:?)>3:?>u#?W~>#?>":?>:?)>#?>v#?t?{:?>":?>v#?t?qo#?ɠ ?[:??{:?>qo#?ɠ ?v#?N?4Y:?'&>[:??v#?N?`#?=>:?A>4Y:?'&>`#?=>W#?i>>;?͋>:?A>W#?i>e#?uV>C`;?>>;?͋>e#?uV>#?%>L^;?">C`;?>#?%>ֲ#?> ;?h>L^;?">ֲ#?>#?=>D:?C> ;?h>#?=>#? >^:?P>D:?C>#? >#?q̽>`:?>^:?P>`:?>J:?0>P?>P?z'>J:?0>L:?P>(`P?ٻ>P?>L:?P>3:?>CP?C>(`P?ٻ>3:?>:?)>5FP?b>CP?C>:?)>":?>wP?%>5FP?b>":?>{:?>P?Wm>wP?%>{:?>[:??P?v?P?Wm>[:??4Y:?'&>.;Q?(>P?v?4Y:?'&>:?A>CR?>.;Q?(>:?A>>;?͋>WR?Y>CR?>>;?͋>C`;?>R?T>WR?Y>C`;?>L^;?">R?>R?T>L^;?"> ;?h>uR?$>R?> ;?h>D:?C>Z{Q?'>uR?$>D:?C>^:?P>CQ?>Z{Q?'>^:?P>`:?>P?z'>CQ?>P?z'>P?>oi?>j?>P?>(`P?ٻ>Qi?b>oi?>(`P?ٻ>CP?C>ci?=>Qi?b>CP?C>5FP?b>g>i?=>ci?=>5FP?b>wP?%>8Ki?Q>g>i?=>wP?%>P?Wm>)i?>8Ki?Q>P?Wm>P?v?Dj?>)i?>P?v?.;Q?(>Q8k? >Dj?>.;Q?(>CR?>l?+>Q8k? >CR?>WR?Y>Чl?>l?+>WR?Y>R?T>l?>Чl?>R?T>R?>ʻl?Ϣ>l?>R?>uR?$>4l?\>ʻl?Ϣ>uR?$>Z{Q?'>gk?$>4l?\>Z{Q?'>CQ?>xj?f>gk?$>CQ?>P?z'>j?>xj?f>j?>oi?>?P>y?:>oi?>Qi?b> ?s>?P>Qi?b>ci?=>?@> ?s>ci?=>g>i?=>?>?@>g>i?=>8Ki?Q>?p8>?>8Ki?Q>)i?>Eo?[>?p8>)i?>Dj?>ߟ?3>Eo?[>Dj?>Q8k? >0?>ߟ?3>Q8k? >l?+>J?>0?>l?+>Чl?>?e>J?>Чl?>l?>*?]>?e>l?>ʻl?Ϣ>o?gR>*?]>ʻl?Ϣ>4l?\>h?Z>o?gR>4l?\>gk?$>JC?U>h?Z>gk?$>xj?f>?g>JC?U>xj?f>j?>y?:>?g>`A64?36޿737^4"3" "?o:o:o: A@    "#  !"&'$$%&*+(()*-./,-/1230135674579:;89;>?<<=>C@AABCDEFDFGHIJHJKLMNLNOPQRPRSTUVTVWZ[XXYZ]^_\]_c`aabcefgdegijkhiklmnlnorsppqrtuvtvwz{xxyz}~|}        !" "#%&'$%')*+()+,-.,./23001245646789:8:;>?<<=>C@AABCDEFDFGHIJHJKOLMMNOSPQQRSTUVTVW[XYYZ[\]^\^_abc`acgdeefgijkhiklmnlnorsppqrtuvtvwxyzxz{|}~|~        # !!"#$%&$&'()*(*+/,--./30112345646789:8:;?<==>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfghijhjkolmmnospqqrswtuuvw{xyyz{|}}~0A01 - Standard@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?PA@pCylinder2AAH0?B=?><8 ?:<<?@9=Sn?B=?:<<?<:Å?@9=Sn?:<<? Wn?<:Å?:<<?)ѽ? Wn?:<<?x8 ?)ѽ?:<?m=?:<<? />?.Jq>?:<<?<:K>>? />?:<<??9=/>?<:K>>?:<<?"G=Kq>??9=/>?:<<?>o=?"G=Kq>?:<r(=?>o=?:<<?><8 ?>r(=?:<<`A64?36޿737^4"3" "?o:o:o: A   !"#$%&'()*+,-./0A/VMtl02 PAF@ pCylinder3A AH?><8 ?B=+?< >+?E6>&B?B=?@9=Sn+?k2==+?< >?@9=Sn?<:Å*?: ý+?k2==?<:Å? Wn*?=*?: ý? Wn?)ѽ)? *?=?)ѽ?x8 )?84TB)? ?x8 ?ؔm(=ɨ?Gyۯ<)?84TB?ؔm(=?m=)?^0#=ɨ?Gyۯ<?m=?.Jq>*? j$ >)?^0#=?.Jq>? />+?FJ>*? j$ >? />?<:K>>+?_:h\>+?FJ>?<:K>>??9=/>+?d2=FJ>+?_:h\>??9=/>?"G=Kq>+?= >j$ >+?d2=FJ>?"G=Kq>?>o=+?j2>#=+?= >j$ >?>o=?>r(=ɨ?I>ۯ<+?j2>#=?>r(=?><8 +?E6>&Bɨ?I>ۯ移Xk_4=n8ܑ=8;=s;Xk_4=nYki=ʳ8=]8ܑ=Yki=ʳYk:=8>:O8=]Yk:=Zka˳8c]8>:OZka˳Zkҽðn82č8c]ZkҽðnZk W𧻶8㿋ڹs;82čZk WZk1 Lj<8)VɽC N<8㿋ڹs;Zk1 Lj86č&=8㿌ڹ}a=Ykҽ>YkaR,>8f=86č&=YkaR,>Zk:8>8:1=8f=Zk:8>Zki=S,>8==8:1=Zki=S,>Zk\4=>8ܑ=(=8==Zk\4=>Zk[ >r=8:=a=8ܑ=(=Zk[ >r=Zk >Lj<8n=Q N<8:=a=Zk >Lj移8;=s;8n=Q N<8;=s;8ܑ=Y:~;8ܑ=8=]Y:~;8=]8>:OY:~;8>:O8c]Y:~;8c]82čY:~;82č8㿋ڹs;Y:~;8㿋ڹs;8)VɽC N<Y:~;8)VɽC N<8㿌ڹ}a=Y:~;8㿌ڹ}a=86č&=Y:~;86č&=8f=Y:~;8f=8:1=Y:~;8:1=8==Y:~;8==8ܑ=(=Y:~;8ܑ=(=8:=a=Y:~;8:=a=8n=Q N<Y:~;8n=Q N<8;=s;Y:~;`A64?36޿737^4"3" "?o:o:o: A}P    "#  !"&'$$%&)*+()+./,,-.1230135674579:;89;>?<<=>C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVWZ[XXYZ\]^\^_`ab`bcdefdfghijhjkolmmnospqqrswtuuvw{xyyz{}~|}0AVMtl03P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@&pSphere1_0AAH ,V=>[<>K_=a>sM{=`>[<> 3>n龳(3a>K_=a> 3>[>Kx_a>n龳(3a>[>,{V>s,{a>Kx_a>,{V>0@G>0@_`>s,{a>0@G>c{V>=o,{^>0@_`>c{V>lZ>9fx_]>=o,{^>lZ>p3>𜃿(3]>9fx_]>p3>l<>9f_=]>𜃿(3]>l<>cV=>=oO{=]>9f_=]>cV=>0@l=>0@_=^>=oO{=]>0@l=>,V=>sM{=`>0@_=^>sM{=`>K_=a>ǾM=79>A =69>K_=a>n龳(3a>\窾\389>ǾM=79>n龳(3a>Kx_a>ǾM89>\窾\389>Kx_a>s,{a>A x 69>ǾM89>s,{a>0@_`>0@ͽ69>A x 69>0@_`>=o,{^>,yz 49>0@ͽ69>=o,{^>9fx_]> M39>,yz 49>9fx_]>𜃿(3]>¶\329> M39>𜃿(3]>9f_=]> M=29>¶\329>9f_=]>=oO{=]>,y =29> M=29>=oO{=]>0@_=^>0@=49>,y =29>0@_=^>sM{=`>A =69>0@=49>A =69>ǾM=79>DG{=c>JR=c>ǾM=79>\窾\389>uw3c>DG{=c>\窾\389>ǾM89>D3{c>uw3c>ǾM89>A x 69>JGڽc>D3{c>A x 69>0@ͽ69>0@%c>JGڽc>0@ͽ69>,yz 49>9fGڽc>0@%c>,yz 49> M39>U3{~c>9fGڽc> M39>¶\329>P,y3|c>U3{~c>¶\329> M=29>UG{=|c>P,y3|c> M=29>,y =29>9fR=}c>UG{=|c>,y =29>0@=49>0@.=c>9fR=}c>0@=49>A =69>JR=c>0@.=c>JR=c>DG{=c>Ճvk=/>Ԓ6=+>DG{=c>uw3c>9ܒ22>Ճvk=/>uw3c>D3{c>Ճqk2>9ܒ22>D3{c>JGڽc>Ē6/>Ճqk2>JGڽc>0@%c>0@rk ,>Ē6/>0@%c>9fGڽc>˂6'>0@rk ,>9fGڽc>U3{~c>qk$>˂6'>U3{~c>P,y3|c>?ے2">qk$>P,y3|c>UG{=|c>vk=!>?ے2">UG{=|c>9fR=}c>˂6=">vk=!>9fR=}c>0@.=c>0@uk >&>˂6=">0@.=c>JR=c>Ԓ6=+>0@uk >&>[<>,V=>0@x3Q> 3>[<>0@x3Q>[> 3>0@x3Q>,{V>[>0@x3Q>0@G>,{V>0@x3Q>c{V>0@G>0@x3Q>lZ>c{V>0@x3Q>p3>lZ>0@x3Q>l<>p3>0@x3Q>cV=>l<>0@x3Q>0@l=>cV=>0@x3Q>,V=>0@l=>0@x3Q>Ԓ6=+>Ճvk=/>9ܒ22>Ճqk2>Ē6/>0@rk ,>˂6'>qk$>?ے2">vk=!>˂6=">0@uk >&>`A6_>| w3w ^6E= Av    !"# !#%&'$%'*+(()*-./,-/123013567457:;889:>?<<=>BC@@ABFGDDEFJKHHIJNOLLMNQRSPQSUVWTUWYZ[XY[]^_\]_abc`acefgdegjkhhijnollmnrsppqrvwttuvz{xxyz~||}~0AVMtl04v  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuPA @@E$pCylinder5A4$APy?HS=7Ж {? "=e)${?c<׉?t=jٽ\?^= )${?c7<?N.H?70 y? ">7r0 ?b=7.y?HS=NG?>r0 zz?(e=z?FS=&*7P?>Ж?>NP?>Ж\?^= J>U=NÏ>>\?^= ׉?t=jٽ㤐>t=J>U=N׉?t=jٽ?A3?`㽊Đ>wdxt㤐>t=?A3?`׉?thٽ䤐>tĐ>wdxt׉?thٽ\?Q⽠ J>YI䤐>t\?Q⽠ R?ϖÏ>J>YIR?ϖ?N$>0Ï>?NH?70 c>޼$>0H?70 ?N.Aa>U⽪ۼc>޼?N..?t)_>tټAa>U⽪ۼ.?t)§?䨖36>wG52̼_>tټ§?䨖36-?t=)_>t=ټ>wG52̼-?t=)?b=7.>a>Z=ۼ_>t=ټ?b=7.G?>r0 c>>޼>a>Z=ۼG?>r0 ?>N$>>8c>>޼?>NP?>ЖÏ>>$>>8Ï>>J>U=N⽬NP}b >&(Tk7>x⽿J>U=N㤐>t=:=M=RNP}b >&㤐>t=Đ>wdxth)L\ѡ:=M=RĐ>wdxt䤐>t0=MQh)L\ѡ䤐>tJ>YI⽚NPb &0=MQJ>YIÏ>Tk7x⽚NPb &Ï>$>0PZFƮTk7x⽸$>0c>޼YZhk7W6PZFƮc>޼Aa>U⽪ۼQphb 75YZhk7W6Aa>U⽪ۼ_>tټ~h󗽒4Qphb 75_>tټ>wG52̼5v\R -~h󗽒4>wG52̼_>t=ټh=^45v\R -_>t=ټ>a>Z=ۼ_phb >5h=^4>a>Z=ۼc>>޼pZhk7>i6_phb >5c>>޼$>>8PZF>ƮpZhk7>i6$>>8Ï>>(Tk7>x⽺PZF>Ʈ(Tk7>x⽬NP}b >&xľyb >l žk7>NP}b >&:=M=Rľ|='xľyb >l:=M=Rh)L\ѡþ,ľ|='h)L\ѡ0=MQľ󗽩'þ,0=MQNPb &xľb iľ󗽩'NPb &Tk7x⽱ žk7xľb iTk7x⽡PZFƮžÈF}ҽ žk7PZFƮYZhk7W69zǾk7+~žÈF}ҽYZhk7W6Qphb 75|Ǿb |9zǾk7+~Qphb 75~h󗽒4~Ǿp{|Ǿb |~h󗽒45v\R -Ⱦ?|'=~Ǿp{5v\R -h=^4~Ǿ=p{Ⱦ?|'=h=^4_phb >5|Ǿ{b >݈|~Ǿ=p{_phb >5pZhk7>i6+~|Ǿ{b >݈|pZhk7>i6PZF>ƮžF>}ҽ+~PZF>Ʈ(Tk7>x⽴ žk7>žF>}ҽ žk7>xľyb >ls7wb >*?7k7>xľyb >lľ|='B7v=9s7wb >*ľ|='þ,s17P0>B7v=9þ,ľ󗽩'B79s17P0>ľ󗽩'xľb is7b *B79xľb i žk7@7l7s7b * žk7žÈF}ҽ8ʈF14@7l7žÈF}ҽ9zǾk7+~8l7̢8ʈF149zǾk7+~|Ǿb |8b 8l7̢|Ǿb |~Ǿp{8!o8b ~Ǿp{Ⱦ?|'=:9WZ<8!oȾ?|'=~Ǿ=p{8y=o:9WZ<~Ǿ=p{|Ǿ{b >݈|8yb >8y=o|Ǿ{b >݈|+~8k7>̢8yb >+~žF>}ҽ8F>948k7>̢žF>}ҽ žk7>?7k7>8F>94@A P.?ޤ:?ߤ:%?ޤ:>:>:>ߤ:->ޤ:>:->:>:>:>:%?:?:.?:<?:.?:?:s ?P]>bw?P]>?:%?:?P]>s ?P]>%?:>:>P]>?P]>>:>:>P]>>P]>>:>:>P]>>P]>>:->:8>P]>>P]>->:>:>P]>8>P]>>:->ޤ:8>^>>P]>->ޤ:>ߤ:>^>8>^>>ߤ:>:>^>>^>>:>:>F\>>^>>:%?ޤ:?^>>F\>%?ޤ:?ߤ:s ?^>?^>?ߤ:.?ޤ:bw?^>s ?^>.?ޤ:<?:?P]>bw?^><?:.?:bw?P]>?P]>bw?P]>s ?P]>t ?>bw?>s ?P]>?P]>?>t ?>?P]>>P]>>>?>>P]>>P]>>>>>>P]>>P]>>>>>>P]>8>P]>8>>>>8>P]>>P]>>>8>>>P]>8>^>8>|8>>>8>^>>^>>{8>8>|8>>^>>^>>{8>>{8>>^>>F\>>O>>{8>>F\>?^>?z8>>O>?^>s ?^>t ?z8>?z8>s ?^>bw?^>bw?z8>t ?z8>bw?^>?P]>?>bw?z8>?P]>bw?P]>bw?>?>bw?>t ?>u ?ހ?f?ހ?t ?>?>p?ހ?u ?ހ??>>>>ހ?p?ހ?>>>>>ހ?>ހ?>>>>>߀?>ހ?>>8>>2>߀?>߀?8>>>>v>߀?2>߀?>>8>|8>2>?v>߀?8>|8>>{8>>?2>?>{8>>{8>>?>?>{8>>O>>H>?>?>O>?z8>p??>H>??z8>t ?z8>u ??p??t ?z8>bw?z8>f??u ??bw?z8>?>Dq?ހ?f???>bw?>f?ހ?Dq?ހ?f?ހ?u ?ހ?v ?ހ??ހ?>ހ?>ހ?>߀?>=M?>߀?2>߀?4>=M?>=M?2>߀?v>߀?v>=M?4>=M?v>߀?2>?4>M?v>=M?2>?>?>M?4>M?>?>?>M?>M?>?>H>??"M?>M?>H>?p??p?M??"M?p??u ??v ?M?p?M?u ??f??f?M?v ?M?f??Dq?ހ?Eq????>=M?>?>?>=M?4>=M?4>?>?4>=M?v>=M?v>?4>?v>=M?4>M?4>E?v>?4>M?>M?>D?4>E?>M?>M?>D?>D?>M??"M??G9?>D??"M?p?M?p?D??G9?p?M?v ?M?v ?B?p?D?v ?M?f?M?g?B?v ?B?f?M?Eq?$>4 A       !"# !#%&'$%')*+()+./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKNOLLMNPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfghijhjkmnolmopqrprstuvtvwz{xxyz}~|}        !" "#$%&$&'()*(*+-./,-/012023456467:;889:=>?<=?@AB@BCDEFDFGHIJHJKLMNLNO0Ar01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA @pCylinder6AAH0?7k7>s7wb >*v(y4Ps7wb >*B7v=9v(y4PB7v=9s17P0>v(y4Ps17P0>B79v(y4PB79s7b *v(y4Ps7b *@7l7v(y4P@7l78ʈF14v(y4P8ʈF148l7̢v(y4P8l7̢8b v(y4P8b 8!ov(y4P8!o:9WZv(y4P8yb >8k7>̢v(y4P8k7>̢8F>94v(y4P8F>94?7k7>v(y4P`A6q%q%?*C@HVN$>4 A   !"#$%&'()*+,-./0A/VMtl06 PAF@pCylinder8AAi3?Ъr?w?|r?h?Jn`ئ>(%?.l`ئ>w?|r?֎?|r?^y?Jn`ئ>h?Jn`ئ>֎?|r??Ъr?2H?.l`ئ>^y?Jn`ئ>?Ъr?@?FSr?GM5?ZB_ئ>2H?.l`ئ>@?FSr??@<r?2H?pk<`ئ>GM5?ZB_ئ>?@<r?֎?<r?^y?zm<`ئ>2H?pk<`ئ>֎?<r?w?<r?h?zm<`ئ>^y?zm<`ئ>w?<r?i3?@<r?(%?pk<`ئ>h?zm<`ئ>i3?@<r?$?FSr?䗽?ZB_ئ>(%?pk<`ئ>$?FSr?i3?Ъr?(%?.l`ئ>䗽?ZB_ئ>(%?.l`ئ>h?Jn`ئ>?$6>η?#6>h?Jn`ئ>^y?Jn`ئ>Z?$6>?$6>^y?Jn`ئ>2H?.l`ئ>[e?#6>Z?$6>2H?.l`ئ>GM5?ZB_ئ>?۷6>[e?#6>GM5?ZB_ئ>2H?pk<`ئ>[e?#=6>?۷6>2H?pk<`ئ>^y?zm<`ئ>Z?M$=6>[e?#=6>^y?zm<`ئ>h?zm<`ئ>=?M$=6>Z?M$=6>h?zm<`ئ>(%?pk<`ئ>η?#=6>=?M$=6>(%?pk<`ئ>䗽?ZB_ئ>HA?۷6>η?#=6>䗽?ZB_ئ>(%?.l`ئ>η?#6>HA?۷6>w?|r?i3?Ъr??FSr?֎?|r?w?|r??FSr??Ъr?֎?|r??FSr?@?FSr??Ъr??FSr??@<r?@?FSr??FSr?֎?<r??@<r??FSr?w?<r?֎?<r??FSr?i3?@<r?w?<r??FSr?$?FSr?i3?@<r??FSr?i3?Ъr?$?FSr??FSr?η?#6>?$6>{?۷6>?$6>Z?$6>{?۷6>Z?$6>[e?#6>{?۷6>[e?#6>?۷6>{?۷6>?۷6>[e?#=6>{?۷6>[e?#=6>Z?M$=6>{?۷6>Z?M$=6>=?M$=6>{?۷6>=?M$=6>η?#=6>{?۷6>η?#=6>HA?۷6>{?۷6>HA?۷6>η?#6>{?۷6>@Ah;@s?,.@s?&@?*@?,.@s?e%@s? @?&@?e%@s? @s?@? @? @s?@s???@?@s? @s?@??? @s?e%@s? @?@?e%@s?,.@s?&@? @?,.@s?;@s?*@?&@?;@s?U@@s?O/@?*@?U@@s?;@s?*@?O/@?*@?&@?O@@Ӥ,@@&@? @?@@O@@ @?@? ?@@@@???(?@ ?@??@? ?@(?@@? @?@@ ?@ @?&@?@@@@&@?*@?Ӥ,@@@@*@?O/@? 1@@Ӥ,@@O/@?*@?Ӥ,@@ 1@@,.@s?;@s?-*@s?e%@s?,.@s?-*@s? @s?e%@s?-*@s?@s? @s?-*@s? @s?@s?-*@s?e%@s? @s?-*@s?,.@s?e%@s?-*@s?;@s?,.@s?-*@s?U@@s?;@s?-*@s?;@s?U@@s?-*@s?Ӥ,@@O@@q3C?j]> Al<     !" "#'$%%&')*+()+-./,-/12301374556789:8:;>?<<=>BC@@ABGDEEFGJKHHIJMNOLMOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0A02 - Standard<  !"#$%&'()*+,-./0123456789:;PA@pPlane1_0GAA8>+?Y.[-?+?Y.F?+?(e2>+?(e2`A6L?&׾w40"?+?ڽ A90AVMtl08PA@pPlane2_0GAA8>+Y.[-?+Y.F?+(e2>+(e2`A6L?&׾w40"?+ڽ A90AVMtl09PA@pPlane3_0GAA8/B?•?pK ?•?pKN&?•?^~*?•?^`A6L?&׾w40"&k?•? A90AVMtl10PA@pPlane4_0GAA8/B?•.P ?•.PN&?•ܜ~*?•ܜ`A6L?&׾w40"&k?•DN A90AVMtl11PA@Quader01AqAhj>\?7?\?7j>i?7?i?7j>\?_ͽ?\?_ͽj>i?_ͽ?i?_ͽ`A6? ?x?I?*?7 A 0A/02 - Standard1  PA6 @@@Quader02AqAhj>7?7j>{7?{7j>_ͽ?_ͽj>{_ͽ?{_ͽ`A6? ?x?I? 7 A 0A/02 - Standard1  PA6 @@D MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!* @:?::"&?7?"? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0$$$DUMMY@pSphere01 &E=!*I@5?5"&_> >^> # # # #< #< #<0pSphere1_0@ &!*"&???0 $$$DUMMY@pCylinder4 &$>4!*@DP2?DP?"&q%??sa> # # # #< #< #<0 pCylinder5@  &!*"&???0 pCylinder6@  &!*"&???0 $$$DUMMY@pCylinder7 &C?j]>!*I@"&?Qډ?o~> # # # #< #< #<0 pCylinder8@  &!*"&m0???0$$$DUMMY@pPlane01 &?ڽ+!*?"&L?&>> # # # #< #< #<0pPlane1_0G@ &!*"&???0$$$DUMMY@pPlane02 &?ڽ+?!*?"&L?&>> # # # #< #< #<0pPlane2_0G@ &!*"&???0$$$DUMMY@pPlane03 &&k? •!*?"&L?&>> # # # #< #< #<0pPlane3_0G@ &!*"&???0$$$DUMMY@pPlane04 &&k?DN•?!*?"&L?&>> # # # #< #< #<0pPlane4_0G@ &!*"&???0Quader01@ &I?*?7!*"&? ?x?0Quader02@ &I? 7!*"&? ?x?gl-117-1.3.2/models/gl-21.3ds0000644000175000017500000013211610145416156014420 0ustar cedriccedricMMN ==>= 01 - Standard  0 @0 A0P0R0S00 ?[0dGL-21_C2.TGAQS T >V >X ?Z ̾ VMtl02   0 @0A0P0R0S00 ? VMtl03 FFF  FFF0 @0A0P0R0S00 ? VMtl04  0 @0A0P0R0S00 ? VMtl06 FFF  FFF0 @0A0P0R0S00 ? VMtl07 FFF  FFF0 @0A0P0R0S00 ? VMtl08 FFF  FFF0 @0A0P0R0S00 ? VMtl09 FFF  FFF0 @0A0P0R0S00 ? VMtl10 FFF  FFF0 @0A0P0R0S00 ? ?@)pSphere4_0AAX 6?/mp=?4Np=,G?( ;F>gN?,6;bF>?4Np=>4=7>* ;~_H>,G?( ;F>>4=>!==>w8;pH>7>* ;~_H>>!=>;9?Ɏ=ic>;}H>=>w8;pH>>;9?Ɏ=$>) ;g=>P;uSH>ic>;}H>$>) ;g=>xK; =>b;b3H>>P;uSH>>xK; =?xK;o=F?a;&VF>>b;b3H>?xK;o=? ;to=8N?;tDF>F?a;&VF>? ;to=j?;9[o=u?;7F>8N?;tDF>j?;9[o=6?/mp=gN?,6;bF>u?;7F>d?4t=?k=>>8W*=P>ҥFn=k?ҥ=L>5;*=L=rfWn=>Fn=Z>Y<*=v=Ϲkn=T=%h4Wn=\>r*=Q=%/;Lm=v=G nn=\>X*=$>Ƌ;l=I=-;Nm=Z>,5*==k?\;V=>\;l=L>u ɢ*=@?2;=Md?ȵ;lI=>>@O|*=m?_=?o`4;=<>q*=~?Nm]=m?й=<>?󽹶*=gN?,6;bF>,G?( ;F>F.?Շ;]lH>,G?( ;F>7>* ;~_H>F.?Շ;]lH>7>* ;~_H>=>w8;pH>F.?Շ;]lH>=>w8;pH>ic>;}H>F.?Շ;]lH>ic>;}H>>P;uSH>F.?Շ;]lH>>P;uSH>>b;b3H>F.?Շ;]lH>>b;b3H>F?a;&VF>F.?Շ;]lH>F?a;&VF>8N?;tDF>F.?Շ;]lH>8N?;tDF>u?;7F>F.?Շ;]lH>u?;7F>gN?,6;bF>F.?Շ;]lH>?4Np=6?/mp=?k=d?4t=6?/mp=>@_9H=>>8W*=?k=>@_9H=?4Np=d?4t=>>8W*=>4=?4Np=k?ҥ=P>ҥFn=?4Np=>@_9H=L>5;*=k?ҥ=>@_9H=>4=P>ҥFn=L>5;*=>!=>4=>Fn=L=rfWn=>4=>@_9H=Z>Y<*=>Fn=>@_9H=>!=L=rfWn=Z>Y<*=>;9?Ɏ=>!=T=%h4Wn=v=Ϲkn=>!=>@_9H=\>r*=T=%h4Wn=>@_9H=>;9?Ɏ=v=Ϲkn=\>r*=$>) ;g=>;9?Ɏ=v=G nn=Q=%/;Lm=>;9?Ɏ=>@_9H=\>X*=v=G nn=>@_9H=$>) ;g=Q=%/;Lm=\>X*=>xK; =$>) ;g=I=-;Nm=$>Ƌ;l=$>) ;g=>@_9H=Z>,5*=I=-;Nm=>@_9H=>xK; =$>Ƌ;l=Z>,5*=?xK;o=>xK; =>\;l==k?\;V=>xK; =>@_9H=L>u ɢ*=>\;l=>@_9H=?xK;o==k?\;V=L>u ɢ*=? ;to=?xK;o=Md?ȵ;lI=@?2;=?xK;o=>@_9H=>>@O|*=Md?ȵ;lI=>@_9H=? ;to=@?2;=>>@O|*=j?;9[o=? ;to=?o`4;=m?_=? ;to=>@_9H=<>q*=?o`4;=>@_9H=j?;9[o=m?_=<>q*=6?/mp=j?;9[o=m?й=~?Nm]=j?;9[o=>@_9H=<>?󽹶*=m?й=>@_9H=6?/mp=~?Nm]=<>?󽹶*=@A@lx?&@?@ ?@p{?&@???2@?@ ???[#?ǘ?9b@M?2@?[#?ǘ??@J?^??34@m9?%@>?\?^?h@Rb?34@9?\?؞?@p{?@ ?=@O?@ ?2@?=@O?2@?9b@M?=@O?9b@M?)v@X?=@O?)v@X?b@?=@O?b@?2@|?=@O?2@|?h@v?=@O?h@v?Ǽ@k?=@O?Ǽ@k?֨@b?=@O?֨@b?@p{?=@O?&@?@lx?S@Rb?.@?@lx?l??^??S@Rb?l??&@?.@?^????&@?@x?`?W?&@?l??i??@x?l????`?W?i??[#?ǘ???Ǜ??XV?M???l??%u??Ǜ??l??[#?ǘ?XV?M?%u???&@k?l??^??@J?l??@$b?@>?^??@\?@$b?%@>?34@m9?@$b?l??\?^?%@>?l??@\?34@m9?\?^?@lx?@\?34@9?h@Rb?@\?l??\?؞?34@9?l??@lx?h@Rb?\?؞?`A6?ע1yW鼎4N17?rݰ4פ7@g(: Ad    !"# !#&'$$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcfgddefjkhhijlmnlnorsppqrwtuuvwyz{xy{|}~|~0A01 - Standardd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcPA@N pSphere5_0A= A 霻=jȢ=${j\=s-\=jȢ=z={j\=${j\=z=5S霻=\={j\=5S霻=QRYD=|ľL]=\=QRYD=5S;=<]=|ľL]=5S;=z;=bj<]=<]=z;=jȢ;=$bj<]=bj<]=jȢ;= 𚾤;=s-<]=$bj<]= 𚾤;=YD=L]=s-<]=YD= 霻=s-\=L]=s-\=${j\=atYɂ=bAYɂ=${j\={j\=g޳tYɂ=atYɂ={j\=\=4ǾbAYɂ=g޳tYɂ=\=|ľL]=ξJܱZɂ=4ǾbAYɂ=|ľL]=<]=4ǾbA4=Uq}j@4=atYɂ=g޳tYɂ=붾<>4=<>4=g޳tYɂ=4ǾbAYɂ= ^ξ}j@4=붾<>4=4ǾbAYɂ=ξJܱZɂ=R׾ΝA4= ^ξ}j@4=ξJܱZɂ=4ǾbA=z=jȢ=j>=5S霻=z=j>=QRYD=5S霻=j>=5S;=QRYD=j>=z;=5S;=j>=jȢ;=z;=j>= 𚾤;=jȢ;=j>=YD= 𚾤;=j>= 霻=YD=j>=`A6G>;~3:3=>2ԗA4= AF    !"# !#&'$$%&*+(()*-./,-/123013567457:;889:>?<<=>BC@@ABEFGDEGIJKHIKNOLLMNRSPPQRUVWTUWYZ[XY[]^_\]_bc``abfgddefjkhhijmnolmoqrspqsvwttuvxyz{|}~0AVMtl02F  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEPA@ZpCylinder5AIAT^?.s<^?HC<?"<?<^?HC<^?0D;?D;?"<^?0D;^?Dzp?aN?D;^?Dzp^?ܼ??aN^?ܼ^? ;2?Wt#2޼?^? ;2^?<ܼ?<?Wt#2޼^?<ܼ^?G=]p?=aN?<^?G=]p^?0=D;?=D;?=aN^?0=D;^?D=C<?=-<?=D;^?D=C<^?<6s<?<<?=-<^?<6s<^? ;=?Wt#<?<<^? ;=^?.s<?<?Wt#<^?HC<^?.s<^?!D;^?0D;^?HC<^?!D;^?Dzp^?0D;^?!D;^?ܼ^?Dzp^?!D;^? ;2^?ܼ^?!D;^?<ܼ^? ;2^?!D;^?G=]p^?<ܼ^?!D;^?0=D;^?G=]p^?!D;^?D=C<^?0=D;^?!D;^?<6s<^?D=C<^?!D;^? ;=^?<6s<^?!D;^?.s<^? ;=^?!D;`A6&Z=3 s}">n3`?D; A$     # !!"#'$%%&'+())*+,-.,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl03$  !"#PA@pCylinder1AA$?<?"<?!D;?"<?D;?!D;?D;?aN?!D;?aN??!D;??Wt#2޼?!D;?Wt#2޼?<?!D;?<?=aN?!D;?=aN?=D;?!D;?=D;?=-<?!D;?=-<?<<?!D;?<<?Wt#<?!D;?Wt#<?<?!D;`A6&Z=3 s}">n3`?D; A    !"#0A'VMtl04  PA6@\pCylinder4A\AH)p?,<=?=)<)?=*<)?,<=?=)<?/= ձ<)?/=;)?=*<?/= ձ<?K>=幅:} ?qh=:)?/=;?K>=幅:?/=Qd)?/=} ?qh=:?/=Qd?==U)?==U)?/=?==U?,<)?,<)?==U?,<?o:)?o:)?,<?o:?#)?#)?o:?#?)=U)?)=U)?#?)=U?'Qd)?')?)=U?'Qd?%5幅:} ?J`:)?'?%5幅:?' ձ<)?';} ?J`:?' ձ<?))<)?)*<)?';?))<?#=)?#=)?)*<?#=?p: =)?p: =)?#=?p: =?,<=)?,<=)?p: =)?,<=)?=*<?=+<?,<=)?=*<)?/=;?/=;?=+<)?/=;} ?qh=:vr?C> :?/=;} ?qh=:)?/=?/=vr?C> :)?/=)?==U?==U?/=)?==U)?,<?,<?==U)?,<)?o:?o:?,<)?o:)?#?#?o:)?#)?)=U?):I1! =_;>:I :F?C>a :> =_;vr?C> :?/=> =F?C>a :?/=?==U>:I =?==U?,<>1!<4_>:Io:w>1!<4_?o:?#>}s4_>o:w?#?)缃yӼ>}s4_?)>缃yӼ?'vr?A :F?A` :>vr?A :?';>_;F?A` :?';?)+<>i=>_;?)+<?#=>}sE +=>i=?#=?p: =>p:8=>}sE +=?p: =?,<=>1!p:8=>1!:I:I1!:I =_;!-> =e;"->:I =_;F?C>a :!->-=:!-> =e;F?C>a :> =!-> =!->-=:> =>:I:I =>:I1!<4_!->1!<5_!->:I1!<4_>o:w!->o:u!->1!<5_>o:w>}s4_!->}s4_!->o:u>}s4_>缃yӼ!->缂yӼ!->}s4_>缃yӼ>!->!->缂yӼ>F?A` :!->%:!->F?A` :>_;!->e;!->%:>_;>i="->i=!->e;>i=>}sE +="->}sG +="->i=>}sE +=>p:8="->p:8="->}sG +=>p:8=>1!p:8="->1!:I =e;z> =;z>:I<<=!-> =e;!->-=:z>-=:z> =;!->-=:!-> =z> =ߩz>-=:!-> =!->:I:I<zܼz> =ߩ!->:I1!<5_z>1!<Uz>:I<zܼ!->1!<5_!->o:uz>o:i$z>1!<U!->o:u!->}s4_z>}s}Uz>o:i$!->}s4_!->缂yӼz>zܼz>}s}U!->缂yӼ!->z>ߩz>zܼ!->!->%:z>%:z>ߩ!->%:!->e;z>;z>%:!->e;"->i=z>缧<=z>;"->i="->}sG +=z>}sU==z>缧<="->}sG +="->p:8=z>o:GiK=z>}sU=="->p:8="->1!0!<U==z>o:GiK=z>0!<U==z>:I<<=+Nm>:I<<=,Nm>0!<U==z>:I<<=z> =;+Nm> =;+Nm>:I<<=z> =;z>-=:>>:+Nm> =;z>-=:z> =ߩ+Nm> =ީ>>:z> =ߩz>:I<zܼ*Nm>:I<zܼ+Nm> =ީz>:I<zܼz>1!<U*Nm>1!<U*Nm>:I<zܼz>1!<Uz>o:i$*Nm>o:i$*Nm>1!<Uz>o:i$z>}s}U*Nm>}s|U*Nm>o:i$z>}s}Uz>zܼ*Nm>zܼ*Nm>}s|Uz>zܼz>ߩ+Nm>ީ*Nm>zܼz>ߩz>%:>`:+Nm>ީz>%:z>;+Nm>;>`:z>;z>缧<=+Nm>缨<=+Nm>;z>缧<=z>}sU==,Nm>}sU==+Nm>缨<=z>}sU==z>o:GiK=,Nm>o:HiK=,Nm>}sU==z>o:GiK=z>0!<U==,Nm>0!<U==,Nm>o:HiK=,Nm>0!<U==+Nm>:I<<="V;=j1="V;<`=+Nm>:I<<=+Nm> =;T"V;I]1=;"V;=j1=+Nm> =;>>:KU>c>Z:T"V;I]1=;>>:+Nm> =ީD"V;I]1=jީKU>c>Z:+Nm> =ީ*Nm>:I<zܼ!"V;=BAD"V;I]1=jީ*Nm>:I<zܼ*Nm>1!<U"V;㻗<~3!"V;=BA*Nm>1!<U*Nm>o:i$"V;o:D"V;㻗<~3*Nm>o:i$*Nm>}s|U"V;X~3"V;o:D*Nm>}s|U*Nm>zܼ!"V;BA"V;X~3*Nm>zܼ+Nm>ީD"V; ,)jީ!"V;BA+Nm>ީ>`:KU>][:D"V; ,)jީ>`:+Nm>;T"V;",);KU>][:+Nm>;+Nm>缨<="V;j1=T"V;",);+Nm>缨<=,Nm>}sU=="V;Y`="V;j1=,Nm>}sU==,Nm>o:HiK="V;p:=q="V;Y`=,Nm>o:HiK=,Nm>0!<U=="V;<`="V;p:=q="V;<`="V;=j1=<5+=<_="V;=j1=T"V;I]1=;!#=;<5+=T"V;I]1=;KU>c>Z:'*>c>:!#=;KU>c>Z:D"V;I]1=jީ!#=Ha'*>c>:D"V;I]1=jީ!"V;=BA<!#=Ha!"V;=BA"V;㻗<~3oVoV"V;X~3!"V;BA9@RwdD!"V;BAD"V; ,)jީHa9@D"V; ,)jީKU>][:'*>]:HaKU>][:T"V;",);;'*>]:T"V;",);"V;j1=9@5+=;"V;j1="V;Y`=Rw_=9@5+="V;Y`="V;p:=q=p:q=Rw_="V;p:=q="V;<`=<_=p:q=<_=<5+=<6+=<_=<5+=!#=;!#=;<6+=!#=;'*>c>:^W=:!#=;'*>c>:!#=Ha!#=Aa^W=:!#=Ha<<!#=Aa<oVo:=oV<dDo:>oVRwdDRwdDo:=oVRwdD9@9@RwdD9@HaBa9@Ha'*>]:-O:Ba'*>]:;;-O:;9@5+=9@6+=;9@5+=Rw_=Rw_=9@6+=Rw_=p:q=p:q=Rw_=p:q=<_=<_=p:q=<_=<6+={`=H#={iB9{=f<dDo:=oV|o:^WJ|i<>B9o:=oVRwdD|W=B9|o:^WJRwdD9@{9f|W=B99@Ba{TN=+w{9fBa-O:{=Mϒ:{TN=+w-O:;{TN=H;{=Mϒ:;9@6+={H#={TN=H;9@6+=Rw_={WS={H#=Rw_=p:q={o:e={WS=p:q=<_={i=5< =8@={{E=I;{nU=ϒ: N=: >=5<{nU=ϒ:{{E=+w >=S N=:{{E=+w{=f = >=S{=f|i<>B9 ТB9|o:^WJ o:BT Т=5<ɤ!-=I<ɤ#x== >=5< N=:ɤ;=:ɤ!-=I< N=: >=Sɤ!-=oɤ;=: >=S =ɤ"x='ɤ!-=o = Т=幅:?/= ձ<?o:湅:?/=Qd?K>=幅:?o:湅:?==U?/=Qd?o:湅:?,<?==U?o:湅:?o:?,<?o:湅:?#?o:?o:湅:?)=U?#?o:湅:?'Qd?)=U?o:湅:?%5幅:?'Qd?o:湅:?' ձ<?%5幅:?o:湅:?))<?' ձ<?o:湅:?#=?))<?o:湅:?p: =?#=?o:湅:?,<=?p: =?o:湅:@ApP[>?֋a> v?0du>0v?S?o>?֋a> v?'f>wn?>pm?0du>0v?'f>wn?B}>j?PE>b?>pm?B}>j?>pl?ᵋ>l?PE>b?>pl?@>s?~>s?ᵋ>l?@>s?>~?3>Y~?~>s?>~?-#>)?>?3>Y~?-#>)?7O>f?ݞ>C?>?7O>f?u>1? >?ݞ>C?u>1?II>l?>͗? >?II>l?}>?:[>?>͗?}>?$w>|(?:>U?:[>?$w>|(?Ӈn>k?-'>m?:>U?Ӈn>k?eb>?Iv>ҏ?-'>m?eb>?s[>?o>ڈ?Iv>ҏ?s[>?P[>?S?o>?o>ڈ?S?o>?0du>0v?3>v?>D?0du>0v?>pm?ݒ>6v?>pm?PE>b?V>ݒ>6b?ᵋ>l?s>Zl?V>ᵋ>l?~>s?Ţ>qs?s>Zl?~>s?3>Y~?^>~?Ţ>qs?3>Y~?>?y>;?^>~?>?ݞ>C?ҩ>?y>;?ݞ>C? >?>?ҩ>? >?>͗?>ٳ?>?>͗?:[>?@=?>ٳ?:[>?:>U?>;?@=?:>U?-'>m?e>&S?>;?-'>m?Iv>ҏ?v>鷏?e>&S?Iv>ҏ?o>ڈ?d">?v>鷏?o>ڈ?S?o>?>D?d">?>D?3>v???!"u?>?ob?3>v?ݒ>66>>D?Pl?V>s>Zl?F?Bk?>>s>Zl?Ţ>qs?,K?q?F?Bk?Ţ>qs?^>~?yM?{?,K?q?^>~?y>;?4N??yM?{?y>;?ҩ>?N?i7?4N??ҩ>?>?pM?#ݏ?N?i7?>?>ٳ?I?`Z?pM?#ݏ?>ٳ?@=?_>?I?`Z?@=?>;?G?ܔ?_>?>;?e>&S?zB?o?G?ܔ?e>&S?v>鷏?2@?`?zB?o?v>鷏?d">?Χ>?6?2@?`?d">?>D?>?ob?Χ>?6?>?ob???!"u?}G?t?+lF?=C???!"u?D?Pl?GL?4l?}G?t?D?Pl?>>^/M?G>F?Bk?mYN?.vk?^/M?G?P?^?Q??G?ܔ?}O??P?^?G?ܔ?zB?o?P5J?P?}O??zB?o?2@?`?G?A?P5J?P?2@?`?Χ>?6?uF??G?A?Χ>?6?>?ob?+lF?=C?uF??+lF?=C?}G?t?u?Hr? ?LQ~?}G?t?GL?4l?d?i?u?Hr?GL?4l?^/M?G v?P[>?~>n?'f>wn?֋a> v?~>n?B}>j?'f>wn?~>n?>pl?B}>j?~>n?@>s?>pl?~>n?>~?@>s?~>n?-#>)?>~?~>n?7O>f?-#>)?~>n?u>1?7O>f?~>n?II>l?u>1?~>n?}>?II>l?~>n?$w>|(?}>?~>n?Ӈn>k?$w>|(?~>n?eb>?Ӈn>k?~>n?s[>?eb>?~>n?P[>?s[>?~>n?`A64V>_w4¾o:o:o: A      !" "#%&'$%')*+()+,-.,./23001245646789:8:;<=><>?@AB@BCDEFDFGIJKHIKNOLLMNPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfgijkhiknollmnpqrprstuvtvwxyzxz{|}~|~       "#  !"&'$$%&*+(()*-./,-/1230135674579:;89;>?<<=>@AB@BCDEFDFGIJKHIKNOLLMNPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfgijkhiknollmnpqrprstuvtvwxyzxz{|}~|~        !" "#$%&$&'()*(*+/,--./01202345646789:8:;<=><>?ABC@ACEFGDEGHIJHJKOLMMNORSPPQRVWTTUVZ[XXYZ]^_\]_abc`acefgdeghijhjkolmmnorsppqrvwttuvz{xxyz}~|}       # !!"#$%&$&'()*(*+/,--./301123456467;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinder3AAH /Og_ A0o:u0F9_ >_ o:0F90q̼_ hz_ >0q̼0CV_ l_ hz0CV0s:_ Xꧼ:_ l0s:0 w<_ e <_ Xꧼ:0 w  ;Ae $=@<<&,_ e,<>_ o: p:=z  ;Ae_ o:_ > ՒDe p:=z_ >_ hz x<&, ՒDe_ hz_ l m`U>K x<&,_ l_ Xꧼ: NOh:: m`U>K_ Xꧼ:_ e < m`U[; NOh::_ e <_ hx< xIL< m`U[;_ hx<_ < Ւ[< xIL<_ <_ o:< o:ہ< Ւ[<_ o:<_ e,<<  ;[< o:ہ<  ;[< &=@KĖ+tĖ+Rƺ/Y޺ m`U>K NOh::Ė+͒':Ė+t NOh:: m`U[;Ė+s.!;Ė+͒': m`U[; xIL<Ė+Rƺ)Er;Ė+s.!; xIL< Ւ[<Ė+pU9;Ė+Rƺ)Er; Ւ[< o:ہ<Ė+o:ٻ;Ė+pU9; o:ہ<  ;[<Ė+;9;Ė+o:ٻ;Ė+;9;Ė+_f;)Er;tCo:0:Ė+_f;)Er;Ė+qt;.!;tCo:0:Ė+qt;.!;Ė+R;:tCo:0:Ė+R;:Ė+rt;tCo:0:Ė+rt;Ė+_f;.Y޺tCo:0:Ė+_f;.Y޺Ė+;][%tCo:0:Ė+;][%Ė+o:!_8tCo:0:Ė+o:!_8Ė+pU[[%tCo:0:Ė+pU[[%Ė+Rƺ/Y޺tCo:0:Ė+Rƺ/Y޺Ė+ttCo:0:Ė+tĖ+͒':tCo:0:Ė+͒':Ė+s.!;tCo:0:Ė+s.!;Ė+Rƺ)Er;tCo:0:Ė+Rƺ)Er;Ė+pU9;tCo:0:Ė+pU9;Ė+o:ٻ;tCo:0:Ė+o:ٻ;Ė+;9;tCo:0:`A64V>_w4¾o:o:o: A=p    # !!"#$%&$&'()*(*+/,--./30112345646789:8:;?<==>?@AB@BCGDEEFGKHIIJKLMNLNOPQRPRSWTUUVW[XYYZ[\]^\^_`ab`bcgdeefgkhiijklmnlnopqrprswtuuvw{xyyz{|}~|~0AVMtl06p  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoPA@pPlane1_0GAA8\Ǽm<>uu>ǼfM>uu>+@=uu>+`A64=Du3P ޼ș>vu>pf A90AVMtl09PA@pPlane4_0GAA8H=uǼm<>uǼfM>u ,@=u ,`A64=Du3P ޼ș>upf A90AVMtl10PA@ MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &פg(:7!*I@T#;<5@"&??7? # # # #< #< #<0pSphere4_0@ &!*_u:k5"&???0$$$DUMMY@pSphere02 &Z4=!*I@"&G>l >4= # # # #< #< #<0pSphere5_0@ &<8/!*"&?l??0$$$DUMMY@pCylinder0 &`?D;!*I@"&&Z= s>}"> # # # #< #< #<0pCylinder5@ &!*"&???0 pCylinder1@ &!*"&???0 $$$DUMMY@pCylinder2 &!*?"&V>_?> # # # #< #< #<0 pCylinder4@  &!*"&???0 pCylinder3@  &!*"&???0 $$$DUMMY@pPlane01 &CX pfG!*?"&4=D>< # # # #< #< #<0pPlane1_0G@  &!*"&???0$$$DUMMY@pPlane02 &CX pfG=!*?"&4=D>< # # # #< #< #<0pPlane2_0G@ &!*"&???0$$$DUMMY@pPlane03 &ș>pfvu!*?"&4=D>< # # # #< #< #<0pPlane3_0G@ &!*"&???0$$$DUMMY@pPlane04 &ș>pfu>!*?"&4=D>< # # # #< #< #<0pPlane4_0G@ &!*"&???gl-117-1.3.2/models/gl-21b.3ds0000644000175000017500000015140110145416156014560 0ustar cedriccedricMM ==տ>= 02 - Standard  0 @0 A0P0R0S00 ?[0dGL-21B_D.TGAQS T ̌?V ̌?X z?Z > VMtl02   0 @0A0P0R0S00 ? VMtl03 FFF  FFF0 @0A0P0R0S00 ? VMtl04  0 @0A0P0R0S00 ?01 - Standard  0 @0 A0P0R0S00 ?G0dGL-21B_C.TGAQS T >V > VMtl06 FFF  FFF0 @0A0P0R0S00 ? VMtl08 FFF  FFF0 @0A0P0R0S00 ? VMtl09 FFF  FFF0 @0A0P0R0S00 ? VMtl10 FFF  FFF0 @0A0P0R0S00 ? VMtl11 FFF  FFF0 @0A0P0R0S00 ?01 - Standard1 EEE  EEE0 @0 A0P0R0S00 ? ?@)pSphere4_0AAX s?>=?2J==?A->S?T+>?2J==C>]=?Y>?A->C>]=> ^_=8?ů`>?Y>> ^_= >c=%^?O|>8?ů`> >c= Ƴ>PKg=:?ڪG>%^?O|> Ƴ>PKg=K>6h=j?T>:?ڪG>K>6h= ? ⼰H=?>j?T> ? ⼰H==?BuF=H?J/>?>=?BuF=?77TB=?}Ϭ>H?J/>?77TB=s?>=S?T+>?}Ϭ>?ռ<?:ʼl<.>=qe>ɠS6=*?$ռ7<,9>󉶼c=a>t𼻡9=>e>c!$6=C> =i]>ټ@={a>Bܖ9=E> ,=a>2üE=2]>0dڼ5?=D>3V=f>-[üE=iC>᷼ӥ=?1j =|e>"H=8>s=g?g/ =?x =.>䷼~=?峼=?H: =,>s:=?qʼ<?ZH=,>-=S?T+>?A->T ?dY>?A->?Y>T ?dY>?Y>8?ů`>T ?dY>8?ů`>%^?O|>T ?dY>%^?O|>:?ڪG>T ?dY>:?ڪG>j?T>T ?dY>j?T>?>T ?dY>?>H?J/>T ?dY>H?J/>?}Ϭ>T ?dY>?}Ϭ>S?T+>T ?dY>?2J==s?>=?:ʼl<?ռ=f>^M=.>=?:ʼl^M=?2J==?ռ<.>=C>]=?2J==*?$ռ7ɠS6=?2J==f>^M=,9>󉶼c=*?$ռ7^M=C>]=qe>ɠS6=,9>󉶼c=> ^_=C>]=>e>c!$6=a>t𼻡9=C>]=f>^M=C> =>e>c!$6=f>^M=> ^_=a>t𼻡9=C> = >c=> ^_={a>Bܖ9=i]>ټ@=> ^_=f>^M=E> ,={a>Bܖ9=f>^M= >c=i]>ټ@=E> ,= Ƴ>PKg= >c=2]>0dڼ5?=a>2üE= >c=f>^M=D>3V=2]>0dڼ5?=f>^M= Ƴ>PKg=a>2üE=D>3V=K>6h= Ƴ>PKg=a>üE=f>-[PKg=f>^M=iC>᷼ӥ=a>üE=f>^M=K>6h=f>-[᷼ӥ= ? ⼰H=K>6h=|e>"H=?1j =K>6h=f>^M=8>s=|e>"H=f>^M= ? ⼰H=?1j =8>s==?BuF= ? ⼰H=?x =g?g/ = ? ⼰H=f>^M=.>䷼~=?x =f>^M==?BuF=g?g/ =.>䷼~=?77TB==?BuF=?H: =?峼==?BuF=f>^M=,>s:=?H: =f>^M=?77TB=?峼=,>s:=s?>=?77TB=?ZH=?qʼ<?77TB=f>^M=,>-=?ZH=f>^M=s?>=?qʼ<,>-=@A@lx?&@?@ ?@p{?&@???2@?@ ???[#?ǘ?9b@M?2@?[#?ǘ??@J?^??34@m9?%@>?\?^?h@Rb?34@9?\?؞?@p{?@ ?=@O?@ ?2@?=@O?2@?9b@M?=@O?9b@M?)v@X?=@O?)v@X?b@?=@O?b@?2@|?=@O?2@|?h@v?=@O?h@v?Ǽ@k?=@O?Ǽ@k?֨@b?=@O?֨@b?@p{?=@O?&@?@lx?S@Rb?.@?@lx?l??^??S@Rb?l??&@?.@?^????&@?@x?`?W?&@?l??i??@x?l????`?W?i??[#?ǘ???Ǜ??XV?M???l??%u??Ǜ??l??[#?ǘ?XV?M?%u???&@k?l??^??@J?l??@$b?@>?^??@\?@$b?%@>?34@m9?@$b?l??\?^?%@>?l??@\?34@m9?\?^?@lx?@\?34@9?h@Rb?@\?l??\?؞?34@9?l??@lx?h@Rb?\?؞?`A6q?$g&谼 >]Z<<=_?S/?=;?W? Ad    !"# !#&'$$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcfgddefjkhhijlmnlnorsppqrwtuuvwyz{xy{|}~|~0A02 - Standardd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcPA@N pSphere5_0A= A0霻1m=1m=Gezj=枾=1m=31m=APžzj=Gezj=31m=X ɾ霻1m=4Ӿ=APžzj=X ɾ霻1m=t ̾e1m=XپZ/=4Ӿ=t ̾e1m=X ɾ;1m=4Ӿ<=XپZ/=X ɾ;1m=3;1m=APždj<=4Ӿ<=3;1m=;1m=Gedj<=APždj<=;1m=0;1m=枾<=Gedj<=0;1m=e1m="]Z/=枾<=e1m=0霻1m=枾="]Z/=枾=Gezj= t\d=dbA\d=Gezj=APžzj=Ⱦ t\d= t\d=APžzj=4Ӿ=۾bA\d=Ⱦ t\d=4Ӿ=XپZ/=P[\d=۾bA\d=XپZ/=4Ӿ<=۾bA<\d=P[\d=4Ӿ<=APždj<=Ⱦt<\d=۾bA<\d=APždj<=Gedj<=t<\d=Ⱦt<\d=Gedj<=枾<=dbA<\d=t<\d=枾<="]Z/=*[\d=dbA<\d="]Z/=枾=dbA\d=*[\d=dbA\d= t\d= ?[3l 4=?2ZR= AF    !"# !#&'$$%&*+(()*-./,-/123013567457:;889:>?<<=>BC@@ABEFGDEGIJKHIKNOLLMNRSPPQRUVWTUWYZ[XY[]^_\]_bc``abfgddefjkhhijmnolmoqrspqsvwttuvxyz{|}~0AVMtl02F  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEPA@ZpCylinder5AIAT^?.s<^?HC<?"<?<^?HC<^?0D;?D;?"<^?0D;^?Dzp?aN?D;^?Dzp^?ܼ??aN^?ܼ^? ;2?Wt#2޼?^? ;2^?<ܼ?<?Wt#2޼^?<ܼ^?G=]p?=aN?<^?G=]p^?0=D;?=D;?=aN^?0=D;^?D=C<?=-<?=D;^?D=C<^?<6s<?<<?=-<^?<6s<^? ;=?Wt#<?<<^? ;=^?.s<?<?Wt#<^?HC<^?.s<^?!D;^?0D;^?HC<^?!D;^?Dzp^?0D;^?!D;^?ܼ^?Dzp^?!D;^? ;2^?ܼ^?!D;^?<ܼ^? ;2^?!D;^?G=]p^?<ܼ^?!D;^?0=D;^?G=]p^?!D;^?D=C<^?0=D;^?!D;^?<6s<^?D=C<^?!D;^? ;=^?<6s<^?!D;^?.s<^? ;=^?!D;`A6&Z=3 s}">n3`?D; A$     # !!"#'$%%&'+())*+,-.,./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl03$  !"#PA@pCylinder1AA$?<?"<?!D;?"<?D;?!D;?D;?aN?!D;?aN??!D;??Wt#2޼?!D;?Wt#2޼?<?!D;?<?=aN?!D;?=aN?=D;?!D;?=D;?=-<?!D;?=-<?<<?!D;?<<?Wt#<?!D;?Wt#<?<?!D;`A6&Z=3 s}">n3`?D; A    !"#0A'VMtl04  PA6@\pCylinder4A\AH)p?,<=?=)<)?=*<)?,<=?=)<?/= ձ<)?/=;)?=*<?/= ձ<?K>=幅:} ?qh=:)?/=;?K>=幅:?/=Qd)?/=} ?qh=:?/=Qd?==U)?==U)?/=?==U?,<)?,<)?==U?,<?o:)?o:)?,<?o:?#)?#)?o:?#?)=U)?)=U)?#?)=U?'Qd)?')?)=U?'Qd?%5幅:} ?J`:)?'?%5幅:?' ձ<)?';} ?J`:?' ձ<?))<)?)*<)?';?))<?#=)?#=)?)*<?#=?p: =)?p: =)?#=?p: =?,<=)?,<=)?p: =)?,<=)?=*<?=+<?,<=)?=*<)?/=;?/=;?=+<)?/=;} ?qh=:vr?C>+?/=;} ?qh=:)?/=?/=vr?C>+)?/=)?==U?==U?/=)?==U)?,<?,<?==U)?,<)?o:?o:?,<)?o:)?#?#?o:)?#)?)=U?):I1! =_;>:I+F?C>+> =_;vr?C>+?/=> =F?C>+?/=?==U>:I =?==U?,<>1!<4_>:Io:w>1!<4_?o:?#>}s4_>o:w?#?)缃yӼ>}s4_?)>缃yӼ?'vr?A+F?A+>vr?A+?';>_;F?A+?';?)+<>i=>_;?)+<?#=>}sE +=>i=?#=?p: =>p:8=>}sE +=?p: =?,<=>1!p:8=>1!:I:I1!:I =_;!-> =e;"->:I =_;F?C>+!->-=:!-> =e;F?C>+> =!-> =!->-=:> =>:I:I =>:I1!<4_!->1!<5_!->:I1!<4_>o:w!->o:u!->1!<5_>o:w>}s4_!->}s4_!->o:u>}s4_>缃yӼ!->缂yӼ!->}s4_>缃yӼ>!->!->缂yӼ>F?A+!->%:!->F?A+>_;!->e;!->%:>_;>i="->i=!->e;>i=>}sE +="->}sG +="->i=>}sE +=>p:8="->p:8="->}sG +=>p:8=>1!p:8="->1!:I =e;>,u> =;?,u>:I<<=!-> =e;!->-=:>,u>-=:>,u> =;!->-=:!-> =>,u> =ߩ>,u>-=:!-> =!->:I,u>:I<zܼ>,u> =ߩ!->:I1!<5_=,u>1!<U>,u>:I<zܼ!->1!<5_!->o:u=,u>o:i$=,u>1!<U!->o:u!->}s4_=,u>}s|U=,u>o:i$!->}s4_!->缂yӼ>,u>zܼ=,u>}s|U!->缂yӼ!->>,u>ߩ>,u>zܼ!->!->%:>,u>%:>,u>ߩ!->%:!->e;>,u>;>,u>%:!->e;"->i=?,u>缧<=>,u>;"->i="->}sG +=?,u>}sU==?,u>缧<="->}sG +="->p:8=?,u>o:HiK=?,u>}sU=="->p:8="->1!0!<U==?,u>o:HiK=?,u>0!<U==?,u>:I<<=g>:I<<=g>0!<U==?,u>:I<<=>,u> =;g> =;g>:I<<=>,u> =;>,u>-=:>!>:g> =;>,u>-=:>,u> =ߩg> =ީ>!>:>,u> =ߩ>,u>:I<zܼg>:I<zܼg> =ީ>,u>:I<zܼ=,u>1!<Ug>1!<Ug>:I<zܼ=,u>1!<U=,u>o:i$g>o:i$g>1!<U=,u>o:i$=,u>}s|Ug>}s{Ug>o:i$=,u>}s|U>,u>zܼg>zܼg>}s{U>,u>zܼ>,u>ߩg>ީg>zܼ>,u>ߩ>,u>%:>`.g>ީ>,u>%:>,u>;g>;>`.>,u>;?,u>缧<=g>缨<=g>;?,u>缧<=?,u>}sU==g>}sU==g>缨<=?,u>}sU==?,u>o:HiK=g>o:JiK=g>}sU==?,u>o:HiK=?,u>0!<U==g>0!<U==g>o:JiK=g>0!<U==g>:I<<=<=j1=<<`=g>:I<<=g> =; =;>!>:n>>:!>:g> =ީ>:g> =ީg>:I<zܼ<=DA:I<zܼg>1!<U<㻗<~3<=DAg>1!<Ug>o:i$o:i$g>}s{U}s{Ug>zܼ<DAzܼg>ީ< ,)xީ<DAg>ީ>`.n>-< ,)xީ>`.g>;<",)s;n>-g>;g>缨<=<j1=<",)s;g>缨<=g>}sU==}sU==g>o:JiK=o:JiK=g>0!<U==<<`=>:` =x>:f!#=;n>>::-` =T曾-fean>-<",)s;f;` =T曾-<",)s;<j1=f9@0+=f;<j1=:U]^W=:gq!#=;` =x>:f!#=fagq!#=^aU]^W=:f!#=faf<hq<gq!#=^af<f=幅:?/= ձ<?o:湅:?/=Qd?K>=幅:?o:湅:?==U?/=Qd?o:湅:?,<?==U?o:湅:?o:?,<?o:湅:?#?o:?o:湅:?)=U?#?o:湅:?'Qd?)=U?o:湅:?%5幅:?'Qd?o:湅:?' ձ<?%5幅:?o:湅:?))<?' ձ<?o:湅:?#=?))<?o:湅:?p: =?#=?o:湅:?,<=?p: =?o:湅:@Ap7@0?7@$ ?|@$ ?|@0?7@$ ?7@6:?|@6:?|@$ ?7@6:?7@/?@??|@6:?7@/?7@6:?|@6:?@??7@6:?7@$ ?|@$ ?|@6:?7@$ ?7@0?|@0?|@$ ?7@0?7@@|@@|@0?7@@7@h!@|@h!@|@@7@h!@7@z @|@z @|@h!@7@z @7@b @|@b @|@z @7@b @7@0h @@~@|@b @7@0h @7@b @|@b @@~@7@b @7@z @|@z @|@b @7@z @7@h!@|@h!@|@z @7@h!@7@@|@@|@h!@7@@7@0?|@0?|@@|@0?|@$ ?}!@$ ?}!@0?|@$ ?|@6:?}!@6:?}!@$ ?|@6:?@??@Ȕ?}!@6:?@??|@6:?}!@6:?@Ȕ?|@6:?|@$ ?}!@$ ?}!@6:?|@$ ?|@0?}!@0?}!@$ ?|@0?|@@}!@@}!@0?|@@|@h!@}!@h!@}!@@|@h!@|@z @}!@z @}!@h!@|@z @|@b @}!@b @}!@z @|@b @@~@@58@}!@b @@~@|@b @}!@b @@58@|@b @|@z @}!@z @}!@b @|@z @|@h!@}!@h!@}!@z @|@h!@|@@}!@@}!@h!@|@@|@0?}!@0?}!@@}!@0?}!@$ ?oea@ٰ?oea@?}!@$ ?}!@6:?oea@kb?oea@ٰ?}!@6:?@Ȕ?(c@Ȕ?oea@kb?@Ȕ?}!@6:?oea@kb?(c@Ȕ?}!@6:?}!@$ ?oea@ٰ?oea@kb?}!@$ ?}!@0?oea@?oea@ٰ?}!@0?}!@@oea@@oea@?}!@@}!@h!@oea@ @oea@@}!@h!@}!@z @oea@@oea@ @}!@z @}!@b @oea@N @oea@@}!@b @@58@(c@58@oea@N @@58@}!@b @oea@N @(c@58@}!@b @}!@z @oea@@oea@N @}!@z @}!@h!@oea@ @oea@@}!@h!@}!@@oea@@oea@ @}!@@}!@0?oea@?oea@@oea@?oea@ٰ?;_@ٰ?;_@?oea@ٰ?oea@kb?;_@kb?;_@ٰ?oea@kb?(c@Ȕ?;_@Q?;_@kb?(c@Ȕ?oea@kb?;_@kb?;_@Q?oea@kb?oea@ٰ?;_@ٰ?;_@kb?oea@ٰ?oea@?;_@?;_@ٰ?oea@?oea@@;_@@;_@?oea@@oea@ @;_@ @;_@@oea@ @oea@@;_@@;_@ @oea@@oea@N @;_@N @;_@@oea@N @(c@58@;_@G= @;_@N @(c@58@oea@N @;_@N @;_@G= @oea@N @oea@@;_@@;_@N @oea@@oea@ @;_@ @;_@@oea@ @oea@@;_@@;_@ @oea@@oea@?;_@?;_@@;_@?;_@ٰ?k'B@ٰ?k'B@?;_@ٰ?;_@kb?k'B@kb?k'B@ٰ?;_@kb?;_@Q?k'B@Q?k'B@kb?;_@Q?;_@kb?k'B@kb?k'B@Q?;_@kb?;_@ٰ?k'B@ٰ?k'B@kb?;_@ٰ?;_@?k'B@?k'B@ٰ?;_@?;_@@k'B@@k'B@?;_@@;_@ @k'B@ @k'B@@;_@ @;_@@k'B@@k'B@ @;_@@;_@N @k'B@N @k'B@@;_@N @;_@G= @k'B@G= @k'B@N @;_@G= @;_@N @k'B@N @k'B@G= @;_@N @;_@@k'B@@k'B@N @;_@@;_@ @k'B@ @k'B@@;_@ @;_@@k'B@@k'B@ @;_@@;_@?k'B@?k'B@@k'B@?k'B@ٰ?2?@ٰ?2?@?k'B@ٰ?k'B@kb?2?@kb?2?@ٰ?k'B@kb?k'B@Q?J@Ͽ-?2?@kb?k'B@Q?k'B@kb?2?@kb?J@Ͽ-?k'B@kb?k'B@ٰ?2?@ٰ?2?@kb?k'B@ٰ?k'B@?2?@?2?@ٰ?k'B@?k'B@@2?@@2?@?k'B@@k'B@ @2?@ @2?@@k'B@ @k'B@@2?@@2?@ @k'B@@k'B@N @2?@N @2?@@k'B@N @k'B@G= @J@ T@2?@N @k'B@G= @k'B@N @2?@N @J@ T@k'B@N @k'B@@2?@@2?@N @k'B@@k'B@ @2?@ @2?@@k'B@ @k'B@@2?@@2?@ @k'B@@k'B@?2?@?2?@@2?@?2?@ٰ?@?@Ʀ?2?@ٰ?2?@kb?@W?@?2?@kb?J@Ͽ-?Y@@B>@W?J@Ͽ-?2?@kb?@W?Y@@B>2?@kb?2?@ٰ?@?@W?2?@ٰ?2?@?@Ʀ?@?2?@?2?@@@@@Ʀ?2?@@2?@ @@,@@@2?@ @2?@@@ @@,@2?@@2?@N @@} @@ @2?@N @J@ T@Y@@d@@} @J@ T@2?@N @@} @Y@@d@2?@N @2?@@@ @@} @2?@@2?@ @@,@@ @2?@ @2?@@@@@,@2?@@2?@?@Ʀ?@@@Ʀ?@??r??|?@?@W????r?@W?Y@@B>'@ (???Y@@B>@W???'@ (?@W?@??r???@?@Ʀ??Z??r?@Ʀ?@@?@?Z?@@@,@?¿@?@@,@@ @?@?¿@@ @@} @?)w @?@@} @Y@@d@'@5Z@?)w @Y@@d@@} @?)w @'@5Z@@} @@ @?@?)w @@ @@,@?¿@?@@,@@@?@?¿@@@@Ʀ??|??@?|??r??r??|??r??????r???'@ (??Y???'@ (??????Y????r??r????r??Z??Z??r??Z??@?@?Z??@?¿@?¿@?@?¿@?@?@?¿@?@?)w @?)w @?@?)w @'@5Z@?C;@?)w @'@5Z@?)w @?)w @?C;@?)w @?@?@?)w @?@?¿@?¿@?@?¿@?@?@?¿@?@?|??|??@?|??r?x?"?x?s??r???x?*?x?"????Y?x??x?*??Y???x?*?x?????r?x?"?x?*??r??Z?x?s?x?"??Z??@x?@x?s??@?¿@x?~@x?@?¿@?@x? @x?~@?@?)w @x?k @x? @?)w @?C;@x?@x?k @?C;@?)w @x?k @x?@?)w @?@x? @x?k @?@?¿@x?~@x? @?¿@?@x?@x?~@?@?|?x?s?x?@x?s?x?"?z2?8?z2??x?"?x?*?z2?P?z2?8?x?*?x??z2?.r?z2?P?x??x?*?z2?P?z2?.r?x?*?x?"?z2?8?z2?P?x?"?x?s?z2??z2?8?x?s?x?@z2?@z2??x?@x?~@z2?@z2?@x?~@x? @z2?d@z2?@x? @x?k @z2?W @z2?d@x?k @x?@z2?F @z2?W @x?@x?k @z2?W @z2?F @x?k @x? @z2?d@z2?W @x? @x?~@z2?@z2?d@x?~@x?@z2?@z2?@x?@x?s?z2??z2?@z2??z2?8?>F?>t}?z2?8?z2?P?>t?>F?z2?P?z2?.r?>H?>t?z2?.r?z2?P?>t?>H?z2?P?z2?8?>F?>t?z2?8?z2??>t}?>F?z2??z2?@>@>t}?z2?@z2?@>FA@>@z2?@z2?d@>@>FA@z2?d@z2?W @>E @>@z2?W @z2?F @>\ @>E @z2?F @z2?W @>E @>\ @z2?W @z2?d@>@>E @z2?d@z2?@>FA@>@z2?@z2?@>@>FA@z2?@z2??>t}?>@>t}?>F?('>?('>z?>F?>t?('>Q?('>?>t?>H?('>SY?('>Q?>H?>t?('>Q?('>SY?>t?>F?('>?('>Q?>F?>t}?('>z?('>?>t}?>@('>@('>z?>@>FA@('>@('>@>FA@>@('>@('>@>@>E @('> @('>@>E @>\ @('>V @('> @>\ @>E @('> @('>V @>E @>@('>@('> @>@>FA@('>@('>@>FA@>@('>@('>@>@>t}?('>z?('>@7@$ ?7@0?7@@7@6:?7@$ ?7@@7@/?7@6:?7@@7@6:?7@/?7@@7@$ ?7@6:?7@@7@0?7@$ ?7@@7@@7@0?7@@7@h!@7@@7@@7@z @7@h!@7@@7@b @7@z @7@@7@0h @7@b @7@@7@b @7@0h @7@@7@z @7@b @7@@7@h!@7@z @7@@7@@7@h!@7@@7@0?7@@7@@`A64V>_w4¾o:o:o: A      !" "#%&'$%')*+()+,-.,./23001245646789:8:;<=><>?@AB@BCDEFDFGIJKHIKNOLLMNPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfgijkhiknollmnpqrprstuvtvwxyzxz{|}~|~       "#  !"&'$$%&*+(()*-./,-/1230135674579:;89;>?<<=>@AB@BCDEFDFGIJKHIKNOLLMNPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfgijkhiknollmnpqrprstuvtvwxyzxz{|}~|~        !" "#$%&$&'()*(*+/,--./01202345646789:8:;<=><>?ABC@ACEFGDEGHIJHJKOLMMNORSPPQRVWTTUVZ[XXYZ]^_\]_abc`acefgdeghijhjkolmmnorsppqrvwttuvz{xxyz}~|}         !" "#$%&$&'*+(()*./,,-.01202345646789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinder3AAH aВ(m&G5T-+-TI1am&gfm&>В(TI1aT?A"m& m&gfT?A"TI1ZCm&h躹ǻm& TI1ZCT-l;m&>ВEm&h躹ǻT-l;TZp;m&A;.m&>ВETZp;To:В(f6p:m&>В(m&gff6p:m&gfm& f6p:m& m&h躹ǻf6p:m&h躹ǻm&>ВEf6p:m&>ВEm&A;.f6p:m&A;.m&p:Xuf6p:m&p:Xum& ;;.f6p:`A64V>_w4¾o:o:o: A=p      !" "#$%&$&'()*(*+,-.,./01202345646789:8:;?<==>?C@AABCGDEEFGKHIIJKOLMMNOPQRPRSTUVTVWXYZXZ[_\]]^_c`aabcgdeefghijhjklmnlnopqrprstuvtvwxyzxz{|}}~0AVMtl06p  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoPA@)pSphere6_0AAX c?c?F5=Ng>H?A]2 ? =y>:R>2 ?=C>i̳><=k= [?!=L>7?Ķ=>><=k=GƳ>=!f=5?J~=E{> [?!=L>GƳ>=!f=H>g =d=P?ô=>5?J~=E{>H>g =d=?t=82D=?4=>P?ô=>?t=82D=>?}<]E=.? =1>?4=>>?}<]E=?.? =1>??:=ɑ>?<>=?k<4=A6>(<7=f>ȧS<=a>q9y%[+<,J=a>NL<sP=L>ry<$:J=L>yD<?=a>_<,C=AK>V<=?<=Ue>S<=t?'< =?a<P=4>U{<=?C< $=e?G< =4><<=c?F5=Ng>? =y>R ?-=1>? =y>?=C>R ?-=1>?=C>7?Ķ=>R ?-=1>7?Ķ=> [?!=L>R ?-=1> [?!=L>5?J~=E{>R ?-=1>5?J~=E{>P?ô=>R ?-=1>P?ô=>?4=>R ?-=1>?4=>.? =1>R ?-=1>.? =1>?:=ɑ>R ?-=1>?:=ɑ>c?F5=Ng>R ?-=1>H?A]=c?Y<)3U=A6>(<7=?k<4=l>Y<)3U=H?A]=A6>(<7=:R>2 ȧY<)3U=r@>S<=? M<=l>Y<)3U=:R>2 ȧS<=i̳>2 9q2 Y<)3U=K>y%9Y<)3U=i̳>qy%<=k=i̳>NL<sP=]>[+<,J=i̳>Y<)3U=L>rNL<sP=l>Y<)3U=><=k=]>[+<,J=L>r=!f=><=k=]><$:J=a>y<=k=l>Y<)3U=L>y<$:J=l>Y<)3U=GƳ>=!f=a>yyg =d=GƳ>=!f=a>_<,C=f>D<?=GƳ>=!f=l>Y<)3U=AK>V<=a>_<,C=l>Y<)3U=H>g =d=f>D<?=AK>V<=?t=82D=H>g =d=Ue>g =d=l>Y<)3U=@>YݤY<)3U=?t=82D=?<=@>Yݤ?}<]E=?t=82D=m?<l=?Kk<]=?t=82D=l>Y<)3U=r6>S<=m?<l=l>Y<)3U=>?}<]E=?Kk<]=r6>S<=??}<]E=?a<P=t?'< =>?}<]E=l>Y<)3U=4>U{<=?a<P=l>Y<)3U=?U{<=c?Y<)3U=4><<=e?G< =l>Y<)3U=c?<<=@A@lx?&@?@ ?@p{?&@???2@?@ ???[#?ǘ?9b@M?2@?[#?ǘ??@J?^??34@m9?%@>?\?^?h@Rb?34@9?\?؞?@p{?@ ?=@O?@ ?2@?=@O?2@?9b@M?=@O?9b@M?)v@X?=@O?)v@X?b@?=@O?b@?2@|?=@O?2@|?h@v?=@O?h@v?Ǽ@k?=@O?Ǽ@k?֨@b?=@O?֨@b?@p{?=@O?&@?@lx?S@Rb?.@?@lx?l??^??S@Rb?l??&@?.@?^????&@?@x?`?W?&@?l??i??@x?l????`?W?i??[#?ǘ???Ǜ??XV?M???l??%u??Ǜ??l??[#?ǘ?XV?M?%u???&@k?l??^??@J?l??@$b?@>?^??@\?@$b?%@>?34@m9?@$b?l??\?^?%@>?l??@\?34@m9?\?^?@lx?@\?34@9?h@Rb?@\?l??\?؞?34@9?l??@lx?h@Rb?\?؞?`A6q?2f5&谼 ]\<9_?V/' =?, Ad    !"# !#&'$$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcfgddefjkhhijlmnlnorsppqrwtuuvwyz{xy{|}~|~0A02 - Standardd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcPA@pPlane1_0GAA8ow=>M>>Mt0>> F=> `A6v >v aT.36YXr=>U A90AVMtl08PA@pPlane2_0GAA8NjT>M2L=>MZu=> ;> `A6v >v aT.36Y:<>U A90AVMtl09PA@pPlane3_0GAA8NjTM2L=MZu= ; `A6v >v aT.36Y:<U A90AVMtl10PA@pPlane4_0GAA8ow=M>Mt0> F= `A6v >v aT.36YXr=U A90AVMtl11PA@Quader01AqAh:>9=L >q?9=L >:>9=>q?9=>:>=L >q?=L >:>=>q?=>`A6??\>9=T> A 0A/01 - Standard1  PA6 @@@Quader02AqAh:>9ȽL >q?9ȽL >:>9Ƚ>q?9Ƚ>:>VL >q?VL >:>V⽔>q?V⽔>`A6??\>9ȽT> A 0A/01 - Standard1  PA6 @@ MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &=W?;߿!*j@kX#;<H"&r??7? # # # #< #< #<0pSphere4_0@ &!*"&???0$$$DUMMY@pSphere02 &ZR=!*I@"&G>l >4= # # # #< #< #<0pSphere5_0@ &!*"&???0$$$DUMMY@pCylinder0 &`?D;!*I@"&&Z= s>}"> # # # #< #< #<0pCylinder5@ &!*"&???0 pCylinder1@ &!*"&???0 $$$DUMMY@pCylinder2 &!*?"&V>_?> # # # #< #< #<0 pCylinder4@  &!*"&???0 pCylinder3@  &!*"&???0 $$$DUMMY@pSphere03 &' =,߿!*ʍ'@kX#;<H;"&r??7? # # # #< #< #<0pSphere6_0@  &!*"&???0$$$DUMMY@pPlane01 &Xr=U!*?"&v >v >< # # # #< #< #<0pPlane1_0G@ &!*"&???0$$$DUMMY@pPlane02 &:<U!*?"&v >v >< # # # #< #< #<0pPlane2_0G@ &!*"&???0$$$DUMMY@pPlane03 &:<U>!*?"&v >v >< # # # #< #< #<0pPlane3_0G@ &!*"&???0$$$DUMMY@pPlane04 &Xr=U>!*?"&v >v >< # # # #< #< #<0pPlane4_0G@ &!*"&???0Quader01@ &\>9=T>!*?"&???0Quader02@ &\>9ȽT>!*?"&???gl-117-1.3.2/models/gl-29.3ds0000644000175000017500000021454410145416156014436 0ustar cedriccedricMMd == >=  VMtl01 fff  fff0 @0A0P0R0S00 ?30dGL-29_CH.RGBQS VMtl02   0 @0A0P0R0S00 ? VMtl03  0 @0A0P0R0S00 ? VMtl04 GGG  GGG0 @0A0P0R0S00 ? VMtl05 GGG  GGG0 @0A0P0R0S00 ? VMtl06 GGG  GGG0 @0A0P0R0S00 ? VMtl07 GGG  GGG0 @0A0P0R0S00 ? VMtl08 GGG  GGG0 @0A0P0R0S00 ? ?@ICP_0Geo*0AAn9 ?g=k?sa=YK?s1К>?g=YK?s1К>h?bS;=YK?s1К>k?sa=K?29/½>K?29/½>h?bS;=YK?s1К>/O?1o2˞>K?29/½>YK?s1К>k?sa=)?[;L=K?29/½>2?K?29/½>)?[;L=R?ݻ>R?ݻ>/O?1o2˞>K?29/½>R?0:>2?/O?1o2˞>R?0:>K?29/½>)?[;L=#?T\T=R?ݻ>R?ݻ>#?T\T=V?ݻd>V?ݻd>U? <ޠ>R?ݻ>R?ݻ>U? <ޠ>/O?1o2˞>#?F1<7L=2?V?(:a>#?F1<7L=R?0:>R?0:>U? <ޠ>V?(:a>R?0:>/O?1o2˞>U? <ޠ>#?T\T=J?uW==V?ݻd>V?ݻd>J?uW==Kf?Nj3š>Kf?Nj3š>U? <ޠ>V?ݻd>J?uW==#?F1<7L=V?(:a>Kf?Nj3š>J?uW==V?(:a>V?(:a>U? <ޠ>Kf?Nj3š>[:?`]=; PJS<JSkv;I?><<<<kv;g:?U]=Sc;[:?`]=; PJS">;a:?P>JS<|>">;t:?7>kv;a:?P>JS< >B=>1ft:?7>kv;|>">; >/>1;J0?;>P|>">;|>">;l>k8>;>=~;|>">;b*?>>:l>k8>;|>">;J0?;>Pb*?>>:>=~;|>">;v?=` <?=d<t:?7>kv; >B=>1f >B=>1f>H8> >/>1; >B=>1f+70? ?>?&>H8>>L>q}(+?=>m\ >B=>1f(+?=>m\+70? ?>?& >B=>1ft:?7>kv;?=d<g:?U]=Sc; >/>1;>H8> >L(>^ɼ >L(>^ɼp5?=>5]^ >/>1;>H8>p5?=>5]^ >L(>^ɼ >/>1;p5?=>5]^J0?;>P>H8>+70? ?>?&p5?=>5]^X:?\lfdII;h?aI;W:?+| I*EI;e:?$[ Y<;!>3&nte:?$[ Y<;?_ݬ!>3&nt> >RIzv!>3&nt?_ݬe:?$[ Y<;h:?xlO;h:?xlO;e:?$[ Y<;I?{ a:м >RIzv> >=~;l>k8>;0PI>z=md;l>k8>;8>E>rx0PI>z=md;l>k8>;?#>Zk88>E>rxl>k8>;b*?>>:?#>Zk80PI>z=md;8>E>rx>5=8>E>rx/ >(:K>]v>5=8>E>rxO{ ?>/ >(:K>]v8>E>rx?#>Zk8O{ ?>=c=>5=/ >(:K>]vO{ ?>6 ?>*/ >(:K>]v6 ?>*'a>L>C/ >(:K>]v=c='a>L>C/ >(:K>]v'a>L>C=c=`=h=ε`=h=εj>@?L>󞼼'a>L>C_==-j>@?L>󞼼`=h=ε_==-_:=4=gj>@?L>󞼼_:=4=gK!>HBK>׼j>@?L>󞼼_:=4=g==>K!>HBK>׼==> 1>2G>E.K!>HBK>׼ xY>m9=)y>#5> 1>2G>E.==> xY>m9=) 1>2G>E.p>=vμ>L>q}y>#5> xY>m9=)p>=vμy>#5>>L>q}p>=vμ >B=>1f?=d< >B=>1fp>=vμh?a<>[;#O>I;#O>I;>[;ll>);uc;%I>䨱c;ll>);uc;>[;,8>Gll>);uc;%I>䨱c;>I`,8>G%I>䨱c;I >M,8>G>I`X =ŽoI >M>I` >N՞I >MX =Žo4=ƽ- >N՞X =Žo (>N Ƽ >N՞4=ƽ-`=|ƽ (>N Ƽ4=ƽ-r=؍Ž (>N Ƽ`=|ƽ (>N Ƽr=؍Ž= >̯M =Tr=؍Ž= >̯M j1>ƸI~ =T= >̯M =T j1>ƸI~NY>.;fy>'8Z7NY>. j1>ƸI~ j1>ƸI~ ?fO;fy>'8Z7 j1>ƸI~Te ? ?fO j1>ƸI~= >̯MTe ?NY>.;fy>'8Z7g>g:&Ҽ >̏g>g:&Ҽ;fy>'8Z7;fy>'8Z7켉 ?lI >̏;fy>'8Z7 ?fO ?lI >̏!>3&ntg>g:&Ҽ!>3&nt?_ݬg>g:&Ҽ >̏*?P~;!>3&nt >̏ ?lI*?P~;!>3&nt*?P~;0?d{T!>3&nt0?d{T> ,?(> -?)>hW1?5>?&,?(> 1?5>hWJ0?;>P1?5>Pp5?=>5]^p5?=>5]^+70? ?>?&1?5> {'?{>~ -?)>hW(+?=>m\{'?{>~ ,?(> +70? ?>?&(+?=>m\,?(> -?)>hWm'?}>,|:b*?>>:-?)>hWb*?>>:J0?;>P{'?{>~ (+?=>m\y ? M>&_y>#5>!?>_y ? M>&_>L>q}y>#5>y ? M>&_y ? M>&_(+?=>m\>L>q}?#>Zk8b*?>>:m'?}>,|: 1>2G>E.N ?$>!?>_y>#5> 1>2G>E.!?>_K!>HBK>׼^ ?>/N ?$> 1>2G>E.K!>HBK>׼N ?$>j>@?L>󞼼2C ? >ٞh^ ?>/K!>HBK>׼j>@?L>󞼼^ ?>/'a>L>CA ?>>J2C ? >ٞhj>@?L>󞼼'a>L>C2C ? >ٞh'a>L>C6 ?>*A ?>>J1?ZDw,?kP,?ɻ,?ɻ z0?b~:ǻ1?ZD1?ZD0?d{Tw,?kP z0?b~:ǻC5?^~1?ZDC5?^~0?d{T1?ZD,?ɻw,?kPP'?^9P'?^9 ?lI,?ɻ,?ɻ C ?B'?֢vB'?֢v*?V`ۺ,?ɻ ?lI C ?,?ɻ*?V`ۺ z0?b~:ǻ,?ɻw,?kP*?P~;P'?^90?d{T*?P~;w,?kP*?P~; ?lIP'?^9B'?֢v C ?Gm?xEB'?֢vGm?xE*?V`ۺ C ?,8>GGm?xEGm?xEll>);uc;*?V`ۺ,8>Gll>);uc;Gm?xE ?lI ? C ? C ? ? ?Z ?ZI >M C ?I >M,8>G C ? ?lI ?fO ? ?Z ? ? ~z ? ~z >N՞ ?Z >N՞I >M ?Z ? ~z ?I ?+I ?+ >N՞ ? ~z ? (>N ƼI ?+ (>N Ƽ >N՞I ?+ ?fOTe ? ?Te ?= >̯M ?= >̯M (>N Ƽ ?ll>);uc;#O>I;*?V`ۺ#O>I; z0?b~:ǻ*?V`ۺ#O>I; >RIzv z0?b~:ǻ z0?b~:ǻ >RIzvC5?^~ >RIzv>a:мC5?^~C5?^~> 0?d{T߼р\ rPy潠,ר.~G9Vc̀{ٻ߼р\ ר.~G9ר.~G9dڽxr>Vc̀{ٻ߼р\ ?v.~GIrPy潠,$_Ȁ?v.~GI߼р\ Vc̀{ٻdڽxr><Ԁdڽxr>0Ĺ潣*<Ԁ<Ԁ0Ĺ潣*L=Ԁ 80Ĺ潣*Gr=̀.=һL=Ԁ 80Ĺ潣*␪.-V=y=1!.-V=Rܼ">廡;K>*};K>*}!&ڽ[=.-V=ꋑ<,>!&ڽ[=;K>*}ꋑ<,>\?/=Er!&ڽ[=Jc=:>\?/=Erꋑ<,>t=->t=->\?/=Ert=->q.=<ػq.=t=->ꋑ<,>;K>*}Jc=:>;K>*}t=->Jc=:>Rܼ">y=1!Q\.x=?G4> Rܼ">Q\.x=?Q\.x=?hٽ|1=^;G4> Rܼ">G4> ;K>*}G4> hٽ|1=^;M<(>;{hٽ|1=^;q.=M<(>;{M<(>;{q.=F= ><ػF= ><ػt=->;K>*}M<(>;{F= ><ػ;K>*}G4> M<(>;{;K>*}> C5?^~>a:мšnp%;# >ԭn1 >=zzoPה3h>zXX X0 t=|VC?3="?8=[WC?>t=vS 5=bD=5=c=[WC?>t=[WC?>t=šnp%;# >vS 5=bD=|VC?3=šnp%;# >[WC?>t=ݮۻ ,>잼;D>礿잼;D>ݮۻ ,>󬼾ػ>礿ꓼLh󬼾ػ>ߥyx=ݮۻ ,>ߥyx=-ϓ*=ⅼ?<=-ϓ*=ߥyx=-ϓ*=ⅼ?<=U=󊿾 L<8,=rNt=,|=샼<\8=󊿾 L<8,=ff==rNt=,|=l3G%=U=ⅼ?<=U=l3G%=dl=ff==M4,={=rNt=,|=ff==D.,=f=M4,={=I3=dl=l3G%=dl=I3=G.3`=D.,=f=45=&=M4,={=D.,=f=*5=s|=45=&=,>8=G.3`=I3=G.3`=,>8=1Ug=b=*5=s|=O6=D=45=&=*5=s|=z6=q=O6=D=#c==1Ug=b=,>8=1Ug=b=#c== B{=\<=z6=q=#c==O6=D=z6=q= B{=\<=#c==z6=q=ξ46== B{=\<=z6=q=ܾ5.[=0z=ξ46==z6=q=򶒾B5=3ܠ=ܾ5.[=0z=#c==Q>?8=O6=D=O6=D=Q>?8=5=c= B{=\<=uپ3z=;W=7= B{=\<=ξ46==uپ3z= B{=\<=;W=7=پobhx= B{=\<=پobhx= > =CC=;LL=˻Vx=˻Vx= X-=CC=zܗ=|=CC=CC= H=zܗ=|=͡}x5=X=vS 5=bD=y[5 =ԭn1 >|VC?3=|VC?3=ԭn1 >šnp%;# >ur=ԭn1 >y[5 =Ar/?4>ԭn1 >ur=Ar/?4>oPה3h>ԭn1 >o4<|>}x5=X=šnp%;# >6r<->}x5=X=o4<|>ul={=}x5=X=6r<->yy+=Ot=}x5=X=ul={=|&7OoH#=s#8<Y=w'7;x#=|&7OoH#=p!7Y}n=s#8<Y=w'7;x#=|#;Y=p7KO_J3b̸)=oby>Jپobhx=v\= L(\='~E8?=?ϼb5|R+CޟҼoby>J8?=?ϼܽ;=Ӽ~<={8?=?ϼ(\='~Eܽ;=Ӽ+CޟҼkg r нKAAԼнKAAԼoby>J+CޟҼ~<={?`<_zJzKdA=zKdA= > =پobhx=ܾ5.[=0z=[=A=(\='~Eܾ5.[=0z=򶒾B5=3ܠ=[=A=(\='~E흑G[=>Jܽ;=Ӽ(\='~E[=A=흑G[=>Joby>JнKAAԼߜ!bOߜ!bOzKdA=oby>Jܽ;=Ӽym==oҼ̽=t ܽ;=Ӽ흑G[=>Jym==oҼнKAAԼ⾽ $7 oxCӼoxCӼߜ!bOнKAAԼ̽=t W= ?`<_̽=t ym==oҼW= ⾽ $7 md o d o oxCӼ⾽ $7 X m?`<_?`<_W= lZ<lZ<X ?`<_X d o m4JzKdA=" =zKdA=ߜ!bO"J흑G[=>J4XL<:=2=IG=r==d~ ==0XL<:=2=IG=r=/<8j=0=8<^=̮=o==L(=/<8j=0=2=IG=r=2=IG=r=.>h=:=o==L(=>XL<:= >'<=2=2=IG=r=2=IG=r= >'<=2=.>h=:=/<8j=0=_ʜ=Q*=8<^=̮=8<^=̮=㍽=f_<=OZkV=Eɤ`m="={9 .=zɤ`m=>IӅɤ`m=@R=^U=Xɤ`m==jv=0xr=e= ,|B=>xr=>ɤ`m=A=<ʽ֭=&=wc = <×= <×=䓽iT=A=<ʽ֭=1<5[z\ <×= <×=k3[ 2=>yJI =>xr=&=wc =&=wc =>2=>yJI =/<8j=0=o==L(=B\<)]={=B\<)]={=.=nB=/<8j=0=.=nB=_ʜ=Q*=/<8j=0=A=<ʽ֭='i<9{=6T=.=A=<ʽ֭=}_ܽ2='i<9{=䓽iT=}_ܽ2=A=<ʽ֭=4B=sB=p=B\<)]={=o==L(=o==L(=[>-?=0`=4B=sB=p=o==L(=.>h=:=[>-?=0`=B\<)]={=4B=sB=p=߸>^=6T=.=J>߸>^=>2=<[#=2-?=0`="=2=߸>^="=2=x=@=A<[#=2"=2=>W=;Wx=@=A"=2=[>-?=0`=>=6"=2=>=6>W=;Wx=@=ABa[{>XL!J>߸>^=V=ƽtOV=ƽtO>[{>XL!x=@=A]=p=wTBaW=;W]=p=wTn=r4Ci<ؽI4= VVn=r4C4= VV>[]=p=wTZ=/=eBa=@=@Z=/=e]=p=wT>W=;W >=@=@4= VV=g>=wB>=wB>[4= VVZ=/=e͋>Ab=_=gZ=/=e_<=OZܴ<=G?ZZ=/=e >=@=@͋>Ab=_=gj9<Ƚ\1<5[>>`>=wB=g=g͋>Ab=_>>`_<=OZ=W4ܴ<=G?Z=W4H=@74ܴ<=G?Zj9<Ƚ\\Շ51<5[uJ۽5\Շ5j9<Ƚ\_<=OZkOR=5cXL<:=>IӅɤ`m=?(I<2=>XL<:=?Đ=k= >'<=2=>XL<:=?(I<2=?Đ=k=>ɤ`m=>xr=?\F9=?\F9=?(I<2=>ɤ`m=>xr=>yJI =?ܲ=>xr=?ܲ=?\F9= >'<=2= ? ]=z=.>h=:= >'<=2=?Đ=k= ? ]=z=>yJI =>2= ?]k=>yJI = ?]k=?ܲ=.>h=:= ? ]=z=[>-?=0`=>2=J>߸>^= ?]k=[>-?=0`=*?%=Dv=>=6[>-?=0`= ? ]=z=*?%=Dv=J>߸>^={>XL!!?Ɋ9t=!?Ɋ9t= ?]k=J>߸>^=>=6񼎥?~=LVż>W=;W>=6*?%=Dv=?G=Ws>=6񼈗?G=Ws?~=LVż{>XL!>[?;^ȼ? mS{!?Ɋ9t={>XL!{>XL!?;^ȼ? mS{>W=;W?~=LVż >=@=@>[>=wB?;^ȼ >=@=@?hY=g͋>Ab=_ >=@=@?~=LVż?hY=g>=wB>>`?f?f?;^ȼ>=wB͋>Ab=_?[b#<7>>`͋>Ab=_?hY=g?[b#<7?mV<7?f>>`>>`?[b#<7?mV<7?\F9=L?Zn6-=?(I<2=?\F9=?ܲ=L??¼#=?\F9=L??¼#=L?Zn6-=?(I<2=L?M?V7"C>M?V7"C"M?T@t?f?[b#<7AM?{<R?mV<7?[b#<7=M?ʈ =#AM?{<RBM?Ϸ>M?V7"C?mV<7?mV<7AM?{<RBM?ϷL?Zn6-=x_?zϻJ~=L?u ;C=L?Zn6-=L??¼#=z_?YKxIct=L?Zn6-=z_?YKxIct=x_?zϻJ~=L?u ;C=~_?3<st=L?<=M?ʈ =#_?<`<_?bA<><)M?E=[L^"M?T@t>M?V7"C_?v<_?v<_?}҉<"M?T@t=M?ʈ =#_?u7<_?\M?V7"CBM?Ϸ_? u℗_?0:;_?v<>M?V7"C_? u℗_?0:;>M?V7"CAM?{<R_?I";~^BM?ϷAM?{<R_?u7M?hv? >M?>?h?>?h?hu? <>?h?>?) m>=kA?>?>M?$??j??>O=p*M?$??>=kAO=p*?j??>v? >M?S?hu? <>u? <>?/|>?) m>u? <>@=??/|>p?#?g`=B+u? <>g`=B+@=?u? <>?h?Sw?h?) m>?/|>?_=?_=g`=T?) m>?/|>g`=T?_=?) m>g`=T=kA?/|>@=?g`=T[@[h̙@I"@WhW"@ h$@>"@Wh"@W"@ h"@Wh$@>W"@ h$@ȷ>W"@ h@P$@ȷ>$@}>$@In>$@ȷ>@PW"@ h @h @hW"@ h"@ @h"@$@}>?j?M?$?|?ڛ?M?$???|?ڛ?M?$?|< ??M?$?O=p*|< |?ڛ????s????y??s????Su? <>И?&j?̙@Il@j?$@>$@>l@j? /@ M?v@? /@ M?l@j?~62@&? /@ M?v@?*@ ?~62@&?v@?3@1?~62@&?*@ ?{@?3@1?*@ ?3@?3@1?{@?C@?3@?{@?3@?3@?C@?@?3@?C@?E@?3@?@?3@?E@?}3@ ?"l@"?E@?}3@ ?2@Χ?"l@"?}3@ ?"l@"?2@Χ?_@ܓ?K.@σ?_@ܓ?2@Χ?2@Χ?@ |K.@σ?2@Χ?@~n@7j?$@ȷ>@P~n@7j?C:(@#?y@|*$@ȷ>C:(@#?x~@y@|*$@ȷ>y@|*y@ ?$@ȷ>y@ ?$@}>S=b1T=G3#i=F@=?S=b1#i=F#i=FT=G3=kA#i=F=kAg`=Tg`=T@=?#i=FS=b1A=T=G3g`=B+A=S=b1@=?g`=B+S=b1T=G3@=}O=p*T=G3O=p*=kAA=g`=B+&=G??<*&=Gp?#???&=G&=Gg`=B+p?#?|< O=p*@=}??|y@1*$@>y@@y@1*$@>$@In>y@@y@@$@In>y@T$@In>$$@I=y@Ty@T$@}>y@ ?@@>@@>@x @+@@@$@@@>@x @+@x @+@{@@@@$@@@>@x @+@@>@@@ @x @+@@@>@@@$@{@@@@Ȕ?{@@@J @@@Ȕ?@@Ȕ?@J @@@?@J @~@@M2?@@?@J @@?~@@M2?@@ @8@@x @+@~@@̗?8@@@@ @~@@̗?;@d? @8@@@@O?;@d? @~@@̗?~@@M2?@?;@d? @@@O?~@@M2?;@d? @~@@M2?@@O?@@ @~@@M2?@@ @@@?~@@̗?@@ @@@O?@@>@@@$@@@ @@@Ȕ?@@?@@ @@@$@@@Ȕ?@@ @?%@?+@ ?D>@?+@?%@? @? @?M@?+@{?Qj??M@? @{?Qj?- ?~5 @?M@??- ?~5 @{?Qj?{??t ?u?- ?~5 @??{??- ?~5 @{??a?( @t ?u???a?( @{??{?Qj?? @??? @{?????%@ ?D>@?+@x? @?%@?+@?+@?~@x? @?%@x? @? @x? @?~@?i??~@a?( @?i??i?a?( @????{??? @?i???? @x? @?i?? @$@}>y@T$$@I=zR?;@:@)?@;@:@)?@t$?@;@@t$?B@4<@@;@:@)?zR?;@W?4/?W?4/?zR?;@l?$?o?5<@l?$?zR?;@@t$?ض@D?B@4<@ض@D?@<@B@4<@l?$?o?5<@#?#??:<@#?#?o?5<@ض@D? @2?@<@ @2?. @=@@<@#?#??:<@j???|=@j???:<@ @2?> @?. @=@> @?F @>@. @=@j???|=@???>@???|=@F @>@> @?5 @~?@5 @oA@5 @~?@> @??>@??@????@N?DkA@??L?DN@=, @BN@5 @oA@N?DkA@L?DN@5 @oA@5 @oA@zR?;@N?DkA@5 @~?@zR?;@5 @oA@@`@8?^@q9?`@8?^@@`@@^@q9?`@Y?`@\?~^@q9?`@\?~^@8?^@Y?`@?^@\?~^@Y?`@M?`@?^@@`@@^@;@y^@@`@;@y^@@`@@{^@@`@;@y^@@`@@{^@E@`@M?`@?z^@?^@M?`@9?_@?z^@% @x^@E@`@@{^@E@`@% @x^@ @_@9?_@?h^@?z^@9?_@3?_@?h^@ @f^@ @_@% @x^@ @_@ @f^@} @_@3?_@7?[^@?h^@3?_@v?_@7?[^@B# @W^@} @_@ @f^@} @_@B# @W^@ @_@v?_@D?B^@7?[^@v?_@?_@D?B^@ @>^@ @_@B# @W^@ @_@ @>^@; @_@?_@ @>^@D?B^@?_@; @_@ @>^@?_@w?Bg@; @_@?_@G?_@w?Bg@?_@G?I@G?_@ @>^@=, @BN@D?B^@D?B^@=, @BN@L?DN@; @_@{ @l@ @Ag@; @_@w?Bg@{ @l@; @_@ @Ag@~p@y_@; @_@~p@y_@8- @I@>@xc}@?K@@O@@O@8@R@>@xc}@@1y@8 @x's@>@xc}@>@xc}@{h@G@@1y@8 @x's@?:y@>@xc}@>@xc}@?:y@#?U}@>@xc}@#?U}@?K@>@xc}@8@R@{h@G@@1y@z @A@8 @x's@@1y@{h@G@z @A@r?(s@?:y@8 @x's@8 @x's@{ @l@r?(s@8 @x's@z @A@{ @l@r?(s@~Q?7@?:y@{ @l@?l@r?(s@?l@~Q?7@r?(s@?:y@z?F@#?U}@?:y@~Q?7@z?F@#?U}@w?J@?K@#?U}@z?F@w?J@{ @l@d@@ @Ag@{ @l@w?Bg@?l@{ @l@z @A@d@@ @Ag@d@@~p@y_@w?Bg@ ?"@?l@w?Bg@G?_@ ?"@?l@ ?"@~Q?7@zR?;@??@N?DkA@F @>@@;@5 @~?@5 @~?@@;@zR?;@. @=@@;@F @>@@<@@;@. @=@@<@B@4<@@;@o?5<@??@zR?;@?:<@??@o?5<@?|=@??@?:<@?>@??@?|=@|@@!@@y?@|@@z@}@!@@y?@T?@?}@y?@!@@T?@?}@?@ H?@?}@T?@?@z@}@ @@@@@@!@@z@}@ H?@t?@ ?@ H?@?@ ?@ H?@ ?@t?@ @@ @@| @@y@ @@@@ @@ @@| @@y@ @@ ?@j?@?}@ ?@t?@j?@ @@ @@ @@ @@ @@| @@?}@w?@?@?}@j?@w?@ @@m@@f @@ @@f @@ @@?@p|?ّ@t?@?@w?@p|?ّ@m@@x*@@@ݑ@m@@@ݑ@f @@t?@vT?ّ@ ?@t?@p|?ّ@vT?ّ@x*@@@@@ב@x*@@@ב@@ݑ@ ?@vT?ّ@@@@@vT?ّ@@ב@w?J@T?@!@@!@@@@{h@G@8@R@w?J@!@@!@@{h@G@8@R@T?@z?F@?@T?@w?J@z?F@?@~Q?7@ ?@?@z?F@~Q?7@@@y@ @@z @A@@@z @A@{h@G@ ?@ ?"@t?@ ?@~Q?7@ ?"@y@ @@| @@d@@y@ @@d@@z @A@t?@ ?"@j?@| @@ @@d@@j?@}?~@w?@j?@ ?"@}?~@ @@f @@xb@~@xb@~@d@@ @@w?@|{?y~@p|?ّ@w?@}?~@?|~@w?@?|~@|{?y~@f @@@ݑ@@~@Ct @~@xb@~@f @@f @@@~@Ct @~@p|?ّ@?~@vT?ّ@p|?ّ@|{?y~@?~@@ݑ@@ב@÷@~@@ݑ@÷@~@@~@vT?ّ@?~@@ב@@ב@?~@÷@~@ ?"@?C_@}?~@ ?"@G?_@?C_@d@@xb@~@b@}A_@d@@b@}A_@~p@y_@}?~@?C_@?|~@xb@~@Ct @~@b@}A_@?|~@ ?/_@|{?y~@?|~@?C_@ ?/_@Ct @~@@~@\ @*_@\ @*_@b@}A_@Ct @~@|{?y~@ ?_@?~@|{?y~@ ?/_@?'_@|{?y~@?'_@ ?_@@~@÷@~@~@_@F@ _@\ @*_@@~@@~@~@_@F@ _@?~@ ?_@÷@~@÷@~@ ?_@~@_@~p@y_@b@}A_@<@ǃI@<@ǃI@8- @I@~p@y_@G?_@6!?|I@?C_@G?_@G?I@6!?|I@?C_@F ?I@ ?/_@?C_@6!?|I@F ?I@b@}A_@\ @*_@j@I@j@I@<@ǃI@b@}A_@ ?/_@?zH@?'_@ ?/_@F ?I@?zH@\ @*_@F@ _@{ @H@{ @H@j@I@\ @*_@?'_@?H@ ?_@?'_@?zH@?H@F@ _@~@_@@H@@H@{ @H@F@ _@6@H@~@_@ ?_@ ?_@?H@c?H@c?H@6@H@ ?_@6@H@@H@~@_@??6!?|I@G?I@6!?|I@??F ?I@<@ǃI@> @?8- @I@<@ǃI@j@I@> @?? >??zH@F ?I@F ?I@??? >?{ @H@ @L?j@I@ @L?> @?j@I@? >??H@?zH@@H@ @L?{ @H@? >?c?H@?H@6@H@ @L?@H@c?H@? >?6@H@6@H@? >? @L???Gs???A?6???j??Gs?????A?6?;????;??F(?*;@> @? @G? @2?> @?P@ L? @G?> @?:@C?P@ L?> @? @8.;@:@C?? >?R?{? @L?? >?L?9?R?{?? >?F(?*;@L?9? @L?R?{?8@?8@?A(@@? @L? @L?A(@@? @8.;@Gs???Pn?%m?A?6?Gs???j??B&?Y?Gs???B&?Y?%?m?Gs???%?m?Pn?%m?A?6?(??;???v?(??A?6?A?6?W?l??v?Pn?%m?? m?A?6?A?6?? m?W?l?(??UP?@;??;??i?@L?9?z?,;@F(?*;@;??UP?@z?@;??:?v@i?@;??;??z?@:?v@:@)? (@pz?W?4/?:@)?@t$? (@pz?3l?vm?W?4/? (@pz? (@pz?N@4m?3l?vm? (@pz?@t$?~@n?~@n?N@4m? (@pz?l?$?W?4/?3l?vm??{h?l?$?3l?vm?%?m??{h?3l?vm?3l?vm?N@4m?%?m?@t$?ض@D?~@n?~@n?ض@D?@b?@b?N@4m?~@n?#?#?l?$??{h?B&?Y?#?#??{h?%?m?B&?Y??{h?ض@D? @2?@b?@b? @2? @G? @G?N@4m?@b?j??#?#?B&?Y? @G?P@ L?@+m? @G?@+m?N@4m?A@@?P@ L?:@C?:@C?@@'@A@@?A(@@?:"@@:@C?:@C? @8.;@"@,;@:@C?>@x@@@'@:"@@~9@1@:@C?:@C?~9@1@>@x@A@@?$a@.?P@ L?P@ L?$a@.?'@l? @m?@+m?P@ L?P@ L?'@l? @m?(???v??M??M?"?Y@(??"?Y@UP?@(??A@@?H@?$a@.?A@@?y@ @H@?@@'@y@ @A@@?v2???M??v??v?J?Pl?v2???v?W?l?J?Pl??M?v2??v??v??> ?ʨ@?M?N ?@"?Y@?M?> ?ʨ@N ?@?M?H@?:$@?$a@.?H@?#@Q?:$@?H@?@o@#@Q?y@ @;@Q@H@?;@Q@@o@H@?$a@.?:$@?x@rl?$a@.?x@rl?'@l? ?ʨ@#@Q?;@}u?:$@?#@Q?@@@;@}u?@o@@@@#@Q?:$@?;@}u?@~?:$@?@~?x@rl?G??F??,Pn?%m?%?m?N@4m?H?>,Pn?%m?q?G>/? m?Pn?%m?H?>,q?G>/N@4m?@+m?[@>+[@>+H?>,N@4m?@+m? @m? @-@+m? @-[@>+? m??B2W?l?? m?q?G>/?B2 @m?'@l?@B2 @m?@B2 @-W?l??B2J?Pl?'@l?x@rl?@B2J?Pl??@:?j?J?Pl??B2?@:x@rl?k@j?Ț@ 7Ț@ 7@B2x@rl??j??Y|?i??j??@:?U?j??U?Yk@j?@j?@V.@SȚ@ 7k@j?k@j?@V.@S|?i??Y?i?@j?4@i?@V?i?V?[V?ki??i??YV?[4@i? @i?@[@[@V4@i?V?ki?h?5~a @i?V?ki?V?[h?5~a@~_@[ @i? @i?h?5~a@~_[@>+H@ИH?>,[@>+ @-S@ ֘[@>+S@ ֘H@ИH?>, ?瘿q?G>/H?>,H@И?ؘH?>,?ؘ ?瘿q?G>/r??B2q?G>/ ?瘿r? @-@B2D @ @-D @S@ ֘?B2r??@:@B2Ț@ 7D @?@:?G?U?@:r??GȚ@ 7.@Sy$@5y$@5D @Ț@ 7?U?ϙ?Y?U?G?񻙿?U?񻙿?ϙ.@S@Vލ @%@򳙿y$@5.@S.@Sލ @%@򳙿?Y?ϙV?[@V@[ލ @V?[?h?5~aV?[?ϙ?@[@~_ @ @ލ @@[h?5~a?@~_h?5~a??!@ @@~_@~_?!@H@И@n?ؘH@ИS@ ֘"@rH@И"@r@n?ؘ?z ?瘿?ؘ@nH?r?ؘH?r?z ?瘿s?􇾿r? ?瘿?zs?􇾿S@ ֘D @ @zS@ ֘ @z"@rr?x??Gs?􇾿{?򗾿r?r?{?򗾿x?D @y$@5@@ @zD @D @@@?G? ྿?񻙿x?v?þ?G?Gv?þ? ྿y$@5%@򳙿9 @ ྿@ @ž@y$@5y$@59 @ ྿@ @ž?񻙿?񾿆?ϙ?񻙿? ྿?%@򳙿ލ @@%@򳙿@9 @ ྿?ϙ? ??? ?ϙލ @ @;@ ;@ @ލ @?y?1??? wJ?'wJ?'y?1? @!@@'@$;@  @@'@$ @?>? 4!@?y?1>? 4@'@'!@!@>? 4@'"?Y@„?8E@UP?@N ?@K?~E@"?Y@K?~E@„?8E@"?Y@UP?@„?8E@z?@> ?ʨ@?E@N ?@N ?@?E@K?~E@> ?ʨ@?L@z?,@z?,@?E@> ?ʨ@^?,@z?,@?L@*?j@^?,@?L@^?,@?B B@z?,@?B B@?E@z?,@?@?,@*?j@?,@^?,@*?j@%!?@?g,@?@?g,@?,@?@C?@?g,@%!?@i?@?A,@C?@?A,@?g,@C?@i?@:?v@?,@?,@?A,@i?@:?v@?E@?,@?,@˾?B@?A,@?E@˾?B@?,@z?@?E@:?v@„?8E@?E@z?@?,@.?A@^?,@^?,@.?A@?B B@?g,@.?A@?,@?A,@jj?A@?g,@jj?A@.?A@?g,@?A,@˾?B@jj?A@K?~E@?E@„?8E@?E@?E@„?8E@.?A@˾?B@?B B@jj?A@˾?B@.?A@˾?B@G?C G@?E@3?A@@x@M@E@@@'@;@Q@ @ǹE@@o@;@Q@;@E@ @ǹE@B@ ,@@@@@o@@o@ @ǹE@B@ ,@B@ ,@8@,@@@@B@ ,@@=B@8@,@ @ǹE@@=B@B@ ,@@@@8@,@‰@ @‰@ @@<,@@ @8@,@@<,@‰@ @@ @p@<,@t@$ @@<,@p@<,@@ @t@$ @p@<,@@@@@x@,@:"@@p@<,@x@,@@@%@-@~9@1@:"@@:"@@x@,@%@-@%@-@@E@~9@1@x@,@@B@%@-@@B@@E@%@-@~9@1@@E@>@x@>@x@@E@M@E@8@,@@A@@<,@8@,@@=B@@A@@<,@@A@p@<,@p@<,@9D@A@x@,@@A@9D@A@p@<,@x@,@9D@A@@B@M@E@ @ǹE@;@E@@E@@B@M@E@@=B@9D@A@@A@@=B@@B@9D@A@@G@@E@@B@@B@;@|E@@G@@B@@KC@;@|E@@B@@A@@KC@@E@>@H@ø@E@@E@@znI@>@H@@E@ȳ@zI@@znI@@E@@G@ȳ@zI@>@H@@G@ø@E@@G@@A@ø@E@@znI@@G@>@H@ȳ@zI@@G@@znI@@G@;@|E@@A@@KC@@A@;@|E@`A6433?(o:o:o: A'+   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 0A5VMtl01  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     PAR @JICP_1Geo*0A9A Q>?8=T>=[WC?>t=[WC?>t=T>=|VC?3=礿'v;LL=礿礿;LL='v잼;D>샼<\8= H< >ꓼLh峜屁<&4 >ꓼLh ;L >塚ջ>峜屁<&4 > ;L >잼;D>-ϓ*=CC=ݮۻ ,>ݮۻ ,>CC=˻Vx=ݮۻ ,>˻Vx=;LL=񴜾[9 >ߥyx=󬼾ػ>͜'{߻,C >񴜾[9 >󬼾ػ>d@g>ⅼ?<=ߥyx=񴜾[9 >d@g>ߥyx=U=zܗ=-ϓ*=-ϓ*=zܗ=CC=󊿾 L<8,==}=ff==󊿾 L<8,=͡샼<\8=|=l3G%=ⅼ?<=d@g>|=ⅼ?<=dl=|=U=U=|=zܗ=ff==vپ,=qĚ=D.,=f=ff===}=vپ,=qĚ=M4,={=T+=$=rNt=,|=T+=$==$$=rNt=,|=|r=4n=I3=l3G%=|=|r=4n=l3G%=G.3`=uپ3z=dl=dl=uپ3z=|=D.,=f=ξ46==*5=s|=D.,=f=vپ,=qĚ=ξ46==45=&=I]j5=cx=M4,={=I]j5=cx=T+=$=M4,={=T>=,>8=I3=|r=4n=T>=I3=1Ug=b=;W=7=G.3`=G.3`=;W=7=uپ3z=*5=s|=ξ46==z6=q=O6=D=5=c=45=&=5=c=I]j5=cx=45=&=Q>?8=#c==,>8=T>=Q>?8=,>8= B{=\<=;W=7=1Ug=b=vS 5=bD=I]j5=cx=5=c=}x5=X=I]j5=cx=vS 5=bD=|VC?3=|r=4n=y[5 =|VC?3=T>=|r=4n=y[5 =|=ur=y[5 =|r=4n=|=ur=d@g>Ar/?4>ur=|=d@g>Ar/?4>񴜾[9 >oPה3h>Ar/?4>d@g>񴜾[9 >oPה3h>͜'{߻,C >ԭn1 >oPה3h>񴜾[9 >͜'{߻,C >ԭn1 > ;L >šnp%;# >ԭn1 >͜'{߻,C > ;L >šnp%;# > ;L >o4<|>o4<|>峜屁<&4 >6r<->o4<|> ;L >峜屁<&4 >6r<-> H< >ul={=6r<->峜屁<&4 > H< >ul={==$$=yy+=Ot=ul={= H< >=$$=yy+=Ot=T+=$=}x5=X=yy+=Ot==$$=T+=$=}x5=X=T+=$=I]j5=cx= ;L >͜'{߻,C >塚ջ>`A6433?(o:o:o: AEL   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0AVMtl02L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKPA6@"ICP_2Geo*0AAhHx_?zϻJ~=.a?˺<_?v<.a?˺<_?}҉<_?bA<><.a?˺<_?\?@ABCDEFG0A?VMtl03 PAf@ ICP_3Geo*0A A0qW:vW9Ê;2脺nW; h;qW:pHi QQQ<}W挺sHh.,;uH^<}W挺yoH^8sHh.,;}W挺saH>yoH^8}W挺}W挺tYHNsaH>|zHvQ<|&7OoH#=xH#<|&7OoH#=w'7;x#=pHi QQQs6?yoH^8s6?t6nDwsaH>tYHNu6u6?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0AVMtl04:  !"#$%&'()*+,-./0123456789PA@pPlane1_0GAA8:>k> xrm>k> xr>k> CHq>k> C`A6}.>|.[3XBA'>k> A90AVMtl05PA@pPlane2_0GAA8:>kxrm>kxr>kCHq>kC`A6}.>|.[3XBA'>k A90AVMtl06PA@pPlane3_0GAA8}>$Ae?$Ae?$>$`A6}.>|.[3XBA2?$  A90AVMtl07PA@pPlane4_0GAA8}>$>Ne?$>Ne?$>0>$>0`A6}.>|.[3XBA2?$>- A90AVMtl08PAU MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@ ICP01 &!*??"&??? # # # #< #< #<0ICP_0Geo*0@ &!*"&???0ICP_1Geo*0@ &!*"&???0ICP_2Geo*0@ &!*"&???0ICP_3Geo*0@ &!*"&???0$$$DUMMY@pPlane01 &'>k!*?"&}.>}.>DA= # # # #< #< #<0 pPlane1_0G@ &!*"&???0 $$$DUMMY@pPlane02 &'>k>!*?"&}.>}.>DA= # # # #< #< #<0 pPlane2_0G@  &!*"&???0 $$$DUMMY@pPlane03 &2?'%>!*?"&}.>}.>DA= # # # #< #< #<0 pPlane3_0G@  &!*"&???0$$$DUMMY@pPlane04 &2?'%!*?"&}.>}.>DA= # # # #< #< #<0pPlane4_0G@ &!*"&???gl-117-1.3.2/models/gl-50.3ds0000644000175000017500000013002110145416156014413 0ustar cedriccedricMM ==>=  VMtl01   0 @0A0P0R0S00 ? VMtl02 GGG  GGG0 @0A0P0R0S00 ? VMtl03  0 @0A0P0R0S00 ?02 - Standard  0 @0 A0P0R0S00 ?G0dGL-50_C2.TGAQS X uZ ѣ01 - Standard  0 @0 A0P0R0S00 ?G0dGL-50_CH.TGAQS T >V > VMtl06 fff  fff0 @0A0P0R0S00 ? VMtl07 GGG  GGG0 @0A0P0R0S00 ? VMtl11 GGG  GGG0 @0A0P0R0S00 ? VMtl12  0 @0A0P0R0S00 ? VMtl13 GGG  GGG0 @0A0P0R0S00 ? VMtl14 GGG  GGG0 @0A0P0R0S00 ? VMtl15 GGG  GGG0 @0A0P0R0S00 ? ?@" pSphere1_0A Ax/)@ʒ=df@=@`=?=df@=ߴ/)@/:x=׳?l=@`=ߴ/)@/:x=H?p=ù?u=׳?l=H?p=ߴ ?.:x=׳g?l=ù?u=ߴ ?.:x=df!?=ՠ?a=׳g?l=df!?= ?ʒ=g?=ՠ?a= ?ʒ=郅?=Շ?=g?=郅?=/)@ʒ=?=Շ?=?=@`=ի/)@H=?sa>@`=׳?l=朰?Q(=ի/)@H=׳?l=ù?u=$%?=朰?Q(=ù?u=׳g?l=朰Lh?Q(=$%?=׳g?l=ՠ?a=ի ?G=朰Lh?Q(=ՠ?a=g?=Lh?sa>ի ?G=g?=Շ?="&?>Lh?sa>Շ?=?=?sa>"&?>?sa>ի/)@H=1?A>ڱu?>ի/)@H=朰?Q(= u?u>1?A>朰?Q(=$%?= ? > u?u>$%?=朰Lh?Q(= V?u> ? >朰Lh?Q(=ի ?G=5-?A> V?u>ի ?G=Lh?sa>ڱV?>5-?A>Lh?sa>"&?>~?>ڱV?>"&?>?sa>ڱu?>~?>ڱu?>1?A>ȥ?>1?A> u?u>ȥ?> u?u> ? >ȥ?> ? > V?u>ȥ?> V?u>5-?A>ȥ?>5-?A>ڱV?>ȥ?>ڱV?>~?>ȥ?>~?>ڱu?>ȥ?>`A6XI?/#8? = A-8     # !!"#'$%%&'+())*+,-.,./012023456467;899:;<=><>?C@AABCGDEEFGKHIIJKLMNLNOPQRPRSTUVTVW[XYYZ[\]^\^_`abcdefghijklmnopqrstuvw0AVMtl018  !"#$%&'()*+,-./01234567PA@pCylinder1AA +R=@k=7 @ N;E{ > @hB<>j|@s@=7 @ N; 0=7 @ = > @2=E{ > @hB< 0=7 @ =q=@d= >j|@@Yd= > @2=q=@d=_e=Ċ@=J >Ċ@= >j|@@Yd=_e=Ċ@=q=Z@d= >@@Yd=J >Ċ@=q=Z@d= 0=Q@ = >e@2= >@@Yd= 0=Q@ ==Q@ N;E{ >e@hB< >e@2==Q@ N;R=Z@k>@s@E{ >e@hB<R=Z@k?^=Ċ@[ż'*>Ċ@,y>@s@?^=Ċ@[żR=@k>j|@s@'*>Ċ@,y=Q@ N; 0=Q@ ==Ċ@-<`A6Qs?B.<0?Ah'?O?= AC      !" "#'$%%&'()*0A9VMtl02 PAZ@(pCylinder2AA9=7 @ N;R=@k=Ċ@-< 0=7 @ ==7 @ N;=Ċ@-j|@s@E{ > @hBĊ@1 @hB< > @2=H >Ċ@1< > @2= >j|@@Yd=H >Ċ@1< >j|@@Yd=J >Ċ@=H >Ċ@1Ċ@= >@@Yd=H >Ċ@1< >@@Yd= >e@2=H >Ċ@1< >e@2=E{ >e@hBĊ@1e@hB<>@s@H >Ċ@1<>@s@'*>Ċ@,yH >Ċ@1<'*>Ċ@,y>j|@s@H >Ċ@1<`A6Qs?B.<0?Ah'?O?= A'   !"#$%&'()*+,-./0123456780A5VMtl03 PAR@ pCylinder6A AHp/= ?~>"=Y?~>;rc?=DC? ="=Y?~>A> ?~> {)>C?=;rc?=A> ?~>@S>?@>R;>?= {)>C?=@S>?@>A>! {)>E?=R;>?=A>!"=%?~>;rd?= {)>E?="=%?~>/=!DE? =;rd?=/=!l<?@>`V? =DE? =l<?@>/= ?~>DC? =`V? =DC? =;rc?==@ρ=}@Á=;rc?= {)>C?==@Ӂ==@ρ= {)>C?=R;>?=1>?Ձ==@Ӂ=R;>?= {)>E?==?Ӂ=1>?Ձ= {)>E?=;rd?=?ρ==?Ӂ=;rd?=DE? =}?Á=?ρ=DE? =`V? =?=}?Á=`V? =DC? =}@Á=?="=Y?~>/= ?~>"=?@>A> ?~>"=Y?~>"=?@>@S>?@>A> ?~>"=?@>A>!@S>?@>"=?@>"=%?~>A>!"=?@>/=!"=%?~>"=?@>l<?@>/=!"=?@>/= ?~>l<?@>"=?@>}@Á==@ρ=?ρ==@ρ==@Ӂ=?ρ==@Ӂ=1>?Ձ=?ρ=1>?Ձ==?Ӂ=?ρ==?Ӂ=?ρ=?ρ=?ρ=}?Á=?ρ=}?Á=?=?ρ=?=}@Á=?ρ=@Ap@5@m @5@@.?X?.?m @5@__3@5@{.@.?@.?__3@5@6@@ 2@.?{.@.?6@@__3@5@{.@.? 2@.?__3@5@m @5@@.?{.@.?m @5@@5@X?.?@.?@5@@@?.?X?.?@@@5@X?.??.?X?.?@.?$ @ep??ep?@.?{.@.?$@ep?$ @ep?{.@.? 2@.?ѓ*@ep?$@ep? 2@.?{.@.?$@ep?ѓ*@ep?{.@.?@.?$ @ep?$@ep?@.?X?.??ep?$ @ep?X?.??.??ep??ep??.?X?.??ep??ep?m @5@@5@m @@__3@5@m @5@m @@6@@__3@5@m @@__3@5@6@@m @@m @5@__3@5@m @@@5@m @5@m @@@@@5@m @@@5@@@m @@?ep?$ @ep?$ @ep?$ @ep?$@ep?$ @ep?$@ep?ѓ*@ep?$ @ep?ѓ*@ep?$@ep?$ @ep?$@ep?$ @ep?$ @ep?$ @ep??ep?$ @ep??ep??ep?$ @ep??ep??ep?$ @ep?`A63Crߘ?N45(,?h^> A0    !"# !#&'$$%&*+(()*-./,-/123013674456:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av02 - Standard0  !"#$%&'()*+,-./PA@&pCylinder5A&AHp`ǿZ?4`ǿ[H@ a7@ a7?,o`ǿ[H@ `ǿw@(qa72@&a7@ `ǿw@(q`ǿG@5S=?EG@=[=a7@S=a7?p=?E@V,=?Ey@>=a7?p=a7?a=?E?=>?E@V,=a7?a=a7?p=?ED?U,=?E?=>a7?p=a7z?T=?Ey?>=?ED?U,=a7z?T=a7??n=?E?[=?Ey?>=a7??n=a7?w?==:o@=:u@\h=?Ey@>=?E@V,=:?C=:o@=?E@V,=?E?=>:?=:?C=?E?=>?ED?U,=:(?B=:?=?ED?U,=?Ey?>=:?=:(?B=?Ey?>=?E?[=:?[h=:?=?E?[=?E ?7V<:?C<:?[h=?E ?7Vps?Y:?㖽:?,?Y?X>p?Y@ H@мH)?'@ @HaH8@H@м@Ha @e<H@/Z<H8@ @e<@fk+=H8@ =H@/Z<@fk+=@H=H@U=H8@ =@H=?+F=H)?@L=H@U=?+F=?=H?܋=H)?@L=?=s?,F=H_T?@L=H?܋=s?,F=?H=HG?U=H_T?@L=?H=?fk+=H? =HG?U=?fk+=d?e<Hzn?/Z<H? =d?e<?HaH?Hzn?/Z<?Ha? HG?мH?? s?YH_T?'HG?мs?Y?X>pH?^H*H_T?'?X>p?YH)?'H?^H*H)?'H@мj=?0~x=H@мH8@j=?0~x=H8@H@/Z<j=?0~x=H@/Z<H8@ =j=?0~x=H8@ =H@U=j=?0~x=H@U=H)?@L=j=?0~x=H)?@L=H?܋=j=?0~x=H?܋=H_T?@L=j=?0~x=H_T?@L=HG?U=j=?0~x=HG?U=H? =j=?0~x=H? =Hzn?/Z<j=?0~x=Hzn?/Z<H?j=?0~x=H?HG?мj=?0~x=HG?мH_T?'j=?0~x=H_T?'H?^H*j=?0~x=H?^H*H)?'j=?0~x=@A p,^@Qk>^@@=>@!=Q->@2>^@@=(_@=J?@ط=>@!=(_@=Z`@Z==(@@5C)xB@r>A@B=Qb@A>b@dG>wB@kL>)xB@r>b@dG>enb@ϟv>#B@J>wB@kL>enb@ϟv>b@:=>(+B@a>#B@J>b@:=>ga@b>.pA@mS>(+B@a>ga@b>7`@y̠>ҍ@@>.pA@mS>7`@y̠>_@o>?@K">ҍ@@>_@o>3_@c>>@'>?@K">3_@c>Z^@Iv>S>@~q>>@'>Z^@Iv>Q^@caH>>@nM>S>@~q>Q^@caH>,^@Qk>Q->@2>>@nM>Q->@2>>@!=%@=$@>>@!=J?@ط= %@R <%@=J?@ط==(@@5C< s&@ %@R <=(@@5C<8A@}]=<'@P]< s&@8A@}]=A@B='@:h=<'@P]w(@i='@:h=)xB@r>wB@kL>(@P>w(@i=wB@kL>#B@J>I(@q>(@P>#B@J>(+B@a>>(@+>I(@q>(+B@a>.pA@mS>'@>>(@+>.pA@mS>ҍ@@>&@>'@>ҍ@@>?@K">&@S>&@>?@K">>@'>f%@">&@S>>@'>S>@~q>h$@H>f%@">S>@~q>>@nM>$@%$R>h$@H>>@nM>Q->@2>$@>$@%$R>$@>%@=d?=?Yi>%@= %@R ?S!=w(@i=(@P>2?sZ>?>(@P>I(@q>8?Y6>2?sZ>I(@q>>(@+>?>8?Y6>>(@+>'@>?>'@>&@>/O?>&@>&@S>?n>/O?>&@S>f%@">wj?H>?n>f%@">h$@H>?>wj?H>h$@H>$@%$R>2?'[>?>$@%$R>$@>?Yi>2?'[>?Yi>d?=?!=ד?)>d?=vO?2%=ˀ?=?!=vO?2%==?0?&> ?9_=?>2?sZ>J?`a>?&>2?sZ>8?Y6>l"?C>J?`a>8?Y6>?>K?*>l"?C>?>5|?1>K?*>/O?>?D>5|?1>/O?>?n>VՓ?:$>?D>?n>wj?H>?Ǥ>VՓ?:$>wj?H>?>n?PŒ>?Ǥ>?>2?'[>?Pa>n?PŒ>2?'[>?Yi>ד?)>?Pa>ד?)>?!=9 ?G.>?H>?!=ˀ?=^?x>9 ?G.>ˀ?=P?=p?>^?x>P?=&?= ?>p?>&?= ?9_=; ? t-> ?> ?9_=?&> ?N H>; ? t->?&>J?`a>+ ? g> ?N H>J?`a>l"?C> ?~>+ ? g>l"?C>K?*>*q ?ؐ> ?~>K?*>5|?1>?>*q ?ؐ>5|?1>?D>?>?>?D>VՓ?:$>@?^>?>VՓ?:$>?Ǥ>-??Gw>@?^>?Ǥ>n?PŒ>b?G>-??Gw>n?PŒ>?Pa>?g>b?G>?Pa>ד?)>?H>?g>?H>9 ?G.>m>9 ?G.>^?x>m>^?x>p?>m>p?> ?>m> ?>; ? t->m>; ? t-> ?N H>m> ?N H>+ ? g>m>+ ? g> ?~>m> ?~>*q ?ؐ>m>*q ?ؐ>?>m>?>?>m>?>@?^>m>@?^>-??Gw>m>-??Gw>b?G>m>b?G>?g>m>?g>?H>m>`A6ޞ?ö-?[?6V< A     "#  !"&'$$%&*+(()*./,,-.230012674456:;889:=>?<=?ABC@ACEFGDEGIJKHIKMNOLMOQRSPQSUVWTUWYZ[XY[^_\\]^bc``abfgddefjkhhijnollmnrsppqrvwttuvz{xxyz}~|}       # !!"#'$%%&'+())*+/,--./301123745567;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0Av01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinder7AAH0`ǿ[H@ `ǿZ?4?o<`ǿw@(q`ǿ[H@ ?o<`ǿG@5S<`ǿw@(q?o<`ǿw@6=`ǿG@5Sh=pY=?0e< A90AVMtl07PA@ pCylinder9A AH; @D<;\% @><; @ =h @˃=h\% @; @ =;g@?=hg@=h @˃=;g@?=; @ =h @˃=hg@=; @ =;rI@><; @D<; @D<;g@><; @ =;\% @><;g@><;g@?=; @ =;g@><; @ =;g@?=;g@><;rI@><; @ =;g@><; @D<;rI@><;g@><;g@X;[; @D<;g@><; @D<;g@X;[;g@><= @%ͼ=\% @q<=g@q<=\% @q<= @6==g@q<= @6==g@==g@q<=g@== @6==g@q<= @6==rI@q<=g@q<=rI@q<= @%ͼ=g@q<= @%ͼ=g@x=g@q<=g@x= @%ͼ=g@q<`A6W+?b=bg@ AP     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?C@AABCDEFDFGHIJHJKOLMMNOSPQQRSTUVTVWXYZXZ[_\]]^_c`aabcgdeefgkhiijklmnlnopqrprstuvtvwxyzxz{|}}~0A01 - StandardP  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@ pCylinde11A AH;s?D<;?><;s? =hs?˃=h?Pc;s? =;7??=h7?=hs?˃=;7??=;\? =h\?˃=h7?=;\? =;,[?><;\?D<;s?D<;7?><;s? =;?><;7?><;7??=;s? =;7?><;\? =;7??=;7?><;,[?><;\? =;7?><;\?D<;,[?><;7?><;7?X;[;\?D<;7?><;s?D<;7?X;[;7?><=s?%ͼ=?q<=7?q<=?q<=s?6==7?q<=s?6==7?==7?q<=7?==\?5==7?q<=\?5==,[?q<=7?q<=,[?q<=\?%ͼ=7?q<=\?%ͼ=7?x=7?q<=7?x=s?%ͼ=7?q<`A6W+?b=b7? AP     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?C@AABCDEFDFGHIJHJKOLMMNOSPQQRSTUVTVWXYZXZ[_\]]^_c`aabcgdeefgkhiijklmnlnopqrprstuvtvwxyzxz{|}}~0A01 - StandardP  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@#pCylinde13A#AT!@s=! @=˝6@g=˝' @[o=! @=! @3=˝6@纚=˝6@g=! @3=!@+=˝' @C=˝6@纚=!@+=!^?=˝^?2=˝' @C=!^?=!B?+=˝u?C=˝^?2=!B?+=!zw?3=˝?纚=˝u?C=!zw?3=!zw?=˝?g=˝?纚=!zw?=!B?s=˝u?[o=˝?g=!B?s=!^?t0=˝^?hd=˝u?[o=!^?t0=!@s=˝' @[o=˝^?hd=˝' @[o=˝6@g= 6@[u= @c=˝6@g=˝6@纚= 6@. = 6@[u=˝6@纚=˝' @C= @(= 6@. =˝' @C=˝^?2= ^?2= @(=˝^?2=˝u?C= +{?(= ^?2=˝u?C=˝?纚= ?- = +{?(=˝?纚=˝?g= ?Wu= ?- =˝?g=˝u?[o= +{?c= ?Wu=˝u?[o=˝^?hd= ^?hd= +{?c=˝^?hd=˝' @[o= @c= ^?hd= @c= 6@[u=q۾0@[u=q۾X@c= 6@[u= 6@. =q۾0@- =q۾0@[u= 6@. = @(=q۾X@(=q۾0@- = @(= ^?2=q۾^?2=q۾X@(= ^?2= +{?(=q۾gü?(=q۾^?2= +{?(= ?- =q۾Rٕ?. =q۾gü?(= ?- = ?Wu=q۾Rٕ?Vu=q۾Rٕ?. = ?Wu= +{?c=q۾gü?c=q۾Rٕ?Vu= +{?c= ^?hd=q۾^?hd=q۾gü?c= ^?hd= @c=q۾X@c=q۾^?hd=q۾X@c=q۾0@[u=qU @g=qUĸ@[o=q۾0@[u=q۾0@- =qU @纚=qU @g=q۾0@- =q۾X@(=qUĸ@C=qU @纚=q۾X@(=q۾^?2=qU^?2=qUĸ@C=q۾^?2=q۾gü?(=qU4?C=qU^?2=q۾gü?(=q۾Rٕ?. =qUL?纚=qU4?C=q۾Rٕ?. =q۾Rٕ?Vu=qUL?g=qUL?纚=q۾Rٕ?Vu=q۾gü?c=qU4?[o=qUL?g=q۾gü?c=q۾^?hd=qU^?hd=qU4?[o=q۾^?hd=q۾X@c=qUĸ@[o=qU^?hd=qUĸ@[o=qU @g=5 @g=佗~@[o=qU @g=qU @纚=5 @纚=5 @g=qU @纚=qUĸ@C=佗~@C=5 @纚=qUĸ@C=qU^?2=^?2=佗~@C=qU^?2=qU4?C=住w?C=^?2=qU4?C=qUL?纚= ?纚=住w?C=qUL?纚=qUL?g= ?g= ?纚=qUL?g=qU4?[o=住w?[o= ?g=qU4?[o=qU^?hd=^?hd=住w?[o=qU^?hd=qUĸ@[o=佗~@[o=^?hd=佗~@[o=5 @g=@1ň=(> @=@ٽ=(>@1ň= @NA=(>@ٽ=^?h=(> @NA=<^?2=L3?MA=(>^?h=?ٽ=(>L3?MA=?0ň=(>?ٽ=L3?=(>?0ň=^?م=(>L3?=<^?hd= @=(>^?م=! @=!@s=!^?'!=! @3=! @=!^?'!=!@+=! @3=!^?'!=!^?=!@+=!^?'!=!B?+=!^?=!^?'!=!zw?3=!B?+=!^?'!=!zw?=!zw?3=!^?'!=!B?s=!zw?=!^?'!=!^?t0=!B?s=!^?'!=!@s=!^?t0=!^?'!=(> @=(>@1ň=(>^?'!=(>@1ň=(>@ٽ=(>^?'!=(>@ٽ=(> @NA=(>^?'!=(> @NA=(>^?h=(>^?'!=(>^?h=(>L3?MA=(>^?'!=(>L3?MA=(>?ٽ=(>^?'!=(>?ٽ=(>?0ň=(>^?'!=(>?0ň=(>L3?=(>^?'!=(>L3?=(>^?م=(>^?'!=(>^?م=(> @=(>^?'!=@A TZm>2?Zm>8N?>ߺ?>_ ?Zm>8N?Zm>w @>E/#@>ߺ?Zm>w @Zm>@>[@>E/#@Zm>@Zm>k$@>R*q@>[@Zm>k$@Zm>@>[@>R*q@Zm>@Zm>w @>E/#@>[@Zm>w @Zm>8N?>ߺ?>E/#@Zm>8N?Zm>2?>_ ?>ߺ?Zm>2?Zm>g?>Jw>>_ ?Zm>g?Zm>2?>_ ?>Jw>>_ ?>ߺ?!@>x=?!@Zm>>ߺ?>E/#@!@;?!@>x=?>E/#@>[@!@oE@!@;?>[@>R*q@!@R*q@!@oE@>R*q@>[@!@oE@!@R*q@>[@>E/#@!@;?!@oE@>E/#@>ߺ?!@>x=?!@;?>ߺ?>_ ?!@Zm>!@>x=?>_ ?>Jw>!@Jw>!@Zm>>Jw>>_ ?!@Zm>!@Jw>!@Zm>!@>x=?I@>x=?I@Zm>!@>x=?!@;?I@;?I@>x=?!@;?!@oE@I@oE@I@;?!@oE@!@R*q@I@R*q@I@oE@!@R*q@!@oE@I@oE@I@R*q@!@oE@!@;?I@;?I@oE@!@;?!@>x=?I@>x=?I@;?!@>x=?!@Zm>I@Zm>I@>x=?!@Zm>!@Jw>I@Jw>I@Zm>!@Jw>!@Zm>I@Zm>I@Jw>I@Zm>I@>x=?x{(@ߺ?x{(@_ ?I@>x=?I@;?x{(@E/#@x{(@ߺ?I@;?I@oE@x{(@[@x{(@E/#@I@oE@I@R*q@x{(@R*q@x{(@[@I@R*q@I@oE@x{(@[@x{(@R*q@I@oE@I@;?x{(@E/#@x{(@[@I@;?I@>x=?x{(@ߺ?x{(@E/#@I@>x=?I@Zm>x{(@_ ?x{(@ߺ?I@Zm>I@Jw>x{(@Jw>x{(@_ ?I@Jw>I@Zm>x{(@_ ?x{(@Jw>x{(@_ ?x{(@ߺ?H@ߺ?H@_ ?x{(@ߺ?x{(@E/#@H@E/#@H@ߺ?x{(@E/#@x{(@[@H@[@H@E/#@x{(@[@x{(@R*q@H@R*q@H@[@x{(@R*q@x{(@[@H@[@H@R*q@x{(@[@x{(@E/#@H@E/#@H@[@x{(@E/#@x{(@ߺ?H@ߺ?H@E/#@x{(@ߺ?x{(@_ ?H@_ ?H@ߺ?x{(@_ ?x{(@Jw>H@Jw>H@_ ?x{(@Jw>x{(@_ ?H@_ ?H@Jw>H@_ ?H@ߺ?]@lw?]@_ ?H@ߺ?H@E/#@]@B{@]@lw?H@E/#@H@[@]@[@]@B{@H@[@H@R*q@]@R*q@]@[@H@R*q@H@[@]@[@]@R*q@H@[@H@E/#@]@B{@]@[@H@E/#@H@ߺ?]@lw?]@B{@H@ߺ?H@_ ?]@_ ?]@lw?H@_ ?H@Jw>]@Jw>]@_ ?H@Jw>H@_ ?]@_ ?]@Jw>]@_ ?]@lw?R*q@G?R*q@S?]@lw?]@B{@R*q@ʉ?R*q@G?]@B{@]@[@R*q@u!@R*q@ʉ?]@[@]@R*q@R*q@H)@R*q@u!@]@R*q@]@[@R*q@u!@R*q@H)@]@[@]@B{@R*q@ʉ?R*q@u!@]@B{@]@lw?R*q@G?R*q@ʉ?]@lw?]@_ ?R*q@S?R*q@G?]@_ ?]@Jw>R*q@d?R*q@S?]@Jw>]@_ ?R*q@S?R*q@d?Zm>8N?Zm>2?Zm>O@Zm>w @Zm>8N?Zm>O@Zm>@Zm>w @Zm>O@Zm>k$@Zm>@Zm>O@Zm>@Zm>k$@Zm>O@Zm>w @Zm>@Zm>O@Zm>8N?Zm>w @Zm>O@Zm>2?Zm>8N?Zm>O@Zm>g?Zm>2?Zm>O@Zm>2?Zm>g?Zm>O@R*q@S?R*q@G?R*q@O@R*q@G?R*q@ʉ?R*q@O@R*q@ʉ?R*q@u!@R*q@O@R*q@u!@R*q@H)@R*q@O@R*q@H)@R*q@u!@R*q@O@R*q@u!@R*q@ʉ?R*q@O@R*q@ʉ?R*q@G?R*q@O@R*q@G?R*q@S?R*q@O@R*q@S?R*q@d?R*q@O@R*q@d?R*q@S?R*q@O@`A6?x<oL^?%!= A    !"# !#&'$$%&()*(*+./,,-.2300126744569:;89;=>?<=?ABC@ACGDEEFGJKHHIJMNOLMOPQRPRSUVWTUW[XYYZ[_\]]^_`ab`bcdefdfghijhjkolmmnospqqrstuvtvwyz{xy{|}}~         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AV01 - Standard  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinde15AA +R=?k=X?N;E{ >?hB<>[?s@=X?N; 0=X? = >?2=E{ >?hB< 0=X? =q=?d= >[?@Yd= >?2=q=?d=_e=qx?=J >qx?= >[?@Yd=_e=qx?=q=?d= >%?@Yd=J >qx?=q=?d= 0=c? = >-?2= >%?@Yd= 0=c? ==c? N;E{ >-?hB< >-?2==c? N;R=?k>%?s@E{ >-?hB<R=?k?^=qx?[ż'*>qx?,y>%?s@?^=qx?[żR=?k>[?s@'*>qx?,y=c? N; 0=c? ==qx?-<`A6Qs?B.<0?Ah'C?O?= AC      !" "#'$%%&'()*0A9VMtl11 PAZ@(pCylinde16AA9=X?N;R=?k=qx?-< 0=X? ==X?N;=qx?-[?s@E{ >?hBqx?1?hB< >?2=H >qx?1< >?2= >[?@Yd=H >qx?1< >[?@Yd=J >qx?=H >qx?1qx?= >%?@Yd=H >qx?1< >%?@Yd= >-?2=H >qx?1< >-?2=E{ >-?hBqx?1-?hB<>%?s@H >qx?1<>%?s@'*>qx?,yH >qx?1<'*>qx?,y>[?s@H >qx?1<`A6Qs?B.<0?Ah'C?O?= A'   !"#$%&'()*+,-./0123456780A5VMtl12 PAR@pCube5_0GeAA8p?s=))p?s=5p?v}p?`A6p>h=pYp?0e< A90AVMtl13PA@pCube6_0GeAA8VU?s=?s= ?|H?|`A6p>h=$)b?0e< A90AVMtl14PA@pCube7_0GeAA8VU[#@s=[#@s= [#@H[#@`A6p>h=$[@0e< A90AVMtl15PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 & =!*="&zI?>#8> # # # #< #< #<0pSphere1_0@ &!*"&???0$$$DUMMY@pCylinder0 &'O?=!*7=?"&s?[D0?Ah? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0$$$DUMMY@pCylinder3 &(,h^>!*??"&C>rߘ?5= # # # #< #< #<0 pCylinder6@ &!*"&???0 $$$DUMMY@pCylinder4 &[6Vh=? # # # #< #< #<0pCube1_0Ge@  &!*"&???0$$$DUMMY@pCylinder8 &g!*"&W+?b=b= # # # #< #< #<0pCylinder9@ &!*"&???0$$$DUMMY@pCylinde10 &7!*"&W+?b=b= # # # #< #< #<0pCylinde11@ &!*"&???0$$$DUMMY@pCylinde12 &L%!=^!*"&?x<o? # # # #< #< #<0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &'O?=Cֿ!*7=?"&s?[D0?Ah? # # # #< #< #<0pCylinde15@ &!*"&???0pCylinde16@ &!*"&???0$$$DUMMY@pCube02 &pY0e<p!*"&p>h=? # # # #< #< #<0pCube5_0Ge@ &!*"&???0$$$DUMMY@pCube03 &$0e<)b!*"&p>h=? # # # #< #< #<0pCube6_0Ge@ &!*"&???0$$$DUMMY@pCube04 &$0e<[!*"&p>h=? # # # #< #< #<0pCube7_0Ge@ &!*"&???gl-117-1.3.2/models/hall1.3ds0000644000175000017500000001563610145416156014606 0ustar cedriccedricMM ==>=  VMtl01  0 @0A0P0R0S00 ?30dHALL1B_G.RGBQS VMtl02  0 @0A0P0R0S00 ? VMtl03 888  8880 @0A0P0R0S00 ? ?@ pCylinder1A A^,9,=^,x']=Kux']=Ku9,=^,x']=^,.UkKu.UkKux']=^,.Uk^,}c,INKu}c,INKu.Uk^,o.>IN^,#0>kKu#0>kKuo.>IN^,#0>k^,>J]=Ku>J]=Ku#0>k^,>J]=^, R=,=Ku R=,=Ku>J]=^, R=,=^,:u>Ku:u>Ku R=,=^,:u>^,9,=Ku9,=Ku:u>Ku9,=Kux']=o:x']=o:9,=Kux']=Ku.Uko:.Uko:x']=Ku.UkKu}c,INo:}c,INo:.UkKuo.>INKu#0>ko:#0>ko:o.>INKu#0>kKu>J]=o:>J]=o:#0>kKu>J]=Ku R=,=o: R=,=o:>J]=Ku R=,=Ku:u>o::u>o: R=,=Ku:u>Ku9,=o:9,=o::u>o:9,=o:x']=w>x']=w>9,=o:x']=o:.Ukw>.Ukw>x']=o:.Uko:}c,INw>}c,INw>.Uko:o.>INo:#0>kw>#0>kw>o.>INo:#0>ko:>J]=w>>J]=w>#0>ko:>J]=o: R=,=w> R=,=w>>J]=o: R=,=o::u>w>:u>w> R=,=o::u>o:9,=w>9,=w>:u>w>9,=w>x']=2>x']=2>9,=w>x']=w>.Uk2>.Uk2>x']=w>.Ukw>}c,IN2>}c,IN2>.Ukw>o.>INw>#0>k2>#0>k2>o.>INw>#0>kw>>J]=2>>J]=2>#0>kw>>J]=w> R=,=2> R=,=2>>J]=w> R=,=w>:u>2>:u>2> R=,=w>:u>w>9,=2>9,=2>:u>@A@>tA>@>tA> (? (?tA>@>A?@>A? (?tA> (?A?@>qk?@>qk? (?A? (?A?@>?@>? (?A? (??@>q?@>q? (?? (?q?@>g @@>g @ (?q? (?g @@>A@@>A@ (?g @ (?A@@>0@@>0@ (?A@ (? (?tA> (?tA>@@tA> (?A? (?A?@tA>@A? (?qk? (?qk?@A?@A? (?? (??@A?@? (?q? (?q?@?@q? (?g @ (?g @@q?@g @ (?A@ (?A@@g @@A@ (?0@ (?0@@A@@@tA>@tA>1@1@tA>@A?@A?1@tA>1@A?@qk?@qk?1@A?1@A?@?@?1@A?1@?@q?@q?1@?1@q?@g @@g @1@q?1@g @@A@@A@1@g @1@A@@0@@0@1@A@1@1@tA>1@tA>c@c@tA>1@A?1@A?c@tA>c@A?1@qk?1@qk?c@A?c@A?1@?1@?c@A?c@?1@q?1@q?c@?c@q?1@g @1@g @c@q?c@g @1@A@1@A@c@g @c@A@1@0@1@0@c@A@c@`A6g? 5%=Ê?4o:o:o: A@     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJHJKLMNLNOPQRPRSTUVTVWXYZXZ[\]^\^_`ab`bcdefdfghijhjklmnlnopqrprstuvtvwxyzxz{|}~|~0AVMtl01@  !"#$%&'()*+,-./0123456789:;<=>?PA@pCylinder2AA@^,}c,IN^,o.>INKuo.>INKu}c,INKu}c,INKuo.>INo:o.>INo:}c,INo:}c,INo:o.>INw>o.>INw>}c,INw>}c,INw>o.>IN2>o.>IN2>}c,IN^,x']=^,9,=^,>:Ff<^,.Uk^,x']=^,>:Ff<^,}c,IN^,.Uk^,>:Ff<^,#0>k^,o.>IN^,>:Ff<^,>J]=^,#0>k^,>:Ff<^, R=,=^,>J]=^,>:Ff<^,:u>^, R=,=^,>:Ff<^,9,=^,:u>^,>:Ff<2>9,=2>x']=2>:d^<2>x']=2>.Uk2>:d^<2>.Uk2>}c,IN2>:d^<2>o.>IN2>#0>k2>:d^<2>#0>k2>>J]=2>:d^<2>>J]=2> R=,=2>:d^<2> R=,=2>:u>2>:d^<2>:u>2>9,=2>:d^<`A6g? 5%=Ê?4o:o:o: Am     !"#$%&'()*+,-./0123456789:;<=>?0A?VMtl02 PAf@pCylinder3AAP^,o.>IN^,}c,IN^,>:Ff<2>}c,IN2>o.>IN2>:d^<`A6g? 5%=Ê?4o:o:o: A90AVMtl03PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*I@?"&g?%=?Ê? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???gl-117-1.3.2/models/hall2.3ds0000644000175000017500000002121110145416156014571 0ustar cedriccedricMM" ==>=  VMtl01  0 @0A0P0R0S00 ? VMtl02 fff  fff0 @0A0P0R0S00 ?30dHALL2B_C.RGBQS VMtl03 fff  fff0 @0A0P0R0S00 ? VMtl04 fff  fff0 @0A0P0R0S00 ? VMtl05 fff  fff0 @0A0P0R0S00 ? ?@ pCylinder1A Ayg>|g>nK:>h>HK:>h>7|g>G7<:>h>HKme|g>"Kme|g>7<:>h>7"Ky2f{:'Kx2fk:77pexKyg>pe27<:x2f}7pexK>h>{:sK>h>k:<7pe27<>h>{:sKyg>|g>nKyg>|g>G7<>h>k:<7|g>G7<:>h>7<:>h>CX=yg>|g>0X=:>h>77VX=:>h>CX=me|g>7VX=x2fk:7X=mepePX=:x2f}7pe27pe+X=:x2f>X=yg>pe27<>h>k:<7<>h>\:-X=yg>pe+X=>h>k:<7|g>G7|g>0X=>h>\:-X=yg>|g>0X=:>h>CX=R:>h>=yg>|g>=:>h>CX=me|g>VX=me|g>=R:>h>=me|g>VX=w2f\:SX=v2fO:=me|g>=w2f\:SX=mepePX=mepe=v2fO:=mepePX=:x2f>X=R:x2f=mepe=:x2f>X=yg>pe+X=yg>pe=R:x2f=yg>pe+X=>h>\:-X=>h>O:=yg>pe=>h>\:-X=yg>|g>0X=yg>|g>=>h>O:=yg>|g>=R:>h>=Oxƽ>h>> =|g>;Q=R:>h>=me|g>=me|g>z->Oxƽ>h>>me|g>=v2fO:=u2f0:z->me|g>z->v2fO:=mepe=mepez->u2f0:z->mepe=R:x2f=Oxƽy2f>mepez->R:x2f=yg>pe= =pe8Q=Oxƽy2f>:>h>HKyg>|g>nK:{:MKme|g>"K:>h>HK:{:MKy2f{:'Kme|g>"K:{:MKmepe-Ky2f{:'K:{:MK:x2fSKmepe-K:{:MKyg>pexK:x2fSK:{:MK>h>{:sKyg>pexK:{:MKyg>|g>nK>h>{:sK:{:MK`A6r3m>-\ -4-ZNo:o:o: AD     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJHJKLMNLNOPQRPRSTUVTVWXYZXZ[\]^\^_abc`acefgdeghijhjklmnlnorsppqrvwttuvxyz{|}~0AVMtl01D  !"#$%&'()*+,-./0123456789:;<=>?@ABCPA@pCylinder2AA yg>pe=>h>O:= =B:9Q= =pe8Q=>h>O:=yg>|g>= =|g>;Q= =B:9Q= =|g>;Q=Oxƽ>h>>Oxƽ8:>Oxƽ>h>>me|g>z->Oxƽ8:>me|g>z->u2f0:z->Oxƽ8:>u2f0:z->mepez->Oxƽ8:>mepez->Oxƽy2f>Oxƽ8:>Oxƽy2f> =pe8Q=Oxƽ8:> =pe8Q= =B:9Q=Oxƽ8:> =B:9Q= =|g>;Q=Oxƽ8:>@A @$KA@@@@ͯ@$KA@@@$ ͯ@$ @@ͯ@$ ?ԝ ?@?ԝ w;$ ?@w;$ @?@@w;$KA?@w;$KA?ԝKA?@?ԝKAͯ@$KA?@ͯ@$KA@@?@@@ͯ@$ ?@`A6r3m>-\ -4-ZNo:o:o: A   0A'VMtl02  PA6@:pCube1_0GeA)A(jQl=PQl=PQl===jQl===jQl===PQl===PQl=>@=jQl=>@=jQl=>@=PQl=>@=PQl=>jQl=>jQl=>PQl=>PQl=jQl=PQl=PQl=>PQl=>@=PQl===jQl=>jQl=jQl===jQl=>@=`A64%>*=QlꊲBFS]= A     0A'VMtl03  PA6@:pCube2_0GeA)A(BYL7>*xѼTL7>*xѼTL7>v=BYL7>v=BYL7>v=TL7>v=TནXj>v=BYXj>v=BYXj>v=TནXj>v=TནXj>(xѼBYXj>(xѼBYXj>(xѼTནXj>(xѼTL7>*xѼBYL7>*xѼTL7>*xѼTནXj>(xѼTནXj>v=TL7>v=BYXj>(xѼBYL7>*xѼBYL7>v=BYXj>v=`A6bf=ӀT=w.LԼvlP>ލ< A     0A'VMtl04  PA6@:pCube3_0GeA)A(BY:i4xѼTན:i4xѼTན:iv=BY:iv=BY:iv=Tན:iv=T.6v=BY.6v=BY.6v=T.6v=T.62xѼBY.62xѼBY.62xѼT.62xѼTན:i4xѼBY:i4xѼTན:i4xѼT.62xѼT.6v=Tན:iv=BY.62xѼBY:i4xѼBY:iv=BY.6v=`A6bf=ӀT=w.LԼvlĴOuލ< A     0A'VMtl05  PA6x MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>-?-? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0$$$DUMMY@pCube01 &BS]=!*"&4%>*=Ql> # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &vlzލ!*"&bf=T=w.L= # # # #< #< #<0 pCube3_0Ge@  &!*"&???gl-117-1.3.2/models/house1.3ds0000644000175000017500000001001710145416156014775 0ustar cedriccedricMM == >= 01 - Standard 6  60 @0 A0P0R0S00 ?Q0dHOUSE_S1.TGAQS T @X >Z Q02 - Standard  0 @0 A0P0R0S00 ?C0dROOF.TGAQS T L@V L@ ?@/Quader01A A@(Al@#_>(AlAl@#_>Al(A1@@#_>(A1@A1@@#_>A1@(Al@#_>(Al@#_>(A1@@#_>(A1@(A1@(Al@#_>Al@#_>(A1@@#_>AlAlA1@A1@@#_>A1@@#_>AlAl(A1@(A1@Al@A??????????????????????????`A6?x??`>wwAl A   0A.01 - Standard  PA6 @@@/Quader02A A@%{ADA?{ADA%A@?A@%}AA?}AA%DA@?DA@%{ADA?{ADA?}AA?}AA%}AA%{ADA?A@?}AA?A@%A@%DA@%DA@?DA@?A@%A@%}AA%}AA%A@@A??????????????????????????`A6 ?yF?v:8>{O?}A@ A   0A.02 - Standard  PA6 @@@/Quader03A A@m)&BAX5@Ң?BAX5@m)&k~A#AҢ?k~A#Am)&$A@Ң?$A@m)&"{ASAҢ?"{ASAm)&BAX5@Ң?BAX5@Ң?$A@Ң?$A@m)&$A@m)&BAX5@Ң?k~A#AҢ?$A@Ң?k~A#Am)&k~A#Am)&"{ASAm)&"{ASAҢ?"{ASAҢ?k~A#Am)&k~A#Am)&$A@m)&$A@m)&k~A#A@A??????????????????????????`A6ﯲ?Q?ޜ-?o?d ?,ϑoWKA@ A   0A.02 - Standard  PA6 @@@Quader04ApAh*A1 @@#_>*A1 @ɉA1 @@#_>ɉA1 @ŰxAA@#_>ŰxAAzFAA@#_>zFAA`A6?x??`>wwAΚ@ A 0A.01 - Standard  PA6 @@ MAXSCENEdd 0Quader01@ &`>wwAl!*"&?x??0Quader02@ &}A@!*x#??"& ?a?Y?0Quader03@ &,ϑoWKA@!*8`N?"&ﯲ?a?Y?0Quader04@ &`>wwAΚ@!*"&?x??gl-117-1.3.2/models/mine1.3ds0000644000175000017500000002503510145416156014610 0ustar cedriccedricMM* =="%>=  VMtl01 (  0 @0A0P0R0S00 ? VMtl02   0 @0A0P0R0S00 ? ?@pSphere1_0AA`>>Al>>AlA?A?n4~'?>m4>>AlY>>Al>~'?n4A?A?n4>Al>Al|A?n4~'?n4>AlԁU>Al&>m4|A?n4ԁAlAl||m4&m4AlՁAl&l4||m4Y>ՁAl>AlA?|m4>&l4>Al>Al~'?m4A?|m4~'?>m4A?A?n4'?~'?kþZ?>kþA?A?n4>~'?n4>Z?kþ'?~'?kþ~'?n4|A?n4&'?kþԁZ?kþ|A?n4&>m4@Z>kþ&'?kþ&m4||m4&&kþ@Zԁkþ||m4&l4@Zkþ&&kþ>&l4A?|m4~'?&kþ>@ZkþA?|m4~'?m4Z?ԁkþ~'?&kþZ?>kþ'?~'?kþF5?oF5?:l?r>:'?~'?kþ>Z?kþ:r>l?:F5?oF5?:>Z?kþo:l?kþo: ?o::r>l?:o:l?kþԁZ?kþkþl?:o: ?o:ԁZ?kþ&'?kþ]4F5?:kþl?:&'?kþ@Z>kþAl:r>:]4F5?:@Z>kþAl:kþwo:o:Al:r>:Al:kþ@ZԁkþAlkþ3:wo:o:@Zԁkþ&&kþn4m4:Alkþ3:&&kþ@ZkþlþAlH:n4m4:@Zkþo:Alkþo:vo:lþAlH:o:Alkþ>@Zkþr>AlH:o:vo:>@Zkþ~'?&kþF5?m4:r>AlH:~'?&kþZ?ԁkþl?kþ3:F5?m4:Z?ԁkþl?:kþ ?o:o:l?kþ3:l?:kþZ?>kþl?r>: ?o:o:l?r>:F5?oF5?:'?~'?r>Z?>r>F5?oF5?::r>l?:>Z?r>'?~'?r>:r>l?:o: ?o:o:l?r>>Z?r>o: ?o:kþl?:ԁZ?r>o:l?r>kþl?:]4F5?:&'?r>ԁZ?r>]4F5?:Al:r>:@Z>r>&'?r>Al:r>:wo:o:Al3:r>@Z>r>wo:o:Alkþ3:@Zҁr>Al3:r>Alkþ3:n4m4:&&r>@Zҁr>n4m4:lþAlH:@Zr>&&r>lþAlH:o:vo:o:Alr>@Zr>o:vo:r>AlH:>@Zr>o:Alr>r>AlH:F5?m4:~'?&r>>@Zr>F5?m4:l?kþ3:Z?ҁr>~'?&r>l?kþ3: ?o:o:l?3:r>Z?ҁr> ?o:o:l?r>:Z?>r>l?3:r>Z?>r>'?~'?r>A?A?F5?~'?>F5?'?~'?r>>Z?r>>~'?F5?A?A?F5?ԁZ?r>&'?r>|A?F5?~'?F5?&'?r>@Z>r>&>F5?|A?F5?@Zҁr>&&r>||F5?&F5?&&r>@Zr>&F5?||F5?>@Zr>~'?&r>A?|F5?>&F5?~'?&r>Z?ҁr>~'?F5?A?|F5?~'?>F5?A?A?F5?>>l?>>l?A?A?F5?>~'?F5?Y>>l?>>l?~'?F5?|A?F5?>l?>l?|A?F5?&>F5?ԁ\>l?>l?&F5?||F5?l?ԁl?||F5?&F5?сl?l?>&F5?A?|F5?>l?Y>сl?A?|F5?~'?F5?> l?>l?>>Al>>Alo:o:vY>>Al>>Alo:o:vo:r>AlY>>Alo:o:v>Alo:r>Alo:o:v>Al>Alo:o:vԁU>Al>Alo:o:vkþ:AlԁU>Alo:o:vԁAlkþ:Alo:o:vAlԁAlo:o:vՁAlAlo:o:vo:kþAlՁAlo:o:vY>ՁAlo:kþAlo:o:v>AlY>ՁAlo:o:v>Al>Alo:o:vr>:Al>Alo:o:v>>Alr>:Alo:o:v>>l?>>l?o:o: ?>>l?Y>>l?o:o: ?Y>>l?o:r>l?o:o: ?o:r>l?>l?o:o: ?>l?>l?o:o: ?>l?ԁ\>l?o:o: ?ԁ\>l?kþH:l?o:o: ?kþH:l?ԁl?o:o: ?ԁl?l?o:o: ?l?сl?o:o: ?сl?o:kþl?o:o: ?o:kþl?Y>сl?o:o: ?Y>сl?>l?o:o: ?>l?> l?o:o: ?> l?r>H:l?o:o: ?r>H:l?>>l?o:o: ?`A6?3?3o:o:o: A    "#  !"&'$$%&*+(()*./,,-.2300126744569:;89;>?<<=>ABC@ACEFGDEGIJKHIKNOLLMNQRSPQSUVWTUWYZ[XY[^_\\]^abc`acefgdegijkhiknollmnqrspqsuvwtuwz{xxyz~||}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_0AOVMtl01  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@ pSphere1_1A AY>>Alo:r>Al3:?O>~'?n4o:r>Al>Al~'?n43:?OԁU>Alkþ:AlOV0:N&>m4kþ:AlԁAl&m4OV0:NՁAlo:kþAlo:ON&l4o:kþAlY>ՁAl>&l4o:ON>Alr>:Al?:N~'?m4r>:Al>>Al~'?>m4?:N>~'?n43:?Oo:l?kþ>Z?kþ3:?O~'?n4ԁZ?kþo:l?kþ&>m4OV0:NAl:kþ@Z>kþOV0:N&m4@ZԁkþAl:kþ&l4o:ONo:Alkþ@Zkþo:ON>&l4>@Zkþo:Alkþ~'?m4?:Nl?:kþZ?ԁkþ?:N~'?>m4Z?>kþl?:kþ>Z?r>o:l?r>3:??>~'?F5?o:l?r>ԁZ?r>~'?F5?3:??@Z>r>Al3:r>O鿤7:?&>F5?Al3:r>@Zҁr>&F5?O鿤7:?@Zr>o:Alr>o:N?&F5?o:Alr>>@Zr>>&F5?o:N?Z?ҁr>l?3:r>?:?~'?F5?l?3:r>Z?>r>~'?>F5??:?>~'?F5?3:??o:r>l?Y>>l?3:??~'?F5?>l?o:r>l?&>F5?O鿤7:?kþH:l?ԁ\>l?O鿤7:?&F5?ԁl?kþH:l?&F5?o:N?o:kþl?сl?o:N?>&F5?Y>сl?o:kþl?~'?F5??:?r>H:l?> l??:?~'?>F5?>>l?r>H:l?`A6?3?3o:o:o: A@     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?ABC@ACFGDDEFIJKHIKNOLLMNQRSPQSVWTTUVYZ[XY[^_\\]^`ab`bcgdeefghijhjkolmmnopqrprswtuuvwxyzxz{|}}~0AVMtl02@  !"#$%&'()*+,-./0123456789:;<=>?PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &!*"&??? # # # #< #< #<0pSphere1_0@ &!*"&???0pSphere1_1@ &!*"&???gl-117-1.3.2/models/missile1.3ds0000644000175000017500000002425710145416156015332 0ustar cedriccedricMM( ==>=  VMtl01 !!!  0 @0A0P0R0S00 ? VMtl02 (  0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04 !!!  0 @0A0P0R0S00 ? VMtl05 !!!  0 @0A0P0R0S00 ? VMtl06 !!!  0 @0A0P0R0S00 ? VMtl07 !!!  0 @0A0P0R0S00 ? VMtl08 !!!  0 @0A0P0R0S00 ? VMtl09 !!!  0 @0A0P0R0S00 ? VMtl10 !!!  0 @0A0P0R0S00 ? VMtl11 !!!  0 @0A0P0R0S00 ? ?@2pCylinder1A!A@\; =u =\;Z:yV=s:ʄ=s+<=<=\;Z:yV=\;v =s4<=s:ʄ=\;v =\; N:s):s4<=\; N:\; Ns44s):\; N\;%:RNs{:As44\;%:RN\; =Ps)<=4s{:A\; =P\;V=U:sʄ=N:s)<=4\;V=U:\; =u =s+<=<=sʄ=N:s+<=<=s:ʄ=nJ2>?vw)o:o:o: A      !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?0AOVMtl01  PA@pCylinder2AA(\;Z:yV=\; =u =;m:o:\;v =\;Z:yV=;m:o:\; N:\;v =;m:o:\; N\; N:;m:o:\;%:RN\; N;m:o:\; =P\;%:RN;m:o:\;V=U:\; =P;m:o:\; =u =\;V=U:;m:o:`A6gf3>2>?vw)o:o:o: A  0AVMtl02PA&@pCylinder3AA(oJ2>?vw)o:o:o: A  0AVMtl03PA&@pCube1_0GeAA8>T~f9?T~L@?N2>#ս`A6'>U2U>ww1?轘L= A90AVMtl04PA@pCube2_0GeAA8>HRlff9?HRlfL@?Uli7>Sl,'޽`A6'>U>3\w?=׽! A90AVMtl05PA@pCube3_0GeAA8>S=Pf9?S=PL@?2>gP>=P`A6'>&n3Uw=f 3?=׽ A90AVMtl06PA@pCube4_0GeAA8>FQ+o=f9?FQ+o=L@?Q؆9>>QQb=`A6'>U>3*w=?Z=Q= A90AVMtl07PA@pCube5_0GeAA8C. i_YQ  i_2 ^&'p_`A6>W22V2>ݑѽޑ1u7±= A90AVMtl08PA@pCube7_0GeAA8C.ˣ =j-YQ ˣ =j-1 >-&'lӝ=-`A6>#G3V2ݑ=P2ך= A90AVMtl09PA@pCube8_0GeAA8C..1=YQ .1=.z? >&'.=`A6>V2>^3*ܑ=M= = A90AVMtl10PA@pCube6_0GeAA8C. EVYQ EVo#E &'!E`A6>V2 3_7ܑѽC᳽[t A90AVMtl11PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>>? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0$$$DUMMY@pCube01 &?L==!*"&'>U>w= # # # #< #< #<0pCube1_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &?#==!*?"&'>U>w= # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &?׽!*I@"&'>U>w= # # # #< #< #<0 pCube3_0Ge@  &!*"&???0 $$$DUMMY@pCube04 &?Q=ZԽ!*??"&'>U>w= # # # #< #< #<0pCube4_0Ge@  &!*"&???0$$$DUMMY@pCube05 &±=v7=!*"&>W2>ޑ= # # # #< #< #<0pCube5_0Ge@ &!*"&???0$$$DUMMY@pCube06 &ؚ!*I@"&>W2>ޑ= # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube07 & =M!*??"&>W2>ޑ= # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCube08 &\tC=!*?"&>W2>ޑ= # # # #< #< #<0pCube6_0Ge@ &!*"&???gl-117-1.3.2/models/missile2.3ds0000644000175000017500000002520010145416156015320 0ustar cedriccedricMM* == >=  VMtl01   0 @0A0P0R0S00 ? VMtl02 (  0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04 %%%  0 @0A0P0R0S00 ? VMtl05   0 @0A0P0R0S00 ? VMtl06   0 @0A0P0R0S00 ? VMtl07   0 @0A0P0R0S00 ? VMtl08   0 @0A0P0R0S00 ? VMtl09   0 @0A0P0R0S00 ? VMtl10   0 @0A0P0R0S00 ? VMtl11   0 @0A0P0R0S00 ? VMtl12   0 @0A0P0R0S00 ? ?@pCylinder1AA Չ -<=<=Չ :ʄ=D?W :ʄ=D?<=<=Չ :ʄ=Չ 4<=D?4<=D?W :ʄ=Չ 4<=։ (:D?f:D?4<=։ (:Չ 44D?44D?f:Չ 44Չ :AD? :AD?44Չ :AՉ ,<=4D?<=4D? :AՉ ,<=4Չ ʄ=N:D?ʄ=N:D?<=4Չ ʄ=N:Չ -<=<=D?<=<=D?ʄ=N:`A6gf3>2>?~ ~ )o:o:o: A    0A/VMtl01 PAF@pCylinder2AA(xD:yV=xD =u =6x:o:xDv =xD:yV=6x:o:xDN:xDv =6x:o:xDNxDN:6x:o:xD:RNxDN6x:o:xD =PxD:RN6x:o:xD¿V=U:xD =P6x:o:xD =u =xD¿V=U:6x:o:`A6gf3>2>?~ ~ )o:o:o: A  0AVMtl02PA&@pCylinder3AA(D?<=<=D?W :ʄ=AkK?:o:D?W :ʄ=D?4<=AkK?:o:D?4<=D?f:AkK?:o:D?f:D?44AkK?:o:D?44D? :AAkK?:o:D? :AD?<=4AkK?:o:D?<=4D?ʄ=N:AkK?:o:D?ʄ=N:D?<=<=AkK?:o:`A6gf3>2>?~ ~ )o:o:o: A  0AVMtl03PA&@pCylinder4AA xD =u =xD:yV=Չ :ʄ=Չ -<=<=xD:yV=xDv =Չ 4<=Չ :ʄ=xDv =xDN:։ (:Չ 4<=xDN:xDNՉ 44։ (:xDNxD:RNՉ :AՉ 44xD:RNxD =PՉ ,<=4Չ :AxD =PxD¿V=U:Չ ʄ=N:Չ ,<=4xD¿V=U:xD =u =Չ -<=<=Չ ʄ=N:`A6gf3>2>?~ ~ )o:o:o: A    0A/VMtl04 PAF@pCube1_0GeAA8>T~TB?T~U2U>ww1S?轘L= A90AVMtl05PA@pCube2_0GeAA8>HRlfTB?HRlfU>3\wS?=׽! A90AVMtl06PA@pCube3_0GeAA8>S=PTB?S=PgP?=P`A6ȕ>&n3Uw=f 3S?=׽ A90AVMtl07PA@pCube4_0GeAA8>FQ+o=TB?FQ+o=?QQb=`A6ȕ>U>3*w=S?Z=Q= A90AVMtl08PA@pCube5_0GeAA8r6*G*$|g)B^`A68;>JX2JX>H+I+1*Խ= A90AVMtl09PA@pCube7_0GeAA8r6&=RG&=R$|O(>dRBi=R`A68;>q3JXH+=3 3=ٽ A90AVMtl10PA@pCube8_0GeAA8r6BS0=GBS0=$|SN+>BPSyd=`A68;>JX>.3 G+=== A90AVMtl11PA@pCube6_0GeAA8r6nC2GnC2$|=n4+B=nKŽ`A68;>JX|A3e^G+ᄏ(ڽnؽ A90AVMtl12PAf MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>>? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0pCylinder4@ &!*"&???0$$$DUMMY@pCube01 &S?L==!*"&ȕ>U>w= # # # #< #< #<0 pCube1_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &S?#==!*?"&ȕ>U>w= # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &S?׽!*I@"&ȕ>U>w= # # # #< #< #<0 pCube3_0Ge@  &!*"&???0$$$DUMMY@pCube04 &S?Q=ZԽ!*??"&ȕ>U>w= # # # #< #< #<0pCube4_0Ge@ &!*"&???0$$$DUMMY@pCube05 &=,=!*"&8;>JX>I+= # # # #< #< #<0pCube5_0Ge@ &!*"&???0$$$DUMMY@pCube06 &ᄁٽҽ!*I@"&8;>JX>I+= # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube07 &ヒ=ֽ!*??"&8;>JX>I+= # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCube08 &nؽ(=!*?"&8;>JX>I+= # # # #< #< #<0pCube6_0Ge@ &!*"&???gl-117-1.3.2/models/missile3.3ds0000644000175000017500000002520010145416156015321 0ustar cedriccedricMM* == >=  VMtl01   ~~~0 @0A0P0R0S00 ? VMtl02 (  &0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04   0 @0A0P0R0S00 ? VMtl05   0 @0A0P0R0S00 ? VMtl06   0 @0A0P0R0S00 ? VMtl07   0 @0A0P0R0S00 ? VMtl08   0 @0A0P0R0S00 ? VMtl09   0 @0A0P0R0S00 ? VMtl10   0 @0A0P0R0S00 ? VMtl11   0 @0A0P0R0S00 ? VMtl12   0 @0A0P0R0S00 ? ?@pCylinder1AA gCC<=<=gC:ʄ=HKs?+:ʄ=IKs?<=<=gC:ʄ=gC4<=HKs?,4<=HKs?+:ʄ=gC4<=gC:HKs?o:HKs?,4<=gC:gC44HKs?.44HKs?o:gC44gCv:AHKs?:AHKs?.44gCv:AgCA<=4IKs?<=4HKs?:AgCA<=4gCʄ=N:IKs?ʄ=N:IKs?<=4gCʄ=N:gCC<=<=IKs?<=<=IKs?ʄ=N:`A6gf3>2>Rv?X+X+)o:o:o: A    0A/VMtl01 PAF@pCylinder2AA(6r:yV=6r =u = Z :o:6rv =6r:yV= Z :o:6rN:6rv = Z :o:6rN6rN: Z :o:6r:RN6rN Z :o:6r =P6r:RN Z :o:6rԿV=U:6r =P Z :o:6r =u =6rԿV=U: Z :o:`A6gf3>2>Rv?X+X+)o:o:o: A  0AVMtl02PA&@pCylinder3AA(IKs?<=<=HKs?+:ʄ=_>{?:o:HKs?+:ʄ=HKs?,4<=_>{?:o:HKs?,4<=HKs?o:_>{?:o:HKs?o:HKs?.44_>{?:o:HKs?.44HKs?:A_>{?:o:HKs?:AIKs?<=4_>{?:o:IKs?<=4IKs?ʄ=N:_>{?:o:IKs?ʄ=N:IKs?<=<=_>{?:o:`A6gf3>2>Rv?X+X+)o:o:o: A  0AVMtl03PA&@pCylinder4AA 6r =u =6r:yV=gC:ʄ=gCC<=<=6r:yV=6rv =gC4<=gC:ʄ=6rv =6rN:gC:gC4<=6rN:6rNgC44gC:6rN6r:RNgCv:AgC446r:RN6r =PgCA<=4gCv:A6r =P6rԿV=U:gCʄ=N:gCA<=46rԿV=U:6r =u =gCC<=<=gCʄ=N:`A6gf3>2>Rv?X+X+)o:o:o: A    0A/VMtl04 PAF@pCube5_0GeAA8 vŧá vŧz'ħŧ`A6iW>`YI2_YI>콄1?Ž= A90AVMtl05PA@pCube7_0GeAA8jf=ZDájf=ZDz\'>WDj0=(YD`A6iW>]`3_YI="3?=ʽ A90AVMtl06PA@pCube8_0GeAA8bEV$=ábEV$=z(eEx>cEҶ=`A6iW>^YI>{32=?=p= A90AVMtl07PA@pCube6_0GeAA8^aZ&á^aZ&z^YB^e`A6iW>^YI3.3O?˽zɽ A90AVMtl08PA@pCube4_0GeAA8>lVvt=l?lVvt=L?AoV =>`?mVne=`A6>Z>ഈ3y a>.?$== A90AVMtl09PA@pCube3_0GeAA8>xX=dUl?xX=dUL?6>aU`?sf=+cU`A6>=t3Za>3.?=eܽ A90AVMtl10PA@pCube2_0GeAA8>q"kl?q"kL?Bqix;`?Zc3`a.?gܽll A90AVMtl11PA@pCube1_0GeAA8>cYl?cYL?G6쵹`?ٽ`A6>Z2Z>ab2.?-6= A90AVMtl12PAf MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>>Sv? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0pCylinder4@ &!*"&???0$$$DUMMY@pCube01 &?==!*"&iW>`YI>= # # # #< #< #<0 pCube5_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &?ʽĽ!*I@"&iW>`YI>= # # # #< #< #<0 pCube7_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &?r=ǽ!*??"&iW>`YI>= # # # #< #< #<0 pCube8_0Ge@  &!*"&???0$$$DUMMY@pCube04 &?zɽ=!*?"&iW>`YI>= # # # #< #< #<0pCube6_0Ge@ &!*"&???0$$$DUMMY@pCube05 &.?=$ٽ!*??"&>Z>b> # # # #< #< #<0pCube4_0Ge@ &!*"&???0$$$DUMMY@pCube06 &.?eܽ!*I@"&>Z>b> # # # #< #< #<0pCube3_0Ge@ &!*"&???0$$$DUMMY@pCube07 &.?nlg=!*?"&>Z>b> # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube08 &.?=/6=!*"&>Z>b> # # # #< #< #<0pCube1_0Ge@ &!*"&???gl-117-1.3.2/models/missile4.3ds0000644000175000017500000001633710145416156015335 0ustar cedriccedricMM ==&>=  VMtl01   0 @0A0P0R0S00 ? VMtl02 (  G0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04   0 @0A0P0R0S00 ? VMtl05   0 @0A0P0R0S00 ? VMtl06   0 @0A0P0R0S00 ? VMtl07   0 @0A0P0R0S00 ? ?@pCylinder1AA +}==Z}==+X:3$=iH? :3$=iH?%}==Z}==+X:3$=+L5[}==iH?iL5[}==iH? :3$=+L5[}==+ :iH? :iH?iL5[}==+ :+L53L5iH?jL53L5iH? :+L53L5+: iH? : iH?jL53L5+: +}==4L5iH?$}==4L5iH? : +}==4L5+J$=N:jH?$=N:iH?$}==4L5+J$=N:+}==Z}==iH?%}==Z}==jH?$=N:`A63>2>c?d˴f(o:o:o: A    0A/VMtl01 PAF@bpCylinder2AQA8W=X=WK:~^=+X:3$=+}==Z}==WK:~^=WUY=+L5[}==+X:3$=WUY=WMV:+ :+L5[}==WMV:WU1V+L53L5+ :WU1VW:MV+: +L53L5W:MVW=2V+}==4L5+: W=2VV'^=T:+J$=N:+}==4L5V'^=T:W=X=+}==Z}==+J$=N:WK:~^=W=X=5:o:WUY=WK:~^=5:o:WMV:WUY=5:o:WU1VWMV:5:o:W:MVWU1V5:o:W=2VW:MV5:o:V'^=T:W=2V5:o:W=X=V'^=T:5:o:`A63>2>c?d˴f(o:o:o: Am     !"#$%&'()*+,-./012345670A?VMtl02 PAf@pCylinder3AA(iH?%}==Z}==iH? :3$=m?v :o:iH? :3$=iH?iL5[}==m?v :o:iH?iL5[}==iH? :m?v :o:iH? :iH?jL53L5m?v :o:iH?jL53L5iH? : m?v :o:iH? : iH?$}==4L5m?v :o:iH?$}==4L5jH?$=N:m?v :o:jH?$=N:iH?%}==Z}==m?v :o:`A63>2>c?d˴f(o:o:o: A  0AVMtl03PA&@pCube4_0GeAA8T>nj-= ?nj-=B?o>_ˣ>n=`A6Dj>>B3؏zٶ=>8i=`= A90AVMtl04PA@pCube1_0GeAA8T> [; ? [;B??:_ˣ>a;`A6Dj>2>zٶ{ٶ1>= A90AVMtl05PA@pCube2_0GeAA8T>@+w' ?@+w'B?+\_ˣ>P+`A6Dj>&3Kzٶ>L A90AVMtl06PA@pCube3_0GeAA8T>==̧ ?==̧B?L>4_ˣ>z=`A6Dj>!-3zٶ=-2>k=dɜ A90AVMtl07PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>>c? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0$$$DUMMY@pCube01 &>`=8i!*??"&Dj>>{ٶ= # # # #< #< #<0pCube4_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &>=¿=!*"&Dj>>{ٶ= # # # #< #< #<0 pCube1_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &>L=!*?"&Dj>>{ٶ= # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCube04 &>dɜk!*I@"&Dj>>{ٶ= # # # #< #< #<0pCube3_0Ge@  &!*"&???gl-117-1.3.2/models/missile5.3ds0000644000175000017500000001633710145416156015336 0ustar cedriccedricMM ==&>=  VMtl01 %%%  0 @0A0P0R0S00 ? VMtl02 (  ̂0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04 %%%  0 @0A0P0R0S00 ? VMtl05 %%%  0 @0A0P0R0S00 ? VMtl06 %%%  0 @0A0P0R0S00 ? VMtl07 %%%  0 @0A0P0R0S00 ? ?@pCylinder1AA Ͼ}==Z}==Ͼr:3$=\?_ :3$=\?*}==Z}==Ͼr:3$=Ͼ L5[}==\?eL5[}==\?_ :3$=Ͼ L5[}==Ͼ :\? :\?eL5[}==Ͼ :Ͼ L53L5\?fL53L5\? :Ͼ L53L5Ͼ1: \? : \?fL53L5Ͼ1: Ͼ}==4L5\?(}==4L5\? : Ͼ}==4L5ϾF$=N:\?$=N:\?(}==4L5ϾF$=N:Ͼ}==Z}==\?*}==Z}==\?$=N:`A63>2>\x?EE(o:o:o: A    0A/VMtl01 PAF@bpCylinder2AQA8=X=:~^=Ͼr:3$=Ͼ}==Z}==:~^=VY=Ͼ L5[}==Ͼr:3$=VY=MV:Ͼ :Ͼ L5[}==MV:V1VϾ L53L5Ͼ :V1V:MVϾ1: Ͼ L53L5:MV=2VϾ}==4L5Ͼ1: =2V#^=T:ϾF$=N:Ͼ}==4L5#^=T:=X=Ͼ}==Z}==ϾF$=N::~^==X=&A:o:VY=:~^=&A:o:MV:VY=&A:o:V1VMV:&A:o::MVV1V&A:o:=2V:MV&A:o:#^=T:=2V&A:o:=X=#^=T:&A:o:`A63>2>\x?EE(o:o:o: Am     !"#$%&'()*+,-./012345670A?VMtl02 PAf@pCylinder3AA(\?*}==Z}==\?_ :3$=D? :o:\?_ :3$=\?eL5[}==D? :o:\?eL5[}==\? :D? :o:\? :\?fL53L5D? :o:\?fL53L5\? : D? :o:\? : \?(}==4L5D? :o:\?(}==4L5\?$=N:D? :o:\?$=N:\?*}==Z}==D? :o:`A63>2>\x?EE(o:o:o: A  0AVMtl03PA&@pCube4_0GeAA8>nj-=>nj-==?o>#<>n=`A6}>>B3؏zٶ=gF>8i=`= A90AVMtl04PA@pCube1_0GeAA8> [;> [;=??:#<>a;`A6}>2>zٶ{ٶ1gF>= A90AVMtl05PA@pCube2_0GeAA8>@+w'>@+w'=?+\#<>P+`A6}>&3KzٶgF>L A90AVMtl06PA@pCube3_0GeAA8>==̧>==̧=?L>4#<>z=`A6}>"-3zٶ=-2gF>k=dɜ A90AVMtl07PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>>\x? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0$$$DUMMY@pCube01 &gF>`=8i!*??"&}>>{ٶ= # # # #< #< #<0pCube4_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &gF>=¿=!*"&}>>{ٶ= # # # #< #< #<0 pCube1_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &gF>L=!*?"&}>>{ٶ= # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCube04 &gF>dɜk!*I@"&}>>{ٶ= # # # #< #< #<0pCube3_0Ge@  &!*"&???gl-117-1.3.2/models/missile6.3ds0000644000175000017500000001726010145416156015333 0ustar cedriccedricMM ==J>=  VMtl01   0 @0A0P0R0S00 ? VMtl02 (  0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04 !  S-0 @0A0P0R0S00 ? VMtl05   0 @0A0P0R0S00 ? VMtl06   0 @0A0P0R0S00 ? VMtl07   0 @0A0P0R0S00 ? VMtl08   0 @0A0P0R0S00 ? ?@pCylinder1AA &L=L=&5:0 =;>b :0 =<>L=L=&5:0 ='DL=;>DL=;>b :0 ='DL='񋽒:;>񋽒:;>DL='񋽒:'DյD;>DյD;>񋽒:'DյD&:;> :;>DյD&:&L=׵D<>L=׵D;> :&L=׵D%? =L:<> =L:<>L=׵D%? =L:&L=L=<>L=L=<> =L:`A6u83MЦ>MЦNЦ2MЦ>/+P?c d (o:o:o: A    0A/VMtl01 PAF@pCylinder2AA(ܾ:h=ܾ%=%=7 :o:ܾ%=ܾ:h=7 :o:ܾN`:ܾ%=7 :o:ܾܾN`:7 :o:ܾ:w`ܾ7 :o:ܾ%=ܾ:w`7 :o:ܾh=R:ܾ%=7 :o:ܾ%=%=ܾh=R:7 :o:`A6u83MЦ>MЦNЦ2MЦ>/+P?c d (o:o:o: A  0AVMtl02PA&@pCylinder3AA(<>L=L=;>b :0 =4> :o:;>b :0 =;>DL=4> :o:;>DL=;>񋽒:4> :o:;>񋽒:;>DյD4> :o:;>DյD;> :񋽍4> :o:;> :<>L=׵D4> :o:<>L=׵D<> =L:4> :o:<> =L:<>L=L=4> :o:`A6u83MЦ>MЦNЦ2MЦ>/+P?c d (o:o:o: A  0AVMtl03PA&@pCylinder4AA ܾ%=%=ܾ:h=&5:0 =&L=L=ܾ:h=ܾ%='DL=&5:0 =ܾ%=ܾN`:'񋽒:'DL=ܾN`:ܾ'DյD'񋽒:ܾܾ:w`&:'DյDܾ:w`ܾ%=&L=׵D&:ܾ%=ܾh=R:%? =L:&L=׵Dܾh=R:ܾ%=%=&L=L=%? =L:`A6u83MЦ>MЦNЦ2MЦ>/+P?c d (o:o:o: A    0A/VMtl04 PAF@pCube4_0GeAA8ȗ>v41/J=z>v41/J=>61E>ο>X51J=`A6c>o4> b3r|=ܡ>p=TJ= A90AVMtl05PA@pCube2_0GeAA8ȗ> GnBz> GnB>Gο>HGR`A6c>o4!839r|Խܡ>a˽ A90AVMtl06PA@pCube3_0GeAA8ȗ>2=m*0z>2=m*0>(>(0ο>y=)0`A6c>I3o4s|=D2ܡ>=2 A90AVMtl07PA@pCube1_0GeAA8ȗ>3jxz>3jx>+wο>|x`A6c>p42o4>s|Խt|1ܡ>Ľ;= A90AVMtl08PAV MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&NЦ>NЦ>0+P? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0pCylinder4@ &!*"&???0$$$DUMMY@pCube01 &ܡ>VJ=p!*??"&c>p4>t|= # # # #< #< #<0 pCube4_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &ܡ>˽a=!*?"&c>p4>t|= # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &ܡ>2ý!*I@"&c>p4>t|= # # # #< #< #<0 pCube3_0Ge@  &!*"&???0$$$DUMMY@pCube04 &ܡ>;==!*"&c>p4>t|= # # # #< #< #<0pCube1_0Ge@ &!*"&???gl-117-1.3.2/models/missile7.3ds0000644000175000017500000002425710145416156015340 0ustar cedriccedricMM( ==>=  VMtl01 !!!  0 @0A0P0R0S00 ? VMtl02 (  0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04 !!!  0 @0A0P0R0S00 ? VMtl05 !!!  0 @0A0P0R0S00 ? VMtl06 !!!  0 @0A0P0R0S00 ? VMtl07 !!!  0 @0A0P0R0S00 ? VMtl08 !!!  0 @0A0P0R0S00 ? VMtl09 !!!  0 @0A0P0R0S00 ? VMtl10 !!!  0 @0A0P0R0S00 ? VMtl11 !!!  0 @0A0P0R0S00 ? ?@2pCylinder1A!A@\; =u =\;Z:yV=s:ʄ=s+<=<=\;Z:yV=\;v =s4<=s:ʄ=\;v =\; N:s):s4<=\; N:\; Ns44s):\; N\;%:RNs{:As44\;%:RN\; =Ps)<=4s{:A\; =P\;V=U:sʄ=N:s)<=4\;V=U:\; =u =s+<=<=sʄ=N:s+<=<=s:ʄ=nJ2>?vw)o:o:o: A      !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?0AOVMtl01  PA@pCylinder2AA(\;Z:yV=\; =u =s:o:\;v =\;Z:yV=s:o:\; N:\;v =s:o:\; N\; N:s:o:\;%:RN\; Ns:o:\; =P\;%:RNs:o:\;V=U:\; =Ps:o:\; =u =\;V=U:s:o:`A6gf3>2>?vw)o:o:o: A  0AVMtl02PA&@pCylinder3AA(oJ2>?vw)o:o:o: A  0AVMtl03PA&@pCube1_0GeAA8>T~f9?T~L@?N2>#ս`A6'>U2U>ww1?轘L= A90AVMtl04PA@pCube2_0GeAA8>HRlff9?HRlfL@?Uli7>Sl,'޽`A6'>U>3\w?=׽! A90AVMtl05PA@pCube3_0GeAA8>S=Pf9?S=PL@?2>gP>=P`A6'>&n3Uw=f 3?=׽ A90AVMtl06PA@pCube4_0GeAA8>FQ+o=f9?FQ+o=L@?Q؆9>>QQb=`A6'>U>3*w=?Z=Q= A90AVMtl07PA@pCube5_0GeAA8C. i_YQ  i_:D2 ^&'p_`A6>W22V2>ݑѽޑ1u7±= A90AVMtl08PA@pCube7_0GeAA8C.ˣ =j-YQ ˣ =j-:D1 >-&'lӝ=-`A6>#G3V2ݑ=P2ך= A90AVMtl09PA@pCube8_0GeAA8C..1=YQ .1=:D.z? >&'.=`A6>V2>^3*ܑ=M= = A90AVMtl10PA@pCube6_0GeAA8C. EVYQ EV:Do#E &'!E`A6>V2 3_7ܑѽC᳽[t A90AVMtl11PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>>? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0$$$DUMMY@pCube01 &?L==!*"&'>U>w= # # # #< #< #<0pCube1_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &?#==!*?"&'>U>w= # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &?׽!*I@"&'>U>w= # # # #< #< #<0 pCube3_0Ge@  &!*"&???0 $$$DUMMY@pCube04 &?Q=ZԽ!*??"&'>U>w= # # # #< #< #<0pCube4_0Ge@  &!*"&???0$$$DUMMY@pCube05 &±=v7=!*"&>W2>ޑ= # # # #< #< #<0pCube5_0Ge@ &!*"&???0$$$DUMMY@pCube06 &ؚ!*I@"&>W2>ޑ= # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube07 & =M!*??"&>W2>ޑ= # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCube08 &\tC=!*?"&>W2>ޑ= # # # #< #< #<0pCube6_0Ge@ &!*"&???gl-117-1.3.2/models/missile8.3ds0000644000175000017500000002520010145416156015326 0ustar cedriccedricMM* == >=  VMtl01   i~{0 @0A0P0R0S00 ? VMtl02 (  0 @0A0P0R0S00 ? VMtl03 ((  0 @0A0P0R0S00 ? VMtl04   0 @0A0P0R0S00 ? VMtl05   0 @0A0P0R0S00 ? VMtl06   0 @0A0P0R0S00 ? VMtl07   0 @0A0P0R0S00 ? VMtl08   0 @0A0P0R0S00 ? VMtl09   0 @0A0P0R0S00 ? VMtl10   0 @0A0P0R0S00 ? VMtl11   0 @0A0P0R0S00 ? VMtl12   0 @0A0P0R0S00 ? ?@pCylinder1AA gCC<=<=gC:ʄ=HKs?+:ʄ=IKs?<=<=gC:ʄ=gC4<=HKs?,4<=HKs?+:ʄ=gC4<=gC:HKs?o:HKs?,4<=gC:gC44HKs?.44HKs?o:gC44gCv:AHKs?:AHKs?.44gCv:AgCA<=4IKs?<=4HKs?:AgCA<=4gCʄ=N:IKs?ʄ=N:IKs?<=4gCʄ=N:gCC<=<=IKs?<=<=IKs?ʄ=N:`A6gf3>2>Rv?X+X+)o:o:o: A    0A/VMtl01 PAF@pCylinder2AA(6r:yV=6r =u = Z :o:6rv =6r:yV= Z :o:6rN:6rv = Z :o:6rN6rN: Z :o:6r:RN6rN Z :o:6r =P6r:RN Z :o:6rԿV=U:6r =P Z :o:6r =u =6rԿV=U: Z :o:`A6gf3>2>Rv?X+X+)o:o:o: A  0AVMtl02PA&@pCylinder3AA(IKs?<=<=HKs?+:ʄ=_>{?:o:HKs?+:ʄ=HKs?,4<=_>{?:o:HKs?,4<=HKs?o:_>{?:o:HKs?o:HKs?.44_>{?:o:HKs?.44HKs?:A_>{?:o:HKs?:AIKs?<=4_>{?:o:IKs?<=4IKs?ʄ=N:_>{?:o:IKs?ʄ=N:IKs?<=<=_>{?:o:`A6gf3>2>Rv?X+X+)o:o:o: A  0AVMtl03PA&@pCylinder4AA 6r =u =6r:yV=gC:ʄ=gCC<=<=6r:yV=6rv =gC4<=gC:ʄ=6rv =6rN:gC:gC4<=6rN:6rNgC44gC:6rN6r:RNgCv:AgC446r:RN6r =PgCA<=4gCv:A6r =P6rԿV=U:gCʄ=N:gCA<=46rԿV=U:6r =u =gCC<=<=gCʄ=N:`A6gf3>2>Rv?X+X+)o:o:o: A    0A/VMtl04 PAF@pCube5_0GeAA8Fy vŧ vŧ,x'ħ\j߾ŧ`A6iW>`YI2_YI>콄1Ž= A90AVMtl05PA@pCube7_0GeAA8Fyjf=ZDjf=ZD,x\'>WD\j߾j0=(YD`A6iW>]`3_YI="3=ʽ A90AVMtl06PA@pCube8_0GeAA8FybEV$=bEV$=,x(eEx>\j߾cEҶ=`A6iW>^YI>{32==p= A90AVMtl07PA@pCube6_0GeAA8Fy^aZ&^aZ&,x^Y\j߾B^e`A6iW>^YI3.3O콬˽zɽ A90AVMtl08PA@pCube4_0GeAA8>lVvt=l?lVvt=L?AoV =>`?mVne=`A6>Z>ഈ3y a>.?$== A90AVMtl09PA@pCube3_0GeAA8>xX=dUl?xX=dUL?6>aU`?sf=+cU`A6>=t3Za>3.?=eܽ A90AVMtl10PA@pCube2_0GeAA8>q"kl?q"kL?Bqix;`?Zc3`a.?gܽll A90AVMtl11PA@pCube1_0GeAA8>cYl?cYL?G6쵹`?ٽ`A6>Z2Z>ab2.?-6= A90AVMtl12PAf MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*?"&>>Sv? # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0pCylinder3@ &!*"&???0pCylinder4@ &!*"&???0$$$DUMMY@pCube01 &==!*"&iW>`YI>= # # # #< #< #<0 pCube5_0Ge@ &!*"&???0 $$$DUMMY@pCube02 &ʽĽ!*I@"&iW>`YI>= # # # #< #< #<0 pCube7_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &r=ǽ!*??"&iW>`YI>= # # # #< #< #<0 pCube8_0Ge@  &!*"&???0$$$DUMMY@pCube04 &zɽ=!*?"&iW>`YI>= # # # #< #< #<0pCube6_0Ge@ &!*"&???0$$$DUMMY@pCube05 &.?=$ٽ!*??"&>Z>b> # # # #< #< #<0pCube4_0Ge@ &!*"&???0$$$DUMMY@pCube06 &.?eܽ!*I@"&>Z>b> # # # #< #< #<0pCube3_0Ge@ &!*"&???0$$$DUMMY@pCube07 &.?nlg=!*?"&>Z>b> # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube08 &.?=/6=!*"&>Z>b> # # # #< #< #<0pCube1_0Ge@ &!*"&???gl-117-1.3.2/models/oilrig.3ds0000644000175000017500000005336410145416156015072 0ustar cedriccedricMMV ==e:>=  VMtl01 fff  fff0 @0A0P0R0S00 ?30dOILRIG_C.RGBQS VMtl02 fff  fff0 @0A0P0R0S00 ?30dOILRIG_C.RGBQS VMtl03 fff  fff0 @0A0P0R0S00 ?30dOILRIG_C.RGBQS VMtl04 fff  fff0 @0A0P0R0S00 ?30dOILRIG_C.RGBQS VMtl05 fff  fff0 @0A0P0R0S00 ?30dOILRIG_C.RGBQS VMtl06 777  7770 @0A0P0R0S00 ? VMtl07  0 @0A0P0R0S00 ? VMtl08  0 @0A0P0R0S00 ? VMtl09  0 @0A0P0R0S00 ? VMtl10  0 @0A0P0R0S00 ? VMtl11  0 @0A0P0R0S00 ? VMtl12 fff  fff0 @0A0P0R0S00 ? VMtl13 fff  fff0 @0A0P0R0S00 ? VMtl14 fff  fff0 @0A0P0R0S00 ? VMtl15 fff  fff0 @0A0P0R0S00 ? VMtl16 fff  fff0 @0A0P0R0S00 ? VMtl17 fff  fff0 @0A0P0R0S00 ? ?@pCube1_0GeAA(t`k?O%/O?O%/Q?P ?]n?P ?]n?P ?Q?P ?Q?[n ?]n?[n ?]n?[n ?Q?[n ?O?t`k%/t`k?t`k%/t`k?t`k%/O?t`k%/O?O%/t`k?O%/O?O%/O?t`k%/Q?[n ?Q?P ?t`k?t`k%/t`k?O%/]n?P ?]n?[n ?@A:A؜O*A؜R(Al/AfAl/AfAl/AR(Al/AR(Al/AfAl/AfAl/AR(Al/AO*A؜:A؜:A؜O*A؜O*A؜:A؜O*A؜O*A؜R(Al/AR(Al/A:A؜:A؜fAl/AfAl/A`A6a$> H4 H@`$a$2?3 A     0A'VMtl01  PA6@pCube2_0GeAA(OO%/t`kO%/n ? ? ?n ?nn ?n ?n ?nn ?t`kt`k%/Ot`k%/Ot`k%/t`kt`k%/t`kO%/OO%/t`kO%/t`kt`k%/nn ?n ?Ot`k%/OO%/ ?n ?@A؜t`؜Ůl/A:l/A:l/AŮl/AŮl/A:l/A:l/AŮl/At`؜؜؜t`؜t`؜؜t`؜t`؜Ůl/AŮl/A؜؜:l/A:l/A`A6a$> H4 H@`$a$23 A     0A'VMtl02  PA6@pCube3_0GeAA(Or`k?%/t`kr`k?%/gcnhcn? ?KΈhcn? ?KΈhcn? ?gcnhcn? ?gcnKΈ? ?KΈKΈ? ?KΈKΈ? ?gcnKΈ? ?t`kO?%/OO?%/OO?%/t`kO?%/t`kr`k?%/Or`k?%/t`kr`k?%/t`kO?%/gcnKΈ? ?gcnhcn? ?OO?%/Or`k?%/KΈhcn? ?KΈKΈ? ?@A؜t`؜kcl/Al/Al/Akcl/Akcl/Al/Al/Akcl/At`؜؜؜t`؜t`؜؜t`؜t`؜kcl/Akcl/A؜؜l/Al/A`A6a$> H4 H@`$a$2? A     0A'VMtl03  PA6@pCube4_0GeAA(t`k?r`k?%/O?r`k?%/?n? ?n?n? ?n?n? ??n? ??? ?n?? ?n?? ??? ?O?O?%/t`k?O?%/t`k?O?%/O?O?%/O?r`k?%/t`k?r`k?%/O?r`k?%/O?O?%/?? ??n? ?t`k?O?%/t`k?r`k?%/n?n? ?n?? ?@A:A؜O*A؜(Al/A Al/A Al/A(Al/A(Al/A Al/A Al/A(Al/AO*A؜:A؜:A؜O*A؜O*A؜:A؜O*A؜O*A؜(Al/A(Al/A:A؜:A؜ Al/A Al/A`A6a$> H4 H@`$a$2?? A     0A'VMtl04  PA6@pCube5_0GeAA(mq??mq???????????????????kq??kq??kq???kq??mq?mq??mq???kq???????kq?mq????@AEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA`A6%@d1c=%%43? A     0A'VMtl05  PA6@pCylinder1AAP&$=h4? &8? &8??&$=h4??8? &&$h4? &&$h4??8??&$h4? &$hL&*? &$hN&*??&$h4??$hL&*? &&$? &&$??$hN&*??&$? &? &??&$??? &&$=? &&$=????&$=? &$h=L&*? &$h=N&*??&$=??$h=L&*? &&$=h4? &&$=h4??$h=N&*??8? &&$=h4? &L&*? &&$h4? &8? &L&*? &$hL&*? &&$h4? &L&*? &&$? &$hL&*? &L&*? &? &&$? &L&*? &&$=? &? &L&*? &$h=L&*? &&$=? &L&*? &&$=h4? &$h=L&*? &L&*? &&$=h4??8??N&*??8??&$h4??N&*??&$h4??$hN&*??N&*??$hN&*??&$??N&*??&$????N&*????&$=??N&*??&$=??$h=N&*??N&*??$h=N&*??&$=h4??N&*??`A6t>&4&@tt2M&*?N&* A      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO0AOVMtl06  PA@:pCube6_0GeA)A(>$\}:>E?>$\>}:>E?>$\>~:>cu?>$\~:>cu?>$\~:>cu?>$\>~:>cu?>$\>]/a?cu?>$\]/a?cu?>$\]/a?cu?>$\>]/a?cu?>$\>]/a?E?>$\]/a?E?>$\]/a?E?>$\>]/a?E?>$\>}:>E?>$\}:>E?>$\>}:>E?>$\>]/a?E?>$\>]/a?cu?>$\>~:>cu?>$\]/a?E?>$\}:>E?>$\~:>cu?>$\]/a?cu?`A6>$>>$2=$>=$ܾ>$2N&*?T>? A     0A'VMtl07  PA6@:pCube7_0GeA)A($ J삿?$ ?J삿?$ ?I삿{d?$ I삿{d?$ I삿{d?$ ?I삿{d?$ ?Ӧ>zd?$ Ӧ>zd?$ Ӧ>zd?$ ?Ӧ>zd?$ ?Ӧ>?$ Ӧ>?$ Ӧ>?$ ?Ӧ>?$ ?J삿?$ J삿?$ ?J삿?$ ?Ӧ>?$ ?Ӧ>zd?$ ?I삿{d?$ Ӧ>?$ J삿?$ I삿{d?$ Ӧ>zd?`A6$?DO2CO>HI3n9? A     0A'VMtl08  PA6@:pCube8_0GeA)A("{rGOy?grGOy?grGObM?"{rGObM?"{rGObM?grGObM?gbM?"{bM?"{bM?gbM?gx?"{x?"{x?gx?grGOy?"{rGOy?grGOy?gx?gbM?grGObM?"{x?"{rGOy?"{rGObM?"{bM?`A6s?ss3+9{ /? A     0A'VMtl09  PA6@:pCube9_0GeA)A(>rGOy?Ёu?rGOy?Ёu?rGObM?>rGObM?>rGObM?Ёu?rGObM?Ёu?bM?>bM?>bM?Ёu?bM?Ёu?x?>x?>x?Ёu?x?Ёu?rGOy?>rGOy?Ёu?rGOy?Ёu?x?Ёu?bM?Ёu?rGObM?>x?>rGOy?>rGObM?>bM?`A6s?ss3G3?{ /? A     0A'VMtl10  PA6@:pCube10_0GA)A(WrGO$9?ٮ>rGO$9?ٮ>rGO?WrGO?WrGO?ٮ>rGO?ٮ>?W?W?ٮ>?ٮ>#9?W#9?W#9?ٮ>#9?ٮ>rGO$9?WrGO$9?ٮ>rGO$9?ٮ>#9?ٮ>?ٮ>rGO?W#9?WrGO$9?WrGO?W?`A6763?:2:>ss3 { Nh? A     0A'VMtl11  PA6@:pCube11_0GA)A(҉>iZi?Xw>iZi?Xw>iZ?҉>iZ?҉>iZ?Xw>iZ?Xw>?҉>?҉>?Xw>?Xw>i?҉>i?҉>i?Xw>i?Xw>iZi?҉>iZi?Xw>iZi?Xw>i?Xw>?Xw>iZ?҉>i?҉>iZi?҉>iZ?҉>?`A6 =\82[8> ƽ 1)F>{? A     0A'VMtl12  PA6@:pCube12_0GA)A(37iZi?iZi?iZ?37iZ?37iZ?iZ??37?37??i?37i?37i?i?iZi?37iZi?iZi?i??iZ?37i?37iZi?37iZ?37?`A6 =\82[8> ƽ 1pM{? A     0A'VMtl13  PA6@:pCube13_0GA)A(JJiZi?,B=iZi?,B=iZ?JJiZ?JJiZ?,B=iZ?,B=?JJ?JJ?,B=?,B=i?JJi?JJi?,B=i?,B=iZi?JJiZi?,B=iZi?,B=i?,B=?,B=iZ?JJi?JJiZi?JJiZ?JJ?`A6 =\82[8> ƽ 1G{? A     0A'VMtl14  PA6@:pCube14_0GA)A(>IU=?N?IU=?N?KU=9?>KU=9?>KU=9?N?KU=9?N?ث>9?>ث>9?>ث>9?N?ث>9?N?׫>?>׫>?>׫>?N?׫>?N?IU=?>IU=?N?IU=?N?׫>?N?ث>9?N?KU=9?>׫>?>IU=?>KU=9?>ث>9?`A6 =\82[8> ƽ 1]N?*='? A     0A'VMtl15  PA6@:pCube15_0GA)A(IU=?i IU=?i KU=9?KU=9?KU=9?i KU=9?i ث>9?ث>9?ث>9?i ث>9?i ׫>?׫>?׫>?i ׫>?i IU=?IU=?i IU=?i ׫>?i ث>9?i KU=9?׫>?IU=?KU=9?ث>9?`A6 =\82[8> ƽ 1%x*='? A     0A'VMtl16  PA6@:pCube16_0GA)A(HdL??0D=dL??0D=dL?9?HdL?9?HdL?9?0D=dL?9?0D=4e?9?H4e?9?H4e?9?0D=4e?9?0D=4e??H4e??H4e??0D=4e??0D=dL??HdL??0D=dL??0D=4e??0D=4e?9?0D=dL?9?H4e??HdL??HdL?9?H4e?9?`A6 =\82[8> ƽ 1X?'? A     0A'VMtl17  PA6 MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &??!*"&a$> H@a$> # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &?!*"&a$> H@a$> # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube03 &!*"&a$> H@a$> # # # #< #< #<0pCube3_0Ge@ &!*"&???0 $$$DUMMY@pCube04 &?!*"&a$> H@a$> # # # #< #< #<0 pCube4_0Ge@  &!*"&???0 $$$DUMMY@pCube05 &?!*"&%@d=%@ # # # #< #< #<0 pCube5_0Ge@  &!*"&???0 $$$DUMMY@pCylinder0 &N&*!*"&t>&@t> # # # #< #< #<0pCylinder1@  &!*"&???0$$$DUMMY@pCube06 &U>?N&*!*"&>$>>$>>$> # # # #< #< #<0pCube6_0Ge@ &!*"&???0$$$DUMMY@pCube07 &9?n>!*"&$?DO>I? # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube08 &+9/?| ?!*"&s?s? # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCube09 &G3?/?| ?!*"&s?s? # # # #< #< #<0pCube9_0Ge@ &!*"&???0$$$DUMMY@pCube10 & Nh?| ?!*"&763?:>s? # # # #< #< #<0pCube10_0G@ &!*"&???0$$$DUMMY@pCube11 &)F>{?>!*"& =\8> = # # # #< #< #<0pCube11_0G@ &!*"&???0$$$DUMMY@pCube12 &pM{?>!*"& =\8> = # # # #< #< #<0pCube12_0G@ &!*"&???0$$$DUMMY@pCube13 &G{?>!*"& =\8> = # # # #< #< #<0pCube13_0G@ &!*"&???0$$$DUMMY@pCube14 &]N?'?&ν!*"& =\8> = # # # #< #< #<0 pCube14_0G@ &!*"&???0!$$$DUMMY@pCube15 &%x'?&ν!*"& =\8> = # # # #< #< #<0"pCube15_0G@! &!*"&???0#$$$DUMMY@pCube16 &'?X!*"& =\8> = # # # #< #< #<0$pCube16_0G@# &!*"&???gl-117-1.3.2/models/pickup1.3ds0000644000175000017500000005635110145416156015160 0ustar cedriccedricMM\ ==N>= 01 - Standard  0 @0 A0P0R0S00 ?20dCAMOUFL.TGAQS VMtl02   0 @0A0P0R0S00 ?02 - Standard  0 @0 A0P0R0S00 ?03 - Standard  0 @0 A0P0R0S00 ?00dWHEEL.TGAQS  ?@qpCube1_0GeA`ARgB,n`>_B,|b^_B,|b^$>gB,n`>$>/tI>2>}/tUG2>t|*>OG2>k|*>I>2>H?n`>$>H?hb^$>H?hb^H?n`>N.>n`>N.>ub^_B,|b^gB,n`>_B,|b^N.>ub^N.>tb^$>_B,|b^$>N.>n`>gB,n`>gB,n`>$>N.>n`>$>_B,|b^$>N.>tb^$>t|*>OG2>}/tUG2>N.>tb^$>N.>n`>$>k|*>I>>t|*>OG>N.>n`>$>gB,n`>$>/tI>2>k|*>I>2>M;Yl39<:[l:L)\l]L)Yl]:Xl:}1=Wl]}1=Wl]:]l:S=\l39I4>BY:1>Jj>Y:j>KK'>N.>n`>$>k|*>I>2>k|*>I>>N.>n`>$>k|*>I>2>t|*>OG2>t|*>OG>k|*>I>>Y:-T:GyɾFP~=Y: yɾIP~=F޾$>N.>tb^$>N.>ub^H?hb^H?hb^$>N.>ub^N.>n`>H?n`>H?hb^N.>n`>N.>n`>$>H?n`>$>H?n`>N.>n`>$>k|*>I>>@AR::@?:C?I?:I?r?b?W=b?W=%?r?%?@?I?:I?::C?::$?@?$?@?C?:C?:C?:$?I?$?I?C?B?$?B?C?m>C?m>$?I?C?I?$?B?%?B?b?:I?@?I?r?:l?W=:l?m>$?m>C?:b?:%?*?*?*?Q*?CY*?CY*?Q*?*?*?Q*?tJ0>*?tJ0>*?Q*?tJ0>*?̃'?B?osg?O?u>D?̃'?B?d=O?u>D?@?I?r?D?r?:l?I?$?r?D?W=B?W=:l?r?:l?lsg?C>ȃ'?:C?>lsg?C>I?$?:$?::I?:@?$?:$?::@?:B?$?m>$?m>:B?:I?$?:l?%?`A6b 4h߾s>Hسo:o:o: A     !" "#89:PQ;<=><>?DEFDFGHIJHJKLMNLNO0AN01 - Standard PAv@pCube1_1GeAA8gB,n`>$>_B,|b^$>}/tUG2>/tI>2>`A6b 4h߾s>Hسo:o:o: A90AVMtl02PA@pCube1_2GeAA@>}R>i>@>+Pi>D? Pi>D?R>i>N.>n`>$>N.>tb^$>@>+Pi>@>}R>i>N.>tb^$>H?hb^$>D? Pi>@>+Pi>H?hb^$>H?n`>$>D?R>i>D? Pi>H?n`>$>N.>n`>$>@>}R>i>D?R>i>@AH+x?#@P<#@P<~=H+x?~=:G:C? 3:N+x? @< @: @:37:>?~=>?#@: 3:C?G:H+x? @P< @>?.:>? @:#@:~=`A6b 4h߾s>Hسo:o:o: A      0A*02 - Standard  PA.@ pCylinder1Ap AdoQ= m>grV; m>v=rV;v>y=oQ=v>grV; m>v=e m>v=ev>y=rV;v>y=e m>v=Խ m>gԽv>gev>y=Խ m>g m>sv>t潱Խv>g m>s潱Խ m> -Խv> -v>t潱Խ m> -e m>ūPeu>īPԽv> -e m>ūPrV; m>ūPrV;u>īPeu>īPrV; m>ūPoQ= m> -oQ=v> -rV;u>īPoQ= m> -6= m>s潆6=v>toQ=v> -6= m>soQ= m>goQ=v>g6=v>trV; m>v=oQ= m>g׼ m>se m>v=rV; m>v=׼ m>s潱Խ m>ge m>v=׼ m>s m>s潱Խ m>g׼ m>s潱Խ m> - m>s׼ m>se m>ūPԽ m> -׼ m>srV; m>ūPe m>ūP׼ m>soQ= m> -rV; m>ūP׼ m>s潆6= m>soQ= m> -׼ m>soQ= m>g6= m>s׼ m>soQ=v>grV;v>y=׼v>trV;v>y=ev>y=׼v>tev>y=Խv>g׼v>t潱Խv>gv>t׼v>tv>t潱Խv> -׼v>t潱Խv> -eu>īP׼v>teu>īPrV;u>īP׼v>trV;u>īPoQ=v> -׼v>toQ=v> -6=v>t׼v>t潆6=v>toQ=v>g׼v>t@A(dksg?O?ʃ'?B?ʃ'?B?ksg?O?ʃ'?B?s>D?s>C?ʃ'?B?s>D?d=O?d=O?s>C?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:hsg?C>hsg?C>ƃ'?:hsg?C>C?>C?>hsg?C>C?>ksg?O?ksg?O?C?>ʃ'?B?ksg?O???s>D?ʃ'?B???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??hsg?C>ƃ'?:??C?>hsg?C>??ksg?O?C?>??ksg?O?ʃ'?B???ʃ'?B?s>C???s>C?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:hsg?C>??hsg?C>C?>??C?>ksg?O???`A6e>e>׼5}F>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder3Ap AdoQ=_grV;_y=rV;ly=oQ=lgrV;_y=e_y=ely=rV;ly=e_y=Խ_gԽlgely=Խ_g_slt潱Խlg_s潱Խ_ -Խl -lt潱Խ_ -e_īPelīPԽl -e_īPrV;_īPrV;līPelīPrV;_īPoQ=_ -oQ=l -rV;līPoQ=_ -6=_s潆6=ltoQ=l -6=_soQ=_goQ=lg6=ltrV;_y=oQ=_g׼_se_y=rV;_y=׼_s潱Խ_ge_y=׼_s_s潱Խ_g׼_s潱Խ_ -_s׼_se_īPԽ_ -׼_srV;_īPe_īP׼_soQ=_ -rV;_īP׼_s潆6=_soQ=_ -׼_soQ=_g6=_s׼_soQ=lgrV;ly=׼ltrV;ly=ely=׼ltely=Խlg׼lt潱Խlglt׼ltlt潱Խl -׼lt潱Խl -elīP׼ltelīPrV;līP׼ltrV;līPoQ=l -׼ltoQ=l -6=lt׼lt潆6=ltoQ=lg׼lt@A(dksg?O?ʃ'?D?ʃ'?D?ksg?O?ʃ'?D?s>D?s>D?ʃ'?D?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:hsg?C>hsg?C>ƃ'?:hsg?C>C?>C?>hsg?C>C?>ksg?O?ksg?O?C?>ʃ'?D?ksg?O???s>D?ʃ'?D???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??hsg?C>ƃ'?:??C?>hsg?C>??ksg?O?C?>??ksg?O?ʃ'?D???ʃ'?D?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:hsg?C>??hsg?C>C?>??C?>ksg?O???`A6e>e>׼5Ft AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder5Ap AdB;?gmM/?y=mM/?hy=B;?hgmM/?y=& ?y=& ?hy=mM/?hy=& ?y=?g?hg& ?hy=?g{6?s{6?ht?hg{6?s? -?h -{6?ht? -& ?īP& ?hīP?h -& ?īPmM/?īPmM/?hīP& ?hīPmM/?īPB;? -B;?h -mM/?hīPB;? -=@?s=@?htB;?h -=@?sB;?gB;?hg=@?htmM/?y=B;?g#'?s& ?y=mM/?y=#'?s?g& ?y=#'?s{6?s?g#'?s? -{6?s#'?s& ?īP? -#'?smM/?īP& ?īP#'?sB;? -mM/?īP#'?s=@?sB;? -#'?sB;?g=@?s#'?sB;?hgmM/?hy=#'?htmM/?hy=& ?hy=#'?ht& ?hy=?hg#'?ht?hg{6?ht#'?ht{6?ht?h -#'?ht?h -& ?hīP#'?ht& ?hīPmM/?hīP#'?htmM/?hīPB;?h -#'?htB;?h -=@?ht#'?ht=@?htB;?hg#'?ht@A(dnsg?O?Ƀ'?B?Ƀ'?B?nsg?O?Ƀ'?B?v>D?v>D?Ƀ'?B?v>D?d=O?d=O?v>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>n>:n>:d=C>n>:Ń'?:Ń'?:n>:Ń'?:lsg?C>lsg?C>Ń'?:lsg?C>C?>C?>lsg?C>C?>nsg?O?nsg?O?C?>Ƀ'?B?nsg?O???v>D?Ƀ'?B???d=O?v>D???:?d=O???d=C>:???n>:d=C>??Ń'?:n>:??lsg?C>Ń'?:??C?>lsg?C>??nsg?O?C?>??nsg?O?Ƀ'?B???Ƀ'?B?v>D???v>D?d=O???d=O?:???:?d=C>??d=C>n>:??n>:Ń'?:??Ń'?:lsg?C>??lsg?C>C?>??C?>nsg?O???`A6e>e>#'?hBt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder7Ap AdXo;?!i>g-/?!i>y=-/?b>y=Xo;?b>g-/?!i>y= ?!i>y= ?b>y=-/?b>y= ?!i>y=?!i>g?b>g ?b>y=?!i>g?!i>s潑?b>t?b>g?!i>s?!i> -?b> -?b>t?!i> - ?!i>ūP ?a>īP?b> - ?!i>ūP-/?!i>ūP-/?a>īP ?a>īP-/?!i>ūPXo;?!i> -Xo;?b> --/?a>īPXo;?!i> -@?!i>s@?b>tXo;?b> -@?!i>sXo;?!i>gXo;?b>g@?b>t潃-/?!i>y=Xo;?!i>g9'?!i>s ?!i>y=-/?!i>y=9'?!i>s?!i>g ?!i>y=9'?!i>s潑?!i>s?!i>g9'?!i>s?!i> -?!i>s9'?!i>s ?!i>ūP?!i> -9'?!i>s潃-/?!i>ūP ?!i>ūP9'?!i>sXo;?!i> --/?!i>ūP9'?!i>s@?!i>sXo;?!i> -9'?!i>sXo;?!i>g@?!i>s9'?!i>sXo;?b>g-/?b>y=9'?b>t潃-/?b>y= ?b>y=9'?b>t ?b>y=?b>g9'?b>t?b>g?b>t9'?b>t潑?b>t?b> -9'?b>t?b> - ?a>īP9'?b>t ?a>īP-/?a>īP9'?b>t潃-/?a>īPXo;?b> -9'?b>tXo;?b> -@?b>t9'?b>t@?b>tXo;?b>g9'?b>t@A(dnsg?O?Ƀ'?C?Ƀ'?C?nsg?O?Ƀ'?C?v>D?v>D?Ƀ'?C?v>D?d=O?d=O?v>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>n>:n>:d=C>n>:Ń'?:Ń'?:n>:Ń'?:lsg?C>lsg?C>Ń'?:lsg?C>D?>D?>lsg?C>D?>nsg?O?nsg?O?D?>Ƀ'?C?nsg?O???v>D?Ƀ'?C???d=O?v>D???:?d=O???d=C>:???n>:d=C>??Ń'?:n>:??lsg?C>Ń'?:??D?>lsg?C>??nsg?O?D?>??nsg?O?Ƀ'?C???Ƀ'?C?v>D???v>D?d=O???d=O?:???:?d=C>??d=C>n>:??n>:Ń'?:??Ń'?:lsg?C>??lsg?C>D?>??D?>nsg?O???`A6e>e>9'?!B>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder9Ap Ad?g>>y=>>hy=?hg>>y=>y=>hy=>>hy=>y=l3>gl3>hg>hy=l3>gXֶ>sXֶ>htl3>hgXֶ>sl3> -l3>h -Xֶ>htl3> ->īP>hīPl3>h ->īP>>īP>>hīP>hīP>>īP? -?h ->>hīP? -}r ?s}r ?ht?h -}r ?s?g?hg}r ?ht>>y=?g>s>y=>>y=>sl3>g>y=>sXֶ>sl3>g>sl3> -Xֶ>s潩>s>īPl3> ->s>>īP>īP>s? ->>īP>s}r ?s? ->s?g}r ?s潩>s?hg>>hy=>ht>>hy=>hy=>ht>hy=l3>hg>htl3>hgXֶ>ht潩>htXֶ>htl3>h ->htl3>h ->hīP>ht>hīP>>hīP>ht>>hīP?h ->ht?h -}r ?ht潩>ht}r ?ht?hg>ht@A(djsg?O?ʃ'?D?ʃ'?D?jsg?O?ʃ'?D?r>D?r>D?ʃ'?D?r>D?d=O?d=O?r>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>j>:j>:d=C>j>:ƃ'?:ƃ'?:j>:ƃ'?:hsg?C>hsg?C>ƃ'?:hsg?C>C?>C?>hsg?C>C?>jsg?O?jsg?O?C?>ʃ'?D?jsg?O?>?r>D?ʃ'?D?>?d=O?r>D?>?:?d=O?>?d=C>:?>?j>:d=C>>?ƃ'?:j>:>?hsg?C>ƃ'?:>?C?>hsg?C>>?jsg?O?C?>>?jsg?O?ʃ'?D?>?ʃ'?D?r>D?>?r>D?d=O?>?d=O?:?>?:?d=C>>?d=C>j>:>?j>:ƃ'?:>?ƃ'?:hsg?C>>?hsg?C>C?>>?C?>jsg?O?>?`A6e>e>>hBt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde11Ap Ad ?!i>gh>!i>y=h>b>y= ?b>gh>!i>y=>w>!i>y=>w>b>y=h>b>y=>w>!i>y=>!i>g>b>g>w>b>y=>!i>g>!i>s潂>b>t潖>b>g>!i>s潖>!i> ->b> ->b>t潖>!i> ->w>!i>ūP>w>a>īP>b> ->w>!i>ūPh>!i>ūPh>a>īP>w>a>īPh>!i>ūP ?!i> - ?b> -h>a>īP ?!i> -R ?!i>s潒R ?b>t ?b> -R ?!i>s ?!i>g ?b>gR ?b>th>!i>y= ?!i>gӝ>!i>s>w>!i>y=h>!i>y=ӝ>!i>s潖>!i>g>w>!i>y=ӝ>!i>s潂>!i>s潖>!i>gӝ>!i>s潖>!i> ->!i>sӝ>!i>s>w>!i>ūP>!i> -ӝ>!i>sh>!i>ūP>w>!i>ūPӝ>!i>s ?!i> -h>!i>ūPӝ>!i>s潒R ?!i>s ?!i> -ӝ>!i>s ?!i>gR ?!i>sӝ>!i>s ?b>gh>b>y=ӝ>b>th>b>y=>w>b>y=ӝ>b>t>w>b>y=>b>gӝ>b>t潖>b>g>b>tӝ>b>t潂>b>t潖>b> -ӝ>b>t潖>b> ->w>a>īPӝ>b>t>w>a>īPh>a>īPӝ>b>th>a>īP ?b> -ӝ>b>t ?b> -R ?b>tӝ>b>t潒R ?b>t ?b>gӝ>b>t@A(dosg?O?̃'?B?̃'?B?osg?O?̃'?B?u>D?u>D?̃'?B?u>D?d=O?d=O?u>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>n>:n>:d=C>n>:ȃ'?:ȃ'?:n>:ȃ'?:lsg?C>lsg?C>ȃ'?:lsg?C>C?>C?>lsg?C>C?>osg?O?osg?O?C?>̃'?B?osg?O???u>D?̃'?B???d=O?u>D???:?d=O???d=C>:???n>:d=C>??ȃ'?:n>:??lsg?C>ȃ'?:??C?>lsg?C>??osg?O?C?>??osg?O?̃'?B???̃'?B?u>D???u>D?d=O???d=O?:???:?d=C>??d=C>n>:??n>:ȃ'?:??ȃ'?:lsg?C>??lsg?C>C?>??C?>osg?O???`A6e>e>ԝ>!B>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &!*??"&h>s>H> # # # #< #< #<0pCube1_0Ge@ &!*"&???0pCube1_1Ge@ &!*"&???0pCube1_2Ge@ &!*"&???0$$$DUMMY@pCylinder0 &׼t5}F!*"&e>e>= # # # #< #< #<0pCylinder1@ &!*"&???0 $$$DUMMY@pCylinder2 &׼t5F>!*"&e>e>= # # # #< #< #<0 pCylinder3@  &!*"&???0 $$$DUMMY@pCylinder4 &#'?thB>!*"&e>e>= # # # #< #< #<0 pCylinder5@  &!*"&???0 $$$DUMMY@pCylinder6 &9'?t!B!*"&e>e>= # # # #< #< #<0pCylinder7@  &!*"&???0$$$DUMMY@pCylinder8 &>thB>!*"&e>e>= # # # #< #< #<0pCylinder9@ &!*"&???0$$$DUMMY@pCylinde10 &ԝ>t!B!*"&e>e>= # # # #< #< #<0pCylinde11@ &!*"&???gl-117-1.3.2/models/pickup2.3ds0000644000175000017500000005645110145416156015162 0ustar cedriccedricMM)] ==YN>= 01 - Standard  0 @0 A0P0R0S00 ?20dCAMOUFL.TGAQS VMtl02   0 @0A0P0R0S00 ? VMtl03 uuu  uuu0 @0A0P0R0S00 ?03 - Standard  0 @0 A0P0R0S00 ?00dWHEEL.TGAQS  ?@pCube1_0GeAAJgB,n`>_B,|b^_B,|b^$>gB,n`>$>/tI>2>}/tUG2>t|*>OG2>k|*>I>2>H?n`>$>H?hb^$>H?hb^H?n`>_B,|b^N.>ub^N.>tb^$>_B,|b^$>N.>n`>gB,n`>gB,n`>$>N.>n`>$>_B,|b^$>N.>tb^$>t|*>OG2>}/tUG2>N.>tb^$>N.>n`>$>k|*>I>>t|*>OG>N.>n`>$>gB,n`>$>/tI>2>k|*>I>2>W:o:o:o:J: rD:o:o:o:::]z:o:o:o:y::Y:o:o:o::u.:o:o:o:ڂ:o:˂:o:o:o:*L:Lـ:o:o:o:G:o:wo:o:o:p:|N:yr]v.:n:o:r:~Z j:o:v:rѺ gN.>n`>$>k|*>I>2>k|*>I>>N.>n`>$>k|*>I>2>t|*>OG2>t|*>OG>k|*>I>> :o: z:f%Snzȱ:o:h:A+)hMN.>tb^$>N.>ub^H?hb^H?hb^$>N.>n`>N.>n`>$>H?n`>$>H?n`>N.>n`>$>k|*>I>>@AXJ::@?:C?I?:I?r?b?W=b?W=%?r?%?@?I?:I?::C?::C?:$?I?$?I?C?B?$?B?C?m>C?m>$?I?C?I?$?B?%?B?b?:I?@?I?r?:l?W=:l?m>$?m>C?:b?:%?:>T_72  Pt3Yg=6sP T}P6՗P`Ge-6'P4'j7H~ gn8U=8Zy:o( L;NgPxg;@?I?r?D?r?:l?I?$?r?D?W=B?W=:l?r?:l?T<`AH lPg_BI?$?:$?::I?:B?$?m>$?m>:B?:I?$?:l?%?`A6b 4h߾s>Hسo:o:o: At    456HI789:8:;@AB@BCDEFDFG0AF01 - Standard PAf@pCube1_1GeAA8gB,n`>$>_B,|b^$>}/tUG2>/tI>2>`A6b 4h߾s>Hسo:o:o: A90AVMtl02PA@pCube1_2GeAA,N.>n`>N.>ub^_B,|b^gB,n`>!>>|T>"<*>>ApR"< D?5pR"<D?|T>"ub^N.>n`>H?n`>H?hb^N.>n`>$>N.>tb^$>9>*U$>9>{W>$>N.>tb^$>H?hb^$>8E?U$>9>*U$>H?hb^$>H?n`>$>7E?W>$>8E?U$>H?n`>$>N.>n`>$>9>{W>$>7E?W>$>9>{W>$>9>*U$>*>>ApR">|T>"<9>*U$>8E?U$> D?5pR"<*>>ApR"<8E?U$>7E?W>$>D?|T>"< D?5pR"<7E?W>$>9>{W>$>!>>|T>"<D?|T>"<`A6b 4h߾s>Hسo:o:o: AQ     !" "#$%&$&'()*(*+0A;VMtl03 PA^@ pCylinder1Ap AdoQ= m>grV; m>v=rV;v>y=oQ=v>grV; m>v=e m>v=ev>y=rV;v>y=e m>v=Խ m>gԽv>gev>y=Խ m>g m>sv>t潱Խv>g m>s潱Խ m> -Խv> -v>t潱Խ m> -e m>ūPeu>īPԽv> -e m>ūPrV; m>ūPrV;u>īPeu>īPrV; m>ūPoQ= m> -oQ=v> -rV;u>īPoQ= m> -6= m>s潆6=v>toQ=v> -6= m>soQ= m>goQ=v>g6=v>trV; m>v=oQ= m>g׼ m>se m>v=rV; m>v=׼ m>s潱Խ m>ge m>v=׼ m>s m>s潱Խ m>g׼ m>s潱Խ m> - m>s׼ m>se m>ūPԽ m> -׼ m>srV; m>ūPe m>ūP׼ m>soQ= m> -rV; m>ūP׼ m>s潆6= m>soQ= m> -׼ m>soQ= m>g6= m>s׼ m>soQ=v>grV;v>y=׼v>trV;v>y=ev>y=׼v>tev>y=Խv>g׼v>t潱Խv>gv>t׼v>tv>t潱Խv> -׼v>t潱Խv> -eu>īP׼v>teu>īPrV;u>īP׼v>trV;u>īPoQ=v> -׼v>toQ=v> -6=v>t׼v>t潆6=v>toQ=v>g׼v>t@A(dksg?O?ʃ'?B?ʃ'?B?ksg?O?ʃ'?B?s>D?s>C?ʃ'?B?s>D?d=O?d=O?s>C?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:hsg?C>hsg?C>ƃ'?:hsg?C>C?>C?>hsg?C>C?>ksg?O?ksg?O?C?>ʃ'?B?ksg?O???s>D?ʃ'?B???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??hsg?C>ƃ'?:??C?>hsg?C>??ksg?O?C?>??ksg?O?ʃ'?B???ʃ'?B?s>C???s>C?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:hsg?C>??hsg?C>C?>??C?>ksg?O???`A6e>e>׼5}F>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder3Ap AdoQ=_grV;_y=rV;ly=oQ=lgrV;_y=e_y=ely=rV;ly=e_y=Խ_gԽlgely=Խ_g_slt潱Խlg_s潱Խ_ -Խl -lt潱Խ_ -e_īPelīPԽl -e_īPrV;_īPrV;līPelīPrV;_īPoQ=_ -oQ=l -rV;līPoQ=_ -6=_s潆6=ltoQ=l -6=_soQ=_goQ=lg6=ltrV;_y=oQ=_g׼_se_y=rV;_y=׼_s潱Խ_ge_y=׼_s_s潱Խ_g׼_s潱Խ_ -_s׼_se_īPԽ_ -׼_srV;_īPe_īP׼_soQ=_ -rV;_īP׼_s潆6=_soQ=_ -׼_soQ=_g6=_s׼_soQ=lgrV;ly=׼ltrV;ly=ely=׼ltely=Խlg׼lt潱Խlglt׼ltlt潱Խl -׼lt潱Խl -elīP׼ltelīPrV;līP׼ltrV;līPoQ=l -׼ltoQ=l -6=lt׼lt潆6=ltoQ=lg׼lt@A(dksg?O?ʃ'?D?ʃ'?D?ksg?O?ʃ'?D?s>D?s>D?ʃ'?D?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:hsg?C>hsg?C>ƃ'?:hsg?C>C?>C?>hsg?C>C?>ksg?O?ksg?O?C?>ʃ'?D?ksg?O???s>D?ʃ'?D???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??hsg?C>ƃ'?:??C?>hsg?C>??ksg?O?C?>??ksg?O?ʃ'?D???ʃ'?D?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:hsg?C>??hsg?C>C?>??C?>ksg?O???`A6e>e>׼5Ft AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder5Ap AdB;?gmM/?y=mM/?hy=B;?hgmM/?y=& ?y=& ?hy=mM/?hy=& ?y=?g?hg& ?hy=?g{6?s{6?ht?hg{6?s? -?h -{6?ht? -& ?īP& ?hīP?h -& ?īPmM/?īPmM/?hīP& ?hīPmM/?īPB;? -B;?h -mM/?hīPB;? -=@?s=@?htB;?h -=@?sB;?gB;?hg=@?htmM/?y=B;?g#'?s& ?y=mM/?y=#'?s?g& ?y=#'?s{6?s?g#'?s? -{6?s#'?s& ?īP? -#'?smM/?īP& ?īP#'?sB;? -mM/?īP#'?s=@?sB;? -#'?sB;?g=@?s#'?sB;?hgmM/?hy=#'?htmM/?hy=& ?hy=#'?ht& ?hy=?hg#'?ht?hg{6?ht#'?ht{6?ht?h -#'?ht?h -& ?hīP#'?ht& ?hīPmM/?hīP#'?htmM/?hīPB;?h -#'?htB;?h -=@?ht#'?ht=@?htB;?hg#'?ht@A(dnsg?O?Ƀ'?B?Ƀ'?B?nsg?O?Ƀ'?B?v>D?v>D?Ƀ'?B?v>D?d=O?d=O?v>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>n>:n>:d=C>n>:Ń'?:Ń'?:n>:Ń'?:lsg?C>lsg?C>Ń'?:lsg?C>C?>C?>lsg?C>C?>nsg?O?nsg?O?C?>Ƀ'?B?nsg?O???v>D?Ƀ'?B???d=O?v>D???:?d=O???d=C>:???n>:d=C>??Ń'?:n>:??lsg?C>Ń'?:??C?>lsg?C>??nsg?O?C?>??nsg?O?Ƀ'?B???Ƀ'?B?v>D???v>D?d=O???d=O?:???:?d=C>??d=C>n>:??n>:Ń'?:??Ń'?:lsg?C>??lsg?C>C?>??C?>nsg?O???`A6e>e>#'?hBt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder7Ap AdXo;?!i>g-/?!i>y=-/?b>y=Xo;?b>g-/?!i>y= ?!i>y= ?b>y=-/?b>y= ?!i>y=?!i>g?b>g ?b>y=?!i>g?!i>s潑?b>t?b>g?!i>s?!i> -?b> -?b>t?!i> - ?!i>ūP ?a>īP?b> - ?!i>ūP-/?!i>ūP-/?a>īP ?a>īP-/?!i>ūPXo;?!i> -Xo;?b> --/?a>īPXo;?!i> -@?!i>s@?b>tXo;?b> -@?!i>sXo;?!i>gXo;?b>g@?b>t潃-/?!i>y=Xo;?!i>g9'?!i>s ?!i>y=-/?!i>y=9'?!i>s?!i>g ?!i>y=9'?!i>s潑?!i>s?!i>g9'?!i>s?!i> -?!i>s9'?!i>s ?!i>ūP?!i> -9'?!i>s潃-/?!i>ūP ?!i>ūP9'?!i>sXo;?!i> --/?!i>ūP9'?!i>s@?!i>sXo;?!i> -9'?!i>sXo;?!i>g@?!i>s9'?!i>sXo;?b>g-/?b>y=9'?b>t潃-/?b>y= ?b>y=9'?b>t ?b>y=?b>g9'?b>t?b>g?b>t9'?b>t潑?b>t?b> -9'?b>t?b> - ?a>īP9'?b>t ?a>īP-/?a>īP9'?b>t潃-/?a>īPXo;?b> -9'?b>tXo;?b> -@?b>t9'?b>t@?b>tXo;?b>g9'?b>t@A(dnsg?O?Ƀ'?C?Ƀ'?C?nsg?O?Ƀ'?C?v>D?v>D?Ƀ'?C?v>D?d=O?d=O?v>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>n>:n>:d=C>n>:Ń'?:Ń'?:n>:Ń'?:lsg?C>lsg?C>Ń'?:lsg?C>D?>D?>lsg?C>D?>nsg?O?nsg?O?D?>Ƀ'?C?nsg?O???v>D?Ƀ'?C???d=O?v>D???:?d=O???d=C>:???n>:d=C>??Ń'?:n>:??lsg?C>Ń'?:??D?>lsg?C>??nsg?O?D?>??nsg?O?Ƀ'?C???Ƀ'?C?v>D???v>D?d=O???d=O?:???:?d=C>??d=C>n>:??n>:Ń'?:??Ń'?:lsg?C>??lsg?C>D?>??D?>nsg?O???`A6e>e>9'?!B>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder9Ap Ad?g>>y=>>hy=?hg>>y=>y=>hy=>>hy=>y=l3>gl3>hg>hy=l3>gXֶ>sXֶ>htl3>hgXֶ>sl3> -l3>h -Xֶ>htl3> ->īP>hīPl3>h ->īP>>īP>>hīP>hīP>>īP? -?h ->>hīP? -}r ?s}r ?ht?h -}r ?s?g?hg}r ?ht>>y=?g>s>y=>>y=>sl3>g>y=>sXֶ>sl3>g>sl3> -Xֶ>s潩>s>īPl3> ->s>>īP>īP>s? ->>īP>s}r ?s? ->s?g}r ?s潩>s?hg>>hy=>ht>>hy=>hy=>ht>hy=l3>hg>htl3>hgXֶ>ht潩>htXֶ>htl3>h ->htl3>h ->hīP>ht>hīP>>hīP>ht>>hīP?h ->ht?h -}r ?ht潩>ht}r ?ht?hg>ht@A(djsg?O?ʃ'?D?ʃ'?D?jsg?O?ʃ'?D?r>D?r>D?ʃ'?D?r>D?d=O?d=O?r>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>j>:j>:d=C>j>:ƃ'?:ƃ'?:j>:ƃ'?:hsg?C>hsg?C>ƃ'?:hsg?C>C?>C?>hsg?C>C?>jsg?O?jsg?O?C?>ʃ'?D?jsg?O?>?r>D?ʃ'?D?>?d=O?r>D?>?:?d=O?>?d=C>:?>?j>:d=C>>?ƃ'?:j>:>?hsg?C>ƃ'?:>?C?>hsg?C>>?jsg?O?C?>>?jsg?O?ʃ'?D?>?ʃ'?D?r>D?>?r>D?d=O?>?d=O?:?>?:?d=C>>?d=C>j>:>?j>:ƃ'?:>?ƃ'?:hsg?C>>?hsg?C>C?>>?C?>jsg?O?>?`A6e>e>>hBt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde11Ap Ad ?!i>gh>!i>y=h>b>y= ?b>gh>!i>y=>w>!i>y=>w>b>y=h>b>y=>w>!i>y=>!i>g>b>g>w>b>y=>!i>g>!i>s潂>b>t潖>b>g>!i>s潖>!i> ->b> ->b>t潖>!i> ->w>!i>ūP>w>a>īP>b> ->w>!i>ūPh>!i>ūPh>a>īP>w>a>īPh>!i>ūP ?!i> - ?b> -h>a>īP ?!i> -R ?!i>s潒R ?b>t ?b> -R ?!i>s ?!i>g ?b>gR ?b>th>!i>y= ?!i>gӝ>!i>s>w>!i>y=h>!i>y=ӝ>!i>s潖>!i>g>w>!i>y=ӝ>!i>s潂>!i>s潖>!i>gӝ>!i>s潖>!i> ->!i>sӝ>!i>s>w>!i>ūP>!i> -ӝ>!i>sh>!i>ūP>w>!i>ūPӝ>!i>s ?!i> -h>!i>ūPӝ>!i>s潒R ?!i>s ?!i> -ӝ>!i>s ?!i>gR ?!i>sӝ>!i>s ?b>gh>b>y=ӝ>b>th>b>y=>w>b>y=ӝ>b>t>w>b>y=>b>gӝ>b>t潖>b>g>b>tӝ>b>t潂>b>t潖>b> -ӝ>b>t潖>b> ->w>a>īPӝ>b>t>w>a>īPh>a>īPӝ>b>th>a>īP ?b> -ӝ>b>t ?b> -R ?b>tӝ>b>t潒R ?b>t ?b>gӝ>b>t@A(dosg?O?̃'?B?̃'?B?osg?O?̃'?B?u>D?u>D?̃'?B?u>D?d=O?d=O?u>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>n>:n>:d=C>n>:ȃ'?:ȃ'?:n>:ȃ'?:lsg?C>lsg?C>ȃ'?:lsg?C>C?>C?>lsg?C>C?>osg?O?osg?O?C?>̃'?B?osg?O???u>D?̃'?B???d=O?u>D???:?d=O???d=C>:???n>:d=C>??ȃ'?:n>:??lsg?C>ȃ'?:??C?>lsg?C>??osg?O?C?>??osg?O?̃'?B???̃'?B?u>D???u>D?d=O???d=O?:???:?d=C>??d=C>n>:??n>:ȃ'?:??ȃ'?:lsg?C>??lsg?C>C?>??C?>osg?O???`A6e>e>ԝ>!B>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &!*??"&h>s>H> # # # #< #< #<0pCube1_0Ge@ &!*"&???0pCube1_1Ge@ &!*"&???0pCube1_2Ge@ &!*"&???0$$$DUMMY@pCylinder0 &׼t5}F!*"&e>e>= # # # #< #< #<0pCylinder1@ &!*"&???0 $$$DUMMY@pCylinder2 &׼t5F>!*"&e>e>= # # # #< #< #<0 pCylinder3@  &!*"&???0 $$$DUMMY@pCylinder4 &#'?thB>!*"&e>e>= # # # #< #< #<0 pCylinder5@  &!*"&???0 $$$DUMMY@pCylinder6 &9'?t!B!*"&e>e>= # # # #< #< #<0pCylinder7@  &!*"&???0$$$DUMMY@pCylinder8 &>thB>!*"&e>e>= # # # #< #< #<0pCylinder9@ &!*"&???0$$$DUMMY@pCylinde10 &ԝ>t!B!*"&e>e>= # # # #< #< #<0pCylinde11@ &!*"&???gl-117-1.3.2/models/radar.3ds0000644000175000017500000002557510145416156014701 0ustar cedriccedricMM}+ ==%>=  VMtl01 ###  0 @0A0P0R0S00 ? VMtl02   ooo0 @0A0P0R0S00 ? ?@H pSphere1_0A7 A/rRY>Q6W$? >μ܅>G%%6W$?/R?~~>׾?Vt3> >μ/R?~~>a|\??䓾#?>׾?Vt3>a|\??c5@?YZ?%?' ?䓾#?>c5@?YZ?eOAP?$?kq>1L?%?' ?eOAP?$?hg`8> a?a>RKd?kq>1L?hg`8> a?hg`8 a?aRKd?a>RKd?hg`8 a?eO>P$?kq1L?aRKd?eO>P$?c5?ZZ?%' ?kq1L?c5?ZZ?a|\?䓾#>%' ?a|\?/R~~>׾[t3>䓾#>/R~~>6W$ԗ μ׾[t3>6W$ԗ8rSYQ܅E%% μ8rSYQa|<;$jmVhmV܅E%%a|<;/rRY>Q܅>G%%$jmVhmV܅>G%% >μa">~=_s>;& >μ׾?Vt3>#Of>,>a">~=׾?Vt3>䓾#?>,'>3>#Of>,>䓾#?>%?' ?FD>,>,'>3>%?' ?kq>1L? M>?FD>,>kq>1L?a>RKd?#= ? M>?a>RKd?aRKd? ?#= ?aRKd?kq1L? M? ?kq1L?%' ?FC,> M?%' ?䓾#>,'3>FC,>䓾#>׾[t3>#Of,>,'3>׾[t3> μa"~=#Of,> μ܅E%%_s;&a"~=܅E%%$jmVhmVerar_s;&$jmVhmV܅>G%%_s>;&erar_s>;&a">~=nXk2Xk>a">~=#Of>,>nXk2Xk>#Of>,>,'>3>nXk2Xk>,'>3>FD>,>nXk2Xk>FD>,> M>?nXk2Xk> M>?#= ?nXk2Xk>#= ? ?nXk2Xk> ? M?nXk2Xk> M?FC,>nXk2Xk>FC,>,'3>nXk2Xk>,'3>#Of,>nXk2Xk>#Of,>a"~=nXk2Xk>a"~=_s;&nXk2Xk>_s;&erarnXk2Xk>erar_s>;&nXk2Xk>`A6ӳ]ҳ]ӳ]?3a|Z:3Y:? A7K      !" "#$%&$&'()*(*+/,--./01202374556789:8:;?<==>?C@AABCGDEEFGHIJHJKLMNLNOSPQQRSTUVTVWXYZXZ[_\]]^_c`aabcgdeefghijhjklmnlnopqrprswtuuvwxyz{|}~0AVMtl01K  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJPA2@nurbsCone1AAh %Fd2d>X䨽LkJkmӰ 웾LkJkEJk %Fd2d> %FeJk(v۽Jk %Fd2d>~rˠJkǽGcJkX䨽LkJk %Fd2d>mӰJk>$*0#*0@B#*0<kDҾ5GDҾ %Fd2d>ǽGcJkmӰJk<kDҾmӰJkǽGcJk5GDҾǽGcJk~rˠJk %Fd2d>3S ĽJk~rˠJk0,=C1q#*0]f DҾDDҾ]f DҾ~rˠJk3S ĽJkܽ#*0Zd v[DҾ %FecDҾzݼ #*0DDҾZd v[DҾ %Fd2d>(v۽Jk3S ĽJkDDҾ3S ĽJk(v۽JkZd v[DҾ(v۽Jk %FeJk %Fd2d>mErˠJk ~ĽJk %Fd2d>xcv۽Jk %FeJk %Fz#*0 %FecDҾrv[DҾ %FecDҾ %FeJkxcv۽JksM #*0}䛾DDҾTx DҾ##*0rv[DҾ}䛾DDҾ %Fd2d> ~ĽJkxcv۽Jkrv[DҾxcv۽Jk ~ĽJk}䛾DDҾ ~ĽJkmErˠJk %Fd2d>=AGcJkmErˠJk1۾C1q#*0Tx DҾožGDҾTx DҾmErˠJk=AGcJk@B#*0оkDҾԾDҲDҾu*#*0ožGDҾоkDҾ %Fd2d>EJk=AGcJkožGDҾ=AGcJkEJkоkDҾEJk 웾LkJk %Fd2d> %Fe=Kkxcv=Kk %Fd2d>mEpˠ=Kk=AGc=Jk %Fd2d>E𙾷#*0ožG=DҾTx >DҾ5B=#*0оk=DҾožG=DҾ %Fd2d>=AGc=JkE𙾷 ~=KkmEpˠ=Kk1۾>1q>#*0Tx >DҾ}䛾D>DҾTx >DҾmEpˠ=Kk ~=Kk#>#*0rv[>DҾ %Fec>DҾsM>#*0}䛾D>DҾrv[>DҾ %Fd2d>xcv=Kk ~=Kk}䛾D>DҾ ~=Kkxcv=Kkrv[>DҾxcv=Kk %Fe=Kk %Fd2d>~pˠ=Kk3S =Kk %Fd2d>(v=Kk %Fe=Kk %Fx>#*0 %Fec>DҾZd v[>DҾ %Fec>DҾ %Fe=Kk(v=Kkzݼ>#*0D>DҾ]f >DҾܽ>#*0Zd v[>DҾD>DҾ %Fd2d>3S =Kk(v=KkZd v[>DҾ(v=Kk3S =KkD>DҾ3S =Kk~pˠ=Kk %Fd2d>ǽGc=Jk~pˠ=Kk0,=>1q>#*0]f >DҾ5G=DҾ]f >DҾ~pˠ=KkǽGc=Jk >5B=#*0<k=DҾ#*05G=DҾ<k=DҾ %Fd2d>mӰ@B#*0>$*0#*0mӰJk<kDҾ@B#*0ǽGcJk5GDҾ<kDҾ~rˠJk]f DҾ5GDҾDDҾzݼ #*00,=C1q#*03S ĽJkDDҾ]f DҾ %FecDҾ %Fz#*0ܽ#*0Zd v[DҾܽ#*0zݼ #*0(v۽JkZd v[DҾDDҾ %FeJk %FecDҾZd v[DҾrv[DҾ##*0 %Fz#*0xcv۽Jkrv[DҾ %FecDҾTx DҾ1۾C1q#*0sM #*0}䛾DDҾsM #*0##*0 ~ĽJk}䛾DDҾrv[DҾmErˠJkTx DҾ}䛾DDҾožGDҾu*#*01۾C1q#*0=AGcJkožGDҾTx DҾԾDҲDҾ$*0#*0@B#*0оkDҾ@B#*0u*#*0EJkоkDҾožGDҾ 웾LkJkԾDҲDҾоkDҾоk=DҾ5B=#*0$*0#*0E𙾷DҾ1۾>1q>#*0u*>#*0ožG=DҾu*>#*05B=#*0=AGc=JkožG=DҾоk=DҾmEpˠ=KkTx >DҾožG=DҾ}䛾D>DҾsM>#*01۾>1q>#*0 ~=Kk}䛾D>DҾTx >DҾ %Fec>DҾ %Fx>#*0#>#*0rv[>DҾ#>#*0sM>#*0xcv=Kkrv[>DҾ}䛾D>DҾ %Fe=Kk %Fec>DҾrv[>DҾZd v[>DҾܽ>#*0 %Fx>#*0(v=KkZd v[>DҾ %Fec>DҾ]f >DҾ0,=>1q>#*0zݼ>#*0D>DҾzݼ>#*0ܽ>#*03S =KkD>DҾZd v[>DҾ~pˠ=Kk]f >DҾD>DҾ5G=DҾ=u*>#*00,=>1q>#*0ǽGc=Jk5G=DҾ]f >DҾ$*0#*0 >5B=#*0<k=DҾ >5B=#*0=u*>#*0mӰ2>yz2 %F$*0#*0 Ax   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg0AVMtl02x  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwPA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &a|Z:?!* @"&??? # # # #< #< #<0pSphere1_0@ &!*"&???0$$$DUMMY@nurbsCone0 & %F$*0!*"&z>>z> # # # #< #< #<0nurbsCone1@ &!*"&???gl-117-1.3.2/models/rubble.3ds0000644000175000017500000006220210145416156015047 0ustar cedriccedricMMd ==b@>=  VMtl01   0 @0A0P0R0S00 ? VMtl02   0 @0A0P0R0S00 ? VMtl03   0 @0A0P0R0S00 ? VMtl04   0 @0A0P0R0S00 ? VMtl05   0 @0A0P0R0S00 ? VMtl06   0 @0A0P0R0S00 ? VMtl07 ;;;  ;;;0 @0A0P0R0S00 ? VMtl08 ;;;  ;;;0 @0A0P0R0S00 ? VMtl09 ;;;  ;;;0 @0A0P0R0S00 ? VMtl10 ;;;  ;;;0 @0A0P0R0S00 ? VMtl11 ;;;  ;;;0 @0A0P0R0S00 ? VMtl12 ;;;  ;;;0 @0A0P0R0S00 ? VMtl13   0 @0A0P0R0S00 ? VMtl14 ;;;  ;;;0 @0A0P0R0S00 ? VMtl15   0 @0A0P0R0S00 ? VMtl16   0 @0A0P0R0S00 ? VMtl17   0 @0A0P0R0S00 ? VMtl18   0 @0A0P0R0S00 ? VMtl19   0 @0A0P0R0S00 ? VMtl20   0 @0A0P0R0S00 ? VMtl21   0 @0A0P0R0S00 ? VMtl22 ;;;  ;;;0 @0A0P0R0S00 ? ?@:pCube1_0GeA)A(Ǿљsl=δ &9ܻ=溾(+];Ӟa+];Ӟa9ܻ=溾(и=>u>hԵ>.,>hԵ>.,>и=>u>u=>c>÷>.>÷>.>u=>c>l=δ &Ǿљsl=δ &u=>c>и=>u>9ܻ=溾(÷>.>Ǿљs+];ӞahԵ>.,>`A60>=Zg<C׏<<:A}o:o:o: A     0A'VMtl01  PA6@:pCube2_0GeA)A(nѾ+>Q>aPU> =D>>QQW= Ҿނ>> Ҿނ>>D>>QQW=>m%֊V> לV> ל>m%֊E>ׁ@8J>* O8J>* OE>ׁ@aPU> =nѾ+>Q>aPU> =E>ׁ@>m%֊D>>QQW=8J>* OnѾ+>Q> Ҿނ>>V> ל`A6/{j<kI5>o:o:o: A     0A'VMtl02  PA6@:pCube3_0GeA)A(<:Q>+]bD>zifs>&tV[Lo>J[Lo>Jfs>&tVc6B=Kھt+_>d$d>>k>d$d>>k>c6B=Kھt+_>،T=J޾$L>h>NoX>h>NoX>،T=J޾$L>bD>zi<:Q>+]bD>zi،T=J޾$L>c6B=Kھt+_>fs>&tVh>NoX><:Q>+][Lo>Jd$d>>k>`A6˖33rE1 =!>#@q>p >5~>f;NA>j=ТNA>j=Т>5~>f;r!GgԽ)=ҖѾ3o }>ҖѾ3o }>r!GgԽ)=);ER<оY)|S=оY)|S=);ER<>#@q>p '>=!>#@q>p );ER5~>f;оY)|S='>=!NA>j=ТҖѾ3o }>`A6*6>ʽHWO<{<lc?4>f%o:o:o: A     0A'VMtl04  PA6@:pCube5_0GeA)A(J4?p_zE=LjC?`.0B?WrCs<<|3?%X=|3?%X=B?WrCs<<;1p_>0Nxqn`=̀xqn`=̀;1p_>0N8/%X>Iau+lYrC=(u+lYrC=(8/%X>IaLjC?`.0J4?p_zE=LjC?`.08/%X>Ia;1p_>0NB?WrCs<b#c;Ƙ͇>f1NҜ A     0A'VMtl05  PA6@:pCube6_0GeA)A($U#5KqM#住W RK i#" =@6i#" =@6W RK ;>5>=h>q>+h>q>+;>5>=ś> =>+ #d>RK>*5w#d>RK>*5wś> =>+ KqM#$U#5KqM#ś> =>+ ;>5>=W RK #d>RK>*5w$U#5i#" =@6h>q>+`A6^=wݘ;lxe<-W\"< (f1NҜ A     0A'VMtl06  PA6@:pCube7_0GeA)A(j%:|zҾܣЮ#TҾL0+0+TҾL :>d?=`Mj==4'R>9==4'R>9 :>d?=`Mj<9>zV=a E=W>]E=W>]<9>zV=a |zҾܣЮ#j%:|zҾܣЮ#<9>zV=a :>d?=`MjTҾLE=W>]j%:0+==4'R>9`A64=N"hAVv9ڜ=MܫZhʼ (#k"ҽ A     0A'VMtl07  PA6@:pCube8_0GeA)A(4C>&=T ⽴c ڽMF'i:= L i:= L ڽMF':=ϤL``:6>˅˅1(W2>1(B=D.⽴c 4C>&=T ⽴c B=D.:=ϤL``ڽMF'W2>1(4C>&=T i:= L :6>˅W4ξ+P->$N)M9>Zԟe>о!e>о!M9>Zԟ=pk>EЋ/D>N#Ћ/D>N#=pk>EY= >콸7J>H7J>HY= >P->$N)Y>W4ξ+P->$N)Y= >=pk>EM9>Zԟ7J>HY>W4ξ+e>о!Ћ/D>N#`A6r%>d>=;;櫻=W>`K;\>#k"ҽ A     0A'VMtl09  PA6@:pCube10_0GA)A( ʘ+K>`gb3~>gY,0v͑,0v͑~>gYw>U%>k>>P>>Pw>U%>k.>H>; r>(>`r>(>`.>H>; K>`gb3 ʘ+K>`gb3.>H>; w>U%>k~>gYr>(>` ʘ+,0v͑>>P`A6d.>_X:<߻uA=f"(;\>D>"ҽ A     0A'VMtl10  PA6@:pCube11_0GA)A(XQ>C$!a<>B#_'s<A]T>EiA]T>Ei#_'s<&<"Bfh= {=>exh= {=>ex&<"Bf=0=`=%=`=%=0$!a<>BXQ>C$!a<>B=0&<"Bf#_'s<=`=%XQ>CA]T>Eih= {=>ex`A6C\R=="ҽ A     0A'VMtl11  PA6@:pCube12_0GA)A(^h0>*2Y*7G_v׽*aZ>_v׽ 1?D`+?wzD`+?wz 1?L2?j,e&+?7de&+?7dL2?j,2Y*7^h0>*2Y*7L2?j, 1?G_v׽e&+?7d^h0>**aZ>n<iP;ĺM=.V=㽾)v7ҽy> A     0A'VMtl12  PA6@:pCube13_0GA)A(;- $Q ^- -ښ-ښ ^=(Y, _=, _=,^=(Y,42=jV~nMb=,nMb=,42=jV~- $Q ^-;- $Q ^-42=jV~^=(Y, nMb=,;-ښ _=,`A6?>ܽ uW<Ӛ?0C=˾#_S`"ҽ A     0A'VMtl13  PA6@:pCube14_0GA)A( %BF==&D9=ᾢͼEE=ᾢͼbz>l7u e6A=m5ƼA=m5Ƽbz>l7u e6> t*k="e8k="e8> t*==&D9 %BF==&D9> t*bz>l7u e6=ᾢͼk="e8 %BFEA=m5Ƽ`A6?>ܽtWo-N%te)=`"ҽ A     0A'VMtl14  PA6@:pCube15_0GA)A( ;>@F==u">D9=]!>ͼE䯇>E䯇>=]!>ͼbz>ŷ>e6A=>ƼA=>Ƽbz>ŷ>e6>lQ>*k=kR>d8k=kR>d8>lQ>*==u">D9 ;>@F==u">D9>lQ>*bz>ŷ>e6=]!>ͼk=kR>d8 ;>@FE䯇>A=>Ƽ`A6?>ܽtWo-N%te)=>"ҽ A     0A'VMtl15  PA6@:pCube16_0GA)A(̥;>@FZY.u>D9ͼN`>N`>ͼX7 Ư>e6nK>ƼnK>ƼX7 Ư>e6WQ>*Öd8Öd8WQ>*ZY.u>D9̥;>@FZY.u>D9WQ>*X7 Ư>e6ͼÖd8̥;>@FN`>nK>Ƽ`A6?>ܽtWo-N%ted<>"ҽ A     0A'VMtl16  PA6@:pCube17_0GA)A(">R=qB'A&?>q 1`"?_>C>E=۾ >E=۾ `"?_>C>?U>3{ >w>~` >w>~`>?U>3{c?x>2/>;>@>;>@c?x>2/'A&?>q 1">R=qB'A&?>q 1c?x>2/>?U>3{`"?_>C>;>@">R=qB>E=۾ >w>~``A6Z=><9LL=LIy?>"ҽ A     0A'VMtl17  PA6@:pCube18_0GA)A(Ş>+BFY ?*ھD9.?Фھͼoh>ѣoh>ѣ.?ФھͼD,?g e6?3Ƽ?3ƼD,?g e6/?f*?'e8?'e8/?f*Y ?*ھD9Ş>+BFY ?*ھD9/?f*D,?g e6.?Фھͼ?'e8Ş>+BFoh>ѣ?3Ƽ`A6?>ܽtWo-N%te? S"ҽ A     0A'VMtl18  PA6@:pCube19_0GA)A(AJtA>#ؽ-'T@߯Gվz#lS*^#lS*^߯Gվz7Ծ$aV4aV47Ծ$Z½]',AJt#lS*^`A67:>4ND:QE>T>:*oR>y琽#>#>oR>y琽ד>8> 8> ד>y\>V!)>&1)>&1y\>V!QE>T>:*Y>D:QE>T>:*y\>V!ד>oR>y琽)>&1Y>D:#>8> `A67:>4N< GT=g~i{tiyξ,>A A     0A'VMtl20  PA6@:pCube21_0GA)A(=!z#W6P>2$>wU=#w̽U=#w̽>wy>eI/=D˾HȽ/=D˾HȽy>eIǯ>#gb=Oʾ94gb=Oʾ94ǯ>#P>2$=!z#W6P>2$ǯ>#y>eI>wgb=Oʾ94=!z#W6U=#w̽/=D˾HȽ`A6Z=><9jO\ A     0A'VMtl21  PA6@:pCube22_0GA)A(=>T>S҆=t˩=FN>tߍ=gT>S҆=T>S˩=FN>tKuJ?K=`A6ѓeZ;=O>S==y A     0A'VMtl22  PA6$ MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &!*1?ЖY Ǿ?"&-<> <$j? # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &!*@GDa=p?>"&Ҋ/>< ? # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube03 &!*z3@c2x?Ih"&w@>!?oK>"&5>. <x? # # # #< #< #<0 pCube4_0Ge@  &!*"&???0 $$$DUMMY@pCube05 &͇>NҜ!*(j?>pPs="&h:>e<ù~? # # # #< #< #<0 pCube5_0Ge@  &!*"&???0 $$$DUMMY@pCube06 & (NҜ!*-?7[j?E>"&:88><"q? # # # #< #< #<0pCube6_0Ge@  &!*"&???0$$$DUMMY@pCube07 & ("ҽ#k=!*-g?lρ:I?&d!="&!Y@>=AG3? # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube08 & ="ҽ#k=!*] @+?ƚ'="&Hw@>==<]> # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCube09 &;\>"ҽ#k=!*6 ? }e<"&@> =3? # # # #< #< #<0pCube9_0Ge@ &!*"&???0$$$DUMMY@pCube10 &;\>"ҽD!*K>7|?}="&Gw@>Y=$+3? # # # #< #< #<0pCube10_0G@ &!*"&???0$$$DUMMY@pCube11 &"ҽQ=!*k?y?4?T"&@>(-=2? # # # #< #< #<0pCube11_0G@ &!*"&???0$$$DUMMY@pCube12 &ҽy!*%#>1!b3;>"&[@>4=ڿ> # # # #< #< #<0pCube12_0G@ &!*"&???0$$$DUMMY@pCube13 &_S"ҽ`>!*j?b }? "&a@>{)=3? # # # #< #< #<0pCube13_0G@ &!*"&???0$$$DUMMY@pCube14 &)="ҽ`>!*j?b }? "&a@>. >T{> # # # #< #< #<0pCube14_0G@ &!*"&???0$$$DUMMY@pCube15 &)="ҽ!*j?b }? "&a@>. >T{> # # # #< #< #<0 pCube15_0G@ &!*"&???0!$$$DUMMY@pCube16 &d<"ҽ!*j?b }? "&a@>. >T{> # # # #< #< #<0"pCube16_0G@! &!*"&???0#$$$DUMMY@pCube17 &?"ҽ!*|B&>ISR "&1@>+ >͓{> # # # #< #< #<0$pCube17_0G@# &!*"&???0%$$$DUMMY@pCube18 &?"ҽ S>!*j?b }? "&a@>. >T{> # # # #< #< #<0&pCube18_0G@% &!*"&???0'$$$DUMMY@pCube19 &&/C?!*1>K0 o?#ǰ"&@@>%=Z{> # # # #< #< #<0(pCube19_0G@' &!*"&???0)$$$DUMMY@pCube20 &yξA,!*1>K0 o?$ǰ"&@@>Z=Z{> # # # #< #< #<0*pCube20_0G@) &!*"&???0+$$$DUMMY@pCube21 &;>[jO?!*{B&>ISR "&1@>`ʠ=͓{> # # # #< #< #<0,pCube21_0G@+ &!*"&???0-$$$DUMMY@pCube22 &O>yQ=!*l?z ?t}="&@>MH=3? # # # #< #< #<0.pCube22_0G@- &!*"&???gl-117-1.3.2/models/ship1.3ds0000644000175000017500000015331210145416156014623 0ustar cedriccedricMM == >=  VMtl01 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl02 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl03 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl04 fff  fff0 @0A0P0R0S00 ? VMtl05 fff  fff0 @0A0P0R0S00 ? VMtl06 fff  fff0 @0A0P0R0S00 ? VMtl07 fff  fff0 @0A0P0R0S00 ? VMtl08 fff  fff0 @0A0P0R0S00 ? VMtl09 fff  fff0 @0A0P0R0S00 ? VMtl10 fff  fff0 @0A0P0R0S00 ? VMtl11 fff  fff0 @0A0P0R0S00 ? VMtl12 fff  fff0 @0A0P0R0S00 ? VMtl13 fff  fff0 @0A0P0R0S00 ? VMtl14 fff  fff0 @0A0P0R0S00 ? VMtl15 fff  fff0 @0A0P0R0S00 ? VMtl16 fff  fff0 @0A0P0R0S00 ? VMtl17 fff  fff0 @0A0P0R0S00 ? VMtl18 fff  fff0 @0A0P0R0S00 ? VMtl19 fff  fff0 @0A0P0R0S00 ? VMtl20 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl21 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl22 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl23 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl24 lll  lll0 @0A0P0R0S00 ?30dSHIP_FRA.RGBQS VMtl25 fff  fff0 @0A0P0R0S00 ? ?@pCylinder1AAP 8[Y>=7=4[Y>k7=G$?7=G$?a>7=4[Y>k7=4[Y>x*˽==G$?$==G$?7=4[Y>x*˽==4[Y> OG OG<5[Y>lXG$?􊮽R)G$?{ڼ5[Y>lX6[Y>4Y5G$?4snG$?􊮽R)6[Y>4Y57[Y>,R=G$?ǩ=R)G$?4sn7[Y>,R=8[Y>R=OGڼG$?ǩ=R)8[Y>R=OG<8[Y>*=?=G$?$>?=G$?>ڼ8[Y>*=?=8[Y>=7=G$?a>7=G$?$>?=G$?a>7=G$?7=*?s+7=*?s+>7=G$?7=G$?$==*?r?==*?s+7=G$?$==G$?{ڼ*?tpZ*?r?==G$?{ڼG$?􊮽R)*?˽$&*?tpZG$?􊮽R)G$?4sn*?*;2v7*?˽$&G$?4snG$?ǩ=R)*?)=$&*?*;2v7G$?ǩ=R)G$?>ڼ*?tp>Z*?)=$&G$?>ڼG$?$>?=*?r?>?=*?tp>ZG$?$>?=G$?a>7=*?s+>7=*?r?>?=*?s+>7=*?s+7=?2$7=?2$>7=*?s+7=*?r?==?P7==?2$7=*?r?==*?tpZ?ڼ?P7==*?tpZ*?˽$&?g½R)?ڼ*?˽$&*?*;2v7?3sn?g½R)*?*;2v7*?)=$&?=R)?3sn*?)=$&*?tp>Z?z>ڼ?=R)*?tp>Z*?r?>?=?P7>?=?z>ڼ*?r?>?=*?s+>7=?2$>7=?P7>?=?2$>7=?2$7= ?#ڽ7= ?r#=7=?2$7=?P7== ?L== ?#ڽ7=?P7==?ڼ ?3ʽg@< ?L==?ڼ?g½R) ? ?3ʽg@<?g½R)?3sn ?Y5 ??3sn?=R) ?${= ?Y5?=R)?z>ڼ ?=q@< ?${=?z>ڼ?P7>?= ?=?= ?=q@<?P7>?=?2$>7= ?r#=7= ?=?=4[Y>k7=8[Y>=7=6fg4=4[Y>x*˽==4[Y>k7=6fg4=4[Y> OG<4[Y>x*˽==6fg4=5[Y>lX4[Y> OG<6fg4=6[Y>4Y55[Y>lX6fg4=7[Y>,R=6[Y>4Y56fg4=8[Y>R=OG<7[Y>,R=6fg4=8[Y>*=?=8[Y>R=OG<6fg4=8[Y>=7=8[Y>*=?=6fg4= ?r#=7= ?#ڽ7=@ȴ= ?#ڽ7= ?L==@ȴ= ?L== ?3ʽg@<@ȴ= ?3ʽg@< ?@ȴ= ? ?Y5@ȴ= ?Y5 ?${=@ȴ= ?${= ?=q@<@ȴ= ?=q@< ?=?=@ȴ= ?=?= ?r#=7=@ȴ=@A8HO>w6>z>$=~>a> >Ϻ>z>$=~z>=8>OY >~>a>~z>=>W='>B=8>OY >>W=v3>lˀ<<> ],='>B=v3>lˀ<ځ>k> 0,=<> ],=ځ>$ n>"=q>O=k> 0,=$ n>"=Z>xF >G>M>q>O=Z>xF >J>H>Q>L>G>M>J>H>HO>w6> >Ϻ>Q>L> >Ϻ>~>a>:(?A> ?0>~>a>8>OY >`*?E>:(?A>8>OY >'>B=8&?a>`*?E>'>B=<> ],=q ?1_=8&?a><> ],=k> 0,==?k =q ?1_=k> 0,=q>O=Jz?)=3>=?k =q>O=G>M>_ ?>Jz?)=3>G>M>Q>L>, ?*>_ ?>Q>L> >Ϻ> ?0>, ?*> ?0>:(?A>SR?cЁ>2?>:(?A>`*?E>T?B]>SR?cЁ>`*?E>8&?a>̘N?-L>T?B]>8&?a>q ?1_=6#G? &>̘N?-L>q ?1_==?k =7=?C#>6#G? &>=?k =Jz?)=3>]26?jlo>7=?C#>Jz?)=3>_ ?>2?>]26?jlo>_ ?>, ?*>21?M>2?>, ?*> ?0>2?>21?M>2?>SR?cЁ>Hr?#>^[?>SR?cЁ>T?B]>bt?;4>Hr?#>T?B]>̘N?-L>,Do?>bt?;4>̘N?-L>6#G? &>qh?(т>,Do?>6#G? &>7=?C#>`? r>qh?(т>7=?C#>]26?jlo>`\?7>`? r>]26?jlo>2?>.Z?ƿ>`\?7>2?>21?M>[?2>.Z?ƿ>21?M>2?>^[?>[?2>z>$=HO>w6>Oyt=~z>=z>$=Oyt=>W=~z>=Oyt=v3>lˀ<>W=Oyt=ځ>v3>lˀ<Oyt=$ n>"=ځ>Oyt=Z>xF >$ n>"=Oyt=J>H>Z>xF >Oyt=HO>w6>J>H>Oyt=^[?>Hr?#>?{>Hr?#>bt?;4>?{>bt?;4>,Do?>?{>,Do?>qh?(т>?{>qh?(т>`? r>?{>`? r>`\?7>?{>`\?7>.Z?ƿ>?{>.Z?ƿ>[?2>?{>[?2>^[?>?{>`A6H4B[j?+3.;??aǨ*? A Z    "#  !"%&'$%')*+()+./,,-.123013567457:;889:>?<<=>ABC@ACFGDDEFHIJHJKLMNLNOPQRPRSTUVTVWXYZXZ[_\]]^_c`aabcgdeefgkhiijklmnlnopqrprstuvtvwxyzxz{|}~|~0AVMtl01Z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYPAn@pCube1_0GeAA(8?u<8?e=<8?c=8?wa)?ۇeƀ>a)?ۇ=eƀ>ay?ۇ=eƀ>ay?ۇeƀ>i?fi?t=i?u=8?c=i?e<8?u<8?wi?f8?w8?c=a)?ۇ=eƀ>a)?ۇeƀ>8?c=i?t=ay?ۇ=eƀ>a)?ۇ=eƀ>i?t=i?fay?ۇeƀ>ay?ۇ=eƀ>i?f8?wa)?ۇeƀ>ay?ۇeƀ>@AH(Uf?c> ?z>"'?'Nz?||?FC6?a?#hL?"!?? p>[? ^>v#?z>>4w+>w+>b> ?X>Uf?c> ?z>b>4Uf?c>||?FC6?z>>||?FC6?"'?'Nz?"!??a?#hL?"'?'Nz?4[?"!??4> ^>v#? p>[?z>>||?FC6?a?#hL? ^>v#?`A65jl3m3>2 G><>)aaQ?.M> A5     !" "#$%&$&'0A7VMtl02 PAV@bpCube2_0GeAQA8P?dUP?&->P?&->P?='->\?=]_K>[?\_K>1?!&->1?t!='->1?v!=dU<1?!dU<[?⽳dU<\?=dUP?='->[?⽳dU[?\_K>[?\_K>\?=]_K>oV?Ҿ=\_K>oV?Ҿ\_K>\?=]_K>\?=dU\?=dU<[?⽳dUoV?Ҿ\_K>oV?ҾdUoV?Ҿ=\_K>1?t!='->1?!&->oV?Ҿ=\_K>oV?Ҿ=dU<1?v!=dU<1?t!='->oV?Ҿ=dU1?!&->1?!dU<@A8z?q>d@V?>Z?|/?? ?? ?Z?|/?o?V4?F? > =Z>t>Dd@V?/>z?q>d@V?>?o>o?V4?Z?|/?!C?=z?q>? ?F? >F? >o?V4?i>?u9>>Y>o?V4??o>ϡ|>>i>??o>!C?=:><ϡ|>>!C?=F? >u9>>Y>:>>Y>i>?t> =Z>i>?ϡ|>>Dϡ|>>:><=D>Y> =Z>=`A6b3b> i&2M >vm>Uer?r= A     !" "#$%&$&'()*(*+/,--./0120234564670AGVMtl03 PAv@jpCube3_0GeAYA(\?9ۻ>\?;>Z?oir;>Z?Bjr>?(>?(;>?"(;>?(>Џ?6jr>Џ?{ir;>C?;>C?.ۻ>C?.ۻ>C?;>\?;>\?9ۻ>\?;>C?;>Џ?{ir;>Z?oir;>C?.ۻ>\?9ۻ>Z?Bjr>Џ?6jr>Z?Bjr>Z?oir;>?(;>?(>Z?oir;>Џ?{ir;>?"(;>?(;>Џ?{ir;>Џ?6jr>?(>?"(;>Џ?6jr>Z?Bjr>?(>?(>`A6Ȑ1%[<H!0ݏD>e<ŁO?QT > A5     !" "#'$%%&'0A7VMtl04 PAV@jpCube4_0GeAYA(?ܚI=>?{ܚ;I=>?*;1>?X*1>5X?I ?5X?:I ?̶?:I ?̶?I ??O*1>?*;1>/?ܚ;I=>/?ܚI=>/?ܚI=>/?ܚ;I=>?{ܚ;I=>?ܚI=>?{ܚ;I=>/?ܚ;I=>?*;1>?*;1>/?ܚI=>?ܚI=>?X*1>?O*1>?X*1>?*;1>5X?:I ?5X?I ??*;1>?*;1>̶?:I ?5X?:I ??*;1>?O*1>̶?I ?̶?:I ??O*1>?X*1>5X?I ?̶?I ?`A6tK1<#/%N>*5<~oj/?qW> A5     !" "#'$%%&'0A7VMtl05 PAV@pCylinder3AA`2SP>4)>>Ϛa)>tx>Ts伒=X>۪<=>Ϛa)>>蘟K$>>\=tx>Ts伒=>蘟K$>>; C#>y>̼](=>\=>; C#>O>k&>3> ɛn=y>̼](=O>k&>SP>4)>X>۪<=3> ɛn=>Ϛa)>SP>4)>*s>O0&>>蘟K$>>Ϛa)>*s>O0&>>; C#>>蘟K$>*s>O0&>O>k&>>; C#>*s>O0&>SP>4)>O>k&>*s>O0&>X>۪<=tx>Ts伒=p>ɼpC=tx>Ts伒=>\=p>ɼpC=>\=y>̼](=p>ɼpC=y>̼](=3> ɛn=p>ɼpC=3> ɛn=X>۪<=p>ɼpC=`A6>bSgi<ӷ9< $<6 K\> A5     !"#$%&'()*+,-./010A7VMtl06 PAV@pCylinder5AA`2>]=%">}>kw=W0">Q>;O<#=>yy<=}>kw=W0">>s=<> }>7< =Q>;O<#=>s=<>>X=D>:$>oS<^= }>7< =>X=D>> <=> >oS<^=> <=>>]=%">>yy<= >kw=W0">>]=%">>;,=>>s=<>}>kw=W0">>;,=>>X=D>>s=<>>;,=>> <=>>X=D>>;,=>>]=%">> <=>>;,=>>yy<=Q>;O<#=F>o<|/=Q>;O<#= }>7< =F>o<|/= }>7< =:$>oS<^=F>o<|/=:$>oS<^= >o<|/= >yy<=F>o<|/=`A6d<D=\> A5     !"#$%&'()*+,-./010A7VMtl07 PAV@pCylinder7AA`2?^^~>ơ?^>)?NP=l? ,Z=ơ?^>?+ځ>c?Ce!B=)?NP=?+ځ>)? ;>[?9=c?Ce!B=)? ;>M?9 (>~?H@g-=[?9=M?9 (>?^^~>l? ,Z=~?H@g-=ơ?^>?^^~>;?2H>?+ځ>ơ?^>;?2H>)? ;>?+ځ>;?2H>M?9 (>)? ;>;?2H>?^^~>M?9 (>;?2H>l? ,Z=)?NP=z?,W=)?NP=c?Ce!B=z?,W=c?Ce!B=[?9=z?,W=[?9=~?H@g-=z?,W=~?H@g-=l? ,Z=z?,W=`A6]NjG/Ɖ5< A5     !"#$%&'()*+,-./010A7VMtl08 PAV@pCylinder9AA`2sA?=S>?#=@>?<=K? <*=?#=@>;?\=E>E?==?<=;?\=E>}?=>ik?<=E?==}?=>W?m=C>=?<=ik?<=W?m=C>sA?=S>K? <*==?<=?#=@>sA?=S>V3?G=b>;?\=E>?#=@>V3?G=b>}?=>;?\=E>V3?G=b>W?m=C>}?=>V3?G=b>sA?=S>W?m=C>V3?G=b>K? <*=?<=?3<=?<=E?==?3<=E?==ik?<=?3<=ik?<==?<=?3<==?<=K? <*=?3<=`A6A=ü";|B `E A5     !"#$%&'()*+,-./010A7VMtl09 PAV@:pCube5_0GeA)A(|(?>|(?=>|(?=EҞ>|(?EҞ>|(?EҞ>|(?=EҞ>F?=EҞ>F?EҞ>F?EҞ>F?=EҞ>F?=>F?>F?>F?=>|(?=>|(?>|(?=>F?=>F?=EҞ>|(?=EҞ>F?>|(?>|(?EҞ>F?EҞ>`A6sE3>z1{;t;{(ڤ?#f> A     0A'VMtl10  PA6@:pCube6_0GeA)A(8?>8?=>8?=G>8?G>8?G>8?=G>H?=G>H?G>H?G>H?=G>H?=>H?>H?>H?=>8?=>8?>8?=>H?=>H?=G>8?=G>H?>8?>8?G>H?G>`A6sE3>z1{;t;{(ڤ@1?> A     0A'VMtl11  PA6@:pCube7_0GeA)A(?p=?ނ< M=|> M=|> M=|>< M=|>p=|>p=|>< M=?݂< M=|>p=?p=? M=|> M=`A6V2z=71gA=5C='Læ*>Kqޱ= A     0A'VMtl12  PA6@:pCube8_0GeA)A(?T2=X?Y=]= ?:=9= ?U= ?U= ?:=9=R>T=P%>KW>\9/>KW>\9/>R>T=P%>1>=>/>6>:>6>:>1>=>/>X?Y=]=?T2=X?Y=]=1>=>/>R>T=P%> ?:=9=6>:>?T2= ?U=KW>\9/>`A61"=&<4Z;<5>l9: Ռ>יi= A     0A'VMtl13  PA6@:pCube9_0GeA)A(|(?ی>|(?=ی>|(?=9`>|(?9`>|(?9`>|(?=9`>F?=9`>F?9`>F?9`>F?=9`>F?=ی>F?ی>F?ی>F?=ی>|(?=ی>|(?ی>|(?=ی>F?=ی>F?=9`>|(?=9`>F?ی>|(?ی>|(?9`>F?9`>`A6sE3>z1{;t;{(ڤ?v> A     0A'VMtl14  PA6@jpCube10_0GAYA(?ܚbjc>?wܚ;cjc>%?*;N>%?M*N>F?qvV>F?:vV>"?:vV>"?fvV>??E*N>??*;N>Dž?ܚ;cjc>Dž?ܚbjc>Dž?ܚbjc>Dž?ܚ;cjc>?wܚ;cjc>?ܚbjc>?wܚ;cjc>Dž?ܚ;cjc>??*;N>%?*;N>Dž?ܚbjc>?ܚbjc>%?M*N>??E*N>%?M*N>%?*;N>F?:vV>F?qvV>%?*;N>??*;N>"?:vV>F?:vV>??*;N>??E*N>"?fvV>"?:vV>??E*N>%?M*N>F?qvV>"?fvV>`A6tK1<#/Y27>*5<~oj/;?i遟> A5     !" "#'$%%&'0A7VMtl15 PAV@ZpCube11_0GAIA`Q*>~;=Q*>z;M=o~>z;M=o~>~;=Q*>S=c=o~>S=c=o~>߄߄]==o~>]==o~>]=M=Q*>]=M=o~>S=oz=Q*>S=oz=Q*>߄߄S==%>S=M=%>߄<M=%>߄<=yf>߄<M=yf>S=M=yf>S==yf>߄<=yf>߄<=o~>~;=o~>z;M=yf>߄<M=o~>߄߄<=yf>S==o~>S=oz=o~>~;=o~>߄߄~;=%>߄<=Q*>߄S=oz=%>S==Q*>~;=%>߄<=%>߄<M=Q*>z;M=Q*>߄߄<M=%>S=M=Q*>S=c=Q*>z;M=Q*>߄߄z;M=yf>߄<M=o~>߄S=c=yf>S=M=Q*>]=M=%>S=M=%>S==Q*>]==Q*>S=c=Q*>]=M=o~>]=M=o~>S=c=yf>S=M=o~>]=M=o~>]==yf>S==Q*>]==Q*>S=oz=o~>S=oz=o~>]==o~>~;=yf>߄<=o~>߄߄߄<=Q*>~;=Q*>z;M=%>߄<M=Q*>߄߄߄<M=o~>z;M=Q*>S=c=%>S=M=Q*>]=M=o~>]=M=yf>S=M=o~>S=c=Q*>]==%>S==Q*>S=oz=o~>S=oz=yf>S==o~>]==`A6 =<ڀ=$r1#1>e == A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl16,  !"#$%&'()*+PA@ZpCube12_0GAIA`Q*>V=Q*>VM=o~>VM=o~>V=Q*>{c=o~>{c=o~>Zb=Q*>Zb=Q*> Ȼ=o~> Ȼ=o~>ȻM=Q*>ȻM=o~>yoz=Q*>yoz=Q*>Zoz=o~>Zoz=%>z=%>{M=%>ZM=%>Z=yf>ZM=yf>{M=yf>z=yf>Z=yf>Z=o~>V=o~>VM=yf>ZM=o~>Zoz=yf>Z=yf>z=o~>yoz=o~>V=o~>Zoz=Q*>Zoz=Q*>V=%>Z=Q*>Zoz=Q*>yoz=%>z=Q*>V=%>Z=%>ZM=Q*>VM=Q*>Zb=%>ZM=%>{M=Q*>{c=Q*>VM=Q*>Zb=o~>Zb=o~>VM=yf>ZM=o~>Zb=o~>{c=yf>{M=Q*>ȻM=%>{M=%>z=Q*> Ȼ=Q*>{c=Q*>ȻM=o~>ȻM=o~>{c=yf>{M=o~>ȻM=o~> Ȼ=yf>z=Q*> Ȼ=Q*>yoz=o~>yoz=o~> Ȼ=o~>V=yf>Z=o~>Zoz=Q*>Zoz=%>Z=Q*>V=Q*>VM=%>ZM=Q*>Zb=o~>Zb=yf>ZM=o~>VM=Q*>{c=%>{M=Q*>ȻM=o~>ȻM=yf>{M=o~>{c=Q*> Ȼ=%>z=Q*>yoz=o~>yoz=yf>z=o~> Ȼ=`A6 =<ڀ=$r1#1>W(= A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl17,  !"#$%&'()*+PA@ZpCube13_0GAIA`? a=? aM=? aM=? a=?Q c=?Q c=?C*b=?C*b=?+;=?+;=?+;M=?+;M=?Q oz=?Q oz=?B*oz=?B*oz=\?Q =\?Q M=\?C*M=\?B*= ?C*M= ?Q M= ?Q = ?B*= ?B*=? a=? aM= ?C*M=?B*oz= ?B*= ?Q =?Q oz=? a=?B*oz=?B*oz=? a=\?B*=?B*oz=?Q oz=\?Q =? a=\?B*=\?C*M=? aM=?C*b=\?C*M=\?Q M=?Q c=? aM=?C*b=?C*b=? aM= ?C*M=?C*b=?Q c= ?Q M=?+;M=\?Q M=\?Q =?+;=?Q c=?+;M=?+;M=?Q c= ?Q M=?+;M=?+;= ?Q =?+;=?Q oz=?Q oz=?+;=? a= ?B*=?B*oz=?B*oz=\?B*=? a=? aM=\?C*M=?C*b=?C*b= ?C*M=? aM=?Q c=\?Q M=?+;M=?+;M= ?Q M=?Q c=?+;=\?Q =?Q oz=?Q oz= ?Q =?+;=`A6 =<ڀ=$r14?W= A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl18,  !"#$%&'()*+PA@ZpCube14_0GAIA`?<=?<M=?<M=?<=?W(h=c=?W(h=c=?E<>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl19,  !"#$%&'()*+PA@pCylinde11AAH0??CM=R7> ?)=R7> ?S=>6M?m=> ?)=R7>Y?CM=R7>?m=> ?S=>Y?CM=R7>?FR7>?>?m=>?FR7>Y?GMQ7>?v>?>Y?GMQ7> ?+Q7> ?S>?v> ?+Q7>??GMQ7>6M?v> ?S>??GMQ7>\t{?>6M?v>\??CM=R7>6M?m=>t{?>??CM=R7>\??GMQ7> ?+Q7>Y?GMQ7>?FR7>Y?CM=R7> ?)=R7>6M?m=> ?S=>?m=>?>?v> ?S>6M?v>t{?>@A0">>">>Kv>Kv>>">>">>Kv>>Kv>>">>">>Kv>>Kv>>">?">?Kv>>Kv>?"> ?"> ?Kv>?Kv> ?">@?">@?Kv> ?Kv>@?">`?">`?Kv>@?Kv>`?">?">?Kv>`?Kv>">>">>">>">?"> ?">@?">`?">Kv>>Kv>>Kv>>Kv>?Kv> ?Kv>@?Kv>`?Kv>`A6-===*T ?E]> A     !"# !#' #&'#%&##$%()*(*+(+,(,-(-.(./0AGVMtl20 PAv  @ pTorus1_0GA A? <"T>?(<"T>l? )=!>?\=!>0?(<"T>? <"T>?\=!>!q? )=!> ? "T>0?(<"T>!q? )=!>*?*!>0?)"T> ? "T>*?*!>!q?)!>?ܼ"T>0?)"T>!q?)!>?\!>?)"T>?ܼ"T>?\!>l?)!>? "T>?)"T>l?)!>$?*!>?(<"T>? "T>$?*!>l? )=!>?\=!>l? )=!>+?=j="T>? ="T>!q? )=!>?\=!>? ="T>5?=j="T>*?*!>!q? )=!>5?=j="T>H? "T>!q?)!>*?*!>H? "T>5?=j"T>?\!>!q?)!>5?=j"T>?"T>l?)!>?\!>?"T>+?=j"T>$?*!>l?)!>+?=j"T>:? "T>l? )=!>$?*!>:? "T>+?=j="T>? ="T>+?=j="T>l? )=>?\=>5?=j="T>? ="T>?\=>!q? )=>H? "T>5?=j="T>!q? )=>*?_o>5?=j"T>H? "T>*?_o>!q?)>?"T>5?=j"T>!q?)>?\>+?=j"T>?"T>?\>l?)>:? "T>+?=j"T>l?)>$?_o>+?=j="T>:? "T>$?_o>l? )=>?\=>l? )=>?(<"T>? <"T>!q? )=>?\=>? <"T>0?(<"T>*?_o>!q? )=>0?(<"T> ? "T>!q?)>*?_o> ? "T>0?)"T>?\>!q?)>0?)"T>?ܼ"T>l?)>?\>?ܼ"T>?)"T>$?_o>l?)>?)"T>? "T>l? )=>$?_o>? "T>?(<"T>@A>??@?>@?>?>?>@?>@?>?>?>@?>@???>?>@??@? ?????@? ?@?@?? ?? ?@?@?@?`??@??@?@?`?@???`??`?@??@?>@?@??>?>@?>@?>?>?>@?>@?>?>??@?>@?>??? ?@??@??? ??@?@? ?@? ??@??`?@?@?@?@??`???@?`?@?`????>??>>>>?>?>>>>>?>?>>>>??>?>>?> ?????> ?>@?? ?? ?>@?>`??@??@?>`?>??`??`?>?>>>>>>>>>>>>>>>>>?>>>>? ?>?>? ?@?> ?> ?@?`?>@?>@?`??>`?>`??`A6Mx=!\=\!? "T> A@    "#  !"%&'$%'*+(()*-./,-/230012567457:;889:=>?<=?C@AABCDEFDFGKHIIJKLMNLNOSPQQRSTUVTVW[XYYZ[\]^\^_`ab`bcgdeefghijhjkolmmnopqrprswtuuvwxyzxz{|}}~0AVMtl21@  !"#$%&'()*+,-./0123456789:;<=>?PA@ pTorus2_0GA A?<>$?R<>O?S%=q<>?i=q<>?R<>?<>?i=q<>?S%=q<>?Y>?R<>?S%=q<>(?koq<>?R>?Y>(?koq<>?S%q<>?鼕>?R>?S%q<>?iq<>$?R>?鼕>?iq<>O?S%q<>c ?Y>$?R>O?S%q<>'?koq<>$?R<>c ?Y>'?koq<>O?S%=q<>?i=q<>O?S%=q<>z?{w=>?QZ=>?S%=q<>?i=q<>?QZ=>z6?{w=>(?koq<>?S%=q<>z6?{w=>?Y>?S%q<>(?koq<>?Y>z6?w>?iq<>?S%q<>z6?w>?UZ>O?S%q<>?iq<>?UZ>z?w>'?koq<>O?S%q<>z?w>5D?Y>O?S%=q<>'?koq<>5D?Y>z?{w=>?QZ=>z?{w=>O?S%=>?i=>z6?{w=>?QZ=>?i=>?S%=>?Y>z6?{w=>?S%=>(? D>z6?w>?Y>(? D>?S%>?UZ>z6?w>?S%>?i>z?w>?UZ>?i>O?S%>5D?Y>z?w>O?S%>'? D>z?{w=>5D?Y>'? D>O?S%=>?i=>O?S%=>$?R<>?<>?S%=>?i=>?<>?R<>(? D>?S%=>?R<>?Y>?S%>(? D>?Y>?R>?i>?S%>?R>?鼕>O?S%>?i>?鼕>$?R>'? D>O?S%>$?R>c ?Y>O?S%=>'? D>c ?Y>$?R<>@A>??@?>@?>?>?>@?>@?>?>?>@?>@???>?>@??@? ?????@? ?@?@?? ?? ?@?@?@?`??@??@?@?`?@???`??`?@??@?>@?@??>?>@?>@?>?>?>@?>@?>?>??@?>@?>??? ?@??@??? ??@?@? ?@? ??@??`?@?@?@?@??`???@?`?@?`????>??>>>>?>?>>>>>?>?>>>>??>?>>?> ?????> ?>@?? ?? ?>@?>`??@??@?>`?>??`??`?>?>>>>>>>>>>>>>>>>>?>>>>? ?>?>? ?@?> ?> ?@?`?>@?>@?`??>`?>`??`A6=v+i=iv+?Y> A@    "#  !"%&'$%'*+(()*-./,-/230012567457:;889:=>?<=?C@AABCDEFDFGKHIIJKLMNLNOSPQQRSTUVTVW[XYYZ[\]^\^_`ab`bcgdeefghijhjkolmmnopqrprswtuuvwxyzxz{|}}~0AVMtl22@  !"#$%&'()*+,-./0123456789:;<=>?PA@b pCube15_0GAQ A`-?B~^>-?BΒ>j?BΒ>j?B~^>-?V=>j?V=>j?]>-?]>-?<=~^>j?<=~^>j?<=Β>-?<=Β>j?W=S G>-?W=S G>-?\S G>j?\S G>?W=~^>?V=Β>?]Β>?\~^>c?]Β>c?V=Β>c?W=~^>c?\~^>c?\~^>j?B~^>j?BΒ>c?]Β>j?\S G>c?\~^>c?W=~^>j?W=S G>j?B~^>j?\S G>-?\S G>-?B~^>?\~^>-?\S G>-?W=S G>?W=~^>-?B~^>?\~^>?]Β>-?BΒ>-?]>?]Β>?V=Β>-?V=>-?BΒ>-?]>j?]>j?BΒ>c?]Β>j?]>j?V=>c?V=Β>-?<=Β>?V=Β>?W=~^>-?<=~^>-?V=>-?<=Β>j?<=Β>j?V=>c?V=Β>j?<=Β>j?<=~^>c?W=~^>-?<=~^>-?W=S G>j?W=S G>j?<=~^>j?B~^>c?\~^>j?\S G>-?\S G>?\~^>-?B~^>-?BΒ>?]Β>-?]>j?]>c?]Β>j?BΒ>-?V=>?V=Β>-?<=Β>j?<=Β>c?V=Β>j?V=>-?<=~^>?W=~^>-?W=S G>j?W=S G>c?W=~^>j?<=~^>@A`Y>fN=Y>R>h=R>h=fN=m5?fN=m5?R>>R>>fN=i??i?BCK?x%?BCK?x%??>BCK?>?hA$??hA$?BCK?=2>߾>2>߾>4?=4?>j5?>y?7;y?7;j5?7;fN=h=fN=h=R>7;R>hA$?BCK?hA$?ɭa?>ɭa?>BCK?h=fN=h=:Y>:Y>fN=hA$?2>hA$??>?>2>Y>fN=->fN=->R>Y>R>>fN=>:m5?:m5?fN=Y>R>Y>p'>h=p'>h=R>>p'>>R>m5?R>m5?p'>x%??x%?2>i?2>i??m5?fN=K?fN=K?R>m5?R>x%?ɭa?x%?BCK?i?BCK?i?ɭa?i??t}??t}?BCK?i?BCK?h=fN=7;fN=h=:Y>:->fN=Y>fN=Y>R>->R>Y>p'>h=p'>7;R>h=R>m5?fN=m5?:K?fN=K?R>m5?p'>m5?R>i??i?2>t}??t}?BCK?i?ɭa?i?BCK?`A6G! >;gs=?t?P=> A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl23,  !"#$%&'()*+PA@b pCube16_0GAQ A`t?j7}q>t?j7 h>\T?j7 h>\T?j7}q>t?|BL=O>\T?|BL=O>\T?BLO>t?BLO>t?h7=}q>\T?h7=}q>\T?h7= h>t?h7= h>\T?}BL==t?}BL==t?BL=\T?BL=t?}BL=}q>t?|BL= h>t?BL h>t?BL}q>pD?BL h>pD?|BL= h>pD?}BL=}q>pD?BL}q>pD?BL}q>\T?j7}q>\T?j7 h>pD?BL h>\T?BL=pD?BL}q>pD?}BL=}q>\T?}BL==\T?j7}q>\T?BL=t?BL=t?j7}q>t?BL}q>t?BL=t?}BL==t?}BL=}q>t?j7}q>t?BL}q>t?BL h>t?j7 h>t?BLO>t?BL h>t?|BL= h>t?|BL=O>t?j7 h>t?BLO>\T?BLO>\T?j7 h>pD?BL h>\T?BLO>\T?|BL=O>pD?|BL= h>t?h7= h>t?|BL= h>t?}BL=}q>t?h7=}q>t?|BL=O>t?h7= h>\T?h7= h>\T?|BL=O>pD?|BL= h>\T?h7= h>\T?h7=}q>pD?}BL=}q>t?h7=}q>t?}BL==\T?}BL==\T?h7=}q>\T?j7}q>pD?BL}q>\T?BL=t?BL=t?BL}q>t?j7}q>t?j7 h>t?BL h>t?BLO>\T?BLO>pD?BL h>\T?j7 h>t?|BL=O>t?|BL= h>t?h7= h>\T?h7= h>pD?|BL= h>\T?|BL=O>t?h7=}q>t?}BL=}q>t?}BL==\T?}BL==pD?}BL=}q>\T?h7=}q>@A`Y>fN=Y>R>h=R>h=fN=m5?fN=m5?R>>R>>fN=i??i?BCK?x%?BCK?x%??>BCK?>?hA$??hA$?BCK?=2>߾>2>߾>4?=4?>j5?>y?7;y?7;j5?7;fN=h=fN=h=R>7;R>hA$?BCK?hA$?ɭa?>ɭa?>BCK?h=fN=h=:Y>:Y>fN=hA$?2>hA$??>?>2>Y>fN=->fN=->R>Y>R>>fN=>:m5?:m5?fN=Y>R>Y>p'>h=p'>h=R>>p'>>R>m5?R>m5?p'>x%??x%?2>i?2>i??m5?fN=K?fN=K?R>m5?R>x%?ɭa?x%?BCK?i?BCK?i?ɭa?i??t}??t}?BCK?i?BCK?h=fN=7;fN=h=:Y>:->fN=Y>fN=Y>R>->R>Y>p'>h=p'>7;R>h=R>m5?fN=m5?:K?fN=K?R>m5?p'>m5?R>i??i?2>t}??t}?BCK?i?ɭa?i?BCK?`A67>$Vܱ9>i7*>l? Â;> A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl24,  !"#$%&'()*+PA@:pCube17_0GA)A(3?M>3?=M>3?= >3? >3? >3?= >C;?= >C;? >C;? >C;?= >C;?=M>C;?M>C;?M>C;?=M>3?=M>3?M>3?=M>C;?=M>C;?= >3?= >C;?M>3?M>3? >C;? >`A6sE3>z1{;t;{(ڤ;?;7> A     0A'VMtl25  PA6( MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &*?!*?"&B[j??? # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCube01 &aQ?M>!*?"&m3> G><> # # # #< #< #<0pCube1_0Ge@ &!*"&???0$$$DUMMY@pCube02 &r?r=!*?"&b>M >vm> # # # #< #< #<0pCube2_0Ge@ &!*"&???0 $$$DUMMY@pCube03 &O? >!*?"&%[<>e< # # # #< #< #<0 pCube3_0Ge@  &!*"&???0 $$$DUMMY@pCube04 &?W>!*?"&<>*5< # # # #< #< #<0 pCube4_0Ge@  &!*"&???0 $$$DUMMY@pCylinder2 &VcY>\>K=!*u@͟WuQ>"&f # # # #< #< #<0pCylinder3@  &!*"&???0$$$DUMMY@pCylinder4 &VcY>\>D!*=?B$Eq>"&f # # # #< #< #<0pCylinder5@ &!*"&???0$$$DUMMY@pCylinder6 &?=>޳=!*('@{?4"&s.=&<= # # # #< #< #<0pCylinder7@ &!*"&???0$$$DUMMY@pCylinder8 &׊?\>!*@Q5? P? }"&s.=%<= # # # #< #< #<0pCylinder9@ &!*"&???0$$$DUMMY@pCube05 &?>!*?"&>;t; # # # #< #< #<0pCube5_0Ge@ &!*"&???0$$$DUMMY@pCube06 &@1?>!*?"&>;t; # # # #< #< #<0pCube6_0Ge@ &!*"&???0$$$DUMMY@pCube07 &*>ޱ=!*?"&z=gA=5C= # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube08 &>i=!*?͆۽fv|>"&=& # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCube09 &?v>!*?"&>;t; # # # #< #< #<0pCube9_0Ge@ &!*"&???0$$$DUMMY@pCube10 &;?遟>!*?"&<27>*5< # # # #< #< #<0 pCube10_0G@ &!*"&???0!$$$DUMMY@pCube11 &#1>=f !*"& =ڀ=$r= # # # #< #< #<0"pCube11_0G@! &!*"&???0#$$$DUMMY@pCube12 &#1>=V(=!*"& =ڀ=$r= # # # #< #< #<0$pCube12_0G@# &!*"&???0%$$$DUMMY@pCube13 &4?=W=!*"& =ڀ=$r= # # # #< #< #<0&pCube13_0G@% &!*"&???0'$$$DUMMY@pCube14 &4?=!*"& =ڀ=$r= # # # #< #< #<0(pCube14_0G@' &!*"&???0)$$$DUMMY@pCylinde10 & ?>!*"&-===*= # # # #< #< #<0*pCylinde11@) &!*"&???0+$$$DUMMY@pTorus01 &?"T>!*"&Mx=\=\= # # # #< #< #<0,pTorus1_0G@+ &!*"&???0-$$$DUMMY@pTorus02 &?>!*"&=i=i= # # # #< #< #<0.pTorus2_0G@- &!*"&???0/$$$DUMMY@pCube15 &t?>!*"&G! >s=?= # # # #< #< #<00pCube15_0G@/ &!*"&???01$$$DUMMY@pCube16 &>l?Â;>!*"&7>9>i7*> # # # #< #< #<02pCube16_0G@1 &!*"&???03$$$DUMMY@pCube17 &;?;7>!*?"&>;t; # # # #< #< #<04pCube17_0G@3 &!*"&???gl-117-1.3.2/models/ship2.3ds0000644000175000017500000005704710145416156014634 0ustar cedriccedricMM'^ ==*L>=  VMtl01 lll  lll0 @0A0P0R0S00 ?30dSHIP2_FR.RGBQS VMtl02 lll  lll0 @0A0P0R0S00 ?30dSHIP2_FR.RGBQS VMtl03  0 @0A0P0R0S00 ? VMtl04  0 @0A0P0R0S00 ? VMtl05  0 @0A0P0R0S00 ? VMtl06  0 @0A0P0R0S00 ? VMtl07  0 @0A0P0R0S00 ? VMtl08 fff  fff0 @0A0P0R0S00 ? VMtl09 lll  lll0 @0A0P0R0S00 ?30dSHIP2_FR.RGBQS VMtl10 lll  lll0 @0A0P0R0S00 ?30dSHIP2_FR.RGBQS  ?@pCylinder1AAP A7?8=@7?V==̙>R ==Ι>=@7?V==@7?=u~=̙>>u~=̙>R ==@7?=u~=@7?ꞅ=)<̙>nc=F̙>>u~=@7?ꞅ=)<@7?0(=&[̙>=Fɽ̙>nc=F@7?0(=&[@7?盜4͙>)̙>=Fɽ@7?盜4@7?.&[Ι>AFɽ͙>)@7?.&[A7?˃)<Ι>dH޽ZΙ>AFɽA7?˃)vHt~=Ι>dH޽ZA7?쥽t~=A7?8=Ι>=Ι>vHt~=Ι>=̙>R ==`=u>=l=H =̙>R ==̙>>u~=`=l>u~=`=u>=̙>>u~=̙>nc=Fa=;#=^'L`=l>u~=̙>nc=F̙>=Fɽc=z=?a=;#=^'L̙>=Fɽ͙>)f=I:7c=z=?͙>)Ι>AFɽi=塽@f=I:7Ι>AFɽΙ>dH޽Zk=$j'Li=塽@Ι>dH޽ZΙ>vHt~=l=[t~=k=$j'LΙ>vHt~=Ι>=l=H =l=[t~=l=H =`=u>=7$>=1$X=`=u>=`=l>u~=7$G>u~=7$>=`=l>u~=a=;#=^'L6$[=D7$G>u~=a=;#=^'Lc=z=?5$l=Fɽ6$[=Dc=z=?f=I:74$ )5$l=Fɽf=I:7i=塽@2$ Fɽ4$ )i=塽@k=$j'L1$}[2$ Fɽk=$j'Ll=[t~=1$mt~=1$}[l=[t~=l=H =1$X=1$mt~=1$X=7$>=N־==L־ =7$>=7$G>u~=N־J=u~=N־==7$G>u~=6$[=DN־;=w6>z>$=~>a> >Ϻ>z>$=~z>=8>OY >~>a>~z>=>W='>B=8>OY >>W=v3>lˀ<<> ],='>B=v3>lˀ<ځ>k> 0,=<> ],=ځ>$ n>"=q>O=k> 0,=$ n>"=Z>xF >G>M>q>O=Z>xF >J>H>Q>L>G>M>J>H>HO>w6> >Ϻ>Q>L> >Ϻ>~>a>:(?A> ?0>~>a>8>OY >`*?E>:(?A>8>OY >'>B=8&?a>`*?E>'>B=<> ],=q ?1_=8&?a><> ],=k> 0,==?k =q ?1_=k> 0,=q>O=Jz?)=3>=?k =q>O=G>M>_ ?>Jz?)=3>G>M>Q>L>, ?*>_ ?>Q>L> >Ϻ> ?0>, ?*> ?0>:(?A>SR?cЁ>2?>:(?A>`*?E>T?B]>SR?cЁ>`*?E>8&?a>̘N?-L>T?B]>8&?a>q ?1_=6#G? &>̘N?-L>q ?1_==?k =7=?C#>6#G? &>=?k =Jz?)=3>]26?jlo>7=?C#>Jz?)=3>_ ?>2?>]26?jlo>_ ?>, ?*>21?M>2?>, ?*> ?0>2?>21?M>2?>SR?cЁ>Hr?#>^[?>SR?cЁ>T?B]>bt?;4>Hr?#>T?B]>̘N?-L>,Do?>bt?;4>̘N?-L>6#G? &>qh?(т>,Do?>6#G? &>7=?C#>`? r>qh?(т>7=?C#>]26?jlo>`\?7>`? r>]26?jlo>2?>.Z?ƿ>`\?7>2?>21?M>[?2>.Z?ƿ>21?M>2?>^[?>[?2>z>$=HO>w6>Oyt=~z>=z>$=Oyt=>W=~z>=Oyt=v3>lˀ<>W=Oyt=ځ>v3>lˀ<Oyt=$ n>"=ځ>Oyt=Z>xF >$ n>"=Oyt=J>H>Z>xF >Oyt=HO>w6>J>H>Oyt=^[?>Hr?#>?{>Hr?#>bt?;4>?{>bt?;4>,Do?>?{>,Do?>qh?(т>?{>qh?(т>`? r>?{>`? r>`\?7>?{>`\?7>.Z?ƿ>?{>.Z?ƿ>[?2>?{>[?2>^[?>?{>`A6Ix4?<<=>ABC@ACFGDDEFHIJHJKLMNLNOPQRPRSTUVTVWXYZXZ[_\]]^_c`aabcgdeefgkhiijklmnlnopqrprstuvtvwxyzxz{|}~|~0AVMtl01Z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYPAn@bpCube2_0GeAQA8M!=dUM!= >M!= >H! >^=d >U==e >>g!=;>>!!;>>!dU<>i!=dUH! >U==dUU==e >U==e >^=d >=ҾgGI>=Ҿ=hGI>^=d >^=⽳dU<=ҾdU<=ҾgGI>^=⽳dU=Ҿ=hGI> =Ҿ=dU<=Ҿ=hGI>=ҾgGI>>!!;>>g!=;>=ҾgGI>=ҾdU<>!dU<>!!;>=ҾdU< =Ҿ=dU<>i!=dU<>!dU< =Ҿ=dU<=Ҿ=hGI>>g!=;>>i!=dU<@A8xv?Tq#=a}?1c>?R'>%x?z>%x?z>?R'>ݴ5?,)?3?aW>U>c= ?O=l{>pY=^*>B"?6?&V>a}?1c>xv?Tq#=a}?1c>6?&V>ݴ5?,)??R'>B"?xv?Tq#=%x?z>"?aW>3?aW>ݴ5?,)?R%???DZ>ݴ5?,)?6?&V>\#?(>R%??6?&V>B"?C? =\#?(>B"?3?aW>?DZ>C? =?DZ>R%??c= ?U>R%??\#?(>O=l{>c= ?\#?(>C? =pY=^*>O=l{>C? =?DZ>U>pY=^*>`A6b3b i&M >R2|'ks,ػr= A     !" "#%&'$%'()*(*+/,--./0120234564670AGVMtl02 PAv@jpCube3_0GeAYA(0>R9!>0>,;9!>>zRz;`>>-Sz_>>O._>>56>CN.;_>56>O._>%>#Sz_>%>Rz;`>6=>5;9!>6=>I9!>6=>I9!>6=>5;9!>0>,;9!>0>R9!>0>,;9!>6=>5;9!>%>Rz;`>>zRz;`>6=>I9!>0>R9!>>-Sz_>%>#Sz_>>-Sz_>>zRz;`>>>O._>>zRz;`>%>Rz;`>56>CN.;_>>%>Rz;`>%>#Sz_>56>O._>56>CN.;_>%>#Sz_>>-Sz_>>O._>56>O._>`A61?c)_PҹB~Ä> A5     !" "#'$%%&'0A7VMtl03 PAV@:pCube6_0GeA)A(m7>>>n7>>=>n7>>=>m7>>>m7>>>n7>>=>>>=>>>>>>>>>=>>>=>>>>>>>>>=>n7>>=>m7>>>n7>>=>>>=>>>=>n7>>=>>>>m7>>>m7>>>>>>`A6,2=W1- ;&<[!>j> A     0A'VMtl04  PA6@pCylinder5AA`2 ߾Ed9>.I޻7> }⡻4=椅Ւ;E=.I޻7>{x6컎1>/Bs= }⡻4={x6컎1>^7;D_=/Bs=5b;4>4N<,}=^7;D_=5b;4> ߾Ed9>椅Ւ;E=4N<,}=.I޻7> ߾Ed9>g=G4>{x6컎1>.I޻7>g=G4>{x6컎1>g=G4>5b;4>g=G4> ߾Ed9>5b;4>g=G4>椅Ւ;E= }⡻4=Z1;ak= }⡻4=/Bs=Z1;ak=/Bs=^7;D_=Z1;ak=^7;D_=4N<,}=Z1;ak=4N<,}=椅Ւ;E=Z1;ak=`A6n;>=s 3< >;c9=i(>';6$$ֱ> A5     !"#$%&'()*+,-./010A7VMtl05 PAV@:pCube7_0GeA)A(l>ZKً>l>RK=ً>l>RK= >l>ZK >l>ZK >l>RK= >Nְ>SK= >Mְ>YK >Mְ>YK >Nְ>SK= >Nְ>SK=ً>Mְ>YKً>Mְ>YKً>Nְ>SK=ً>l>RK=ً>l>ZKً>l>RK=ً>Nְ>SK=ً>Nְ>SK= >l>RK= >Mְ>YKً>l>ZKً>l>ZK >Mְ>YK >`A6 3V=S1Jů<<22P> A     0A'VMtl06  PA6@:pasted__p0A)A(3>j+hѳ>4>`+=hѳ>4>`+=]>3>j+]>3>j+]>4>`+=]>@>a+=]>@>i+]>@>i+]>@>a+=]>@>a+=hѳ>@>i+hѳ>@>i+hѳ>@>a+=hѳ>4>`+=hѳ>3>j+hѳ>4>`+=hѳ>@>a+=hѳ>@>a+=]>4>`+=]>@>i+hѳ>3>j+hѳ>3>j+]>@>i+]>`A6N2e=R|11;<F|>+> A     0A'VMtl07  PA6@ZpCube8_0GeAIA`De=De=De=De=Dj =>Dj =>Dk >Dk >De==De==De==De==Dj =U=Dj =U=Dj U=Dj U=%j ==%j ==%k =%j =Wk =Wj ==Wj ==Wj =Wj =De=De=Wk =Dj U=Wj =Wj ==Dj =U=De=Dj U=Dj U=De=%j =Dj U=Dj =U=%j ==De=%j =%k =De=Dk >%k =%j ==Dj =>De=Dk >Dk >De=Wk =Dk >Dj =>Wj ==De==%j ==%j ==De==Dj =>De==De==Dj =>Wj ==De==De==Wj ==De==Dj =U=Dj =U=De==De=Wj =Dj U=Dj U=%j =De=De=%k =Dk >Dk >Wk =De=Dj =>%j ==De==De==Wj ==Dj =>De==%j ==Dj =U=Dj =U=Wj ==De==`A6+>.:}=Pq= A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl08,  !"#$%&'()*+PA@pCylinder6AAH0;>u=u#>`!c>S=u#>`!c>-=>><>`!c>S=u#>`5>u=u#>_F><>`!c>-=>`5>u=u#>#>t#>jv:>^>_F><>#>t#>`5>yt#>_F>>jv:>^>`5>yt#>`!c>St#>`!c>->_F>>`!c>St#>;>yt#>>>`!c>->;>yt#>^>t#>+>^>>>^>t#>;>u=u#>><>+>^>;>u=u#>^>t#>;>yt#>`!c>St#>`5>yt#>#>t#>`5>u=u#>`!c>S=u#>><>`!c>-=>_F><>jv:>^>_F>>`!c>->>>+>^>@A0">>">>Kv>Kv>>">>">>Kv>>Kv>>">>">>Kv>>Kv>>">?">?Kv>>Kv>?"> ?"> ?Kv>?Kv> ?">@?">@?Kv> ?Kv>@?">`?">`?Kv>@?Kv>`?">?">?Kv>`?Kv>">>">>">>">?"> ?">@?">`?">Kv>>Kv>>Kv>>Kv>?Kv> ?Kv>@?Kv>`?Kv>`A6:=Xȓ=S!`!c>x(f> A     !"# !#' #&'#%&##$%()*(*+(+,(,-(-.(./0AGVMtl09 PAv  @ pTorus1_0GA Acd>:<{>`t>o~<{> ><$>cd>=3=$>T>o~<{>cd>:<{>cd>=3=$>qD><$>[ N>8{>T>o~<{>qD><$>S7>R%I$>T>~{>[ N>8{>S7>R%I$>qD>$>cd>F{>T>~{>qD>$>cd>C3$>`t>~{>cd>F{>cd>C3$> >$>kz>8{>`t>~{> >$>:>R%I$>`t>o~<{>kz>8{>:>R%I$> ><$>cd>=3=$> ><$>>>={>cd>/={>qD><$>cd>=3=$>cd>/={>4>>={>S7>R%I$>qD><$>4>>={>K$!>8{>qD>$>S7>R%I$>K$!>8{>4>>{>cd>C3$>qD>$>4>>{>cd>1{> >$>cd>C3$>cd>1{>>>{>:>R%I$> >$>>>{>>>8{> ><$>:>R%I$>>>8{>>>={>cd>/={>>>={> ><_e>cd>=3=_e>4>>={>cd>/={>cd>=3=_e>qD><_e>K$!>8{>4>>={>qD><_e>S7>6(_e>4>>{>K$!>8{>S7>6(_e>qD>_e>cd>1{>4>>{>qD>_e>cd>C3_e>>>{>cd>1{>cd>C3_e> >_e>>>8{>>>{> >_e>:>6(_e>>>={>>>8{>:>6(_e> ><_e>cd>=3=_e> ><_e>`t>o~<{>cd>:<{>qD><_e>cd>=3=_e>cd>:<{>T>o~<{>S7>6(_e>qD><_e>T>o~<{>[ N>8{>qD>_e>S7>6(_e>[ N>8{>T>~{>cd>C3_e>qD>_e>T>~{>cd>F{> >_e>cd>C3_e>cd>F{>`t>~{>:>6(_e> >_e>`t>~{>kz>8{> ><_e>:>6(_e>kz>8{>`t>o~<{>@A>??@?>@?>?>?>@?>@?>?>?>@?>@???>?>@??@? ?????@? ?@?@?? ?? ?@?@?@?`??@??@?@?`?@???`??`?@??@?>@?@??>?>@?>@?>?>?>@?>@?>?>??@?>@?>??? ?@??@??? ??@?@? ?@? ??@??`?@?@?@?@??`???@?`?@?`????>??>>>>?>?>>>>>?>?>>>>??>?>>?> ?????> ?>@?? ?? ?>@?>`??@??@?>`?>??`??`?>?>>>>>>>>>>>>>>>>>?>>>>? ?>?>? ?@?> ?> ?@?`?>@?>@?`??>`?>`??`A6@3=̺@3=@3̺cd>8{> A@    "#  !"%&'$%'*+(()*-./,-/230012567457:;889:=>?<=?C@AABCDEFDFGKHIIJKLMNLNOSPQQRSTUVTVW[XYYZ[\]^\^_`ab`bcgdeefghijhjkolmmnopqrprswtuuvwxyzxz{|}}~0AVMtl10@  !"#$%&'()*+,-./0123456789:;<=>?PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &f= <:!*??"&M >R2> # # # #< #< #<0pCube2_0Ge@ &!*"&???0$$$DUMMY@pCube02 &~>~Ä>!*?"&?c<Q>)_P< # # # #< #< #<0pCube3_0Ge@ &!*"&???0 $$$DUMMY@pCube03 &>>!*?"&= ;&< # # # #< #< #<0 pCube6_0Ge@  &!*"&???0 $$$DUMMY@pCylinder2 &$>!*R? wHM>"&U/?=ܻF=h4> # # # #< #< #<0 pCylinder5@  &!*"&???0 $$$DUMMY@pCube04 &>>!*?"&V=<<2< # # # #< #< #<0pCube7_0Ge@  &!*"&???0$$$DUMMY@pasted__pC &|>>!*?"&e=;< # # # #< #< #<0pasted__p0@ &!*"&???0$$$DUMMY@pCube05 &Pq=!*"&+>}== # # # #< #< #<0pCube8_0Ge@ &!*"&???0$$$DUMMY@pCylinder3 &`!c>f>!*"&:=ȓ=S= # # # #< #< #<0pCylinder6@ &!*"&???0$$$DUMMY@pTorus01 &cd>{>!*"&@3=@3=@3= # # # #< #< #<0pTorus1_0G@ &!*"&???gl-117-1.3.2/models/tank1.3ds0000644000175000017500000005140010145416156014610 0ustar cedriccedricMMS ==D>=  VMtl01 fff  fff0 @0A0P0R0S00 ?30dPANZER1_.RGBQS VMtl02 fff  fff0 @0A0P0R0S00 ? VMtl03 fff  fff0 @0A0P0R0S00 ? VMtl04 fff  fff0 @0A0P0R0S00 ?30dPANZER1_.RGBQS VMtl05 fff  fff0 @0A0P0R0S00 ? VMtl06 fff  fff0 @0A0P0R0S00 ? VMtl07  0 @0A0P0R0S00 ? VMtl08 fff  fff0 @0A0P0R0S00 ?30dPANZER1_.RGBQS  ?@ pSphere1_0A AHpA?A?)>-R?J:)>Î?: :Bj?F5?i:-R?J:)>A?|)>Ra?l4:Î?: :A?|)>0:#n)>o:YA:Ra?l4:0:#n)>||)>Ldn4K:o:YA:||)>V :)>:k:Ldn4K:V :)>|A?)>aF5?O::k:|A?)>0:j?)>o:??:aF5?O:0:j?)>A?A?)>Bj?F5?i:o:??:Bj?F5?i:Î?: :F5?B:|D?A?>lÎ?: :Ra?l4:A?|+F5?B:Ra?l4:o:YA::m4:M.A?|+o:YA:Ldn4K: y:m4:M.Ldn4K::k:n4R:S y:k:aF5?O:|A?on4R:SaF5?O:o:??::F5?ؚ|A?oo:??:Bj?F5?i:|D?A?>l:F5?ؚ-R?J:)>A?A?)>:0:W8?A?|)>-R?J:)>:0:W8?0:#n)>A?|)>:0:W8?||)>0:#n)>:0:W8?V :)>||)>:0:W8?|A?)>V :)>:0:W8?0:j?)>|A?)>:0:W8?A?A?)>0:j?)>:0:W8?|D?A?>lF5?B:wIJ;F5?B:A?|+wIJ;A?|+:m4:M.wIJ;:m4:M. ywIJ; yn4R:SwIJ;n4R:S|A?owIJ;|A?o:F5?ؚwIJ;:F5?ؚ|D?A?>lwIJ;@Ap????@@?????@?@?????@?@??@?@@?@@? @? @@@@ @?@@?@@@ @@@@?`@?`@@@@@`@?@?@@`@@@?@?@@@@?@?@?@@?@@?@?@?@@?@@?@@@@@@?@@@@ @@ @@@@@@ @@@@@@@@@ @@@@@@`@@`@@@@@@@`@@@@@@@`@@@???@????@????@@???@ @?@?@@@? @?@`@?@@?@@?`@?@@@?@@@@?@@?@@@@?@@?@@@@?@@@@@@@@@@ @@@@@ @@@@@@@@@@@@@`@@@@@`@@@@@@@@`A6(?)c74*cw(c74(cw4o:o:o: A0     !" "#'$%%&'+())*+,-.,./012023745567;899:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0AoVMtl010  !"#$%&'()*+,-./PA@r pCylinder1Aa A*?Ŷ/?Ž?ƶ/? P?!m?>O*?!m?Ž?ƶ/? P|?ƶ/?X|?!m?X?!m?>O|?ƶ/?Xƶ/?nji!m?jji|?!m?Xƶ/?nji%ƶ/?9X%!m?5X!m?jji%ƶ/?9XHƶ/? PH!m? P%!m?5XHƶ/? PkŶ/?Žk!m?ŽH!m? PkŶ/?Ž硿Ŷ/?#x硿!m?"xk!m?Ž硿Ŷ/?#xkŶ/?Ç=k!m? Ç=硿!m?"xkŶ/?Ç=HĶ/?# >H!m?( >k!m? Ç=HĶ/?# >%Ķ/?9>%!m?9>H!m?( >%Ķ/?9>Ķ/? fJ>!m?fJ>%!m?9>Ķ/? fJ>|?Ķ/?9>|?!m?9>!m?fJ>|?Ķ/?9>?Ķ/?# >?!m?( >|?!m?9>?Ķ/?# >*?Ŷ/?Ç=*?!m? Ç=?!m?( >*?Ŷ/?Ç=֦?Ŷ/?#x֦?!m?"x*?!m? Ç=֦?Ŷ/?#x*?Ŷ/?Ž*?!m?Ž֦?!m?"x?ƶ/? P*?Ŷ/?ŽŶ/?#x|?ƶ/?X?ƶ/? PŶ/?#xƶ/?nji|?ƶ/?XŶ/?#x%ƶ/?9Xƶ/?njiŶ/?#xHƶ/? P%ƶ/?9XŶ/?#xkŶ/?ŽHƶ/? PŶ/?#x硿Ŷ/?#xkŶ/?ŽŶ/?#xkŶ/?Ç=硿Ŷ/?#xŶ/?#xHĶ/?# >kŶ/?Ç=Ŷ/?#x%Ķ/?9>HĶ/?# >Ŷ/?#xĶ/? fJ>%Ķ/?9>Ŷ/?#x|?Ķ/?9>Ķ/? fJ>Ŷ/?#x?Ķ/?# >|?Ķ/?9>Ŷ/?#x*?Ŷ/?Ç=?Ķ/?# >Ŷ/?#x֦?Ŷ/?#x*?Ŷ/?Ç=Ŷ/?#x*?Ŷ/?Ž֦?Ŷ/?#xŶ/?#x*?!m?Ž?!m?>O!m?"x?!m?>O|?!m?X!m?"x|?!m?X!m?jji!m?"x!m?jji%!m?5X!m?"x%!m?5XH!m? P!m?"xH!m? Pk!m?Ž!m?"xk!m?Ž硿!m?"x!m?"x硿!m?"xk!m? Ç=!m?"xk!m? Ç=H!m?( >!m?"xH!m?( >%!m?9>!m?"x%!m?9>!m?fJ>!m?"x!m?fJ>|?!m?9>!m?"x|?!m?9>?!m?( >!m?"x?!m?( >*?!m? Ç=!m?"x*?!m? Ç=֦?!m?"x!m?"x֦?!m?"x*?!m?Ž!m?"x`A6@4f>-3\lN?"x A@     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0AVMtl02@  !"#$%&'()*+,-./0123456789:;<=>?PA@r pCylinder3Aa A*?QpŽ?Pp P?"X38O*?#X3Ž?Pp P|?PpX|?"X3X?"X38O|?PpXPphji"X3cji|?"X3XPphji%Pp3X%"X3/X"X3cji%Pp3XHPp PH"X3 P%"X3/XHPp PkQpŽk#X3ŽH"X3 PkQpŽ硿Qp"x硿#X3e"xk#X3Ž硿Qp"xkQpÇ=k#X3Ç=硿#X3e"xkQpÇ=HRp* >H$X3. >k#X3Ç=HRp* >%Rp9>%$X39>H$X3. >%Rp9>RpfJ>$X3fJ>%$X39>RpfJ>|?Rp9>|?$X39>$X3fJ>|?Rp9>?Rp* >?$X3. >|?$X39>?Rp* >*?QpÇ=*?#X3Ç=?$X3. >*?QpÇ=֦?Qp"x֦?#X3e"x*?#X3Ç=֦?Qp"x*?QpŽ*?#X3Ž֦?#X3e"x?Pp P*?QpŽQp"x|?PpX?Pp PQp"xPphji|?PpXQp"x%Pp3XPphjiQp"xHPp P%Pp3XQp"xkQpŽHPp PQp"x硿Qp"xkQpŽQp"xkQpÇ=硿Qp"xQp"xHRp* >kQpÇ=Qp"x%Rp9>HRp* >Qp"xRpfJ>%Rp9>Qp"x|?Rp9>RpfJ>Qp"x?Rp* >|?Rp9>Qp"x*?QpÇ=?Rp* >Qp"x֦?Qp"x*?QpÇ=Qp"x*?QpŽ֦?Qp"xQp"x*?#X3Ž?"X38O#X3e"x?"X38O|?"X3X#X3e"x|?"X3X"X3cji#X3e"x"X3cji%"X3/X#X3e"x%"X3/XH"X3 P#X3e"xH"X3 Pk#X3Ž#X3e"xk#X3Ž硿#X3e"x#X3e"x硿#X3e"xk#X3Ç=#X3e"xk#X3Ç=H$X3. >#X3e"xH$X3. >%$X39>#X3e"x%$X39>$X3fJ>#X3e"x$X3fJ>|?$X39>#X3e"x|?$X39>?$X3. >#X3e"x?$X3. >*?#X3Ç=#X3e"x*?#X3Ç=֦?#X3e"x#X3e"x֦?#X3e"x*?#X3Ž#X3e"x`A6@4f>-3輺 R"x A@     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0AVMtl03@  !"#$%&'()*+,-./0123456789:;<=>?PA@zpCylinder5AiAP ߾'O=V8I>Z45>οxôhC?Tο<%E?Z45> ߾&OV8I>Tοxռ%E?οxôhC? ߾&OV8I>I7Ծz`w>̿F@K?Tοxռ%E?I7Ծz`w>bɾ&O5>'˿rռQ?̿F@K?bɾ&O5>xľ54>ʿ维| T?'˿rռQ?xľ54>bɾ'O=5>'˿L7Ծz=`w>̿?=K?'˿ ߾'O=V8I>Tο<%E?̿?=K?Z45> ߾'O=V8I>K7Ծ4`w> ߾&OV8I>Z45>K7Ծ4`w>I7Ծz`w> ߾&OV8I>K7Ծ4`w>bɾ&O5>I7Ծz`w>K7Ծ4`w>xľ54>bɾ&O5>K7Ծ4`w>bɾ'O=5>xľ54>K7Ծ4`w>L7Ծz=`w>bɾ'O=5>K7Ծ4`w> ߾'O=V8I>L7Ծz=`w>K7Ծ4`w>Tο<%E?οxôhC?̿⿴K?οxôhC?Tοxռ%E?̿⿴K?Tοxռ%E?̿F@K?̿⿴K?̿F@K?'˿rռQ?̿⿴K?'˿rռQ?ʿ维| T?̿⿴K?ʿ维| T?'˿N?>zl[@zl[@>N?e?N?e?zl[@>zl[@e?N?\?N?\?zl[@e?zl[@\?N??N??zl[@\?zl[@?N?@N?@zl[@?zl[@@N?\,@N?\,@zl[@@zl[@\,@N?I@N?I@zl[@\,@zl[@I@N?e@N?e@zl[@I@zl[@>N?N??e?N?>N??\?N?e?N???N?\?N??@N??N??\,@N?@N??I@N?\,@N??e@N?I@N??zl[@>zl[@?@>zl[@e?zl[@?@e?zl[@\?zl[@?@\?zl[@?zl[@?@?zl[@@zl[@?@@zl[@\,@zl[@?@\,@zl[@I@zl[@?@I@zl[@e@zl[@?@`A6i_4vXwXTŎCd&?if3e? A      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO0AOVMtl04  PA@:pCylinder7A)AH0FULV=8K?=R??gͿ=N?TʿVLV=OnZ?=R??TLV=Gm3?{пULV=B?gͿ=N?TLV=Gm3?ÿ.3.?ѿ(=3'=?{пULV=B?ÿ.3.?=LVGm3?{п=LVB?ѿ(=3'=?=LVGm3? R??gͿ N?{п=LVB? R??F >n>>u>m>>u>i.?O> >i.?>u>m>w>>m>w>>i.?>u>i.?w>>m>=u>m>=u>i.?w>>i.?=u>m>S; >n>S; >i.?=u>i.?S; >n>o2n>j.3i.?S; >i.?o2n>S; n>S; i.?j.3i.?S; n>=un>=ui.?S; i.?=un>w>n>w>i.?=ui.?w>n>>un>>ui.?w>i.?>un>O> n>O> i.?>ui.?O> n>I?o2n>I?j.3i.?O> i.?I?o2n>O> >n>O> >i.?I?j.3i.?O> >n>I?o2n>O> n>>un>w>n>=un>S; n>o2n>S; >n>=u>m>w>>m>>u>m>O> >i.?>u>i.?w>>i.?=u>i.?S; >i.?j.3i.?S; i.?=ui.?w>i.?>ui.?O> i.?I?j.3i.?`A6>2>2w>+ 3+ ? A,     !" "#$%&$&'()*(*+,-.,./012023;03:;39:3893783673563345=>?<=?<?@<@A<AB<BC<CD<DE<EF<FG0AgVMtl06,  !"#$%&'()*+PA @ @@pCone1_0GeAA@+)>]%?C !3!?0#]%?1? پ}wC?9 ȾLY?4pn?Wّk?%H":?h<3?M:HD>8?ّ>i?4s>n?9 >LY?پs>sC?>1?+)>]%?>1?P#1#30#?>1?پs>sC?P#1#30#?پs>sC?9 >LY?P#1#30#?9 >LY?4s>n?P#1#30#?4s>n?ّ>i?P#1#30#?ّ>i?M:HD>8?P#1#30#?M:HD>8?h<3?P#1#30#?h<3?%H":?P#1#30#?%H":?Wّk?P#1#30#?Wّk?4pn?P#1#30#?4pn?9 ȾLY?P#1#30#?9 ȾLY? پ}wC?P#1#30#? پ}wC?1?P#1#30#?1?0#]%?P#1#30#?0#]%?C !3!?P#1#30#?C !3!?+)>]%?P#1#30#?`A6f``#=(ֱ'ֽȾ2kv>3u>? A        !"#$%&'()*+,-./0123456789:;<=>?0AKVMtl07 PA~ @@pCube1_0GeAA(hy%?k=y%?k= yk&?h yk&?h yk&?k= yk&?k=!y=k&?h!y=k&?h!y=k&?k=!y=k&?k= y=%?h y=%?h y=%?k= y=%?k=y%?hy%?k=y%?k= y=%?k=!y=k&?k= yk&?h y=%?hy%?h yk&?h!y=k&?@A@@@@@@@@AAA@A@@A@A@A@@A@AA@AA@@@@@`A6>82172=yy1_ѭI3H? A     0A'VMtl08  PA6 MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pSphere01 &!*I@55?"&??? # # # #< #< #<0pSphere1_0@ &!*"&???0$$$DUMMY@pCylinder0 &輼"x]lN!*I@"&@?f> # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder2 &輼"x R?!*I@"&@?f> # # # #< #< #<0pCylinder3@ &!*"&???0 $$$DUMMY@pCylinder4 &if?!*|?0XFt0X>"&+M # # # #< #< #<0 pCylinder5@  &!*"&???0 $$$DUMMY@pCylinder6 & ƿF?!*?"&=== # # # #< #< #<0 pCylinder7@  &!*"&???0 $$$DUMMY@pCylinder8 &w>+ ?!*"&>>> # # # #< #< #<0pCylinder9@  &!*"&???0$$$DUMMY@pCone01 &kv>?!*Lo@"&>/2>> # # # #< #< #<0pCone1_0Ge@ &!*"&???0$$$DUMMY@pCube01 &_ѭI?!*"&>82=y= # # # #< #< #<0pCube1_0Ge@ &!*"&???gl-117-1.3.2/models/tank2.3ds0000644000175000017500000004473410145416156014625 0ustar cedriccedricMMI ==l<>=  VMtl01 fff  fff0 @0A0P0R0S00 ?30dPANZER2_.RGBQS VMtl02  0 @0A0P0R0S00 ? VMtl03 OOO  OOO0 @0A0P0R0S00 ? VMtl04 fff  fff0 @0A0P0R0S00 ?30dPANZER2_.RGBQS VMtl05 OOO  OOO0 @0A0P0R0S00 ? VMtl06 OOO  OOO0 @0A0P0R0S00 ? VMtl07 OOO  OOO0 @0A0P0R0S00 ? ?@ pCylinder1A AHp{ {>;!$.3 ;>{{ ;>{{>>{{>;>;!$.3 ;>{{>>Ų:!>gs>;!>;>{{>;>Ų:!>gs>!{>{>>"{>{>;>;!>;>!{>{>>:!>hs>;!>?1;>"{>{>;>:!>hs>{>{>{>{;>;!>?1;>{>{>Ų:!ds>(:! ;>{>{;>Ų:!ds>{ {>{{ ;>(:! ;>{{ ;>;!$.3 ;>:!^f3l@>{{BT9>;!$.3 ;>{{>;>{{>GT9>:!^f3l@>{{>;>;!>;>2u@>{{>GT9>;!>;>"{>{>;>${>{>OT9>2u@>"{>{>;>;!>?1;>}2v@>${>{>OT9>;!>?1;>{>{;>{>{IT9>}2v@>{>{;>(:! ;>29!m@>{>{IT9>(:! ;>{{ ;>{{BT9>29!m@>{ {>Ų6m.fs>{{>>Ų6m.fs>Ų:!>gs>{{>>Ų6m.fs>!{>{>>Ų:!>gs>Ų6m.fs>:!>hs>!{>{>>Ų6m.fs>{>{>:!>hs>Ų6m.fs>Ų:!ds>{>{>Ų6m.fs>{ {>Ų:!ds>Ų6m.fs>{{BT9>:!^f3l@>23q@>:!^f3l@>{{>GT9>23q@>{{>GT9>2u@>23q@>2u@>${>{>OT9>23q@>${>{>OT9>}2v@>23q@>}2v@>{>{IT9>23q@>{>{IT9>29!m@>23q@>29!m@>{{BT9>23q@>@ApN?>N?>@@>N?e?N?e?@>@e?N?\?N?\?@e?@\?N??N??@\?@?N?@N?@@?@@N?\,@N?\,@@@@\,@N?I@N?I@@\,@@I@N?e@N?e@@I@@@>@>zl[@zl[@>@e?@e?zl[@>zl[@e?@\?@\?zl[@e?zl[@\?@?@?zl[@\?zl[@?@@@@zl[@?zl[@@@\,@@\,@zl[@@zl[@\,@@I@@I@zl[@\,@zl[@I@@e@@e@zl[@I@zl[@>N?N??e?N?>N??\?N?e?N???N?\?N??@N??N??\,@N?@N??I@N?\,@N??e@N?I@N??zl[@>zl[@?@>zl[@e?zl[@?@e?zl[@\?zl[@?@\?zl[@?zl[@?@?zl[@@zl[@?@@zl[@\,@zl[@?@\,@zl[@I@zl[@?@I@zl[@e@zl[@?@`A6N7)XĿe :3 3Ɨ@X?Xij4;2;> A0     "#  !"%&'$%'*+(()*-./,-/230012567457:;889:=>?<=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno0AoVMtl010  !"#$%&'()*+,-./PA@pCylinder3AAPXE>X_&34]>ys?18]>yE>X_&34]>XE<>yE<>ys?18]>XE<>Xk< ;>yX<;>yE<>Xk< ;>XE<>yEyX<;>XE<>X<3>y?'>yEX<3>XE>yE >y?'>XE>XE̼ ;>yY̼;>yE >XE̼ ;>XE>yE>yY̼;>X_&34]>XE>X`3 ;>XE<>X_&34]>X`3 ;>Xk< ;>XE<>X`3 ;>XE<>Xk< ;>X`3 ;>X<3>XE<>X`3 ;>XE>X<3>X`3 ;>XE̼ ;>XE>X`3 ;>XE>XE̼ ;>X`3 ;>yE>ys?18]>yd;>ys?18]>yE<>yd;>yE<>yX<;>yd;>yX<;>yEyd;>yEy?'>yd;>y?'>yE >yd;>yE >yY̼;>yd;>yY̼;>yE>yd;>`A6K_'0񵫲-c2R2aB̽q?n= 4 ;2;> A      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO0AOVMtl02  PA@pCylinder5AAPY3>Yq2>A2>A4>Yq2>Y<4>A<4>A2>Y<4>Y`.=;>A_.=;>A<4>Y`.=;>YAA_.=;>YYk2ԥ>A 2ԥ>AYk2ԥ>Ya>Aa>A 2ԥ>Ya>YV.;>AW.;>Aa>YV.;>Y3>A4>AW.;>Yq2>Y3>Y/&2;>Y<4>Yq2>Y/&2;>Y`.=;>Y<4>Y/&2;>YY`.=;>Y/&2;>Yk2ԥ>YY/&2;>Ya>Yk2ԥ>Y/&2;>YV.;>Ya>Y/&2;>Y3>YV.;>Y/&2;>A4>A2>Av2;>A2>A<4>Av2;>A<4>A_.=;>Av2;>A_.=;>AAv2;>AA 2ԥ>Av2;>A 2ԥ>Aa>Av2;>Aa>AW.;>Av2;>AW.;>A4>Av2;>`A6:'"M" (3r2.+߳='߳ѭ2M;2;> A      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO0AOVMtl03  PA@b pCube1_0GeAQ A`>^Iv =>\IvH>YIv>=>WIv> =߳׾XIv߳׾]Iv>{l>ZIv>{l>ZIv,#YIv =,#[Iv> =,#]Iv>_,#WIvj׾YIv>;>׾[Iv;>{l>^Iv;>{l>WIv>;>׾ =; =߳׾=; {l> =; {l>!=; ={l> => ߳׾!=> ׾ => ={l>=> ={l>=> =>WIv> =>YIv>={l> => {l>WIv>;>{l>=> =׾ => =׾YIv>;>>WIv> ={l>WIv>;>{l>^Iv;>>^Iv ={l>!=; ={l>^Iv;>׾[Iv;>׾ =; =>^Iv ={l>!=; ={l> =; >\IvH{l>ZIv{l> =; ߳׾=; ߳׾XIv>\IvH{l>ZIv{l>ZIv>>YIv>={l> => {l>ZIv>߳׾]Iv>߳׾!=> ,#WIvj߳׾=; ׾ =; =,#YIv =߳׾XIv,#WIvj,#]Iv>_߳׾]Iv>߳׾!=> ,#]Iv>_,#[Iv> =׾ => =,#YIv =׾[Iv;>׾YIv>;>,#[Iv> =>WIv> ={l>=> ={l>WIv>;>{l>^Iv;>{l>!=; =>^Iv =>\IvH{l> =; {l>ZIv{l>ZIv>{l> => >YIv>=߳׾XIv߳׾=; ,#WIvj,#]Iv>_߳׾!=> ߳׾]Iv>,#YIv =׾ =; =׾[Iv;>׾YIv>;>׾ => =,#[Iv> =@A`k@؜S?= h@,>|@y?@t?aE?P?܃??/NP@;?"7@>n?H67?B@F?(?.= ?@ڧ?@1&?+?^9@7?S@@>?A?b>1-@@P.@o?tW@d??? ?P@eZ@ @eZ@ @@t?|@y?tW@d?S@@eZ@ @ ?P@@ڧ?@@t?S@@^9@7?k@؜S?@P.@o?^9@7?1&?+?>?k@؜S?@P.@o?1-@= h@,>"7@>1-@A?b>aE?P?= h@,>"7@>/NP@;?|@y?tW@d?/NP@;?܃????.= ?A?b>>?n?aE?P?.= ?F?(?܃????F?(?H67?B@ ?P@n?1&?+?@ڧ?@H67?B@@t?eZ@ @S@@^9@7?@P.@o?k@؜S?= h@,>1-@"7@>/NP@;?tW@d?|@y?aE?P?A?b>.= ?F?(???܃??n?>?1&?+?@ڧ?@ ?P@H67?B@`A6( =M283V3$?$2v4½ A,     !" "#$%&$&')*+()+,-.,./01202345646789:8:;<=><>?C@AABCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl04,  !"#$%&'()*+PA@ZpCube2_0GeAIA`W>`>@=X>a>@X>>@W>>@=Ac>A>b>>b>b>Tb>@=T>@=T>@Tc>@C>>Ca>>b>`>>b>>>CMG>@=BOG>@b>MG>@b>KG>@=b>>@B>@C>@=b>>@=b>>@=W>>@=X>>@b>>@b>>>b>>@=C>@=C>>W>>@=b>>>b>`>>W>`>@=b>KG>@=b>`>>Ca>>CMG>@=W>`>@=b>KG>@=b>MG>@X>a>@b>b>b>MG>@BOG>@Ac>X>a>@b>b>b>>X>>@b>>@b>>A>B>@Tc>@BOG>@CMG>@=Tb>@=Ac>Tc>@T>@A>B>@T>@T>@=C>@=Tb>@=Ca>>C>>T>@=W>>@=b>>@=b>>>b>`>>b>KG>@=W>`>@=X>a>@b>MG>@b>b>b>>b>>@X>>@Ac>BOG>@Tc>@T>@B>@A>Tb>@=CMG>@=Ca>>C>>C>@=T>@=`A6p('e t~3w<3?(cw4ڠ> A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl05,  !"#$%&'()*+PA@ZpCube3_0GeAIA`TF@=TF@T^@T_@=b>Fb>\C]CFX>F@=X>]@=W>\@W>F@b>^>b>F>AF>A_>b>dJ@=b>dJ@CdJ@BdJ@=C.־@b>.־@b>.־@=B.־@=B.־@=T_@=T^@C.־@A_>B.־@=b>.־@=b>^>T_@=A_>AF>TF@=BdJ@=AF>b>F>b>dJ@=TF@=BdJ@=CdJ@TF@CFCdJ@b>dJ@b>FTF@CFC]T^@C.־@C]b>\b>.־@W>F@b>dJ@b>dJ@=X>F@=b>FW>F@W>\@b>\b>.־@W>\@X>]@=b>.־@=X>F@=b>F>b>^>X>]@=T_@=B.־@=A_>AF>BdJ@=TF@=TF@CdJ@CFC]C.־@T^@b>Fb>dJ@W>F@W>\@b>.־@b>\X>F@=b>dJ@=b>F>b>^>b>.־@=X>]@=`A6p('e> t3~w<3(cw4ڠee2 A,     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@AB@BCDEFDFGHIJKLMNOPQRSTUVWXYZ[\]^_0AgVMtl06,  !"#$%&'()*+PA@:pCylinder7A)AhHBJ>m=Z>> =Z>> =Y>BJ>m=Y>> =Z>u==Z>u==Y>> =Y>u==Z>T= =Z>T= =Y>u==Y>T= =Z>w^sm=Z>w^sm=Y>T= =Y>w^sm=Z>[2Z>Y2Y>w^sm=Y>[2Z>w^smZ>w^smY>Y2Y>w^smZ>T=νZ>T=νY>w^smY>T=νZ>u=Z>u=Y>T=νY>u=Z>>νZ>>νY>u=Y>>νZ>BJ>mZ>BJ>mY>>νY>BJ>mZ>2Z>[2Z>2Z>Y2Y>BJ>mY>2Z>[2Z>BJ>m=Z>BJ>m=Y>2Z>Y2Y>BJ>m=Z>2Z>[2Z>BJ>mZ>>νZ>u=Z>T=νZ>w^smZ>[2Z>w^sm=Z>T= =Z>u==Z>> =Z>BJ>m=Y>> =Y>u==Y>T= =Y>w^sm=Y>Y2Y>w^smY>T=νY>u=Y>>νY>BJ>mY>2Z>Y2Y>`A6=1=1u==2<> A,     !" "#$%&$&'()*(*+,-.,./012023;03:;39:3893783673563345=>?<=?<?@<@A<AB<BC<CD<DE<EF<FG0AgVMtl07,  !"#$%&'()*+PA @ @` MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &;>!*I@55"&X?ȗ@>X? # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder2 & ;>!*I@55"&1=cB=q? # # # #< #< #<0pCylinder3@ &!*"&???0$$$DUMMY@pCylinder4 &M;>!*I@55"&"M>.>+߳= # # # #< #< #<0pCylinder5@ &!*"&???0 $$$DUMMY@pCube01 &½!*I@55"&!=M?>$? # # # #< #< #<0 pCube1_0Ge@  &!*"&???0 $$$DUMMY@pCube02 &ڠ!*I@55"&(e>>? # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCube03 &ڠe>!*I@55?"&(e>>? # # # #< #< #<0pCube3_0Ge@  &!*"&???0$$$DUMMY@pCylinder6 &u==>!*"&=== # # # #< #< #<0pCylinder7@ &!*"&???gl-117-1.3.2/models/tent1.3ds0000644000175000017500000001245310145416156014632 0ustar cedriccedricMM+ ==>=  VMtl01   (((0 @0A0P0R0S00 ?30dTENT1_NO.RGBQS VMtl02   #I0 @0A0P0R0S00 ? VMtl03   '%%0 @0A0P0R0S00 ? ?@ pCube1_0GeA A4YA?_W:A?|'>Y:|!>o:_:A?(`>w:A?ҳ|::ҳ|:o:(`>::i:I}?:i:I}?:i:I}?:i:I}?:i:I}?:i:I}?߶>g=Zׁ>߶>>}>߶>:}>Y:|!>||>|`i :o:_:|`i :|ҳ|::ҳ|:o:_::ҳ|:A?ҳ|:A?_W:o:_::ҳ|:|ҳ|:|;j\> :o:(`>:|;j\> :|A?>Y:A?>o:(`>:Y:A?>A?A?%>A?(`>w:o:(`>:||>|A?>P>҆>I҆>|A?>|;j\> :L>:P>҆>|;j\> :|ҳ|::}:̅L>:|ҳ|:|`i :P::}:̅|`i :||>I҆>P:A?A?%>A?|'>߶>b}>߶>:}>߶>>}>A?|'>A?_W:߶>ЯM:߶>%㨾>߶>b}>A?_W:A?ҳ|:߶><}}:w߶>̽߶>ЯM:A?ҳ|:A?(`>w:߶>=N>:߶> ;=߶><}}:wA?(`>w:A?A?%>߶>>}>߶>>>߶>=N>:߶>g꽝ԁ>߶>:}>߶>b}>@AY???? ?? ? ? ?????`f?@ p?@G?@???????????????????? ?I@I@? ??I@?I@? ?? ?? ?? ?? ?? ?????@n?Cs?n??*??*??~??~??*??*?@~?Cs?~??V??V??Y??Y??V??V?@Y?Cs?Y??-?@-???#????]??@??rj??rj?/n?rj?]?????rj?#?rj?ё?rj??"g?@"g??d>??d>?/n?d>?]?"g??"g??d>?#?d>?ё?d>???l@G?@?@`A6E43o:o:o: Aw+ $!""#$%&'%'()*+)+,0-../01231348566789:;9;<=>?A=??@AFBCEFCCDEGHIGIJGJKPLMOPMMNOQRSQSTQTUVWX0AeVMtl01+  !"#$%&'()*PA@pCube1_1GeAsAdI҆>P>҆>L>::}:̅P:߶>g=Zׁ>߶>>>߶>>}>߶>g=Zׁ>߶>BR:Yt#߶>>>߶>g꽝ԁ>߶>b}>߶>%㨾>߶>g꽝ԁ>߶>%㨾>߶>BR:Yt#߶>%㨾>߶>ЯM:߶>̽߶>BR:Yt#߶>̽߶><}}:w߶> ;=߶>BR:Yt#߶> ;=߶>=N>:߶>>>߶>BR:Yt#`A6E43o:o:o: A   0A)VMtl02  PA:@pCube1_2GeAAP߶>g=Zׁ>߶>:}>߶>BR:Yt#߶>g꽝ԁ>߶>BR:Yt#߶>:}>`A6E43o:o:o: A90AVMtl03PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &!*I@"&??? # # # #< #< #<0pCube1_0Ge@ &!*"&???0pCube1_1Ge@ &!*"&???0pCube1_2Ge@ &!*"&???gl-117-1.3.2/models/tent4.3ds0000644000175000017500000000733010145416156014633 0ustar cedriccedricMM == >=  VMtl01   lll0 @0A0P0R0S00 ?30dTENT4_FR.RGBQS  ?@ pCylinder1Ay A(Xo:>Rнcަ::Rнѯ:]p=o:>Zp=cަ::Rнo:bަRнo:Я_p=ѯ:]p=o:bަRн>::Rн>:]p=o:Я_p=>::Rнo:>Rнo:>Zp=>:]p=o:>Zp=ѯ:]p=.:'=o:R>$=ѯ:]p=o:Я_p=o:-*=.:'=o:Я_p=>:]p=S>:'=o:-*=>:]p=o:>Zp=o:R>$=S>:'=o:R>$=.:'=R:=o:T>=.:'=o:-*=o:R=R:=o:-*=S>:'= T>:=o:R=S>:'=o:R>$=o:T>= T>:=o:T>=R:=mƶ:]5>o:ߺ=\5>R:=o:R=o:kƶ]5>mƶ:]5>o:R= T>:=ߺ=:]5>o:kƶ]5> T>:=o:T>=o:ߺ=\5>ߺ=:]5>cަ::Rнo:>Rнo:::Rнo:bަRнcަ::Rнo:::Rн>::Rнo:bަRнo:::Rнo:>Rн>::Rнo:::Rнo:ߺ=\5>mƶ:]5>o::>>mƶ:]5>o:kƶ]5>o::>>o:kƶ]5>ߺ=:]5>o::>>ߺ=:]5>o:ߺ=\5>o::>>@AXB>!X!?>B>>X!B>!B>>?>B>!+/?!"?>B>>+/?!B>!B>>"?>B>>?>1?B>1??>B>>B>1?1?B>>"?>C?1?B>1?"?>B>>B>1?C?1?B>1?1?Ҍ9?1?B>1?B>Ҍ9?1?C?1? ?Ҍ9?B>Ҍ9?C?1?B>1?B>Ҍ9? ?Ҍ9?B>Ҍ9? ?B> ?Ҍ9?B> ?U46> ?B>Ҍ9? ?Ҍ9?-yD? ?B> ? ?Ҍ9?B>Ҍ9?B> ?-yD? ?X!B>!B>!B>!X!B>!+/?!B>!B>!B>!+/?!B>!B> ?U46> ?B>'?U46> ?B> ?B>'?B> ?-yD? ?B>'?-yD? ?B> ?B>'?`A6@^թ2]թ>ߟ4o:o:o: AM(     !" "#$%&$&'()*(*+,-.,./01202345646789:8:;<=><>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl01(  !"#$%&'PA? MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &!*"&@^թ>@ # # # #< #< #<0pCylinder1@ &!*"&???gl-117-1.3.2/models/transp1.3ds0000644000175000017500000012407410145416156015172 0ustar cedriccedricMM< ==(>=  VMtl01  0 @0A0P0R0S00 ? VMtl02  0 @0A0P0R0S00 ? VMtl03  0 @0A0P0R0S00 ? VMtl04  0 @0A0P0R0S00 ? VMtl05 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl06 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl07 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl08 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl09 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl10 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl11 fff  fff0 @0A0P0R0S00 ? VMtl12  0 @0A0P0R0S00 ? VMtl13   0 @0A0P0R0S00 ? ?@pCylinder1AA(XϽ ݧ?0/<ϽP?9 =)P?;=)Eͦ?x=ϽP?9 =Ͻ(î?2/<)ү?y=)P?;=Ͻ(î?2/<Ͻ0?P)H?P)ү?y=Ͻ0?PϽ(î?W)ү? )H?PϽ(î?WϽP?yd,)P?o\)ү? ϽP?yd,Ͻ ݧ?W)Eͦ? )P?o\Ͻ ݧ?WϽGo?Q)?Q)Eͦ? ϽGo?QϽ ݧ?0/<)Eͦ?x=)?Q)Eͦ?x=)P?;=XjP?~ =Xjѧ?}<)P?;=)ү?y=Xj5ή?P!8즹)P?Q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl01(  !"#$%&'PA@pCylinder2AA(ϽP?9 =Ͻ ݧ?0/<[ĽP?QϽ(î?2/<ϽP?9 =[ĽP?QϽ0?PϽ(î?2/<[ĽP?QϽ(î?WϽ0?P[ĽP?QϽP?yd,Ͻ(î?W[ĽP?QϽ ݧ?WϽP?yd,[ĽP?QϽGo?QϽ ݧ?W[ĽP?QϽ ݧ?0/<ϽGo?Q[ĽP?Q`A6 3og/g/o>P!8즹)P?Q A  0AVMtl02PA&@pCylinder4AA(XϽOh?'/<Ͻjo?5 =)jo?;=)f?s=Ͻjo?5 =Ͻv?(/<)x?t=)jo?;=Ͻv?(/<Ͻy?"Q)|?!Q)x?t=Ͻy?"QϽv?W)x? )|?!QϽv?WϽjo?~d,)jo?o\)x? Ͻjo?~d,ϽOh?W)f? )jo?o\ϽOh?WϽe?*Q) b?+Q)f? Ͻe?*QϽOh?'/<)f?s=) b?+Q)f?s=)jo?;=Xjjo?z =Xj4h?t<)jo?;=)x?t=Xjv?uP!8즹)jo?&Q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl03(  !"#$%&'PA@pCylinder5AA(Ͻjo?5 =ϽOh?'/<[Ľjo?&QϽv?(/<Ͻjo?5 =[Ľjo?&QϽy?"QϽv?(/<[Ľjo?&QϽv?WϽy?"Q[Ľjo?&QϽjo?~d,Ͻv?W[Ľjo?&QϽOh?WϽjo?~d,[Ľjo?&QϽe?*QϽOh?W[Ľjo?&QϽOh?'/<Ͻe?*Q[Ľjo?&Q`A6 3og/g/o>P!8즹)jo?&Q A  0AVMtl04PA&@%pCylinder7A%AhI,Q?>I,˕?3?u3G?LI,˕?I,s?\33(?o`33?uI,s?\3I,˕?I<3?=3(?o`3I,˕?I3"?L3?uI, ?>I,?{ 3?#di3"?LI,?{ I,Q?>3G?L3?#di3G?L3?uLξ?$Lξ ?(^3?u3(?o`3Lξ Ě?JԀLξ?$3(?o`33?=Lξ?(=Lξ Ě?JԀ3?=3G?=Lξ ?җ=Lξ?(=3G?=3?=Lξ?]=Lξ ?җ=3?=3"?=Lξ?җ=Lξ?]=3"?=3?=Lξ}?(=Lξ?җ=3?=3?ؓJ3Lξ _?XԀLξ}?(=3?ؓJ33?uLξ}?$Lξ _?XԀ3?u3"?LLξ?)^Lξ}?$3"?L3?#diLξ?~Lξ?)^3?#di3G?LLξ ?(^Lξ?~Lξ ?(^Lξ?$IP?YI[z?dfLξ?$Lξ Ě?JԀIbҙ?a3IP?YLξ Ě?JԀLξ?(=IP?0%=Ibҙ?a3Lξ?(=Lξ ?җ=I[z?ew=IP?0%=Lξ ?җ=Lξ?]=I?)=I[z?ew=Lξ?]=Lξ?җ=I?ew=I?)=Lξ?җ=Lξ}?(=Ik?/%=I?ew=Lξ}?(=Lξ _?XԀIP?fI3Ik?/%=Lξ _?XԀLξ}?$Ik?ZIP?fI3Lξ}?$Lξ?)^I?efIk?ZLξ?)^Lξ?~I?@I?efLξ?~Lξ ?(^I[z?dfI?@I[z?dfIP?Y1=\?X༖1=?XQIP?YIbҙ?a31=?91=\?X༔Ibҙ?a3IP?0%=1=\?m=1=?9IP?0%=I[z?ew=1=?/h=1=\?m=I[z?ew=I?)=1=?PV=1=?/h=I?)=I?ew=1=Tz?.h=1=?PV=I?ew=Ik?/%=1={?l=1=Tz?.h=Ik?/%=IP?fI31=c?91={?l=IP?fI3Ik?Z1={?!1=c?9Ik?ZI?ef1=Tz?YQ1={?!I?efI?@1=?ʨu1=Tz?YQI?@I[z?df1=?XQ1=?ʨu1=?XQ1=\?Xm>(?r޼m>_?/1=\?X༖1=?9m>-?=9m>(?r޼1=?91=\?m=m>(?-?=91=\?m=1=?/h=m>_?gF=m>(??s\d=m>_?gF=1=?PV=1=Tz?.h=m>Í?gF=m>?s\d=1=Tz?.h=1={?l=m>?9J<m>Í?gF=1={?l=1=c?9m>?9m>?9J<1=c?91={?!m>?t޼m>?91={?!1=Tz?YQm>Í?/m>?t޼1=Tz?YQ1=?ʨum>?XMm>Í?/1=?ʨu1=?XQm>_?/m>?XMm>_?/m>(?r޼]>\f?g9]>k?-m>(?r޼m>-?=9]>MM?o6:]>\f?g9m>-?=9m>(?\f?c<]>MM?o6:m>(?_?gF=]>k?W=]>\f?c<m>_?gF=m>?s\d=]>?-=]>k?W=m>?s\d=m>Í?gF=]>3?W=]>?-=m>Í?gF=m>?9J<]>?a<]>3?W=m>?9J<m>?9]>Պ?qo6:]>?a<m>?9m>?t޼]>?>9]>Պ?qo6:m>?t޼m>Í?/]>3?/]>?>9m>Í?/m>?XM]>?]>3?/m>?XMm>_?/]>k?-]>?I,˕?I,Q?>ZD%?ŁU3I,s?\3I,˕?D%?ŁU3I,˕?II,dW?D%?ŁU3I,?{ I, ?>ZD%?ŁU3I,Q?>I,?{ D%?ŁU3]>k?-]>\f?g9]>?o6:]>\f?g9]>MM?o6:]>?o6:]>MM?o6:]>\f?c<]>?o6:]>\f?c<]>k?W=]>?o6:]>k?W=]>?-=]>?o6:]>?-=]>3?W=]>?o6:]>3?W=]>?a<]>?o6:]>?a<]>Պ?qo6:]>?o6:]>Պ?qo6:]>?>9]>?o6:]>?>9]>3?/]>?o6:]>3?/]>?]>?o6:]>?]>k?-]>?o6:@AH h">~=">~=LY>LY>~=">*>">*>LY>~=LY>*>">>">>LY>*>LY>>">>">>LY>>LY>>">aU>">aU>LY>>LY>aU>">?">?LY>aU>LY>?">PU?">PU?LY>?LY>PU?">*?">*?LY>PU?LY>*?">@?">@?LY>*?LY>@?">PUU?">PUU?LY>@?LY>PUU?">j?">j?LY>PUU?LY>j?">?">?LY>j?LY>LY>~=LY>~=χ>χ>~=LY>*>LY>*>χ>~=χ>*>LY>>LY>>χ>*>χ>>LY>>LY>>χ>>χ>>LY>aU>LY>aU>χ>>χ>aU>LY>?LY>?χ>aU>χ>?LY>PU?LY>PU?χ>?χ>PU?LY>*?LY>*?χ>PU?χ>*?LY>@?LY>@?χ>*?χ>@?LY>PUU?LY>PUU?χ>@?χ>PUU?LY>j?LY>j?χ>PUU?χ>j?LY>?LY>?χ>j?χ>χ>~=χ>~=>>~=χ>*>χ>*>>~=>*>χ>>χ>>>*>>>χ>>χ>>>>>>χ>aU>χ>aU>>>>aU>χ>?χ>?>aU>>?χ>PU?χ>PU?>?>PU?χ>*?χ>*?>PU?>*?χ>@?χ>@?>*?>@?χ>PUU?χ>PUU?>@?>PUU?χ>j?χ>j?>PUU?>j?χ>?χ>?>j?>>~=>~=)#>)#>~=>*>>*>)#>~=)#>*>>>>>)#>*>)#>>>>>>)#>>)#>>>aU>>aU>)#>>)#>aU>>?>?)#>aU>)#>?>PU?>PU?)#>?)#>PU?>*?>*?)#>PU?)#>*?>@?>@?)#>*?)#>@?>PUU?>PUU?)#>@?)#>PUU?>j?>j?)#>PUU?)#>j?>?>?)#>j?)#>)#>~=)#>~=L>L>~=)#>*>)#>*>L>~=L>*>)#>>)#>>L>*>L>>)#>>)#>>L>>L>>)#>aU>)#>aU>L>>L>aU>)#>?)#>?L>aU>L>?)#>PU?)#>PU?L>?L>PU?)#>*?)#>*?L>PU?L>*?)#>@?)#>@?L>*?L>@?)#>PUU?)#>PUU?L>@?L>PUU?)#>j?)#>j?L>PUU?L>j?)#>?)#>?L>j?L>L>~=L>~=Kv>Kv>~=L>*>L>*>Kv>~=Kv>*>L>>L>>Kv>*>Kv>>L>>L>>Kv>>Kv>>L>aU>L>aU>Kv>>Kv>aU>L>?L>?Kv>aU>Kv>?L>PU?L>PU?Kv>?Kv>PU?L>*?L>*?Kv>PU?Kv>*?L>@?L>@?Kv>*?Kv>@?L>PUU?L>PUU?Kv>@?Kv>PUU?L>j?L>j?Kv>PUU?Kv>j?L>?L>?Kv>j?Kv>~=">">?*>">~=">?>">*>">?>">>">?aU>">>">??">aU>">?PU?">?">?*?">PU?">?@?">*?">?PUU?">@?">?j?">PUU?">??">j?">?Kv>~=Kv>?"?~=Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>aU>Kv>?"?aU>Kv>?Kv>?"??Kv>PU?Kv>?"?PU?Kv>*?Kv>?"?*?Kv>@?Kv>?"?@?Kv>PUU?Kv>?"?PUU?Kv>j?Kv>?"?j?Kv>?Kv>?"?`A6I,?r"="_lf?ŁU3 AM     !"# !#&'$$%&*+(()*-./,-/123013674456:;889:=>?<=?BC@@ABEFGDEGJKHHIJMNOLMOQRSPQSTUVTVWZ[XXYZ]^_\]_bc``abefgdegkhiijkolmmnospqqrstuvtvwxyzxz{|}~|~         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg0A_VMtl05  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinder9AAHF^?"7.=.?Յ<==?Յ<=@^?"7.=.?Յ<=F^?J=@^?J==?Յ<=F^?J=#Sgխ?FP=r$gխ?FP=@^?J=#Sgխ?FP= p”?zS= Np”?zS=r$gխ?FP= p”?zS= 8?Ѕ<= N8?Ѕ<= Np”?zS= 8?Ѕ<= p”? %= Np”? %= N8?Ѕ<= p”? %=#Sgխ?^N(=r$gխ?^N(= Np”? %=#Sgխ?^N(=F^?"7.=@^?"7.=r$gխ?^N(=@^?"7.==?Յ<=F?Յ<=t^?"7.==?Յ<=@^?J=t^?J=F?Յ<=@^?J=r$gխ?FP=Ogխ?FP=t^?J=r$gխ?FP= Np”?zS=.p”?zS=Ogխ?FP= Np”?zS= N8?Ѕ<=.8?Ѕ<=.p”?zS= N8?Ѕ<= Np”? %=.p”? %=.8?Ѕ<= Np”? %=r$gխ?^N(=Ogխ?^N(=.p”? %=r$gխ?^N(=@^?"7.=t^?"7.=Ogխ?^N(=t^?"7.=F?Յ<=?Յ<=Qq^?"7.=F?Յ<=t^?J=Qq^?J=?Յ<=t^?J=Ogխ?FP=Yogխ?FP=Qq^?J=Ogխ?FP=.p”?zS=xp”?zS=Yogխ?FP=.p”?zS=.8?Ѕ<=x8?Ѕ<=xp”?zS=.8?Ѕ<=.p”? %=xp”? %=x8?Ѕ<=.p”? %=Ogխ?^N(=Yogխ?^N(=xp”? %=Ogխ?^N(=t^?"7.=Qq^?"7.=Yogխ?^N(=Qq^?"7.=?Յ<=3?Յ<="r^?"7.=?Յ<=Qq^?J="r^?J=3?Յ<=Qq^?J=Yogխ?FP=Ѹgխ?FP="r^?J=Yogխ?FP=xp”?zS=Pp”?zS=Ѹgխ?FP=xp”?zS=x8?Ѕ<=P8?Ѕ<=Pp”?zS=x8?Ѕ<=xp”? %=Pp”? %=P8?Ѕ<=xp”? %=Yogխ?^N(=Ѹgխ?^N(=Pp”? %=Yogխ?^N(=Qq^?"7.="r^?"7.=Ѹgխ?^N(=.?Յ<=F^?"7.=#Sgխ?҅<=F^?J=.?Յ<=#Sgխ?҅<=#Sgխ?FP=F^?J=#Sgխ?҅<= p”?zS=#Sgխ?FP=#Sgխ?҅<= 8?Ѕ<= p”?zS=#Sgխ?҅<= p”? %= 8?Ѕ<=#Sgխ?҅<=#Sgխ?^N(= p”? %=#Sgխ?҅<=F^?"7.=#Sgխ?^N(=#Sgխ?҅<="r^?"7.=3?Յ<=Ѹgխ?҅<=3?Յ<="r^?J=Ѹgխ?҅<="r^?J=Ѹgխ?FP=Ѹgխ?҅<=Ѹgխ?FP=Pp”?zS=Ѹgխ?҅<=Pp”?zS=P8?Ѕ<=Ѹgխ?҅<=P8?Ѕ<=Pp”? %=Ѹgխ?҅<=Pp”? %=Ѹgխ?^N(=Ѹgխ?҅<=Ѹgխ?^N(="r^?"7.=Ѹgխ?҅<=@A">>">>)vt>)vt>>">>">>)vt>>)vt>>">>">>)vt>>)vt>>">?">?)vt>>)vt>?"> ?"> ?)vt>?)vt> ?">@?">@?)vt> ?)vt>@?">`?">`?)vt>@?)vt>`?">?">?)vt>`?)vt>)vt>>)vt>>>>>)vt>>)vt>>>>>>)vt>>)vt>>>>>>)vt>?)vt>?>>>?)vt> ?)vt> ?>?> ?)vt>@?)vt>@?> ?>@?)vt>`?)vt>`?>@?>`?)vt>?)vt>?>`?>>>>>ط>ط>>>>>>ط>>ط>>>>>>ط>>ط>>>?>?ط>>ط>?> ?> ?ط>?ط> ?>@?>@?ط> ?ط>@?>`?>`?ط>@?ط>`?>?>?ط>`?ط>ط>>ط>>Kv>Kv>>ط>>ط>>Kv>>Kv>>ط>>ط>>Kv>>Kv>>ط>?ط>?Kv>>Kv>?ط> ?ط> ?Kv>?Kv> ?ط>@?ط>@?Kv> ?Kv>@?ط>`?ط>`?Kv>@?Kv>`?ط>?ط>?Kv>`?Kv>>">">?>">>">?>">>">??">>">? ?">?">?@?"> ?">?`?">@?">??">`?">?Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>?Kv>?"??Kv> ?Kv>?"? ?Kv>@?Kv>?"?@?Kv>`?Kv>?"?`?Kv>?Kv>?"?`A6=jw<#׍ P_gխ?҅<= A}P    # !!"#$%&$&'()*(*+,-.,./012023456467;899:;?<==>?BC@@ABEFGDEGHIJHJKLMNLNOPQRPRSTUVTVW[XYYZ[_\]]^_bc``abefgdeghijhjklmnlnopqrprstuvtvw{xyyz{|}}~0AVMtl06P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@pCylinde11AAHvٽU6?7.=`0?̅<=I`0?Ʌ<= U6?7.=`0?̅<=wٽU6?J= U6?|J=I`0?Ʌ<=wٽU6?J=JUlh?IP= ɽlh?DP= U6?|J=JUlh?IP= ;A?zS=XkA?zS= ɽlh?DP= ;A?zS= ;?݅<=Wk?ׅ<=XkA?zS= ;?݅<= ;A?%=VkA?%=Wk?ׅ<= ;A?%=IUlh?bN(= ɽlh?]N(=VkA?%=IUlh?bN(=vٽU6?7.= U6?7.= ɽlh?]N(= U6?7.=I`0?Ʌ<=*`0?Dž<=,U6?7.=I`0?Ʌ<= U6?|J=,U6?yJ=*`0?Dž<= U6?|J= ɽlh?DP=Flh??P=,U6?yJ= ɽlh?DP=XkA?zS= AA?zS=Flh??P=XkA?zS=Wk?ׅ<= A?Ѕ<= AA?zS=Wk?ׅ<=VkA?%= AA? %= A?Ѕ<=VkA?%= ɽlh?]N(=Flh?XN(= AA? %= ɽlh?]N(= U6?7.=,U6?7.=Flh?XN(=,U6?7.=*`0?Dž<=WC`0?ą<=lLU6?7.=*`0?Dž<=,U6?yJ=lLU6?vJ=WC`0?ą<=,U6?yJ=Flh??P=Blh?:P=lLU6?vJ=Flh??P= AA?zS=X9A?zS=Blh?:P= AA?zS= A?Ѕ<=X9?ʅ<=X9A?zS= A?Ѕ<= AA? %=X9A?%=X9?ʅ<= AA? %=Flh?XN(=Blh?SN(=X9A?%=Flh?XN(=,U6?7.=lLU6?7.=Blh?SN(=lLU6?7.=WC`0?ą<=[`0?…<=YlU6?7.=WC`0?ą<=lLU6?vJ=YlU6?sJ=[`0?…<=lLU6?vJ=Blh?:P=qlh?5P=YlU6?sJ=Blh?:P=X9A?zS=YxA?zS=qlh?5P=X9A?zS=X9?ʅ<=Yx?ą<=YxA?zS=X9?ʅ<=X9A?%=YxA?%=Yx?ą<=X9A?%=Blh?SN(=qlh?NN(=YxA?%=Blh?SN(=lLU6?7.=YlU6?7.=qlh?NN(=`0?̅<=vٽU6?7.=JUlh?Յ<=wٽU6?J=`0?̅<=JUlh?Յ<=JUlh?IP=wٽU6?J=JUlh?Յ<= ;A?zS=JUlh?IP=JUlh?Յ<= ;?݅<= ;A?zS=JUlh?Յ<= ;A?%= ;?݅<=JUlh?Յ<=IUlh?bN(= ;A?%=JUlh?Յ<=vٽU6?7.=IUlh?bN(=JUlh?Յ<=YlU6?7.=[`0?…<=qlh?…<=[`0?…<=YlU6?sJ=qlh?…<=YlU6?sJ=qlh?5P=qlh?…<=qlh?5P=YxA?zS=qlh?…<=YxA?zS=Yx?ą<=qlh?…<=Yx?ą<=YxA?%=qlh?…<=YxA?%=qlh?NN(=qlh?…<=qlh?NN(=YlU6?7.=qlh?…<=@A">>">>)vt>)vt>>">>">>)vt>>)vt>>">>">>)vt>>)vt>>">?">?)vt>>)vt>?"> ?"> ?)vt>?)vt> ?">@?">@?)vt> ?)vt>@?">`?">`?)vt>@?)vt>`?">?">?)vt>`?)vt>)vt>>)vt>>>>>)vt>>)vt>>>>>>)vt>>)vt>>>>>>)vt>?)vt>?>>>?)vt> ?)vt> ?>?> ?)vt>@?)vt>@?> ?>@?)vt>`?)vt>`?>@?>`?)vt>?)vt>?>`?>>>>>ط>ط>>>>>>ط>>ط>>>>>>ط>>ط>>>?>?ط>>ط>?> ?> ?ط>?ط> ?>@?>@?ط> ?ط>@?>`?>`?ط>@?ط>`?>?>?ط>`?ط>ط>>ط>>Kv>Kv>>ط>>ط>>Kv>>Kv>>ط>>ط>>Kv>>Kv>>ط>?ط>?Kv>>Kv>?ط> ?ط> ?Kv>?Kv> ?ط>@?ط>@?Kv> ?Kv>@?ط>`?ط>`?Kv>@?Kv>`?ط>?ط>?Kv>`?Kv>>">">?>">>">?>">>">??">>">? ?">?">?@?"> ?">?`?">@?">??">`?">?Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>?Kv>?"??Kv> ?Kv>?"? ?Kv>@?Kv>?"?@?Kv>`?Kv>?"?`?Kv>?Kv>?"?`A6w=Wt3ATjw<>O2Ύlh?ͅ<= A}P    # !!"#$%&$&'()*(*+,-.,./012023456467;899:;?<==>?BC@@ABEFGDEGHIJHJKLMNLNOPQRPRSTUVTVW[XYYZ[_\]]^_bc``abefgdeghijhjklmnlnopqrprstuvtvw{xyyz{|}}~0AVMtl07P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@ pCylinde13AAT>˭?>˭?N'b>˭?N'b>˭?>˭?N'mr>w?>w?b>˭?N'mr>w?P>y?o:>y?o>w?P>y?oP>y?Ӽ:>y?Ӽ:>y?oP>y?Ӽmr>w?zϼ>w?zϼ:>y?Ӽmr>w?zϼ>˭?b>˭?>w?zϼb>˭?b>˭?N'ڳ>˭?N'ڳ>˭?b>˭?N'>w?Cȳ>w?ڳ>˭?N'>w?:>y?o>y?oCȳ>w?:>y?o:>y?Ӽ>y?Ӽ>y?o:>y?Ӽ>w?zϼCȳ>w?zϼ>y?Ӽ>w?zϼb>˭?ڳ>˭?Cȳ>w?zϼ>˭?N'>˭?mr>w?mr>w?>˭?N'mr>w?P>y?omr>w?mr>w?P>y?ӼP>y?omr>w?mr>w?zϼP>y?Ӽmr>w?>˭?mr>w?zϼmr>w?ڳ>˭?ڳ>˭?N'Cȳ>w?ڳ>˭?N'Cȳ>w?Cȳ>w?Cȳ>w?>y?oCȳ>w?>y?o>y?ӼCȳ>w?>y?ӼCȳ>w?zϼCȳ>w?Cȳ>w?zϼڳ>˭?Cȳ>w?@AT">*>">*>>>*>">>">>>*>>>">?">?>>>?">*?">*?>?>*?">PUU?">PUU?>*?>PUU?">?">?>PUU?>>*>>*>Kv>Kv>*>>>>>Kv>*>Kv>>>?>?Kv>>Kv>?>*?>*?Kv>?Kv>*?>PUU?>PUU?Kv>*?Kv>PUU?>?>?Kv>PUU?Kv>*>">">?>">*>">??">>">?*?">?">?PUU?">*?">??">PUU?">?Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>?Kv>?"??Kv>*?Kv>?"?*?Kv>PUU?Kv>?"?PUU?Kv>?Kv>?"?`A64f=x"<H->w? A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl08$  !"#PA@ pCylinde15AAT~>Uj?~>Uj?['(Y>Uj?b')Y>Uj?~>Uj?[' $>[?Ƕo>[?*(Y>Uj?b' $>[?ޥ>~?o >~?oǶo>[?*ޥ>~?oޥ>~?Ӽ >~? Ӽ >~?oޥ>~?Ӽ $>[?zϼǶo>[?zϼ >~? Ӽ $>[?zϼ~>Uj?)Y>Uj?Ƕo>[?zϼ)Y>Uj?(Y>Uj?b'T5>Uj?j'T5>Uj?(Y>Uj?b'Ƕo>[?*z%5>[?6T5>Uj?j'Ƕo>[?* >~?o8>~?oz%5>[?6 >~?o >~? Ӽ8>~?Ӽ8>~?o >~? ӼǶo>[?zϼ{%5>[?zϼ8>~?ӼǶo>[?zϼ)Y>Uj?T5>Uj?{%5>[?zϼ~>Uj?['~>Uj? $>[? $>[?~>Uj?[' $>[?ޥ>~?o $>[? $>[?ޥ>~?Ӽޥ>~?o $>[? $>[?zϼޥ>~?Ӽ $>[?~>Uj? $>[?zϼ $>[?T5>Uj?T5>Uj?j'z%5>[?T5>Uj?j'z%5>[?6z%5>[?z%5>[?68>~?oz%5>[?8>~?o8>~?Ӽz%5>[?8>~?Ӽ{%5>[?zϼz%5>[?{%5>[?zϼT5>Uj?z%5>[?@AT">*>">*>>>*>">>">>>*>>>">?">?>>>?">*?">*?>?>*?">PUU?">PUU?>*?>PUU?">?">?>PUU?>>*>>*>Kv>Kv>*>>>>>Kv>*>Kv>>>?>?Kv>>Kv>?>*?>*?Kv>?Kv>*?>PUU?>PUU?Kv>*?Kv>PUU?>?>?Kv>PUU?Kv>*>">">?>">*>">??">>">?*?">?">?PUU?">*?">??">PUU?">?Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>?Kv>?"??Kv>*?Kv>?"?*?Kv>PUU?Kv>?"?PUU?Kv>?Kv>?"?`A64f=զ3Z̄x"<F=>1->[? A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl09$  !"#PA@ pCylinde17AAT(>>?)>(>z ?)>v>z ?)>v>>?)>(>z ?)>\&]>aƐ?r=7>aƐ?r=v>z ?)>\&]>aƐ?r=1>k?/[=>k?/[=7>aƐ?r=1>k?/[=1>=?.[=>=?.[=>k?/[=1>=?.[=\&]>W?r=7>W?r=>=?.[=\&]>W?r=(>>?)>v>>?)>7>W?r=v>>?)>v>z ?)>>z ?)>>>?)>v>z ?)>7>aƐ?r=A>aƐ?r=>z ?)>7>aƐ?r=>k?/[=ND>k?/[=A>aƐ?r=>k?/[=>=?.[=ND>=?.[=ND>k?/[=>=?.[=7>W?r=A>W?r=ND>=?.[=7>W?r=v>>?)>>>?)>A>W?r=(>z ?)>(>>?)>\&]>\T?r=\&]>aƐ?r=(>z ?)>\&]>\T?r=1>k?/[=\&]>aƐ?r=\&]>\T?r=1>=?.[=1>k?/[=\&]>\T?r=\&]>W?r=1>=?.[=\&]>\T?r=(>>?)>\&]>W?r=\&]>\T?r=>>?)>>z ?)>A>\T?r=>z ?)>A>aƐ?r=A>\T?r=A>aƐ?r=ND>k?/[=A>\T?r=ND>k?/[=ND>=?.[=A>\T?r=ND>=?.[=A>W?r=A>\T?r=A>W?r=>>?)>A>\T?r=@AT">*>">*>>>*>">>">>>*>>>">?">?>>>?">*?">*?>?>*?">PUU?">PUU?>*?>PUU?">?">?>PUU?>>*>>*>Kv>Kv>*>>>>>Kv>*>Kv>>>?>?Kv>>Kv>?>*?>*?Kv>?Kv>*?>PUU?>PUU?Kv>*?Kv>PUU?>?>?Kv>PUU?Kv>*>">">?>">*>">??">>">?*?">?">?PUU?">*?">??">PUU?">?Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>?Kv>?"??Kv>*?Kv>?"?*?Kv>PUU?Kv>?"?PUU?Kv>?Kv>?"?`A6=31>\T?= A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl10$  !"#PA@ZpCylinde19AIAT>K?F\>K?=K\>?*>K?F> ?`:\>&?`:\>K?=K> ?`:>K?<\>K?<\>&?`:>K?<>?<<\>K?<>@l?=\>@l?ׯ<\>?<<>@l?=>㛎?D=\>/?;<\>@l?ׯ<>㛎?D=>?<\>?<\>/?;<>?<>ˋ?w`:\>Z?{`:\>?<>ˋ?w`:>?F\>?=K\>Z?{`:>?F>㛎?y\>/?+\>?=K>㛎?y>@l? \>@l?cؼ\>/?+>@l? >?*\>@l?cؼ>K?F>@l?`:> ?`:>K?F>@l?`:>K?<> ?`:>@l?`:>K?<>@l?`:>@l?=>@l?`:>㛎?D=>@l?=>@l?`:>?<>㛎?D=>@l?`:>ˋ?w`:>?<>@l?`:>?F>ˋ?w`:>@l?`:>㛎?y>?F>@l?`:>@l? >㛎?y>@l?`:>@l? >@l?`:`A6A==! >@l?`: A$     # !!"#$%&$&'()*(*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl11$  !"#PA@pCylinde20AA$\>?*\>K?=K\>@l?`:\>K?=K\>&?`:\>@l?`:\>&?`:\>K?<\>@l?`:\>K?<\>?<<\>@l?`:\>?<<\>@l?ׯ<\>@l?`:\>@l?ׯ<\>/?;<\>@l?`:\>/?;<\>?<\>@l?`:\>?<\>Z?{`:\>@l?`:\>Z?{`:\>?=K\>@l?`:\>?=K\>/?+\>@l?`:\>/?+\>@l?cؼ\>@l?`:\>@l?cؼ\>?*\>@l?`:`A6A==! >@l?`: A    !"#0A'VMtl12  PA6@" pSphere1_0A Axe̾p?Z=?<=Hr꾶D?v#=VϾF?@AB@BCGDEEFGHIJHJKOLMMNOPQRPRSWTUUVWXYZXZ[_\]]^_`abcdefghijklmnopqrstuvw0AVMtl138  !"#$%&'()*+,-./01234567PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &)~QP!*??"&o>o>P= # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0$$$DUMMY@pCylinder3 &)~Qjo!*??"&o>o>P= # # # #< #< #<0pCylinder4@ &!*"&???0pCylinder5@ &!*"&???0 $$$DUMMY@pCylinder6 &!*"&I,?"="= # # # #< #< #<0 pCylinder7@  &!*"&???0 $$$DUMMY@pCylinder8 &_…<=gխ!*"&=<#׍> # # # #< #< #<0 pCylinder9@  &!*"&???0 $$$DUMMY@pCylinde10 &Ύ…<=lh!*I@?"&w # # # #< #< #<0pCylinde11@  &!*"&???0$$$DUMMY@pCylinde12 &->w!*"&4f=x"<= # # # #< #< #<0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &->[!*I@?"&4fx"F # # # #< #< #<0pCylinde15@ &!*"&???0$$$DUMMY@pCylinde16 &>=\T!*?"&=<= # # # #< #< #<0pCylinde17@ &!*"&???0$$$DUMMY@pCylinde18 &>^:@l!*"&A==!= # # # #< #< #<0pCylinde19@ &!*"&???0pCylinde20@ &!*"&???0$$$DUMMY@pSphere01 &5=ܽ!*Ė="&Dn=@<]O< # # # #< #< #<0pSphere1_0@ &!*"&???gl-117-1.3.2/models/transp2.3ds0000755000175000017500000012407410145416156015176 0ustar cedriccedricMM< ==(>=  VMtl01  0 @0A0P0R0S00 ? VMtl02  0 @0A0P0R0S00 ? VMtl03  0 @0A0P0R0S00 ? VMtl04  0 @0A0P0R0S00 ? VMtl05 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl06 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl07 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl08 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl09 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl10 lll  lll0 @0A0P0R0S00 ?30dTRANSP2_.RGBQS VMtl11 fff  fff0 @0A0P0R0S00 ? VMtl12  0 @0A0P0R0S00 ? VMtl13   0 @0A0P0R0S00 ? ?@pCylinder1AA(XϽ ݧ?0/<ϽP?9 =)P?;=)Eͦ?x=ϽP?9 =Ͻ(î?2/<)ү?y=)P?;=Ͻ(î?2/<Ͻ0?P)H?P)ү?y=Ͻ0?PϽ(î?W)ү? )H?PϽ(î?WϽP?yd,)P?o\)ү? ϽP?yd,Ͻ ݧ?W)Eͦ? )P?o\Ͻ ݧ?WϽGo?Q)?Q)Eͦ? ϽGo?QϽ ݧ?0/<)Eͦ?x=)?Q)Eͦ?x=)P?;=XjP?~ =Xjѧ?}<)P?;=)ү?y=Xj5ή?P!8즹)P?Q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl01(  !"#$%&'PA@pCylinder2AA(ϽP?9 =Ͻ ݧ?0/<[ĽP?QϽ(î?2/<ϽP?9 =[ĽP?QϽ0?PϽ(î?2/<[ĽP?QϽ(î?WϽ0?P[ĽP?QϽP?yd,Ͻ(î?W[ĽP?QϽ ݧ?WϽP?yd,[ĽP?QϽGo?QϽ ݧ?W[ĽP?QϽ ݧ?0/<ϽGo?Q[ĽP?Q`A6 3og/g/o>P!8즹)P?Q A  0AVMtl02PA&@pCylinder4AA(XϽOh?'/<Ͻjo?5 =)jo?;=)f?s=Ͻjo?5 =Ͻv?(/<)x?t=)jo?;=Ͻv?(/<Ͻy?"Q)|?!Q)x?t=Ͻy?"QϽv?W)x? )|?!QϽv?WϽjo?~d,)jo?o\)x? Ͻjo?~d,ϽOh?W)f? )jo?o\ϽOh?WϽe?*Q) b?+Q)f? Ͻe?*QϽOh?'/<)f?s=) b?+Q)f?s=)jo?;=Xjjo?z =Xj4h?t<)jo?;=)x?t=Xjv?uP!8즹)jo?&Q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl03(  !"#$%&'PA@pCylinder5AA(Ͻjo?5 =ϽOh?'/<[Ľjo?&QϽv?(/<Ͻjo?5 =[Ľjo?&QϽy?"QϽv?(/<[Ľjo?&QϽv?WϽy?"Q[Ľjo?&QϽjo?~d,Ͻv?W[Ľjo?&QϽOh?WϽjo?~d,[Ľjo?&QϽe?*QϽOh?W[Ľjo?&QϽOh?'/<Ͻe?*Q[Ľjo?&Q`A6 3og/g/o>P!8즹)jo?&Q A  0AVMtl04PA&@%pCylinder7A%AhI,Q?>I,˕?3?u3G?LI,˕?I,s?\33(?o`33?uI,s?\3I,˕?I<3?=3(?o`3I,˕?I3"?L3?uI, ?>I,?{ 3?#di3"?LI,?{ I,Q?>3G?L3?#di3G?L3?uLξ?$Lξ ?(^3?u3(?o`3Lξ Ě?JԀLξ?$3(?o`33?=Lξ?(=Lξ Ě?JԀ3?=3G?=Lξ ?җ=Lξ?(=3G?=3?=Lξ?]=Lξ ?җ=3?=3"?=Lξ?җ=Lξ?]=3"?=3?=Lξ}?(=Lξ?җ=3?=3?ؓJ3Lξ _?XԀLξ}?(=3?ؓJ33?uLξ}?$Lξ _?XԀ3?u3"?LLξ?)^Lξ}?$3"?L3?#diLξ?~Lξ?)^3?#di3G?LLξ ?(^Lξ?~Lξ ?(^Lξ?$IP?YI[z?dfLξ?$Lξ Ě?JԀIbҙ?a3IP?YLξ Ě?JԀLξ?(=IP?0%=Ibҙ?a3Lξ?(=Lξ ?җ=I[z?ew=IP?0%=Lξ ?җ=Lξ?]=I?)=I[z?ew=Lξ?]=Lξ?җ=I?ew=I?)=Lξ?җ=Lξ}?(=Ik?/%=I?ew=Lξ}?(=Lξ _?XԀIP?fI3Ik?/%=Lξ _?XԀLξ}?$Ik?ZIP?fI3Lξ}?$Lξ?)^I?efIk?ZLξ?)^Lξ?~I?@I?efLξ?~Lξ ?(^I[z?dfI?@I[z?dfIP?Y1=\?X༖1=?XQIP?YIbҙ?a31=?91=\?X༔Ibҙ?a3IP?0%=1=\?m=1=?9IP?0%=I[z?ew=1=?/h=1=\?m=I[z?ew=I?)=1=?PV=1=?/h=I?)=I?ew=1=Tz?.h=1=?PV=I?ew=Ik?/%=1={?l=1=Tz?.h=Ik?/%=IP?fI31=c?91={?l=IP?fI3Ik?Z1={?!1=c?9Ik?ZI?ef1=Tz?YQ1={?!I?efI?@1=?ʨu1=Tz?YQI?@I[z?df1=?XQ1=?ʨu1=?XQ1=\?Xm>(?r޼m>_?/1=\?X༖1=?9m>-?=9m>(?r޼1=?91=\?m=m>(?-?=91=\?m=1=?/h=m>_?gF=m>(??s\d=m>_?gF=1=?PV=1=Tz?.h=m>Í?gF=m>?s\d=1=Tz?.h=1={?l=m>?9J<m>Í?gF=1={?l=1=c?9m>?9m>?9J<1=c?91={?!m>?t޼m>?91={?!1=Tz?YQm>Í?/m>?t޼1=Tz?YQ1=?ʨum>?XMm>Í?/1=?ʨu1=?XQm>_?/m>?XMm>_?/m>(?r޼]>\f?g9]>k?-m>(?r޼m>-?=9]>MM?o6:]>\f?g9m>-?=9m>(?\f?c<]>MM?o6:m>(?_?gF=]>k?W=]>\f?c<m>_?gF=m>?s\d=]>?-=]>k?W=m>?s\d=m>Í?gF=]>3?W=]>?-=m>Í?gF=m>?9J<]>?a<]>3?W=m>?9J<m>?9]>Պ?qo6:]>?a<m>?9m>?t޼]>?>9]>Պ?qo6:m>?t޼m>Í?/]>3?/]>?>9m>Í?/m>?XM]>?]>3?/m>?XMm>_?/]>k?-]>?I,˕?I,Q?>ZD%?ŁU3I,s?\3I,˕?D%?ŁU3I,˕?II,dW?D%?ŁU3I,?{ I, ?>ZD%?ŁU3I,Q?>I,?{ D%?ŁU3]>k?-]>\f?g9]>?o6:]>\f?g9]>MM?o6:]>?o6:]>MM?o6:]>\f?c<]>?o6:]>\f?c<]>k?W=]>?o6:]>k?W=]>?-=]>?o6:]>?-=]>3?W=]>?o6:]>3?W=]>?a<]>?o6:]>?a<]>Պ?qo6:]>?o6:]>Պ?qo6:]>?>9]>?o6:]>?>9]>3?/]>?o6:]>3?/]>?]>?o6:]>?]>k?-]>?o6:@AH h">~=">~=LY>LY>~=">*>">*>LY>~=LY>*>">>">>LY>*>LY>>">>">>LY>>LY>>">aU>">aU>LY>>LY>aU>">?">?LY>aU>LY>?">PU?">PU?LY>?LY>PU?">*?">*?LY>PU?LY>*?">@?">@?LY>*?LY>@?">PUU?">PUU?LY>@?LY>PUU?">j?">j?LY>PUU?LY>j?">?">?LY>j?LY>LY>~=LY>~=χ>χ>~=LY>*>LY>*>χ>~=χ>*>LY>>LY>>χ>*>χ>>LY>>LY>>χ>>χ>>LY>aU>LY>aU>χ>>χ>aU>LY>?LY>?χ>aU>χ>?LY>PU?LY>PU?χ>?χ>PU?LY>*?LY>*?χ>PU?χ>*?LY>@?LY>@?χ>*?χ>@?LY>PUU?LY>PUU?χ>@?χ>PUU?LY>j?LY>j?χ>PUU?χ>j?LY>?LY>?χ>j?χ>χ>~=χ>~=>>~=χ>*>χ>*>>~=>*>χ>>χ>>>*>>>χ>>χ>>>>>>χ>aU>χ>aU>>>>aU>χ>?χ>?>aU>>?χ>PU?χ>PU?>?>PU?χ>*?χ>*?>PU?>*?χ>@?χ>@?>*?>@?χ>PUU?χ>PUU?>@?>PUU?χ>j?χ>j?>PUU?>j?χ>?χ>?>j?>>~=>~=)#>)#>~=>*>>*>)#>~=)#>*>>>>>)#>*>)#>>>>>>)#>>)#>>>aU>>aU>)#>>)#>aU>>?>?)#>aU>)#>?>PU?>PU?)#>?)#>PU?>*?>*?)#>PU?)#>*?>@?>@?)#>*?)#>@?>PUU?>PUU?)#>@?)#>PUU?>j?>j?)#>PUU?)#>j?>?>?)#>j?)#>)#>~=)#>~=L>L>~=)#>*>)#>*>L>~=L>*>)#>>)#>>L>*>L>>)#>>)#>>L>>L>>)#>aU>)#>aU>L>>L>aU>)#>?)#>?L>aU>L>?)#>PU?)#>PU?L>?L>PU?)#>*?)#>*?L>PU?L>*?)#>@?)#>@?L>*?L>@?)#>PUU?)#>PUU?L>@?L>PUU?)#>j?)#>j?L>PUU?L>j?)#>?)#>?L>j?L>L>~=L>~=Kv>Kv>~=L>*>L>*>Kv>~=Kv>*>L>>L>>Kv>*>Kv>>L>>L>>Kv>>Kv>>L>aU>L>aU>Kv>>Kv>aU>L>?L>?Kv>aU>Kv>?L>PU?L>PU?Kv>?Kv>PU?L>*?L>*?Kv>PU?Kv>*?L>@?L>@?Kv>*?Kv>@?L>PUU?L>PUU?Kv>@?Kv>PUU?L>j?L>j?Kv>PUU?Kv>j?L>?L>?Kv>j?Kv>~=">">?*>">~=">?>">*>">?>">>">?aU>">>">??">aU>">?PU?">?">?*?">PU?">?@?">*?">?PUU?">@?">?j?">PUU?">??">j?">?Kv>~=Kv>?"?~=Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>aU>Kv>?"?aU>Kv>?Kv>?"??Kv>PU?Kv>?"?PU?Kv>*?Kv>?"?*?Kv>@?Kv>?"?@?Kv>PUU?Kv>?"?PUU?Kv>j?Kv>?"?j?Kv>?Kv>?"?`A6I,?r"="_lf?ŁU3 AM     !"# !#&'$$%&*+(()*-./,-/123013674456:;889:=>?<=?BC@@ABEFGDEGJKHHIJMNOLMOQRSPQSTUVTVWZ[XXYZ]^_\]_bc``abefgdegkhiijkolmmnospqqrstuvtvwxyzxz{|}~|~         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg0A_VMtl05  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinder9AAHF^?"7.=.?Յ<==?Յ<=@^?"7.=.?Յ<=F^?J=@^?J==?Յ<=F^?J=#Sgխ?FP=r$gխ?FP=@^?J=#Sgխ?FP= p”?zS= Np”?zS=r$gխ?FP= p”?zS= 8?Ѕ<= N8?Ѕ<= Np”?zS= 8?Ѕ<= p”? %= Np”? %= N8?Ѕ<= p”? %=#Sgխ?^N(=r$gխ?^N(= Np”? %=#Sgխ?^N(=F^?"7.=@^?"7.=r$gխ?^N(=@^?"7.==?Յ<=F?Յ<=t^?"7.==?Յ<=@^?J=t^?J=F?Յ<=@^?J=r$gխ?FP=Ogխ?FP=t^?J=r$gխ?FP= Np”?zS=.p”?zS=Ogխ?FP= Np”?zS= N8?Ѕ<=.8?Ѕ<=.p”?zS= N8?Ѕ<= Np”? %=.p”? %=.8?Ѕ<= Np”? %=r$gխ?^N(=Ogխ?^N(=.p”? %=r$gխ?^N(=@^?"7.=t^?"7.=Ogխ?^N(=t^?"7.=F?Յ<=?Յ<=Qq^?"7.=F?Յ<=t^?J=Qq^?J=?Յ<=t^?J=Ogխ?FP=Yogխ?FP=Qq^?J=Ogխ?FP=.p”?zS=xp”?zS=Yogխ?FP=.p”?zS=.8?Ѕ<=x8?Ѕ<=xp”?zS=.8?Ѕ<=.p”? %=xp”? %=x8?Ѕ<=.p”? %=Ogխ?^N(=Yogխ?^N(=xp”? %=Ogխ?^N(=t^?"7.=Qq^?"7.=Yogխ?^N(=Qq^?"7.=?Յ<=3?Յ<="r^?"7.=?Յ<=Qq^?J="r^?J=3?Յ<=Qq^?J=Yogխ?FP=Ѹgխ?FP="r^?J=Yogխ?FP=xp”?zS=Pp”?zS=Ѹgխ?FP=xp”?zS=x8?Ѕ<=P8?Ѕ<=Pp”?zS=x8?Ѕ<=xp”? %=Pp”? %=P8?Ѕ<=xp”? %=Yogխ?^N(=Ѹgխ?^N(=Pp”? %=Yogխ?^N(=Qq^?"7.="r^?"7.=Ѹgխ?^N(=.?Յ<=F^?"7.=#Sgխ?҅<=F^?J=.?Յ<=#Sgխ?҅<=#Sgխ?FP=F^?J=#Sgխ?҅<= p”?zS=#Sgխ?FP=#Sgխ?҅<= 8?Ѕ<= p”?zS=#Sgխ?҅<= p”? %= 8?Ѕ<=#Sgխ?҅<=#Sgխ?^N(= p”? %=#Sgխ?҅<=F^?"7.=#Sgխ?^N(=#Sgխ?҅<="r^?"7.=3?Յ<=Ѹgխ?҅<=3?Յ<="r^?J=Ѹgխ?҅<="r^?J=Ѹgխ?FP=Ѹgխ?҅<=Ѹgխ?FP=Pp”?zS=Ѹgխ?҅<=Pp”?zS=P8?Ѕ<=Ѹgխ?҅<=P8?Ѕ<=Pp”? %=Ѹgխ?҅<=Pp”? %=Ѹgխ?^N(=Ѹgխ?҅<=Ѹgխ?^N(="r^?"7.=Ѹgխ?҅<=@A">>">>)vt>)vt>>">>">>)vt>>)vt>>">>">>)vt>>)vt>>">?">?)vt>>)vt>?"> ?"> ?)vt>?)vt> ?">@?">@?)vt> ?)vt>@?">`?">`?)vt>@?)vt>`?">?">?)vt>`?)vt>)vt>>)vt>>>>>)vt>>)vt>>>>>>)vt>>)vt>>>>>>)vt>?)vt>?>>>?)vt> ?)vt> ?>?> ?)vt>@?)vt>@?> ?>@?)vt>`?)vt>`?>@?>`?)vt>?)vt>?>`?>>>>>ط>ط>>>>>>ط>>ط>>>>>>ط>>ط>>>?>?ط>>ط>?> ?> ?ط>?ط> ?>@?>@?ط> ?ط>@?>`?>`?ط>@?ط>`?>?>?ط>`?ط>ط>>ط>>Kv>Kv>>ط>>ط>>Kv>>Kv>>ط>>ط>>Kv>>Kv>>ط>?ط>?Kv>>Kv>?ط> ?ط> ?Kv>?Kv> ?ط>@?ط>@?Kv> ?Kv>@?ط>`?ط>`?Kv>@?Kv>`?ط>?ط>?Kv>`?Kv>>">">?>">>">?>">>">??">>">? ?">?">?@?"> ?">?`?">@?">??">`?">?Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>?Kv>?"??Kv> ?Kv>?"? ?Kv>@?Kv>?"?@?Kv>`?Kv>?"?`?Kv>?Kv>?"?`A6=jw<#׍ P_gխ?҅<= A}P    # !!"#$%&$&'()*(*+,-.,./012023456467;899:;?<==>?BC@@ABEFGDEGHIJHJKLMNLNOPQRPRSTUVTVW[XYYZ[_\]]^_bc``abefgdeghijhjklmnlnopqrprstuvtvw{xyyz{|}}~0AVMtl06P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@pCylinde11AAHvٽU6?7.=`0?̅<=I`0?Ʌ<= U6?7.=`0?̅<=wٽU6?J= U6?|J=I`0?Ʌ<=wٽU6?J=JUlh?IP= ɽlh?DP= U6?|J=JUlh?IP= ;A?zS=XkA?zS= ɽlh?DP= ;A?zS= ;?݅<=Wk?ׅ<=XkA?zS= ;?݅<= ;A?%=VkA?%=Wk?ׅ<= ;A?%=IUlh?bN(= ɽlh?]N(=VkA?%=IUlh?bN(=vٽU6?7.= U6?7.= ɽlh?]N(= U6?7.=I`0?Ʌ<=*`0?Dž<=,U6?7.=I`0?Ʌ<= U6?|J=,U6?yJ=*`0?Dž<= U6?|J= ɽlh?DP=Flh??P=,U6?yJ= ɽlh?DP=XkA?zS= AA?zS=Flh??P=XkA?zS=Wk?ׅ<= A?Ѕ<= AA?zS=Wk?ׅ<=VkA?%= AA? %= A?Ѕ<=VkA?%= ɽlh?]N(=Flh?XN(= AA? %= ɽlh?]N(= U6?7.=,U6?7.=Flh?XN(=,U6?7.=*`0?Dž<=WC`0?ą<=lLU6?7.=*`0?Dž<=,U6?yJ=lLU6?vJ=WC`0?ą<=,U6?yJ=Flh??P=Blh?:P=lLU6?vJ=Flh??P= AA?zS=X9A?zS=Blh?:P= AA?zS= A?Ѕ<=X9?ʅ<=X9A?zS= A?Ѕ<= AA? %=X9A?%=X9?ʅ<= AA? %=Flh?XN(=Blh?SN(=X9A?%=Flh?XN(=,U6?7.=lLU6?7.=Blh?SN(=lLU6?7.=WC`0?ą<=[`0?…<=YlU6?7.=WC`0?ą<=lLU6?vJ=YlU6?sJ=[`0?…<=lLU6?vJ=Blh?:P=qlh?5P=YlU6?sJ=Blh?:P=X9A?zS=YxA?zS=qlh?5P=X9A?zS=X9?ʅ<=Yx?ą<=YxA?zS=X9?ʅ<=X9A?%=YxA?%=Yx?ą<=X9A?%=Blh?SN(=qlh?NN(=YxA?%=Blh?SN(=lLU6?7.=YlU6?7.=qlh?NN(=`0?̅<=vٽU6?7.=JUlh?Յ<=wٽU6?J=`0?̅<=JUlh?Յ<=JUlh?IP=wٽU6?J=JUlh?Յ<= ;A?zS=JUlh?IP=JUlh?Յ<= ;?݅<= ;A?zS=JUlh?Յ<= ;A?%= ;?݅<=JUlh?Յ<=IUlh?bN(= ;A?%=JUlh?Յ<=vٽU6?7.=IUlh?bN(=JUlh?Յ<=YlU6?7.=[`0?…<=qlh?…<=[`0?…<=YlU6?sJ=qlh?…<=YlU6?sJ=qlh?5P=qlh?…<=qlh?5P=YxA?zS=qlh?…<=YxA?zS=Yx?ą<=qlh?…<=Yx?ą<=YxA?%=qlh?…<=YxA?%=qlh?NN(=qlh?…<=qlh?NN(=YlU6?7.=qlh?…<=@A">>">>)vt>)vt>>">>">>)vt>>)vt>>">>">>)vt>>)vt>>">?">?)vt>>)vt>?"> ?"> ?)vt>?)vt> ?">@?">@?)vt> ?)vt>@?">`?">`?)vt>@?)vt>`?">?">?)vt>`?)vt>)vt>>)vt>>>>>)vt>>)vt>>>>>>)vt>>)vt>>>>>>)vt>?)vt>?>>>?)vt> ?)vt> ?>?> ?)vt>@?)vt>@?> ?>@?)vt>`?)vt>`?>@?>`?)vt>?)vt>?>`?>>>>>ط>ط>>>>>>ط>>ط>>>>>>ط>>ط>>>?>?ط>>ط>?> ?> ?ط>?ط> ?>@?>@?ط> ?ط>@?>`?>`?ط>@?ط>`?>?>?ط>`?ط>ط>>ط>>Kv>Kv>>ط>>ط>>Kv>>Kv>>ط>>ط>>Kv>>Kv>>ط>?ط>?Kv>>Kv>?ط> ?ط> ?Kv>?Kv> ?ط>@?ط>@?Kv> ?Kv>@?ط>`?ط>`?Kv>@?Kv>`?ط>?ط>?Kv>`?Kv>>">">?>">>">?>">>">??">>">? ?">?">?@?"> ?">?`?">@?">??">`?">?Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>>Kv>?"?>Kv>?Kv>?"??Kv> ?Kv>?"? ?Kv>@?Kv>?"?@?Kv>`?Kv>?"?`?Kv>?Kv>?"?`A6w=Wt3ATjw<>O2Ύlh?ͅ<= A}P    # !!"#$%&$&'()*(*+,-.,./012023456467;899:;?<==>?BC@@ABEFGDEGHIJHJKLMNLNOPQRPRSTUVTVW[XYYZ[_\]]^_bc``abefgdeghijhjklmnlnopqrprstuvtvw{xyyz{|}}~0AVMtl07P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@ pCylinde13AAT>˭?>˭?N'b>˭?N'b>˭?>˭?N'mr>w?>w?b>˭?N'mr>w?P>y?o:>y?o>w?P>y?oP>y?Ӽ:>y?Ӽ:>y?oP>y?Ӽmr>w?zϼ>w?zϼ:>y?Ӽmr>w?zϼ>˭?b>˭?>w?zϼb>˭?b>˭?N'ڳ>˭?N'ڳ>˭?b>˭?N'>w?Cȳ>w?ڳ>˭?N'>w?:>y?o>y?oCȳ>w?:>y?o:>y?Ӽ>y?Ӽ>y?o:>y?Ӽ>w?zϼCȳ>w?zϼ>y?Ӽ>w?zϼb>˭?ڳ>˭?Cȳ>w?zϼ>˭?N'>˭?mr>w?mr>w?>˭?N'mr>w?P>y?omr>w?mr>w?P>y?ӼP>y?omr>w?mr>w?zϼP>y?Ӽmr>w?>˭?mr>w?zϼmr>w?ڳ>˭?ڳ>˭?N'Cȳ>w?ڳ>˭?N'Cȳ>w?Cȳ>w?Cȳ>w?>y?oCȳ>w?>y?o>y?ӼCȳ>w?>y?ӼCȳ>w?zϼCȳ>w?Cȳ>w?zϼڳ>˭?Cȳ>w?@AT">*>">*>>>*>">>">>>*>>>">?">?>>>?">*?">*?>?>*?">PUU?">PUU?>*?>PUU?">?">?>PUU?>>*>>*>Kv>Kv>*>>>>>Kv>*>Kv>>>?>?Kv>>Kv>?>*?>*?Kv>?Kv>*?>PUU?>PUU?Kv>*?Kv>PUU?>?>?Kv>PUU?Kv>*>">">?>">*>">??">>">?*?">?">?PUU?">*?">??">PUU?">?Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>?Kv>?"??Kv>*?Kv>?"?*?Kv>PUU?Kv>?"?PUU?Kv>?Kv>?"?`A64f=x"<H->w? A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl08$  !"#PA@ pCylinde15AAT~>Uj?~>Uj?['(Y>Uj?b')Y>Uj?~>Uj?[' $>[?Ƕo>[?*(Y>Uj?b' $>[?ޥ>~?o >~?oǶo>[?*ޥ>~?oޥ>~?Ӽ >~? Ӽ >~?oޥ>~?Ӽ $>[?zϼǶo>[?zϼ >~? Ӽ $>[?zϼ~>Uj?)Y>Uj?Ƕo>[?zϼ)Y>Uj?(Y>Uj?b'T5>Uj?j'T5>Uj?(Y>Uj?b'Ƕo>[?*z%5>[?6T5>Uj?j'Ƕo>[?* >~?o8>~?oz%5>[?6 >~?o >~? Ӽ8>~?Ӽ8>~?o >~? ӼǶo>[?zϼ{%5>[?zϼ8>~?ӼǶo>[?zϼ)Y>Uj?T5>Uj?{%5>[?zϼ~>Uj?['~>Uj? $>[? $>[?~>Uj?[' $>[?ޥ>~?o $>[? $>[?ޥ>~?Ӽޥ>~?o $>[? $>[?zϼޥ>~?Ӽ $>[?~>Uj? $>[?zϼ $>[?T5>Uj?T5>Uj?j'z%5>[?T5>Uj?j'z%5>[?6z%5>[?z%5>[?68>~?oz%5>[?8>~?o8>~?Ӽz%5>[?8>~?Ӽ{%5>[?zϼz%5>[?{%5>[?zϼT5>Uj?z%5>[?@AT">*>">*>>>*>">>">>>*>>>">?">?>>>?">*?">*?>?>*?">PUU?">PUU?>*?>PUU?">?">?>PUU?>>*>>*>Kv>Kv>*>>>>>Kv>*>Kv>>>?>?Kv>>Kv>?>*?>*?Kv>?Kv>*?>PUU?>PUU?Kv>*?Kv>PUU?>?>?Kv>PUU?Kv>*>">">?>">*>">??">>">?*?">?">?PUU?">*?">??">PUU?">?Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>?Kv>?"??Kv>*?Kv>?"?*?Kv>PUU?Kv>?"?PUU?Kv>?Kv>?"?`A64f=զ3Z̄x"<F=>1->[? A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl09$  !"#PA@ pCylinde17AAT(>>?)>(>z ?)>v>z ?)>v>>?)>(>z ?)>\&]>aƐ?r=7>aƐ?r=v>z ?)>\&]>aƐ?r=1>k?/[=>k?/[=7>aƐ?r=1>k?/[=1>=?.[=>=?.[=>k?/[=1>=?.[=\&]>W?r=7>W?r=>=?.[=\&]>W?r=(>>?)>v>>?)>7>W?r=v>>?)>v>z ?)>>z ?)>>>?)>v>z ?)>7>aƐ?r=A>aƐ?r=>z ?)>7>aƐ?r=>k?/[=ND>k?/[=A>aƐ?r=>k?/[=>=?.[=ND>=?.[=ND>k?/[=>=?.[=7>W?r=A>W?r=ND>=?.[=7>W?r=v>>?)>>>?)>A>W?r=(>z ?)>(>>?)>\&]>\T?r=\&]>aƐ?r=(>z ?)>\&]>\T?r=1>k?/[=\&]>aƐ?r=\&]>\T?r=1>=?.[=1>k?/[=\&]>\T?r=\&]>W?r=1>=?.[=\&]>\T?r=(>>?)>\&]>W?r=\&]>\T?r=>>?)>>z ?)>A>\T?r=>z ?)>A>aƐ?r=A>\T?r=A>aƐ?r=ND>k?/[=A>\T?r=ND>k?/[=ND>=?.[=A>\T?r=ND>=?.[=A>W?r=A>\T?r=A>W?r=>>?)>A>\T?r=@AT">*>">*>>>*>">>">>>*>>>">?">?>>>?">*?">*?>?>*?">PUU?">PUU?>*?>PUU?">?">?>PUU?>>*>>*>Kv>Kv>*>>>>>Kv>*>Kv>>>?>?Kv>>Kv>?>*?>*?Kv>?Kv>*?>PUU?>PUU?Kv>*?Kv>PUU?>?>?Kv>PUU?Kv>*>">">?>">*>">??">>">?*?">?">?PUU?">*?">??">PUU?">?Kv>*>Kv>?"?*>Kv>>Kv>?"?>Kv>?Kv>?"??Kv>*?Kv>?"?*?Kv>PUU?Kv>?"?PUU?Kv>?Kv>?"?`A6=31>\T?= A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl10$  !"#PA@ZpCylinde19AIAT>K?F\>K?=K\>?*>K?F> ?`:\>&?`:\>K?=K> ?`:>K?<\>K?<\>&?`:>K?<>?<<\>K?<>@l?=\>@l?ׯ<\>?<<>@l?=>㛎?D=\>/?;<\>@l?ׯ<>㛎?D=>?<\>?<\>/?;<>?<>ˋ?w`:\>Z?{`:\>?<>ˋ?w`:>?F\>?=K\>Z?{`:>?F>㛎?y\>/?+\>?=K>㛎?y>@l? \>@l?cؼ\>/?+>@l? >?*\>@l?cؼ>K?F>@l?`:> ?`:>K?F>@l?`:>K?<> ?`:>@l?`:>K?<>@l?`:>@l?=>@l?`:>㛎?D=>@l?=>@l?`:>?<>㛎?D=>@l?`:>ˋ?w`:>?<>@l?`:>?F>ˋ?w`:>@l?`:>㛎?y>?F>@l?`:>@l? >㛎?y>@l?`:>@l? >@l?`:`A6A==! >@l?`: A$     # !!"#$%&$&'()*(*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl11$  !"#PA@pCylinde20AA$\>?*\>K?=K\>@l?`:\>K?=K\>&?`:\>@l?`:\>&?`:\>K?<\>@l?`:\>K?<\>?<<\>@l?`:\>?<<\>@l?ׯ<\>@l?`:\>@l?ׯ<\>/?;<\>@l?`:\>/?;<\>?<\>@l?`:\>?<\>Z?{`:\>@l?`:\>Z?{`:\>?=K\>@l?`:\>?=K\>/?+\>@l?`:\>/?+\>@l?cؼ\>@l?`:\>@l?cؼ\>?*\>@l?`:`A6A==! >@l?`: A    !"#0A'VMtl12  PA6@" pSphere1_0A Axe̾p?Z=?<=Hr꾶D?v#=VϾF?@AB@BCGDEEFGHIJHJKOLMMNOPQRPRSWTUUVWXYZXZ[_\]]^_`abcdefghijklmnopqrstuvw0AVMtl138  !"#$%&'()*+,-./01234567PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &)~QP!*??"&o>o>P= # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0$$$DUMMY@pCylinder3 &)~Qjo!*??"&o>o>P= # # # #< #< #<0pCylinder4@ &!*"&???0pCylinder5@ &!*"&???0 $$$DUMMY@pCylinder6 &!*"&I,?"="= # # # #< #< #<0 pCylinder7@  &!*"&???0 $$$DUMMY@pCylinder8 &_…<=gխ!*"&=<#׍> # # # #< #< #<0 pCylinder9@  &!*"&???0 $$$DUMMY@pCylinde10 &Ύ…<=lh!*I@?"&w # # # #< #< #<0pCylinde11@  &!*"&???0$$$DUMMY@pCylinde12 &->w!*"&4f=x"<= # # # #< #< #<0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &->[!*I@?"&4fx"F # # # #< #< #<0pCylinde15@ &!*"&???0$$$DUMMY@pCylinde16 &>=\T!*?"&=<= # # # #< #< #<0pCylinde17@ &!*"&???0$$$DUMMY@pCylinde18 &>^:@l!*"&A==!= # # # #< #< #<0pCylinde19@ &!*"&???0pCylinde20@ &!*"&???0$$$DUMMY@pSphere01 &5=ܽ!*Ė="&Dn=@<]O< # # # #< #< #<0pSphere1_0@ &!*"&???gl-117-1.3.2/models/transp4.3ds0000755000175000017500000014143610145416156015201 0ustar cedriccedricMM ==O>=  VMtl01  0 @0A0P0R0S00 ? VMtl02  0 @0A0P0R0S00 ? VMtl03  0 @0A0P0R0S00 ? VMtl04  0 @0A0P0R0S00 ? VMtl05  0 @0A0P0R0S00 ? VMtl06  0 @0A0P0R0S00 ? VMtl07  0 @0A0P0R0S00 ? VMtl08  0 @0A0P0R0S00 ? VMtl09 fff  fff0 @0A0P0R0S00 ?30dTRANSP4_.RGBQS VMtl10 fff  fff0 @0A0P0R0S00 ?30dTRANSP4_.RGBQS VMtl11 fff  fff0 @0A0P0R0S00 ?30dTRANSP4_.RGBQS VMtl12 fff  fff0 @0A0P0R0S00 ?30dTRANSP4_.RGBQS VMtl13 fff  fff0 @0A0P0R0S00 ?30dTRANSP4_.RGBQS VMtl14 fff  fff0 @0A0P0R0S00 ?30dTRANSP4_.RGBQS VMtl15 fff  fff0 @0A0P0R0S00 ?30dTRANSP4_.RGBQS VMtl16   0 @0A0P0R0S00 ? ?@pCylinder1AA(XϽwY?@Ͻ̻?`)̻?70)I?llϽ̻?`Ͻ??@)ZO?kl)̻?70Ͻ??@ϽX?q)-?q)ZO?klϽX?qϽ??^)ZO?gO)-?qϽ??^Ͻ̻?W?)̻?4B)ZO?gOϽ̻?W?ϽwY?^)I?gO)̻?4BϽwY?^Ͻ?q)Wk?q)I?gOϽ?qϽwY?@)I?ll)Wk?q)I?ll)̻?70Xj̻?f^XjjN?ӏ)̻?70)ZO?klXjJ?ҏXj̻?f^)ZO?kl)-?qXj?qXjJ?ҏ)-?q)ZO?gOXjJ?1SXj?q)ZO?gO)̻?4BXj̻?iXjJ?1S)̻?4B)I?gOXjjN?2SXj̻?i)I?gO)Wk?qXjܶ?qXjjN?2S)Wk?q)I?llXjjN?ӏXjܶ?qXjjN?ӏXj̻?f^|V?̻?qXj̻?f^XjJ?ҏ|V?̻?qXjJ?ҏXj?q|V?̻?qXj?qXjJ?1S|V?̻?qXjJ?1SXj̻?i|V?̻?qXj̻?iXjjN?2S|V?̻?qXjjN?2SXjܶ?q|V?̻?qXjܶ?qXjjN?ӏ|V?̻?q`A6 3og/g/o>P!8즹)̻?q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl01(  !"#$%&'PA@pCylinder2AA(Ͻ̻?`ϽwY?@[Ľ̻?qϽ??@Ͻ̻?`[Ľ̻?qϽX?qϽ??@[Ľ̻?qϽ??^ϽX?q[Ľ̻?qϽ̻?W?Ͻ??^[Ľ̻?qϽwY?^Ͻ̻?W?[Ľ̻?qϽ?qϽwY?^[Ľ̻?qϽwY?@Ͻ?q[Ľ̻?q`A6 3og/g/o>P!8즹)̻?q A  0AVMtl02PA&@pCylinder4AA(XϽF?@ϽM?`)M??0)uD?tlϽM?`Ͻ;T?@)ȾV?sl)M??0Ͻ;T?@ϽzW?q)|{Z?q)ȾV?slϽzW?qϽ;T?b)ɾV?iO)|{Z?qϽ;T?bϽM?Y?)M?6B)ɾV?iOϽM?Y?ϽF?b)vD?iO)M?6BϽF?bϽzC?q)@?q)vD?iOϽzC?qϽF?@)uD?tl)@?q)uD?tl)M??0XjM?n^XjF?׏)M??0)ȾV?slXjUT?֏XjM?n^)ȾV?sl)|{Z?qXj W?qXjUT?֏)|{Z?q)ɾV?iOXjUT?5SXj W?q)ɾV?iO)M?6BXjM?kXjUT?5S)M?6B)vD?iOXjF?6SXjM?k)vD?iO)@?qXj5C?qXjF?6S)@?q)uD?tlXjF?׏Xj5C?qXjF?׏XjM?n^|V?M?qXjM?n^XjUT?֏|V?M?qXjUT?֏Xj W?q|V?M?qXj W?qXjUT?5S|V?M?qXjUT?5SXjM?k|V?M?qXjM?kXjF?6S|V?M?qXjF?6SXj5C?q|V?M?qXj5C?qXjF?׏|V?M?q`A6 3og/g/o>P!8즹)M?q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl03(  !"#$%&'PA@pCylinder5AA(ϽM?`ϽF?@[ĽM?qϽ;T?@ϽM?`[ĽM?qϽzW?qϽ;T?@[ĽM?qϽ;T?bϽzW?q[ĽM?qϽM?Y?Ͻ;T?b[ĽM?qϽF?bϽM?Y?[ĽM?qϽzC?qϽF?b[ĽM?qϽF?@ϽzC?q[ĽM?q`A6 3og/g/o>P!8즹)M?q A  0AVMtl04PA&@pCylinder7AA(XϽ ݧ?@ϽP?`)P?90)Eͦ?nlϽP?`Ͻ(î?@)ү?ml)P?90Ͻ(î?@Ͻ0?q)H?q)ү?mlϽ0?qϽ(î?_)ү?gO)H?qϽ(î?_ϽP?X?)P?5B)ү?gOϽP?X?Ͻ ݧ?_)Eͦ?hO)P?5BϽ ݧ?_ϽGo?q)?q)Eͦ?hOϽGo?qϽ ݧ?@)Eͦ?nl)?q)Eͦ?nl)P?90XjP?h^Xjѧ?ԏ)P?90)ү?mlXj5ή?ӏXjP?h^)ү?ml)H?qXj@?qXj5ή?ӏ)H?q)ү?gOXj5ή?2SXj@?q)ү?gO)P?5BXjP?iXj5ή?2S)P?5B)Eͦ?hOXjѧ?3SXjP?i)Eͦ?hO)?qXj_?qXjѧ?3S)?q)Eͦ?nlXjѧ?ԏXj_?qXjѧ?ԏXjP?h^|V?P?qXjP?h^Xj5ή?ӏ|V?P?qXj5ή?ӏXj@?q|V?P?qXj@?qXj5ή?2S|V?P?qXj5ή?2SXjP?i|V?P?qXjP?iXjѧ?3S|V?P?qXjѧ?3SXj_?q|V?P?qXj_?qXjѧ?ԏ|V?P?q`A6 3og/g/o>P!8즹)P?q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl05(  !"#$%&'PA@pCylinder8AA(ϽP?`Ͻ ݧ?@[ĽP?qϽ(î?@ϽP?`[ĽP?qϽ0?qϽ(î?@[ĽP?qϽ(î?_Ͻ0?q[ĽP?qϽP?X?Ͻ(î?_[ĽP?qϽ ݧ?_ϽP?X?[ĽP?qϽGo?qϽ ݧ?_[ĽP?qϽ ݧ?@ϽGo?q[ĽP?q`A6 3og/g/o>P!8즹)P?q A  0AVMtl06PA&@pCylinde10AA(XϽOh?@Ͻjo?`)jo??0)f?tlϽjo?`Ͻv?@)x?sl)jo??0Ͻv?@Ͻy?q)|?q)x?slϽy?qϽv?b)x?iO)|?qϽv?bϽjo?Y?)jo?6B)x?iOϽjo?Y?ϽOh?b)f?iO)jo?6BϽOh?bϽe?q) b?q)f?iOϽe?qϽOh?@)f?tl) b?q)f?tl)jo??0Xjjo?n^Xj4h?׏)jo??0)x?slXjv?֏Xjjo?n^)x?sl)|?qXjTy?qXjv?֏)|?q)x?iOXjv?5SXjTy?q)x?iO)jo?6BXjjo?kXjv?5S)jo?6B)f?iOXj4h?6SXjjo?k)f?iO) b?qXje?qXj4h?6S) b?q)f?tlXj4h?׏Xje?qXj4h?׏Xjjo?n^|V?jo?qXjjo?n^Xjv?֏|V?jo?qXjv?֏XjTy?q|V?jo?qXjTy?qXjv?5S|V?jo?qXjv?5SXjjo?k|V?jo?qXjjo?kXj4h?6S|V?jo?qXj4h?6SXje?q|V?jo?qXje?qXj4h?׏|V?jo?q`A6 3og/g/o>P!8즹)jo?q AM(     !" "#'$%%&'()*(*+/,--./01202374556789:8:;?<==>?@ABCDEFGHIJKLMNOPQRSTUVW0A_VMtl07(  !"#$%&'PA@pCylinde11AA(Ͻjo?`ϽOh?@[Ľjo?qϽv?@Ͻjo?`[Ľjo?qϽy?qϽv?@[Ľjo?qϽv?bϽy?q[Ľjo?qϽjo?Y?Ͻv?b[Ľjo?qϽOh?bϽjo?Y?[Ľjo?qϽe?qϽOh?b[Ľjo?qϽOh?@Ͻe?q[Ľjo?q`A6 3og/g/o>P!8즹)jo?q A  0AVMtl08PA&@%pCylinde13A%Ah,Q?>,˕??uG?L,˕?,s?\3(?o`3?u,s?\3,˕?I<?=(?o`3,˕?I<,Q?V=G?=?=,Q?V=,?;$=?=G?=,?;$=, ?U="?=?=, ?U=,dW?H<?="?=,dW?H<,?YN3?ؓJ3?=,?YN3,dW??u?ؓJ3,dW?, ?>P"?L?u, ?>,?{ ?#di"?L,?{ ,Q?>PG?L?#diG?L?uU?$U ?(^?u(?o`3U Ě?JԀU?$(?o`3?=U?(=U Ě?JԀ?=G?=U ?җ=U?(=G?=?=U?]=U ?җ=?="?=U?җ=U?]="?=?=U}?(=U?җ=?=?ؓJ3U _?XԀU}?(=?ؓJ3?uU}?$U _?XԀ?u"?LU?)^U}?$"?L?#diU?~U?)^?#diG?LU ?(^U?~U ?(^U?$niP?Yni[z?dfU?$U Ě?JԀnibҙ?a3niP?YU Ě?JԀU?(=niP?0%=nibҙ?a3U?(=U ?җ=ni[z?ew=niP?0%=U ?җ=U?]=ni?)=ni[z?ew=U?]=U?җ=>i?ew=ni?)=U?җ=U}?(=nik?/%=>i?ew=U}?(=U _?XԀniP?fI3nik?/%=U _?XԀU}?$nik?ZniP?fI3U}?$U?)^ni?efnik?ZU?)^U?~ni?@ni?efU?~U ?(^ni[z?dfni?@ni[z?dfniP?Y>\?X>?XQniP?Ynibҙ?a3>?9>\?X༷nibҙ?a3niP?0%=>\?m=>?9niP?0%=ni[z?ew=>?/h=>\?m=ni[z?ew=ni?)=>?PV=>?/h=ni?)=>i?ew=>Tz?.h=>?PV=>i?ew=nik?/%=>{?l=>Tz?.h=nik?/%=niP?fI3>c?9>{?l=niP?fI3nik?Z>{?!>c?9nik?Zni?ef>Tz?YQ>{?!ni?efni?@>?ʨu>Tz?YQni?@ni[z?df>?XQ>?ʨu>?XQ>\?Xp>(?r޼p>_?/>\?X>?9p>-?=9p>(?r޼>?9>\?m=p>(?-?=9>\?m=>?/h=p>_?gF=p>(??/h=>?PV=p>?s\d=p>_?gF=>?PV=>Tz?.h=p>Í?gF=p>?s\d=>Tz?.h=>{?l=p>?9JÍ?gF=>{?l=>c?9p>?9p>?9J<>c?9>{?!p>?t޼p>?9>{?!>Tz?YQp>Í?/p>?t޼>Tz?YQ>?ʨup>?XMp>Í?/>?ʨu>?XQp>_?/p>?XMp>_?/p>(?r޼"e?\f?g9"e?k?-p>(?r޼p>-?=9"e?MM?o6:"e?\f?g9p>-?=9p>(?(?_?gF="e?k?W="e?\f?c_?gF=p>?s\d="e??-="e?k?W=p>?s\d=p>Í?gF="e?3?W="e??-=p>Í?gF=p>?9J<"e??a<"e?3?W=p>?9J?9"e?Պ?qo6:"e??a?9p>?t޼"e??>9"e?Պ?qo6:p>?t޼p>Í?/"e?3?/"e??>9p>Í?/p>?XM"e??"e?3?/p>?XMp>_?/"e?k?-"e??,˕?,Q?>,dW?,?{ 9"e??o6:"e??>9"e?3?/"e??o6:"e?3?/"e??"e??o6:"e??"e?k?-"e??o6:@AH hp@ d>Sq@|>Ta@>)_@>Sq@|>s@Ω>b@D>Ta@>s@Ω>ks@W>c@\;>b@D>ks@W>;s@ݱ?d]d@4>c@\;>;s@ݱ?~s@?vc@?d]d@4>~s@?yr@G&?a@>2?vc@?yr@G&?:q@`".?H_@ ??a@>2?:q@`".?p@o-?vn^@X5?H_@ ??p@o-?=_o@%?.:]@/?vn^@X5?=_o@%? }o@|c?e]@¤?.:]@/? }o@|c?{o@?&V^@>e]@¤?{o@?p@ d>)_@>&V^@>)_@>Ta@>I@`>G@>Ta@>b@D>#KJ@>I@`>b@D>c@\;>aOK@׆>#KJ@>c@\;>d]d@4>?K@z>aOK@׆>d]d@4>vc@?J@E??K@z>vc@?a@>2?H@0?J@E?a@>2?H_@ ??u;G@08?H@0?H_@ ??vn^@X5?E@25?u;G@08?vn^@X5?.:]@/?,E@+l&?E@25?.:]@/?e]@¤?ME@p?,E@+l&?e]@¤?&V^@>hF@>ME@p?&V^@>)_@>G@>hF@>G@>I@`>M@0^>@>I@`>#KJ@>@9[>M@0^>#KJ@>aOK@׆>Q@u>@9[>aOK@׆>?K@z>o@D>Q@u>?K@z>J@E?t@>o@D>J@E?H@0?0@?t@>H@0?u;G@08?F@7?0@?u;G@08?E@25?@k?F@7?E@25?,E@+l&?@@?@k?,E@+l&?ME@p?@ >@@?ME@p?hF@>@{N>@ >hF@>G@>@>@{N>@>M@0^>á?=?ɐ#>M@0^>@9[>^?r=á?=@9[>Q@u>^?r=Q@u>o@D>o@D>t@>k? >t@>0@?DÚ?>k? >0@?F@7?? >DÚ?>F@7?@k?m?B>? >@k?@@?~?^+>m?B>@@?@ >/?>~?^+>@ >@{N>M?Y߀>/?>@{N>@>?ɐ#>M?Y߀>?ɐ#>á?=E0?Z=jM3?)=á?=^?r="+?x 9=E0?Z=^?r=׊&?( ="+?x 9=V("?ˢ0>׊&?( =k? > ?3>V("?ˢ0>k? >DÚ?> ?M> ?3>DÚ?>? >6w$?> ?M>? >m?B>)?T>6w$?>m?B>~?^+>.? >)?T>~?^+>/?>2?>.? >/?>M?Y߀>n3?vK>2?>M?Y߀>?ɐ#>jM3?)=n3?vK>jM3?)=E0?Z=l=%$Y;= *<=V("?ˢ0> ?3>BwI>Y;= ?3> ?M> ;э>BwI> ?M>6w$?><'.> ;э>6w$?>)?T>{9=o><'.>)?T>.? >=f>{9=o>.? >2?>f=i>=f>2?>n3?vK>=F}>f=i>n3?vK>jM3?)=Z.=<==F}>Sq@|>p@ d>@1?s@Ω>Sq@|>@1?ks@W>s@Ω>@1?;s@ݱ?ks@W>@1?~s@?;s@ݱ?@1?yr@G&?~s@?@1?:q@`".?yr@G&?@1?p@o-?:q@`".?@1?=_o@%?p@o-?@1? }o@|c?=_o@%?@1?{o@? }o@|c?@1?p@ d>{o@?@1?Z.=<=l=%$<3=+>l=%$<{.=3=+>{.= *<=3=+> *<=Y;=3=+>Y;=BwI>3=+>BwI> ;э>3=+> ;э><'.>3=+><'.>{9=o>3=+>{9=o>=f>3=+>=f>f=i>3=+>f=i>=F}>3=+>=F}>Z.=<=3=+>`A6,?r"="_lf?ŁU3 AM     !"# !#&'$$%&*+(()*-./,-/123013674456:;889:=>?<=?BC@@ABEFGDEGJKHHIJMNOLMOQRSPQSTUVTVWZ[XXYZ]^_\]_bc``abefgdegkhiijkolmmnospqqrstuvtvwxyzxz{|}~|~         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg0A_VMtl09  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PA@pCylinde15AAHF?g3.?%=?%@?g3.?%F?.@?.=?%F?.#S z?or$ z?o@?.#S z?o ?$ N?$r$ z?o ?$ yؒ?% Nyؒ?% N?$ yؒ?% ? < N? < Nyؒ?% ? <#S z?WP9r$ z?WP9 N? <#S z?WP9F?g3@?g3r$ z?WP9@?g3=?%F?%t?g3=?%@?.t?.F?%@?.r$ z?oO z?ot?.r$ z?o N?$.?$O z?o N?$ Nyؒ?%.yؒ?%.?$ Nyؒ?% N? <.? <.yؒ?% N? ?}=!?r=*?;>?}=Q?+/>1?#2>!?r=Q?+/>XX*?;>? @*?;>!?r=M[?V!=R? >!?r=1?#2>R?b~>M[?V!=1?#2>-&?vm @]M?> @R?b~>-&?vm @ga?wz@:J?kw@]M?> @ga?wz@7?X}@H?z@:J?kw@7?X}@@?qy@}J? v@H?z@@?qy@? @5N?@}J? v@? @*?;>R? >5N?@R? >M[?V!=N0?<x?p&f>M[?V!=R?b~>%?Xd>N0?]M?> @>@%?Xd>]M?> @:J?kw@>%u@>@:J?kw@H?z@0*>x@>%u@H?z@}J? v@>t@0*>x@}J? v@5N?@"?ǡ@>t@5N?@R? >x?p&f>"?ǡ@x?p&f>N0?<5D?D>R+L>N0?<%?Xd>>DJ>5D?%?Xd>>@C>n@>DJ>>@>%u@Uj:ur@C>n@>%u@0*>x@Wu@Uj:ur@0*>x@>t@ρ;oq@Wu@>t@"?ǡ@:G>s@ρ;oq@"?ǡ@x?p&f>D>R+L>:G>s@?}=Ԡ?4>?t` @Q?+/>?}=?t` @X?t` @+?-}@X? & @?t` @D>R+L>5D?E>@5D?>DJ>E>@>DJ>C>n@E>@C>n@Uj:ur@E>@Uj:ur@Wu@E>@Wu@ρ;oq@E>@ρ;oq@:G>s@E>@:G>s@D>R+L>E>@`A6=jw<$'_ z?% A}P    # !!"#$%&$&'()*(*+,-.,./012023456467;899:;?<==>?BC@@ABEFGDEGHIJHJKLMNLNOPQRPRSTUVTVW[XYYZ[_\]]^_bc``abefgdeghijhjklmnlnopqrprstuvtvw{xyyz{|}}~0AVMtl10P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@pCylinde17AAHvٽJ?g3?%I?% J?g3?%wٽJ?8 J?<I?%wٽJ?8JUL[?n ɽL[?s J?<JUL[?n ;X'?$XkX'?$ ɽL[?s ;X'?$ ;=?%Wk=?%XkX'?$ ;=?% ;X'? ?9j>?e@ @A(>s @+Q>C? >?9j>s @+Q>o @ك>U?sS>C? >o @ك>s?@佒?@U?sS>s?@e?N^t@,?nr@佒?@,?nr@U?~@R>*}@=>)q@U?~@+?Gwt@f>'s@R>*}@+?Gwt@?e@M?*@f>'s@?e@?9j>7?6>M?*@?9j>C? >=?8=7?6>C? >U?sS>H?6>=?8=U?sS>佒?@M?Wy@H?6>佒?@,?nr@=>)q@M?Wy@=>)q@R>*}@'>c|@tEi>4p@R>*}@f>'s@e>q@'>c|@f>'s@M?*@>1@e>q@M?*@7?6>4?>>1@7?6>=?8=b6? Q=4?>=?8=H?6>q5?#=b6? Q=H?6>M?Wy@">?@q5?#=M?Wy@=>)q@tEi>4p@">?@tEi>4p@'>c|@=j{@s;n@'>c|@e>q@Ip@=j{@e>q@>1@:=d?Ip@>1@4?>ʍb>1~=:=d?4?>b6? Q=kk>ʍb>1~=b6? Q=q5?#=i>Bv^=kk>q5?#=">?@I=( ?i>Bv^=">?@tEi>4p@s;n@I=( ?TI?@e?N^t@j?n@(e?u@TI?@j?n@?@(e?u@j?n@ @A(>?@j?n@s @+Q> @A(>j?n@o @ك>s @+Q>j?n@s?@o @ك>j?n@e?N^t@s?@j?n@s;n@=j{@ZF=?=j{@Ip@ZF=?Ip@:=d?ZF=?:=d?ʍb>1~=ZF=?ʍb>1~=kk>ZF=?kk>i>Bv^=ZF=?i>Bv^=I=( ?ZF=?I=( ?s;n@ZF=?`A6w=Wt3ATjw<ˆ>2ΎL[?% A}P    # !!"#$%&$&'()*(*+,-.,./012023456467;899:;?<==>?BC@@ABEFGDEGHIJHJKLMNLNOPQRPRSTUVTVW[XYYZ[_\]]^_bc``abefgdeghijhjklmnlnopqrprstuvtvw{xyyz{|}}~0AVMtl11P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPAF@ pCylinde19AAT>˭?>˭?N'ܔ>˭?N'ܔ>˭?>˭?N'}>w?u>w?ܔ>˭?N'}>w?$>y?oJ>y?ou>w?$>y?o$>y?ӼJ>y?ӼJ>y?o$>y?Ӽ}>w?zϼu>w?zϼJ>y?Ӽ}>w?zϼ>˭?ܔ>˭?u>w?zϼܔ>˭?ܔ>˭?N' ?˭?N' ?˭?ܔ>˭?N'u>w?n>w? ?˭?N'u>w?J>y?o=>y?on>w?J>y?oJ>y?Ӽ=>y?Ӽ=>y?oJ>y?Ӽu>w?zϼn>w?zϼ=>y?Ӽu>w?zϼܔ>˭? ?˭?n>w?zϼ>˭?N'>˭?}>w?}>w?>˭?N'}>w?$>y?o}>w?}>w?$>y?Ӽ$>y?o}>w?}>w?zϼ$>y?Ӽ}>w?>˭?}>w?zϼ}>w? ?˭? ?˭?N'n>w? ?˭?N'n>w?n>w?n>w?=>y?on>w?=>y?o=>y?Ӽn>w?=>y?Ӽn>w?zϼn>w?n>w?zϼ ?˭?n>w?@AT#I?Psr= ?a=ˉ>a=+>< ?a=Xq@A@_?@ˉ>a=Xq@A@O)@@Hޱ?%tw@_?@O)@@ ,@}@?*u@Hޱ?%tw@ ,@}@ @t@u:???*u@ @t@#I?Psr=+><ˉ>a=" < <ˉ>a=_?@ݔr=o?" <_?@Hޱ?%tw@z>en@ݔr=o?Hޱ?%tw@?*u@-|=>wl@z>en@?*u@u:??=?-|=>wl@u:??+>< <=? ?a=#I?Psr=@B@Xq@A@ ?a=@B@O)@@Xq@A@@B@ ,@}@O)@@@B@ @t@ ,@}@@B@#I?Psr= @t@@B@ <" <¬=I?" <ݔr=o?¬=I?ݔr=o?z>en@¬=I?z>en@-|=>wl@¬=I?-|=>wl@=?¬=I?=? <¬=I?`A6x{=x"<HM>w? A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl12$  !"#PA@ pCylinde21AATO>Uj?O>Uj?d' >Uj?g' >Uj?O>Uj?d'>[?%>[?* >Uj?g'>[?Ī>~?o8Q>~?o%>[?*Ī>~?oĪ>~?Ӽ8Q>~? Ӽ8Q>~?oĪ>~?Ӽ>[?zϼ%>[?zϼ8Q>~? Ӽ>[?zϼO>Uj? >Uj?%>[?zϼ >Uj? >Uj?g'ň>Uj?j'ň>Uj? >Uj?g'%>[?*->[?6ň>Uj?j'%>[?*8Q>~?o>~?o->[?68Q>~?o8Q>~? Ӽ>~?Ӽ>~?o8Q>~? Ӽ%>[?zϼ->[?zϼ>~?Ӽ%>[?zϼ >Uj?ň>Uj?->[?zϼO>Uj?d'O>Uj?>[?>[?O>Uj?d'>[?Ī>~?o>[?>[?Ī>~?ӼĪ>~?o>[?>[?zϼĪ>~?Ӽ>[?O>Uj?>[?zϼ>[?ň>Uj?ň>Uj?j'->[?ň>Uj?j'->[?6->[?->[?6>~?o->[?>~?o>~?Ӽ->[?>~?Ӽ->[?zϼ->[?->[?zϼň>Uj?->[?@AT1`?:~@7q?@-{>S!~@Ҩ>\|@7q?@(F@@˔?y @-{>S!~@(F@@4=@sh>?5G>˔?y @4=@sh>@@@>˻?>?5G>@@@>j4@ @@?g@˻?>j4@ @1`?:~@Ҩ>\|@@?g@Ҩ>\|@-{>S!~@cB|@<~z@-{>S!~@˔?y @3=7@cB|@˔?y @?5G>+=p/=3=7@?5G>˻?>x>+=p/=˻?>@?g@[Ӽ=H?x>@?g@Ҩ>\|@<~z@[Ӽ=H?7q?@1`?:~@@q@(F@@7q?@@q@4=@sh>(F@@@q@@@@>4=@sh>@q@j4@ @@@@>@q@1`?:~@j4@ @@q@<~z@cB|@V=܃@cB|@3=7@V=܃@3=7@+=p/=V=܃@+=p/=x>V=܃@x>[Ӽ=H?V=܃@[Ӽ=H?<~z@V=܃@`A6x{=9dӦQ 3Z̄x"<F=>1M>[? A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl13$  !"#PA@ pCylinde23AAT>>?)>>z ?)>>z ?)>>>?)>>z ?)>>aƐ?r=(E>aƐ?r=>z ?)>>aƐ?r=h>k?/[=>k?/[=(E>aƐ?r=h>k?/[=h>=?.[=>=?.[=>k?/[=h>=?.[=>W?r=(E>W?r=>=?.[=>W?r=>>?)>>>?)>(E>W?r=>>?)>>z ?)>0?z ?)>0?>?)>>z ?)>(E>aƐ?r=g?aƐ?r=0?z ?)>(E>aƐ?r=>k?/[=?m>k?/[=g?aƐ?r=>k?/[=>=?.[=?m>=?.[=?m>k?/[=>=?.[=(E>W?r=g?W?r=?m>=?.[=(E>W?r=>>?)>0?>?)>g?W?r=>z ?)>>>?)>>\T?r=>aƐ?r=>z ?)>>\T?r=h>k?/[=>aƐ?r=>\T?r=h>=?.[=h>k?/[=>\T?r=>W?r=h>=?.[=>\T?r=>>?)>>W?r=>\T?r=0?>?)>0?z ?)>g?\T?r=0?z ?)>g?aƐ?r=g?\T?r=g?aƐ?r=?m>k?/[=g?\T?r=?m>k?/[=?m>=?.[=g?\T?r=?m>=?.[=g?W?r=g?\T?r=g?W?r=0?>?)>g?\T?r=@AT"?*?"?*???*?"??"???*???"?@"?@???@"?*@"?*@?@?*@"?PUU@"?PUU@?*@?PUU@"?@"?@?PUU@??*??*?Kv?Kv?*?????Kv?*?Kv???@?@Kv??Kv?@?*@?*@Kv?@Kv?*@?PUU@?PUU@Kv?*@Kv?PUU@?@?@Kv?PUU@Kv?*?"?"?@?"?*?"?@@"??"?@*@"?@"?@PUU@"?*@"?@@"?PUU@"?@Kv?*?Kv?@"@*?Kv??Kv?@"@?Kv?@Kv?@"@@Kv?*@Kv?@"@*@Kv?PUU@Kv?@"@PUU@Kv?@Kv?@"@`A6=31>\T?= A$     !" "#$%&$&'+())*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS0AWVMtl14$  !"#PA@z pCylinde25Ai Axw>K?FZ?K?=KZ??*w>K?Fw> ?`:Z?&?`:Z?K?=Kw> ?`:w>K?K?@l?=Z?@l?ׯ@l?=w>㛎?D=Z?/?;㛎?D=w>??ˋ?w`:Z?Z?{`:Z??ˋ?w`:w>?FZ??=KZ?Z?{`:w>?Fw>㛎?yZ?/?+Z??=Kw>㛎?yw>@l? Z?@l?cؼZ?/?+w>@l? w>K?Fw>@l?`:w> ?`:w>K?Fw>@l?`:w>K? ?`:w>@l?`:w>K?@l?`:w>@l?=w>@l?`:w>㛎?D=w>@l?=w>@l?`:w>?㛎?D=w>@l?`:w>ˋ?w`:w>?@l?`:w>?Fw>ˋ?w`:w>@l?`:w>㛎?yw>?Fw>@l?`:w>@l? w>㛎?yw>@l?`:w>@l? w>@l?`:Z??*Z?K?=KZ?@l?`:Z?K?=KZ?&?`:Z?@l?`:Z?&?`:Z?K?"?~>Kv?Kv?~>"?*?"?*?Kv?~>Kv?*?"??"??Kv?*?Kv??"??"??Kv??Kv??"?aU?"?aU?Kv??Kv?aU?"?@"?@Kv?aU?Kv?@"?PU@"?PU@Kv?@Kv?PU@"?*@"?*@Kv?PU@Kv?*@"?@@"?@@Kv?*@Kv?@@"?PUU@"?PUU@Kv?@@Kv?PUU@"?j@"?j@Kv?PUU@Kv?j@"?@"?@Kv?j@Kv?~>"?"?@*?"?~>"?@?"?*?"?@?"??"?@aU?"??"?@@"?aU?"?@PU@"?@"?@*@"?PU@"?@@@"?*@"?@PUU@"?@@"?@j@"?PUU@"?@@"?j@"?@Kv?~>Kv?@"@~>Kv?*?Kv?@"@*?Kv??Kv?@"@?Kv??Kv?@"@?Kv?aU?Kv?@"@aU?Kv?@Kv?@"@@Kv?PU@Kv?@"@PU@Kv?*@Kv?@"@*@Kv?@@Kv?@"@@@Kv?PUU@Kv?@"@PUU@Kv?j@Kv?@"@j@Kv?@Kv?@"@`A6A==! K[>@l?`: A0     # !!"#$%&$&'()*(*+/,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw0AoVMtl150  !"#$%&'()*+,-./PA@" pSphere1_0A Ax+p?/=A ?Nu=q D?=5F?@AB@BCGDEEFGHIJHJKOLMMNOPQRPRSWTUUVWXYZXZ[_\]]^_`abcdefghijklmnopqrstuvw0AVMtl168  !"#$%&'()*+,-./01234567PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCylinder0 &)q̻!*??"&o>o>P= # # # #< #< #<0pCylinder1@ &!*"&???0pCylinder2@ &!*"&???0$$$DUMMY@pCylinder3 &)qM!*??"&o>o>P= # # # #< #< #<0pCylinder4@ &!*"&???0pCylinder5@ &!*"&???0 $$$DUMMY@pCylinder6 &)qP!*??"&o>o>P= # # # #< #< #<0 pCylinder7@  &!*"&???0 pCylinder8@  &!*"&???0 $$$DUMMY@pCylinder9 &)qjo!*??"&o>o>P= # # # #< #< #<0 pCylinde10@  &!*"&???0pCylinde11@  &!*"&???0$$$DUMMY@pCylinde12 &!*"&,?"="= # # # #< #< #<0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &_% z!*"&=<> # # # #< #< #<0pCylinde15@ &!*"&???0$$$DUMMY@pCylinde16 &Ύ%L[!*I@?"&wˆ # # # #< #< #<0pCylinde17@ &!*"&???0$$$DUMMY@pCylinde18 &M>w!*"&x{=x"<= # # # #< #< #<0pCylinde19@ &!*"&???0$$$DUMMY@pCylinde20 &M>[!*I@?"&x{x"F # # # #< #< #<0pCylinde21@ &!*"&???0$$$DUMMY@pCylinde22 &>=\T!*?"&=<= # # # #< #< #<0pCylinde23@ &!*"&???0$$$DUMMY@pCylinde24 &K[>^:@l!*"&A==!= # # # #< #< #<0pCylinde25@ &!*"&???0$$$DUMMY@pSphere01 &A Au=ܽ!*Ė="&Dn=@<]O< # # # #< #< #<0pSphere1_0@ &!*"&???gl-117-1.3.2/models/trsam.3ds0000755000175000017500000010516610145416156014734 0ustar cedriccedricMMv ==n>= 01 - Standard  0 @0 A0P0R0S00 ?20dCAMOUFL.TGAQS VMtl02   0 @0A0P0R0S00 ?03 - Standard  0 @0 A0P0R0S00 ?00dWHEEL.TGAQS 07 - Standard  0 @0 A0P0R0S00 ?30dGREENDRK.TGAQS VMtl16 >>>  >>>0 @0A0P0R0S00 ? VMtl18 >>>  >>>0 @0A0P0R0S00 ? ?@MpCube1_0GeA<A$„n`>뽺{b^뽺{b^O>„n`>O>MZI>?>.ZTG?>">PG?>">I>?>>n`>O> >ub^O> >ub^>n`>>n`> >ub^뽺{b^„n`>뽺{b^ >ub^ >ub^O>{b^O>>n`>„n`>„n`>O>>n`>O>{b^O> >ub^O>">PG?>.ZTG?> >ub^O>>n`>O>">I>?>">PG?>>n`>O>„n`>O>MZI>?>">I>?>@A($:p9@?Dd9D?x>:x>r?d>W=d>W=M;r?%;@?x>:x>:Dd9C?p9:N_9@?N_9@? ?: ?: ?:N_9q?N_9q? ?@?N_9@? ?=> ?=>N_9q? ?q?N_9??M;??d>:x>@?x>r? ?W= ?=>N_9=> ?:d>:%;`A6b 4h߾H>㊛m³o:o:o: A      !" "#0A:01 - Standard PAN@pCube1_1GeAA8„n`>O>{b^O>.ZTG?>MZI>?>`A6b 4h߾H>㊛m³o:o:o: A90AVMtl02PA@ pCylinder1Ap Ad=Jp>0PΑ\{RΑ<8>\{R=8>0PΑ\{RD#Jp>\{RD#8>\{RΑ<8>\{RD#Jp>\{RJp>0P8>0PD#8>\{RJp>0PoKp>to8>t8>0PoKp>tKp>2 8>2o8>tKp>2D#Kp>YD# 8>Y 8>2D#Kp>YΑYΑ< 8>YD# 8>YΑY=Kp>2= 8>2Α< 8>Y=Kp>2A=Kp>tA=8>t潡= 8>2A=Kp>t潡=Jp>0P=8>0PA=8>tΑ\{R=Jp>0PoKp>tD#Jp>\{RΑ\{RoKp>tJp>0PD#Jp>\{RoKp>toKp>tJp>0PoKp>tKp>2oKp>toKp>tD#Kp>YKp>2oKp>tΑYD#Kp>YoKp>t潡=Kp>2ΑYoKp>tA=Kp>t潡=Kp>2oKp>t潡=Jp>0PA=Kp>toKp>t潡=8>0PΑ<8>\{Ro8>tΑ<8>\{RD#8>\{Ro8>tD#8>\{R8>0Po8>t8>0Po8>to8>to8>t 8>2o8>t 8>2D# 8>Yo8>tD# 8>YΑ< 8>Yo8>tΑ< 8>Y= 8>2o8>t潡= 8>2A=8>to8>tA=8>t潡=8>0Po8>t@A(dlsg?O?ʃ'?C?ʃ'?C?lsg?O?ʃ'?C?s>D?s>D?ʃ'?C?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:isg?C>isg?C>ƃ'?:isg?C>D?>D?>isg?C>D?>lsg?O?lsg?O?D?>ʃ'?C?lsg?O???s>D?ʃ'?C???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??isg?C>ƃ'?:??D?>isg?C>??lsg?O?D?>??lsg?O?ʃ'?C???ʃ'?C?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:isg?C>??isg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>ko5}F>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder3Ap Ad= 0PΑ< T{RΑ<4zpT{R=4zp0PΑ< T{RD# T{RD#4zpT{RΑ<4zpT{RD# T{R 0P4zp0PD#4zpT{R 0Poto4zps4zp0Pot23zp2o4zps2D#YD#3zpY3zp2D#YΑ<YΑ<3zpYD#3zpYΑ<Y=2=3zp2Α<3zpY=2A=tA=4zps潡=3zp2A=t潡= 0P=4zp0PA=4zpsΑ< T{R= 0PotD# T{RΑ< T{Rot 0PD# T{Rotot 0Pot2ototD#Y2otΑ<YD#Yot潡=2Α<YotA=t潡=2ot潡= 0PA=tot潡=4zp0PΑ<4zpT{Ro4zpsΑ<4zpT{RD#4zpT{Ro4zpsD#4zpT{R4zp0Po4zps4zp0Po4zpso4zpso4zps3zp2o4zps3zp2D#3zpYo4zpsD#3zpYΑ<3zpYo4zpsΑ<3zpY=3zp2o4zps潡=3zp2A=4zpso4zpsA=4zps潡=4zp0Po4zps@A(dlsg?O?ʃ'?B?ʃ'?B?lsg?O?ʃ'?B?s>D?s>D?ʃ'?B?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:isg?C>isg?C>ƃ'?:isg?C>D?>D?>isg?C>D?>lsg?O?lsg?O?D?>ʃ'?B?lsg?O???s>D?ʃ'?B???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??isg?C>ƃ'?:??D?>isg?C>??lsg?O?D?>??lsg?O?ʃ'?B???ʃ'?B?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:isg?C>??isg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>ko5Ft AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ApCube2_0GeA0A(jN=СI>N=IN=IEjN=СI>EjN=СI>EN=IE֟?СIE֟?I>E֟?I>E֟?СIE֟?СI֟?I>֟?I>֟?СIN=IjN=СI>N=I֟?СI֟?СIEN=IE֟?I>jN=СI>jN=СI>E֟?I>E`A6S 3ܡɾ-=erG&?<޽ A     0A.07 - Standard  PA6@ pCylinder5Ap Ad!̙?kJ0P?kJ\{R?z\{R!̙?z0P?kJ\{R]Ŋ?kJ\{R]Ŋ?z\{R?z\{R]Ŋ?kJ\{R ?kJ0P ?z0P]Ŋ?z\{R ?kJ0P{?kJu{?zt ?z0P{?kJu ?kJ2 ?z2{?zt ?kJ2]Ŋ?kJY]Ŋ?zY ?z2]Ŋ?kJY?kJY?zY]Ŋ?zY?kJY!̙?kJ2!̙?z2?zY!̙?kJ2<]?kJu<]?zt!̙?z2<]?kJu!̙?kJ0P!̙?z0P<]?zt?kJ\{R!̙?kJ0P?kJu]Ŋ?kJ\{R?kJ\{R?kJu ?kJ0P]Ŋ?kJ\{R?kJu{?kJu ?kJ0P?kJu ?kJ2{?kJu潖?kJu]Ŋ?kJY ?kJ2?kJu?kJY]Ŋ?kJY?kJu!̙?kJ2?kJY?kJu<]?kJu!̙?kJ2?kJu!̙?kJ0P<]?kJu潖?kJu!̙?z0P?z\{R?zt?z\{R]Ŋ?z\{R?zt]Ŋ?z\{R ?z0P?zt ?z0P{?zt潖?zt{?zt ?z2?zt ?z2]Ŋ?zY?zt]Ŋ?zY?zY?zt?zY!̙?z2?zt!̙?z2<]?zt潖?zt<]?zt!̙?z0P?zt@A(ddsg?O?̃'?B?̃'?B?dsg?O?̃'?B?p>D?p>D?̃'?B?p>D?d=O?d=O?p>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:bsg?C>bsg?C>ȃ'?:bsg?C>D?>D?>bsg?C>D?>dsg?O?dsg?O?D?>̃'?B?dsg?O???p>D?̃'?B???d=O?p>D???:?d=O???d=C>:???h>:d=C>??ȃ'?:h>:??bsg?C>ȃ'?:??D?>bsg?C>??dsg?O?D?>??dsg?O?̃'?B???̃'?B?p>D???p>D?d=O???d=O?:???:?d=C>??d=C>h>:??h>:ȃ'?:??ȃ'?:bsg?C>??bsg?C>D?>??D?>dsg?O???`A6ϡ>ϡ>k?tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder7Ap Ad!̙?t>0P?t>\{R?^L>\{R!̙?^L>0P?t>\{R]Ŋ?t>\{R]Ŋ?^L>\{R?^L>\{R]Ŋ?t>\{R ?t>0P ?^L>0P]Ŋ?^L>\{R ?t>0P{?t>t{?^L>t ?^L>0P{?t>t ?t>2 ?^L>2{?^L>t ?t>2]Ŋ?t>Y]Ŋ?^L>Y ?^L>2]Ŋ?t>Y?t>Y?^L>Y]Ŋ?^L>Y?t>Y!̙?t>2!̙?^L>2?^L>Y!̙?t>2<]?t>t<]?^L>t!̙?^L>2<]?t>t!̙?t>0P!̙?^L>0P<]?^L>t?t>\{R!̙?t>0P?t>t]Ŋ?t>\{R?t>\{R?t>t ?t>0P]Ŋ?t>\{R?t>t{?t>t ?t>0P?t>t ?t>2{?t>t潖?t>t]Ŋ?t>Y ?t>2?t>t?t>Y]Ŋ?t>Y?t>t!̙?t>2?t>Y?t>t<]?t>t!̙?t>2?t>t!̙?t>0P<]?t>t潖?t>t!̙?^L>0P?^L>\{R?^L>t?^L>\{R]Ŋ?^L>\{R?^L>t]Ŋ?^L>\{R ?^L>0P?^L>t ?^L>0P{?^L>t潖?^L>t{?^L>t ?^L>2?^L>t ?^L>2]Ŋ?^L>Y?^L>t]Ŋ?^L>Y?^L>Y?^L>t?^L>Y!̙?^L>2?^L>t!̙?^L>2<]?^L>t潖?^L>t<]?^L>t!̙?^L>0P?^L>t@A(ddsg?O?̃'?C?̃'?C?dsg?O?̃'?C?p>D?p>D?̃'?C?p>D?d=O?d=O?p>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:bsg?C>bsg?C>ȃ'?:bsg?C>D?>D?>bsg?C>D?>dsg?O?dsg?O?D?>̃'?C?dsg?O???p>D?̃'?C???d=O?p>D???:?d=O???d=C>:???h>:d=C>??ȃ'?:h>:??bsg?C>ȃ'?:??D?>bsg?C>??dsg?O?D?>??dsg?O?̃'?C???̃'?C?p>D???p>D?d=O???d=O?:???:?d=C>??d=C>h>:??h>:ȃ'?:??ȃ'?:bsg?C>??bsg?C>D?>??D?>dsg?O???`A6ϡ>ϡ>k?v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder9Ap Adf0?kJ0P"?kJ\{R"?z\{Rf0?z0P"?kJ\{RkJuČ>zt潖?z0PČ>kJu潖?kJ2?z2Č>zt潖?kJ2kJu潖?kJ0P?kJu潖?kJ2Č>kJu潭?kJuzt潭?ztČ>zt潖?z2?zt潖?z2D?v>D?ȃ'?C?v>D?d=O?d=O?v>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>o>:o>:d=C>o>:Ń'?:Ń'?:o>:Ń'?:jsg?C>jsg?C>Ń'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>ȃ'?C?lsg?O???v>D?ȃ'?C???d=O?v>D???:?d=O???d=C>:???o>:d=C>??Ń'?:o>:??jsg?C>Ń'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?ȃ'?C???ȃ'?C?v>D???v>D?d=O???d=O?:???:?d=C>??d=C>o>:??o>:Ń'?:??Ń'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k?tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde11Ap AdF0?t>0P3"?t>\{R3"?^L>\{RF0?^L>0P3"?t>\{RQ9?t>\{RQ9?^L>\{R3"?^L>\{RQ9?t>\{R?t>0P?^L>0PQ9?^L>\{R?t>0PL>t>tL>^L>t潫?^L>0PL>t>t潫?t>2?^L>2L>^L>t潫?t>2Q9?t>YQ9?^L>Y?^L>2Q9?t>Y3"?t>Y3"?^L>YQ9?^L>Y3"?t>YF0?t>2F0?^L>23"?^L>YF0?t>2 i5?t>t i5?^L>tF0?^L>2 i5?t>tF0?t>0PF0?^L>0P i5?^L>t3"?t>\{RF0?t>0P‡?t>tQ9?t>\{R3"?t>\{R‡?t>t潫?t>0PQ9?t>\{R‡?t>tL>t>t潫?t>0P‡?t>t潫?t>2L>t>t‡?t>tQ9?t>Y?t>2‡?t>t3"?t>YQ9?t>Y‡?t>tF0?t>23"?t>Y‡?t>t i5?t>tF0?t>2‡?t>tF0?t>0P i5?t>t‡?t>tF0?^L>0P3"?^L>\{R‡?^L>t3"?^L>\{RQ9?^L>\{R‡?^L>tQ9?^L>\{R?^L>0P‡?^L>t潫?^L>0PL>^L>t‡?^L>tL>^L>t潫?^L>2‡?^L>t潫?^L>2Q9?^L>Y‡?^L>tQ9?^L>Y3"?^L>Y‡?^L>t3"?^L>YF0?^L>2‡?^L>tF0?^L>2 i5?^L>t‡?^L>t i5?^L>tF0?^L>0P‡?^L>t@A(dlsg?O?Ƀ'?B?Ƀ'?B?lsg?O?Ƀ'?B?w>D?w>D?Ƀ'?B?w>D?d=O?d=O?w>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>p>:p>:d=C>p>:Ń'?:Ń'?:p>:Ń'?:jsg?C>jsg?C>Ń'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>Ƀ'?B?lsg?O???w>D?Ƀ'?B???d=O?w>D???:?d=O???d=C>:???p>:d=C>??Ń'?:p>:??jsg?C>Ń'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?Ƀ'?B???Ƀ'?B?w>D???w>D?d=O???d=O?:???:?d=C>??d=C>p>:??p>:Ń'?:??Ń'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k‡?v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde13Ap AdP>t>0Po>t>\{Ro>^L>\{RP>^L>0Po>t>\{R5>t>\{R5>^L>\{Ro>^L>\{R5>t>\{RT>t>0PT>^L>0P5>^L>\{RT>t>0P!>t>t!>^L>t潉T>^L>0P!>t>t潉T>t>2T>^L>2!>^L>t潉T>t>25>t>Y5>^L>YT>^L>25>t>Yo>t>Yo>^L>Y5>^L>Yo>t>YP>t>2P>^L>2o>^L>YP>t>2M>t>tM>^L>tP>^L>2M>t>tP>t>0PP>^L>0PM>^L>t潚o>t>\{RP>t>0Pһ>t>t5>t>\{Ro>t>\{Rһ>t>t潉T>t>0P5>t>\{Rһ>t>t!>t>t潉T>t>0Pһ>t>t潉T>t>2!>t>t潷һ>t>t5>t>YT>t>2һ>t>t潚o>t>Y5>t>Yһ>t>tP>t>2o>t>Yһ>t>tM>t>tP>t>2һ>t>tP>t>0PM>t>t潷һ>t>tP>^L>0Po>^L>\{Rһ>^L>t潚o>^L>\{R5>^L>\{Rһ>^L>t5>^L>\{RT>^L>0Pһ>^L>t潉T>^L>0P!>^L>t潷һ>^L>t!>^L>t潉T>^L>2һ>^L>t潉T>^L>25>^L>Yһ>^L>t5>^L>Yo>^L>Yһ>^L>t潚o>^L>YP>^L>2һ>^L>tP>^L>2M>^L>t潷һ>^L>tM>^L>tP>^L>0Pһ>^L>t@A(dlsg?O?˃'?B?˃'?B?lsg?O?˃'?B?r>D?r>D?˃'?B?r>D?d=O?d=O?r>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>j>:j>:d=C>j>:ǃ'?:ǃ'?:j>:ǃ'?:jsg?C>jsg?C>ǃ'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>˃'?B?lsg?O???r>D?˃'?B???d=O?r>D???:?d=O???d=C>:???j>:d=C>??ǃ'?:j>:??jsg?C>ǃ'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?˃'?B???˃'?B?r>D???r>D?d=O???d=O?:???:?d=C>??d=C>j>:??j>:ǃ'?:??ǃ'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>kһ>v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde15Ap AdP>kJ0Po>kJ\{Ro>z\{RP>z0Po>kJ\{R5>kJ\{R5>z\{Ro>z\{R5>kJ\{RT>kJ0PT>z0P5>z\{RT>kJ0P!>kJu!>zt潉T>z0P!>kJu潉T>kJ2T>z2!>zt潉T>kJ25>kJY5>zYT>z25>kJYo>kJYo>zY5>zYo>kJYP>kJ2P>z2o>zYP>kJ2M>kJuM>ztP>z2M>kJuP>kJ0PP>z0PM>zt潚o>kJ\{RP>kJ0Pһ>kJu5>kJ\{Ro>kJ\{Rһ>kJu潉T>kJ0P5>kJ\{Rһ>kJu!>kJu潉T>kJ0Pһ>kJu潉T>kJ2!>kJu潷һ>kJu5>kJYT>kJ2һ>kJu潚o>kJY5>kJYһ>kJuP>kJ2o>kJYһ>kJuM>kJuP>kJ2һ>kJuP>kJ0PM>kJu潷һ>kJuP>z0Po>z\{Rһ>zt潚o>z\{R5>z\{Rһ>zt5>z\{RT>z0Pһ>zt潉T>z0P!>zt潷һ>zt!>zt潉T>z2һ>zt潉T>z25>zYһ>zt5>zYo>zYһ>zt潚o>zYP>z2һ>ztP>z2M>zt潷һ>ztM>ztP>z0Pһ>zt@A(dlsg?O?˃'?C?˃'?C?lsg?O?˃'?C?r>D?r>D?˃'?C?r>D?d=O?d=O?r>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>j>:j>:d=C>j>:ǃ'?:ǃ'?:j>:ǃ'?:jsg?C>jsg?C>ǃ'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>˃'?C?lsg?O???r>D?˃'?C???d=O?r>D???:?d=O???d=C>:???j>:d=C>??ǃ'?:j>:??jsg?C>ǃ'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?˃'?C???˃'?C?r>D???r>D?d=O???d=O?:???:?d=C>??d=C>j>:??j>:ǃ'?:??ǃ'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>kһ>tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@pCube3_0GeAA(H>h_>f H>h_g H>h_CE=H>h_>CE=B>w H>I >E>z HI >uW?i HI >tW? H>I >h?h_>CE=h?h_CE=h?h_g h?h_>f h?h_>f h?h_g H>h_g H>h_>f H>h_g h?h_g h?h_CE=H>h_CE=h?h_>f H>h_>f H>h_>CE=h?h_>CE=H>h_>CE=H>h_CE=E>z HI >B>w H>I >H>h_CE=h?h_CE=uW?i HI >E>z HI >h?h_CE=h?h_>CE=tW? H>I >uW?i HI >h?h_>CE=H>h_>CE=B>w H>I >tW? H>I >@AH(.z9dO*:3o+??*:5o+?lM?9pM?Dz"?Ɠ?=Ɠ?=1>Dz"?1>3o+?pM?w9lM?C9?*:5o+?dO*:.z91=*:3o+?1=*:3o+?Q?.z9Q?|9Q?|91=*:P>1=*:P>Q?3o+?1=*:3o+?Q?V>Q?V>1=*:3o+?Q?w9Q?=Ɠ?Dz"?Ɠ?P>Q?P>1=*:3o+?1>3o+?Ɠ?w91=*:3o+?1=*:Dz"?1>=1>V>1=*:V>Q?|9Ɠ?|91>`A6b 4h߾>Vlp> A<     !" "#$%&$&'0A>01 - Standard PAV@ApCube6_0GeA0A( 8?5~>44?u*钕=[?u*=ݦU?5𽳭>ݦU?5𽳭>[?u*=[?/>=ݦU?=>ݦU?=>[?/>=44?/>钕= 8?=~> 8?=~>44?/>钕=44?u*钕= 8?5~>44?u*钕=44?/>钕=[?/>=[?u*= 8?=~> 8?5~>ݦU?5𽳭>ݦU?=>`A6E\;4g>J;PrG?+!;E@> A     0A.07 - Standard  PA6@ApCube7_0GeA0A(BH>>Dz>I[=]/>I=:$>@>:$>@>]/>I=]/> N>=:$>t>?>:$>t>?>]/> N>=Dz> N>]=BH>t>>BH>t>>Dz> N>]=Dz>I[=BH>>Dz>I[=Dz> N>]=]/> N>=]/>I=BH>t>>BH>>:$>@>:$>t>?>`A6M;t3=:w̾>+!;E@> A     0A.07 - Standard  PA6@pCube5_0GeAAN>l<;?>k?l<>ٌ?l<>>l<?>l<?ٌ?l<>ٌ? A>>> A>?> A>?ٌ? A>>k? A>>N> A>:?>N> A>:?>k? A>>k?l<>N>l<;?>`A6D00?8A6-==_-Z- A    0A&07 - StandardPA&@ pCube5_1GeAAhk?l<>k? A>>ٌ? A>>ٌ?l<>N> A>:?>N>l<;?>>l<?> A>?`A6D00?8A6-==_-Z- AU0AVMtl16PA@pCube4_0GeAAN>AG;?>k?AG>ٌ?AG>>BG?>BG?ٌ?AG>ٌ? /ϼ>> /ϼ?> /ϼ?ٌ? /ϼ>k?/ϼ>N>/ϼ;?>N>/ϼ;?>k?/ϼ>k?AG>N>AG;?>`A6D00?8A6-==_-Z- A    0A&07 - StandardPA&@ pCube4_1GeAAhk?AG>k?/ϼ>ٌ? /ϼ>ٌ?AG>N>/ϼ;?>N>AG;?>>BG?> /ϼ?`A6D00?8A6-==_-Z- AU0AVMtl18PA MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &!*??"&h>H>㊛> # # # #< #< #<0pCube1_0Ge@ &!*"&???0pCube1_1Ge@ &!*"&???0$$$DUMMY@pCylinder0 &ot5}F!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder2 &ot5F>!*"&ϡ>ϡ>k= # # # #< #< #<0 pCylinder3@ &!*"&???0 $$$DUMMY@pCube02 &G&?<޽!*??"&ܡ>-=e? # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCylinder4 &?tt>!*"&ϡ>ϡ>k= # # # #< #< #<0 pCylinder5@  &!*"&???0$$$DUMMY@pCylinder6 &?tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder7@ &!*"&???0$$$DUMMY@pCylinder8 &?tt>!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder9@ &!*"&???0$$$DUMMY@pCylinde10 &‡?tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde11@ &!*"&???0$$$DUMMY@pCylinde12 &һ>tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &һ>tt>!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde15@ &!*"&???0$$$DUMMY@pCube03 &p>!*??"&h>>V> # # # #< #< #<0pCube3_0Ge@ &!*"&???0$$$DUMMY@pCube04 &PrG?E@>+!!*??"&g>З>> # # # #< #< #<0pCube6_0Ge@ &!*"&???0$$$DUMMY@pCube05 &>E@>+!!*??"&t><=w> # # # #< #< #<0pCube7_0Ge@ &!*"&???0$$$DUMMY@pCube06 &Z-Խ!*¸>?"&~;?=_-> # # # #< #< #<0pCube5_0Ge@ &!*"&???0 pCube5_1Ge@ &!*"&???0!$$$DUMMY@pCube07 &Z-#g=!*¸>?"&~;?=_-> # # # #< #< #<0"pCube4_0Ge@! &!*"&???0#pCube4_1Ge@! &!*"&???gl-117-1.3.2/models/truck1.3ds0000644000175000017500000010114210145416156015002 0ustar cedriccedricMMb ==&n>= 01 - Standard  0 @0 A0P0R0S00 ?20dCAMOUFL.TGAQS VMtl02   0 @0A0P0R0S00 ?03 - Standard  0 @0 A0P0R0S00 ?00dWHEEL.TGAQS 07 - Standard  0 @0 A0P0R0S00 ?30dGREENDRK.TGAQS VMtl12  0 @0A0P0R0S00 ? ?@MpCube1_0GeA<A$gB,n`>_B,|b^_B,|b^$>gB,n`>$>/tI>>}/tUG>t|*>OG>k|*>I>>N.>n`>$>N.>tb^$>N.>ub^N.>n`>N.>n`>N.>ub^_B,|b^gB,n`>_B,|b^N.>ub^N.>tb^$>_B,|b^$>N.>n`>gB,n`>gB,n`>$>N.>n`>$>_B,|b^$>N.>tb^$>t|*>OG>}/tUG>N.>tb^$>N.>n`>$>k|*>I>>t|*>OG>N.>n`>$>gB,n`>$>/tI>>k|*>I>>@A($:L9@??9C?v>:x>r?>W=>W=?;r?@;@?x>:v>:?9C?L9::9@?9=9@?%Q&?:$Q&?:%Q&?:9=9q?9=9q?%Q&?@?:9@?$Q&?=>$Q&?=>:9q?%Q&?q?9=9@??;@?>:v>@?x>r?$Q&?W="Q&?=>:9=>$Q&?:>:@;`A6b 4h߾s>Hسo:o:o: A      !" "#0A:01 - Standard PAN@pCube1_1GeAA8gB,n`>$>_B,|b^$>}/tUG>/tI>>`A6b 4h߾s>Hسo:o:o: A90AVMtl02PA@ pCylinder1Ap Ad=Kp>2PΑd{RΑ<8>d{R=8>0PΑd{RD#Jp>d{RD#8>d{RΑ<8>d{RD#Jp>d{RKp>2P8>0PD#8>d{RKp>2PoJp>to8>u8>0PoJp>tJp>28>2o8>uJp>2D#Jp>YD#8>Y8>2D#Jp>YΑYΑ<8>YD#8>YΑY=Jp>2=8>2Α<8>Y=Jp>2A=Jp>tA=8>u潡=8>2A=Jp>t潡=Kp>2P=8>0PA=8>uΑd{R=Kp>2PoJp>tD#Jp>d{RΑd{RoJp>tKp>2PD#Jp>d{RoJp>toJp>tKp>2PoJp>tJp>2oJp>toJp>tD#Jp>YJp>2oJp>tΑYD#Jp>YoJp>t潡=Jp>2ΑYoJp>tA=Jp>t潡=Jp>2oJp>t潡=Kp>2PA=Jp>toJp>t潡=8>0PΑ<8>d{Ro8>uΑ<8>d{RD#8>d{Ro8>uD#8>d{R8>0Po8>u8>0Po8>uo8>uo8>u8>2o8>u8>2D#8>Yo8>uD#8>YΑ<8>Yo8>uΑ<8>Y=8>2o8>u潡=8>2A=8>uo8>uA=8>u潡=8>0Po8>u@A(dlsg?O?ʃ'?B?ʃ'?B?lsg?O?ʃ'?B?s>D?s>D?ʃ'?B?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:isg?C>isg?C>ƃ'?:isg?C>D?>D?>isg?C>D?>lsg?O?lsg?O?D?>ʃ'?B?lsg?O???s>D?ʃ'?B???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??isg?C>ƃ'?:??D?>isg?C>??lsg?O?D?>??lsg?O?ʃ'?B???ʃ'?B?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:isg?C>??isg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>ko5}F>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder3Ap Ad=2PΑ<d{RΑ<4zpd{R=4zp0PΑ<d{RD#d{RD#4zpd{RΑ<4zpd{RD#d{R2P4zp0PD#4zpd{R2Po to3zpu4zp0Po t 24zp2o3zpu 2D# YD#4zpY4zp2D# YΑ< YΑ<4zpYD#4zpYΑ< Y= 2=4zp2Α<4zpY= 2A= tA=3zpu潡=4zp2A= t潡=2P=4zp0PA=3zpuΑ<d{R=2Po tD#d{RΑ<d{Ro t2PD#d{Ro to t2Po t 2o to tD# Y 2o tΑ< YD# Yo t潡= 2Α< Yo tA= t潡= 2o t潡=2PA= to t潡=4zp0PΑ<4zpd{Ro3zpuΑ<4zpd{RD#4zpd{Ro3zpuD#4zpd{R4zp0Po3zpu4zp0Po3zpuo3zpuo3zpu4zp2o3zpu4zp2D#4zpYo3zpuD#4zpYΑ<4zpYo3zpuΑ<4zpY=4zp2o3zpu潡=4zp2A=3zpuo3zpuA=3zpu潡=4zp0Po3zpu@A(dlsg?O?ʃ'?B?ʃ'?B?lsg?O?ʃ'?B?s>D?s>D?ʃ'?B?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:isg?C>isg?C>ƃ'?:isg?C>D?>D?>isg?C>D?>lsg?O?lsg?O?D?>ʃ'?B?lsg?O???s>D?ʃ'?B???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??isg?C>ƃ'?:??D?>isg?C>??lsg?O?D?>??lsg?O?ʃ'?B???ʃ'?B?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:isg?C>??isg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>ko5Ft AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ApCube2_0GeA0A('>͡I>ã'>Iã'>IE'>͡I>F'>͡I>Fã'>IE?͡IE?I>F?I>F?͡IE?͡I?I>?I>?͡Iã'>I'>͡I>ã'>I?͡I?͡IEã'>IE?I>'>͡I>'>͡I>F?I>F`A6S 3ܡɾ-=^g?<޽ A     0A.07 - Standard  PA6@ pCylinder5Ap Ad?kJ0PW?kJ\{RW?z\{R?z0PW?kJ\{R嶟?kJ\{R嶟?z\{RW?z\{R嶟?kJ\{R?kJ0P?z0P嶟?z\{R?kJ0Pxm?kJsxm?zt潓?z0Pxm?kJs潓?kJ2?z2xm?zt潓?kJ2嶟?kJY嶟?zY?z2嶟?kJYW?kJYW?zY嶟?zYW?kJY?kJ2?z2W?zY?kJ2N?kJsN?zt潩?z2N?kJs潩?kJ0P?z0PN?ztW?kJ\{R?kJ0Pޣ?kJs嶟?kJ\{RW?kJ\{Rޣ?kJs潓?kJ0P嶟?kJ\{Rޣ?kJsxm?kJs潓?kJ0Pޣ?kJs潓?kJ2xm?kJsޣ?kJs嶟?kJY?kJ2ޣ?kJsW?kJY嶟?kJYޣ?kJs潩?kJ2W?kJYޣ?kJsN?kJs潩?kJ2ޣ?kJs潩?kJ0PN?kJsޣ?kJs潩?z0PW?z\{Rޣ?ztW?z\{R嶟?z\{Rޣ?zt嶟?z\{R?z0Pޣ?zt潓?z0Pxm?ztޣ?ztxm?zt潓?z2ޣ?zt潓?z2嶟?zYޣ?zt嶟?zYW?zYޣ?ztW?zY?z2ޣ?zt潩?z2N?ztޣ?ztN?zt潩?z0Pޣ?zt@A(ddsg?O?̃'?B?̃'?B?dsg?O?̃'?B?p>C?p>C?̃'?B?p>C?d=O?d=O?p>C?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:asg?C>asg?C>ȃ'?:asg?C>D?>D?>asg?C>D?>dsg?O?dsg?O?D?>̃'?B?dsg?O???p>C?̃'?B???d=O?p>C???:?d=O???d=C>:???h>:d=C>??ȃ'?:h>:??asg?C>ȃ'?:??D?>asg?C>??dsg?O?D?>??dsg?O?̃'?B???̃'?B?p>C???p>C?d=O???d=O?:???:?d=C>??d=C>h>:??h>:ȃ'?:??ȃ'?:asg?C>??asg?C>D?>??D?>dsg?O???`A6ϡ>ϡ>kޣ?tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder7Ap Ad?t>0PW?t>\{RW?^L>\{R?^L>0PW?t>\{R嶟?t>\{R嶟?^L>\{RW?^L>\{R嶟?t>\{R?t>0P?^L>0P嶟?^L>\{R?t>0Pxm?t>txm?^L>t潓?^L>0Pxm?t>t潓?t>2?^L>2xm?^L>t潓?t>2嶟?t>Y嶟?^L>Y?^L>2嶟?t>YW?t>YW?^L>Y嶟?^L>YW?t>Y?t>2?^L>2W?^L>Y?t>2N?t>tN?^L>t潩?^L>2N?t>t潩?t>0P?^L>0PN?^L>tW?t>\{R?t>0Pޣ?t>t嶟?t>\{RW?t>\{Rޣ?t>t潓?t>0P嶟?t>\{Rޣ?t>txm?t>t潓?t>0Pޣ?t>t潓?t>2xm?t>tޣ?t>t嶟?t>Y?t>2ޣ?t>tW?t>Y嶟?t>Yޣ?t>t潩?t>2W?t>Yޣ?t>tN?t>t潩?t>2ޣ?t>t潩?t>0PN?t>tޣ?t>t潩?^L>0PW?^L>\{Rޣ?^L>tW?^L>\{R嶟?^L>\{Rޣ?^L>t嶟?^L>\{R?^L>0Pޣ?^L>t潓?^L>0Pxm?^L>tޣ?^L>txm?^L>t潓?^L>2ޣ?^L>t潓?^L>2嶟?^L>Yޣ?^L>t嶟?^L>YW?^L>Yޣ?^L>tW?^L>Y?^L>2ޣ?^L>t潩?^L>2N?^L>tޣ?^L>tN?^L>t潩?^L>0Pޣ?^L>t@A(ddsg?O?̃'?B?̃'?B?dsg?O?̃'?B?p>C?p>C?̃'?B?p>C?d=O?d=O?p>C?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:asg?C>asg?C>ȃ'?:asg?C>D?>D?>asg?C>D?>dsg?O?dsg?O?D?>̃'?B?dsg?O???p>C?̃'?B???d=O?p>C???:?d=O???d=C>:???h>:d=C>??ȃ'?:h>:??asg?C>ȃ'?:??D?>asg?C>??dsg?O?D?>??dsg?O?̃'?B???̃'?B?p>C???p>C?d=O???d=O?:???:?d=C>??d=C>h>:??h>:ȃ'?:??ȃ'?:asg?C>??asg?C>D?>??D?>dsg?O???`A6ϡ>ϡ>kޣ?v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder9Ap Adf0?kJ0P"?kJ\{R"?z\{Rf0?z0P"?kJ\{RkJsČ>zt潖?z0PČ>kJs潖?kJ2?z2Č>zt潖?kJ2kJs潖?kJ0P?kJs潖?kJ2Č>kJs潭?kJszt潭?ztČ>zt潖?z2?zt潖?z2D?v>D?ȃ'?B?v>D?d=O?d=O?v>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>o>:o>:d=C>o>:Ń'?:Ń'?:o>:Ń'?:jsg?C>jsg?C>Ń'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>ȃ'?B?lsg?O???v>D?ȃ'?B???d=O?v>D???:?d=O???d=C>:???o>:d=C>??Ń'?:o>:??jsg?C>Ń'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?ȃ'?B???ȃ'?B?v>D???v>D?d=O???d=O?:???:?d=C>??d=C>o>:??o>:Ń'?:??Ń'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k?tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde11Ap AdF0?t>0P3"?t>\{R3"?^L>\{RF0?^L>0P3"?t>\{RQ9?t>\{RQ9?^L>\{R3"?^L>\{RQ9?t>\{R?t>0P?^L>0PQ9?^L>\{R?t>0PL>t>tL>^L>t潫?^L>0PL>t>t潫?t>2?^L>2L>^L>t潫?t>2Q9?t>YQ9?^L>Y?^L>2Q9?t>Y3"?t>Y3"?^L>YQ9?^L>Y3"?t>YF0?t>2F0?^L>23"?^L>YF0?t>2 i5?t>t i5?^L>tF0?^L>2 i5?t>tF0?t>0PF0?^L>0P i5?^L>t3"?t>\{RF0?t>0P‡?t>tQ9?t>\{R3"?t>\{R‡?t>t潫?t>0PQ9?t>\{R‡?t>tL>t>t潫?t>0P‡?t>t潫?t>2L>t>t‡?t>tQ9?t>Y?t>2‡?t>t3"?t>YQ9?t>Y‡?t>tF0?t>23"?t>Y‡?t>t i5?t>tF0?t>2‡?t>tF0?t>0P i5?t>t‡?t>tF0?^L>0P3"?^L>\{R‡?^L>t3"?^L>\{RQ9?^L>\{R‡?^L>tQ9?^L>\{R?^L>0P‡?^L>t潫?^L>0PL>^L>t‡?^L>tL>^L>t潫?^L>2‡?^L>t潫?^L>2Q9?^L>Y‡?^L>tQ9?^L>Y3"?^L>Y‡?^L>t3"?^L>YF0?^L>2‡?^L>tF0?^L>2 i5?^L>t‡?^L>t i5?^L>tF0?^L>0P‡?^L>t@A(dlsg?O?Ƀ'?B?Ƀ'?B?lsg?O?Ƀ'?B?w>C?w>C?Ƀ'?B?w>C?d=O?d=O?w>C?d=O?:?:?d=O?:?d=C>d=C>:?d=C>p>:p>:d=C>p>:Ń'?:Ń'?:p>:Ń'?:jsg?C>jsg?C>Ń'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>Ƀ'?B?lsg?O???w>C?Ƀ'?B???d=O?w>C???:?d=O???d=C>:???p>:d=C>??Ń'?:p>:??jsg?C>Ń'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?Ƀ'?B???Ƀ'?B?w>C???w>C?d=O???d=O?:???:?d=C>??d=C>p>:??p>:Ń'?:??Ń'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k‡?v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde13Ap Ad_?t>0P?t>\{R?^L>\{R_?^L>0P?t>\{R2Y?t>\{R2Y?^L>\{R?^L>\{R2Y?t>\{R࠵?t>0P࠵?^L>0P2Y?^L>\{R࠵?t>0P?t>t?^L>t࠵?^L>0P?t>t࠵?t>2࠵?^L>2?^L>t࠵?t>22Y?t>Y2Y?^L>Y࠵?^L>22Y?t>Y?t>Y?^L>Y2Y?^L>Y?t>Y_?t>2_?^L>2?^L>Y_?t>2?t>t?^L>t_?^L>2?t>t_?t>0P_?^L>0P?^L>t潤?t>\{R_?t>0Pk?t>t2Y?t>\{R?t>\{Rk?t>t࠵?t>0P2Y?t>\{Rk?t>t?t>t࠵?t>0Pk?t>t࠵?t>2?t>tk?t>t2Y?t>Y࠵?t>2k?t>t潤?t>Y2Y?t>Yk?t>t_?t>2?t>Yk?t>t?t>t_?t>2k?t>t_?t>0P?t>tk?t>t_?^L>0P?^L>\{Rk?^L>t潤?^L>\{R2Y?^L>\{Rk?^L>t2Y?^L>\{R࠵?^L>0Pk?^L>t࠵?^L>0P?^L>tk?^L>t?^L>t࠵?^L>2k?^L>t࠵?^L>22Y?^L>Yk?^L>t2Y?^L>Y?^L>Yk?^L>t潤?^L>Y_?^L>2k?^L>t_?^L>2?^L>tk?^L>t?^L>t_?^L>0Pk?^L>t@A(ddsg?O?̃'?B?̃'?B?dsg?O?̃'?B?o>C?o>C?̃'?B?o>C?d=O?d=O?o>C?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:asg?C>asg?C>ȃ'?:asg?C>D?>D?>asg?C>D?>dsg?O?dsg?O?D?>̃'?B?dsg?O?>?o>C?̃'?B?>?d=O?o>C?>?:?d=O?>?d=C>:?>?h>:d=C>>?ȃ'?:h>:>?asg?C>ȃ'?:>?D?>asg?C>>?dsg?O?D?>>?dsg?O?̃'?B?>?̃'?B?o>C?>?o>C?d=O?>?d=O?:?>?:?d=C>>?d=C>h>:>?h>:ȃ'?:>?ȃ'?:asg?C>>?asg?C>D?>>?D?>dsg?O?>?`A6ϡ>ϡ>kk?v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde15Ap Ad_?kJ0P?kJ\{R?z\{R_?z0P?kJ\{R2Y?kJ\{R2Y?z\{R?z\{R2Y?kJ\{R࠵?kJ0P࠵?z0P2Y?z\{R࠵?kJ0P?kJs?zt࠵?z0P?kJs࠵?kJ2࠵?z2?zt࠵?kJ22Y?kJY2Y?zY࠵?z22Y?kJY?kJY?zY2Y?zY?kJY_?kJ2_?z2?zY_?kJ2?kJs?zt_?z2?kJs_?kJ0P_?z0P?zt潤?kJ\{R_?kJ0Pk?kJs2Y?kJ\{R?kJ\{Rk?kJs࠵?kJ0P2Y?kJ\{Rk?kJs?kJs࠵?kJ0Pk?kJs࠵?kJ2?kJsk?kJs2Y?kJY࠵?kJ2k?kJs潤?kJY2Y?kJYk?kJs_?kJ2?kJYk?kJs?kJs_?kJ2k?kJs_?kJ0P?kJsk?kJs_?z0P?z\{Rk?zt潤?z\{R2Y?z\{Rk?zt2Y?z\{R࠵?z0Pk?zt࠵?z0P?ztk?zt?zt࠵?z2k?zt࠵?z22Y?zYk?zt2Y?zY?zYk?zt潤?zY_?z2k?zt_?z2?ztk?zt?zt_?z0Pk?zt@A(ddsg?O?̃'?B?̃'?B?dsg?O?̃'?B?o>C?o>C?̃'?B?o>C?d=O?d=O?o>C?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:asg?C>asg?C>ȃ'?:asg?C>D?>D?>asg?C>D?>dsg?O?dsg?O?D?>̃'?B?dsg?O?>?o>C?̃'?B?>?d=O?o>C?>?:?d=O?>?d=C>:?>?h>:d=C>>?ȃ'?:h>:>?asg?C>ȃ'?:>?D?>asg?C>>?dsg?O?D?>>?dsg?O?̃'?B?>?̃'?B?o>C?>?o>C?d=O?>?d=O?:?>?:?d=C>>?d=C>h>:>?h>:ȃ'?:>?ȃ'?:asg?C>>?asg?C>D?>>?D?>dsg?O?>?`A6ϡ>ϡ>kk?tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@pCylinde17AAP w? ;Z>x?>;?>j>w?7D#>O>w? ;Z>;?>j>;?LfF>9I>v?$t>Q>w?7D#>O>;?LfF>9I>:?<+>c=v?|S>I=v?$t>Q>:?<+>c=;?[|=Hw?=֦v?|S>I=;?[|=H;?MᖽLx?Eww?=֦;?MᖽLx?sQ>x?" Z==?/{HxI>x?>x?sQ>x?>w? ;Z>}z?;?>}z?%>w? ;Z>w?7D#>O>}z?t.>ݾ>}z?;?>w?7D#>O>v?$t>Q>}z?>T>}z?t.>ݾ>v?$t>Q>v?|S>I=}z?Ob><}z?>T>v?|S>I=w?=֦}z?ͩ=yȽ}z?Ob>}z?݁ҨT>}z?Vhx?>}z?%>}z?݁ҨT>}z?%>}z?;?>>ܤ;\>>К>}z?;?>}z?t.>ݾ>>D#>P>>ܤ;\>}z?t.>ݾ>}z?>T>>t>Q>>D#>P>}z?>T>}z?Ob><>|S>V=>t>Q>}z?Ob><}z?ͩ=yȽ>=֦>|S>V=}z?ͩ=yȽ}z?9wȽ>Fq>=֦}z?9wȽ}z?Vh<>F Z=>Fq}z?Vh<}z?݁ҨT>>sQ>>F Z=}z?݁ҨT>}z?%>>К>>sQ>>К>>ܤ;\>]>51;䱽>]>`|>>ܤ;\>>D#>P>]>~>l>]>51;䱽>>D#>P>>t>Q>]> fF>=I>]>~>l>>t>Q>>|S>V=]><+>c=]> fF>=I>>|S>V=>=֦]>.[|=8]><+>c=>=֦>Fq]>ᖽL]>.[|=8>Fq>F Z=]>3b=]>ᖽL>F Z=>sQ>]>Z{H|I>]>3b=>sQ>>К>]>`|>]>Z{H|I>..?4#>;?>j>..?4#>;?LfF>9I>;?>j>..?4#>:?<+>c=;?LfF>9I>..?4#>;?[|=H:?<+>c=..?4#>;?MᖽL;?[|=H..?4#>=?/{HxI>=?/{HxI>..?4#>]>`|>]>51;䱽>{:>˴#>]>51;䱽>]>~>l>{:>˴#>]>~>l>]> fF>=I>{:>˴#>]> fF>=I>]><+>c={:>˴#>]><+>c=]>.[|=8{:>˴#>]>.[|=8]>ᖽL{:>˴#>]>ᖽL]>3b={:>˴#>]>3b=]>Z{H|I>{:>˴#>]>Z{H|I>]>`|>{:>˴#>`A695`|d>KxVs>ᱢ?JFJF&oiy3}z?#> A Z    !"# !#%&'$%')*+()+-./,-/123013674456:;889:>?<<=>BC@@ABEFGDEGHIJHJKLMNLNOPQRPRSTUVTVW[XYYZ[_\]]^_c`aabcgdeefghijhjklmnlnopqrprstuvtvwxyzxz{|}}~0AVMtl12Z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYPAn, MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &!*??"&h>s>H> # # # #< #< #<0pCube1_0Ge@ &!*"&???0pCube1_1Ge@ &!*"&???0$$$DUMMY@pCylinder0 &ot5}F!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder2 &ot5F>!*"&ϡ>ϡ>k= # # # #< #< #<0 pCylinder3@ &!*"&???0 $$$DUMMY@pCube02 &g?<޽!*??"&ܡ>-=? # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCylinder4 &ޣ?tt>!*"&ϡ>ϡ>k= # # # #< #< #<0 pCylinder5@  &!*"&???0$$$DUMMY@pCylinder6 &ޣ?tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder7@ &!*"&???0$$$DUMMY@pCylinder8 &?tt>!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder9@ &!*"&???0$$$DUMMY@pCylinde10 &‡?tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde11@ &!*"&???0$$$DUMMY@pCylinde12 &k?tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &k?tt>!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde15@ &!*"&???0$$$DUMMY@pCylinde16 &}z?#>!*V(?=d}?"&9?Y?JF? # # # #< #< #<0pCylinde17@ &!*"&???gl-117-1.3.2/models/truck2.3ds0000755000175000017500000007552010145416156015020 0ustar cedriccedricMMP{ ==e>= 01 - Standard  0 @0 A0P0R0S00 ?20dCAMOUFL.TGAQS VMtl02   0 @0A0P0R0S00 ?03 - Standard  0 @0 A0P0R0S00 ?00dWHEEL.TGAQS 07 - Standard  0 @0 A0P0R0S00 ?30dGREENDRK.TGAQS 02 - Standard  0 @0 A0P0R0S00 ? ?@MpCube1_0GeA<A$gB,n`>_B,|b^_B,|b^$>gB,n`>$>/tI>>}/tUG>t|*>PG>l|*>I>>N.>n`>$>N.>ub^$>N.>ub^N.>n`>N.>n`>N.>ub^_B,|b^gB,n`>_B,|b^N.>ub^N.>ub^$>_B,|b^$>N.>n`>gB,n`>gB,n`>$>N.>n`>$>_B,|b^$>N.>ub^$>t|*>PG>}/tUG>N.>ub^$>N.>n`>$>l|*>I>>t|*>PG>N.>n`>$>gB,n`>$>/tI>>l|*>I>>@A($:L9@?9D?>:>r?s?W=s?W= :>:9C?L9:9@?9@?oX=?:oX=?:oX=?:9q?9q?oX=?@?9@?oX=?<>oX=?<>9q?oX=?q?9@? <@?s?:>@?>r?mX=?W=lX=?<>9<>oX=?:s?: <`A6b 4h߾s>Hسo:o:o: A      !" "#0A:01 - Standard PAN@pCube1_1GeAA8gB,n`>$>_B,|b^$>}/tUG>/tI>>`A6b 4h߾s>Hسo:o:o: A90AVMtl02PA@ pCylinder1Ap Ad=Jp>0PΑ\{RΑ<8>\{R=8>0PΑ\{RD#Jp>\{RD#8>\{RΑ<8>\{RD#Jp>\{RJp>0P8>0PD#8>\{RJp>0PoKp>to8>t8>0PoKp>tKp>2 8>2o8>tKp>2D#Kp>YD# 8>Y 8>2D#Kp>YΑYΑ< 8>YD# 8>YΑY=Kp>2= 8>2Α< 8>Y=Kp>2A=Kp>tA=8>t潡= 8>2A=Kp>t潡=Jp>0P=8>0PA=8>tΑ\{R=Jp>0PoKp>tD#Jp>\{RΑ\{RoKp>tJp>0PD#Jp>\{RoKp>toKp>tJp>0PoKp>tKp>2oKp>toKp>tD#Kp>YKp>2oKp>tΑYD#Kp>YoKp>t潡=Kp>2ΑYoKp>tA=Kp>t潡=Kp>2oKp>t潡=Jp>0PA=Kp>toKp>t潡=8>0PΑ<8>\{Ro8>tΑ<8>\{RD#8>\{Ro8>tD#8>\{R8>0Po8>t8>0Po8>to8>to8>t 8>2o8>t 8>2D# 8>Yo8>tD# 8>YΑ< 8>Yo8>tΑ< 8>Y= 8>2o8>t潡= 8>2A=8>to8>tA=8>t潡=8>0Po8>t@A(dlsg?O?ʃ'?C?ʃ'?C?lsg?O?ʃ'?C?s>D?s>D?ʃ'?C?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:isg?C>isg?C>ƃ'?:isg?C>D?>D?>isg?C>D?>lsg?O?lsg?O?D?>ʃ'?C?lsg?O???s>D?ʃ'?C???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??isg?C>ƃ'?:??D?>isg?C>??lsg?O?D?>??lsg?O?ʃ'?C???ʃ'?C?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:isg?C>??isg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>ko5}F>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder3Ap Ad= 0PΑ< T{RΑ<4zpT{R=4zp0PΑ< T{RD# T{RD#4zpT{RΑ<4zpT{RD# T{R 0P4zp0PD#4zpT{R 0Poto4zps4zp0Pot23zp2o4zps2D#YD#3zpY3zp2D#YΑ<YΑ<3zpYD#3zpYΑ<Y=2=3zp2Α<3zpY=2A=tA=4zps潡=3zp2A=t潡= 0P=4zp0PA=4zpsΑ< T{R= 0PotD# T{RΑ< T{Rot 0PD# T{Rotot 0Pot2ototD#Y2otΑ<YD#Yot潡=2Α<YotA=t潡=2ot潡= 0PA=tot潡=4zp0PΑ<4zpT{Ro4zpsΑ<4zpT{RD#4zpT{Ro4zpsD#4zpT{R4zp0Po4zps4zp0Po4zpso4zpso4zps3zp2o4zps3zp2D#3zpYo4zpsD#3zpYΑ<3zpYo4zpsΑ<3zpY=3zp2o4zps潡=3zp2A=4zpso4zpsA=4zps潡=4zp0Po4zps@A(dlsg?O?ʃ'?B?ʃ'?B?lsg?O?ʃ'?B?s>D?s>D?ʃ'?B?s>D?d=O?d=O?s>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>l>:l>:d=C>l>:ƃ'?:ƃ'?:l>:ƃ'?:isg?C>isg?C>ƃ'?:isg?C>D?>D?>isg?C>D?>lsg?O?lsg?O?D?>ʃ'?B?lsg?O???s>D?ʃ'?B???d=O?s>D???:?d=O???d=C>:???l>:d=C>??ƃ'?:l>:??isg?C>ƃ'?:??D?>isg?C>??lsg?O?D?>??lsg?O?ʃ'?B???ʃ'?B?s>D???s>D?d=O???d=O?:???:?d=C>??d=C>l>:??l>:ƃ'?:??ƃ'?:isg?C>??isg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>ko5Ft AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ApCube2_0GeA0A(wD%>ϡI>D%>ID%>IEwD%>ϡI>EwD%>ϡI>ED%>IE ?ϡIE ?I>E ?I>E ?ϡIE ?ϡI ?I> ?I> ?ϡID%>IwD%>ϡI>D%>I ?ϡI ?ϡIED%>IE ?I>wD%>ϡI>wD%>ϡI>E ?I>E`A6S 3ܡɾ-=|[д`P?<޽ A     0A.07 - Standard  PA6@ pCylinder5Ap Ad?kJ0PW?kJ\{RW?z\{R?z0PW?kJ\{R嶟?kJ\{R嶟?z\{RW?z\{R嶟?kJ\{R?kJ0P?z0P嶟?z\{R?kJ0Pxm?kJuxm?zt潓?z0Pxm?kJu潓?kJ2?z2xm?zt潓?kJ2嶟?kJY嶟?zY?z2嶟?kJYW?kJYW?zY嶟?zYW?kJY?kJ2?z2W?zY?kJ2N?kJuN?zt潩?z2N?kJu潩?kJ0P?z0PN?ztW?kJ\{R?kJ0Pޣ?kJu嶟?kJ\{RW?kJ\{Rޣ?kJu潓?kJ0P嶟?kJ\{Rޣ?kJuxm?kJu潓?kJ0Pޣ?kJu潓?kJ2xm?kJuޣ?kJu嶟?kJY?kJ2ޣ?kJuW?kJY嶟?kJYޣ?kJu潩?kJ2W?kJYޣ?kJuN?kJu潩?kJ2ޣ?kJu潩?kJ0PN?kJuޣ?kJu潩?z0PW?z\{Rޣ?ztW?z\{R嶟?z\{Rޣ?zt嶟?z\{R?z0Pޣ?zt潓?z0Pxm?ztޣ?ztxm?zt潓?z2ޣ?zt潓?z2嶟?zYޣ?zt嶟?zYW?zYޣ?ztW?zY?z2ޣ?zt潩?z2N?ztޣ?ztN?zt潩?z0Pޣ?zt@A(ddsg?O?̃'?B?̃'?B?dsg?O?̃'?B?p>D?p>D?̃'?B?p>D?d=O?d=O?p>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:asg?C>asg?C>ȃ'?:asg?C>D?>D?>asg?C>D?>dsg?O?dsg?O?D?>̃'?B?dsg?O???p>D?̃'?B???d=O?p>D???:?d=O???d=C>:???h>:d=C>??ȃ'?:h>:??asg?C>ȃ'?:??D?>asg?C>??dsg?O?D?>??dsg?O?̃'?B???̃'?B?p>D???p>D?d=O???d=O?:???:?d=C>??d=C>h>:??h>:ȃ'?:??ȃ'?:asg?C>??asg?C>D?>??D?>dsg?O???`A6ϡ>ϡ>kޣ?tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder7Ap Ad?t>0PW?t>\{RW?^L>\{R?^L>0PW?t>\{R嶟?t>\{R嶟?^L>\{RW?^L>\{R嶟?t>\{R?t>0P?^L>0P嶟?^L>\{R?t>0Pxm?t>txm?^L>t潓?^L>0Pxm?t>t潓?t>2?^L>2xm?^L>t潓?t>2嶟?t>Y嶟?^L>Y?^L>2嶟?t>YW?t>YW?^L>Y嶟?^L>YW?t>Y?t>2?^L>2W?^L>Y?t>2N?t>tN?^L>t潩?^L>2N?t>t潩?t>0P?^L>0PN?^L>tW?t>\{R?t>0Pޣ?t>t嶟?t>\{RW?t>\{Rޣ?t>t潓?t>0P嶟?t>\{Rޣ?t>txm?t>t潓?t>0Pޣ?t>t潓?t>2xm?t>tޣ?t>t嶟?t>Y?t>2ޣ?t>tW?t>Y嶟?t>Yޣ?t>t潩?t>2W?t>Yޣ?t>tN?t>t潩?t>2ޣ?t>t潩?t>0PN?t>tޣ?t>t潩?^L>0PW?^L>\{Rޣ?^L>tW?^L>\{R嶟?^L>\{Rޣ?^L>t嶟?^L>\{R?^L>0Pޣ?^L>t潓?^L>0Pxm?^L>tޣ?^L>txm?^L>t潓?^L>2ޣ?^L>t潓?^L>2嶟?^L>Yޣ?^L>t嶟?^L>YW?^L>Yޣ?^L>tW?^L>Y?^L>2ޣ?^L>t潩?^L>2N?^L>tޣ?^L>tN?^L>t潩?^L>0Pޣ?^L>t@A(ddsg?O?̃'?C?̃'?C?dsg?O?̃'?C?p>D?p>D?̃'?C?p>D?d=O?d=O?p>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>h>:h>:d=C>h>:ȃ'?:ȃ'?:h>:ȃ'?:asg?C>asg?C>ȃ'?:asg?C>D?>D?>asg?C>D?>dsg?O?dsg?O?D?>̃'?C?dsg?O???p>D?̃'?C???d=O?p>D???:?d=O???d=C>:???h>:d=C>??ȃ'?:h>:??asg?C>ȃ'?:??D?>asg?C>??dsg?O?D?>??dsg?O?̃'?C???̃'?C?p>D???p>D?d=O???d=O?:???:?d=C>??d=C>h>:??h>:ȃ'?:??ȃ'?:asg?C>??asg?C>D?>??D?>dsg?O???`A6ϡ>ϡ>kޣ?v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinder9Ap Adf0?kJ0P"?kJ\{R"?z\{Rf0?z0P"?kJ\{RkJuČ>zt潖?z0PČ>kJu潖?kJ2?z2Č>zt潖?kJ2kJu潖?kJ0P?kJu潖?kJ2Č>kJu潭?kJuzt潭?ztČ>zt潖?z2?zt潖?z2D?v>D?ȃ'?C?v>D?d=O?d=O?v>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>o>:o>:d=C>o>:Ń'?:Ń'?:o>:Ń'?:jsg?C>jsg?C>Ń'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>ȃ'?C?lsg?O???v>D?ȃ'?C???d=O?v>D???:?d=O???d=C>:???o>:d=C>??Ń'?:o>:??jsg?C>Ń'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?ȃ'?C???ȃ'?C?v>D???v>D?d=O???d=O?:???:?d=C>??d=C>o>:??o>:Ń'?:??Ń'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k?tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde11Ap AdF0?t>0P3"?t>\{R3"?^L>\{RF0?^L>0P3"?t>\{RQ9?t>\{RQ9?^L>\{R3"?^L>\{RQ9?t>\{R?t>0P?^L>0PQ9?^L>\{R?t>0PL>t>tL>^L>t潫?^L>0PL>t>t潫?t>2?^L>2L>^L>t潫?t>2Q9?t>YQ9?^L>Y?^L>2Q9?t>Y3"?t>Y3"?^L>YQ9?^L>Y3"?t>YF0?t>2F0?^L>23"?^L>YF0?t>2 i5?t>t i5?^L>tF0?^L>2 i5?t>tF0?t>0PF0?^L>0P i5?^L>t3"?t>\{RF0?t>0P‡?t>tQ9?t>\{R3"?t>\{R‡?t>t潫?t>0PQ9?t>\{R‡?t>tL>t>t潫?t>0P‡?t>t潫?t>2L>t>t‡?t>tQ9?t>Y?t>2‡?t>t3"?t>YQ9?t>Y‡?t>tF0?t>23"?t>Y‡?t>t i5?t>tF0?t>2‡?t>tF0?t>0P i5?t>t‡?t>tF0?^L>0P3"?^L>\{R‡?^L>t3"?^L>\{RQ9?^L>\{R‡?^L>tQ9?^L>\{R?^L>0P‡?^L>t潫?^L>0PL>^L>t‡?^L>tL>^L>t潫?^L>2‡?^L>t潫?^L>2Q9?^L>Y‡?^L>tQ9?^L>Y3"?^L>Y‡?^L>t3"?^L>YF0?^L>2‡?^L>tF0?^L>2 i5?^L>t‡?^L>t i5?^L>tF0?^L>0P‡?^L>t@A(dlsg?O?Ƀ'?B?Ƀ'?B?lsg?O?Ƀ'?B?w>D?w>D?Ƀ'?B?w>D?d=O?d=O?w>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>p>:p>:d=C>p>:Ń'?:Ń'?:p>:Ń'?:jsg?C>jsg?C>Ń'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>Ƀ'?B?lsg?O???w>D?Ƀ'?B???d=O?w>D???:?d=O???d=C>:???p>:d=C>??Ń'?:p>:??jsg?C>Ń'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?Ƀ'?B???Ƀ'?B?w>D???w>D?d=O???d=O?:???:?d=C>??d=C>p>:??p>:Ń'?:??Ń'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k‡?v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde13Ap Ad>t>0Po>t>\{Ro>^L>\{R>^L>0Po>t>\{Rx>t>\{Rx>^L>\{Ro>^L>\{Rx>t>\{R^>t>0P^>^L>0Px>^L>\{R^>t>0PR>t>tR>^L>t^>^L>0PR>t>t^>t>2^>^L>2R>^L>t^>t>2x>t>Yx>^L>Y^>^L>2x>t>Yo>t>Yo>^L>Yx>^L>Yo>t>Y>t>2>^L>2o>^L>Y>t>2#>t>t#>^L>t潻>^L>2#>t>t潻>t>0P>^L>0P#>^L>to>t>\{R>t>0P>t>t潩x>t>\{Ro>t>\{R>t>t^>t>0Px>t>\{R>t>tR>t>t^>t>0P>t>t^>t>2R>t>t潌>t>t潩x>t>Y^>t>2>t>to>t>Yx>t>Y>t>t潻>t>2o>t>Y>t>t#>t>t潻>t>2>t>t潻>t>0P#>t>t潌>t>t潻>^L>0Po>^L>\{R>^L>to>^L>\{Rx>^L>\{R>^L>t潩x>^L>\{R^>^L>0P>^L>t^>^L>0PR>^L>t潌>^L>tR>^L>t^>^L>2>^L>t^>^L>2x>^L>Y>^L>t潩x>^L>Yo>^L>Y>^L>to>^L>Y>^L>2>^L>t潻>^L>2#>^L>t潌>^L>t#>^L>t潻>^L>0P>^L>t@A(dlsg?O?˃'?B?˃'?B?lsg?O?˃'?B?r>D?r>D?˃'?B?r>D?d=O?d=O?r>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>j>:j>:d=C>j>:ǃ'?:ǃ'?:j>:ǃ'?:jsg?C>jsg?C>ǃ'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>˃'?B?lsg?O???r>D?˃'?B???d=O?r>D???:?d=O???d=C>:???j>:d=C>??ǃ'?:j>:??jsg?C>ǃ'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?˃'?B???˃'?B?r>D???r>D?d=O???d=O?:???:?d=C>??d=C>j>:??j>:ǃ'?:??ǃ'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k>v>t AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCylinde15Ap Ad>kJ0Po>kJ\{Ro>z\{R>z0Po>kJ\{Rx>kJ\{Rx>z\{Ro>z\{Rx>kJ\{R^>kJ0P^>z0Px>z\{R^>kJ0PR>kJuR>zt^>z0PR>kJu^>kJ2^>z2R>zt^>kJ2x>kJYx>zY^>z2x>kJYo>kJYo>zYx>zYo>kJY>kJ2>z2o>zY>kJ2#>kJu#>zt潻>z2#>kJu潻>kJ0P>z0P#>zto>kJ\{R>kJ0P>kJu潩x>kJ\{Ro>kJ\{R>kJu^>kJ0Px>kJ\{R>kJuR>kJu^>kJ0P>kJu^>kJ2R>kJu潌>kJu潩x>kJY^>kJ2>kJuo>kJYx>kJY>kJu潻>kJ2o>kJY>kJu#>kJu潻>kJ2>kJu潻>kJ0P#>kJu潌>kJu潻>z0Po>z\{R>zto>z\{Rx>z\{R>zt潩x>z\{R^>z0P>zt^>z0PR>zt潌>ztR>zt^>z2>zt^>z2x>zY>zt潩x>zYo>zY>zto>zY>z2>zt潻>z2#>zt潌>zt#>zt潻>z0P>zt@A(dlsg?O?˃'?C?˃'?C?lsg?O?˃'?C?r>D?r>D?˃'?C?r>D?d=O?d=O?r>D?d=O?:?:?d=O?:?d=C>d=C>:?d=C>j>:j>:d=C>j>:ǃ'?:ǃ'?:j>:ǃ'?:jsg?C>jsg?C>ǃ'?:jsg?C>D?>D?>jsg?C>D?>lsg?O?lsg?O?D?>˃'?C?lsg?O???r>D?˃'?C???d=O?r>D???:?d=O???d=C>:???j>:d=C>??ǃ'?:j>:??jsg?C>ǃ'?:??D?>jsg?C>??lsg?O?D?>??lsg?O?˃'?C???˃'?C?r>D???r>D?d=O???d=O?:???:?d=C>??d=C>j>:??j>:ǃ'?:??ǃ'?:jsg?C>??jsg?C>D?>??D?>lsg?O???`A6ϡ>ϡ>k>tt AT(     !" "#$%&$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc0Af03 - Standard(  !"#$%&'PA@ pCube3_0GeAA(Og>t1峽{?t1峽{?tq!'>Og>tq!'>Og>tq!'>{?tq!'>{?t>p!'>Og>t>p!'>Og>t>p!'>{?t>p!'>{?t>1峽Og>t>1峽Og>t>1峽{?t>1峽{?t1峽Og>t1峽{?t1峽{?t>1峽{?t>p!'>{?tq!'>Og>t>1峽Og>t1峽Og>tq!'>Og>t>p!'>@A暖:9^ @9a @?>M:C>] @B>M:B>M:9] @9] @B>M:>>:9_ @9暖:9^ @9^ @C>暖:C>暖:C>暖:9] @9^ @B>] @9] @C>:B>暖:9`A6?>k[?]= A     0A.01 - Standard  PA6@ pCube4_0GeAA(Ts>wl> ?wl> ?xlp>Ts>xlp>Ts>xlp> ?xlp> ?xl>p>Ts>xl>p>Ts>xl>p> ?xl>p> ?xl>>Ts>xl>>Ts>xl>> ?xl>> ?wl>Ts>wl> ?wl> ?xl>> ?xl>p> ?xlp>Ts>xl>>Ts>wl>Ts>xlp>Ts>xl>p>@A::??:C?@?:D???D?:D?::??:??D?:@?::C?:::??:??C?:C?:C?::@?:@?D?>?:??C?:D?::`A6?>yk[?+> A     0A.02 - Standard  PA6 MAXSCENEdd 0$$$DUMMY@V2Grp01 &!*?"&??? # # # #< #< #<0$$$DUMMY@V2Swi01 &!*"&??? # # # #< #< #<0$$$DUMMY@V2Grp02 &!*"&??? # # # #< #< #<0$$$DUMMY@pCube01 &!*??"&h>s>H> # # # #< #< #<0pCube1_0Ge@ &!*"&???0pCube1_1Ge@ &!*"&???0$$$DUMMY@pCylinder0 &ot5}F!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder1@ &!*"&???0$$$DUMMY@pCylinder2 &ot5F>!*"&ϡ>ϡ>k= # # # #< #< #<0 pCylinder3@ &!*"&???0 $$$DUMMY@pCube02 &`P?<޽!*??"&ܡ>-=|? # # # #< #< #<0 pCube2_0Ge@  &!*"&???0 $$$DUMMY@pCylinder4 &ޣ?tt>!*"&ϡ>ϡ>k= # # # #< #< #<0 pCylinder5@  &!*"&???0$$$DUMMY@pCylinder6 &ޣ?tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder7@ &!*"&???0$$$DUMMY@pCylinder8 &?tt>!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinder9@ &!*"&???0$$$DUMMY@pCylinde10 &‡?tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde11@ &!*"&???0$$$DUMMY@pCylinde12 &>tv!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde13@ &!*"&???0$$$DUMMY@pCylinde14 &>tt>!*"&ϡ>ϡ>k= # # # #< #< #<0pCylinde15@ &!*"&???0$$$DUMMY@pCube03 &k[?]=!*"&?>> # # # #< #< #<0pCube3_0Ge@ &!*"&???0$$$DUMMY@pCube04 &k[?+>!*"&?>y> # # # #< #< #<0pCube4_0Ge@ &!*"&???gl-117-1.3.2/models/wall.3ds0000755000175000017500000000265110145416156014540 0ustar cedriccedricMM ==>= 01 - Standard  0 @0 A0P0R0S00 ?G0dDEPOT_FR.TGAQS T @V @ ?@Quader01AA C,g>B,C>g>B>C,7g>B,7C>7g>B>7g>B,C,g>B,7C,7g>B,7C,g>B>g>B,g>B>7g>B,7g>B>7g>B,C>g>B>C>7g>B>7C>7g>B>C,C>C,7C>7C,7C>@A 2{>]?{>2) ?]? ?]?{>2{>]?) ?2 ?]? [?2 [?]?}>2}>]?}>2 [? ? [?{> [? ?}>{>}> ?}>{> [?]? [?2 [?]?}>2}>]?}>2 [? ? [?{> [? ?}>{>}> ?}>{> [?`A6???KP% A   0A.01 - Standard  PA6 @@ MAXSCENEdd 0Quader01@ &KP%!*"&???gl-117-1.3.2/music/0000755000175000017500000000000010145416156013014 5ustar cedriccedricgl-117-1.3.2/music/ambient.s3m0000644000175000017500000015342010145416156015064 0ustar cedriccedricStars+ SCRM@}     $ %&'*()$).3Q{6DRm":Rk@g&Ee,$,$,$,$,$,$,$,$HRPSI60A87@VAmbient -SCRSSOLKK60A: @ZDThomas A. DrexlSCRSCHH__60Ao@-SCRSTYPHOON4.WAV @DSCRSFX Blip @SCRSMMBAS62om- *@SCRSSSTR162A3 @fModPlug TrackerSCRS`D2cD2aD `[2bD a[ ``2b[ a` `Y2b` aY `[2bY a[ `W2b[ aW `Y2bW aY `V2bY aV `D2bV cD2aD `[2bD a[ ``2b[ a` `Y2b` aY `[2bY a[ `W2b[ aW `Y2bW aY `V2bY aV `B2bV cB2aB `Y2bB aY `Z2bY aZ `W2bZ aW `Y2bW aY `U2bY aU `W2bU aW `T2bW aT `B2bT cB2aB `Y2bB aY `Z2bY aZ `W2bZ aW `Y2bW aY `U2bY aU `W2bU aW `T2bW aT `D2cD2$@%@aD `[2bD &@'@a[ ``2b[ $@%@a` `Y2b` &@'@aY `[2bY $@%@a[ `W2b[ &@'@aW `Y2bW $@%@aY `V2bY &@'@aV `D2bV cD2$@%@aD `[2bD &@'@a[ ``2b[ $@%@a` `Y2b` &@'@aY `[2bY $@%@a[ `W2b[ &@'@aW `Y2bW $@%@aY `V2bY &@'@aV `B2bV cB2$@%@aB `Y2bB &@'@aY `Z2bY $@%@aZ `W2bZ &@'@aW `Y2bW $@%@aY `U2bY &@'@aU `W2bU $@%@aW `T2bW &@'@aT `B2bT cB2$@%@aB `Y2bB &@'@aY `Z2bY $@%@aZ `W2bZ &@'@aW `Y2bW $@%@aY `U2bY &@'@aU `W2bU $@%@aW `T2bW &@'@aT @@`@#`@b9@b9#b9a9@a9#a9`;@`;#`;b9@b9#a;@b9a;#@@a;`@#`@b9@b9#b9a9@a9#a9`;@`;#`;b9@b9#aC@b9aC#pD@#@eR`D#E`D$@ebebbA@#@eRbA#EbA$@ebaA@ebaA##@eRaAE`C@$@eb`C#eb`CbA@#@eRbA#EaC@bA$@ebaC#ebD@aC#@eR`D#E`D$@ebebbA@#@eRbA#EbA$@ebaA@ebaA##@eRaAE`C@$@eb`C#eb`CbA@#@eRbA#EaC@bA$@ebaC#eb Z!R"W R!Y"R U !R!"U" Z !R!"W" R !Y!"R" U !R!"U"@?7?4?#R$D%K&D#P$D%I&K#P#R$D%K&D#P$D%I&K#P#P$B%I&B#J$B%G&I#J#P$B%I&B#J$B%G&I#J@#@eRjREf@ J!5$@ebjbebg5 jb"9#@eRjREh9 J 5$@ebjb!9ebf5 jb#@eRg9 jR"5EJ ;$@ebh5 jb!5ebf; jbg5 "9#@eRjR 5Eh9 Jf5 !;$@ebjbebg; jb@#@eRjREf@ J!5$@ebjbebg5 jb"9#@eRjREh9 J 5$@ebjb!9ebf5 jb#@eRg9 jR"5EJ ;$@eb(5jb!5ebf; jbg5 "9#@eRjR 5Eh9 Jf5 !B$@ebjbebgB jbD#@eRjRED J!7$@ebjbebg7 jb"@#@eRjREh@ J 7$@ebjb!@ebf7 jb#@eRg@ jR"7EJ B$@ebh7 jb!7ebfB jbg7 "@#@eRjR 7Eh@ Jf7 !B$@ebjbeb'BjbD#@eRjRED J!7$@ebjbebg7 jb"@#@eRjREh@ J 7$@ebjb!@ebf7 jb#@eRg@ jR"7EJ B$@ebh7 jb!7ebfB jbg7 "@#@eRjR 7Eh@ Jf7 !;$@ebjbebg; jb9#@eRjRE9 J!0$@ebjbebg0 jb"5#@eRjREh5 J 0$@ebjb!5ebf0 jb#@eRg5 jR"0EJ 7$@ebh0 jb!0ebf7 jbg0 "5#@eRjR 0Eh5 Jf0 !7$@ebjbebg7 jb9#@eRjRE9 J!0$@ebjbebg0 jb"5#@eRjREh5 J 0$@ebjb!5ebf0 jb#@eRg5 jR"0EJ 7$@ebh0 jb!0ebf7 jbg0 "5#@eRjR 0Eh5 Jf0 !7$@ebjbebg7 jb@#@eRjRE@ J!4$@ebjbebg4 jb"9#@eRjREh9 J 4$@ebjb!9ebf4 jb#@eRg9 jR"4EJ ;$@ebh4 jb!4ebf; jbg4 "9#@eRjR 4Eh9 Jf4 !;$@ebjbebg; jb@#@eRjRE@ J!4$@ebjbebg4 jb"9#@eRjREh9 J 4$@ebjb!9ebf4 jb#@eRg9 jR"4EJ ;$@ebh4 jb!4ebf; jbg4 "9#@eRjR 4Eh9 Jf4 !;$@ebjbebg; jbD@`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#D@aC`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#@@`@#`@b9@b9#b9a9@a9#a9`;@`;#`;b9@b9#a;@b9a;#@@a;`@#`@b9@b9#b9a9@a9#a9`;@`;#`;b9@b9#aC@b9aC#`D2aD [bD a[ `b[ a` Yb` aY [bY a[ Wb[ aW YbW aY VbY aV DbV aD [bD a[ `b[ a` Yb` aY [bY a[ Wb[ aW YbW aY VbY aV BbV aB YbB aY ZbY aZ WbZ aW YbW aY UbY aU WbU aW TbW aT BbT aB YbB aY ZbY aZ WbZ aW YbW aY UbY aU WbU aW TbW aT 0`D2#@$@aD [bD %@a[ `b[ #@$@a` Yb` %@aY [bY #@$@a[ Wb[ %@aW YbW #@$@aY VbY %@aV DbV #@$@aD [bD %@a[ `b[ #@$@a` Yb` %@aY [bY #@$@a[ Wb[ %@aW YbW #@$@aY VbY %@aV BbV #@$@aB YbB %@aY ZbY #@$@aZ WbZ %@aW YbW #@$@aY UbY %@aU WbU #@$@aW TbW %@aT BbT #@$@aB YbB %@aY ZbY #@$@aZ WbZ %@aW YbW #@$@aY UbY %@aU WbU #@$@aW TbW %@aT a 0!)"%#@$@gD2hD(%@&@g[/h['`0(a)(b%(#@$@g`,h`$`0#a)#b%#%@&@gY)hY!#@$@g[&h[`0a)b%%@&@gW#hW`0a)b%#@$@gY hY%@&@gVhV`0a)b%#@$@gDhD`0a)b%%@&@g[h[#@$@g`h` `0 a) b% %@&@gYhY `0a)b%#@$@g[h[%@&@gW hW`0a)b%#@$@gYhY%@&@gVhV 0!)"%#@$@%@&@`0(a)(b%(#@$@`0#a)#b%#%@&@#@$@`0a)b%%@&@`0a)b%#@$@%@&@`0a)b%#@$@`0a)b%%@&@#@$@`0 a) b% %@&@`0a)b%%@&@`0a)b%%@&@0`D2#@$@aD [bD %@a[ `b[ #@$@a` Yb` %@aY [bY #@$@a[ Wb[ %@aW YbW #@$@aY VbY %@aV DbV #@$@aD [bD %@a[ `b[ #@$@a` Yb` %@aY [bY #@$@a[ Wb[ %@aW YbW #@$@aY VbY %@aV BbV #@$@aB YbB %@aY ZbY #@$@aZ WbZ %@aW YbW #@$@aY UbY %@aU WbU #@$@aW TbW %@aT BbT #@$@aB YbB %@aY ZbY #@$@aZ WbZ %@aW YbW #@$@aY UbY %@aU WbU #@$@aW TbW %@aT `0!)"%#@$@%@&@`0(a)(b%(#@$@`0#a)#b%#%@&@#@$@`0a)b%%@&@`0a)b%#@$@%@&@`0a)b%#@$@`0a)b%%@&@#@$@`0 a) b% %@&@`0a)b%#@$@%@&@`0a)b%#@$@%@&@ 0!)"%#@$@gBhB%@&@gY hY`0(a)(b%(#@$@gZhZ`0#a)#b%#%@&@gWhW #@$@gYhY `0a)b%%@&@gUhU`0a)b%#@$@gWhW%@&@gThT`0a)b%#@$@gB hB`0a)b%%@&@gY#hY#@$@gZ&hZ`0 a) b% %@&@gW)hW`0a)b%gY,hY%@&@gU/hU`0a)b%gW2hW %@&@gT2hT# 0!)"%#@$@fD2%@f[/`0(a)(b%(#@$@f`,`0#a)#b%#%@fY)#@$@f[&`0a)b%%@fW#`0a)b%#@$@fY %@fV`0a)b%#@$@fD`0a)b%%@f[#@$@f``0 a) b% %@fY`0a)b%#@$@f[%@fW `0a)b%#@$@fY%@fV 0!)"%#@$@%@`0(a)(b%(#@$@`0#a)#b%#%@#@$@`0a)b%%@`0a)b%#@$@%@`0a)b%#@$@`0a)b%%@#@$@`0 a) b% %@`0a)b%%@`0a)b%%@pD@#@eR`D#E`D$@ebebbA@#@eRbA#EbA$@ebaA@ebaA##@eRaAE`C@$@eb`C#eb`CbA@#@eRbA#EaC@bA$@ebaC#ebD@aC#@eR`D#E`D$@ebebbA@#@eRbA#EbA$@ebaA@ebaA##@eRaAE`C@$@eb`C#eb`CbA@#@eRbA#EaC@bA$@ebaC#eb}@#@eREf@ !5$@ebebg5 "9#@eREh9 5$@eb!9ebf5 #@eRg9 "5E ;$@ebh5 !5ebf; g5 "9#@eR 5Eh9 f5 !;$@ebebg; @#@eREf@ !5$@ebebg5 "9#@eREh9 5$@eb!9ebf5 #@eRg9 "5E ;$@eb(5!5ebf; g5 "9#@eR 5Eh9 f5 !B$@ebebgB D#@eRED !7$@ebebg7 "@#@eREh@ 7$@eb!@ebf7 #@eRg@ "7E B$@ebh7 !7ebfB g7 "@#@eR 7Eh@ f7 !B$@ebeb'BD#@eRED !7$@ebebg7 "@#@eREh@ 7$@eb!@ebf7 #@eRg@ "7E B$@ebh7 !7ebfB g7 "@#@eR 7Eh@ f7 !;$@ebebg; @#@eRE@ !4$@ebebg4 "9#@eREh9 4$@eb!9ebf4 #@eRg9 "4E ;$@ebh4 !4ebf; g4 "9#@eR 4Eh9 f4 !;$@ebebg; @#@eRE@ !4$@ebebg4 "9#@eREh9 4$@eb!9ebf4 #@eRg9 "4E ;$@ebh4 !4ebf; g4 "9#@eR 4Eh9 f4 !;$@ebebg; D@`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#D@aC`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#@0!)"%#@$@%@`0(a)(b%(#@$@`0#a)#b%#%@#@$@`0a)b%%@`0a)b%#@$@%@`0a)b%#@$@`0a)b%%@#@$@`0 a) b% %@`0a)b%#@$@%@`0a)b%#@$@%@ 0!)"%%@`0(a)(b%(`0#a)#b%#%@`0a)b%%@`0a)b%%@`0a)b%`0a)b%`0 a) b% `0a)b%`0a)b%`D2cD2aD `[2bD a[ ``2b[ a` `Y2b` aY `[2bY a[ `W2b[ aW `Y2bW aY `V2bY aV `D2bV cD2aD `[2bD a[ ``2b[ a` `Y2b` aY `[2bY a[ `W2b[ aW `Y2bW aY `V2bY aV `B2bV cB2aB `Y2bB aY `Z2bY aZ `W2bZ aW `Y2bW aY `U2bY aU `W2bU aW `T2bW aT `B2bT cB2aB `Y2bB aY `Z2bY aZ `W2bZ aW `Y2bW aY `U2bY aU `W2bU aW `T2bW aT `D2cD2$@%@aD `[2bD &@'@a[ ``2b[ $@%@a` `Y2b` &@'@aY `[2bY $@%@a[ `W2b[ &@'@aW `Y2bW $@%@aY `V2bY &@'@aV `D2bV cD2$@%@aD `[2bD &@'@a[ ``2b[ $@%@a` `Y2b` &@'@aY `[2bY $@%@a[ `W2b[ &@'@aW `Y2bW $@%@aY `V2bY &@'@aV `B2bV cB2$@%@aB `Y2bB &@'@aY `Z2bY $@%@aZ `W2bZ &@'@aW `Y2bW $@%@aY `U2bY &@'@aU `W2bU $@%@aW `T2bW &@'@aT `B2bT cB2$@%@aB `Y2bB &@'@aY `Z2bY $@%@aZ `W2bZ &@'@aW `Y2bW $@%@aY `U2bY &@'@aU `W2bU $@%@aW `T2bW &@'@aT `D2cD2aD `[2bD a[ ``2b[ a` `Y2b` aY `[2bY a[ `W2b[ aW `Y2bW aY `V2bY aV `D2bV cD2aD `[2bD a[ ``2b[ a` `Y2b` aY `[2bY a[ `W2b[ aW `Y2bW aY `V2bY aV `B2bV cB2aB `Y2bB aY `Z2bY aZ `W2bZ aW `Y2bW aY `U2bY aU `W2bU aW `T2bW aT `B2bT cB2aB `Y2bB aY `Z2bY aZ `W2bZ aW `Y2bW aY `U2bY aU `W2bU aW `T2bW aT `D2cD2$@%@aD `[2bD &@'@a[ ``2b[ $@%@a` `Y2b` &@'@aY `[2bY $@%@a[ `W2b[ &@'@aW `Y2bW $@%@aY `V2bY &@'@aV `D2bV cD2$@%@aD `[2bD &@'@a[ ``2b[ $@%@a` `Y2b` &@'@aY `[2bY $@%@a[ `W2b[ &@'@aW `Y2bW $@%@aY `V2bY &@'@aV `B2bV cB2$@%@aB `Y2bB &@'@aY `Z2bY $@%@aZ `W2bZ &@'@aW `Y2bW $@%@aY `U2bY &@'@aU `W2bU $@%@aW `T2bW &@'@aT `B2bT cB2$@%@aB `Y2bB &@'@aY `Z2bY $@%@aZ `W2bZ &@'@aW `Y2bW $@%@aY `U2bY &@'@aU `W2bU $@%@aW `T2bW &@'@aT a 0!)"%#@$@gD2hD(%@&@g[/h['`0(a)(b%(#@$@g`,h`$`0#a)#b%#%@&@gY)hY!#@$@g[&h[`0a)b%%@&@gW#hW`0a)b%#@$@gY hY%@&@gVhV`0a)b%#@$@gDhD`0a)b%%@&@g[h[#@$@g`h` `0 a) b% %@&@gYhY `0a)b%#@$@g[h[%@&@gW hW`0a)b%#@$@gYhY%@&@gVhV 0!)"%#@$@%@&@`0(a)(b%(#@$@`0#a)#b%#%@&@#@$@`0a)b%%@&@`0a)b%#@$@%@&@`0a)b%#@$@`0a)b%%@&@#@$@`0 a) b% %@&@`0a)b%%@&@`0a)b%%@&@@#@eRjREf@ J!5$@ebjbebg5 jb"9#@eRjREh9 J 5$@ebjb!9ebf5 jb#@eRg9 jR"5EJ ;$@ebh5 jb!5ebf; jbg5 "9#@eRjR 5Eh9 Jf5 !;$@ebjbebg; jb@#@eRjREf@ J!5$@ebjbebg5 jb"9#@eRjREh9 J 5$@ebjb!9ebf5 jb#@eRg9 jR"5EJ ;$@eb(5jb!5ebf; jbg5 "9#@eRjR 5Eh9 Jf5 !B$@ebjbebgB jbD#@eRjRED J!7$@ebjbebg7 jb"@#@eRjREh@ J 7$@ebjb!@ebf7 jb#@eRg@ jR"7EJ B$@ebh7 jb!7ebfB jbg7 "@#@eRjR 7Eh@ Jf7 !B$@ebjbeb'BjbD#@eRjRED J!7$@ebjbebg7 jb"@#@eRjREh@ J 7$@ebjb!@ebf7 jb#@eRg@ jR"7EJ B$@ebh7 jb!7ebfB jbg7 "@#@eRjR 7Eh@ Jf7 !;$@ebjbebg; jb9#@eRjRE9 J!0$@ebjbebg0 jb"5#@eRjREh5 J 0$@ebjb!5ebf0 jb#@eRg5 jR"0EJ 7$@ebh0 jb!0ebf7 jbg0 "5#@eRjR 0Eh5 Jf0 !7$@ebjbebg7 jb9#@eRjRE9 J!0$@ebjbebg0 jb"5#@eRjREh5 J 0$@ebjb!5ebf0 jb#@eRg5 jR"0EJ 7$@ebh0 jb!0ebf7 jbg0 "5#@eRjR 0Eh5 Jf0 !7$@ebjbebg7 jb@#@eRjRE@ J!4$@ebjbebg4 jb"9#@eRjREh9 J 4$@ebjb!9ebf4 jb#@eRg9 jR"4EJ ;$@ebh4 jb!4ebf; jbg4 "9#@eRjR 4Eh9 Jf4 !;$@ebjbebg; jb@#@eRjRE@ J!4$@ebjbebg4 jb"9#@eRjREh9 J 4$@ebjb!9ebf4 jb#@eRg9 jR"4EJ ;$@ebh4 jb!4ebf; jbg4 "9#@eRjR 4Eh9 Jf4 !;$@ebjbebg; jbD@`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#D@aC`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#0!)"%#@$@%@&@`0(a)(b%(#@$@`0#a)#b%#%@&@#@$@`0a)b%%@&@`0a)b%#@$@%@&@`0a)b%#@$@`0a)b%%@&@#@$@`0 a) b% %@&@`0a)b%#@$@%@&@`0a)b%#@$@%@&@ 0!)"%#@$@%@&@`0(a)(b%(#@$@`0#a)#b%#%@&@#@$@`0a)b%%@&@`0a)b%#@$@%@&@`0a)b%#@$@`0a)b%%@&@#@$@`0 a) b% %@&@`0a)b%%@&@`0a)b%%@&@@!5"9 5!9"5 ;!5"9 5!;@!5"9 5!9"5 ;!5"9 5!B@A@B@CDEFG!5"9 5!9"5 ;!5"9 5!;@!5"9 5!9"5 ;!5"9 5!B@#@eRjREf@ J!5$@ebjbebg5 jb"9#@eRjREh9 J 5$@ebjb!9ebf5 jb#@eRg9 jR"5EJ ;$@ebh5 jb!5ebf; jbg5 "9#@eRjR 5Eh9 Jf5 !;$@ebjbebg; jb@#@eRjREf@ J!5$@ebjbebg5 jb"9#@eRjREh9 J 5$@ebjb!9ebf5 jb#@eRg9 jR"5EJ ;$@eb(5jb!5ebf; jbg5 "9#@eRjR 5Eh9 Jf5 !B$@ebjbebgB jbD#@eRjRED J!7$@ebjbebg7 jb"@#@eRjREh@ J 7$@ebjb!@ebf7 jb#@eRg@ jR"7EJ B$@ebh7 jb!7ebfB jbg7 "@#@eRjR 7Eh@ Jf7 !B$@ebjbeb'BjbD#@eRjRED J!7$@ebjbebg7 jb"@#@eRjREh@ J 7$@ebjb!@ebf7 jb#@eRg@ jR"7EJ B$@ebh7 jb!7ebfB jbg7 "@#@eRjR 7Eh@ Jf7 !;$@ebjbebg; jb@#@eRjRE@ J!4$@ebjbebg4 jb"9#@eRjREh9 J 4$@ebjb!9ebf4 jb#@eRg9 jR"4EJ ;$@ebh4 jb!4ebf; jbg4 "9#@eRjR 4Eh9 Jf4 !;$@ebjbebg; jb@#@eRjRE@ J!4$@ebjbebg4 jb"9#@eRjREh9 J 4$@ebjb!9ebf4 jb#@eRg9 jR"4EJ ;$@ebh4 jb!4ebf; jbg4 "9#@eRjR 4Eh9 Jf4 !;$@ebjbebg; jbD@`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#D@aC`D#`DbA@bA#bAaA@aA#aA`C@`C#`CbA@bA#aC@bAaC#9#@eRjRE9 J!0$@ebjbebg0 jb"5#@eRjREh5 J 0$@ebjb!5ebf0 jb#@eRg5 jR"0EJ 7$@ebh0 jb!0ebf7 jbg0 "5#@eRjR 0Eh5 Jf0 !7$@ebjbebg7 jb9#@eRjRE9 J!0$@ebjbebg0 jb"5#@eRjREh5 J 0$@ebjb!5ebf0 jb#@eRg5 jR"0EJ 7$@ebh0 jb!0ebf7 jbg0 "5#@eRjR 0Eh5 Jf0 !7$@ebjbebg7 jb<d߄ϑ,?tɍx0\Ap kxeyh bC\e]_Xnra#okr{$(V%\$uo=lmFbKj$`{Px/hsFl9{wHf-nxmqBVtTn6[r͒a҂!j u׃t"0pa owT{_扑˥[;f%koLhw,ZXAdZn^MqpْsIz-e}~t0tcpf!TJvo 09iIygWZPr3KG{afK:#WO܊+t`YyTcVmS&郫zwBoME6_'sRvTPOYeMUl]s2wmZ^mU}ˀu6)|gPB΃$3ȟcl:vT̡qN7XKrayQ_KYe>A͂ɾѴHxU{%ܓ<旘џ~{YdJga˟}(Y{TZq_t@HZThޢ#+nVlbVhsyMv-l%y`\dw}Hs<)uvhMYrDIshl{L`llMXX4T^cӅԧ Iɂ{ Пwc̝˕]QAbJX,.}jVmeFLnKYݧ*~ ]wtXAMqajVv[|wmQWB5DQݜՃHxLOlRc{o\ bgi46yvdәshOPI\Re}Zb~~vv|'DBnu q}$sPo㛔 sӪJ`Gs‚ꙩts9Xl^FK =x6Q['Iucaw^~B/{ff-ښw?ۀo5r^gkwx6?̈${j Lr^r]qwؑ jՈqlIN՘x*rŎlRޞ̧vy?e^laࠨu\[tj_`_X@f{}uw \ VG|vT'i\{tڮ@efJ[tR{MwowOmeln%9g|jhGUp^[z҂m~߅5:;LNiyԝȧ^y9 aeewց$3p`t\y+_c?\OX~v(SmZs+_6jNe-52`Bf~!uk oyfyYvvc//-.U#{tH_l[>i*ݫř5 ݄ᛃrB㧘שݳrzus}1msi;a~jm4;)DGx䉰ʂxyKbgfg+FePyk _Hqhauuj6jmR{b'8%B7v[Gh^h {ICR)4읺CuzNȮu~j| /3z>`ZeڔhrV4ABwyƍ{qnO^Y`a =bEI) XZC1mnwtA}h[NylS>'='(vf_Z)P]Rijzt~rȥ5҉ʥ_òGorѯ߬ǹ}ԟjGu¤ۛEb% s0:AN~ssc0xG]U C^O?381"ݘ^y`xRgo+xqcsRl_{#\v\q^YQ,M"mmg]{燡3%ƠIeI#OM ܴ7W|ř6楶nRzXpK"=6EEwjvpm^HdIWr)22΂l:a[Xh}wzfd] sh(N_\}_GPf^wW0%R τVMW°4%Ǭ«{}"Pwe}ЗOxX 7Dupg{) \\aTl!-^aهg0Z KA_skwkl*Om /)#vGS_^DP@bWx@tLI(پYQٌp&b|bmަ]҇|d*k':B@bI]!vv:W9gNbh_,%Iׇ1y!cDO9aqClك { },gF{LmQlO^3S{cކM޼8zDީ߂ʵ*3iqk6wɍk<8(uKAgCE >>yKhg&m=h s=xoIaj(q[ '?CVSYW`OGU]MV`3'Ճ 8j&_ch݌ Ȯ#'f"_'3gByXbWXtHpa<9HYyȇ݂qlHuUbtj|^iZAeydG6l?=FCPSFTyPFSi@zv}1 iȼΔ+$it"澭p5vؠf# H%wu}ivh9\RLCQ"QY7vq(Y]YethR@7OHfNoVn.lyfWl͓zV!i|tS@)@B%VoULUNFNO([;tǀtt%ⸯƿ"–ώFӶ)Y޾N(@`W砶;ըtt{Zub"RIYHZGdHpzL_9Yar{}smM^<{C\{ojw3~.Up׃_y%Sa@xz@ZI>$BqTT,PWMJMRszPxQkll|fǽ&`B'q P 'XN󎘙fx{siX IG>=gzt/jYJ\uuU8@D]Qu(lz[lzP8} ]\^vt|dT>F UTSXJKB/JqgkvJvb{߱촇%ϻӗYנG4g}uke| \⦶gz;{ s^MN9:^no3XW`oz*\C9C0Ar7p}siFh,w#h[syp-]6BETQMTWXLJr=sD)UsQm?eqv樲m]lȲ?O+9ӟ찭aeN‰W%t F|t&|[pRBU<9Pgq_Zh^a~PD;9sjyuRၮwe#v!mq^nxv&aACMsFTPOE=L:rI>oJdjbq̭N0!5X 0Q[“ze^ ı)0m,ޙ5cO\Y$@t;Hgtk\ m[leHbA|nkxDwdjfl\equdZBdEHHTQVbFwIs4_Mfhm\]ka ˜;ƒ1hlǾ:(fCХÀ /]gsGC›]mkecLj:A\nAnTj}zo8pCE'dRfts}É~me@BNxdUbMiewhzH F;AuHqKURmMH,GW-nBoA]_ /̿Ū 8̽DaޫUܩ("nxs%z|Ñwt+k[=@PooVqlmvv;FIV`iCy!`+p`c~~nl1c=dygTFuBDzE)UYKWBd1;OUlwN_K_&vd +/GoYRΫ iLFb Hy1Csn\_HGC9KnkZkh}wNBJ[Q7`T>e ue_5bCq{?ڹz ƓW$?(ئ)fGwDȣ‹uxs=aFZr>C=heja*c }O{`IKNT-jqsyIapza~`;ep@v_=XGC M%KP?\OF=I8bTqf^n~/zldؖ@ݸܰҲ'Z*ΛU{V~햷n8Hqea>E]efn%_b.wIf RLOjmo[x\ijPtY zi._ps?f(\GEKIP[ O(P<8Wpha"jvcԹo< b+»<>ˬ £Vo"xsb-nelQeAJF TgBoa_ s&jQZJJjFhpysdr\ㆫm~^6o3qm^JzFMFS3WSSR.?7!ODo:hhbiqC,r]O:Aļg7$ë0ְMm2H6$cty&nqfJE@M9iv\eTy݋`+§0|֏KrJ r&:ڮI0HJy+srr`rRCKnhdqg2ao~ (7[>O'JͦЗcƬ-š[G]\|{X~/Cpga$BI_in4adxt~fzTOyS$l~n=rxjkk7vɎj>aqsg=]J(INM(Ty]:RwRC?=ZqickwgܡB/:ʼ6Pݷ ܭSOStʬUぷxF omd[FI Wioc-bjt.k[LMJOkiVrrzsfitbm`oq]n_MIOIWYVTBG!HXnn#t_4h݂l9`)ѫÚu̮EBФ来9+`떃įqb}NJ 'so"`M`JTqkVall sCTOWe~mx|pc-yIsajx;l^WPaOIyT~UV_P=CwE+Qllwv_/h0zcΝḭ̆[ʽYώ`~Ġѱ´Ql!ygoEt2r!b%UGGP pKjggi`v\-OU`muytcuu<y`kkOtru`UNIUR9X_TGEHQktd'f{ṫڱ*^"ѠDK1mįIE|Uox@Zxrd\EN%jVj-mch|`zbQT[ nrwnawQfr|!J{+egru:c[MKRMRW_T\N*DDf!siZdTqI ȱϱa\'l 5yȣwA׵ad7Y{~CKppVi6b`FNako?c,gx}gVQfWnotnIxllMxS~AkfcstiX^QNL}RPrf^QPLUJjpiaTs}pe NfRjhLvf~`vgq sqf'lhrreQFQOdOHYZO\*XL>Uigondqu pL8_]ù uZSEsIcN&yԉb(tsh.XPa;qpclQbKM+FgķWF*tl^-Χ âJ`|3 } ysk] LLOy^r#m)`9psz7qO_S^ihuqy|ng~ʊ|/mflyi[^RNDOT#[XN`OBaKy[outasjӂC)-B[38֘aĭBߝٕ8}FodsUo`PLWrolc$mSnFswVQYf oxc}6-qeys cZlx4m_}R.QKVPWY`RF_HSnvbiz;dܵ40XŞٟ n7ѠỌ̀6y_rt$rbVISp@kihbkPv]QW bn+vz-tGe v%xaltsMaW!PKkVtTY`wUIGKzl(uf_gFuԨcQMea<ٮN>̥%;ӯ?vy#B,"yrey]dGQjRkmdi}RzcSAU]nLsw&`wgg{r)}{ f^h sud7\;NM!TSX`UOEFgsj_eqf.6XW緒A o]9\55Xd | ejpiWbGPbelpdg$y}3hWRX^nEpsu+qxCmlx쌢~k dGs4tj^8OMKSQ-Y_VOUWD#EW_gslmgllzR Bد찢乼 ˘Uibon dquT쉧C=<[ЧMѤg$xZqꗌ65zɕ˘_ʪP'ۡW٤L֟ܚ&FSaf-Uu]*bxдʨFXn9̓gaBΌY}=m:,g'2Ya d[TdYAk S<;A6'".??56<0"#p%82$<94] gA )%}#%)`(%%>(E(')(.2c58t==8N5>=9BJ LM}PN MQCU&^drwpIcUg{y2"egm#$ea0?bԲRW+;92CzH{r5Q= 1w\@oC:ei݇HjGfoص#Qf yʉP̹uӬS~{X3hU,ofJbcc.bYQ\LPE<9j61-+&+!gYx6 {zWT8 ! y ` 5 W ( eD9!}#~!$+G0233h5m76\328BHKEJ|JKMGS]Z7\YY`5glpQtst}uzla؍ӚE4,4:KȲ&dզ0׺,o0Z h1g:g H?@nJnw ܝًښܑdע`875%I|YKach ŽHzX6?xhZcY9r'&}{yyzxv'soldkihhgd_(\M]@\\[[[\[[YWP!N)OgPPPOMNLIJL2LDMMJ3JJJGEFFHKKvIHGEFCEF'F,GGGSGEB)A5;#<'@CC@=;:;?>==A@@8?=k;:/9J86[654320y/..-*-,,)+ *A)('Q''W& &%`%$$P$#@#""l"!u! u x w b  D!F! ! =!!I""N###$H%%$&&&j''(H))*+K,]-.j/=0A112346e7p899:2<=;?~@gABCEEF\HIJvLpM OPyRSU>VWY[\C]j^`acef:hijln-pqstHuvwy{}ɂ*&ɉrtZ#Ø{gΟ~=Q;֩몁 J #շи:gּAɾMP¹{2œlaLjɂʓ.1X9˞ ʞm f~:a~ ŏ(*Խ%*z!VǶBٳJrqWϨV%D 랫aӚ?:>s;/3KRgcD?'~}0|zyxwvutAtsr!r9qpGpom7mlkjii:ihhChgf-fed+d dcWc"cbbWbba[a1a+a`y`D``_?_^^D^^L^^^^C^]"^{^E^^ ^5^ ^]]]a]Y]]X]]]]^4^]]E^~^^^^^_^_h_H_____C```Caa}aa bPbhbLbVbbccd'd{dd1eeee_eee(fffffggRg.gjgggggWh]hhhhh(itiii$jwjj6kYkZkAkjk-kZkxkkqkklll_mm nlnnno5oeooop(ppfp qqqrqqlrr s^sssituuuvvwwCxxx_yzzzzz_{{9|l||]}7~~rl_*jفxꃄޅmކ;nFtՉjtƋȋa"ҍ5)l'nяفF ǀ€Àr=*qcU(~~~~~c~J~<~~~1~)~}}}}}}}}}}}}j}p}i}`}J}W}G}\}d}Y}U}m}o}o}r}|}z}}}}}}}}}}}}}}}~~#~~!~5~A~H~f~k~v~z~~~~~~~,EGQYp|)?:Q]ewǀӀ̀݀ڀЀ׀߀ހ݀؀Հ߀݀рʀҀ΀Ԁ̀рπ̀ƀ}utyqlhf`^ZZWTQOIEA@;632/,'%! dz;wH}rN~|i i|.+μ~DqW S~-U]^އBdPq~pԊjoHvdq\q[Kw;KdusĒTyt"|Wf Bg]ڄ/yqotRXSHna*pU^٘e%@ƍlUz;AvTLöJŋh^fhIn$izh -Mx嗣c_cm{NaW%e|шYnzr\q)otpw푀ro|xxxoiZlHG4Hs\yy}g~ltEom[z{ڂOkIwgU\o6ܯeX?RJLe+jxؐ_tkk߄|’n(}qי:v#[yrJg nvw0oiV8^ Y_B~}ogZŲBGd\r~o)1g 68oPݖ`l0b WsɮhvgrNzdrugzqMc]vĆ BİoWَN p)s}\Nŕy^snс h׫Y)m_Ԩh{g{PzuQmy(poiZABXnF`VxsD2ms҅:@mn{grsfveVZ`}~szs!bdIkAt]](}%~Dtː:W.`6u˃H}~y{,w4imw7{un6gE\םzZʹQ. ]ט~lLtxsmc*8ZpqmZznƕ{]g\gM.Z{r;AztrXKQWr~fOM܏wQ\T>NYLg1IrsƘsW[{ym at}nX'6u{x%kmuoIAڃ`:CNb)kt|sk?F^ʗ&x afkhԓvl5q't<}Ǟb6{:_ei{!ӓBimIiof)qrW1z]eno9_vashmAkrGuGaNn~duɜno\~ rQW4wyg{eofwf)RtRr+yЈEo'\tbbt*oanX.[hd@z;w{j,Q`~h+ŀzIjz:,|{pgv|kxdvZu}r苛{ ~ys1uOu|~ tBnmp?uxR_,{䍤i!i [h1q֘Im5fە}Ɍgr m,jv'qޒpԇ]i:Zwm r{JmTr}iljkmSsOBrƂ[gkd\+bayQz)TxӀ}psdk}ΏqRm[bGsBn;ngG#hmo{Lpqvhz}~nY}V}HnyM~BtFዹrZon qohK"SxyIjƃ%vɁxmj~oCq3{0otjy!pgmey{ْvy~t>xX={d|Ȁz~[~J}R}/M~~h5~)}i~}=݅{yx8N怋~yF{}Cd+x]t{oË {@z҃|{y0=~V{u|b}{&u^CqsχCE{{}xkR?wxUˆ_\tGcn{~~񅣀Ttz{tubЃֆ~uxc|5t}~5F}r|u~z͉wKvt~UjhlKvXsttbl7i){ҙ y3unt!zpV&ox}tPr~_{)~TqRx,or,wы_~j)|OxdrЊ|Qoyr]vpk!YupZu{Պst~؅0~qVtX2}+usUl_xzI}*}ebpwSywiqZ~!rd&xJivyqV`w.Vdrhbf膌݉ok%pMu-owou[moxYEtZe~ll~wsq|{ٍ~膩kJʍ"k`Ɠtr֟囱 `#LtDpmw4-~m[vjq^bxHMWl2\MmsOeLz9G{o|Nf|c#~dmn\xMyq2mndwK닄gqc t~Ggx΋dHMwcgRcnסgZxЙmunnquUmѦbtL_߃N0yV҈-NJ{fPx]{gvp3q{OsW>ހtim,:p}P|0^guktvxx),-Յ'hgvȊ$م]q|}c0ut/8|)sMqlp:o~Ri{X'rˏ|ƅSĆkr"}뀓}ƍtyPmzUxEx;܉m(mT7Pxqʅ|jj|֘=:+duggq_=|{/v'cocxKt{wdS~n$z-vgy˜$0uPfeyzxlLPwitƋvv z~Ԛco~rTm=~ՂoyP|vuti=zS`}|lz͆Qzw˅]sk4G?][~ć2|I{%Ks y>KWppuzw$ suy~9sop;Ɔi={rbaeo߁W~|6Z xp0t h}}~}gsQ\|-Dxpzˇ o5o#tLx}ЗoKl}xDxʁᔝ/n-qχ쇀z1z׀|8~Ov3{q[s |́`~^uqŒ}~wo,q6~lQixҏy$tsu[̆|z|Mxnlrp끏rtrΌ{un/u {zĎʉzv`zs} ywH݉zXsk|a{a 8{s z#΋t{7{+}TsM{w/zz.~y?r}rt{(zYqhwR|im"g}}ǁp s%v^ׇE|wz}B}yƄ]6{9{j/}}|~i}}ڀ"}.}w~} wy‚}w|@~w|yx |r}~Ӆnk{{cJxmy~v+~s{t{p݀Y~ \|~9ʃ"~|{|Tza~|~~~~~|ixv{xL#y>q6|-)}D{ze~Az܀L|z6肓|u}2~r%@ywh|zyx~ei]~!~f~y{G~ătT}W|<}Bg|zՁ/2ɇ9|{.{P}U|Mn[}.}t|<~~1)~/|.ǂ~}w}~o~n3Dz|Sr46}S{~{=~|~By2 {|~yz$~~9聿~+~}~~b{ za|pՁp~|Iyr{)il~|n~OT~j~~v@}~~~8 Ozv~1Wm~ z~ ~}{{,T؃}xz,@Ӄk+|y}Ԁ}.~a}~kuki95~ºŘ/'x+z70<IHcNO,%0>kF_X ABK7@=owFF|Ӷ۞ve7g # IU2K@3D"[ǔӧ'7U u{+0,o 1q1 (G/3&\(@;b ^j߯^̮?{¨^wM_]g矮ף܃rĎn{#~W=}S>N{ =6 2~*gLR~[@ˡci_wr5[ǑDfOh_ H j%ab_z_s3\g[NXzGtTVïakx{~K偠C~뗉´eӨa޹~SOb΍7~gVsoLr[/eor}?J7vCN'KVr^n%NwԃYUvl&KVyXao:^S@SLaozmC{Uxxa_cSуzqoGZϊv_{Ēwcoů_~ɀ~~{[ػ>gZw߅ERx~tnÅFvhwn{[Vv[`Jo|rD_c,>urW%=Kw.tu^?SgvdGe?sXxk9N[xk[X6_KqkIY/t[rxy{N}udl|n{~zwuąq~x~Z{TzlQx|~{nrmlrufxs~re^FTxt_Q^`OlRYY\`F`9acei\qw} vdt#KV֋'wn&g`\[XX[^_Vab~3ԌI/װP(.BՈ܆=œ8ee~ g.^^bklbe`ahpy{qrf8]U(PNSNZahpEw~~υ͚_%ͱpƳ9(ĈƆȒݚؙbhL]`Kjoj&ediqyC~v]j]RK MRY%aZhovi~υ)Vd'C:?$!p苣ڑ{G hj\R_}hqooihrk'ry~xks[MmHKURcY}`gov=~݅a*/YBÌ >< *̈l{\]fHqsnkcmry}xiVmHFCKQX_gnPv}Aّϧ7ҳPHщoW7pgV8c-Z`$ktOvq`oYqux\x{mZIEI|PW]dk`szookx9( prɓoԘ߂Tg[V`jOtxvrr uudrgTGKG/L RXd^8eWlsza‰RjJԮޣGJyq۞8j\_j.suyxusis qj9_NGSINFSX)_elszH̗ӞI$mYЋuQ;ˑ"4*m]4_ iqxz`w tp7kbTIH KgO5TY_\fmszȭ93O/lE' qS^^gxpvywgsYmJdXJEHL$PTUZ[`fVmszbLwUlfiAF}8S|mĎ@u_]DfnRtiw,v'qhj\+MA`BGKLPaUZ`*gmtzr-Õ]ТV ͫMÍYHLɦܜߖݗ xaM]dlqsr!mlbScB:>E|KhPU>[Ia|gmtzc If({d%ީLЕu8z;b\Xcjnomyg3[JE95?z:͍^񚋡ק̭ ⶡ,֘؟ͩ\Mە}d\ebixmmjbTDC44j#]xxZl]_f5ig`TADt2+.M4;:BGMRX^dk]qw&~F0̥08zwE޵2_דbK`U>'nA^^dge]Pr?/7- 4;AFvL0RX^.d\jpvX}ۃeT u.',ÕV8CǷj_Sq^ ^c)fzcZL;[,~,3;@4FKoQ_WQ]ncio.v|=薔>Ϫක*ߦј~t'iBs_R]Ebd|a/XI`7?*+R3h: @fEJPV\bhoWu{HՈlʜ~#{S0| ?k}h阻u`\a7c_UF3(F+29Z?D1JOU[ag?ntzoC𛮢Pɯ@N-޿ U>z̾׳Iwa\_a]SC0'*h29>ChI%OUZa#gWmszRΡWeڥ>*ţ˺yb][w^6`[P6AQ.%.*1a8=CH\N+$|)17<7BGsMMSAY6_Qekq6x~>ȋuVʳ߾¸`]j {B~]eXZ[v]XL<*#)06;CIjOBU0[Eaqgmtzz0Дe'~1(Ʈ@5L;ϖhryXSTyN@9.K{&-?3a8=HCHNTZ`fl:sy-Y\ ĵ /Be%+05C;@F.LRW]c;jpvm}BԞ}^ eƩD3zECϞ׶gJOA8)F%7+70]5:_@FKQxWx]cipsv|3אW3鲧'ή%ˋ…è54Έڣ$oIg;1! `%*/4I:?~EBK QV\c:ioub|Iʝy>Ͽ<>ͽƀhGԾ֣,˾xI4)%.*-/s49?EJPV\bhou{Bꏗh?'븏d˥ϽьйB®|1Y`KQ.<$).4w9?DpJAP&V,\>bvhnu{9݈MϪınŚ3Ҷ,η }=@ѭRM(mQ{s_e$P)~.3H9>D-J PU[ b@hnta{PלK#ԛbɫ ˸ҡ5҃}O"  'o $ )I.39>IDJOU[ahNnt4{́z'㕷rtcCf;խ֜Ԭʹ֛߮qKgPx e$(A.39>>J׺цW@%R|^P3 V#(.m38i>DIO}U|[ag nutz%掣vH291(nCْk!ش Џ L  m`$#(.`38g>DIOU[agntzFlUUTIƽ?ѣݷuH$ S "#(.c38g>DIOU[ag5nt{Tە|}q(XӷؕHܟչʳ|g̤{G!&  -' #(".39>1DIOU[a hRnt9{偀=Ҝfeٽ߼tϺp2ü,sDLr.m;$,)J.39>NDJOU[a-hsntW{`̪ԱӸƻ5ޚa~$nDZ_oR6%;8E$V)i.379>D>JPV\;bvhn-u{Y\G,47ME.`6ʛ˭Ȥі.paYl=@,)1p$).49?DJZPWVZ\bhoru{AT\]Zܹ=ͳwy}xKhL|{oXMRXV.L: 1)5"=CIHOU[Fapgmtxz >픪d ]AMš=b bW}|pZMHRZZmR8B44U<[_agm.tz2ćew 5„eݐP. #ՈB0}rG]MyQZ]WzJ&9F5;CJO[UE[magm4tz8͇cX0'۽2ռ} SQݡa}s_`NPSZ_^\Q?6; CJOvUM[oagm:tz*^5ٮw ڍyGT_'%~uaOOY`!`JW5G9:pBIOUi[agmKtz2Oޔ XNQ%J=v~ޣ;Ζ ~ZvdONXKac}\O/>:gANIOU@[Gatgmtqz .姦"*L߂FKvlLwfPM7Wae`VmD<{@HOtU'[!aFgms>zCɍO֚8QݬuZcy |Q#o"e0ox-iRLUX`+fd[K>?G$OKUZ` gEmsyizn ="ϠB~D♴ [nH%!yjSKT7_frg`USB?F}NTZ`flEsy93  }}[SԦQRB zlUWKCR]dfSidZhH@pEMTuZA`Jfwlr(y\J6Ү**2z1}MRŝ8!{,nWKP\ekjh_OB}DrLSZ_e lWrx!tɘ~0Lwh΀x|F{3D̦V/H|Jo|oZJN&ZpdjfkdoWF2DKSYv_[ekqx~ ~֑!'ߜm|Kv|Ӌ,ѡB䬾L] ~p#\KHMDXcuj(mh ^LDIRY_dj;qw}uA|dʢ1fd yt{)ߐmLK쭳ݪ7 rM^KKVainPlccSFHPpX^gdujpwd}CȖ3\T!vs{o67㥚j$D'{s}`8LJT_hnnohhZJkH{OW^cipRv|%ԏěӦ\wsrRzEjSI,;z߆2ubBMIR]Fgnp~laPHM@VF]Lc+iAou{^韼uգ+aqyqryFԓ*멮2weNHP[e`mqo!gVJLT\bhntO{ P^ 2,e}opxk2ɘr ku4zfOH>O5Z dIlqhrk]NJLS[>b h nEtz^CߢzmoxZ-^f'!O}hDQGMaXfbkq todSL)RnZwa~g^msy9Ҍђj)斳)xm?U GJT^gowuv)o?aQ?PW_Af7l/rlx~J18@KATori5muW}teA ~$#qrW+GIqSJ])fxn?uwWs hVPZV^ekqw ~qpϕJ!C\fTotglux|rZ]}~9@&uYGHR[d mtyvm6]+R0Un]d5kq8wy}ʃ㉻FΛ}kekYt{ǁ٫< ֯>Wz6]HuGPGZbvksoyysd|UT\djpv|&0fr_yhdOksz؀؆ތ֒ԘĞ= q`k[` IFHOXaaiCrFy{pw,lZTZbjpv*|sg)ꘪuKe`cjsy߅ S\񷆦|eJEMW`Hhpx2}T{TraVYaiou{هmOٕB4NQpa}b~jxr y'MeZ]˷w٫jL5ELV^f}ow}c~wtiZ0Y`huoeuT{tPƌhZcM|j_a@jq@xE~rjd|xٕpLODKU]env}|pP_Y_houzdž _Rv>d\ajLqxwn} @Ϩׯ0Gεx&SDJT]dlu}6wf[^gntzHRAUb2`o?^Zaipv|?gxAJζrð5gXjEIS-\xcsk:t|x|n>_n^f)ntz-osxLg!YYaip v"|uݎ4㮇1ŰAh ^FH0S[bj4s"|Y,vd]_Vemtz$Otp^uUY%bnio}u{Dl̠Yv Ğ|Hoe\HH^Rm[bi!kemvs|sڔx}MVkGx. "I*2p9?EGLRX6_eKlry`ܛ3*ҿV ۻ5Ͽ u$mAs{G ,ߛFÃf>(07=D"KQX^He lry׀׎•p457jxtx~瀶lC̘a7y%;-4;CJP`W^dkry&JisnT1NXʬohj/{|~~}Zj̍y3\5T8!9*c2E:AHOV]dkr#z{ˈ2STQt׺e}%ǫej}i{Hzz}2m=ukX8j#'08h@GO#V*]DdkrAz#ۗ(2mɻ30{uux|N.Ä}q*Y7>%"*$-6)?F[NU\dlkrz򃭌?mӰsX϶r/ &Hrsprwd| #;zjW9 '1:BJQ,Y[`gnQv}97 ,ŹfމԶx{lkouz䂍߃ʀ{qa6Cr&'@(l2;CKR ZaDhmov}Uq.ͼÂXB:wT(uhgmsy~~U2zjK-+(83<ELT [ahp/w\~o4ӧb~Woɽzٔp]dfdjq/x|ITtT_4Y&6)3}= FMU[bipw~T x˳Hcۓv}flaa7hov|_ـg~^v;# )k4K>GNV\cHjqw~hRuԾ hˮsSvj!`_Dfsn+v#|J1ΑXP(gAM()C!*:5E?#HOW]wdkqVx\Ӓ-usA ¬udŶPjp_u^d4mu|Z@2TqI, "C+5 @IQ"X^Dek"rxD˅5}ƞ4ƵN 9ę\S(l_]Mcblv~S_h-|Q0 ##+V6@IQX`_elorxS̅Ukb>ٿ|A_Wؐ[qc^cku~ &W؅rY6%$,D6~@IQX}_e#lzrxG,O? Ωha Z͉xhaTckt^~Cn0RZb<)%O,86i@IQY_e7lrxL*@8ĩk8Ȼߘ ዺ%Coe`dj8t~F.W XkyC,^',26V@IQY_e3lxrx; IŴS߽ݎو;@Yqvi%fjsg}ÎL%{EtgJ0 )-)61@IQY_fAlurx‹ƣzݹ0F| v~ohjr|7ϕá &\'~R5+- 6?:IQX_el=rx~O2̮Nv1ӓÉ푯vlkOr{OܕQ)|ͪS[;y-<.5?HMQXf_ekrWx~BireA礼䪉g&5؄}Dqmrzٍ ?u_c@B0E/$6{?H(QXG_ekq%xh~1좣.qɞL|}&ڔw1p@ryƃ1RwlF3p0E6O?HPdX"_iekqw!~wՐϖǜ:ͭаM냲{y{Zĉl.ƍ}ssUyVr٢tıtM(71d6?HPX^e'k?qfw}0P\C˧/Ӫ|wwz3ɉb̚H]xtx/2ڭI}T;p36>G!PWp^djp wB}ߏ֛=xXwt%vy~ÉaRь}vxY݉XdvЪW\>@5?7>ZGO6W]Md]jdpv|0HO< ~yAssru=yU~Ή*=6#z?y[PЭڲ4dyE 87h>F1OV]cio v/|sє᥎Ut"pp#tx(~ۉя^e~z~_♖(ܭ”kJ:8o>FN=V]_ceiUohu{ց!ԟ܈y+pmfoGs0x}gl-117-1.3.2/music/CVS/0000755000175000017500000000000010145416156013447 5ustar cedriccedricgl-117-1.3.2/music/CVS/Entries0000644000175000017500000000056610145416156015012 0ustar cedriccedric/ambient.s3m/1.1/Sat Mar 22 16:06:55 2003/-kb/ /dark.s3m/1.6/Sat Mar 22 16:05:50 2003/-kb/ /electro.s3m/1.4/Sun Oct 20 17:10:10 2002/-kb/ /loser.s3m/1.1/Wed Nov 13 20:58:42 2002/-kb/ /softtec.s3m/1.3/Sat Mar 22 16:05:50 2003/-kb/ /standby.s3m/1.4/Sat Mar 22 16:05:50 2003/-kb/ /stars.s3m/1.3/Sat Mar 22 16:05:50 2003/-kb/ /winner.s3m/1.1.1.1/Thu Aug 1 06:15:25 2002/-kb/ D gl-117-1.3.2/music/CVS/Repository0000644000175000017500000000001510145416156015545 0ustar cedriccedricgl-117/music gl-117-1.3.2/music/CVS/Root0000644000175000017500000000006310145416156014314 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/music/dark.s3m0000644000175000017500000010052010145416156014357 0ustar cedriccedricDark predator SCRM@}     !&9H\i~+:I\p((,$,$,$@:BDark Predator -SCRSTYPHOON4.WAVy@DThomas A. DrexlSCRSi (VSCRSg.-@MSCRSM> =@̭ModPlug TrackerSCRS+@(a@"#`@(a@`@a@$ @a@0 @a@< @a@@ BaB@ CaC< @a@0 @a@$ @a@ @a@$ CaC0 CaC< BaB0 CaC$ @a@$ @a@ @a@$ @a@0 @a@< @a@@ BaB@ CaC< @a@0 @a@$ @a@ @a@$ EaE0 EaE< CaC0 EaE$"#@@a@ `@#!@!@a@ `@@!@`@#!@!@!@`@@a@`@#a@$a@0a@@a@0a@$a@a@ @@!@`@#!@!@a@ @@!@`@#!@!@!@`@@!@`@#!@!@a@a@$a@0a@@8@(a@"c@ `@(a@`@a@$C @a@0 @a@49&4Y/*&"vQxPf LN$B:!W$'S+/ 327q;?xD1INRW]-baglqwU|ދǟMhW#+ɀ̛ϓepڽ޻~?BZ4,6-T.gݑْۤh0UaƓäyHVk]̘7P{{qxuqwnYkMhdeb_I]ZiX#VSQON]LJUIGFEoDCB8B BAAB"BfBB#CC9DDERF GGHIJKL N/O[PQRS-UfVWXZj[\]*_h`ab dAekfghijl mnopqqrstWuvvwCxxyzz6{{-||}n}}~c~~~Mzj~~zXX}|8 \2~~}|Kށ~} ؀.x.w] }~6xTz^#z|xԄw rzzyN{.x}͂){sV|x-9}zr~=|nwq^SzzH|`wȎ8uFwf&?r8kz5~~!À1ryߋm;rr全4N~v{q0~f |4|s~džy‹vZt%~fDdZtpX$vhd2zrx sxkr҇xmǕw0ro~rzK_}en/ wk:phu. J~Gfe{+~wj_Jp.Yxpptmpg48sm~9s{$r}}"ori|!3sLhزĘwx||z\u2ԟwdnӒ}[oxP`'wduџwoZgo7c\aIA֋Ffl*skv뎿il wQq8ydlhhunz0IgXfZсq+p4y:fZAqvmuq}inӀpxv$Cih¾NjE_ty۟DVzl%|+a]Y^i*j*J ֥OH|}xƂgZWfdx0Үj$D^՛_setƠdnm-TRO,w8(VKlfVSͤƚ/ @ ijZ26@^{eNe},*e$evOvgfkdK7_IlԒH7n]NfΒ J5hm# gglB }Q L`jlmZByitދ2gW 퓅bJl}o9qd6*X=[f0xCf{ktt}dyqkؗ\tLgFy:񠈗no.dwߏ[BhCs]}`q>wˊl}ZCdg eve2_>~z(;_h4mmb})xd{ssacݐ尀$bn\Q6wfj{o;k}{=h|UڞSwwɒTpiXkDKvMb]B$~Vbmv*Du vbHjb SJw(Psj#nr 2锔rBY]ІwgiaaG_w ƓیR|tl>nzp5 dDjxhm}{pIsg璬rtnvvdΕibcct+pn|݈sr8I|p]nOmkO~)80}ePboxC|0jg,p|Jo|VqwƎ"jx2wvԋWjdidvnO{VSA~Q|–p{Xz_Zqw쁰6mmZy^IׄWsNxF~Wlm Jzohu`l>Ι~,|9&vrmq~}~}b'qLj{ 6vmxZܖ~lkqvz}lZhB}_wv%j6n^gyy|w~_t>znpN{,⇩$mT}fupBhxbs|^n;w_GY uP{}Tx!u\ϙhqJao|$?}6ypvdk֕tcug_z})z~rxklqƛKx׈f~rUs8sy+si w(ٕvjj!|3qVgvh$~?d38yftJt|NIyov#~{vUpݍj t/ox~H>{) ~>snO["}}LNualh T}hdAw^VĉLr qs(|,xa|vkTME#ro]{syԊs ${yy*u@y|wV֋yp{uzAl&zqxG*rz{|~]zuyyxًY~x~S}orzɃЇ!9ykncLuȚK1|iy}bzTx<d|2y)t}샶9~tAxn>:uy3ωvuz&a{u| ~'wwWmdtցτ{yrx}~nV~Tvn5~z|{w6p!}>:dz|Ԅ{lq {%@mG邐k򃞅ʄ'Z¨۾kv 'm/L昃dM~s{x(qXCV-Hޑ^6i{bSm }wq3Uxy;4_i#𶨓TdRo00\B6(Q~oxiaƠbSc9s|ɀfz@Oé}<}1фK-JxNzB]9ngzgSuH1x؎~tTgIveodxn{eyxpErއMWXz*_ЅZ c}*hWFcI!w.bascs-YxMрbzsMHΑ-jpc+}lCSr{\Fm^YqS qɋgzLu͝7vqXpin_e~nj-ui vk@%#HPDX^j|rʹI:KKva9!{0v'{u\bimIC`y7m-nFzޒ=~рLBnbYYtem^:uC||xJ?jtxhŸЏsʑeOOFF36X>cyqZea-FӁ)A tx,gf~+ ` ynj{wLdJ^Q$_ggn sې6As}zuwYVvmhQnA t8o+HZ-2P5rq[=+BOga?QKbgx/H*Վ nMЄnxߋ݇8V;x@tviWVTOamhkd~{HoZ6`Wj\Vn]ޗУ7؆у{KXzTY]"ҏa~̌WvUfjYnRbb>m:cikm6vz]ȖmdZZ}Sv;w8en\gLJޒʏlil_S)՞8{gaf^L<8E>]OL{ju򝜗uNjt$3OlϏri1veIVZye=]]{$zuN 0yM7{` %< fA~CfeD+?fabKi]JA߆˪ak]@{|3nќit:odulPM^jto{zg8t>o֑vzuqہS['ph^l{hLolZo[eL |gyw٪w7⎭fwT Ht3Q\7J-Famm'KΔ{~yقQۈ,udt z+\V.Z3HIT1U JUawːꣿ1`AnvYo~_tekupTEZ)~ynN鞐}~p~x dž7])^O,gw^oX}{~/Ƃ/$ƨ)0|csS+L^Y>=b[yq|`8Ӣ!{eu+q/ }@{iJsppkQ.RY`slmh5=)jYtؗi3t+~uldXj@pnoF|F"iklv-#~QRn7iun]ll[N7M[\T^ Ç֍|χ;[HM׀;e|y}nj\ZHLLtIi_wFntSe+}sx}t{Ɓ|vpkomefvx-oQq"(a){m~:ٜNX%dxUiKRyWF>]^Sz7xxÍB~X/5p7mܗƎ}y~]vAQAlwxM|Rzqmt.um~INy!{uhcmvlmdo}ti…srĐAMr=Әx^2lfg|UXAAX bdt\z}#A|5s񀁕)ٝ'w1dURXf{xj9pؐ~;w~dkkyg'g;utۊ4Uۓ$smpvf.~shZmNKIdQ`im g}ΊHxtОIm։x)ycDT/NT]uUvXjl>db{ |ڂ26m#{movrjxh{d]kᢩZVʧAxn{6'=[j>|r`uKG@TFYbU<]{$ؕ5bҜxn甲* Dr\]NREm}se2qem5~xVyxko}vx_urVtk]Z fn{\pgf(هm}AiHN%jL+JC7[,~I~x^ԑDzup} w͎âդ6mdgӍHc5"(yIeVPVdllkr:rwؕHnώ:na[4bmo&xtiJepݐ;tkax򆎁ԅ oh_h\ ^=aAjss'w|&[!/~F U\]j~ kZQS4`tk/mk7o,{ju>ts&܎ُustd6\_Ikv wBmPevkzQz~lrv< 4&0NubS\]_gAqav zYm@ܚn1)ߓ]䝋p^WSQ=\?iimkQm\wх’-myrj~[Zߏᘁxgs]@]ggt!xp[fHhyɒC~knboc&傹Նe}zf\/]_d oux HʞA?Á1#Ί>1$iuhbXUQXfGm(l1l1tCI}rBzɘjzږ}kJ_%\{dqhxr.h3ftD q mF|e׎%ֆ~p!lk]\X^baltw}E蛅E&Bʌ:zfWQU.cjllkKqj~Ӕ sv?lNe'oa[WaTnw1ujTeuo`6Gu%l/w Ɓz>(V-?҅~tۆ~~^{|uixus]xumtFs~t|vs ux]swnmqzypplonqpr#lrxvRprrss q0ty}5{yzyI~{n~兄|%O}рTĂJKӉ|~|=zYx{a~o~}'~{~}|{0Ѐvxy{3 ~n}I{4"~~A~ ~r~䂤 }]~ wj{zy{z̀K{Bxuz{z|z*{A~~%h}-~R-F7QE5 CF ̇؆Άщ}F~*~4|u/vrgvzspzpmj~irNsqlqyyw(tnqay2tqvunimmtmnl)tqcmrrsoyooo[p slno|oogol,l sruu)vsxy}Pzbz~Kz|||d*pbNnW؆%І;*͊@̃ՊҊć,-ʅ@Ž %eWAbwیօ#V󗉗Ä{y<|MS qr|}axyywumkvP|!lR:\}xxNu{xrrvt0uxvsogfks&{3{ywzE|}lqsw!us uwums |?w:xvv_u=yw|w~]xDւEzR{ӂ|~{ZӀ [ l~~5~.B3ṙ+D!{zD{ztxvklmBqpm#k0mjgf/d"kepss'swstSxvpz~Tzz{}z|L r7͐؍QG脕.a[R[ݜ ϡKК߄h(}str?j g]XR)POTRWXYVX0]_ eJlikqd̀̀v,yGys~{{p-oylfc[fX_jb]]dqk|2 )|xzvav'{|azvmm}|Z7Ԙ;؛qvCZO5AFZSHDt:;=5:ELwEIGR9XY3W[bmxRux{vE7âH@ĭ 0Vݝ.nq ej;f`VOTOKM)HIMVSUbfjptqu3|Cw3}ȎO"tt)6zzzy/i]2ʖR'F:UɉȀ~|\~ 8p+d^Šgcq=3u^w{{݀guJz~~^{x v*xyz}}wt]xrJwvu8qtxpxx)x{ix }\Άy0h}~Kxs}\v{{5~ PʅswV/V 6 g(U>~}+҄YKjc-O؉s놌΃ ȉ4G'S fpώ=z҃}w{|5xhzzwXvwzwx{v(n{owQxe~z;xCy!u=y{U}}yuu|yy?vpnAq?sqQtVmRtnrrm3qmr0s~olp1yk{؂~F^ړ7])nd)|wzt|wvpnSq+wrzyyy}|2|@y|yyuyvvvvUxvQv|{z{z{y|y}yz~Q}u|:dYĂӁ{N@ |z{zzxywwpvwtyhxovwzFuLunyvluvww|<{y~}|y% W<6d @yv׋Ӎ֐ÔV1'bIJ扸'ψ6FՆ# e/||}6{zz{ }8{fxwxvvurqttxu1usqptw{kMjvnLntolv[oo=suBsxw]vxuwvxvr$o#wqpHs7qn[omuun(kpqnooqwur>zy|{}`4/#Qۀ$lʅJ|4iz刄?5L퇤"|81Jى^=vCrU:Ӄ~&wĂM͈U~DpƋPxpI.`;N}򃿇~|}}|xq uxfus0utLtgsq)qrnnDso^gynimjipqqIlZho;o4tpn1jikbnr6qnmvqqstJspstuzprwuzxu zM~{ wy|{}Ɂ[~€3VFDrЋᐴ`P\8ދ֒є]Z ׏aOQs~;iJ1}j߂Ёs~xz~5|xvyhwsz>zwptvv |Yz,ub{~udxxzvvEsw||}Dyzyy"}{EttywvՁՂ}@^{]}z"M4[҉|Ў8H%Ă`H@ꅍ|灰P-X5oZ>܂%Ё{kFzDw{P{Jzz{v*vhu}{{yvsxz+xFtsrxNxrq| yjtyN~u"rx h}tz6zHz}wpxzztPyuyvPyqquXxvtdxyouYx|suvwA}xvy|&Yux)} zt{u{vt?~D|}{1|wz~iypz?ㄾ 1e [Cϒ䋮D̏bvf{A= vӐފKM]8X8w`3>Q ,| )K~} |{L{| ywBzygz?~{v9zz xptz{Yyy|^vv2ԀL"6}Ozy׆LKrj~׈Ԋց݀D :/>p~փ][y~}wzxw xrXwVyyvuux~`xqpvz_u;zTyr{~a|w?sqjhkj gya]]ub^bafJhylfnmvw:|5z+dž~tevogHhbEf2oi)jrunU~Vňe&Rfڨ֯% ̜۔|zDsa|fi,c9^XaTQQUTW|OPZ|ZVjnXrxzGȅKuwDd2&dչ6ɶ= ţWz0úKмȆʠȓ҃θ¿a,is=_OtMXTQ EESonAho6xkɜ|.YN N~||zhNOGJ;W^dKGA3 -QJXj@P2.4FZ$daeZut{f^h lzsf[]R{L RtQ` f$csnu C"{M vfҭ[k*i#7E?J.W : "HR?Kap2~}n͈HMulgc}h{s!yyOџ@h rzޅ{yz~+}t☍HҥD6uǬ%;nr,Fz_{sidWg_5``acinfj.pn ux~qd}I}Jw|zyR|xrtu1tq>l%ppppuxyzxu~)~y|{u u:}Q3pԆ6QAmsrВ"0בh_x=7}Dx+z{z%}ysz>_9~{|zn{sy y{v4~e}lztvzj}zzWw|5zhs?y)yO>v9߈ńċ z܋t)(ƃIBe߈ʌeo|r3x$xu2osfwst yF{؅{A㆟ 4ux{x|Sx?r=rkpllghee*l!rUnrzujkq.m]kglqwsn nm?v%tupQulztpuUxx>wutxxyC}CuWssRzvatOwUzssWrsz0tsrxyx}h}~y?y}/}D{Ud5opv8 ޔTQ-dʍgNg֑/PzZ.щr2` Ά:+ MBZڇdB=}Txs{a}/zpxz xGyxx=xFvsw5wIuo2psossq+usr(qoytuyyywvx{|t&|u|W{~7߀ ~5d}[فKV{F`ځ~+{~q6.&E,}~i}m{@؁_(ˀQysuosTsmRsw.v||zwyb~2~3,:z$4Fׅ҅"h ܌C׋fɌ ,}($Lr҉ӌz:SdƋB;͂Bzz4{{{wxyU{y |z}x:h|{|lz|G{|.wv{v~yvw|~w{yzPu5s{yduAqQrv!pgquun]pro{3ssVy9rkvu_vo#tfu]knxvprarBo-owyq{oy7|x~~{{{˄|_#?ɇ m~DQpʊ8Q`2kKː"Ό08ˉN[TӅȁ~(}3<s ~u|Dy{vz{{Vt tpnxvuvxzwuuvwzrrvFvBw{izAx#|yk|U{y}|lx1}cl}}|~p |ʀڇ~*PԄ#ڃ@ʀ߅\yn~}?}ʁ~[}|zUz:yxZwvuus89z=/6>3''˨l5ÿ+˿Uսٻݷ)J2qJjǨ=j6š]&W囊DrUԒ ʏ?v3mቪU%cӂ 9~}U|{zyxCx!wviutssq^q=ponml?l(kjxihg)gfzeldcb!bat`m_^](]\}[qZYX-X&WVUTS==<;9qI'ֹȭ0Ĥ.5e^߳ ?7ohϫϪ30ifբѡ MF80ln%(he!#bh2/vr~}|8|:{~zyxwwv^uctsrqp?pGonmlk0k2jihgf#f$exd|cba"a%`~_^]\,\)[ZYXW8W4VUTSRMRBQPOOMkMOLKJ&JIH_GFEJEDCrB#B@@?7?^==V;R=V8`UԼ4ӾŬǨ&5ҽ9neܴ?:qq֬٫ <@uz'ZhҜ %Nf͕ݔ"Mdю2^s/Gy܁ Ba~}|{z&zAytxwvuu6tfsrqp p*o^nmlkk*j]ihgff0ekdcba"aE`_^]]:\][ZYXX]WVUT%TCSRQP PNOnNMLL3KJIHGKG[FED0D-CBAA??j>><<>x9-VhĽUƼAϺdvoʳ ;9lp$Shդ Pdޝ0`z1HvאLi)Eq-_w~~9}[|{zyx&xGw|vuts#sJrxqpon$nHmwlkji0iXhgfe e@dncba`+`[_^]\\J[yZYX X_==;EKl~}||9{rzyxww>=Y jO Ⱥt¿ռ8ԴPilo[`i Prե>f֟(PtŚ:gٔ(U}Ώ Kx͊Gr˅&T{ҀJ~s}|{{)z[yxwvvAuqtsrq2q_ponm mUlkjiiIhgfeePd|cbaaN`_^]]U\[ZY/Y`XWVV3UtTSRRPQPON,N]MLK K:J~IHGGaFEDC@CjBA@A@Q?>=B6e_(ҡ򶵰rѱ׵ԹOuRUE~ӧ3g+Nt 6_ߗ,Q{˒ GrƍDoˆGsʃ$Ry~}(}X|{zyy9xdwvut+tUsrqppMovnml l=kujih h=glfed d@ctba``I_y^]\\N[ZYX%XbWVUT>ToSRQQHPONM/MmLKJ JQIuHGF6FVEDCC1BA@6@??e=Lvp:=T΅ⴻֱɵ97q.̵(H Muۤ4dyƟGc>^3U܏2U9YFkȁHs~}| |+{azyxwwFvutssHrtqpoo:nsmlkkAjlihggAf{edccSba`_1_]^]\ \:[xZYXX\WVUT;TlSRQQOPONN?ES9uW3Լƫ+d?ܸaݸmGO]n>ȩ]ۨCȥդ֣آ ;dƜ.c3Z{ϒ)[:lɉ!OބCrӀ"\~}|{%{Tzyxw"w^vuts3sdrqp p?oynmllYkjii@htgfe*e_dcbbPa`__G^]\\=[ZYYUTSSMRQPPbONM-MoLKJ2J|IHGjʬ|TFW}ʸh@)(8Snx_A$6\δqM, 7RnwbL7# +>RfzȼujaWLD:0' &.7ALZhytcRC4&  *6DRan}ɾwlcYND:3,% "',28AJT\fpz~vnf]TLD<6.'  %,4U\o6ܯeX?RJLe+jxؐ_tkk߄|’n(}qי:v#[yrJg nvw0oiV8^ Y_B~}ogZŲBGd\r~o)1g 68oPݖ`l0b WsɮhvgrNzdrugzqMc]vĆ BİoWَN p)s}\Nŕy^snс h׫Y)m_Ԩh{g{PzuQmy(poiZABXnF`VxsD2ms҅:@mn{grsfveVZ`}~szs!bdIkAt]](}%~Dtː:W.`6u˃H}~y{,w4imw7{un6gE\םzZʹQ. ]ט~lLtxsmc*8ZpqmZznƕ{]g\gM.Z{r;AztrXKQWr~fOM܏wQ\T>NYLg1IrsƘsW[{ym at}nX'6u{x%kmuoIAڃ`:CNb)kt|sk?F^ʗ&x afkhԓvl5q't<}Ǟb6{:_ei{!ӓBimIiof)qrW1z]eno9_vashmAkrGuGaNn~duɜno\~ rQW4wyg{eofwf)RtRr+yЈEo'\tbbt*oanX.[hd@z;w{j,Q`~h+ŀzI|h𕟅|mVB,}3wAhjk{dUms`Mf#}yT[~.JJHIuvn4vbYSjhІ2I?5q$}t򀪁kZe}|_@rq0v囶pXʠTMRovsw"G[lnԇDq7Riu}yX!qmvvx|}URur,tUw-녣ߔ5tlٔRnBxVr`HKh5pЃr9s||eOIIv[]bz{YlӌTKn߀w^{uiQ](ۑΰP|qYUp!NAh opvрGgl~^'d\~كp]ja\Xe=(}Xx.]}q}u.\p x.a~Zutz1}o(st\Nlk@sqbFyq>0biwPԀF6хHvri:r,JjRqd|f|Cs][U}ȅ{gl-117-1.3.2/music/loser.s3m0000644000175000017500000006410010145416156014565 0ustar cedriccedricMission failed SCRM@}    $1N_o((((((((,$,$,$,$,$,$,$,$,$,$,$,$SYBS148A> =@̭Mission failed -SCRSEORG173U! @^(Thomas A. DrexlSCRSHI_Q_60@!SCRSCHH__60A@@ZDSCRSGATSD60Acc@lModPlug TrackerSCRS@ @ `@a@ @!@`C$aC$ @!@ C!C C!C C!C ;!; 9!9 5!5 5!5 5!5 8!8 5!5 7!7 7!7 7!7 :!: 7!7 7!7@$@$@<@$dD$#@!@#@ @!@"@#@$D @!@#@$D D!D"@#@$G @!@#@$D"@#@ @!@#@$D 9!9"9#@$@#@!9#@ 9!9"9#@$@ 9!9#@$@ @!@"9#@$D 9!9#@$@"9#@ 9!9#@$@ 5!5"5#@$9#@!5#@ 5!5"5#@$9 5!5#@$9 9!9"5#@$@ 5!5#@$9"5#@ 5!5#@$9 7!7"@#@$;#@!7#@ 7!7"7#@$; 7!7#@$; ;!;"7#@$B 7!7#@$;"7#@ 7!7#@$; @$@$dC @!@$C @!@$C C!C$G @!@$C$C C!C$@ C!C$@ C!C$@ ;!;$C 9!9$@$@ 5!5$9 5!5$9 5!5$9 8!8$; 5!5$9$9 7!7$; 7!7$; 7!7$; :!:$A 7!7$7 7!7$7@A@<@$D#@#@"@#@#@@ A "@#@D #@"@#@#@@A"9#@D#@#@"9#@#@"9#@#@"9#@#@"5#@#@#@"5#@#@"5#@#@b50c@#@b@$c@#@#@b7c@ #@b7 c@#@b7c@#@ @$@$dC @!@$C @!@$C C!C$G @!@$C$C C!C$@ C!C$@ C!C$@ ;!;$C 9!9$@$@ 5!5$9 5!5$9 5!5$9 8!8$; 5!5$9$9 7!7$; 7!7$; 7!7$; :!:$A 7!7$7 7!7$7@$@$ @!@ @!@ C!C @!@ C!C C!C C!C ;!; 9!9 5!5 5!5 5!5 8!8 5!5 7!7`7$a7$ 7!7`:a: 7!7@ A 7!7[}|zUz:yxZwvuus89z=/6>3''˨l5ÿ+˿Uսٻݷ)J2qJjǨ=j6š]&W囊DrUԒ ʏ?v3mቪU%cӂ 9~}U|{zyxCx!wviutssq^q=ponml?l(kjxihg)gfzeldcb!bat`m_^](]\}[qZYX-X&WVUTS==<;9qI'ֹȭ0Ĥ.5e^߳ ?7ohϫϪ30ifբѡ MF80ln%(he!#bh2/vr~}|8|:{~zyxwwv^uctsrqp?pGonmlk0k2jihgf#f$exd|cba"a%`~_^]\,\)[ZYXW8W4VUTSRMRBQPOOMkMOLKJ&JIH_GFEJEDCrB#B@@?7?^==V;R=V8`UԼ4ӾŬǨ&5ҽ9neܴ?:qq֬٫ <@uz'ZhҜ %Nf͕ݔ"Mdю2^s/Gy܁ Ba~}|{z&zAytxwvuu6tfsrqp p*o^nmlkk*j]ihgff0ekdcba"aE`_^]]:\][ZYXX]WVUT%TCSRQP PNOnNMLL3KJIHGKG[FED0D-CBAA??j>><<>x9-VhĽUƼAϺdvoʳ ;9lp$Shդ Pdޝ0`z1HvאLi)Eq-_w~~9}[|{zyx&xGw|vuts#sJrxqpon$nHmwlkji0iXhgfe e@dncba`+`[_^]\\J[yZYX X_==;EKl~}||9{rzyxww>=Y jO Ⱥt¿ռ8ԴPilo[`i Prե>f֟(PtŚ:gٔ(U}Ώ Kx͊Gr˅&T{ҀJ~s}|{{)z[yxwvvAuqtsrq2q_ponm mUlkjiiIhgfeePd|cbaaN`_^]]U\[ZY/Y`XWVV3UtTSRRPQPON,N]MLK K:J~IHGGaFEDC@CjBA@A@Q?>=B6e_(ҡ򶵰rѱ׵ԹOuRUE~ӧ3g+Nt 6_ߗ,Q{˒ GrƍDoˆGsʃ$Ry~}(}X|{zyy9xdwvut+tUsrqppMovnml l=kujih h=glfed d@ctba``I_y^]\\N[ZYX%XbWVUT>ToSRQQHPONM/MmLKJ JQIuHGF6FVEDCC1BA@6@??e=Lvp:=T΅ⴻֱɵ97q.̵(H Muۤ4dyƟGc>^3U܏2U9YFkȁHs~}| |+{azyxwwFvutssHrtqpoo:nsmlkkAjlihggAf{edccSba`_1_]^]\ \:[xZYXX\WVUT;TlSRQQOPONN?ES9uW3Լƫ+d?ܸaݸmGO]n>ȩ]ۨCȥդ֣آ ;dƜ.c3Z{ϒ)[:lɉ!OބCrӀ"\~}|{%{Tzyxw"w^vuts3sdrqp p?oynmllYkjii@htgfe*e_dcbbPa`__G^]\\=[ZYYUTSSMRQPPbONM-MoLKJ2J|IHGF=6Z@fSXrH?1 !T(5:[.lo`ְer+ |zP-Р^'Ց&/юumryuwʈ;QzN)`#ճO$^oKtB6N,1ZHX[cWRA/,-i'?#4>2DR R_+_Kw0դx˝qٴzh~E9ї5|d}y<|CﴐK˛mhT$ymsy|aCVnQE5̇jQdNsG?e6\8HK__lJI4-0,n##g2>$5X%,Hs%T[5j48qy{cz8{\ zI͜f|xinynhoul̅Ơ>³^SeMdF?55MHL^`ML 5-/,:#Z"0f>6=)=DoX*Dzลҿ |~{{U4/t&Ǭ8zNkox} R:̠ƎmͼViRIA66zI`b\NM7=/0 ,/!.h=68%?+loE͜ AR9z~yB Ӿ#^#:L|7!4׮·+Ոězx<;?Щd~}oquuŕz؈̂]͂ɞTSmEV;KL>//(D"\_oN{;J54,0?8[ N ;a{e9gϐFUƴ/Юѷ=ՐĦuz|-l} n!X~BXtcCã1a'<e٣/7(wP']\uM+S{{ʩnKݺX ;T΍NѢIE]F1U9X+MܪVV49&4Y/*&"vQxPf LN$B:!W$'S+/ 327q;?xD1INRW]-baglqwU|ދǟMhW#+ɀ̛ϓepڽ޻~?BZ4,6-T.gݑْۤh0UaƓäyHVk]̘7P{{qxuqwnYkMhdeb_I]ZiX#VSQON]LJUIGFEoDCB8B BAAB"BfBB#CC9DDERF GGHIJKL N/O[PQRS-UfVWXZj[\]*_h`ab dAekfghijl mnopqqrstWuvvwCxxyzz6{{-||}n}}~c~~~Mzdz;wH}rN~|i i|.+μ~DqW S~-U]^އBdPq~pԊjoHvdq\q[Kw;KdusĒTyt"|Wf Bg]ڄ/yqotRXSHna*pU^٘e%@ƍlUz;AvTLöJŋh^fhIn$izh -Mx嗣c_cm{NaW%e|шYnzr\q)otpw푀ro|xxxoiZlHG4Hs\yy}g~ltEom[z{ڂOkIwgU\o6ܯeX?RJLe+jxؐ_tkk߄|’n(}qי:v#[yrJg nvw0oiV8^ Y_B~}ogZŲBGd\r~o)1g 68oPݖ`l0b WsɮhvgrNzdrugzqMc]vĆ BİoWَN p)s}\Nŕy^snс h׫Y)m_Ԩh{g{PzuQmy(poiZABXnF`VxsD2ms҅:@mn{grsfveVZ`}~szs!bdIkAt]](}%~Dtː:W.`6u˃H}~y{,w4imw7{un6gE\םzZʹQ. ]ט~lLtxsmc*8ZpqmZznƕ{]g\gM.Z{r;AztrXKQWr~fOM܏wQ\T>NYLg1IrsƘsW[{ym at}nX'6u{x%kmuoIAڃ`:CNb)kt|sk?F^ʗ&x afkhԓvl5q't<}Ǟb6{:_ei{!ӓBimIiof)qrW1z]eno9_vashmAkrGuGaNn~duɜno\~ rQW4wyg{eofwf)RtRr+yЈEo'\tbbt*oanX.[hd@z;w{j,Q`~h+ŀzIjz:,|{pgv|kxdvZu}r苛{ ~ys1uOu|~ tBnmp?uxR_,{䍤i!i [h1q֘Im5fە}Ɍgr m,jv'qޒpԇ]i:Zwm r{JmTr}iljkmSsOBrƂ[gkd\+bayQz)TxӀ}psdk}ΏqRm[bGsBn;ngG#hmo{Lpqvhz}~nY}V}HnyM~BtFዹrZon qohK"SxyIjƃ%vɁxmj~oCq3{0otjy!pgmey{ْvy~t>xX={d|Vez|uЀuvsҎpsxE"uڀMrјoZ_| =S|b|qÕtpGwz탯u0 y܏"t:qmoTCs"~{ry>|~Dz7u|uk|򃽄f}y-|`uE{Tx uvxl){ёmx`xl}'wEzyGn|(rӉwkz|rez>Hy|!{|ҁʀuJy-}4zz<ylt!~z&R{}yWy qptyrj֘l}k?vfv}X{)tZ/~+{z6Ml>X׆Bt[|}lGx}Zwo*x~b{vsu x`tut|zTj}Hytz^ulńuā7xrݑv`sX}}2ms|{+$zxւpCx|Łl~rɊ8wnxtv5}}{ッ7Yx>vLw@v ~~C}|{&y0 W3B8MQIG'uu`KmW=mpǀ+f˲NߛaW19[Gre O$-CTRCMu o_HCykUL׋ʅv.3Y=|S-*j3@&t{@FO523jO"f1y†GFCo?7 x'51KGBM A"#9EVaigs6v~;z|c8㏨pǴMk\W ~үŪuVd8#iI (|gd2X7E 9Vs|r  h .6<ΔNP<ܢoJ4D;)W&գCxA \>*L6̺aţV7dmѓ|ivE_)زwv|9xٛ?Nz< ;6r?FJWJ-c&6F2!J%J*P?iL7XEwGojpkbv]m811//0r4!sUA/J7?{Mf'LdM$/_@='2sW^9c~Vb[c3°1gϚԓza2 Zz濢θ/!({xirnNn+ag CWVM-Yu' 86 '3O(-P hau6}\lvJ7MyQ@7H}=Gx[Y9P՗SLߐ.)ٖ&Op^_BIz@~myfgZmkB SD#`5K)3m.dgaJ7ln,UD'ZE7mT1\SC]-aBINؙzO;ic~XC&jw"鵨RHJB0׵}ITE5jN:0PwPhF'J{J+K~hۗN3fa]qÑjdq%V 6Cki Zk&~9bh(!hjt=tv?MhI;i&[J$T >PL% !s )j܊K _lz_l@ubwsXT9l8A.2I9}TO1fCA&^M~ zK{iXeYGviڂ^|Dnlg6SW+A{@Oјŧ VϻaZ]Fw q'olBRؓe.V"wDoyZ|SX"x3|]QYPb ]@WyҒaXon<&dUeMvG,?V&;022MRCzfn?t~7DjOrKh/puWa,uĊP{О=m~rܫZmFՌ ʞNJ }(oCe+{y}d1 t|{2{~b>9ԃdhBĔ5"y}:[OjuB16zhjz|]h6\Rò9onWdmsnLiҁcy`7kpfN|\^n8Yqw]m lֱsς,ZyrrMf炨M砌I}U.z@ \a>8\W9wfLe&yFVD:I{%VGXbYQvqqg%dWsRԚLǂ][k$쬤brAlƐS \ӟ*Sv3t$C[$.&D) E$s |HvZgsJA^8BuJ/b'FwiWpPə~ZNZ۟m͘xp%{pCeX_8qxOiCqpeX4AnaqDlMO{KZ9-_C*;G%abe3lgBi^29T[kqVwQJrRYEՑ<gm˼ɟEн*\ВwWE>P\Ku^[n\@qC%b8JiS'd3wV*g"GxaiOT*T'Y'Cg7ME^AmeNb.|ܖanUcm]{j)m߈$wͽ臂KpHnyqN~Ae[[z^VSWeGZ h 4V]*\{v{f#UcqYhwu.vSlIy,䤔ܧ;ؽh$ǣӍLzLԡFFwLWS|fgWSYYjdyP 0DIO2EMo8Y[Ov@EA*CYq[imTi t!xnZ wcvU2|wwiψ(|"Bfw[^-U~Jx}m$H{ÆFG}_z\vn,MOL#DAXfUЃ5o"PoJGKUU8~3T 2kzq[lxa s˲@}$ouIMXݖqqc~'Ph>Gk헲oB[okᒣc>AzqZ ][L31yE]/BIG' H^[JDH}^WUfM0V./JyToK, rߠ9v#c1Bόn-]7}ΙU)|U(6#f +򘆎}i8xpfNfLoEqTg@|>??V`KZQH3A@Sl>ׇjY5n`Kqs󒪙Rzt>ꗫxr N텪wp5s9͕g]k_#➐e!昛c,rnNJlvJ}A}]t[OCLlۀ|h.Mp.&HZyHBFM6V e^]L_w_]s|hcdwRoyLz|󓥉z3Sȱ+1[4fu(qpaE}Ō܊jriKrBGeNE'~EB~@sHNJ;`PIr^f@i퉭hS,awT_7wv&JK%w0~p;VRݮ@Oؠ-\}9ž^Rkm#jCS2-}rIM,f+n RXM}jt5rnVx[AxʓMBފޥ(ʟ+8́"n*{z~w)ώWqvrpne]lOd|]X8.9OA(">X@p2HM*9I:xmgW boe~Bğbޭ1ˬ,nT%КnhHBlXLda`dWIlI([I @2}[w|] WhV`~UH]NJ@OdBY~fVQ:N}MEyog|r(ѣﱣz$W9ڨUyr;u|~}I4]qwS8_qYNcvGQVKJ GEdv> XPE<,fJ*W=nLES lGu|cɆokm&u@ިň܎-u|-tFtu$~ҁAv}^%WzT8weq\g܌pY};tHkswl܌)!i:|tFzo|sT{Ni=q&bk]nkw\qenKgb{ۂ+wʚzƣܖό{CMȎwp;bn]9{w}ytzIj^gdTEjxLiC>Dkqt@?z@S[[vydEXTt[BmWQ`ɛȖޘY؈ո˺ r)ă媖/u[~iz78{iWmpQga]=\CUV]}|mm5q7`쒬vq/\bBz ?W5;ԫ[4zRLswl&~]ՎߑŦ5ȗT}3ۯѤIUqAlNZۇ'ojj4RGEqZ:9B:sVM:DLBsGS`Etzvs~' ay&󤴫q =Z5qKn1~?x~/@u}kjYZeGOH1EN4AkI1.jcNMQmST1VSUHn4 ɑ/g`{ǒ54΢ˏ zٗv:mD|Bs<a%xiy{X~ؖa{Eރ h}v=l#uqmkZd%Wd?p7g>b<_*YjwWNW^TFSEMy^Vou(q\yVD}CgӔQη vq.~ՔEtKzlU|;FWSoqcETZhK_^\Ñrk2wwopvt w L2neS^ku[SixqT9+JWgYVtz}=O[yx\hakaT@_FjF9ipeXOt>dcU|{wet^}y)Klt8ze|БzMSYhiБRsj{\exp1v zӂ^Aj{b~r{`8Q~HobEt@|b]zvAh[u8p_ך}Kk1zmCx2l]ԡn& q_xo ȝ{ʏɆvimqfKTj9wBZ2]-}}niVismPvwY~%y6uSt|ka h~}h}x˅pF"~bdGĠѮվ+}_zAj"agnzQKM{kbUbBufmSNq3fYGl~A7ow7%׍(v|}{tːw`[0ephNgHbUl{Vzф:$^{:r%fusy f{-6uבٌ'mv`esb|6Gx?PIcxkɋKUls >~"vdžWw|koh%vˆu-ou}s2udwy:~I|?xhbojNrZlNcj\bgy~{lfIovl!:_&Gɘiۥ(ɥ'ۈ&YlV4lyuxƆrTZ2kme[+gjUoxΈ8.~ycq*bHkh}zao42woɀxCmaefn!lYyaeuuqmYw_q{.zbL,(L~pZk$Ý4ͮtЧC䆙<)n'{EaQ_MTcWEHhOzԉ}j/⑐C>!/eI`~}ނ-&qp0mj@sNohtrsdg{M=e!҅|s~&QOFLNƉφ&ŋׇDjv܅p~hx|y4vt\zlyyxqj(izd4fnlmX_likpj}vyt>{@yraw q ro{ws)owZFzyy4~bz~wdВi|?)F8B(zustJsjoqrt.msOzmritawLŁa}ځz| ~}}ⅿŀІ,ņJxf7 zOzSFFȁ:O/T{l>Y~eЁe{zz+{~vuzxw.y]tyzQ|<3}9&xz|6xcЍۂ}ăՃaM؃y!e9|e~~|dx{{uyvy{u}/|I S"-؄U\⃳Gֆ]S}Gy} }v{z{gwQx}xu}{w=y+lzڅdžEҀ~܁~y ~ebz4}`l}T}ӁǂЃq+izK>}ɀ}yS| ỳ&zz,}}6}#}1}|i~L~}X~~~I~1~~(|b|郺 $}|{~F{{L{||{g{o}z6‚Sw} ~څBÁ #=Ia|Fl烼}7~/ME-}~{U@2|{!~yy|O}|yo{|}|{}zyN|]|~Q+HӁ{[KՇք؈ֆ~ 󁺀/} }7z|+~<{|} {}{*{||@{G~7}||wyzl}q~~~{}{~>~B'~΀cBW|؃F2nw2.~i1ꂛ9GK:? ~~}~{z{$~~h}z^{m{zwm~}||}}{(|^}|{6}|} V*#hڃxA7`-ς́υM~~s~3Հ9y,L~+T}0}~T{{}{yz{|z^yIzzZz{'z{2|~~O~fʂc!т9*B a:ł$~" ρY~~v~~}0~\~[}}}}D}o}^}|}}}{}MI\~~_~J}}j~]/ T"vu}|xj\]MdRlzxaX^o@:T J-Qٗ~фd[ulhgv.}ɀ`H}hYtm*f<`_ksr^RcQPoF%?EHE=8PV;=AUi[LD620/;^2$8FHD: .]$?4 &%>1GFCGPY>G':>4@:6,5FNciebf\QE=@KJ)JQOG=>23-P4 >DCFjP{NlSIguneiO a|zqenly{={/qqy2oܪF$@Ƿe9gljtǁ=tl\h f'ZtJR[r&|w(kb\$ZBJ[9}<8+?03#;!+>G3<%b%34G78-:/'I%6?D!FfR0O+} *3g73%M*8DSZS-KCCM+[^;[WS[U]Y]\/b5jrp_kqDwmxvqd]n6@N4ɣ_yMРqNIˣɁ4ڱ>ݤ-~:֗9oTO~4LSfmHIڕ w޴lGӯ/ \hj/ݻwD o+Hb5N8Huljmn`[Ya]k]\hCa_Y/F"ISTUQL@20-t////:p?/. 0.3:|@ .D!2.#&(,=aF14DB<530*#$"6!Y$"".6+ .= IBE8#6A JNR@RpEX]LHUb?mPglm/\QbFwjnuuS MƔa򖆗—'7BC  Γ4JH0(B!ӘFs 4c`ۉ:]$֍[эi6?Rb"mjqǮƯ>/ƞuEDfDNҠYǑm~{ȉiDx pk)i}llj|xπx4ufY]]QBE<6@{7,/<>,36z4459.<:'5C#!!\#*(""9-+%X()d2/%p"9 #l48.+kE (N1G018A?:61>``]TU4VE@JTT&MA2@h>?-`,," ,.'M #K*@$ o}\,/3(,'$T!\+)#& t.7c878/2)G&#| & !724/81/#e*%&=kCOHN,QkYOPK[[TNCGMJ2KZqd"nvRtqoPopzT{:vC6ڂ{P`̔Ɛ[Q;ɒfΨwxƱ5ҹs گطX1&^ѻAռآҐYg]ίWٮ߃@LIgQ+I92ǿ+0۰ʼn շlլ4$vƮ|ǜ^EӝɈi{э>y{3go.hdi_\OgnfePbTINkQAFNfH?BF?F92,.G222?39;0%O%G+.x(G"%$$ ( %I%#=d"*e!,>'|%&s3(z+%6$D=23(/F# "+DJIBY30*:uA>FU[VRU[/bfjrnhpulqfqmwfxuzɄ@N}؂ 0~QNy .F aưK6ŒEEԅяj1_Ϛ$}ڧ&y)rkѯξŒ͝BaplʸýQ%q}{꽴‹θwɵ }^~M՛dK[@6}{||MJv7txnDgki5b\`aTSOTION]YHz8 COLa<0-x0F+(|4/H%65!3!&N%6$# 6e Op " <=VZz; ]Hx5~q!k&W$';!K "D-1,%"}!$(_,7=I7a6=FM>PLRL3PXfUbFDKPU]?mEw7tx=}sPloBrKx2W-I׌ĒNVoݳԸLճpCu^ʃsp-ҶsHٱݱtٸҗhֿ.} ۘ܌ރ݊^+ܺr֛0ܟ;τ'ɄˌɐȔģźZjSм߷K⯎9:ؚH͠أ󝪓ON"8x@"P'sfgohwune+a|a^WWY[WLHHHHVJQGBH*M6Bk977"6540/."0n2x93qW!^)("e!1#>&%b"/a" )#C' L!"^ o'/!2/+)),/002C9> ?=]8D6:ˊʹaSeXBp8_ T親VゎQ E{RxjvFusqnjQgc_cizhy_Z%^ a\U,OIG>M<+;\:b5+X&(M,D.u.,*% x G9-6*k)| z & 84"1 V  pV "$ y; $&D#_'2N51/01.3-S2I9:M76:@AAA@B3E*HHH3LS[agikkkkkk[k\k#own~}{yyz|)Ńq͙=Gɣf$ SFPzeawy[OBlfJ?S2̱҄Wη:Nwhߥu^'>Xp8ab!J!Ӈ]׸1#ӧ]ؘߐ|֎ >́LɃ6ֻ״ڲ Ȫʦj6R)3СÈʊʄxPsEy{ohjjnnll mmjl]id/_Z6WU@T%R:OwJAE,CsDEEC@Y #!x!#&)*'#P!r!"R%t(*+u,s.1>5f79O9796B41149KjK%KKJgIHHCI/JGK LrKJHC=97]74/;(&'-058<63J1172222h34p51_)k#:$g(|,.8/0^1O3K565j5h42010122@1/H03e88o2I*&*1554448>B@$<89><>,שBGᰪȳ_ 7q%ʭ]6~wͧ9ټ<ԉ(դԠUo\!YEQq߅C9Y#sQ ym ]&mݣ| ןוXd٬լw҄Ԁգ֖=2?ɨ(˸ٷ0𫝫ժ7`Ƨ3q`sˈwcsLY{vvqPnlkKifc`^]W\[[X\\\wZ @xAAA @>1>>??ADGJoLM;OOOOO5TZLate4feEed@dcc/eg ikfnqtvxz*|Z}y~3ۋ󉚆݌4qzrۢ{1v[[<A{׳s!XČYR̼\'8=۽A hn6 QQyS!+R7\%4۟`PS+ޟtڛa`ң4ѵ^klCƩ<¶'Zeֽu"ȳu3֯*~9}Ϯ7C줎" EiEďw`~~}|l{zQx#vsqIol]jh&fd,ca_][ZXcWwVTURJOKdHFxFLF6FGFoFFFED`C&B@?^><::622/S/025G8W8[64'2t1172f20.*';%" u!'"!1 4?xi%! "!a!! X   !##(#h"!U!!3""#5%j')+,,N,R,-.034B555{68;>A CJChCC D EEFGHvI:JKNRVYhYVfSQRHV[x_aa`%``wdimppBnkMjPlpuz}~тֆi"К 'dr)¦Sqqaͱ.˱鳆tåV)OŤ]^̰́!U;أ%ݘKގ=ccb&c ޶xo6bH!"ܰڟڶ!ߑ8; >aݷ֨zBLڧ/TxсΕ͆iUk̚Q{Țĺ)A`4Ŷķ縩jIJeDz߲e˭HcXԞe?󘬖ԑ*Ue`k{zyyxRvspmkZi!hfe^dcae`+_^^^^^]\jZX-WUR}PDNLL#MnMgMKHE#C@1?><;O:698 75420.*-r,,*---x-g,D+N*l)(y'l&x%$$2%%p& 'i'''/(3(&$"  "#%%$##w##$d%,&9&%u#!N "$&'.'%$##d%'*N,-K-,<,+,,-./M136d8:;;;:::;<{=W>F?@@ABׇإ-pd]q֯(݆q@W}ތޚj$A( A5>)Uަܢ~ݭ Hp ؞'[֘Q{ͪSȱ!6GȹxÐAս1]F­iphD0ǤIz}}}yg }ywwxyz{zwsnj"geDf>ghhUihePca^ ]\\\"]R]\Z&XU@SPO/O.O+ONNMhKSIFG?EBCA@?M>=;/:86R53x2}10/.$.-+&*(1'%%&'(~)K*0*)N)((N(<'&$p#,"!i"P#?$4%*&&B&%%%%%%%%&E&&%l%%$$$$$$$$m$$##"Y""$c%&8()}**I++I,,<--,,,w,,.@0235977m899h:g;J=|?AD[FKHHHHHHH,JLNOQSTV&W5X`YZ\<_ad9gikolmm_n oUpnrtv y<{{||A|{{{ |}y`ުtǥMȤ.mn8șQϔ>Fڑ=7s^/s߁f|zKy7x0wvusrqtonlkig#f]db`^+]i\D\\[[@[jZwX@V8T9ROPjN1ML M:M6M)MBML}KIG^FDJCA@??1>:=d<;::Z987K766j54G436321T0.-,*k)(((((((w("'%#"!V  2YDhXAR\5(hIMn`Q "#:%&'&l&C&,&& &&'?)*!,-/L01w11?22!334578 :h;<@>N?@@gA9BCCDEGHHIJ LYMfNAOPPQ|RVSLTaUVWXZL[\]D^ __`Qab cHdeGgh>jkPmnprtvxzv|~qrm(숩_"狀M|n6)_3>ƪD.nд.߸>8 SÓĪśŚ-ij0¸xGɴq,ίuГ7nѰaҎ"ԍeaإ2BO?*٫هَُٟ٘ٚٚr[;)"خ؛؈؞حضؼششاؕ؉{jBׯp(֫GSmӂүҭҜҀj.?’0?\갣[0Ʈ (AMGFKLE81㜕4똏6ߔO1p<ćd3}f|zy'xvJusyr9qGpFoFndmplkjih}fdFca`^\[mZVYEX9WVTSRQPONMM6LTKvJIHGG.FZEDCBA@X?)><;:n9m88777a7>7#7 7654b3Z2H1?0H/I.u-,=,++q*)B)(('3'&Z& &%R%%%%(%E%v%%%)&Y&4&%%-%$$`$$ $J$$"%%&x&&h'''1'&&V&&%%%8&&'*(()%**j++++#,Q,,,,D--.C/001\2/334~5?67789l:W;8< ==>?w@XA:B!CDDEFkGFH(IJJKLMNOQR3SMT\UkV+WWXYYZ.[[s\]]C^^k__`4aabdfhjlnprtsuuv2wwlxyy{z{|7~r?eybRG67+$$)(-310& ;e5pա;L+bުsx,/pӶ4w^׻rhֽ77N¦=WO{/h4ȝwvcaU,ѻ2ARMO[}Ҥ $(4EVӬԚՋm-ږۭMڹkڳ^سر/+"؊4פ]ֵo}"[ӗ'ӼWPчл :mͽ#MʐoNǯw'gicR\J1,5}Ͷ Sѳoܰ1Uޫ -enJ䤻Hសs9'-#P} ?Ӎu F97 ~~|zgywevtTsqpoo_nmll;kijihgzf&ecbHa`^]]\-[[ZY~Y!YXSXWwW!WVtVUTSRR*QFPqONM MJLKJJiIHGBGFEEADgCBA@3@h?>==B<`;t:~98765433+21f110S00/w/+/..a.-E-,6,+Y+*u*))F)&)8)\)w)))))*L***F*)):)((v(0(('''''4(p((()T))))))))y)u)b)\)T)M)Y))f*++,=--./Q0111/2y223c334q44 556s7=889:;e<@=!>>Q???K@@AoAAEBBCCDEFGH{IvJbKdLhMhNZOPP~Q@R SSTZU:VWWXYZ[\]^_y`abcdefg i2j\klmnp)qdr|stuvwxy{#|6}Q~qۂCjފc lX(|T4˚]'᝝g. 衮]$rV1tȯ!nrԷBOXͻY߼fKGHlIJVō0ǿbit˒0̳5Ͷ3Oσ+U| ԤBվL\׳<؎9mٝ٠{bB؆=׎K֊=ּm!ԀԶLҶ{<ѲXѸi"ϋ?Ά4~*̑%iʵʂgF0ɲɚp?$J0ƋFĖ.cۿ.s½Nú$Yµ*U"SíAlΨ"RsӢBptfe]]}ʋԊ#>GrFG~}||a{zyxw[v?utrqpio8nmkjihgfee:dYcyba`__&^J]P\L[/Z5Y==q<;,;:9\988s76<65543Z32>21:10~0&0/x/*/..<.---J-,l,+C+*<*)L)(V('S'&m&%%Z%+%$$v$8$$##q#K###""""""""""""""#4#b#####)$^$$$%I%%%&`&&"'p''D(()))j**W++d,,\---).u..#/h//0t00,111]23346556d7'889n:5;;<=,>>W? @@LAABDCCDeEFFGSH1IIJKsL:MNNOPlQ9RSTTU$VVWIXXYaZ[[u\$]]^8_``abrcOd,effghinjKk5lm nnopqrstuvwxyz{}}~Ā΁͂~M񎵏}NߒZ$𕡖Tޘڙ/>O_sȦŪu%ڬ@`TK2񶙷D丅Oѻf%nHç]jȉ;6ˌG̢B͛'vθFω%К&Ѳ4Ұ4Ӻ3Ե0՟}dF~إ5^ًٵ 9VuڎگڹڪژچdE ٿٕهٕ٢ٴٻ ٙ#ٯD|ל+<մ.Խ.әҝUѳQϗ9y ΰMOrm3ɌKǤZźMë hF۽%az>=i=<&<;:a:9K98(87766k54T43C32J21N10^0/w//...-7-,`,,+7+*t*.* *)))q)^)0)))((((((((( )((g(.((''y'U''&&&&d&I&#&%%%%&I&&&'A'~'''C((( )x))$*x**!+Q+v+++,d,,,)--- .d...G//0i00111X22633444k55\662778899::;;4<>}?@@[AABCCaDEE2FF1GGDHHJII\JJfKKpLLM!NN+OOJPPQYRSSTTUVVWRX&YYZu[D\\]^_R`aalbccdFeefdghhi3jjkul.mmneo(ppqrus9tuuvuwBxyyz{\|}}~gS7܅pU]KBF2)* ͔Q񗻘K ڛY۞ZءX'᥿],ѪzI#箯Jɳ|̵^&׸y:y@MJiXû5Ī~GƲ$y*ȆNɲ|L˦rQͬt>ϢWС]ѫTҖFӇoԩ$rխ'nְֶ{T/յե՗՚ՋՀM԰t7ӯd)ҡWѯp{&ϓqEγΓuBͺ͎T̽̑Kc5ʤ r1ǛKŢPØ0g<ǽP޼knTd߸c޷Vֶ_ݵ\ʹ> mձ:wЮ4cī/c6${٤!n2r4dܛWјAԕ[גZVPĉ V?81ɀy~)~z}|.|{z@zyxUxwvBvuu^tss^rqqwpo0onm%mYlkjihh3gefedcbb)aV`^_z^]\[K[ZYXYXXzWV8VUTeTS/SRRsQPQPO%OZNML L@KJIImHGFAFED%DuCBBRA@(@?*?>>=%=<<<;@;:]:9e988)87H76q655(54h4 43M3228211J100i00//>Y??]@@wAAdBBoCCmDD_EEtFFGGH II!JJ2KKfL MMcNOO}P6QQR[STTUWVWWX\YZZ}[ \\6]]M^^l_``"aa0bb\ccyddze ffMghhei#jjkElmmnn$oopKq rr~s5ttuyv3wxxyhz${||}|~K(ہl& φo_ Ȋk I󍇎(Ï\;ԒOƕf/P机Qܠu:磄Kߦ}3⩆ Iޭi򮁯%9Աd ";׵gh"Mn*վ,ݿ'|iHœ)À GďTŅŹ SƓƸ%z)Ȏ<əRʕ>˜C̗Kͦ;MdΥ8Pgwϑϒϫϭϩ,O{Р-@Vxєѳѧрv`4Кf7ϿφFζΜΓ΂bUI,͹͉ͤqT̚HˇDʃ3z+ȒUȶw5Ƭs"ŞUűb r|aX4վvL輆+ѻe:ǸQзRݶ_xs}{}oTĬ6iڨNd֤Piʡ2T|֜-=]З_oˑ(ˏ'jӍ$lϋ%{ʼnh‡\RXG~A~}|A|{{zyeyxJxw>wv%vu ut#ts(sr6rq5qpoEonnbmll|kj+jihDhgfefeevdcOcb[Z4ZY$YXWHWV VjUT7TSRhRQ,QPPnON;NMM}LKKKJTJInIHH>HGpGGF4FElEEDeDDCZCCB_BBAnAA@@Q@@?????>>h>>={=1=<<<<;;S;::]:99q9%988N8777U7-7666v6<6655{5O515444|4_4,44333a3H3#332222222f2]2D2(2(2211111u1c1U1;1)111 1000000000000001'171;1A1d1m1}1111122(272A2P2`2j22222223)3?3S3k3333 4E4g4445R555576x6666777768889`999D:::-;;;%<~<<===.>>>I???F@@@IAAAUBBC]CC'DDD6EEEcFF5GGHHI~IIJJqKKnLLwMMqNNaOO~PPxQQrRRSTTUUVV"WW9XXOYYqZZ[\\']]>^^j__` aabb?cc^ddkeefgg)hhFii_jjkkklmm(nnDoo]ppiqrrss'ttCuu\vv|wxxyy@zz\{{{|}}~~ yq򆁇= Njv\Eᐌ8Ԓw#@˕Oqy#<œ@Dў]gqg]hgեQЦL,[(gˬ/ڭF au԰4_I sH\ Ӹ=FRbLS޽I9뻥H𺦺Q򹫹W>B⶙4ֵn9ٳpI`/ίWpE󬚬Fޫ1n©^8ԧ|5٦l !$%0!%-Cs*Cy4Ǖd-_ؒHɑ=Dŏ=ʎA0@:/*26:CIڃJI4ǀGV~D~}R}|P|{d{zjzyyyxxxxwwv9vu>utLtsMsrMrq\qpXpo[onbnm_mlulktkkj jiih+hg0gf?fe9edTdcgcbvbbaa`"`_(_^^]2]\A\[S[Z[ZYZYXqXWWWV0VUWUTTTS6SRQRQQ QPIPOVONN0NMM8MLLALKK=KJJbJJII+IHHqH&HGG3GFF\FFEE1EDDPDDCCLC CBBOB BAAFAA@@[@$@??|?T??>>i>1>>==F==<K>>>?9?v???8@v@@@*AsAAA4BoBBB#C[CCCC2DUDDD E8EhEEEFBFFFF2G{GGH[HHH7III&JrJJKPKK!~}}*Ԁq}_} i|?|悗}I~ڂt }|e}h}vXw҂|*x,anya}Pӂvr{،Cxz݃(zoyY@}bzot ~~}yUt#q]nt0y{{,x ~uxJ9}sЂm|<}9= 's|CArAvʅDžヵ|x{sbH|){u+фyZ=uSwAzhiH.Mt t|htk){mțՐwu׃}m.v Bv#shːlwsr_zPLyvsB@voZ+rx͕zj~{3#v*dvXqڕvHsu-pknh8sqs!~艣~yt,ʅ|pvY~⑟rTt;wGz|}D|b{lui?s}ƊzsmEڈvh~{}ynbAnB9f毷? 6eq+7T;Wa T!fX^AuL_攚ϗ|-D[yW})sU0[S\P_.j;j1n0^=DTļW>t_meLJ1u;ZQY6RTnPBz#8Od8u0MAx`bwfvؚwVuן8Cc|!bo2~A RѺ`YՔ,k3?oυs'1i֩Ĥ)IGR2{uif9GB6B)l&UoCΪêD8u0^m$VT+pt͟׊ijVr_r1PfvZo~̯CQ?)ႬoщMs\X^&[wM6aϕ(R_37٩әrk-Hdhdb膊fG;j綃VМWis%Nj؈Γ;"JBjo+{ЇU8i|%}f{4OҘUL]eOЄ Fˏsw[~ZY\<+QEg%r@BlZ`Fs4PHF}hLfn[95Rg\ӂ,2w\`pzsx,G%kdYhq'sWOb:MO}-^0ڟo&W\W_p-Pv=ceC΁_WdpfzyY(g;(Hs hjw6fVk@xoxL 0*Iˀzh5|Ĭojn}Z0N#ꋁhToJITkʕfzH$j2ּyvV2"M/2vy} <8B#̄qߐq&SUNLx'LD]]9bEyuW7=CȸxOdU 8j |3 l݋|v?>l}F/aOekԖ?O9G|Gmm;:\ sM))9рw6:>aTI.1xE%anK԰^BN}c&p%Z$ñgV=lh/_j8+eWǫ>w~vwpB^.7o6b[AtNc{hf_lWVK~{l,S>t`iXiu~ ܖ+m]o?7sɉE?[;[wARbSKzwPsΟtoG!^r8wɆJy.mnajzu\MX(0 "cXpXi`J}jfcwuߢXm-bzIӚ$}OvoV|cj/pwb|ŕ|>R:jQa"[p_@1qc{o7L,ivW^{֯WETqpTtniog[ut߂{مRWIwe56Z^@y]¯Xsbw|s$sCw݅xfwtKw)άL DH-}\riJÅtrqfgPuq$~m|葀dH[,0GUPB =tG4{ƜpMeV؂^GMhe;yXmwyWm)m 6_bfjnk’䠁g]HRR-2冠ġmZzIBn7Ch*x|_sxdjFgV_w4~y1z~r>brr!uvjNg'mNabr|~-~ykr?r}xnx]KKzm݋k7dDaw #qy:rEoJuhkԀ|U?obdF4uՉ]sv5catpV^dTU|y0tej̏-fkabϕwZx ~0ugis~o{ԑWj)d硋rp:8jkn7TKvlkvRP#f7I~r{pljwzEFՅxPkKzυs,~jy6b\GwԕuTZh4^ovܖfKcnwmnwJ[u]Tly׊7ׄqby 3vτx~bj\qh`tdNӀth=sDhty%W>Ӑv`&{c(u֋Ї/}{tpewwLkWx8"Xu*:vcwzsSyt~l}iՏ{nDers(1}"ue[׆ewvo}c]rW*!fnm]Q-<o^oؚ0:{jn#킵{*;h~qPcig5m]oی؄Xj7rvwvv8wo3`tDlRUlxw=np*ޜXtxuz:s{҉CvqP~6R$nvaMsb8׀PL|LgtzW~>frjJsz0{B{‚sbj v(oqw{OZyMyŀ\ՅYxxԁ ~ґulu,ArE5ujt&ꌦhj1|EF}0G{Zwv"v>w)~*y(yx ~#I}u5q}}_yÄ>{snzs0pǂfs_lXuIvC(nl恆v[uulum~x~gjpqu'rtei/-pko. a>h^|[vgv[oys d6}tv|xfcaijC% }r5x-~^}/m~&}tpYs~_vS~b*s pфH}ktB|vku?}Tԇ̂8wn_p=/\C2luŃt}cJuv{'܋>{?i4m:A!O}.j(so/y|aXt=wVx`*~H}| φUt`u{ultȈnvn튫}StsӇxs|v0wGu6|sQu*{%{kz8 zvRy@s Jr.}2{ ̅NWw}BNu{Oxv ⋿}6q nTWzt/wuzrIz5ti:!Ft#yv|~-s ~>x){m+uziqGNˎE}΀LvnyƉDƌyo1|Յׇ |zw|,dž|~͊~oyItsmm6tHhtE{y&n_g~I mkNzm}|tށw|̂wUzn.C{~i pq˜o0{}ttLJczmkXogčz6|zykw|ЄuApg؅s6s7~0ꃔntE}Zln~) 0tw5~uA|}}uruX)~{6pF~ydy~,ys)xq|vwJ:sypTt{pP~v{+wjzώdx{Έjvf~[bw}˂3zr}Py8zxr!x7y-Qmy{x}s\y5xCkzzx"R%{_~e {؁ovm yލ%yv{Qy˂6y^pO~5r|[xx~t?ʂ|"vv~ьtsʈ{~ezWyۊ̅ywXvy}~1}l~I| ]wgu|܇Չo~v }Ѕ{xԆY;kkB|!ф~y{xv6}f ywvLx5@w4vly;Co}u(r~%wfr~!\nprĂz=Ez|Ovx-aYtp։/~vz4}{uN|Їp;wBswp{Uހ_zI;|xLyz\{u~\ރ~{xs؀~|T~vQ|t}B|4ye}| )}~O2xw}~yL}}~u{}ڂ}{~j5yzvʆy}H~Dv{w b}|v~J||xtjx8_~|Mxi%ws4ъL9Ă|{|;}Ձ~~%xW{XÁxrn}|r}|D~{cOz* 􂧇^yqyn {|GyЀ~t~+HD}zw}hyu8pCŊ膓{wwB}5̈́ytFv}l}}}~=|}w䀽#{{}yv#Ύ iwqwSTrm+zJ,{yutAЉt|y3v{AIтWhwzc^Tzz݅ă}V |{~Ƀ{{^Nyy}x{:po{N|vv}]Q~C}ewz ΅ ~~y$|D-͉M y|!{OzbwDwz}8|cx'~|pm}dzr~v{~À݅ɏsrf{Q||ofY%uy؊hvo|̆O~r zuzc${ssv)~g̀zxywmR4{%xivU]s8|t=}Ȁuz+Vzx~T~$yO߁{wv|~|JQ|;qqA틩{U~p}~R{q^~8{ׄ{5}zJGvV} }}-N}/~y=~3w{B(X~%}|Jbxz` ~qxpH}F}R{,y^g|z~\ny}.i~xȁXx`vÃ~y4~#}V~ۄP|${݂n~_ ~:vn{9}~ʊX>=wt[|i~`&o|z7V&΅&|9v(|`M}T|n|z/ <|I?|})~j{{xzw|{hxxrwx~~/|&~8v~̓!~|za}| ? ~8B~zyz+wπ={l}EFuuv~#ЄI} {=}A~W~~{Izʁ!~{gy\{QwuZф~Ճna|wzO|w)~~6}y`}/-~zɂߊRviw~I,|Ox~63T}y}C~|󀪇QzvX|~y}yBx,}%.‰Ɓx4{}H|Ob@*u|ڃƒ ~4{}AD#2|wI~Ruz_넵gQzx?g3b} |~Ä@|Bq}{GNz.x}L=|2qZ}y|gS)m;ՂR}`q䋹pY9:[ĀpĀŀ뀦QcȂσĄI܅i> 鉮u!э{̉dc{guiqs{zajbYb>AbH@$)30_'23O#r8F8 9 y)dc#) 7-"u(51H]M_aD:e6y1qebsKtTlwR}N}z(Mrc9lџ8ώ.Лo؋yɯ)_ үțܧ^߄qS|vSG ZotSZGxVPnI{1I,Nfdm$JW7k=>y%"85I9"!T9:Q1AjacU^ZpwuX&_uy|p`hMuވÏ Jz׺ECǝƔE֌B@ŧÊ\#HҀ͆4GCЯbRкջ¼FgܦØQ֛Éoe3]Foz;q~r7vuRv]V|[UUanruPRPJ.X7FC1!3HR?4QZ4MI<'>WzmqbYYseue=Z_pqfn{6o7}?_У-a٭۳ѣݲOM7>(ީ–$v8ЉvŰRi˨;*(7SBr %ݠ8}Ni\`~m}0 g*Xi yuBXB|PabWTVfrddXR \rW1;U<@*c<\MOS}W?VLQ\U:h<D~) * Ib[/>B4>_ZY>LZtOdy]=>ETYN\xcyXtU7c|dz||Bqtql|yyzwF{jw[.ݯR6Փ˓rޣK$Pܭj/)^~ 5AhϞ5K4ٞ@`Ɵ埃$~®¦ɶϓ1[gůޒ' ͔(d̰.Sޔ!kVnyr+vqoxT~wmSp͐wlp^_RQJ6SVKJ`K"UbN2FbgWy=V<:SWYROTeQICRrs,fQiVU4Yj7i!j2h^YL5=FQJ\imeM8@BB~XejTKXM =L[UTTWfJY;;65@7fbC]fadL;J@B2RERGUXF DE5hKhYWcVM_mqo^NS`7\G]OSHNbDfZQIKRnO{Yn@l]ITTX[^d\cnYK QaepLsN[[jce`gml`Tmah_\kiUy|n-afgo&qi;VWbprExXq`OUosR`oxs|etNeٍw$o]qc}=x6|JrqgRfw8Vs*r\Q|*w~c>h'~`t`b0v0玭ґܔǓYΊIycRCu׌`>mvۚTέĬ ӥK+Ƒtĕ7WšљWД՟Ҟ|h0GaX~4񟔨rEzI7I hH|hߖߞ!q֥ǀC“Sa߃$La;&qS/8iE__袣2ޠ3D{sNFǯ+0N^˙YB[>Ӈt #ٯ.rj|HemQ4!ˈߋ>}ӚU|poŋɍɀ{}xxpkq#ИrĄ&牒<ȉ|uwC& ;seif|;|Nrjkp9b^lKuKvwl^vovu pe__+yG}tvBal.yjtwhsuOvJw|tiuWvzfgp_Ufvq[N]k~{%lZqggw|݀"|}rT|ApG[ `e5jryۆxbe^k^-Y>elgpttlv]keFrko qn{y{Sri`fzmUjJ@dQz}_]OS``n`z,yzh]`AgfZ1bNmX%N(TRSYhVk4^g8hVYc#{ot:p}BpUnN^^baefsU@CUZh][\SrUz{IzQ\NUXY$iv ^S_kzjX]sH@Y\dZansqi_\]c6rZk`b^>\j6ml^PO7Uu`Z~ITdWQUV\YKThUIV[UZSTuu~UFhRFj[xmk]cBz+o\`eeB`dZZfh'hGs`gtbOU\]Xgjg\VZLg^dcqqY HB\y{tc[7[lf{}WpZsvdbwUqUsbRjvlbWfTYXQhv{׋lc\_]`t ~oU`_LZbTicbixqeWpr{|tsrnqpo~|z%p{/wL||ig%t|~m]yj7l~]Am}Ml`-cqn+ZugwBgMg o~0e2aUnqwe^ywshwtmmpys`[Qb{Yԕ$wrH||rzH@y~{~x~|Wn|4˥\돌vÀxD{bil?|DW2n} l'{UMΈLu^3 ~zzYЙ֎G`̏ޫ-c7ݛԀM}?ޜ$i+]䚒Q EΖό@V+YxK#ؗT25ry~e_љ*atu($Քڎ)g󐼈Ũ' |6Yބw I٫|U׋󊈊G+r;ԗoOmt292!L0'(ߍo @ÉXf6~o-?ŃHx|zMl~K$~01U]،ԅ0ꊙ !~]'j{ՇjҖR#y7t|ց\-ӄ ,,}{ |(:@džF󏀛l.zqsn~| b͍wr^uP,x{P %z ~|}ӂ{tѢqB}]ȃgGwfn|{zTxvtlm[~np0v~*A{shtn2k'qsW~Xczzr3jqgG|~v~Hnyw}vnin|‰qpjk0}}xp3mnhom>wRu,|'x^lwN6|}~6xxh|Lsmqwv}{`vtcdrivs{y umsgh1rv~m |vz8lq|ހ;xAqBx:~vlnhqPy5}e_Wplt"t[bS_{rn-roe{|o8klpvBvhw`nf"f*vY^Py=y!uKuynwlAaŝK|mqzonq%8RyBLyro~A|r4t|rtfo"rt/~~-|Ӑ|~ڊ‰y9lPzQljpwQx*qt|jxuTo)fLn|z+{r|\znosꅋt2wnw%z%`R~z̀{nu-x7pws*"l{}/FFoTp||b~9owjp|njLsvjuzwpz}Ptnjqsj~ez~|wz*]|x{$~脢{v$s{لu9zՄ7|Cx}kWAt[nv~B|weuzbz%vI{w,tlrpJz|v_rpt͇! y!~{vrltr|ӊ*qq|pfjxWztcrjzz wǂ-r=ow}}Z̏0tg/rp9Hs,}!mfgtЈ~y?bQ0zÿ́L`bz ~w~??xo~ |y~B!} }&{{zu;|/\,yTy6X灈mu4X;{{+҅!|~}V!rBu~qb|z*%|nn}Ȁ~vstYw{lpy0ytx}q-WE}ގ|͇t{cޖmxwp}rtzTt|jzwL2}ŎɑՁz#}#ut̀b|e|u]uۄ/z4pl~|8|ˊ؅.4z{u} "wcoʂ ,<|{1zwzJFlByɓ zTV>yXq儛 y~sp|}xd~{Lw5+|zH|ԅ>ƌIقv}ǂ6zE}]MwzzzwZ%E?u|}}| ~{Zz~zko.; <zXz{}>uwLzw؄iz~RÅoY~y~Sg2Iy|kts)8EH}**vos1osMX)zYoӉ抌}oio*~GvwDt/ohuxx{reuxzz̋RVn%v|s:wЂ]x{s{w~T׉L2zxmTzXqjv~U*Å7ȄvOkgnAv~Fv6tTqs̃"8DΏspdo yV}qz/vFugv~iuox|#qrŇyrv|σrvJmzw*wqjlnqfxR|_1/{{Ղ΂UEq{*k|s|qvyvw~yyo `j{lun|@}}`|}x}(%&zz|y3mt0:~}b~qLp wZxyyc{ʂ郴Qqk}Fz~=zz@{ẃRiytzˆ#~ꈽh ك$}t}Rwv`zƆw|vH}SwC<}؃wp|z{~b~{L|>6x:Qsll{QF́^}bЅ]x{larl|ptvxSsnuTvCzL[RKQ{7M*pBffR{|sqoJs}r~~0uz{{}|}xwy| }os )W{y0|yx@z9ly|zus2vK̇L{Qy!owE#wtyxeޅd}o|%ex\y^vwww~}4uryFtxЄN*~yX}vh#ct{ipuq}u?gKl9}]/*vp4pmx͈[yo}{7{sqd#])y0چ1|"zS{sr/yTs\uzāN{ png|x{d|x|uxsoCku8~}}|u|{O9{zzyv{̕uyExx|ҁ}u<~݃joxxvt{||ꊧ)rCflPy#~~r~{y^xŠƑև|ovדPyzill4lq}O(cZyqw-{u=|!tTqtΆ[́|nvJ}|5{5z%mzl~']}f {t x&~y}~mxpC}00!JPKmsF҂2Ր__(~|)I}vEy$~zrsr tqs}͈όc_숒 >xr~| zsvi{.{}8oËzz/ zzA񆛅}sqwshrw$(}ߊތ!/}fuu}x~ b} syUrwӃrduvJ|x,<}/x8~π^zz}K^Mb{{Al0}扵qgyǎrq{EyVzgEl9Bo|wqsrvy|&~7x r+yluvqmt{o@}v|sho=js-F[ny_@V| zd3$=~xʋKt5kdhmu}E cOumuX}񃾀wc͉Iwvt{䁕|mq x4cpumrdLjf{}ty`rsu}7~${ z4!z|zOlrzG| у2uhpq_|چpnvvf}$j%[|{JKw=uk~{Tw}z'wilptp~a} 8~ sk p<~uЁ\x?|9}2~~zzV zpZsj~h||yp,qzwq^t)Ŋ3x6pgOw }sez~;vu~3Wzrkyyut&틆x{x#uf}2lr,|tros?wy󎲇Bwqrv~}rgdzqMxv]xbqu_(twlx u|wq{LyE:~uhopẃ{zـDŽ̄Є؆}D{h}UyBq"yc}|{x|w~FNz*wJexQymknuJ/{qj{^Y{XڅP{{{{{~ʆـɀ a9v}8.Uuxnm]߆ցÇ|xO܏|})v|~̄)G|qtw{˄}[xΆՇex ]~szetrwz~}ņvvzOwx4}`czm|}z{Z}yvvN}y2yz)ކwzzx{|{,ևi%}0:zu- d}wsrz|S|{suۂ~Ĉz+v}քN||dMnqu`rqd~ɀ8xyԂII}yx@zyl݈k|y|x6t{fߊˆ}}}x0u;prmoxρ?z {T}{wV{rl t{<}Ax}8@~~|e}d}7X~vzzz׉>t6hn|‚>~Fpml8v9AʅUwxu~j щ,|qlzt}~0|tv,zqlmxvj~Bˆwfx݀|6xw~{ǁڅzmupW}us=݄6~|{: zcw|zy{}~vyD膫AщE}v}?{$v /n򃯀?~v {suxwX@(}}B}y|J ф)|q7k3vVBsہ>8c=evzo~@y^`*wy?}j{}ІO}ʆu~{st\| ~ǃ~vVuz||U*܀~Mvsyl}K}uqqrzkw{X|jzy{0qyu+z} AWuq9|zww|]C{x~.}}J{9}ςytuxO}}tzy燪h}񃭈tG~3G{|刿w}{yzv~Dހ7xuzSuTu}[ч||q}Ɂ{{|$y|~|@1!,~J!d4&}]}և̓)Ç@Ɗۃ$|t{d6x_zp}}b*F}'z`}"XAPyW}}\t{ h΂a}#{މwt4x:{yҊςrw4vgA{xUi9Juqjyf\&`|L{y!wx\z~4ux҇BP~{$yx||3vzNP~[2vpxpu7{|:~\5Ձt5|y#j䃎}|~b(=sHH}~Txwyv\zyᑯr~/|ww}/}=y{u\׌膝Yf|{ 膨qŋE݀}?wt7Juf|N}{ ~97}us>wK|Q|ބ!z4vy~{w|#otxs=qt BeeAyvj{J;}|z8y|6Zyvh|~~{|zv}xYyvi~]|#tCu} =vtc~~|O|b[na烡}P|[y}}~|9X%| }~z{}}Ղq}z|ւ~u {5 wy|}|9"a~zU{ʀ0.lzfviwex:w.{`7~~8^,5~}-+zzy{2}Sx1s{t{(}XyЁaN:b ~~D}Ty}|1{pG?|wc{1~;~sH~}R]ˀrφ|ay{-zy?~{~ |G|ā%?Mt}}}A{|ugxAȅR`{{Bɀ|g}u~O倀}р=xw4|K~2΁q}c}z~Q|{}~}x2}|||A}~ ~u}~&~~fko8}~zvL|䁡~X{wz~}}w5~#i||wB~|#}~h{  w}T~PL;kNf~5 z~}}-|}l~΀0`4;S|{a؃ ~σ~||/#E}|1}J~~'~~!{z~w,Z~{\z|S~:7~y}{}{̀~|}}~QkUh}wuq}|~ ~~}Eyy}hckzhS~}}Fd^ށւ?O}}&9 p[~Z*~_}g}_5bO)3~N~~5~]|G~Q‚Ł`|zWzHm؂}|f~~d}}nwa[)'3Ҁ~}"0Ђ*}yY}|{}~}}~0~~y-~}-}I}c}~fu}f|~؁~}}K}#؀~~~XP܂=c}|π~#}~;}|~Q~R~)~}~\o9~pe ~}k~T ~|}8 P3`N;~{|Y}9h+{172}L~M} ~|z~~}D~%ob=? ~8tf ~BB}(~}"!~\J}~}~߀wf~~S}~f^h~y}~F~F뀺~}|8}=~}~$t&`T!~}ŀ O^U\~~-~%}ww~>gE_ހ~Ձ񀏀ₘv~Y~U~~r>7g؀X~-eEM).ls_F 6Nky~}ajE86YRq\Av/|~~3~TT&ƀ~}~~4I~()|@~~M(0~~~-$Izf~B؀Jj{~~9N5\~-~;rEIm$dx*~~>uAi+4M~Z !{/Wn/^ ֽLkNߤs kMգ&\}sj$b:ZRhLFA=:q8476b78:=AEJOGU%['aDgjmus\y jo<ӝagm֜ט^܉k(^}|{zYzzy#ztzz{K|}}~W@샣@i~}}9|_{zyAyxLxxwwwwLxx8yy}z;{||}~g6^v4s|FI܂gr~L~~~}c}$}}|||}H}}}*~~~U~<́ Bgy^9聲{E‫~Q- y^9 ~~~`~<~~}}}}~}u}u}}}}}~<~{~~ ^cǀ!iBy܂܂ӂʂU߁<뀙?L~~W~<~*~~~*~N~i~~~^Z<ā0UgpgU9 ցE􀐀-p~<~}}H}}|||||| }H}}}3~~pcـN'ʂIdvvmIӂ'NـZ^~`~}}$}||f|B|9|9|K|o|||H}}!~~-<9 d"샾v%U߁ic^~i~}}?}|||||||| }Q}}~r~~L6rցgʂӂy9񁗁<ـl'~`~~}u}?}}||||}?}u}}~`~~'lЀ39y܂ 傸L`H9~~W~~}}}}}}}}}3~i~~~9c*`ց߁ā{N‫l6U'~~~~~~~~~~~~Cg-HZlu~~~ucZH6$ $6HQZcluuuulcZQ?6$  -?QcuuZ?$g9~~~~~{~r~r~{~~~~~ 9pZـE{ց߁́W!•Zp'~~W~!~}}}}}}}}}~W~~~Lcǀ*߁0y.77% ܂gW􀇀C~r~~}u}?} }|||||}Q}}}<~~~g?iā LʂU āi6U~r~~}Z}}|||||||}H}}}i~~^ci^ʂ.ǃ"44"ǃ.ʂU߁WЀH9~<~}Z}}|x|K|/|/|/|K||| }c}}<~~0{LImm[I%傔L񁅁-C~i~~}Z}}|||||||}H}}}3~~^$ـ!r 0BLB0 āEЀ~6C~~~~~~~~L6~<{ց'9BLL9߁i3􀴀c$U~~{~N~*~~}}}}}}}}~~*~E~`~r~~~~~~~~~ '9C^p$Q3iUӂӂp'ց{!H^~r~~}?}||x|]|K|T|o|||?}}*~~^ ǀBsAGkkG&Ѐ{~H}|zyxwv@vu0uttttTuuvFw1x8yPz{{|}'QrvOauL!~|{zyyxxwxzx.y#zh{}~R慨nzۤƥ3c>򘵔揙~Uxqjc(]rVOID>,:76 308/.//036:n@FMU^gq{>Nǹ˨h< L~^ c?/dwlaVLJC:2+%!ha^}#-)J/.6=ENW`Ejs|Y:H6T«V^̷?qQ 3ԏ/|xBƇrzslve8^ W PUIB =72.+)'&M'(+_.274>EEMU^hr6}؇BĈWMX]I*cqU w/'œ DORgxmXcjY P[G^?;82,f(&%"!!v"U$ '*S/4u:@G*OV^bf:nuu}oG{ 6Ͱ ߰~\ƥ4v3~|zxwvuTuuuTuu@vvwxnyYz;{||}E~~Cy'~N~}?}||{z}zzyey.yy yy8ywyy,zz){{T|}}N~~Hـi^ RvR傦gցW!뀽~lccluـACEEGJrLOQ.T WY\_behknqtxX{V~x݇ъ(7(+ yF}w9OT6/"lȩɺʵnͳvΰΨaQ͸]˒ʏɗȌYśbܼ´M.wĞ!X?^y|yvt#qRnxkhe.c`]j[XnVTQkO!MKHG8ESCA?u><;N:98706n54X433W3/33O333(44_5$6778#:};<&>?sA)CEFHJMfOQSlVXj[]`kc*fhfk6npsAvy|~bىu;'ÚQ蟷NK׬UB}aN[2tZʪTU;ц5.xԳԘ0ӎmҵS4-ˍ`éǻ˹o1MɾaDN۰Skʠ`uب!lڡ!IrϚ9}bܒi⏑Kъ%d΂MS-̀cX~4{u(pjl"jihh7iijkBllmXm0mSmmnopursuwzg|~FxXo|o).AnȪɬۮɲb̹+P k 045/~8dcϝ4`zm_4Ϝ1/΀ #I$Ƴa~Qܸ$WJ*󬢪j֣e˔,kŒOׄ @u|yvWtqnkiQfc`^[X&V|SPJNK+IFtD;B?=K;97431H/`-+);(&K%#"P! ;="Y]ZJ]5;` 2!u"#$g&'Q)*,-./13K5W7\9U;d=?AC@FHJ8MORiTV\Y[R^`ice^hj{mpr"uw9z|:ǁ@yӍ(ڔFlG ߬)/YV=P¢[msb ⷿ)\iťƿǢȀCt̹5ͩ[΀ΗΞοδάΐd1ȋw$KxȫǾēhAY߻f︊iŲRګ5IZNP7ޕȓ6g4}\{yvtIromtk;ifdxb1`][YWQU$SQOMKHFE)CYA?=;I:{86S53D20E/-,?+*('s&|%$#"!M! _gN%- . Q!""#$%&'(*S+, .K/02}356A89;5=?@BsDFF2H JKNP R7TCVPXZ\^`+cQegik9nwprt.wky{}4}@o3Ҙ );4G]QQb8Ҵ7㹩a¾.TGǩGw͕ΟϕЗүzFֻ8y uEڥ*Jjۆۊۂqc5ڛa ڙٖa׻.ֈգ΢|8ȕ6ƽPrf޻J#fկ 5du~p[Lލ‹|R, |zxHv t romkigeca_][YWVT!RGP~NLJIhGEC9B@>l=;T:8575k431c02/-,+x*V)(')&I%h$#""Y! aHE6x~B~\PXn !!"~#n$T%C&+'<(N)S*v+,.Q/01345^78f:;r=>@BDEGCI KLNNP*RSUWYe[X]Z_MaCc5e)giklo q%s*u1wAyK{R}icf•ėԛڝqljR0 îV,]ٺa:l(p'dϟ2LJHGcECB@F?=M<:}9;875t45310_/4.-+*{)('&%$#")"k! $?7F\X[a_Q?CzVT<xX |!R"$#$$%&'()*,"-@.h/013Y457<89!;<=l?@wBCE+GHRJKMYOPRT>VWY[L]^``b.d fgiSk#mnprutMv*xz{}tCR6ۓB'Ĝa%磰4ڪXH洡E͹eÎgHʩu>fԚ))@K/{J_@(+}[ '!0CTCtR+?#){?8MMX\^K5&պԩӊQΩU˱`Ǿ^]ڿcK/iɫ cĦtQ˚c&VGŅT~|{Oywus+rkpnlGkigeBdba`_]+\ZX9WUTbRPoOMsLJtIGWFDCB@??=<,;98;754s3U2'1/.-w,m+P*C)2(%'<&F%X$d#k"! PYv4<Kk[e)mZTOP[g1Y{7Tl 4RvT4 !!"#x$s%S&G'A(+)7*D+h,{-./012.4c5678@:;<>z?@BhCDTFGIJKTMNPPQ^STZVWjYZ\^_=abqd fgAijl3nonq stFvxy]{|~A6ۆGՋr$ÐV J>ٝ]0ɥYz!4гYS.-d aSǔNˁ̔Mҙ#JB =;:^9087543t2N1=0/-- ,*)(' '&%)$8#R"m! 4eei`GjIs A y 5 n P @  x l b k ~  ? k  q  | uHA:')Ni 2NKk/ !"H#$% &&'()*+,-./012346H7c8t9:;<)>]?@AB-D`EFGH9JKLNOOPQ)SlTUWwXY[g\]_`aBcd fngh.jklVno/qrsfuv4xy {y|}J$ j‡zۋ4Qm~ך/Ҟ"rŢ(XJ֯"Y*Sι9ۿ5{ÿ/Tax̖͞Χڼ۪܅bQETe-Ahx>;aq[D\,^%RFi  sX/nBVxC U |+\(;LADdDX%q!d?2`ߑޣ&-0?]^lԈӗҐъ}|v__U`O2$"oO4극|P ֯zNکèL룪uK ؝i(嘲g/’~Bč|<p=ꄥx,~o}#|zydxwutWs rpo[nmkjwiDhfedPcb`_w^5]\ZYvXZW.VTSRoQ;POMLKJ^IEH!GFDCBA@?>=<;:9876543210/..2-G,\+w*)('&&/%e$#""1!x SB(l^7]\3#E; 2 ( @ ' Y H}0Ap9f> R:2!$  "8=j(RPtF~,uf! q  _ R 7  ^ D>=bhs>{rDx U ?!!"a#G$ %%&m'E(()*+H,%-../012{3L4#556789:;<=>?r@_ARBFC@D;!E}H~X zf/^F \am=$vS {U&mEpB q8w9 o< o?uJzLBY*e(d?vPR&{A u0D Q=L4|.{BܐCڑ$x V՟+pҷ]Пϴ+q̴=iɝWņĮK9gǹ 8V8k|ج:Uu}Ϥ ,9NStК=D[irю'15GZbtˀ~}}|{AzMyaxrwvutsrqpp!o)n?m[ldkojihgfedd-cJb\az`_^]\[[ZBYhXWVUTSSBRhQPONMM7L`KJIHH7GkFEDC C:BbA@?>5>o=<;;B:u98767}654!4p3211]0//?.-,',q+*)A)((Z'&&t%$"$#"<"! R }U8eA"donVHTqw/ : g  4 g  F Fo j v0q3@z>PzeD >\<n*\%jCuXA_ f (  x 2 z F gXQn[  0YpUt 7!!"*##$D%%&F''(5))*O++,n-#../O011K233|4:5667T899:q;<<=|>N?@@ABXC#DDEFXG+HHIJlK=LMMNO|PTQRRSTwUWVBWXXYZ[k\S];^__`abgcEd'efgghijwkXlIm)noopqrswt_uCv'wxxyz{|}g~ZM-Ʌw]P5 ލ̎rbC/ ˖pR7!ីyV:ޥ];Ϋg5尠R ܵV 㹶}Eֽ|Bc-ģV/Ǵq ʒDn%ϥa ҹp ԰k֋$r ڱRiݺ_ނ$?fJr >jX a@[u+7 w l1m+kLP-T{ ,]6|IV'U+S(Y*g6`*g+e2m:yGLJh/w,d$UE[@CxiB1uތEܦ jڼ[اr^ԫfҿAЉ)΋ Cs=Ȋ Sŝbš0l"Mkظ"YuҴ 0kܰ%Kr#FyϦ 5c)Oݚ#Lazǔ#1Df͍%=cՅ+Tw~}||/{Hzoyxwvuu4tIsmrqponn%mNlqkjihgg>H=<;;\:98-8w766543T321F100P/.-^-,,i+*+*))l('4'&&%$W$#:#""~! x SE1@PON_imMG1Tg P q m ) \  X  [  dN+{OD{hJxL72&( 6_yFd;^=q( w 2 - b > 1 6bzB%Z6!bD$||g~ Z!!H""R##$1%%N&&m''(G))m**+S,,-4../H001W233D445l63778R9::i;<>?L@ AABVCDDEVF&GGHWI-JJKvL9MNNOZP$QQRSNT"UUVqWDX%YYZ[K\1]^^_`Vabbcdte==j<;&;:95987R765F544}32T21410/Y/.B.--w,+e+*M*)=)(;(':'&R&%E%$I$#I#"l"!!  7[jGx J.ZFn W ~.\T VZe3S@  d _ N 6 *    3 k >[=b ;fMGL{d(z{P]^5yM1rM 6!! ""#i##l$$%&&'y''`((q))*++,,b-.. // 00911P223N445&66a7889 ::e; <`??@OAAB8CCDNEEFjGHHrI%JJKcLMMyN2OOPpQRRSBTTUV:WWXzY1ZZ[~\<]^^_Z`"aabcc%ddeofEgghiQjkklkm3noopkq=rss~tEuvvwux@yzz{|G}~~g5 ݂p-ȆU%R#獱{2ґT*𔳕ߘ3l݌1ݷ0ܺJt{؛.ش1׹0ֱKSSO3Ѳ2Х$ϟfY=˴ ʏ`4ǚzFģ eB4IPa RGG?<cV֨'oe!W@~ĞHΛcYؕe-j'aьWɉ MΆ8u1i+f~}| |X{zy y@xwvvOutsr>ruqpo2o{nml*ldkji#iuhgf9fed dNcbaab`_^2^y]\\J[ZY*YXW#WpVUUDTSR5RQP$PuON#NxMLLqKJ!J|IH1HGG_FEEnDC6CBASA@.@??k>=2=<,,J--"..//"00211-22;33:44E55Q66\77g889::P;;U<<=,>>E??p@AA;BBCEDDE!FFkGHH[IIJ/KKL0MMcNOOjPQQ[RSSoTUUV%WWqX,YYZA[[\r]^^r_.``aJbbcndeef4gghii jjkOlmmn.oopVqrrsSttuvv'wwx]yzz{f|}}~;u;􂫃eӅWшy7n+܍Po5XǕ>񗝘Y˚|.朜M󞝟Lf&ţoǥ~ɧ{7橌;}%ŭr#UU鲍4дoKu:кh*H޾e2VfyŃǏȝɄɍ˔̉khHO1є~KӦ$Ԋ"՗;֙kv6لDڎ<ۊ9ܖ*lݺ1{޿CߓQ.ZP~!@[".O"(Z# #aNPI-`6tE"G CWߦY(ޢZݓ@ܡb$ۉ3ڒ1ٍ-}r֑9dԕ"Ԫ:x җђ0пIXy͕$̳(ˤʟ#ɷ;ȵ6Ǵ%ƢœĞ}hC'qԻ=xDW Rz԰5^&uB7SQggàiiDCޗ2֕jZB9ЌaE:eFۀ%v~ ~Y}|{F{zy2yxwwmvutEtsr7rqppconnGmlk8kji+ihg.gzfeepdccbaa~`_$_^]+]\[>[ZYFYXXQWVVmUT4TSRNRQQ}PO4ONNiML2LK KtJIIIHHGGFFrEDWDC@CB#BAA@ @??y>=e='pfzv.PIKk(OkC 1!n!!!!!"h""""!#k###$]$$$%a%%% &h&&'J'''J(((@)))1***#+++/,, -h--+...M//U009111g22H33445}55S6687708899::;o;;< ===x>??@@AABBECCKDDXEEtFGG%HHDIItJKKLL؇<쉓?A썘@揗KB𓋔/ڕz+ɗr^M3ӞtK-ģhF妆Mz ?׬u6_x)]p"/:λ>85@&Ž Áp_5ƪǁ[Ƚɚh0˛g!ͅBΕXϵkмQѰ?ҎsӶ Nԅ]՛tֱ0t׵_؈خKمٶNtڝ*Mcې۫2Hwܔܳ4CYlsz݅ݒݱݷݨݼݺݼݹݭݤݟݘ݂hX[Z@) ܜ܊jD' ۡۏ`B ڛZٶك=اe׈F֧K֭q?ԨT Ӂ9җKѭ[Эr"ЭYϦ>͊.p ̬VʎʞɹHoǗ!Ƶ=OxÍ¢$DƿKeoLŻL׺OǹO̸FַNҶ?"|t߱XܰE lǬ%|Qɨ4ڦI4\â.bş'X'7lȗ2M axӐ;^ dËt؉>L^R#zр4~D~}|V|{{kzy"yxwfeemdc6cbbea`2`_ _k^]J]\\t[ZQZY,YXW`WVIVU-UTTtSReRQHQP4PO"ONNMMLLyKJvJIwIHsHGqGFFFE EDDC$CB-BAWA@s@???>/>=T=<<<;C;:d:99898r887J766465r554m4 43d332l2!2116100c0)0//F/..k./.---5-,,,F,,++\+,++**f*6**))t)J))((((t(R(('''''}'a'5''&&&&&&&&&k&i&f&\&V&R&G&8&2&.&/&:&D&C&E&:&6&<&D&F&V&y&&&&&&&&&'','I'd''''''!(9(Z((((()J)k)))*H*z*** +4+o+++$,h,,,-J----@.../b///30001[111C2222333G444M555M667{77888M99:::q;;0<<>'??@@@`AADBB,CCDDDtEEuFF_GG[HHYII\JJHKKsLLrMMvNOOPP#QQ+RRHSScTTtU VVEWWbXXY#ZZ7[[O\\}]^^%__b``a(bbMcc{deeHffghhJiijkkYllm7nnfoop9qqnrssKttu4vvowxxWyyz*{{o|}}X~~/ǀg I烌&υjC{-ʊiL׍s[7ݒwOڕwQ䘃0͛i$N<Ԣ_*@զgr=ƫRdt~"!"- wOȺOͻ)vQǾ74s#eAĠXſ0ƔQǟ@ȠcɼVʬ^˸ ṰC͐̀A[]ˀ9ـ~SMW~r~|d}~Dyc~~t[Vk;yz{{8|xerF{PCl>lYC6-%/zE[k%vz{} ̃yFR=_[>XR`h{ZaYwuzj_CXV{Yaldw2?ɗѓד$OJͥ 8ϙqtȏ,F SȜTe 䢥8$3М̦sÂ9&}~لč yxOwwu%ndf>mj`1RCJ7,/{-a4@ P^inpq5s rk^X3A'PHqlstvwxd8}7^eRwU-lsrvBsi`#\MdIeS<&'<R\dpvyB|}~x[HOShyyO}w|:~ρpc|2zy5|aLTԌˍ>ɫ̗푙ʜ8|ܞ̓ fs,DMn[v+KL~|OxU}zryw^v w/xIxurqkqRq`q2qi^ai ivaTD6*,%)_4:C|S`9gilqnxmXc.Nb+:W)f0nopaSCDI`TkbO}9q&o!/>CuX_isx{}~xPl9]XUgy*Q‹DЗзsʟڳ5ڦڵݚ~m搓ǩ-wfuDGt(}FuhdYJ>L;_@KfZ hquOvvVxjr$\?H-7WTn&vz|zhT_vx{uAni jmOsz ҇KF٪SfG:ߙק^ߖsAWylm #:}5|xuzt`tztpKfYLB0;=#&K#/=^kWoqsnHK2QOng`WE6--6bFXGhsgz}M{nd#eo})Ԉ`sYBS՟jHّޑCؙ⬷rRu޿yNR\9{K5Ëy\Ƌߢ󋤅݀MЌ5d8M;AxwuEtraqWpomgcbGfjKllkicTWKWZdL[?MJ>/'6&$-;6K:ZcgqhiNiN_J-1p&?\ij|mj]I.;MfaOD=.(,8+Jb\:k$u:z<}xNwvp5bWW`h`O< ,""+!=P_Oikfm9nKlQ^E<0(b7GP+erQu wt;_DN]Vfrqf[ROS\Ghs|݁ჇUdgꏗR}n&쩵ǘhȵmև)HRڒZyƛBM{tWݚZÆrq^?~| {cԏzԈ~{1}ȁ}xsqonmmk~icZSQSV2^Id hDhhdN>M\^aVaF5a(!$0AQS^ efgf\H0D I2L+_h mnj UA_LLc^mjaAZWZZa=k u{jWscgCÔ;ˡĞkpȉ ٚʸ*SӋ4}|zy4vYl[WpcXk g$YF5)M&@.G>"Q`g!kllfIWa`brdaPN,W y&7!L[^e|hRiQg^O=v2Y1CtwKxSundb\X][#cmwtJe9Ϙs5埯Ƽӿ].RgCPɐտҲ dCZJ*ӂiJ2_ڍ}i#*(~ {yy|C#it|owsCpnnltjee_^adcQ]SJDCIfR[[`aYbK_VI:.@(R+6ES]bla#W9C-7.EXA]Q-?}/']+9L]hmoo/koe_]`\gVpxG2eH蟀=5){NɌԫA]Vƕ҂HP\e5 SaځLyrli!jlopokcV8Gp8U.,3AQ'^eh>bQ?l8EZfe`\R_NQZfqy}qDǠ*zᚂ$ڪ hӱjAbqmb҉pϗ  ~`>o}ysik cad7iAh]N?7u8BP{\c8fc ]P=A/2(&-;M\f9llbOBEXjrnMgu[RNS^kfvG|~W|!ypwwy-~׌^t>M;#KWƜQh9yL'|ڝBm'nʫ)ק߷3JcȹãzBlA"=?އYAĉuH}wsqGp=o nl/iUea[_T^ _ aocddbsYLQbe^6UNO]Wco-w|~〟A\ P {~En@HٱvOUBÃw`}9yqjefk[k8dVF<;CPy]ddaXLx?3,,q3?N\gmnibU]a}kVu{G~ Wvu >س]1Ͻ:GLʟ)v8A֩&XB< -މypq2L|voi%dalb?elhjciaR@9 @O[YJL-:,)73EDVabfdq_UIw?87;DyQa^hRpsqhO^(Y.anxzLw8rnot |GhQi2[0zpSsȬŴ|X&ōɭQ g(ƾ֗5 ĽK⛢˷&WƜ>^ /9D?Lȍ{z|MztqoponkiggggfdW`ZSLG^EEINTGZ]$^UF72~>nNWTF5) )64*FT`\]QYQE9k0+U,2=K*Xybi lh`[\exqx]|~-ڐ풍Ğ([ !J٧,ʜ/ФV *׸m\=O"Ё}vojgf)hMjkjdV=F; =J"Xo[{Qr@91h,64bDV?a-ec^~XVR N\MPV_hBq+x|?=؇W%=<:@D=Ḑ]׳Ԟ=ЙA( FJ~xts&s2rni`VMLBJ<9l; ArIR[_v]UR?1y08>Qr][N?68:G'YflkhaZ^TPuPSjYa?jr-yV}~}!yOv=x:}׉e^ŏR|fœٱíţkK^gfE ݉xz~ml|xLtqon%l+iSfddXedta#[uTPPcU+[^]zZTLC;5D34G8?aGOWYZVI8]-/=NW;SD4-g3B*S[^b`-[OUOL>LAOWUK] fQnxu{~l`@2XH£]Į LӸ04Yv/g#q6+g~SzwdvtpjbYPHB?@CfJQRY^C]US;D64,>N[^WMuGKUcmrt]u_vjx{'ql*o{ר6tiвjlݳinnxmO~ytp/onlf`\RL6NUC]La_WYcPoF=511|03t:CMWw_;bd]QDj?NES>b-ie[RPHX+d ouviusGpnBmAnptFOW7]\6UH><E/S^jaz[_RRMOIY{dPmrsstPv?yK}0ȋCtpʒdr[tٷeŜİ{3/įt{GFVX6|"xutsne\WX^7df ed_WSOGA==@YFM+VE^wdgSd^XV8\ens+utDvy~ #މb+FY2ݣqU^WХϠHSFg~8}Cyusrdrple[RTR?W^b_U@JDFP[bc#`+ZwSXMHFFHNT\JdjvnmIh%a\F_.gZpTvv@s#o nqv|m?mRÍUi1bjQUܬ[ c;9[0ӹsZП_nlYG;1٪OA锨gd⡑hŖ2z CL{.y"yyyfw7uHsqpomkhec`^^^ `b(dhed`AZ_SOmRX_#aL\MSUK{INWs_b%a\&WWQ)L.HKFFINeU\chqifa]\,ai,psHtvs:t3w{Ȅh q㣜  NZDP&kJOB9t}{ywvfur-l4e_v^a`fhe^UQ4TW[Kc#hhTf4b ^yZgXXYi]=bgmquxyzF|~Á@|Q$rZQ$ms$ט`vz~+̑uMʌ=6K}{yv"sojfcaabd_giGjgSaYSTTZbgfq`-YU6X_g3mnmiyfYcaw`Eacfko twyyw^uttv1z~z,􁨃R}vvЋ양t@3✬vΞ򜝢>k~Kgh>gsAܥdjĝ(唨_wF+T߈9'A&48AS~C}8|J{{zy y|xwvutt ttttrpn|noxqr,s3rzpnl0kihhpijlopqqnl jjl;oqrpbn:mmkpxsvwxxw xxyzA|}ZP}Kɋъ0eisyϋmƍ?}aבd*E^:[䁀[K~}{zyxx yxwDvrtrpmonnnnpyq$stuzu>tr~qqs.v0xyxxxy{7}~mT_N̈VF펆jGEǍ^32wńQ恮`~}|{ zyxx-yxwusQs=t vw*x|wvtLserqqqrsuBwxyyxWwsvvxz{|s{uzzz|}~ 1'/JmejÂHP 0և/ׇ`,aI҉{ Y=~@*hg։u?놩㉫׆4VTㄘ):g&cyaWz~c~}}m}@}}||x| |{2{{{A{c{X{ {zyDyy^yzzzzxxxx$z{d{{Fzyxwxxwwwxyz}{||{zCz.zz{|#}}|o||Q}#~~z'c" 낽ڂkChFl􄍅Zg*/,쁤G}u&~x~~}9} }H}{}l}|J|{{)||O}v}N}||1|{m{L{|{{|}}~X~~~o~f~~~a'[hρ>y҂*L:߁>悝oEMN~Fru zq~|h}~GzJ~~t[VkIy{1{{K|eUFbP!llYC)-.dE[kv{~"yYR=_fEUJUJ{ZYYwu}j_9XV|YaplPw'Œ×uʓߒΪ;&!͕4Ӱڢzd+8SǜKklm򼊚䢜99I ʦ~xł$}~ۄ-yxJw1wv'ndf:mj`RCM7UFl srv=si`\EdEeS<''*<Rqdpvy:|} x[HfS9hzrɄs}{|Q~ށ ~|9zy:|Ic֊ËBFŌʍ<&hx/mɲ) ܘ̘ ju331su=ч憥{2ݔI^rCtQ~ }zgyw@vwxAxurqq=q:qqi^pa|ihoaTD5)$%)c4ICiS`*gi lpnom@c"Nf+9WFf6nvo|paFCDL`gkbO9&a1.4CpXxisx${}~x@l]XNgy Vז^Ɣܗ⷇ʥڝ+ڎ׵ښ~ݩ5xf\?6i؀}7uhMYpJ>9;`@KYZh,qujvw^xlr%\?V-7W[n vy|zhT_ v{uJnjimZsz ԇ,u8佑ުVr:6噼`߫,QAӌ;ggA”xE},|xujt@tftpLf YLB9;A5&i#'=^kYoqsn&JRƍ<ЋeƓ ˀ@ѣ܁ˆ^?P=3xzu;traqUpomgc cZfjbllkicTGK=ZldZ[*M">/&& - ;!K'Zcgchibi@_J-2i&?\ijgmj]I:;M faOa=.((,89J`\8ku1z7}2kFՇbҏ:jߌJyNJ˝(ƊPzWg=)+@Ylzs-uum`v\bp(yxvrrLtlys˅z{-3KƵU1ؓ{ ۛʧM(ׇ愨]I|yxYx=wvpMbWW`&haO<,z"b"+=O_Cikmm[ngl~^7Ef0(7|PYer_uwt_#NCVerqf|[ROS\Ehs|惃?Ke&ǘ: uȩG蕙 {֑4P[ԒYz,Xٕژ}-ˊw}ɠ<}c~|{BÏڈ~-{O}Ԅ 0}xtqonmmksicZSQtVN^dJhDhhe N>L[^XV^F5K(!$0AXS^"eggf\ I0B Q2L$_hmn jUAL~cxmkajZWsZa_ku{bƅӆElMT@ДΔ=˶󪼞]fnؖ 0dِ9o}|z\yv:l[W]cMkgYF5{)G&Q.G>#Q`g kkolfWHD5Z4i@Tfpu7x'xurr]y>̞֥ y'xGԉo5|⓪V-{ԗ |R ~|ezv[odWNMS_rhkdm8jy^H5L@X[ybW)D0#H%6xK0^jknppncRCupnm=k9gb_^`c8fIgfgge.`UgH=9>J(W`bedaOG,c &%8SL[ve}h`iTg^O=L2E1#隵bm8֟ʼٿ'7GD^33x۷թԲޚ`FUN!Ӏ]Cb~KO:؃}{yy|+cs|uwsCpn nlrjen_^adcA]SJDCIZR[\`adb]_WI:.C(V+6ES\bca W(C-;.EXR]QH?/'V+9L]hmon!kZe_]`TgXpxcet]z;zs/Ƀի򠺜K"^bƅyZJEX+&YjKyrli7jlopokcV)Gl8R.,3AQ*^ehMbQ?s8EZfeQ\RVNgQZfqy}mΉV頕-ޚȪ\ŵ_=oyi҈uΗ t^`Ԃ}ysk,c%ad6>Qbe^;UNxOdWcnw |~瀨FdX ǘʒLx &@ͱjCS?}gS}6yq jefkOk)d!VF<;CP]dd aXLi?3,,t3?N~\flnibJ]`jkCu{<~ T#ѓxx Cг!U Ͼ9AH̟-øo4Nש]D0,}lr+R|voi=dabZehjmiaR@8 @O[YML7:,)73EUVpbfey_UIx?87|;DhQP^h4psqh=^Y5a*nx {dwRrnot|Bg򌩎XvΚ?yFkFqn=z­b0l: ֣E"ķ<ٛ˳ Yʜ:V֍85ޟNՍ{z}-c%ztqvponkiggggfdW`ZSLGaEEHgNTAZ]^UF72p>nNWTF5))O4>FTs\]RYQE9K0|+G,2=K&Xbilh` [\eyqxS|~ ې풓Ӟ9g"'RƧ,ʛ(ˤS"ȸZS-<|vozjkgfhKjkjdV5F;=JXi[xQl@81_,&4tDVEa;ec^|XQRNYMPW_h.q x|.,D?E>ZY6P̪d׾԰4Z4`D wՆ?A~xts7sBrn i`VXLBV<9q;AnIR [_u][R?1|02>Q]\O?6R:H/Yflk hayZ5TPTP^SOYya7jryR}~}!yOvDxO} Ӊd[ďOuݜ߬<̭£Eǧ);:ƪѳ(@ȱOʷ¦v wХJEd֝wPp}łˉt+|xZtqon l)iRfxddYed{a1[TPPxUE[^ ^ZTLC;5(338>FGOVVZVI8j-/=%OWXSD4-e3B.SX^ b`[CUOLHLEOfUg]*fjnu:{~^0#Ֆ6-ܰŵḫ"IJ8ӧCd*n:C8f~?zwIvitpjbYPHB?@CjJWRY^L]_S=D64 >N[^WMiGJUc"mrtzumvpx{ʖΖΕbZzgnҨ;а}󵇨lѲck' %)n~ytp,onlfa\R{L(N}UU]ma_pYPF7=5@103r:vCMWx_Abt]QE?mESjb^ie[RQ[X0do uv[ur)pm4m6nptGy~aM8ٓ~58"GOWV]\RUI><*EAS^jal[KR;MOEYydKmrsst{vkyv}.E_~͒Q`촍RnѷoŬѰ;/IVgS)\olC|1xutrme\WX]dfdB_rW?OGA >=@UFM#V;^edf8d]WV\ens2utRvy~/^"1<έ£bQj,Ͽ Wʥ͠q3@:vņY}cyusrprpl e[<Ϟ\QS!̹jMGmylW?+תD-ɜǔtei补ƛY 46zyyvy y^w4uEsqpomkheb`^]\^_adbed`BZeSOR"Y_Oak\`SaK}INWf_ba\ WYUEX_g0mnmigfEc`Y`&akcfko twyywoutvHz~1끩Wyop΋疅vb'[^ϥrc{vGjp@"fs՝-Qpc)c>݈A6SOx5~*|zzyy6yxvkuytlsqo.nSmmnBonqm>khec`E_^d_`scTfhiPhdn^@ZY]cflf b{\YZ^diVkxj%he^cbabdgskopsvxy;z5{|Dwc3~pŏ𔾘Ɯe(yK8$C[YUmX{'֋/ ~}{LyUv3s@pml:k>klmomomie^a`chtkk2iecSevimnqrttttu5vwzS|~`RLx1[ZaȑꙘAa ׇÆDžw~|N{iywtr[rrs`srollif_dcbcethrk nGokntkgdd_hJm qq^ol\jk3osvRxx#wvQuttuvpxVzX|J~#āȁ 愩f]ˉJA%ŏkt(-5Ўޏ& Zݐѐ |lM0ޔtGu9ef R0I$2.6EX~H}<|K{{zyy}xwvut tttutrpnno{qr)s1r|pnl-kihhzijl"opq)qnljjl>oqrprnHmntpsvw%x!xx%xxyzF|}bӁfIۋ8Y\~~Ӌmō@mΑY:[<_ꁆ_L~}{zxxxxxw;vft~rpYoninnonqstuyuDtrqqs%v%xxxxxy{.}~aJ\M̈R<񈠊؎s[:v;O-Ȇ8q„K݁~b~}|{!zyxx-yxwusLs7tvw$xywvtOserqqqrsucwxyyxawvv#x#z{ |u{yzzz|}~%3%*Cgf_~IW.E>m9iN׉_@y{>,nnӉl0܆φ,PT넨M JDp&5%]Ly,px]aq]% ӃzX)`aWER9ʶ@>pb|H]򼰲"09ͫweM3ZM+\R,,B1*XoZ˒[ xh__^c*ix.'ҏ zijo.ӳsji8pQ},;씃vQGtᕾtAFA\\L֜_dy|)SwΞKvRYv.q7,*ݱ͝Y>cִlB_ܐAC9coz[`ɐ󈸙nioD}Ʀ0o1LvOK{L;SrC- LFCnR{߇zvvprqؚE?OAr6J+IKW,ct|budP} xwn\O6۳07wpՍReԧk͂ y::؈l܅E*>K{nt{Yfwdoyw|Y$(YN~wB|ȫRܒPnunmma8K\|o=jL^쨌cAejo9$ir;Lr fi{TJѰα~d5Z-,qd>o۲ߘ ]ylniHH^ۢ{Rčˉq_{I|xjoT2A;]2yP)+ئSrhk7,l[{t\Z\s΁`ywdi-c s -f;XVY4hʅzs\hb:gj@6eϧym6Wc-Z`q܊qMHf΂RYG\x6#kǠ_issVo;[I$w^Y|5M웢 #vrkNeTpވfaM6v-V5rg=;x<Qu%0|p:(y|vݓ݀]!!b'8z%Un=seo8|mYS>ʖ`zrTt놝bbw[Us٢\Etjuw0p`띐_`2wqHx|Ґsv"X!E<|>uelirӂvtsRpTo;lmkTBx}J0.Os0Tdns{nsjWtYihadg:`s~: q ftW%l;7&wy68{_bQ=cSsno拧Tm~ڀ?wޑx8`rzυсquSuoBkyBok~ ope{v|j&j\if;e%>œĊiruJZ'Z}g$kx|2rkV#΄iyAo{^tz9BKyF[gvb_n #!vI}\>8σBkgyzyHP _nUqrvuvdl,soXčxb}*mw}Њ~wdhi$ubZ7o_C}V}JvmYfz̗uCw~7qK|ch%dV_ayܑ?OPvszi\2mvy~čZmevmmFl~6_~km{+vZ}kUkNfŔ'ZyEtAky)lMeAq]%ytۑzC}-uLk'dl8lmmrܗrkuRʌpymuT?l-SHf&carswPvy.ifUxhxktu1S~C}qH?>lvwcxr&zju0y{hz4 qpx?"8ȏsyy}qMX~/inzɎt8yVjǃKeqWwnmuKRol bzxtnam}=reۋ|~{m(drax(}"mtRnvm/ u l퀩dx5 }{}v/֋tQfMv{Hn jlvazswx}|h ?v}"~kyq sv{ـd|,y4_iTidoݟtja~yn{ڈpz}3|vQf3izOlhUqn̞}ew7sBm2zv3ʒlurv y>x~߁td~E''ˁuz |y2iux0zd#}(xb{#e[kw}#czPz :}} 'x~%{ctف6t^G^y4iSf;}-Yz{l}>yy{grˌVnҀuv}iw |ZrS\bx.tw2]=|cWzo1wuVvsWz%ӀXb~{\W}À\~rI||<|>р8zrqo|}xO|p熵zs,~|}aa^Bxtz~utnzXo 腶4U~z9~{my33wXq>vzhɈ4yZrLvBp w|ވyx8p#|ɄJI}roqTt{trkt΅2ΈT|vF`~{+pu \wcx򈀃0…Ռ[}2z}V8|h&lw|SM>0~zu{ux+vOy҂y-|YryN}|1yy}K&~ sq|JL[}N}ttx+~L|./3}Zv>xx|~j{touG~PTniw9vy}"#}؇vvR}+wR|4I[ˁ}{(py[t\ts}9}nyh|~Ä]}sfy[T|ry|\z:xH}16{t^}Acx|~|r큗z~|Z~:zK҇{fvzz|}J|a݀0z?~N|r&x6|M||N.p~z|E5އPx|탒~j{~炩zx|}|S%|I}󁤄pzy5Iz%b]}{!9Ɂ}xz~y}< *̈l{\]fHqsnkcmry}xiVmHFCKQX_gnPv}Aّϧ7ҳPHщoW7pgV8c-Z`$ktOvq`oYqux\x{mZIEI|PW]dk`szookx9( prɓoԘ߂Tg[V`jOtxvrr uudrgTGKG/L RXd^8eWlsza‰RjJԮޣGJyq۞8j\_j.suyxusis qj9_NGSINFSX)_elszH̗ӞI$mYЋuQ;ˑ"4*m]4_ iqxz`w tp7kbTIH KgO5TY_\fmszȭ93O/lE' qS^^gxpvywgsYmJdXJEHL$PTUZ[`fVmszbLwUlfiAF}8S|mĎ@u_]DfnRtiw,v'qhj\+MA`BGKLPaUZ`*gmtzr-Õ]ТV ͫMÍYHLɦܜߖݗ xaM]dlqsr!mlbScB:>E|KhPU>[Ia|gmtzc If({d%ީLЕu8z;b\Xcjnomyg3[JE95?z:͍^񚋡ק̭ ⶡ,֘؟ͩ\Mە}d\ebixmmjbTDC44j#]xxZl]_f5ig`TADt2+.M4;:BGMRX^dk]qw&~F0̥08zwE޵2_דbK`U>'nA^^dge]Pr?/7- 4;AFvL0RX^.d\jpvX}ۃeT u.',ÕV8CǷj_Sq^ ^c)fzcZL;[,~,3;@4FKoQ_WQ]ncio.v|=薔>Ϫක*ߦј~t'iBs_R]Ebd|a/XI`7?*+R3h: @fEJPV\bhoWu{HՈlʜ~#{S0| ?k}h阻u`\a7c_UF3(F+29Z?D1JOU[ag?ntzoC𛮢Pɯ@N-޿ U>z̾׳Iwa\_a]SC0'*h29>ChI%OUZa#gWmszRΡWeڥ>*ţ˺yb][w^6`[P6AQ.%.*1a8=CH\N+$|)17<7BGsMMSAY6_Qekq6x~>ȋuVʳ߾¸`]j {B~]eXZ[v]XL<*#)06;CIjOBU0[Eaqgmtzz0Дe'~1(Ʈ@5L;ϖhryXSTyN@9.K{&-?3a8=HCHNTZ`fl:sy-Y\ ĵ /Be%+05C;@F.LRW]c;jpvm}BԞ}^ eƩD3zECϞ׶gJOA8)F%7+70]5:_@FKQxWx]cipsv|3אW3鲧'ή%ˋ…è54Έڣ$oIg;1! `%*/4I:?~EBK QV\c:ioub|Iʝy>Ͽ<>ͽƀhGԾ֣,˾xI4)%.*-/s49?EJPV\bhou{Bꏗh?'븏d˥ϽьйB®|1Y`KQ.<$).4w9?DpJAP&V,\>bvhnu{9݈MϪınŚ3Ҷ,η }=@ѭRM(mQ{s_e$P)~.3H9>D-J PU[ b@hnta{PלK#ԛbɫ ˸ҡ5҃}O"  'o $ )I.39>IDJOU[ahNnt4{́z'㕷rtcCf;խ֜Ԭʹ֛߮qKgPx e$(A.39>>J׺цW@%R|^P3 V#(.m38i>DIO}U|[ag nutz%掣vH291(nCْk!ش Џ L  m`$#(.`38g>DIOU[agntzFlUUTIƽ?ѣݷuH$ S "#(.c38g>DIOU[ag5nt{Tە|}q(XӷؕHܟչʳ|g̤{G!&  -' #(".39>1DIOU[a hRnt9{偀=Ҝfeٽ߼tϺp2ü,sDLr.m;$,)J.39>NDJOU[a-hsntW{`̪ԱӸƻ5ޚa~$nDZ_oR6%;8E$V)i.379>D>JPV\;bvhn-u{Y\G,47ME.`6ʛ˭Ȥі.paYl=@,)1p$).49?DJZPWVZ\bhoru{AT\]Zܹ=ͳwy}xKhL|{oXMRXV.L: 1)5"=CIHOU[Fapgmtxz >픪d ]AMš=b bW}|pZMHRZZmR8B44U<[_agm.tz2ćew 5„eݐP. #ՈB0}rG]MyQZ]WzJ&9F5;CJO[UE[magm4tz8͇cX0'۽2ռ} SQݡa}s_`NPSZ_^\Q?6; CJOvUM[oagm:tz*^5ٮw ڍyGT_'%~uaOOY`!`JW5G9:pBIOUi[agmKtz2Oޔ XNQ%J=v~ޣ;Ζ ~ZvdONXKac}\O/>:gANIOU@[Gatgmtqz .姦"*L߂FKvlLwfPM7Wae`VmD<{@HOtU'[!aFgms>zCɍO֚8QݬuZcy |Q#o"e0ox-iRLUX`+fd[K>?G$OKUZ` gEmsyizn ="ϠB~D♴ [nH%!yjSKT7_frg`USB?F}NTZ`flEsy93  }}[SԦQRB zlUWKCR]dfSidZhH@pEMTuZA`Jfwlr(y\J6Ү**2z1}MRŝ8!{,nWKP\ekjh_OB}DrLSZ_e lWrx!tɘ~0Lwh΀x|F{3D̦V/H|Jo|oZJN&ZpdjfkdoWF2DKSYv_[ekqx~ ~֑!'ߜm|Kv|Ӌ,ѡB䬾L] ~p#\KHMDXcuj(mh ^LDIRY_dj;qw}uA|dʢ1fd yt{)ߐmLK쭳ݪ7 rM^KKVainPlccSFHPpX^gdujpwd}CȖ3\T!vs{o67㥚j$D'{s}`8LJT_hnnohhZJkH{OW^cipRv|%ԏěӦ\wsrRzEjSI,;z߆2ubBMIR]Fgnp~laPHM@VF]Lc+iAou{^韼uգ+aqyqryFԓ*멮2weNHP[e`mqo!gVJLT\bhntO{ P^ 2,e}opxk2ɘr ku4zfOH>O5Z dIlqhrk]NJLS[>b h nEtz^CߢzmoxZ-^f'!O}hDQGMaXfbkq todSL)RnZwa~g^msy9Ҍђj)斳)xm?U GJT^gowuv)o?aQ?PW_Af7l/rlx~J18@KATori5muW}teA ~$#qrW+GIqSJ])fxn?uwWs hVPZV^ekqw ~qpϕJ!C\fTotglux|rZ]}~9@&uYGHR[d mtyvm6]+R0Un]d5kq8wy}ʃ㉻FΛ}kekYt{ǁ٫< ֯>Wz6]HuGPGZbvksoyysd|UT\djpv|&0fr_yhdOksz؀؆ތ֒ԘĞ= q`k[` IFHOXaaiCrFy{pw,lZTZbjpv*|sg)ꘪuKe`cjsy߅ S\񷆦|eJEMW`Hhpx2}T{TraVYaiou{هmOٕB4NQpa}b~jxr y'MeZ]˷w٫jL5ELV^f}ow}c~wtiZ0Y`huoeuT{tPƌhZcM|j_a@jq@xE~rjd|xٕpLODKU]env}|pP_Y_houzdž _Rv>d\ajLqxwn} @Ϩׯ0Gεx&SDJT]dlu}6wf[^gntzHRAUb2`o?^Zaipv|?gxAJζrð5gXjEIS-\xcsk:t|x|n>_n^f)ntz-osxLg!YYaip v"|uݎ4㮇1ŰAh ^FH0S[bj4s"|Y,vd]_Vemtz$Otp^uUY%bnio}u{Dl̠Yv Ğ|Hoe\HH^Rm[bi!kemvs|sڔx}MVkGx. "I*2p9?EGLRX6_eKlry`ܛ3*ҿV ۻ5Ͽ u$mAs{G ,ߛFÃf>(07=D"KQX^He lry׀׎•p457jxtx~瀶lC̘a7y%;-4;CJP`W^dkry&JisnT1NXʬohj/{|~~}Zj̍y3\5T8!9*c2E:AHOV]dkr#z{ˈ2STQt׺e}%ǫej}i{Hzz}2m=ukX8j#'08h@GO#V*]DdkrAz#ۗ(2mɻ30{uux|N.Ä}q*Y7>%"*$-6)?F[NU\dlkrz򃭌?mӰsX϶r/ &Hrsprwd| #;zjW9 '1:BJQ,Y[`gnQv}97 ,ŹfމԶx{lkouz䂍߃ʀ{qa6Cr&'@(l2;CKR ZaDhmov}Uq.ͼÂXB:wT(uhgmsy~~U2zjK-+(83<ELT [ahp/w\~o4ӧb~Woɽzٔp]dfdjq/x|ITtT_4Y&6)3}= FMU[bipw~T x˳Hcۓv}flaa7hov|_ـg~^v;# )k4K>GNV\cHjqw~hRuԾ hˮsSvj!`_Dfsn+v#|J1ΑXP(gAM()C!*:5E?#HOW]wdkqVx\Ӓ-usA ¬udŶPjp_u^d4mu|Z@2TqI, "C+5 @IQ"X^Dek"rxD˅5}ƞ4ƵN 9ę\S(l_]Mcblv~S_h-|Q0 ##+V6@IQX`_elorxS̅Ukb>ٿ|A_Wؐ[qc^cku~ &W؅rY6%$,D6~@IQX}_e#lzrxG,O? Ωha Z͉xhaTckt^~Cn0RZb<)%O,86i@IQY_e7lrxL*@8ĩk8Ȼߘ ዺ%Coe`dj8t~F.W XkyC,^',26V@IQY_e3lxrx; IŴS߽ݎو;@Yqvi%fjsg}ÎL%{EtgJ0 )-)61@IQY_fAlurx‹ƣzݹ0F| v~ohjr|7ϕá &\'~R5+- 6?:IQX_el=rx~O2̮Nv1ӓÉ푯vlkOr{OܕQ)|ͪS[;y-<.5?HMQXf_ekrWx~BireA礼䪉g&5؄}Dqmrzٍ ?u_c@B0E/$6{?H(QXG_ekq%xh~1좣.qɞL|}&ڔw1p@ryƃ1RwlF3p0E6O?HPdX"_iekqw!~wՐϖǜ:ͭаM냲{y{Zĉl.ƍ}ssUyVr٢tıtM(71d6?HPX^e'k?qfw}0P\C˧/Ӫ|wwz3ɉb̚H]xtx/2ڭI}T;p36>G!PWp^djp wB}ߏ֛=xXwt%vy~ÉaRь}vxY݉XdvЪW\>@5?7>ZGO6W]Md]jdpv|0HO< ~yAssru=yU~Ή*=6#z?y[PЭڲ4dyE 87h>F1OV]cio v/|sє᥎Ut"pp#tx(~ۉя^e~z~_♖(ܭ”kJ:8o>FN=V]_ceiUohu{ց!ԟ܈y+pmfoGs0x}Vn|T~Z{β]tQ>-:`>F NUa\bhntzKb_TslkDnrw`}glss^1ɤЙ~̍1l|6X~B;>EMT[bhnszL}I{oPj_jUmq=ELCT[`ahgTm@s\yԋۑɗ;w!l0h inl0qv|È͎͔ĚfLL5ի\XteK@?E[LShZ`flrx~ ݛLʂr9i]fgkp v|;WkxtKl.*/2֣ lQB@DKRY_ekqw}[~>ofdfjowut{ۍ˟ª꤈Ї݃Vg]iTA5soV8FADBK;RX_djpv| 47"&zAldfceiotz-Si\=M:ɗˠwЖy[\JC(EJQX?^0djou{$FSD'wvibbd iNnt4zfnjڒژŞ>< #1wW~,bINEEJPXWx]Wc/iot{(NdQم2t3gIa`c@hmjsy9MZH߮+%h ѱ%ggR.HF}JfPV\bZh2n!t'zFf|ޑsq e__boglrxf7ή. M{t@޲mW4KGJOU[ang8m s&y:b}a nc?^^aflq(xl~⢞SKVZ\`bflrbyTl|hE𩞯'rfONҮ$$-zqHdYTTW[`elkq w}rb:VnQQ@UZ_e+lrxT!⣘=Դ+/w| ʛQj47{?th]VgUW[9`IejKp,v*|}mR]RZOPJTRY_Hekrwx~?vJ}ع1{yJƚ㢷ΰCB|vmaYVW`[_djou{ixgfXObMYOySX^dSkq;x~>lvjI?&֝!jC2]}x qe\-XpXi[_Wdi otz}Wra2SNLoK'NR+X1^dkqw\~ "C5רԾm3S8 -~ytHj`Z.Yu[L_chcntyykZ,NHIIMQW]7djCqw(~؊ZY8*@PNyywnd\TZ[9_chmusxesbSjI{FHLJQ7W}]cjqw}cېâ=ʳ6Ë\.ҥ-iey3zWsUh_[O\4_SchOmr,vRk$ZLDDFLKPV^]cj qw~l򢧨QV$ŕƧƤ,dozf{wlc]"]v_BcglNrpa0QECABEJPV<]cjqw~ъm vʾ žVh ҫ2D{{{?qf_^_!c~golphW~H@>E@D"J6PV@]cj'qw%~݊14 ۨ"& ɉm#{{A~,v kb_:`7cPgl+l4^ M@^;;>CIPVS]djLqwV~ 8NU4CLiɔɣ ||?zof>a`Tc-g kcROC':79=wCIPVm])djrq x~;ip<߮}E{Ěq YuU}{b7tiPcac-gf]XGY:44W8U=;CI8PV]xd,kqWx~<Зʝn(yɤξyMK_8~|Ƃxqme"c0dCfq]K<302e71Ш1B|҅}qhdd`a,Q??2--16<'CIPW^^#ekxry4bp\įXĺXg\#ZΏр_|!чv lf dEWD4}+) ,0R6%)/$6#W)/6=DKRYZ`&gmst{#BP@ԫ~\оkڑ!Py}~Æ<TEQLGS8Zagn*u{9ώ砿s;]se&<aw'~} ~H`?( mw#)07>ELSZa\hou|1UXB׬uM²̰хBߏߧЧ~|qW;'$G*18?,F5M(T[ahgov|Vm7p.I_"+5|{pcQ ;(Xp?$*r1e8s?FMTa[@b ioLv|UܡcmϽ-=(֗@p)JxmaXMNīJgo|^-SNK?6/]# %+c2C9B@ZG\NOU)\bijp w}KH\ûȾͤzܴkRF|aOGG`JB3'] P!&c,29@GNU\Xc(jpZw}OՐ圽)̳6ͭz$ܩ7M.Bt;TB>BIcF$9+#P!%#k',F3:@GOU\cSjpw~sȊ ᢦDֳ2Ͱtܰ!u_m?;jG88>rGI>0"'t#w$<(-3R:4A3H0OV\c~jqw/~/󢭨LM҇-ܭQsb@`= 1E3& 3z-?-S065%;AWH-O V\cSjpmw}I;ͭ` bŞj:_ݾP{Ћ`:(p)U4gBOZ^4TEU;6J7:?EKLRY_`gmtz(XbW*뤈xΠV,^p[DiB?,i)2`@M~Yk`X{J>87:?dEKGRX_Uflgsy2zBhϴKacA*t@褐ߔ rI0*Q1`>LX`\OB|:8:W?DKQBX^e4lrywʝ4$dȨjcۋsſDdy'R5+T0m<JwVe`\`SE<9; ?UDbJPtW^d\kqIx~"9/ۢy |Ÿ" хڬq蠱MZ;+.0:NHTz_b/XIC?:Z;>CI&PVe]dj$qw}4kyoT?8S[CѣQ1q~cB180 9!FR]sd\UNbBb<;>qC I`OU\&ciGpv}Yz?񦀬?uƓa=،[ &-ΛwXjyJR6s18DPG\d`RE!>h<>BiHNT[;bh\ou)|{Žv&.ʥWʹgooQw;e37iBOZ0dc`WI]@Q=>BGM=TZbagwntJ{чәTV&Οӵɜ"Y:$s4YAg67@LXcNf[HMB[>>TBKG MkSY`*gmtxz̀ܞ;amdH҆~[䜦bu_Hd:8?KVrag_QE?9?BF^LR Y_5flsy +7ꝥ: _Âp)o/Ȝ#۝ݏxdO)?9:>?IT_gcVIA?BDFKQ1X^Jek>rx~7S[MآlXĽDzrF¸n^՝;zgUD<>GR]RggZLC@BEKQhW]pdjkqw~\w~mG (ӷ˦?ޭvǘR}i[J@?FTQH\"fi^PBFA`BEJdPV]c)jpvI}Ot߱.TlfT̥UחP4]lk_P?EAekrUx~τފՐ~.ȧ8۷}i ؍͑畢֒{yjd.hdZ,TT![IdmqOhZP}LLO^TYY^djVqw ~qeuJTu}Kj,cfha`X+W\dmtnbPXR RSVY]vcjpEw}&ĖbU(/,]Xވ_T!}j beke]ZZm]dn[vt ji_XJVV}VW)\vbQi"pv_}w͐բ.ΰ&M`Ha~񑘘𝳘k aCc;kjNci^z_enCwUype]XV:TU [ahoIv}ƃhMyXcO7tm]܈͉m`ainh cNbgow|)v\kKaYSPT$Zahnu|~Jq:Աó$A2$hrAa_1gnom1he2hnv{}zop)dX2PMQIXC_.fm$t:{^mb?5 #މLl0FќxcI^dmqmiinu|*}sKeVYL,KOkVP]>dKkry7ҏ蝑3uȱpM ,鏂yqg$]ajrxrnrl&otz|td5SHHMoT<[1b`ipWx/ۋUؚȮh9f܀ɄǑw5WVty0po~Ԣ[I s솤eXmnolb{terG{ZxH7|x~(Ɍ}5d~t]l`kl]}ӍnOt*p<v&G|)Us_xF4qhfr+tPq;~fPT~eLV_;upj9u}}ښ[Bz 4lmp wL~}iO Wi1a}?Vxqg ㄣ|CBΓN+mˎz|f'pOndzj[gPvfmNGVgvsim:8~wM TQ_Y?feXd'{d[A0Wg2ᘦ~.dVs:essn^sUpƆTm[8Yjr~M8z{ےzȞmCmav̐Sjg(_q;htuE{9mhb }@]xynzc{vxl5ucъ|5iW|fFTqp w/4Pjl 甙`B+uhhS r jjS,uvz?Vu{-l%tEx[S^zh+fny~Ͼ !wn3{zʜXKo~Qh'gEl~Sd)mՀg}_{*qdݓe|񘽓~w Fd1ޥ}}aeh}ٔڛј4}gtjer|JkeaqtU|He[dnxsGShBnHex'f}Rlmt[ b_"ֆ9t~`[[qbǧ mUF]dYijnoPsT;txjF΃~upe\bu"FqfJN^ gN SU}q|SzӀx xafD_y楔hךH}zpmcjabH~Caxvqyu)gs͇yDp{}|EfYʣ{}?wāqX,~x}}|fXk8z l*z UGz1rA`baqylqoZd>~Dr]ul4[s|hcŲU}igv}ָш moXl}Y~\bo"3ix{"h}-MfoPQbĤ.LGm+Yu$}\kS]M^ ZmFwJwZ0;Oeb_b*egv6@e䚾.rӅDʞeo{g|\ܘ?j:ziܐwy qKʜuX{ya^D8~n6UTb|Wgt NhQ\ԑ~ W(Djz.~[iVRlii]xI3k\ ohy.Cw]65?CkXHXHj{]IŨij}1{VyܔӪm:bANTGZrsxhiWv/a:w^!7ɻHDnr\)tr{LVtOpPċunk~씛>z a{)fKɲp jLMg߄r`Tcye(W*#g|qR4Szr:SoDhYϡru+hPqNTLΓj;yzlp~Te2Tc>qN;_0a9h.ґWwSRݬLňjܛ9}\'CV7K,_jnۆKVO`T`Wqlə!t%qֵRMc+TG-Kj[:6#Re\d\{[琮aW|ҖvUV|`i솓S'KLjziƙ?#O6jzZelxk!rw}bBz}իJ;c&G$SwqiuϨP]:^u)&Mwev'wK(V{ațx}[:(zowT@akfdp۩ч2A\tUI7J|r =|F_CqRzxhߋtv>*p:mlcs6q*j(WxhHrsacu_G\f9؅ fpR68zv~ޭ4ј[OfrlqyZiʑn`mEs%)`Wc_j=y8Dvt|sU2K;H*Pswm {d$$|\ʬ2g\kˤbuwfT0PQ'e1\IQJrf=hfxizHi+Cjf\mQءQwB߆1Gltm|1~p8rƨGb\Jn~_-ꜜm _DxjYEWi iP{[Z%dbzhW YE^xC, #pꋮ/nYSi$@X^x&߉,4~ԗozj:V2m~GnNf[۝jTӒsGlSyQ@__rl*]osn}tQXksDRjWaB~bx@xJx]hqQhiۃ҇KÆՐy6mo^3yZV=x Wqv#kYjse,vIJhzPxz[ij>Rj+DIYBsiCk}OOise~QYcz}UjQku}uQ`\}(ܡ4}K<V"QjJ=UiMY`^}||cdlq[w;Nq<1Y\X/t0vh3v8%mu%y*jq]Oy]x36x~Mn7A/6fa@pX uVepKX\%w"$;0wyF~n{#cѢDUn 2g2y_WӜ'_omqu-Es!:Lw1olZPwvm.eUge[i`Qġ.mOKaE q<guFSMl;Ϊ HqpX2@(|&n} Ox~hՈzYto9qawh,nR~w_p'oēawjlt2m_qNicf&gx CA}WYt~YT tZ3}5\/7}MR>`jn.BExX&hegQcRJu߅a+chl}lvtM1HEoȂg걦|RGH]|7]jx{ܛuWw[PRp&yxΰWpܚk~Bc|a; , #V|kׄ2j߂b9MѢ`n>NU_^cJXo''7.jm=e;kwehzyJ':JJ\cv\ơn_Ktu @EhEWcF{`˜x]mw`e˾iK]Â}oD;~f)HqUV.]Pf֚32bD`tR3c }YRzrق)hysr^mfAݐE}fhp4)dJBuūF]o{u?:$}HgrRmulEdz.WM{U΍RcEJa/9Pz&;lXvC\ՐuV}5|J0o~_1N O2 Ya,=ncfŅ,{a8\>`vusyvaEg|ϱ.tzU^GjQ3}/h<:d.}Q[uo bXx:/Lq¯4o#e׹%$=S? }J?}cIlj+)i/MxCs]d]3gdQD!k}ϞʜXJ֮{]!"螌L3Q#cq *+qry@e3d ުrS5~Zf̢I\iwnb>6u2v]umrk$^Q.EAoj"`T6b.JX9d]9fwthrAEג\dP _pk |ޚvUimz vjׯVD.hwd4'iqmÝ _Dx:peIp\݌efC?D搵g]yBNi8lRGox]+\JZu-k\3hJl.v D]/r6i4o{ :e΄M}}j/[d_t87hjhu<Ώd^d"uwK!YW Q/|Rwfv8rk\ollᐺO2t9%w\\mֺ79-}ؑhiXqGS?i2aB+aOu2MQuOplGRzKZnue lEgw~e dgyW4|mw%{LlsݚcW pGnhAj Qp܏\RYKehR:gc0R}J3mI`;‚Br'FbVaxa( Rڑ\(gi^Ľomo|b{anڎ男O>_vƬ= p"[ē_(djx;i!=tZKb"}ya/zLڎtE8yk|~. {<[v4{<{FslxXW}W'f~͇G~rRmNdž~||W&c`פa~c NDWLċ\uY 97V]OnH0cw<p^ØY_L۔c_3} ]8{F՘SuWk#caOfSy x gBZ̅]ی8y/ r)HGB 4>陲n"w MjetLOCcyr$q{q<{vLKq9\Kkϕ tetRdْiRC_ЮgzvAw_v tY3^mX'8am~b-At<*hzY`n?hf7uwUٍ!7|0XaxsXR5~Ւ$equzjr̍t\J0o0Q`x=?d;{2n=+Yhȁlr;dmp{zȃtyhkTPYozuY]x~ޓ^z-krok?Ud9T}\tn-A,cc]Rvϊ_ԍx%ˡMcKdIyA]etqZr2fR剀turxkqb݂܂AD>˲HzbU{[8d`Ntd_Be Uي0wIblw$$׈2Ajz2?~6|p2gHF^~̖G=fpoucߜEx"9,YrɐCצmpEp?+6R2qm:$zohFaykFA)eYHlwzC0a>iXv47ykUgTX|szt2vX=fL[`kyqt_ FFrϕG֌g^?d"dhRyn1m&hj|{$yTze+h,݌(qل@Q_Fɶ쇐o'w} qGqc'rBzRAz fs|՝rV'p=ӑ)pwZ7h,0ro|d䒤R}=}Ł?`ɂ?wQ$hBbg5>?Yz{8scv@:vju$z,H$a䋑\unnU*nމ nޏG~:[ygV\kug;=KU3]]wq:6z%{pvՏX rp}v]}iүQ]Sn\jLrxDEg_?ɒsQd1xV pIv+kjcXu# YI[ccG,P{]lORsQ2J 6n} e&_s;ZV{wՌeǁ~dyL|y]^ŎsRLq@Tfao}8o"u=5gwHn |(mSuFO, )K<w4_48윋lͅ'mR{KJkߋms@|je6nW9Ƙ6{{;O˴YQt@^j(s=Vt+Q4RL6ImN-V}r?{w%rjÒ*r;jUh}9ESfB}=àSjasXYWTKɐujyP`q+ӫe&yZߋkb41KœS6|"ƥ`Z*P@pZْ Ȅט[G]UtYAПUG蓞3%ۓne4j)yo pGbfs|nA֢S[k|im3g>@-rJ}f_@*OAi%hGlV_RY]C[,l\ocـ;vWl$pb6r2uYAD{fЉg=lhn|vIi^}bPy{P0o`:lB{d |;^[IpXd4olp%cD{7Zv@CM否i]:Xh}a`[mkא~$B}**HpqLjA1Dzc]7:VNBs\kuec`-s,fyjћE~p{]w٘b|w!rƲG\r{|uff]\p{VIy褍p{Z.9S'tUXafxڔ\v&ʤPsEӆ؀@fe΍rS^Saȋ+e&yA\zgjmXW9\fgao{΋]9~crko*xfO\Hpsl|jsqj[=ZyZ_~zCfxwY7a S/^i͎([m#{^Vj تBj\[^}B̃Bv`ұ0r3e]h6dc`[֏ނ:mֻThšr|fy n*?΋ h|ӛ[ogui߻WOn rS0\U}gL_sµҏZ4OΓJL||ttmfjvХx{Vv6,x7zWvQkHCSѨYQr\kV}g'_Y=5}k~mGb9~E=Ğ%(bqx(b+)omcCoӤf*:Hnd{тQE2~HV֕fDU$G]MX[7"-@extˌ=F|Ki5`n^|KiM)|@cpvn ,Nn&vs_37'r; AH%hsy\"ysdE9+iL[$Wogt$%i }[[v!R5.YZjyx&/x*m[%^ ޥ#iT5vfLҖطqeՀZ>{[`~E—:F`u{Ȥwlxkx7ք ZÇejgD6rX#nJTĎp_k#sjDXEpe*z d(v[mՒ1c؀SZw~`ȓ$s{1ds|']ſM%<#?dn/9a.]k o~n{iwj/%+r{Cv/tGëseAvldgM1LU5 q?iPHVVqc[Xۛ1wcj}WPd b2q[ϿZ`DA{m;zSd’WdȲ5Qdِuh3qtŁ;t:hCkX]]R`dm֣?)kI+rY^PTBj_{s8BߤjmlYKǛ4 V_{Gsw^x>>ԇ:Sfqw~3dׅ-Aԋ4az#wxlԠDs'yQgQ||3U3O<|+mxxgi =:Vf aا.č~h͡Ё%D|vywh hQfxnnmJ{R|U Y:8-G^Jeή&tcm6sӗ{_GrTQZT`xgjyQ;sgk\uQ4RTq~:xrVślbbxe{bIUDlly$^V)O\ŅGYVZFpZnDk8zo~]jljim|}:{[Syq}f9j99P·V|9GI3'{C{HVom/k[8Wc1Ďlcme_βdקN@Z\C<\b+.sx@4T6t%k;~‹xRjX'Xcsi-BootF`?}ϥ{s{~.ni ^WhzmkRΝ=t݅\h*Y}KgN|g|L=ac)Xu+[ڨ'OyvqsE[v[_>{ x8?X@v7e.[obϒaYuԘmm*K7Ԇ[usOnyFn;ŔXshԒrZ Vy$@E#Y"Mt5~&;%DgqOo{CR/[YsYcno7t瀬)J{'qŌOpb4QR$fZYbN&5G)ÀYh0gladhOqWq]̸ɞveKT&ok\^u{TZnx?o7k:hG0nYגUgdQoGkdUAM \SpqGKg\Sox25b4brYUӶ agrXdxL:Tk3u'aShoMfq,o{BBn؈gg9/|՘ cn>b-[\~#Yvwy2sbAyy!.Az|hmC OUZEY~3*[T}TTs_J; :}pӗXmIjѢ]7Qҡ@K0Hgpk݂ЊY}_vx}pdeRVTeHqQ^QĐe=aܶbpj}~Mt mT `7Żk`kg:gXfw9 NnsxgW"ziwNErݡ`gݩMa2hyvhEl{sG]k4)-NU;LEL*jkIu{áBQlbBnVgn0&rqekǦ#ٚ^s`=k[A mEϞ9]SzݾbhހĔچ'qdtmjgwTYܑ`MmޛU`e wh`8~y\vSu\hpIvPlvdz2~cNRpdu?\Zj{z~wMlcUfTSXwudĩbI3jsTxw[wjbf}ݓRGgzXxV$ bRL4xqti =Ilv0VwgnY8ݐ`J]up񕰧dpawxl]٣hQ>OO@]̈ÂU?vta$lmxu{oT9rnb d6eMgˈt8 ΚLd&Z_mr+Ӿ\K~Yf nvgmК6_iw*3Ex|sJJbPHڞ`HFt%meH֦QM5Z6}ڴWq``ق"V9h2gh=iM i5oUłQY%uxc\uUpQs_wbÙtԤ֌IUc0]o7$E9?9oheq)[imɉ_dxc}DtqR~LgGSSstYjR5v7tl/c_󌒘yC>Ir~edw^F,Ԇ"?wccc"stNx[) =|qZ\De-Ϝ,cNX0^eϧ>^S\ oߐ@sHhAM\\@Q[ˏb} th2x:ؙZp߄4iNUljNa.Qo j/s~]Hb|#XPzlnjk`gk`qWquʤ ݆SFtyx|E~-?>J|ϹB%| ݚfƄÀ* mK^/Jݲrv@srrh}srG%amPTK h;>ϳ؃lpzۄ>R^Z G|Nx]R5~~.b9vfO]8nMbGIfwxϣX^ hrXxʹ_ZCvu|j?s2e|xIlf^AeE~y֍MIIf؄\ntyo^`[qFw{L/lO?/htԙiwuj|iYzoEgҸIJ/ywf\πʒMNE=Sw~6|iɗkwl.y`:K{\N[A/qhcLՕCޑ$X3'@H:ng.gXrg;},zKjom'pMyq~eՀJG0MTuoyzp`qt7|7CŚ#D Ԃ5J}n~z)I;^[sy'[ٌ7+Pț甁kMxF@vp’(^Q5hCw{ƔTJ D0R^I,đ`rm#cFޤS|ʙ7qnp.os_yMElKqzǦqVɉsc jq|_ų=i`Ohϵ4vsR@L #Pƍj9sDny5zQ}Ɨ[ubceΈzRsw@K{{(A}]Ҽbnwdš@Pbkl"ubsCw[qwBqOaHtR\;t2TXVLge5Q`adƔr8vCpʂjj蛮T|o?vbuo GHh&yL꺆apvSRT{`q3ComwwwKB~Xe ~StLkӉk[z\VS]oq\\zR+cvif_~pao?ZsO{pYvbd_<_Pa]`Lhw,ZXAdZn^MqpْsIz-e}~t0tcpf!TJvo 09iIygWZPr3KG{afK:#WO܊+t`YyTcVmS&郫zwBoME6_'sRvTPOYeMUl]s2wmZ^mU}ˀu6)|gPB΃$3ȟcl:vT̡qN7XKrayQ_KYe>A͂ɾѴHxU{%ܓ<旘џ~{YdJga˟}(Y{TZq_t@HZThޢ#+nVlbVhsyMv-l%y`\dw}Hs<)uvhMYrDIshl{L`llMXX4T^cӅԧ Iɂ{ Пwc̝˕]QAbJX,.}jVmeFLnKYݧ*~ ]wtXAMqajVv[|wmQWB5DQݜՃHxLOlRc{o\ bgi46yvdәshOPI\Re}Zb~~vv|'DBnu q}$sPo㛔 sӪJ`Gs‚ꙩts9Xl^FK =x6Q['Iucaw^~B/{ff-ښw?ۀo5r^gkwx6?̈${j Lr^r]qwؑ jՈqlIN՘x*rŎlRޞ̧vy?e^laࠨu\[tj_`_X@f{}uw \ VG|vT'i\{tڮ@efJ[tR{MwowOmeln%9g|jhGUp^[z҂m~߅5:;LNiyԝȧ^y9 aeewց$3p`t\y+_c?\OX~v(SmZs+_6jNe-52`Bf~!uk oyfyYvvc//-.U#{tH_l[>i*ݫř5 ݄ᛃrB㧘שݳrzus}1msi;a~jm4;)DGx䉰ʂxyKbgfg+FePyk _Hqhauuj6jmR{b'8%B7v[Gh^h {ICR)4읺CuzNȮu~j| /3z>`ZeڔhrV4ABwyƍ{qnO^Y`a =bEI) XZC1mnwtA}h[NylS>'='(vf_Z)P]Rijzt~rȥ5҉ʥ_òGorѯ߬ǹ}ԟjGu¤ۛEb% s0:AN~ssc0xG]U C^O?381"ݘ^y`xRgo+xqcsRl_{#\v\q^YQ,M"mmg]{燡3%ƠIeI#OM ܴ7W|ř6楶nRzXpK"=6EEwjvpm^HdIWr)22΂l:a[Xh}wzfd] sh(N_\}_GPf^wW0%R τVMW°4%Ǭ«{}"Pwe}ЗOxX 7Dupg{) \\aTl!-^aهg0Z KA_skwkl*Om /)#vGS_^DP@bWx@tLI(پYQٌp&b|bmަ]҇|d*k':B@bI]!vv:W9gNbh_,%Iׇ1y!cDO9aqClك { },gF{LmQlO^3S{cކM޼8zDީ߂ʵ*3iqk6wɍk<8(uKAgCE >>yKhg&m=h s=xoIaj(q[ '?CVSYW`OGU]MV`3'Ճ 8j&_ch݌ Ȯ#'f"_'3gByXbWXtHpa<9HYyȇ݂qlHuUbtj|^iZAeydG6l?=FCPSFTyPFSi@zv}1 iȼΔ+$it"澭p5vؠf# H%wu}ivh9\RLCQ"QY7vq(Y]YethR@7OHfNoVn.lyfWl͓zV!i|tS@)@B%VoULUNFNO([;tǀtt%ⸯƿ"–ώFӶ)Y޾N(@`W砶;ըtt{Zub"RIYHZGdHpzL_9Yar{}smM^<{C\{ojw3~.Up׃_y%Sa@xz@ZI>$BqTT,PWMJMRszPxQkll|fǽ&`B'q P 'XN󎘙fx{siX IG>=gzt/jYJ\uuU8@D]Qu(lz[lzP8} ]\^vt|dT>F UTSXJKB/JqgkvJvb{߱촇%ϻӗYנG4g}uke| \⦶gz;{ s^MN9:^no3XW`oz*\C9C0Ar7p}siFh,w#h[syp-]6BETQMTWXLJr=sD)UsQm?eqv樲m]lȲ?O+9ӟ찭aeN‰W%t F|t&|[pRBU<9Pgq_Zh^a~PD;9sjyuRၮwe#v!mq^nxv&aACMsFTPOE=L:rI>oJdjbq̭N0!5X 0Q[“ze^ ı)0m,ޙ5cO\Y$@t;Hgtk\ m[leHbA|nkxDwdjfl\equdZBdEHHTQVbFwIs4_Mfhm\]ka ˜;ƒ1hlǾ:(fCХÀ /]gsGC›]mkecLj:A\nAnTj}zo8pCE'dRfts}É~me@BNxdUbMiewhzH F;AuHqKURmMH,GW-nBoA]_ /̿Ū 8̽DaޫUܩ("nxs%z|Ñwt+k[=@PooVqlmvv;FIV`iCy!`+p`c~~nl1c=dygTFuBDzE)UYKWBd1;OUlwN_K_&vd +/GoYRΫ iLFb Hy1Csn\_HGC9KnkZkh}wNBJ[Q7`T>e ue_5bCq{?ڹz ƓW$?(ئ)fGwDȣ‹uxs=aFZr>C=heja*c }O{`IKNT-jqsyIapza~`;ep@v_=XGC M%KP?\OF=I8bTqf^n~/zldؖ@ݸܰҲ'Z*ΛU{V~햷n8Hqea>E]efn%_b.wIf RLOjmo[x\ijPtY zi._ps?f(\GEKIP[ O(P<8Wpha"jvcԹo< b+»<>ˬ £Vo"xsb-nelQeAJF TgBoa_ s&jQZJJjFhpysdr\ㆫm~^6o3qm^JzFMFS3WSSR.?7!ODo:hhbiqC,r]O:Aļg7$ë0ְMm2H6$cty&nqfJE@M9iv\eTy݋`+§0|֏KrJ r&:ڮI0HJy+srr`rRCKnhdqg2ao~ (7[>O'JͦЗcƬ-š[G]\|{X~/Cpga$BI_in4adxt~fzTOyS$l~n=rxjkk7vɎj>aqsg=]J(INM(Ty]:RwRC?=ZqickwgܡB/:ʼ6Pݷ ܭSOStʬUぷxF omd[FI Wioc-bjt.k[LMJOkiVrrzsfitbm`oq]n_MIOIWYVTBG!HXnn#t_4h݂l9`)ѫÚu̮EBФ来9+`떃įqb}NJ 'so"`M`JTqkVall sCTOWe~mx|pc-yIsajx;l^WPaOIyT~UV_P=CwE+Qllwv_/h0zcΝḭ̆[ʽYώ`~Ġѱ´Ql!ygoEt2r!b%UGGP pKjggi`v\-OU`muytcuu<y`kkOtru`UNIUR9X_TGEHQktd'f{ṫڱ*^"ѠDK1mįIE|Uox@Zxrd\EN%jVj-mch|`zbQT[ nrwnawQfr|!J{+egru:c[MKRMRW_T\N*DDf!siZdTqI ȱϱa\'l 5yȣwA׵ad7Y{~CKppVi6b`FNako?c,gx}gVQfWnotnIxllMxS~AkfcstiX^QNL}RPrf^QPLUJjpiaTs}pe NfRjhLvf~`vgq sqf'lhrreQFQOdOHYZO\*XL>Uigondqu pL8_]ù uZSEsIcN&yԉb(tsh.XPa;qpclQbKM+FgķWF*tl^-Χ âJ`|3 } ysk] LLOy^r#m)`9psz7qO_S^ihuqy|ng~ʊ|/mflyi[^RNDOT#[XN`OBaKy[outasjӂC)-B[38֘aĭBߝٕ8}FodsUo`PLWrolc$mSnFswVQYf oxc}6-qeys cZlx4m_}R.QKVPWY`RF_HSnvbiz;dܵ40XŞٟ n7ѠỌ̀6y_rt$rbVISp@kihbkPv]QW bn+vz-tGe v%xaltsMaW!PKkVtTY`wUIGKzl(uf_gFuԨcQMea<ٮN>̥%;ӯ?vy#B,"yrey]dGQjRkmdi}RzcSAU]nLsw&`wgg{r)}{ f^h sud7\;NM!TSX`UOEFgsj_eqf.6XW緒A o]9\55Xd | ejpiWbGPbelpdg$y}3hWRX^nEpsu+qxCmlx쌢~k dGs4tj^8OMKSQ-Y_VOUWD#EW_gslmgllzR Bد찢乼 ˘Uibon dqu#%*:RyɀRÁ@bӃMلR}A!<:Ƒp9YAҬů+tLRc2tNÏSa~{xurom:j,g:d\a^[XVoSPNCLIG{EcCPAM?C={;97t6 53]2-10$/Y.-,,(,+++++Z,,Q-../013i45~769:<>ACEEGJrLOQ.T WY\_behknqtxX{V~x݇ъ(7(+ yF}w9OT6/"lȩɺʵnͳvΰΨaQ͸]˒ʏɗȌYśbܼ´M.wĞ!X?^y|yvt#qRnxkhe.c`]j[XnVTQkO!MKHG8ESCA?u><;N:98706n54X433W3/33O333(44_5$6778#:};<&>?sA)CEFHJMfOQSlVXj[]`kc*fhfk6npsAvy|~bىu;'ÚQ蟷NK׬UB}aN[2tZʪTU;ц5.xԳԘ0ӎmҵS4-ˍ`éǻ˹o1MɾaDN۰Skʠ`uب!lڡ!IrϚ9}bܒi⏑Kъ%d΂MS-̀cX~4{u(pjl"jihh7iijkBllmXm0mSmmnopursuwzg|~FxXo|o).AnȪɬۮɲb̹+P k 045/~8dcϝ4`zm_4Ϝ1/΀ #I$Ƴa~Qܸ$WJ*󬢪j֣e˔,kŒOׄ @u|yvWtqnkiQfc`^[X&V|SPJNK+IFtD;B?=K;97431H/`-+);(&K%#"P! ;="Y]ZJ]5;` 2!u"#$g&'Q)*,-./13K5W7\9U;d=?AC@FHJ8MORiTV\Y[R^`ice^hj{mpr"uw9z|:ǁ@yӍ(ڔFlG ߬)/YV=P¢[msb ⷿ)\iťƿǢȀCt̹5ͩ[΀ΗΞοδάΐd1ȋw$KxȫǾēhAY߻f︊iŲRګ5IZNP7ޕȓ6g4}\{yvtIromtk;ifdxb1`][YWQU$SQOMKHFE)CYA?=;I:{86S53D20E/-,?+*('s&|%$#"!M! _gN%- . Q!""#$%&'(*S+, .K/02}356A89;5=?@BsDFF2H JKNP R7TCVPXZ\^`+cQegik9nwprt.wky{}4}@o3Ҙ );4G]QQb8Ҵ7㹩a¾.TGǩGw͕ΟϕЗүzFֻ8y uEڥ*Jjۆۊۂqc5ڛa ڙٖa׻.ֈգ΢|8ȕ6ƽPrf޻J#fկ 5du~p[Lލ‹|R, |zxHv t romkigeca_][YWVT!RGP~NLJIhGEC9B@>l=;T:8575k431c02/-,+x*V)(')&I%h$#""Y! aHE6x~B~\PXn !!"~#n$T%C&+'<(N)S*v+,.Q/01345^78f:;r=>@BDEGCI KLNNP*RSUWYe[X]Z_MaCc5e)giklo q%s*u1wAyK{R}icf•ėԛڝqljR0 îV,]ٺa:l(p'dϟ2LJHGcECB@F?=M<:}9;875t45310_/4.-+*{)('&%$#")"k! $?7F\X[a_Q?CzVT<xX |!R"$#$$%&'()*,"-@.h/013Y457<89!;<=l?@wBCE+GHRJKMYOPRT>VWY[L]^``b.d fgiSk#mnprutMv*xz{}tCR6ۓB'Ĝa%磰4ڪXH洡E͹eÎgHʩu>fԚ))@K/{J_@(+}[ '!0CTCtR+?#){?8MMX\^K5&պԩӊQΩU˱`Ǿ^]ڿcK/iɫ cĦtQ˚c&VGŅT~|{Oywus+rkpnlGkigeBdba`_]+\ZX9WUTbRPoOMsLJtIGWFDCB@??=<,;98;754s3U2'1/.-w,m+P*C)2(%'<&F%X$d#k"! PYv4<Kk[e)mZTOP[g1Y{7Tl 4RvT4 !!"#x$s%S&G'A(+)7*D+h,{-./012.4c5678@:;<>z?@BhCDTFGIJKTMNPPQ^STZVWjYZ\^_=abqd fgAijl3nonq stFvxy]{|~A6ۆGՋr$ÐV J>ٝ]0ɥYz!4гYS.-d aSǔNˁ̔Mҙ#JB =;:^9087543t2N1=0/-- ,*)(' '&%)$8#R"m! 4eei`GjIs A y 5 n P @  x l b k ~  ? k  q  | uHA:')Ni 2NKk/ !"H#$% &&'()*+,-./012346H7c8t9:;<)>]?@AB-D`EFGH9JKLNOOPQ)SlTUWwXY[g\]_`aBcd fngh.jklVno/qrsfuv4xy {y|}J$ j‡zۋ4Qm~ך/Ҟ"rŢ(XJ֯"Y*Sι9ۿ5{ÿ/Tax̖͞Χڼ۪܅bQETe-Ahx>;aq[D\,^%RFi  sX/nBVxC U |+\(;LADdDX%q!d?2`ߑޣ&-0?]^lԈӗҐъ}|v__U`O2$"oO4극|P ֯zNکèL룪uK ؝i(嘲g/’~Bč|<p=ꄥx,~o}#|zydxwutWs rpo[nmkjwiDhfedPcb`_w^5]\ZYvXZW.VTSRoQ;POMLKJ^IEH!GFDCBA@?>=<;:9876543210/..2-G,\+w*)('&&/%e$#""1!x SB(l^7]\3#E; 2 ( @ ' Y H}0Ap9f> R:2!$  "8=j(RPtF~,uf! q  _ R 7  ^ D>=bhs>{rDx U ?!!"a#G$ %%&m'E(()*+H,%-../012{3L4#556789:;<=>?r@_ARBFC@D;!E}H~X zf/^F \am=$vS {U&mEpB q8w9 o< o?uJzLBY*e(d?vPR&{A u0D Q=L4|.{BܐCڑ$x V՟+pҷ]Пϴ+q̴=iɝWņĮK9gǹ 8V8k|ج:Uu}Ϥ ,9NStК=D[irю'15GZbtˀ~}}|{AzMyaxrwvutsrqpp!o)n?m[ldkojihgfedd-cJb\az`_^]\[[ZBYhXWVUTSSBRhQPONMM7L`KJIHH7GkFEDC C:BbA@?>5>o=<;;B:u98767}654!4p3211]0//?.-,',q+*)A)((Z'&&t%$"$#"<"! R }U8eA"donVHTqw/ : g  4 g  F Fo j v0q3@z>PzeD >\<n*\%jCuXA_ f (  x 2 z F gXQn[  0YpUt 7!!"*##$D%%&F''(5))*O++,n-#../O011K233|4:5667T899:q;<<=|>N?@@ABXC#DDEFXG+HHIJlK=LMMNO|PTQRRSTwUWVBWXXYZ[k\S];^__`abgcEd'efgghijwkXlIm)noopqrswt_uCv'wxxyz{|}g~ZM-Ʌw]P5 ލ̎rbC/ ˖pR7!ីyV:ޥ];Ϋg5尠R ܵV 㹶}Eֽ|Bc-ģV/Ǵq ʒDn%ϥa ҹp ԰k֋$r ڱRiݺ_ނ$?fJr >jX a@[u+7 w l1m+kLP-T{ ,]6|IV'U+S(Y*g6`*g+e2m:yGLJh/w,d$UE[@CxiB1uތEܦ jڼ[اr^ԫfҿAЉ)΋ Cs=Ȋ Sŝbš0l"Mkظ"YuҴ 0kܰ%Kr#FyϦ 5c)Oݚ#Lazǔ#1Df͍%=cՅ+Tw~}||/{Hzoyxwvuu4tIsmrqponn%mNlqkjihgg>H=<;;\:98-8w766543T321F100P/.-^-,,i+*+*))l('4'&&%$W$#:#""~! x SE1@PON_imMG1Tg P q m ) \  X  [  dN+{OD{hJxL72&( 6_yFd;^=q( w 2 - b > 1 6bzB%Z6!bD$||g~ Z!!H""R##$1%%N&&m''(G))m**+S,,-4../H001W233D445l63778R9::i;<>?L@ AABVCDDEVF&GGHWI-JJKvL9MNNOZP$QQRSNT"UUVqWDX%YYZ[K\1]^^_`Vabbcdte==j<;&;:95987R765F544}32T21410/Y/.B.--w,+e+*M*)=)(;(':'&R&%E%$I$#I#"l"!!  7[jGx J.ZFn W ~.\T VZe3S@  d _ N 6 *    3 k >[=b ;fMGL{d(z{P]^5yM1rM 6!! ""#i##l$$%&&'y''`((q))*++,,b-.. // 00911P223N445&66a7889 ::e; <`??@OAAB8CCDNEEFjGHHrI%JJKcLMMyN2OOPpQRRSBTTUV:WWXzY1ZZ[~\<]^^_Z`"aabcc%ddeofEgghiQjkklkm3noopkq=rss~tEuvvwux@yzz{|G}~~g5 ݂p-ȆU%R#獱{2ґT*𔳕ߘ3l݌1ݷ0ܺJt{؛.ش1׹0ֱKSSO3Ѳ2Х$ϟfY=˴ ʏ`4ǚzFģ eB4IPa RGG?<cV֨'oe!W@~ĞHΛcYؕe-j'aьWɉ MΆ8u1i+f~}| |X{zy y@xwvvOutsr>ruqpo2o{nml*ldkji#iuhgf9fed dNcbaab`_^2^y]\\J[ZY*YXW#WpVUUDTSR5RQP$PuON#NxMLLqKJ!J|IH1HGG_FEEnDC6CBASA@.@??k>=2=<,,J--"..//"00211-22;33:44E55Q66\77g889::P;;U<<=,>>E??p@AA;BBCEDDE!FFkGHH[IIJ/KKL0MMcNOOjPQQ[RSSoTUUV%WWqX,YYZA[[\r]^^r_.``aJbbcndeef4gghii jjkOlmmn.oopVqrrsSttuvv'wwx]yzz{f|}}~;u;􂫃eӅWшy7n+܍Po5XǕ>񗝘Y˚|.朜M󞝟Lf&ţoǥ~ɧ{7橌;}%ŭr#UU鲍4дoKu:кh*H޾e2VfyŃǏȝɄɍ˔̉khHO1є~KӦ$Ԋ"՗;֙kv6لDڎ<ۊ9ܖ*lݺ1{޿CߓQ.ZP~!@[".O"(Z# #aNPI-`6tE"G CWߦY(ޢZݓ@ܡb$ۉ3ڒ1ٍ-}r֑9dԕ"Ԫ:x җђ0пIXy͕$̳(ˤʟ#ɷ;ȵ6Ǵ%ƢœĞ}hC'qԻ=xDW Rz԰5^&uB7SQggàiiDCޗ2֕jZB9ЌaE:eFۀ%v~ ~Y}|{F{zy2yxwwmvutEtsr7rqppconnGmlk8kji+ihg.gzfeepdccbaa~`_$_^]+]\[>[ZYFYXXQWVVmUT4TSRNRQQ}PO4ONNiML2LK KtJIIIHHGGFFrEDWDC@CB#BAA@ @??y>=e='pfzv.PIKk(OkC 1!n!!!!!"h""""!#k###$]$$$%a%%% &h&&'J'''J(((@)))1***#+++/,, -h--+...M//U009111g22H33445}55S6687708899::;o;;< ===x>??@@AABBECCKDDXEEtFGG%HHDIItJKKLL؇<쉓?A썘@揗KB𓋔/ڕz+ɗr^M3ӞtK-ģhF妆Mz ?׬u6_x)]p"/:λ>85@&Ž Áp_5ƪǁ[Ƚɚh0˛g!ͅBΕXϵkмQѰ?ҎsӶ Nԅ]՛tֱ0t׵_؈خKمٶNtڝ*Mcې۫2Hwܔܳ4CYlsz݅ݒݱݷݨݼݺݼݹݭݤݟݘ݂hX[Z@) ܜ܊jD' ۡۏ`B ڛZٶك=اe׈F֧K֭q?ԨT Ӂ9җKѭ[Эr"ЭYϦ>͊.p ̬VʎʞɹHoǗ!Ƶ=OxÍ¢$DƿKeoLŻL׺OǹO̸FַNҶ?"|t߱XܰE lǬ%|Qɨ4ڦI4\â.bş'X'7lȗ2M axӐ;^ dËt؉>L^R#zр4~D~}|V|{{kzy"yxwfeemdc6cbbea`2`_ _k^]J]\\t[ZQZY,YXW`WVIVU-UTTtSReRQHQP4PO"ONNMMLLyKJvJIwIHsHGqGFFFE EDDC$CB-BAWA@s@???>/>=T=<<<;C;:d:99898r887J766465r554m4 43d332l2!2116100c0)0//F/..k./.---5-,,,F,,++\+,++**f*6**))t)J))((((t(R(('''''}'a'5''&&&&&&&&&k&i&f&\&V&R&G&8&2&.&/&:&D&C&E&:&6&<&D&F&V&y&&&&&&&&&'','I'd''''''!(9(Z((((()J)k)))*H*z*** +4+o+++$,h,,,-J----@.../b///30001[111C2222333G444M555M667{77888M99:::q;;0<<>'??@@@`AADBB,CCDDDtEEuFF_GG[HHYII\JJHKKsLLrMMvNOOPP#QQ+RRHSScTTtU VVEWWbXXY#ZZ7[[O\\}]^^%__b``a(bbMcc{deeHffghhJiijkkYllm7nnfoop9qqnrssKttu4vvowxxWyyz*{{o|}}X~~/ǀg I烌&υjC{-ʊiL׍s[7ݒwOڕwQ䘃0͛i$N<Ԣ_*@զgr=ƫRdt~"!"- wOȺOͻ)vQǾ74s#eAĠXſ0ƔQǟ@ȠcɼVʬ^˸ ṰC͐.kΝbϵ)kФ5iѝ YҘ*RӀӪDoԦ3^Մե?mրֵ֖ 0FTdyׅ׋נ׽ #׾׭פןׁxndW#֣֮֊`;ոՅFԤu6 ӟQҮoBњ]жi"ϖdy;ͦat%˃2ʌ>Ƀ7ymǻYœ,ZÓ)RAſVAӼRٻf'¸JɷM̶L׵RubhdSɯOϮS̭L¬6 ģ6+pQˢ7eڞK#^Ś.^˗?}ڔ=lБ7sݎO |ߋHlƈ7`υ.P~Dq~}5}||n{z:zyxkxw8wvuaut*tsrYrq)qpoVon,nmlglk+kji`ih>hggsfeUed6dccpbaQa`5`__^^h]\<\[$[ZZYYxXW`WVBVU=UT6TS/SR"RQ"QPPO#ON%NMML1LK6KJCJIGIHTHGuGFFFE;ED`DC}CCB>BAoAA@(@?q? ?>8>=w==//...g.2.---b-:-$-,,,,g,:,,,++++k+T+A+%+++********u*e*c*V*M*R*G*F*Q*=*0*6*/*7*=*?*K*S*K*S*g*{********** +*+B+b++++++,(,C,d,,,, -&-L-----'.d..../K///0>0r00031p111:2w222-3{334d44435~55 6a666L777W889U999L::;Z;;<<j>>?v??Y@@*AA BuBBZCC0DD EuEEVFF5GGHHIIIlJJZKK\LLHMM;NNRR8SSZdUQF3. ҺҤҋҋ~^4ѝiH%Ќ^- ϹϏg4Π΀Wͦa̗_+˨h4ʦr5ɚXȀ.ǪiǬh)ņ=ĉ1Å3‰(S=㿇7پI޼~(K湍6ѷ[㶂 3ųRڲb!&$ ,@ϪH<&6-nZŸ4(u][;WՕ71]Ð1z]Ό@xD, ~܅JTʁ5q~H~}}|{n{zCzyyxwZwv'vuuztsSsrrqqlpoPonnmm|lkikjAjiih hsgfjfeIed'dccba~a`_`_W_^A^]6]\'\[[ZZYYXXWWVUUUTTS!SRRQ"QP+POHONcNMMMLLK+KJVJIwIIH HGUGFFFERED|D%DCPCBB:BAAA@X@??8?>w>>=='=<<:<;;7;::C:99W9988?877z7*766X6'65~5L5544o4=4 4333W3322{2X2;2 211t1R1/11000j0G0#0 0/////h/U/./ /.......}.x.o.K.:.:.9.... . . . .... .... .../.-.7.L.W.Y.l........./4/N/l//////060D0x00001A1c11111C2y222 3@3y3334F4|44 5P5556H6667P7778e888!9v99:a:: ;n;;;W<<<5===@>>>X??@f@@#AAACBBBaCC DDDNEEF|FF\GGTHH,IIJjJJGKK#LL$MMM\NNSOOCPP0QQRRSSSTTaUUpVVlWWcXXnYYeZZW[[u\\t]]^ __+``'aa0bbTccwddseffgg3hhCiiUjjakklmm4nnNoonpp|qrr.ssIttpuvv*ww9xxQyyxz {{0||K}}g~~Iف[4ŅLt'F֊b~#Tڏd}&Iؔ\i 4FɛLǜOݝ_ruyhpjf֩TĪE0'{e˯@-t_ʳ7CxԷBmֹ7ORihkƿoth­FÙ&_Ě2w?ƎMǖ:nȧTɅɸ+[ʍʦ0U˂˦>l̪̉6e͔ͬ+CR_jΉΒΤββδαήΘ΋΁{\cOD/Ͱ͙͗tL0 ̴U(˱~a>ʇW'ɋR.ȽȇWDzv(ƛJƼw'įmØJógvq%̿H𾏾'׽"ļbĻeZ-NQ)дi}6ZװU𯌯-Cܬps 6;¦Jϥ\֤PϣTߢef֠b^ڞZ۝SƜ7@-)|l\ӓQ;jݍ\ŒGˋ5$t_ӆ<- y_؁NB~~p}|_|{Y{z.zyyxwbwvXvu;ut%tssrqoqpTpoNon1nmmllkk{jiiihehg^gf[feFed;dc:cb6ba,a`'`__^^]1]\>\[>[Z?ZYKYX^XWdWVV VUUT/TSPSR]RQ}QQP7POOON|NNM:MLjLKKKJXJIIIH]HGG9GFF)FEgEEDeDDCZCBBPBAA`A@@i@@?r?)?>>:>==`==<<;<<;;D;:::/:999V9988w8F8 877n777766f69666555f5=5#55444r4Q444433333~3[3B3+33 32222222222x2n2e2W2R2I2F2O2V2N2T2Y2R2W2\2X2p2~2222222222233"3B3e3r3333334+4O4`44444 515T5y55566O66666-7f7777'8Z888869t999.:g::::;;;;@<<<=b==>>>>>?c?? @W@@@BAAAEBBBLCCCLDDDPEEFXFFGGGEHHInII8JJJ]KK&LLL_MMANN)OOPkPP[qɍɯ >Q^a{ʃʑʝʫʨʸʳʠʠʘzpmh_H.$ɲɒɊkE4ȜwS, ǥ{f>Ɯg6 ţw0ģg=ád¨k0[zFSԾL񽤽m(༉9޻9}(۹0ڸw'׷%a W:ܳt>t Bܯ|"$Wq.ŪK⩃ <ŧSئ`/MѡQpvs~+- *)!  xt^ۇ\φHɅJĄD4$~~}k}|u|{f{zazyVyxIxwOwv4vu,ut/ts srrq qp poon nmml lk kjjiihhggffeed+dc>cbBba8a`Y`_e_^{^^]]\7\[P[Z|ZZYYXGXWbWVVVU7UThTTS SRRRQQQPTPOOONWNMM7MLqLLK`KKJ7JII9IHHCHGGCGFF=FEENEDDqD$DCC:CBBPBBAA>AA@{@=@??{?A??>x>>>>==]=$=<y>>>,?j???9@l@@@0ArAABVBBB)CwCCDbDDEgEEEQFFFCGGG;HHH/IIISJJJSKK LeLL!M{MM4NNN]OOPPPbQQ)RRRNSS!TTTbUULVV+WWWeXXSYY3ZZ[w[[j\\D]]*^^__`v``eaa[bb@cc:dd%ee&ffgg hyhhyiigjjpkkhllRmm\nn[ooOpp^qqTrrVssTttYuuavvZwwZxxgyybzzr{{i||l}}s~~vjtz    ujWЖXݗUΘI1 u`ڞM'|rޢ^ƣ5 oL2^Ψ<qЪ?eϬ@]rܯ@]mŲBJ5zֶ2Ϸu¸TeCƻ IۼRսYоP2t1\'Qz¹ /U|ê5W|ĝ6G\rʼnŸ /BKZiƃ{|ƘƢƻƴƳƷƢƔƝƆ|}mIEE,Űř|gP8!ĝW4æÂ`2Žc2s@|K%忣d,ᆵz;ԽXݼGaǺ=鹦Wи.ԷBBﵦQnNﲐF󱔱=װ{$˯rV㭅ˬg?᪁%EҨh(J~(^s /M֟c '9ћ]ۚm} %=CєZړWr~ !%51'06LDŽI΃KςP؁Q׀\X~q~}j}|p|{|{{zzyx~xxwwvvuut&tssr8rq?qpDpoTonfnmemlnlkk kjji'ih9hgRgf[feeed-dc4cbWbava a`)`_M_^^^]] ]\<\[n[ZZ'ZYaYYX#XW\WWV'VUoU UTHTSSSRRRQdQPPHPOO6ONN2NMuM%MLL:LKKBKJJYJIIXI IHuH%HGGPGGFFNFFEEOEEDDJDDCCRCCBBgB8BAAANAA@@@_@+@ @??t?G??>>>q>I> >====o=D=!==<<<#>H>i>>>>?>?m?????=@l@@@A0A\AAABLByBBB5CfCCCD]DDD EXEEE+F]FFGEGGGHuHHIQIII3JuJJ-KwKKLTLLLQMM NONNNPOOOUPPQ]QQRoRR0SSSHTTU]UU,VVW`WW#XwXXQYY+ZZ [p[[@\\]p]]M^^,___e``JaabbcrccUddGee(fffyggShh>ii$jjkk l{ll`mmQnnٿb;ξzP#ƽ]CɼZۻ~E ̺o8~E񸺸Lu)t8󵡵^^dzu'첧KWgq"Ůi)ŭcŬp V<֩|#ĨaI䦌.ͥ_<ݣz#<١s2Uܞs:ϜdCٙjFӖbu .Iߒh*ďHʎVh-EΉZӈYi$ÄC΃Lւc߁l1~5~}S}|h|{x{{zzy4yxU\o6ܯeX?RJLe+jxؐ_tkk߄|’n(}qי:v#[yrJg nvw0oiV8^ Y_B~}ogZŲBGd\r~o)1g 68oPݖ`l0b WsɮhvgrNzdrugzqMc]vĆ BİoWَN p)s}\Nŕy^snс h׫Y)m_Ԩh{g{PzuQmy(poiZABXnF`VxsD2ms҅:@mn{grsfveVZ`}~szs!bdIkAt]](}%~Dtː:W.`6u˃H}~y{,w4imw7{un6gE\םzZʹQ. ]ט~lLtxsmc*8ZpqmZznƕ{]g\gM.Z{r;AztrXKQWr~fOM܏wQ\T>NYLg1IrsƘsW[{ym at}nX'6u{x%kmuoIAڃ`:CNb)kt|sk?F^ʗ&x afkhԓvl5q't<}Ǟb6{:_ei{!ӓBimIiof)qrW1z]eno9_vashmAkrGuGaNn~duɜno\~ rQW4wyg{eofwf)RtRr+yЈEo'\tbbt*oanX.[hd@z;w{j,Q`~h+ŀzIjz:,|{pgv|kxdvZu}r苛{ ~ys1uOu|~ tBnmp?uxR_,{䍤i!i [h1q֘Im5fە}Ɍgr m,jv'qޒpԇ]i:Zwm r{JmTr}iljkmSsOBrƂ[gkd\+bayQz)TxӀ}psdk}ΏqRm[bGsBn;ngG#hmo{Lpqvhz}~nY}V}HnyM~BtFዹrZon qohK"SxyIjƃ%vɁxmj~oCq3{0otjy!pgmey{ْvy~t>xX={d|dz;wH}rN~|i i|.+μ~DqW S~-U]^އBdPq~pԊjoHvdq\q[Kw;KdusĒTyt"|Wf Bg]ڄ/yqotRXSHna*pU^٘e%@ƍlUz;AvTLöJŋh^fhIn$izh -Mx嗣c_cm{NaW%e|шYnzr\q)otpw푀ro|xxxoiZlHG4Hs\yy}g~ltEom[z{ڂOkIwgU\o6ܯeX?RJLe+jxؐ_tkk߄|’n(}qי:v#[yrJg nvw0oiV8^ Y_B~}ogZŲBGd\r~o)1g 68oPݖ`l0b WsɮhvgrNzdrugzqMc]vĆ BİoWَN p)s}\Nŕy^snс h׫Y)m_Ԩh{g{PzuQmy(poiZABXnF`VxsD2ms҅:@mn{grsfveVZ`}~szs!bdIkAt]](}%~Dtː:W.`6u˃H}~y{,w4imw7{un6gE\םzZʹQ. ]ט~lLtxsmc*8ZpqmZznƕ{]g\gM.Z{r;AztrXKQWr~fOM܏wQ\T>NYLg1IrsƘsW[{ym at}nX'6u{x%kmuoIAڃ`:CNb)kt|sk?F^ʗ&x afkhԓvl5q't<}Ǟb6{:_ei{!ӓBimIiof)qrW1z]eno9_vashmAkrGuGaNn~duɜno\~ rQW4wyg{eofwf)RtRr+yЈEo'\tbbt*oanX.[hd@z;w{j,Q`~h+ŀzIjz:,|{pgv|kxdvZu}r苛{ ~ys1uOu|~ tBnmp?uxR_,{䍤i!i [h1q֘Im5fە}Ɍgr m,jv'qޒpԇ]i:Zwm r{JmTr}iljkmSsOBrƂ[gkd\+bayQz)TxӀ}psdk}ΏqRm[bGsBn;ngG#hmo{Lpqvhz}~nY}V}HnyM~BtFዹrZon qohK"SxyIjƃ%vɁxmj~oCq3{0otjy!pgmey{ْvy~t>xX={d|Vez|uЀuvsҎpsxE"uڀMrјoZ_| =S|b|qÕtpGwz탯u0 y܏"t:qmoTCs"~{ry>|~Dz7u|uk|򃽄f}y-|`uE{Tx uvxl){ёmx`xl}'wEzyGn|(rӉwkz|rez>Hy|!{|ҁʀuJy-}4zz<ylt!~z&R{}yWy qptyrj֘l}k?vfv}X{)tZ/~+{z6Ml>X׆Bt[|}lGx}Zwo*x~b{vsu x`tut|zTj}Hytz^ulńuā7xrݑv`sX}}2ms|{+$zxւpCx|Łl~rɊ8wnxtv5}}{ッ7Yx>vLw@v ~kuki95~ºŘ/'x+z70<IHcNO,%0>kF_X ABK7@=owFF|Ӷ۞ve7g # IU2K@3D"[ǔӧ'7U u{+0,o 1q1 (G/3&\(@;b ^j߯^̮?{¨^wM_]g矮ף܃rĎn{#~W=}S>N{ =6 2~*gLR~[@ˡci_wr5[ǑDfOh_ H j%ab_z_s3\g[NXzGtTVïakx{~K偠C~뗉´eӨa޹~SOb΍7~gVsoLr[/eor}?J7vCN'KVr^n%NwԃYUvl&KVyXao:^S@SLaozmC{Uxxa_cSуzqoGZϊv_{Ēwcoů_~ɀ~~{[ػ>gZw߅ERx~tnÅFvhwn{[Vv[`Jo|rD_c,>urW%=Kw.tu^?SgvdGe?sXxk9N[xk[X6_KqkIY/t[rxy{N}udl|n{~zwuąq~x~Z{TzlQx|~{nrmlrufxs~re^FTxt_Q^`OlRYY\`F`9acei\qw} vdt#KV֋'wn&g`\[XX[^_Vab~3ԌI/װP(.BՈ܆=œ8ee~ g.^^bklbe`ahpy{qrf8]U(PNSNZahpEw~~υ͚_%ͱpƳ9(ĈƆȒݚؙbhL]`Kjoj&ediqyC~v]j]RK MRY%aZhovi~υ)Vd'C:?$!p苣ڑ{G hj\R_}hqooihrk'ry~xks[MmHKURcY}`gov=~݅a*/YBÌ >< *̈l{\]fHqsnkcmry}xiVmHFCKQX_gnPv}Aّϧ7ҳPHщoW7pgV8c-Z`$ktOvq`oYqux\x{mZIEI|PW]dk`szookx9( prɓoԘ߂Tg[V`jOtxvrr uudrgTGKG/L RXd^8eWlsza‰RjJԮޣGJyq۞8j\_j.suyxusis qj9_NGSINFSX)_elszH̗ӞI$mYЋuQ;ˑ"4*m]4_ iqxz`w tp7kbTIH KgO5TY_\fmszȭ93O/lE' qS^^gxpvywgsYmJdXJEHL$PTUZ[`fVmszbLwUlfiAF}8S|mĎ@u_]DfnRtiw,v'qhj\+MA`BGKLPaUZ`*gmtzr-Õ]ТV ͫMÍYHLɦܜߖݗ xaM]dlqsr!mlbScB:>E|KhPU>[Ia|gmtzc If({d%ީLЕu8z;b\Xcjnomyg3[JE95?z:͍^񚋡ק̭ ⶡ,֘؟ͩ\Mە}d\ebixmmjbTDC44j#]xxZl]_f5ig`TADt2+.M4;:BGMRX^dk]qw&~F0̥08zwE޵2_דbK`U>'nA^^dge]Pr?/7- 4;AFvL0RX^.d\jpvX}ۃeT u.',ÕV8CǷj_Sq^ ^c)fzcZL;[,~,3;@4FKoQ_WQ]ncio.v|=薔>Ϫක*ߦј~t'iBs_R]Ebd|a/XI`7?*+R3h: @fEJPV\bhoWu{HՈlʜ~#{S0| ?k}h阻u`\a7c_UF3(F+29Z?D1JOU[ag?ntzoC𛮢Pɯ@N-޿ U>z̾׳Iwa\_a]SC0'*h29>ChI%OUZa#gWmszRΡWeڥ>*ţ˺yb][w^6`[P6AQ.%.*1a8=CH\N+$|)17<7BGsMMSAY6_Qekq6x~>ȋuVʳ߾¸`]j {B~]eXZ[v]XL<*#)06;CIjOBU0[Eaqgmtzz0Дe'~1(Ʈ@5L;ϖhryXSTyN@9.K{&-?3a8=HCHNTZ`fl:sy-Y\ ĵ /Be%+05C;@F.LRW]c;jpvm}BԞ}^ eƩD3zECϞ׶gJOA8)F%7+70]5:_@FKQxWx]cipsv|3אW3鲧'ή%ˋ…è54Έڣ$oIg;1! `%*/4I:?~EBK QV\c:ioub|Iʝy>Ͽ<>ͽƀhGԾ֣,˾xI4)%.*-/s49?EJPV\bhou{Bꏗh?'븏d˥ϽьйB®|1Y`KQ.<$).4w9?DpJAP&V,\>bvhnu{9݈MϪınŚ3Ҷ,η }=@ѭRM(mQ{s_e$P)~.3H9>D-J PU[ b@hnta{PלK#ԛbɫ ˸ҡ5҃}O"  'o $ )I.39>IDJOU[ahNnt4{́z'㕷rtcCf;խ֜Ԭʹ֛߮qKgPx e$(A.39>>J׺цW@%R|^P3 V#(.m38i>DIO}U|[ag nutz%掣vH291(nCْk!ش Џ L  m`$#(.`38g>DIOU[agntzFlUUTIƽ?ѣݷuH$ S "#(.c38g>DIOU[ag5nt{Tە|}q(XӷؕHܟչʳ|g̤{G!&  -' #(".39>1DIOU[a hRnt9{偀=Ҝfeٽ߼tϺp2ü,sDLr.m;$,)J.39>NDJOU[a-hsntW{`̪ԱӸƻ5ޚa~$nDZ_oR6%;8E$V)i.379>D>JPV\;bvhn-u{Y\G,47ME.`6ʛ˭Ȥі.paYl=@,)1p$).49?DJZPWVZ\bhoru{AT\]Zܹ=ͳwy}xKhL|{oXMRXV.L: 1)5"=CIHOU[Fapgmtxz >픪d ]AMš=b bW}|pZMHRZZmR8B44U<[_agm.tz2ćew 5„eݐP. #ՈB0}rG]MyQZ]WzJ&9F5;CJO[UE[magm4tz8͇cX0'۽2ռ} SQݡa}s_`NPSZ_^\Q?6; CJOvUM[oagm:tz*^5ٮw ڍyGT_'%~uaOOY`!`JW5G9:pBIOUi[agmKtz2Oޔ XNQ%J=v~ޣ;Ζ ~ZvdONXKac}\O/>:gANIOU@[Gatgmtqz .姦"*L߂FKvlLwfPM7Wae`VmD<{@HOtU'[!aFgms>zCɍO֚8QݬuZcy |Q#o"e0ox-iRLUX`+fd[K>?G$OKUZ` gEmsyizn ="ϠB~D♴ [nH%!yjSKT7_frg`USB?F}NTZ`flEsy93  }}[SԦQRB zlUWKCR]dfSidZhH@pEMTuZA`Jfwlr(y\J6Ү**2z1}MRŝ8!{,nWKP\ekjh_OB}DrLSZ_e lWrx!tɘ~0Lwh΀x|F{3D̦V/H|Jo|oZJN&ZpdjfkdoWF2DKSYv_[ekqx~ ~֑!'ߜm|Kv|Ӌ,ѡB䬾L] ~p#\KHMDXcuj(mh ^LDIRY_dj;qw}uA|dʢ1fd yt{)ߐmLK쭳ݪ7 rM^KKVainPlccSFHPpX^gdujpwd}CȖ3\T!vs{o67㥚j$D'{s}`8LJT_hnnohhZJkH{OW^cipRv|%ԏěӦ\wsrRzEjSI,;z߆2ubBMIR]Fgnp~laPHM@VF]Lc+iAou{^韼uգ+aqyqryFԓ*멮2weNHP[e`mqo!gVJLT\bhntO{ P^ 2,e}opxk2ɘr ku4zfOH>O5Z dIlqhrk]NJLS[>b h nEtz^CߢzmoxZ-^f'!O}hDQGMaXfbkq todSL)RnZwa~g^msy9Ҍђj)斳)xm?U GJT^gowuv)o?aQ?PW_Af7l/rlx~J18@KATori5muW}teA ~$#qrW+GIqSJ])fxn?uwWs hVPZV^ekqw ~qpϕJ!C\fTotglux|rZ]}~9@&uYGHR[d mtyvm6]+R0Un]d5kq8wy}ʃ㉻FΛ}kekYt{ǁ٫< ֯>Wz6]HuGPGZbvksoyysd|UT\djpv|&0fr_yhdOksz؀؆ތ֒ԘĞ= q`k[` IFHOXaaiCrFy{pw,lZTZbjpv*|sg)ꘪuKe`cjsy߅ S\񷆦|eJEMW`Hhpx2}T{TraVYaiou{هmOٕB4NQpa}b~jxr y'MeZ]˷w٫jL5ELV^f}ow}c~wtiZ0Y`huoeuT{tPƌhZcM|j_a@jq@xE~rjd|xٕpLODKU]env}|pP_Y_houzdž _Rv>d\ajLqxwn} @Ϩׯ0Gεx&SDJT]dlu}6wf[^gntzHRAUb2`o?^Zaipv|?gxAJζrð5gXjEIS-\xcsk:t|x|n>_n^f)ntz-osxLg!YYaip v"|uݎ4㮇1ŰAh ^FH0S[bj4s"|Y,vd]_Vemtz$Otp^uUY%bnio}u{Dl̠Yv Ğ|Hoe\HH^Rm[bi!kemvs|sڔx}MVkGx. "I*2p9?EGLRX6_eKlry`ܛ3*ҿV ۻ5Ͽ u$mAs{G ,ߛFÃf>(07=D"KQX^He lry׀׎•p457jxtx~瀶lC̘a7y%;-4;CJP`W^dkry&JisnT1NXʬohj/{|~~}Zj̍y3\5T8!9*c2E:AHOV]dkr#z{ˈ2STQt׺e}%ǫej}i{Hzz}2m=ukX8j#'08h@GO#V*]DdkrAz#ۗ(2mɻ30{uux|N.Ä}q*Y7>%"*$-6)?F[NU\dlkrz򃭌?mӰsX϶r/ &Hrsprwd| #;zjW9 '1:BJQ,Y[`gnQv}97 ,ŹfމԶx{lkouz䂍߃ʀ{qa6Cr&'@(l2;CKR ZaDhmov}Uq.ͼÂXB:wT(uhgmsy~~U2zjK-+(83<ELT [ahp/w\~o4ӧb~Woɽzٔp]dfdjq/x|ITtT_4Y&6)3}= FMU[bipw~T x˳Hcۓv}flaa7hov|_ـg~^v;# )k4K>GNV\cHjqw~hRuԾ hˮsSvj!`_Dfsn+v#|J1ΑXP(gAM()C!*:5E?#HOW]wdkqVx\Ӓ-usA ¬udŶPjp_u^d4mu|Z@2TqI, "C+5 @IQ"X^Dek"rxD˅5}ƞ4ƵN 9ę\S(l_]Mcblv~S_h-|Q0 ##+V6@IQX`_elorxS̅Ukb>ٿ|A_Wؐ[qc^cku~ &W؅rY6%$,D6~@IQX}_e#lzrxG,O? Ωha Z͉xhaTckt^~Cn0RZb<)%O,86i@IQY_e7lrxL*@8ĩk8Ȼߘ ዺ%Coe`dj8t~F.W XkyC,^',26V@IQY_e3lxrx; IŴS߽ݎو;@Yqvi%fjsg}ÎL%{EtgJ0 )-)61@IQY_fAlurx‹ƣzݹ0F| v~ohjr|7ϕá &\'~R5+- 6?:IQX_el=rx~O2̮Nv1ӓÉ푯vlkOr{OܕQ)|ͪS[;y-<.5?HMQXf_ekrWx~BireA礼䪉g&5؄}Dqmrzٍ ?u_c@B0E/$6{?H(QXG_ekq%xh~1좣.qɞL|}&ڔw1p@ryƃ1RwlF3p0E6O?HPdX"_iekqw!~wՐϖǜ:ͭаM냲{y{Zĉl.ƍ}ssUyVr٢tıtM(71d6?HPX^e'k?qfw}0P\C˧/Ӫ|wwz3ɉb̚H]xtx/2ڭI}T;p36>G!PWp^djp wB}ߏ֛=xXwt%vy~ÉaRь}vxY݉XdvЪW\>@5?7>ZGO6W]Md]jdpv|0HO< ~yAssru=yU~Ή*=6#z?y[PЭڲ4dyE 87h>F1OV]cio v/|sє᥎Ut"pp#tx(~ۉя^e~z~_♖(ܭ”kJ:8o>FN=V]_ceiUohu{ց!ԟ܈y+pmfoGs0x}gl-117-1.3.2/music/winner.s3m0000644000175000017500000013542010145416156014747 0ustar cedriccedricMission complete SCRM@}    $2Ro,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$SYBS148A> =@̭Mission complete -SCRSSSTR162Ad++@L3Thomas A. DrexlSCRSHI_Q_60@!SCRSCHH__60A@@ZDSCRSGATSD60Acc@lModPlug TrackerSCRS@ @ `@a@ @!@`D$aD$ @!@ @!@ 9!9 9!9 9!9 @!@ 9!9 9!9 5!5 5!5 5!5 9!9 5!5 5!5 7!7 7!7 7!7 ;!; 7!7 7!7@$@$@<@$dD$@#@!@#@ @!@"@#@$D%@ @!@#@$D D!D"@#@$G%D @!@#@$D"@#@ @!@#@$D 9!9"9#@$@%9#@!9#@ 9!9"9#@$@%9 9!9#@$@ @!@"9#@$D%@ 9!9#@$@"9#@ 9!9#@$@ 5!5"5#@$9%5#@!5#@ 5!5"5#@$9%5 5!5#@$9 9!9"5#@$@%9 5!5#@$9"5#@ 5!5#@$9 7!7"@#@$;%7#@!7#@ 7!7"7#@$;%7 7!7#@$; ;!;"7#@$B%; 7!7#@$;"7#@ 7!7#@$;@$@$@<@$dD #@#@ @!@"@#@$D @!@#@$D D!D"@#@$G @!@#@$D"@#@ @!@#@$D 9!9"9#@$@#@#@ 9!9"9#@$@ 9!9#@$@ @!@"9#@$D 9!9#@$@"9#@ 9!9#@$@ 5!5"5#@$9#@#@ 5!5"5#@$9 5!5#@$9 9!9"5#@$@ 5!5#@$9"5#@ 5!5#@$9 7!7"@#@$;#@#@ 7!7"7#@$; 7!7#@$; ;!;"7#@$B 7!7#@$7"7#@ 7!7#@$7@A@<@$D#@#@"@#@#@@ A "@#@D #@"@#@#@@A"9#@D#@#@"9#@#@"9#@#@"9#@#@"5#@#@#@"5#@#@"5#@#@b50c@#@b@$c@#@#@b7c@ #@b7 c@#@b7c@#@@$@$@<@$dD #@#@ @!@"@#@$D @!@#@$D D!D"@#@$G @!@#@$D"@#@ @!@#@$D 9!9"9#@$@#@#@ 9!9"9#@$@ 9!9#@$@ @!@"9#@$D 9!9#@$@"9#@ 9!9#@$@ 5!5"5#@$9#@#@ 5!5"5#@$9 5!5#@$9 9!9"5#@$@ 5!5#@$9"5#@ 5!5#@$9 7!7"@#@$;#@#@ 7!7"7#@$; 7!7#@$; ;!;"7#@$B 7!7#@$7"7#@ 7!7#@$7[}|zUz:yxZwvuus89z=/6>3''˨l5ÿ+˿Uսٻݷ)J2qJjǨ=j6š]&W囊DrUԒ ʏ?v3mቪU%cӂ 9~}U|{zyxCx!wviutssq^q=ponml?l(kjxihg)gfzeldcb!bat`m_^](]\}[qZYX-X&WVUTS==<;9qI'ֹȭ0Ĥ.5e^߳ ?7ohϫϪ30ifբѡ MF80ln%(he!#bh2/vr~}|8|:{~zyxwwv^uctsrqp?pGonmlk0k2jihgf#f$exd|cba"a%`~_^]\,\)[ZYXW8W4VUTSRMRBQPOOMkMOLKJ&JIH_GFEJEDCrB#B@@?7?^==V;R=V8`UԼ4ӾŬǨ&5ҽ9neܴ?:qq֬٫ <@uz'ZhҜ %Nf͕ݔ"Mdю2^s/Gy܁ Ba~}|{z&zAytxwvuu6tfsrqp p*o^nmlkk*j]ihgff0ekdcba"aE`_^]]:\][ZYXX]WVUT%TCSRQP PNOnNMLL3KJIHGKG[FED0D-CBAA??j>><<>x9-VhĽUƼAϺdvoʳ ;9lp$Shդ Pdޝ0`z1HvאLi)Eq-_w~~9}[|{zyx&xGw|vuts#sJrxqpon$nHmwlkji0iXhgfe e@dncba`+`[_^]\\J[yZYX X_==;EKl~}||9{rzyxww>=Y jO Ⱥt¿ռ8ԴPilo[`i Prե>f֟(PtŚ:gٔ(U}Ώ Kx͊Gr˅&T{ҀJ~s}|{{)z[yxwvvAuqtsrq2q_ponm mUlkjiiIhgfeePd|cbaaN`_^]]U\[ZY/Y`XWVV3UtTSRRPQPON,N]MLK K:J~IHGGaFEDC@CjBA@A@Q?>=B6e_(ҡ򶵰rѱ׵ԹOuRUE~ӧ3g+Nt 6_ߗ,Q{˒ GrƍDoˆGsʃ$Ry~}(}X|{zyy9xdwvut+tUsrqppMovnml l=kujih h=glfed d@ctba``I_y^]\\N[ZYX%XbWVUT>ToSRQQHPONM/MmLKJ JQIuHGF6FVEDCC1BA@6@??e=Lvp:=T΅ⴻֱɵ97q.̵(H Muۤ4dyƟGc>^3U܏2U9YFkȁHs~}| |+{azyxwwFvutssHrtqpoo:nsmlkkAjlihggAf{edccSba`_1_]^]\ \:[xZYXX\WVUT;TlSRQQOPONN?ES9uW3Լƫ+d?ܸaݸmGO]n>ȩ]ۨCȥդ֣آ ;dƜ.c3Z{ϒ)[:lɉ!OބCrӀ"\~}|{%{Tzyxw"w^vuts3sdrqp p?oynmllYkjii@htgfe*e_dcbbPa`__G^]\\=[ZYYUTSSMRQPPbONM-MoLKJ2J|IHG< *̈l{\]fHqsnkcmry}xiVmHFCKQX_gnPv}Aّϧ7ҳPHщoW7pgV8c-Z`$ktOvq`oYqux\x{mZIEI|PW]dk`szookx9( prɓoԘ߂Tg[V`jOtxvrr uudrgTGKG/L RXd^8eWlsza‰RjJԮޣGJyq۞8j\_j.suyxusis qj9_NGSINFSX)_elszH̗ӞI$mYЋuQ;ˑ"4*m]4_ iqxz`w tp7kbTIH KgO5TY_\fmszȭ93O/lE' qS^^gxpvywgsYmJdXJEHL$PTUZ[`fVmszbLwUlfiAF}8S|mĎ@u_]DfnRtiw,v'qhj\+MA`BGKLPaUZ`*gmtzr-Õ]ТV ͫMÍYHLɦܜߖݗ xaM]dlqsr!mlbScB:>E|KhPU>[Ia|gmtzc If({d%ީLЕu8z;b\Xcjnomyg3[JE95?z:͍^񚋡ק̭ ⶡ,֘؟ͩ\Mە}d\ebixmmjbTDC44j#]xxZl]_f5ig`TADt2+.M4;:BGMRX^dk]qw&~F0̥08zwE޵2_דbK`U>'nA^^dge]Pr?/7- 4;AFvL0RX^.d\jpvX}ۃeT u.',ÕV8CǷj_Sq^ ^c)fzcZL;[,~,3;@4FKoQ_WQ]ncio.v|=薔>Ϫක*ߦј~t'iBs_R]Ebd|a/XI`7?*+R3h: @fEJPV\bhoWu{HՈlʜ~#{S0| ?k}h阻u`\a7c_UF3(F+29Z?D1JOU[ag?ntzoC𛮢Pɯ@N-޿ U>z̾׳Iwa\_a]SC0'*h29>ChI%OUZa#gWmszRΡWeڥ>*ţ˺yb][w^6`[P6AQ.%.*1a8=CH\N+$|)17<7BGsMMSAY6_Qekq6x~>ȋuVʳ߾¸`]j {B~]eXZ[v]XL<*#)06;CIjOBU0[Eaqgmtzz0Дe'~1(Ʈ@5L;ϖhryXSTyN@9.K{&-?3a8=HCHNTZ`fl:sy-Y\ ĵ /Be%+05C;@F.LRW]c;jpvm}BԞ}^ eƩD3zECϞ׶gJOA8)F%7+70]5:_@FKQxWx]cipsv|3אW3鲧'ή%ˋ…è54Έڣ$oIg;1! `%*/4I:?~EBK QV\c:ioub|Iʝy>Ͽ<>ͽƀhGԾ֣,˾xI4)%.*-/s49?EJPV\bhou{Bꏗh?'븏d˥ϽьйB®|1Y`KQ.<$).4w9?DpJAP&V,\>bvhnu{9݈MϪınŚ3Ҷ,η }=@ѭRM(mQ{s_e$P)~.3H9>D-J PU[ b@hnta{PלK#ԛbɫ ˸ҡ5҃}O"  'o $ )I.39>IDJOU[ahNnt4{́z'㕷rtcCf;խ֜Ԭʹ֛߮qKgPx e$(A.39>>J׺цW@%R|^P3 V#(.m38i>DIO}U|[ag nutz%掣vH291(nCْk!ش Џ L  m`$#(.`38g>DIOU[agntzFlUUTIƽ?ѣݷuH$ S "#(.c38g>DIOU[ag5nt{Tە|}q(XӷؕHܟչʳ|g̤{G!&  -' #(".39>1DIOU[a hRnt9{偀=Ҝfeٽ߼tϺp2ü,sDLr.m;$,)J.39>NDJOU[a-hsntW{`̪ԱӸƻ5ޚa~$nDZ_oR6%;8E$V)i.379>D>JPV\;bvhn-u{Y\G,47ME.`6ʛ˭Ȥі.paYl=@,)1p$).49?DJZPWVZ\bhoru{AT\]Zܹ=ͳwy}xKhL|{oXMRXV.L: 1)5"=CIHOU[Fapgmtxz >픪d ]AMš=b bW}|pZMHRZZmR8B44U<[_agm.tz2ćew 5„eݐP. #ՈB0}rG]MyQZ]WzJ&9F5;CJO[UE[magm4tz8͇cX0'۽2ռ} SQݡa}s_`NPSZ_^\Q?6; CJOvUM[oagm:tz*^5ٮw ڍyGT_'%~uaOOY`!`JW5G9:pBIOUi[agmKtz2Oޔ XNQ%J=v~ޣ;Ζ ~ZvdONXKac}\O/>:gANIOU@[Gatgmtqz .姦"*L߂FKvlLwfPM7Wae`VmD<{@HOtU'[!aFgms>zCɍO֚8QݬuZcy |Q#o"e0ox-iRLUX`+fd[K>?G$OKUZ` gEmsyizn ="ϠB~D♴ [nH%!yjSKT7_frg`USB?F}NTZ`flEsy93  }}[SԦQRB zlUWKCR]dfSidZhH@pEMTuZA`Jfwlr(y\J6Ү**2z1}MRŝ8!{,nWKP\ekjh_OB}DrLSZ_e lWrx!tɘ~0Lwh΀x|F{3D̦V/H|Jo|oZJN&ZpdjfkdoWF2DKSYv_[ekqx~ ~֑!'ߜm|Kv|Ӌ,ѡB䬾L] ~p#\KHMDXcuj(mh ^LDIRY_dj;qw}uA|dʢ1fd yt{)ߐmLK쭳ݪ7 rM^KKVainPlccSFHPpX^gdujpwd}CȖ3\T!vs{o67㥚j$D'{s}`8LJT_hnnohhZJkH{OW^cipRv|%ԏěӦ\wsrRzEjSI,;z߆2ubBMIR]Fgnp~laPHM@VF]Lc+iAou{^韼uգ+aqyqryFԓ*멮2weNHP[e`mqo!gVJLT\bhntO{ P^ 2,e}opxk2ɘr ku4zfOH>O5Z dIlqhrk]NJLS[>b h nEtz^CߢzmoxZ-^f'!O}hDQGMaXfbkq todSL)RnZwa~g^msy9Ҍђj)斳)xm?U GJT^gowuv)o?aQ?PW_Af7l/rlx~J18@KATori5muW}teA ~$#qrW+GIqSJ])fxn?uwWs hVPZV^ekqw ~qpϕJ!C\fTotglux|rZ]}~9@&uYGHR[d mtyvm6]+R0Un]d5kq8wy}ʃ㉻FΛ}kekYt{ǁ٫< ֯>Wz6]HuGPGZbvksoyysd|UT\djpv|&0fr_yhdOksz؀؆ތ֒ԘĞ= q`k[` IFHOXaaiCrFy{pw,lZTZbjpv*|sg)ꘪuKe`cjsy߅ S\񷆦|eJEMW`Hhpx2}T{TraVYaiou{هmOٕB4NQpa}b~jxr y'MeZ]˷w٫jL5ELV^f}ow}c~wtiZ0Y`huoeuT{tPƌhZcM|j_a@jq@xE~rjd|xٕpLODKU]env}|pP_Y_houzdž _Rv>d\ajLqxwn} @Ϩׯ0Gεx&SDJT]dlu}6wf[^gntzHRAUb2`o?^Zaipv|?gxAJζrð5gXjEIS-\xcsk:t|x|n>_n^f)ntz-osxLg!YYaip v"|uݎ4㮇1ŰAh ^FH0S[bj4s"|Y,vd]_Vemtz$Otp^uUY%bnio}u{Dl̠Yv Ğ|Hoe\HH^Rm[bi!kemvs|sڔx}MVkGx. "I*2p9?EGLRX6_eKlry`ܛ3*ҿV ۻ5Ͽ u$mAs{G ,ߛFÃf>(07=D"KQX^He lry׀׎•p457jxtx~瀶lC̘a7y%;-4;CJP`W^dkry&JisnT1NXʬohj/{|~~}Zj̍y3\5T8!9*c2E:AHOV]dkr#z{ˈ2STQt׺e}%ǫej}i{Hzz}2m=ukX8j#'08h@GO#V*]DdkrAz#ۗ(2mɻ30{uux|N.Ä}q*Y7>%"*$-6)?F[NU\dlkrz򃭌?mӰsX϶r/ &Hrsprwd| #;zjW9 '1:BJQ,Y[`gnQv}97 ,ŹfމԶx{lkouz䂍߃ʀ{qa6Cr&'@(l2;CKR ZaDhmov}Uq.ͼÂXB:wT(uhgmsy~~U2zjK-+(83<ELT [ahp/w\~o4ӧb~Woɽzٔp]dfdjq/x|ITtT_4Y&6)3}= FMU[bipw~T x˳Hcۓv}flaa7hov|_ـg~^v;# )k4K>GNV\cHjqw~hRuԾ hˮsSvj!`_Dfsn+v#|J1ΑXP(gAM()C!*:5E?#HOW]wdkqVx\Ӓ-usA ¬udŶPjp_u^d4mu|Z@2TqI, "C+5 @IQ"X^Dek"rxD˅5}ƞ4ƵN 9ę\S(l_]Mcblv~S_h-|Q0 ##+V6@IQX`_elorxS̅Ukb>ٿ|A_Wؐ[qc^cku~ &W؅rY6%$,D6~@IQX}_e#lzrxG,O? Ωha Z͉xhaTckt^~Cn0RZb<)%O,86i@IQY_e7lrxL*@8ĩk8Ȼߘ ዺ%Coe`dj8t~F.W XkyC,^',26V@IQY_e3lxrx; IŴS߽ݎو;@Yqvi%fjsg}ÎL%{EtgJ0 )-)61@IQY_fAlurx‹ƣzݹ0F| v~ohjr|7ϕá &\'~R5+- 6?:IQX_el=rx~O2̮Nv1ӓÉ푯vlkOr{OܕQ)|ͪS[;y-<.5?HMQXf_ekrWx~BireA礼䪉g&5؄}Dqmrzٍ ?u_c@B0E/$6{?H(QXG_ekq%xh~1좣.qɞL|}&ڔw1p@ryƃ1RwlF3p0E6O?HPdX"_iekqw!~wՐϖǜ:ͭаM냲{y{Zĉl.ƍ}ssUyVr٢tıtM(71d6?HPX^e'k?qfw}0P\C˧/Ӫ|wwz3ɉb̚H]xtx/2ڭI}T;p36>G!PWp^djp wB}ߏ֛=xXwt%vy~ÉaRь}vxY݉XdvЪW\>@5?7>ZGO6W]Md]jdpv|0HO< ~yAssru=yU~Ή*=6#z?y[PЭڲ4dyE 87h>F1OV]cio v/|sє᥎Ut"pp#tx(~ۉя^e~z~_♖(ܭ”kJ:8o>FN=V]_ceiUohu{ց!ԟ܈y+pmfoGs0x}Vn|T~Z{β]tQ>-:`>F NUa\bhntzKb_TslkDnrw`}glss^1ɤЙ~̍1l|6X~B;>EMT[bhnszL}I{oPj_jUmq=ELCT[`ahgTm@s\yԋۑɗ;w!l0h inl0qv|È͎͔ĚfLL5ի\XteK@?E[LShZ`flrx~ ݛLʂr9i]fgkp v|;WkxtKl.*/2֣ lQB@DKRY_ekqw}[~>ofdfjowut{ۍ˟ª꤈Ї݃Vg]iTA5soV8FADBK;RX_djpv| 47"&zAldfceiotz-Si\=M:ɗˠwЖy[\JC(EJQX?^0djou{$FSD'wvibbd iNnt4zfnjڒژŞ>< #1wW~,bINEEJPXWx]Wc/iot{(NdQم2t3gIa`c@hmjsy9MZH߮+%h ѱ%ggR.HF}JfPV\bZh2n!t'zFf|ޑsq e__boglrxf7ή. M{t@޲mW4KGJOU[ang8m s&y:b}a nc?^^aflq(xl~⢞SKVZ\`bflrbyTl|hE𩞯'rfONҮ$$-zqHdYTTW[`elkq w}rb:VnQQ@UZ_e+lrxT!⣘=Դ+/w| ʛQj47{?th]VgUW[9`IejKp,v*|}mR]RZOPJTRY_Hekrwx~?vJ}ع1{yJƚ㢷ΰCB|vmaYVW`[_djou{ixgfXObMYOySX^dSkq;x~>lvjI?&֝!jC2]}x qe\-XpXi[_Wdi otz}Wra2SNLoK'NR+X1^dkqw\~ "C5רԾm3S8 -~ytHj`Z.Yu[L_chcntyykZ,NHIIMQW]7djCqw(~؊ZY8*@PNyywnd\TZ[9_chmusxesbSjI{FHLJQ7W}]cjqw}cېâ=ʳ6Ë\.ҥ-iey3zWsUh_[O\4_SchOmr,vRk$ZLDDFLKPV^]cj qw~l򢧨QV$ŕƧƤ,dozf{wlc]"]v_BcglNrpa0QECABEJPV<]cjqw~ъm vʾ žVh ҫ2D{{{?qf_^_!c~golphW~H@>E@D"J6PV@]cj'qw%~݊14 ۨ"& ɉm#{{A~,v kb_:`7cPgl+l4^ M@^;;>CIPVS]djLqwV~ 8NU4CLiɔɣ ||?zof>a`Tc-g kcROC':79=wCIPVm])djrq x~;ip<߮}E{Ěq YuU}{b7tiPcac-gf]XGY:44W8U=;CI8PV]xd,kqWx~<Зʝn(yɤξyMK_8~|Ƃxqme"c0dCfq]K<302e71Ш1B|҅}qhdd`a,Q??2--16<'CIPW^^#ekxry4bp\įXĺXg\#ZΏр_|!чv lf dEWD4}+) ,0R6%)/$6#W)/6=DKRYZ`&gmst{#BP@ԫ~\оkڑ!Py}~Æ<TEQLGS8Zagn*u{9ώ砿s;]se&<aw'~} ~H`?( mw#)07>ELSZa\hou|1UXB׬uM²̰хBߏߧЧ~|qW;'$G*18?,F5M(T[ahgov|Vm7p.I_"+5|{pcQ ;(Xp?$*r1e8s?FMTa[@b ioLv|UܡcmϽ-=(֗@p)JxmaXMNīJgo|^-SNK?6/]# %+c2C9B@ZG\NOU)\bijp w}KH\ûȾͤzܴkRF|aOGG`JB3'] P!&c,29@GNU\Xc(jpZw}OՐ圽)̳6ͭz$ܩ7M.Bt;TB>BIcF$9+#P!%#k',F3:@GOU\cSjpw~sȊ ᢦDֳ2Ͱtܰ!u_m?;jG88>rGI>0"'t#w$<(-3R:4A3H0OV\c~jqw/~/󢭨LM҇-ܭQsb@`= 1E3& 3z-?-S065%;AWH-O V\cSjpmw}I;ͭ` bŞj:_ݾP{Ћ`:(p)U4gBOZ^4TEU;6J7:?EKLRY_`gmtz(XbW*뤈xΠV,^p[DiB?,i)2`@M~Yk`X{J>87:?dEKGRX_Uflgsy2zBhϴKacA*t@褐ߔ rI0*Q1`>LX`\OB|:8:W?DKQBX^e4lrywʝ4$dȨjcۋsſDdy'R5+T0m<JwVe`\`SE<9; ?UDbJPtW^d\kqIx~"9/ۢy |Ÿ" хڬq蠱MZ;+.0:NHTz_b/XIC?:Z;>CI&PVe]dj$qw}4kyoT?8S[CѣQ1q~cB180 9!FR]sd\UNbBb<;>qC I`OU\&ciGpv}Yz?񦀬?uƓa=،[ &-ΛwXjyJR6s18DPG\d`RE!>h<>BiHNT[;bh\ou)|{Žv&.ʥWʹgooQw;e37iBOZ0dc`WI]@Q=>BGM=TZbagwntJ{чәTV&Οӵɜ"Y:$s4YAg67@LXcNf[HMB[>>TBKG MkSY`*gmtxz̀ܞ;amdH҆~[䜦bu_Hd:8?KVrag_QE?9?BF^LR Y_5flsy +7ꝥ: _Âp)o/Ȝ#۝ݏxdO)?9:>?IT_gcVIA?BDFKQ1X^Jek>rx~7S[MآlXĽDzrF¸n^՝;zgUD<>GR]RggZLC@BEKQhW]pdjkqw~\w~mG (ӷ˦?ޭvǘR}i[J@?FTQH\"fi^PBFA`BEJdPV]c)jpvI}Ot߱.TlfT̥UחP4]lk_P?EAekrUx~τފՐ~.ȧ8۷}i ؍͑畢֒{yjd.hdZ,TT![IdmqOhZP}LLO^TYY^djVqw ~qeuJTu}Kj,cfha`X+W\dmtnbPXR RSVY]vcjpEw}&ĖbU(/,]Xވ_T!}j beke]ZZm]dn[vt ji_XJVV}VW)\vbQi"pv_}w͐բ.ΰ&M`Ha~񑘘𝳘k aCc;kjNci^z_enCwUype]XV:TU [ahoIv}ƃhMyXcO7tm]܈͉m`ainh cNbgow|)v\kKaYSPT$Zahnu|~Jq:Աó$A2$hrAa_1gnom1he2hnv{}zop)dX2PMQIXC_.fm$t:{^mb?5 #މLl0FќxcI^dmqmiinu|*}sKeVYL,KOkVP]>dKkry7ҏ蝑3uȱpM ,鏂yqg$]ajrxrnrl&otz|td5SHHMoT<[1b`ipWx/ۋUؚȮh9f܀ɄǑw549&4Y/*&"vQxPf LN$B:!W$'S+/ 327q;?xD1INRW]-baglqwU|ދǟMhW#+ɀ̛ϓepڽ޻~?BZ4,6-T.gݑْۤh0UaƓäyHVk]̘7P{{qxuqwnYkMhdeb_I]ZiX#VSQON]LJUIGFEoDCB8B BAAB"BfBB#CC9DDERF GGHIJKL N/O[PQRS-UfVWXZj[\]*_h`ab dAekfghijl mnopqqrstWuvvwCxxyzz6{{-||}n}}~c~~~Mzdz;wH}rN~|i i|.+μ~DqW S~-U]^އBdPq~pԊjoHvdq\q[Kw;KdusĒTyt"|Wf Bg]ڄ/yqotRXSHna*pU^٘e%@ƍlUz;AvTLöJŋh^fhIn$izh -Mx嗣c_cm{NaW%e|шYnzr\q)otpw푀ro|xxxoiZlHG4Hs\yy}g~ltEom[z{ڂOkIwgU\o6ܯeX?RJLe+jxؐ_tkk߄|’n(}qי:v#[yrJg nvw0oiV8^ Y_B~}ogZŲBGd\r~o)1g 68oPݖ`l0b WsɮhvgrNzdrugzqMc]vĆ BİoWَN p)s}\Nŕy^snс h׫Y)m_Ԩh{g{PzuQmy(poiZABXnF`VxsD2ms҅:@mn{grsfveVZ`}~szs!bdIkAt]](}%~Dtː:W.`6u˃H}~y{,w4imw7{un6gE\םzZʹQ. ]ט~lLtxsmc*8ZpqmZznƕ{]g\gM.Z{r;AztrXKQWr~fOM܏wQ\T>NYLg1IrsƘsW[{ym at}nX'6u{x%kmuoIAڃ`:CNb)kt|sk?F^ʗ&x afkhԓvl5q't<}Ǟb6{:_ei{!ӓBimIiof)qrW1z]eno9_vashmAkrGuGaNn~duɜno\~ rQW4wyg{eofwf)RtRr+yЈEo'\tbbt*oanX.[hd@z;w{j,Q`~h+ŀzIjz:,|{pgv|kxdvZu}r苛{ ~ys1uOu|~ tBnmp?uxR_,{䍤i!i [h1q֘Im5fە}Ɍgr m,jv'qޒpԇ]i:Zwm r{JmTr}iljkmSsOBrƂ[gkd\+bayQz)TxӀ}psdk}ΏqRm[bGsBn;ngG#hmo{Lpqvhz}~nY}V}HnyM~BtFዹrZon qohK"SxyIjƃ%vɁxmj~oCq3{0otjy!pgmey{ْvy~t>xX={d|Vez|uЀuvsҎpsxE"uڀMrјoZ_| =S|b|qÕtpGwz탯u0 y܏"t:qmoTCs"~{ry>|~Dz7u|uk|򃽄f}y-|`uE{Tx uvxl){ёmx`xl}'wEzyGn|(rӉwkz|rez>Hy|!{|ҁʀuJy-}4zz<ylt!~z&R{}yWy qptyrj֘l}k?vfv}X{)tZ/~+{z6Ml>X׆Bt[|}lGx}Zwo*x~b{vsu x`tut|zTj}Hytz^ulńuā7xrݑv`sX}}2ms|{+$zxւpCx|Łl~rɊ8wnxtv5}}{ッ7Yx>vLw@v ~~C}|{&y0 W3B8MQIG'uu`KmW=mpǀ+f˲NߛaW19[Gre O$-CTRCMu o_HCykUL׋ʅv.3Y=|S-*j3@&t{@FO523jO"f1y†GFCo?7 x'51KGBM A"#9EVaigs6v~;z|c8㏨pǴMk\W ~үŪuVd8#iI (|gd2X7E 9Vs|r  h .6<ΔNP<ܢoJ4D;)W&գCxA \>*L6̺aţV7dmѓ|ivE_)زwv|9xٛ?Nz< ;6r?FJWJ-c&6F2!J%J*P?iL7XEwGojpkbv]m811//0r4!sUA/J7?{Mf'LdM$/_@='2sW^9c~Vb[c3°1gϚԓza2 Zz濢θ/!({xirnNn+ag CWVM-Yu' 86 '3O(-P hau6}\lvJ7MyQ@7H}=Gx[Y9P՗SLߐ.)ٖ&Op^_BIz@~myfgZmkB SD#`5K)3m.dgaJ7ln,UD'ZE7mT1\SC]-aBINؙzO;ic~XC&jw"鵨RHJB0׵}ITE5jN:0PwPhF'J{J+K~hۗN3fa]qÑjdq%V 6Cki Zk&~9bh(!hjt=tv?MhI;i&[J$T >PL% !s )j܊K _lz_l@ubwsXT9l8A.2I9}TO1fCA&^M~ zK{iXeYGviڂ^|Dnlg6SW+A{@Oјŧ VϻaZ]Fw q'olBRؓe.V"wDoyZ|SX"x3|]QYPb ]@WyҒaXon<&dUeMvG,?V&;022MRCzfn?t~7DjOrKh/puWa,uĊP{О=m~rܫZmFՌ ʞNJ }(oCe+{y}d1 t|{2{~b>9ԃdhBĔ5"y}:[OjuB16zhjz|]h6\Rò9onWdmsnLiҁcy`7kpfN|\^n8Yqw]m lֱsς,ZyrrMf炨M砌I}U.z@ \a>8\W9wfLe&yFVD:I{%VGXbYQvqqg%dWsRԚLǂ][k$쬤brAlƐS \ӟ*Sv3t$C[$.&D) E$s |HvZgsJA^8BuJ/b'FwiWpPə~ZNZ۟m͘xp%{pCeX_8qxOiCqpeX4AnaqDlMO{KZ9-_C*;G%abe3lgBi^29T[kqVwQJrRYEՑ<gm˼ɟEн*\ВwWE>P\Ku^[n\@qC%b8JiS'd3wV*g"GxaiOT*T'Y'Cg7ME^AmeNb.|ܖanUcm]{j)m߈$wͽ臂KpHnyqN~Ae[[z^VSWeGZ h 4V]*\{v{f#UcqYhwu.vSlIy,䤔ܧ;ؽh$ǣӍLzLԡFFwLWS|fgWSYYjdyP 0DIO2EMo8Y[Ov@EA*CYq[imTi t!xnZ wcvU2|wwiψ(|"Bfw[^-U~Jx}m$H{ÆFG}_z\vn,MOL#DAXfUЃ5o"PoJGKUU8~3T 2kzq[lxa s˲@}$ouIMXݖqqc~'Ph>Gk헲oB[okᒣc>AzqZ ][L31yE]/BIG' H^[JDH}^WUfM0V./JyToK, rߠ9v#c1Bόn-]7}ΙU)|U(6#f +򘆎}i8xpfNfLoEqTg@|>??V`KZQH3A@Sl>ׇjY5n`Kqs󒪙Rzt>ꗫxr N텪wp5s9͕g]k_#➐e!昛c,rnNJlvJ}A}]t[OCLlۀ|h.Mp.&HZyHBFM6V e^]L_w_]s|hcdwRoyLz|󓥉z3Sȱ+1[4fu(qpaE}Ō܊jriKrBGeNE'~EB~@sHNJ;`PIr^f@i퉭hS,awT_7wv&JK%w0~p;VRݮ@Oؠ-\}9ž^Rkm#jCS2-}rIM,f+n RXM}jt5rnVx[AxʓMBފޥ(ʟ+8́"n*{z~w)ώWqvrpne]lOd|]X8.9OA(">X@p2HM*9I:xmgW boe~Bğbޭ1ˬ,nT%КnhHBlXLda`dWIlI([I @2}[w|] WhV`~UH]NJ@OdBY~fVQ:N}MEyog|r(ѣﱣz$W9ڨUyr;u|~}I4]qwS8_qYNcvGQVKJ GEdv> XPE<,fJ*W=nLES lGu|cɆokm&u@ިň܎-u|-tFtu$~ҁAv}^%WzT8weq\g܌pY};tHkswl܌)!i:|tFzo|sT{Ni=q&bk]nkw\qenKgb{ۂ+wʚzƣܖό{CMȎwp;bn]9{w}ytzIj^gdTEjxLiC>Dkqt@?z@S[[vydEXTt[BmWQ`ɛȖޘY؈ո˺ r)ă媖/u[~iz78{iWmpQga]=\CUV]}|mm5q7`쒬vq/\bBz ?W5;ԫ[4zRLswl&~]ՎߑŦ5ȗT}3ۯѤIUqAlNZۇ'ojj4RGEqZ:9B:sVM:DLBsGS`Etzvs~' ay&󤴫q =Z5qKn1~?x~/@u}kjYZeGOH1EN4AkI1.jcNMQmST1VSUHn4 ɑ/g`{ǒ54΢ˏ zٗv:mD|Bs<a%xiy{X~ؖa{Eރ h}v=l#uqmkZd%Wd?p7g>b<_*YjwWNW^TFSEMy^Vou(q\yVD}CgӔQη vq.~ՔEtKzlU|;FWSoqcETZhK_^\Ñrk2wwopvt w L2neS^ku[SixqT9+JWgYVtz}=O[yx\hakaT@_FjF9ipeXOt>dcU|{wet^}y)Klt8ze|БzMSYhiБRsj{\exp1v zӂ^Aj{b~r{`8Q~HobEt@|b]zvAh[u8p_ך}Kk1zmCx2l]ԡn& q_xo ȝ{ʏɆvimqfKTj9wBZ2]-}}niVismPvwY~%y6uSt|ka h~}h}x˅pF"~bdGĠѮվ+}_zAj"agnzQKM{kbUbBufmSNq3fYGl~A7ow7%׍(v|}{tːw`[0ephNgHbUl{Vzф:$^{:r%fusy f{-6uבٌ'mv`esb|6Gx?PIcxkɋKUls >~"vdžWw|koh%vˆu-ou}s2udwy:~I|?xhbojNrZlNcj\bgy~{lfIovl!:_&Gɘiۥ(ɥ'ۈ&YlV4lyuxƆrTZ2kme[+gjUoxΈ8.~ycq*bHkh}zao42woɀxCmaefn!lYyaeuuqmYw_q{.zbL,(L~pZk$Ý4ͮtЧC䆙<)n'{EaQ_MTcWEHhOzԉ}j/⑐C>!/eI`~}ނ-&qp0mj@sNohtrsdg{M=e!҅|s~&QOFLNƉφ&ŋׇDjv܅p~hx|y4vt\zlyyxqj(izd4fnlmX_likpj}vyt>{@yraw q ro{ws)owZFzyy4~bz~wdВi|?)F8B(zustJsjoqrt.msOzmritawLŁa}ځz| ~}}ⅿŀІ,ņJxf7 zOzSFFȁ:O/T{l>Y~eЁe{zz+{~vuzxw.y]tyzQ|<3}9&xz|6xcЍۂ}ăՃaM؃y!e9|e~~|dx{{uyvy{u}/|I S"-؄U\⃳Gֆ]S}Gy} }v{z{gwQx}xu}{w=y+lzڅdžEҀ~܁~y ~ebz4}`l}T}ӁǂЃq+izK>}ɀ}yS| ỳ&zz,}}6}#}1}|i~L~}X~~~I~1~~(|b|郺 $}|{~F{{L{||{g{o}z6‚Sw} ~څBÁ #=Ia|Fl烼}7~/ME-}~{U@2|{!~yy|O}|yo{|}|{}zyN|]|~Q+HӁ{[KՇք؈ֆ~ 󁺀/} }7z|+~<{|} {}{*{||@{G~7}||wyzl}q~~~{}{~>~B'~΀cBW|؃F2nw2.~i1ꂛ9GK:? ~~}~{z{$~~h}z^{m{zwm~}||}}{(|^}|{6}|} V*#hڃxA7`-ς́υM~~s~3Հ9y,L~+T}0}~T{{}{yz{|z^yIzzZz{'z{2|~~O~fʂc!т9*B a:ł$~" ρY~~v~~}0~\~[}}}}D}o}^}|}}}{}MI\~~_~J}}j~]/ T" /dev/null chmod -x ChangeLog FAQ README INSTALL readme.txt AUTHORS *.spec Makefile.am COPYING NEWS configure.in 2> /dev/null chmod -x ./src/*.cpp 2> /dev/null chmod -x ./src/*.h 2> /dev/null echo Windows to Unix filename corrections... mv news NEWS 2> /dev/null mv install INSTALL 2> /dev/null mv authors AUTHORS 2> /dev/null mv readme README 2> /dev/null mv copying COPYING 2> /dev/null mv faq FAQ 2> /dev/null echo Deleting Windows Debug, .obj, configuration, savegames... rm -rf ./src/Debug 2> /dev/null rm -rf ./src/*.obj 2> /dev/null rm ./saves/* 2> /dev/null rm ./src/main.ncb rm ./src/main.opt rm ./src/main.plg echo Deleting automake/autoconf files... rm config.h 2> /dev/null rm configure 2> /dev/null rm Makefile 2> /dev/null rm Makefile.in 2> /dev/null rm src/Makefile 2> /dev/null rm src/Makefile.in 2> /dev/null rm config.h.in 2> /dev/null rm aclocal.m4 2> /dev/null rm -rf autom4te* 2> /dev/null rm config.log 2> /dev/null rm config.h.in~ 2> /dev/null rm config.status 2> /dev/null rm configure.in.save 2> /dev/null rm stamp-h 2> /dev/null rm stamp-h1 2> /dev/null rm stamp-h.in 2> /dev/null rm -rf auto* 2> /dev/null #find . -name "cvs" -print > dellog #DELLOG=`cat dellog` #rm -rf $DELLOG 2> /dev/null #rm dellog 2> /dev/null echo Trying to copy latest automake files... cp /usr/share/automake*/missing . 2> /dev/null cp /usr/share/automake*/depcomp . 2> /dev/null cp /usr/share/automake*/mkinstalldirs . 2> /dev/null cp /usr/share/automake*/install-sh . 2> /dev/null echo Cleaning up doc/src directory from obsolete pdfLaTeX files rm doc/src/gl-117.pdf 2> /dev/null rm doc/src/gl-117.aux 2> /dev/null rm doc/src/gl-117.toc 2> /dev/null rm doc/src/gl-117.out 2> /dev/null rm doc/src/gl-117.log 2> /dev/null echo Executing aclocal... aclocal echo Executing autoheader... autoheader echo Executing autoconf... autoconf echo Executing automake... automake gl-117-1.3.2/saves/0000755000175000017500000000000010145416156013015 5ustar cedriccedricgl-117-1.3.2/saves/CVS/0000755000175000017500000000000010145416156013450 5ustar cedriccedricgl-117-1.3.2/saves/CVS/Entries0000644000175000017500000000000210145416156014774 0ustar cedriccedricD gl-117-1.3.2/saves/CVS/Repository0000644000175000017500000000001510145416156015546 0ustar cedriccedricgl-117/saves gl-117-1.3.2/saves/CVS/Root0000644000175000017500000000006310145416156014315 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/sounds/0000755000175000017500000000000010145416156013207 5ustar cedriccedricgl-117-1.3.2/sounds/beep1.wav0000644000175000017500000000751210145416156014727 0ustar cedriccedricRIFFBWAVEfmt "V"VdatatM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &GmٹkE% %FlںlF& $DjܼnH' #BhݾpJ( !Af޿rK* ?dtM+ >cuO-  *Lsմe@! )Jq׵gA" (IoطiC# &Gmgl-117-1.3.2/sounds/beep2.wav0000644000175000017500000000663410145416156014734 0ustar cedriccedricRIFF WAVEfmt "V"Vdatao oD =f⿔h>Bmݹb9 #Gsش\3 'MyԮV.,Tϧ|O*1YʢuJ% 6`śoD! Ak޺c9 "Frٵ]4 'MxԮV/,SЩ|P*1XˣvK% 6_ŝpE! ;di?Ak޺c: "Frڵ]4 'LxկW/+R~Щ}Q*0XˣvJ& 6^ƝpE" :ej?@k޻d: "Fqڵ]5 &Lw֯W0+R}Ѫ}Q+0WˣwL& 5^ƝpE" :dj@@j߻d: "Fpڶ^5 &KwհX0+R}Щ}Q+0W̤wL& 5]ǞqF" :ck@?j޼e; "Fp۶^6 &KwְX0+Q}Ѫ~R+/W̤xL' 4]ƞqF" :ckA?j߼e; !Ep۷_6 %KvְX1*Q|ҫ~R,/V̥xL' 4\ǞrG" :c˜kA?i߽e< !Do۷_6 %JvױY1*P|ҫS,/W̥xL' 4\ȟrG# 9bÙlA?h߽e< Dn۷_6 %JuױY2*P|ҫS,.UͥyM' 3\ȠsH# 9b™lA>hནf< Co۷`7 %IuײZ2)O{ҫS-.UΦyN( 3[ȠsH# 8ašmB>hྒྷf< Cnܸ`7 $ItزZ2 )O{ӬT--UΦzN) 3\ȠsH$ 8aÚmB=gྒྷg=Cnܸ`7 $It׳[2)OzӬT..UΧzN( 2ZɠtH# 8aĚnC=gྔg=Cmܹa8 #Htس[3 (NzӭU.-TΧzN) 2ZʡtI$ 8`ěnC Bmݹa8 #Hsس[3 (NzԭU.-Tϧ{O) 2ZʢuJ% 7`ěnC Blݺb9 #Hsش[3 (MyԮV.-Tϧ{P*2YʢuI% 6_ĜoD h߽f< !Eo۷_6 %JvױY1*P|ҬS,/VͥyM( 3[ȠsG# 9b˜lB>iདྷf< Do۷`7 %IuײZ2)P{ҫS-.VͦyM( 3\ȟsH# 8bÙmB>hནf< Dnܸ`7 %ItײZ2)O{ҬT-.UΦyN( 2[ȠsH$ 8aÚmB>gྔg=gl-117-1.3.2/sounds/cannon1.wav0000644000175000017500000001023410145416156015263 0ustar cedriccedricRIFFWAVEfmt "V"VdataoʾymhkjccyyzfWRYWA04OeZE:AUhj\PUmyoY:  (07:@A@9:HH@HPH<70(*++>TWK@>::K^fjruZJHOZc^UWY`c\YYZYZohpԾtþrwwuʺtpyzpotytywrTJR^UOtcH:AKMZfe`cocPOWeor~|pfahhh||z~pac\URU^ZWfhHM^ecO2#((+:KJFYk^@470+ !42 :A+& +0:JYUE9:@@AAAOfofcYazkcm|~wphcczPHhpoypowywwƺ÷Űž~~p^TTC (4C@5:>4 0A@9:Ryy|ecuwhc^`\H7:AAA@<::COW^fpurpr~~~uotzjoúʺh`ckykhoptr`E:HH@CMYUEH<++>YfhpcORYUZtzpcYcof^prWHH>9AEEE:#0+  (599<:24AJORJ4%*47:<<<>@@CFHHKOMOUWYZ\YWYaccejmhhhhotwuuyz~;ƺwkjfccchpupoyzptzuw|tʾymhkjccyyzfWRYWA04OeZE:AUhj\PUmyoY:  (07:@A@9:HH@HPH<70(*++>TWK@>::K^fjruZJHOZc^UWY`c\YYZYZohpԾtþrwwuʺtpyzpotytywrTJR^UOtcH:AKMZfe`cocPOWeor~|pfahhh||z~pac\URU^ZWfhHM^ecO2#((+:KJFYk^@470+ !42 :A+& +0:JYUE9:@@AAAOfofcYazkcm|~wphcczPHhpoypowywwƺ÷Űž~~p^TTC (4C@5:>4 0A@9:Ryy|ecuwhc^`\H7:AAA@<::COW^fpurpr~~~uotzjoúʺh`ckykhoptr`E:HH@CMYUEH<++>YfhpcORYUZtzpcYcof^prWHH>9AEEE:#0+  (599<:24AJORJ4%*47:<<<>@@CFHHKOMOUWYZ\YWYaccejmhhhhotwuuyz~;ƺwkjfccchpupoyzptzuw|t~coza^Œm|ʾymhkjccyyzfWRYWA04OeZE:AUhj\PUmyoY:  (07:@A@9:HH@HPH<70(*++>TWK@>::K^fjruZJHOZc^UWY`c\YYZYZohpԾtþrwwuʺtpyzpotytywrTJR^UOtcH:AKMZfe`cocPOWeor~|pfahhh||z~pac\URU^ZWfhHM^ecO2#((+:KJFYk^@470+ !42 :A+& +0:JYUE9:@@AAAOfofcYazkcm|~wphcczPHhpoypowywwƺ÷Űž~~p^TTC (4C@5:>4 0A@9:Ryy|ecuwhc^`\H7:AAA@<::COW^fpurpr~~~uotzjoúʺh`ckykhoptr`E:HH@CMYUEH<++>YfhpcORYUZtzpcYcof^prWHH>9AEEE:#0+  (599<:24AJORJ4%*47:<<<>@@CFHHKOMOUWYZ\YWYaccejmhhhhotwuuyz~;ƺwkjfccchpupoyzptzuw|t~coza^gl-117-1.3.2/sounds/chaff1.wav0000644000175000017500000000767610145416156015076 0ustar cedriccedricRIFFWAVEfmt "V"Vdata~~~~~}}}~~~~~~~~~~~~~~~}}~}||~~}~~~~~~~}}}|~~|}~}~}|{yxyz{{{}~}{|~y{}|||~~x{xux|}~{yz{xv}~~|}}z{ywxz}}vtuy{{~~vtz~wxyt}zxyxzx~zz}ywx|}{}{y{|zzxvos}~vu|~wsysnrz{v{urw{ryywz~}xvtjp{~|~}z~xps{}zyvqs{xpnrw||tv{zroqqqu|xrt||rlowy{xsuz}{wtttqonmmmkfa]^_ab`\Y\aa]XUV[__YST[`aafihgggggjloppoqvxvvx{||}|{yx{}vmfca__aba`aa^alutnpronpokjpuw|~|}~yqptuqrxxnfktvqonjc]ZZ]\WNJLLHGMSW]emnqvzz{~~}}}yvv}}y}|usw}{wusniecbfnspnqvrmt~}vwysha^]^`b`[ZYWX`fhiifbaejopnnrxz}~||~~{z{xqorqnpvz}~|{zvt{~wstsopw{rc\_a[X\`^XTSQLIMTY]chiiklhegjlqx}}{|~y}|}|xvtqnqx|y|~y||}||~~~|wu{}{{v}}x{~zsqwzxy~||xpjd]VQPSZ\TNMJD@ADDA@DGGFHLNKHHKOPPT\a`[UNJJKHB=AMWXRT_ox{xw|{squz{xuw{~zwusmhhmold\UTX`c]W[dgbdouqhedbabdfghmvzrhgjlpy}zxx|~{}x}zysgfqsf\`iljgks{~{yxuj\W_cYMNTURPKDBHRUQPUZ]ahmj_WXWSRXafilrzzopuqaTRX^^Z[bedgrzwlgnwwme`[TPPQRRNFDMY^YTWdosvtpmprnlpsqs~{yü°|zwvzrhjnja^emjbbmsjZSYa_WOIFILMKJIHIKPSNFFS^]URV]cfd^UOMPUUQNORTVY[_djljjnwyyy}~~zuv}}{zyxxy~|{}~~}}|xwurpnkihfc^[ZXTOKJHGB=9;?@=969>CFGHIIGEEFIJKMOOKIJLKHEFJIGFIOSVWUTX^cca_^`dhihghiihfdc`^afjkjkotwtnlmrrojffgfa\[ZWQPU\adc_ZY[[[\_cedb]XUUWYYWVX]addfjosw|}~}}~}zxwwxxxy}¿}z{}{yxvtpnoqrsqmgdehmruronpu{}||}~~{wsrsvxvrpruwvtqnlmqvvsnlnqpkhkqtphcdimnnnmkhfegge_ZXZ[[[]_``_\[]bda^`bb_\ZY\_`__abejnomihjmqtuvxyyurpprttrqqrqmigggffed_WTUYZXURSVUQNMMNMKHGIKKIFC@>?AB@<9:>?>=<;<=<;;?BCB?=>=;<<>=>@BEFGFEDEGIKMMJILNKGIOSUW[`dgjpuwy{Ľ~~}}~~}}|zxvutuvwz}}|zz|~~~~}~}uooqrpoppnjd]YY\\WROPONMLLMLJGDCDFFDDEFFEECA@DHJHECBDGKKJKNPPPOPRUVUUWZ]_^\YYYYYZYWVVWVTQPSVXZ\_`a`[XZ_acgjllnppoorx|~~|{}}}|yvuuwwuuxzwronmiebcedcbb`^\[[[Z[\^__^\ZXVTSTUVWXZZZYXXXWVWXZ^dijikorqoqux{}}}|zzwusonlklllkjihhjlooljjkmopprtrolkmnnopqsvx{}{wtrrrrsvxz{{xtrqoooqrqrtutsrsssrqqrrrqqrttsrstttuusqpqrttssuwxxwx{}|zyyyyxxwvvxz|}}~~{ywvuttttrpooppqrsssssrrstuwxxxxyz{}~}|yyyyzzzyywvtssrrqpoonmmmmkklmlllmmnnnnmllkkkjjjihhhiijjklmmlllmmmmnnnonnmnooprsuvwwxxxxxy{{{{zyyyzz{zzzzzzzyyzz{{||}}~~}}}}~~~~}}}}~~~~~~~~~~~~~~~~}}}}}}}}||||}}}|||||||||||||{{{{{{{{{||{{{{{{{{{{{{{{{{{{{{gl-117-1.3.2/sounds/click1.wav0000644000175000017500000000114410145416156015074 0ustar cedriccedricRIFF\WAVEfmt "V"Vdata7VTet|zpknz~~|{zx{|{}}{}}uzyqwtee~~jdf`O?8=IYjuraQQaqrg_dqyvhZYbml`SQYeov{|{|ww}wofabhryyrlmu|}xrnmmpx~{}zl]TSX`fhgc\WYagf^VTW\`a^XRNOTZakt|~~{zyvsrstronpssqoopnhb_`bdcdhlopopsvy|{ussqmhededa\XUSRPOLIGGHJLMOSWZ[]`bcccehhgeegjlmnprtuw{~~xqnlkhecbbcefffhlnnnpsuvtsrrpmifdcddeinsw{gl-117-1.3.2/sounds/CVS/0000755000175000017500000000000010145416156013642 5ustar cedriccedricgl-117-1.3.2/sounds/CVS/Entries0000644000175000017500000000075110145416156015201 0ustar cedriccedric/beep1.wav/1.1/Wed Nov 13 20:58:17 2002/-kb/ /beep2.wav/1.1/Mon Nov 25 20:23:57 2002/-kb/ /cannon1.wav/1.3/Wed Apr 23 17:21:53 2003/-kb/ /chaff1.wav/1.1/Wed Nov 13 20:58:17 2002/-kb/ /click1.wav/1.1.1.1/Thu Aug 1 06:16:59 2002/-kb/ /explode1.wav/1.1.1.1/Thu Aug 1 06:17:06 2002/-kb/ /hit1.wav/1.1.1.1/Thu Aug 1 06:17:04 2002/-kb/ /missile1.wav/1.1.1.1/Thu Aug 1 06:17:00 2002/-kb/ /plane1.wav/1.1.1.1/Thu Aug 1 06:17:01 2002/-kb/ /thunder1.wav/1.1.1.1/Thu Aug 1 06:17:04 2002/-kb/ D gl-117-1.3.2/sounds/CVS/Repository0000644000175000017500000000001610145416156015741 0ustar cedriccedricgl-117/sounds gl-117-1.3.2/sounds/CVS/Root0000644000175000017500000000006310145416156014507 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/sounds/explode1.wav0000644000175000017500000007445410145416156015465 0ustar cedriccedricRIFF$yWAVEfmt "V"Vdatay~}}~~}}~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~}}~~}}~~}}~~}}~~~}}~~~~~~~~~~~~~~~~~~~~~}}~~~}}~~}}~~}|{zz{{zz{{{zz{{zz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zz{{{zz{{zz{{zzyxxyyxxyyxyyyxxyyxxyyulb^clqrsux{|}}zwrhXH?@FMSY_iw~}|zyyyxwvuuutssttsssstttssttsqoonljjlnoqsuvxz|~}rhgq~~~}|{zz{zyyyxwvuuvvusrrqldXPMOTY\_behknqtvxy{}~~}}|{yxxyyxwvuuutsssrqrrqqrsst{~{wsqolgb^[WUX`fgb]]^^^]\\\]^^]^_`aaacdddefgijklnopqsttuwyzz|~}|zkckw}»Ž~|zz{zxwvvutttssrqqpnmmmlkjjihihc\Z_fjheddcaaa]UMLTaji]PJQ^eaXRLD>COSNMYd^LDLWYWW[^_`befghjklmmmnoonnooonnnooonnoonmmmlkjiijihhhgfeddeecbbccbbccbba``aa```aa``abbcccbbcceeddefghhiiijklmmmnprrqrtuuuvwxz{|}~~~»Ǽpqzztrsuvxz}~zvqmjgda^[YVRNLKD6%#.0,0ATYRKJKIFDC?7*"+/3@Q\[QHB>;9;@FKOT\hu}yvsqomjgec`][XWUQLGD?7,"#).149>BFILORUX[]`ceghjlnpsttu{uljotuuwz{yuqopqrrrsttssuvvuuvwxxzzy{~x|zzyvtrqpomlkjiijjiijiijklmmllnolc]bq|uu~¾}yvrnkheb`^[XURME9.'&*05:=@DHMQUY]`cehlprsux{}~zxvtroljhfda^ZQE:69>ACGMRUY\`dhknqtvx|~zxvsqonh_WYbjkgaVKJYmrdRO[ebWR[jodQEDIOT]fkifipwy{~zwuutqnlje[ND@CHMQTX\_cfimrx}}|mlv}|{wsqnljgdba_][YWVUTUUSQPQOF:7;>80/8AEGLRWZ]bgkosx}|wpkkkhddfhiilortuwy{}}zzzyww{yw|}vqwyw{~{urrrpmlkjhd]TPWeqqeWQVcosqopstrqqqrrqonprodZ]m|~o^TVbtzuwwzxtrqrv|{vux~}tjfinrux{~}{xusrpnljhgfecbba_]]^\XTRPMG@>AFJKMRX^acgmquy|~{xutssroljkgZKHQ[YOGIPVY]aehmqsuy~~yvsqomjgec`\ZZWJ<:HVVH:68=AGLPTX\aeinquy|þ~}|{yywuttsqnmossoicdkpmedp~{|~{z}{wx}yvx}}rhhtztpkjkllov}~xqmnlbRFGQYUJDKZa[NGKU_dc__dkomms~{xurpnljgdccb`^\ZXWWWVVUTQNMOQQME90/BFILORUX[^adimpqsvz}ÿyy~}xxƾzy~vnicYH8,(*.//0268879<=90'"&0:>;65:CKPSV[aehjlortuwy|}}{yutwxrkda_^XMCAHMKFFHF;0*'$!!'-257;@FLT^jv{uqnje`\YVTRPMJHFDCBA@@???>==<6, (,+,2;CLWclqv¿~|ytmf`ZTSX\YSRW^dinrvzþ}{xskaWOLMPUY]aeinsvxz}~pikprtx|ʼysmhb]YUOKGDA><:7420.-,+***)((()(&!  !+379:>EMUZ]_fowz|xvz{vuvrgXMKOTX\agkmosw{}~ysmjjlmjd`bhjga^`efb`chhc_bhlkiijjiijjijklmmlmnnoooonlkhc]\bjkd]\_bdgmsvy}uqrqos}}{ywsmhc]TKGJQUUV^m~}{ywusrpnljhgfecbbcehgdchqzzrlknpld^\\]\ZXXZ\[WUVWWUTTUTUUVWWWXZ\\]_abccdgjllmoqstuxyunimyypkmpokhfb]]ftwpu{wsqolgd`]WMC>?B@7/.49<>@BDEGJMNOPRTVXYZ[\^_`adghip|}xwvsojgfed`[WWXYYYXVRPQV\^[WW[\YVVZ]ZRKJLLIEEIIB=AKTUTVZ[YY_gkh_TNPZiw}y|}ux{wy~ɽƲysrpg_^cfd`bhmnlmrvpbVU_lsux¼~}{ywutrpnnlkjigfedddc`]\\ZVTX[ZUSW\[VTW[_ba]ZYZZZ[\\YVQI?88:9537>DFHLRWY\_behjlnnptwxz}zxvusqomlkjhgfecbbccbaaabccbdhmpsy~uprwywskb]`fie`][WOGCDEC==CKRVY[YUV]glnmnpuz|xtv|}wtz|yqkiijklmmmnnopqrrqrsssttuvvuvvuuvwxyyyxxyyumc]am}xspmlpzwogbchic[Zakqssplkqy|tjgn{~}}~~ztokdZRRX_cglsyzz|zz{pmosuttuwyzz{{zz{{{z{{{zz{{zz{{{zxxyyxwvuuuvxxwuy~zurpnjfb_^]^\XSRTSPLIFB@CJMKHJR\eijjiikou}~~}ȼ}xxyyxw{~|yxxxvtsttsrpnmmmlkjiiijkmnnnmh`YZ^_ZSPPONOPPMKJKMPTWVTRRTVY\`dhjloqsvx{|}~~}}{zzyuqomjgdcb`]\]]YUV]de_TJFJOPMIGHKMPRTUWY[]]_ab`\YXXWUUX]enuz~{~~zxwwvtsuz~|z{|{|~~vnmrvtqqtvusty~}{{~{~yuuvvsqrvxvrqu{~xuv{|y{~~~}|{{zxvtsrrrqnjhilmljgb^^bipttqprw}|{|}ztplhedgkoqsvy{}yvz}sjc`befb]ULIP`lokggjjgeefggecbbccbbcddeeeddefghhgghjjiijklmoquyytlecfihhlsxyxx{{yzz~|shaadeehnsvy}}{yxwvusqommmlkjiiihgghhgghhghhgghhjjiijlnqu{|xspnkfb`abbbaaadgijknrttstvxxxy{}|{{}~{wuuvvqjefikmqx~Ŀzwtoib\XVX_daYSUZ]_dknkc][^cgkr{so|ujb^]adffilopqsvwxy{|}~}}~~~}}~}{{|}~~~}|{yyyxwvuuutsssrqqqrrqponnoonnnoonnoprrqpooqtvwy{~}|{yxwvtssttsqooqrrqqrrqqsttstvwxxyyxutx~~~~}|{zxwvuuutrqrrpnmjd]XZ^_\XX\`fntumebfmqqprx|xvytijrwuokjkjhginpnhegijiijjijklmmlllmmoonmmmnooonnmllmmllmoqu{{vspmjgda^[YWTQNMKD:1+)),03435;AFILPUX\_bfjnqtvxz}¼~{xvsqoligeb`_^][YWVVVWXXXWVVVUSQQRRQPPPONMLLLKIHE@;5/*')/7>AA@@ADGJQWZYVV[_cgijjnxtoquxyz~{yz}|vqnje`[XWVTPMLLMKGFFGIKLLMMMMLLMMKE?@FKMLKKKMU`hhc`cjnnmmmnnopqrrrsstuuuvwxwvux}~ƽqaVXcmmdXNHEEGGGHILOOOPQTWYZ[^cgikmpsuvvy{}|xuroljhfda^\]^^[VSRTVXWTOJHGC:0,-0359@GOW^dkrzŷ~zulaY\elmic\XX]cffegijklmopswz}}{ywuutsrpnmmmlkjiiihgghhgghhhgghhgeffaYQNNNNOPONOTY\^`djpuz~~xsnje`ZUSQMHC@?;7312331//.,**++*'$"!#'-488425:64458>FMQOHA@CGIE=65ATbcXG838@FGIPY]ZURTWYZ\^`acglqtwz~}ypf`_bfkmlkkmonkhhp|wibhu~|{|wywrw|}yohgjlmmnqv{}xtplheb`^[XWVTRPNLJHGGGFDCBA??>>>??>=<<;9887530)"#""(-3793/-,)$$'&$$'**)*-/0025:?EKPTVXYY[_ceglrwxvtvz}~~}}~{snnonic^]]\YWX[^``_^_bdeegjmnnptwxwvxz{{{}~}~~}}|yvvtqnmnnkhilnmjikotzxqmmmlhc^[\\YTOKIJMPQOKFAADJPRQOOPOKD>=AFLTaq}{vuzƼ|xutsqomkiihfdcbejmlhc_[VPJGFHJLMPU[`cejosvy|~}{zzvogbcec]UPOQSUVVWY]`aaabehjihhjlmmoqrrqqrtuuttuxz{zz|~~}}~|{|}ztnigecccba^[XWWXXXWUTUUTTUWWVUUUTSRQQQRSTUUSQQRSTUUUVWWWXZ\\]`cdddeeda^]`fmqsuvvuvy}|xpha\WUX`kqmcZWZ`elqqmgdeiov|~{zyvrnkjigb^\[ZYYXWWX[]\YVWYZ[\^_`acfillmoqsttuuuttuutsssromjimt{~{xuqpsw{{|Žsiedb\UOLKKJGCDLX_^ULHKR[dimoqsuvtsuy|}}~~zvvxyyyxvtrsuutrrsuvuspopsuvxwwwxyz||tmif`ZUPLHDA>:52/,)'&%$###$%&')+/4899:>?ACFHJLORSTVY]`ceedc`^\XTRU[`cegikmquy{|~ztolkmolbWQOLHHLSTPH@;9=BFHLTanwzzvrruwy}}}{{}~{xy{}Ŀ~}}|{{~}xtrqpomlkjgeb`_^ZTNKMQRPOQVYVQMMNQUY]`bbdhmqtvxz|~uoouzztld\QF?=@HUftvl`ZYWRRVYVQRZab_]\^adgjkmnnnopqqrty{xutwzzvssvyxvrqty}~{yxy{~~~zvtrrog^WTTSPKGFEC?:7787410220.0465349?A>:89;;:>KY`\RJKPTW\cimorx~þzutvxxvtqnjfdejoqnhegmrtsrrtx||zywtpjc\VQNMMPTVWY]aeilmmoqstvz~zwx|~yvz}uw~uqrrnigfeejnng\UTY^a`\WROQW^dijhgiovz{{{}}{vplnrtspoonicadgjllkhd`]\\^]XQMMQUUROOPRTX\_bfjnqsvz}Ľû~|~}xttvuqmnqqmigghiijmpqqrvzyvuzytsvxz{{zyy{|~yqnpty~~zwyzspruupifiqurkb[Y[`deb]YY]bb\RJHMWbhe\TSW[[Z^iruphcbekqsrqtx}}{yxxxtmd^_bcbdjmib`chjozxqt{}vopz{wsonnkdYPLKMQVYYXXY\`bccejpuz~z{}~{vqomjjknrtsqpomllmnnooonnoruuqnorsromljjlmnnlhecfihc_`cedbdjpux{}}yyzzvrpqsqommljhfa\Y]bca_`bb`^[XTRSVXYYXTPMLMKF@=?DJNMD925@LSOF?@JXcf`YYcqz{wssvz}ytohb_^][XUSQOMKJIHGFC@>?@>;=<:9:<<;::999:;;;<=??>@FMQOMQ[fmmlnqv{~|}}{wspmkjigfec`\YY[^^[XWY\]\YWY]`ba_]^adghhhikmmljjlnpomlmopqrttspmjikmnnmmmoonmmnnnmlic^^`bceinsy|{~{ridcdb]UMGB<7458974359>ABEJPTX]adgkosuw{~~~~~}|{zxvttuwy{~|yxz~}zywspoqvxuojjosspmlnprrqnjfddhmnljlnljls{~}~~|zz{zxvtsssqomllmmkigeba^[YYZ[\\ZXWY\`ceedddehknrttqoorsqooqsrolihhikje`]^_`_\YVUWZ[ZWUTSRPQUY[[ZYXVVY_dec_]]^_`a`_^[XVW[`ca^]ahkic^]`cefd`\[[YWWXXWVY^`]WSTY^``beggecdgjjigghkoqqrvz}~|{zxtojgfedbaa``acehjlorux|yrlhc]XTOKHD@<85210/-*'$##$$###$'*-0357:<=>@DHLOQTURLGHPX[YVX_jsxy{{ywsnjilpog]XY\][YY[\YRLMRWXXY[]]\]bhmonmlnrvxy{~{vqnmmmnooligec`^\[[\\\[ZXWWWVUUVVUPIC@>?ABCDFJOTY]cinsvy}|zzytlecegfc``befdbabdfhhgfefimonljjkmnnnopqrtvxz{|}~~}zwvvx{~~~~yuqmjgda[TMHEEDA;53479;:;?CEEA<9;AGJKKKJIFCCGMRVY\^`aachnsvvtqpruxyyzzxsqrrqpwþ}zxvusqomlkjiijigecbba_^\[[\[WMC>AHLJD?>AFLQTWZ]aeilnopsy~}xqjggijjigecbcefghhfedefghhggijhdacjs|}|{{zyyyzz{}}{xutvz~|xwvtqnmllkjigecaaa`_^^]\YVTTUUUTTUUUTTUVVVWXVRMKLPUZ]^^][ZYY[_cddgjkifehlnoszzwvwz}~}}~~~}|{{zxvuuvvuspljjklkjiijjigda^]^abb`^\[[\\[[\_bdc_[YYZ^abccejqx}~xnfelu{{vqmiecbbba_]]\ZYWVVWWWUTUWY[\\\[[\^`cegijjhjmqttrrrstvx{}¾}vtx}~{xxxz{{}~zz}~~yusrrsttqlijnsuqkebbdhklkhfgiihhilorrqomllkjiijjjmpqojdbejlicaeihc^]_]WPLLMMNU]bb^YVVY_ba\XY[[YWX]djoqojd``emqoje`YRQV_eda][[\\[ZYXXXWVVVWWYYXVUVX[\\[\\ZXWVY^bddca``aabdedb_\YVVWZaiqy~}{{}{snoty}ý~~}zvsstttssrqqsvwxy{|}}~|{|~~|zxvtsstvxz{yuromnrvxxwvttsqrtwz|{xusrrsttsssttuvutttuvvuuwz~~}zwvwxwtqqsvxxwtpnptxzzyxyxusv}{vsqlgc_[VROLGA;9<>><879:82*"$-4750./26:<>??>>@DJQVVSPNORW\`cc`][\^`bekqsoe[TRSV\cggea^]_abb`^\[ZYWVVWXYXVUUWXXWVVWY[[YWWXYYZ[\\]`ddca_]\\^bfhhhgghjlnnmmnqtuutvz|{|}{rmlnrw}~|zxtpnnmid`^]]]\XTQPPQRRQONMLLLMOQRRQQQRSTUUUVWYZ[\^``_^]]][Z\`ba\WTTUUVY\^`bdhmquxywutvy}}yvtspjd`acddca\VRPOONMKJJKLLLKHFFGJKIGFHJLMMLLNPQQQRSTVWWXZ\]]]]^acedbaaa`acfijjjlpv{}~~xvy~{z{zxvtsstuuutqnkjjlnoonljjlnopqrrqqrtuuwy{}~~}}}{yvssv{}zxvrnkhedehjigecca]ZYYXVUTTRJB?AEGD=75:BJMKFCEGJKJJLPU[aefdcekqsrsx~|zxvsqponnnmkihhghgghjkifeglqttssttsrrrstttuwy{}ysnjhfddeedca^[YWUUTTUWWTPMLLKHFGIGDA@@@?>AFLPRQQRUX[_cglprrqsvz~~}{yvsqoligda^[[^ab`]YUQNKJJLMLJJKMQUY[]_aabfjlljjlqv{}yy|}yvvz~|zxvtsrokiiijjigfeded`[UQQV[aeeb_\ZXXY\`ehiijjigeeglrvxz|{tnlou}xnd\WY]beecbba^]`eiigeeggea][\^`a`_^^]\\\[ZYXXZ\]]]\ZXXY[]_aa`^\\]`a`^[XXYZ[[\^`bccegikmoqstvx{~}}}yrmkntyyurrsqia_bfjou{~}{xusrsux{}~zxy|}|yxxy{|}}zyyyxurqsuvvx|{vsqnjfdejpssoie`[WW[`cccb`^\[\[\^`bbceghjmqtvwxz{|}~}}~~}}~~|xvvxz{{|}}{y{~~}}|ywuttsqomjgec`]ZWSOMMLLLKHFC@@AA@??@@=:89::7448>EJLORUX[^abcekszzx~|ywx}~uporuxyyxxvqmiimrwz}~}xropsvvuxyoimvyogdeilnorx~{tlggjosuvwxy~~{vtrqnje`]YUQOMKGCA@>;879@EKPTX\]]]^`dimnonnqvz}~}}}{xuttssttsqoopqsttsroliijlnptxzytooqstttutqprwz{{~}zxvsqqrqnje_YRLJMRVWUQOQUX[^chnsvwxz~}{xsootxwtuxwrliklje_[YYZ[\\\]`bdeb]YY\`bceimmg`]^abbchr{~{wqkechnqpmjihhhgfedddcbbceedcccdeeegjmnnnopqrrqrsstttuwyzz{zz{{zzyxxy{|~~}|{yxwvuuvyzxrjedeedbbehlpqsvy}|ywutrqqrrqnljigfefghhhgfc`]\^aeggfedddefgghilnonoqsttrqrtux}}|{z{zxuronnoonljjlmmmljhggghjlmmmnnmllnnnopqsttsstuuuvwxyyyz{{{zyyz}~zxxyyxwuttrnkjklmmllmmkihhggghhikmnnnmibZW[bhjiijmpswxxvtuy~~}}~~|{z{zxuronoonlkjiiigfecbbccb`^^`bbceilnoqsuvvuttsqnjfdccbbb`^\[[\\ZXWWWXZ\\[[\^`aa``bccdfhhaZZdpvroqw{yslhfhknqtv{ž}zz{{ytnjhhikmpu{~~}~~zwvuuutqnljiijjigfdccb`_^]]]\ZYXVSPMPW`iopnmmmlmoruvvusrrtx}zy{}}ztonqttsty~{wqjcadimnnmjfefiotxz{{xsnjggjosuvvtqomllnoonnopqrrqrrqqrsuvvuuuvvuttsttsttqi`^gu{uqlhefimoqsw{{{}}yrlihhgda```^\[ZYVTSRQRSUUTTUVVWY\`ehiiihggjnsvwxz{zxvvwz~}{{}~|zzyxxy{|~}yuqnjfb_^^][YWVVTQMKJKMOU\dlrrlbYTTX^enx~zxy{}}{wuuvvuvy}yuv{{xwvtqomllljgdccddca^[XUQOOPPOLHC@???@BDDCBA@ABCDDA>;::;?DILNPQQRRRTX[ahouxuqmjikotx|~~zxyzzyyz}~yvsqpnorsqmjjlnonljhfddegijhda^[Z\aiprmgdcb`^^bgjmrx~~~~zwuvy{zxvsqoopswxwvuux{}}{ywx{~}|{zxwvuuvvusrrrsuvusrtx}{vrtx}~~}}}~~}|{yxxyyxwvuuwyyxvsqomlmoqqponnoooquyzyuqprux||yustvxxuoheddfhiiihggfdcehiihhijjiiijklmmkiijklmoqssrpnnopqrrqrqnkjjihhjlljgdccb`^^_`acddb^[[^aa`acddbaabcehlptxzzywuuvy}~{yxx{~~}}}~~zyz}{{|~{xutsssrqqrrrsuvutqnljiikmnnnmkihhgghhfdceggda``aaabcb`^]]_abb`^^`ceggea][Z\_bdeedca``beggfedddcbbcbaabdgjlnoolihjllkjjlorrqnjfdgmqssrrqpmjgeegijjhgghiiihgghhgghjjiijklmmllmmlifeegjotx{{zxvtrqsvy}~|zz{|}~~}}~~|zxvsqqrrqomnqttqnljiikmmlmoqqponnprssttsstvwxyyxyyz|~~}|{|}~~}}~~~}}~~~zwtqnmmllmopqpmhdbcdddegikjgdddfhjnsvvvttsstvwxy{}|xutssttsqpolifedb`^]]]\ZXWWVTQPRTUUUTSRSTTRPOPRUY\]]\\[YWVVWWX\`bba``_^][YY\`dedbaaacddehklljhgimqstsstvxzz|~~}{yvuuvutqnmmnnnmkgc^[\_bfjmnmjgghhe`^^`dimoqsttvwyzz|~woknv}}{{|}~{yxxuroligedb`^\[YWUTVWVTSRQQRRRQQRSTWY[^`bca^[[^aegghjlnprrqpomlmorsrrsuuronnmkihhhikmmllmmlkjhgghhjjihhgghjllkjiiijlnoomlkihjmqststsqnmnqttrnkjjlorrqomjgeegijjklljgdcccdeeeddegijheddedbbcfimonljjkoruwyyxxy{}~{xwuttsqomjiiiihfdccbbcefghhhggjnsw{}zwtqoligedb`^\[ZYXXXWVVVUTTVWVTRRTVWWUTTUVVWY[]`behjlmoqsvy|}{zz|~~}{yxxyyvsrrrsvy|}}{yxy{}}|{|}|{yxy{}~|zyyxxy{}}zyy{}~|zz{}}{zxvttuvvtssqponnnoprsqomllmmlmmllmnnnmmnprrqpopqstuuutrrsux{|zxvvx{~}}~|{|}}{xvtsstuwyz{{{ytnjijkkkkkkklnnnmkhfffhijigeddeedefffeccccbcdfhjjigedefghikkkihgfeegiihgfedccehkllkigedegjkkklmnonnnnnoprssssuwy|~~}~~|zxwwwxzzzwvuuvvutqmllllklmmmljihfeccdefedcbbbccddefgfedcdfhhhhhijknprrrqpprtwz{}~~}~~}|{|||||||{zzz{|}~~~~~~~~~~~~~|{{|}~~~~|{zz{zyxxxxwvuuvusqppoonoopponmllllllllllkjjiiijjkjjiijjjiihgghjkkkjhfedefffghhfedddddefghgfedddefghijkllkklmoqssrrstvwwy{}~}|}~~}||{z{}~}||{zyxvuuvvvutssrpnnmnoppqrrrqqooorvy{}~~}{{{}~~~|{zyxxyyxxwwwwvuuvwxxxwwwxyyzzzzzzzzzz{}~~~~}|{|{zyxxxxxxxwvvvvvvutsssttsrrstuvuttstuvwxyyyyyyyxxxxxxxwwvvwwwwvvuttttsrqqqqqqqqrqqrrrqrrrqqrrssssssrqrrstssrqrssssttuvvvvwxyzz{{{|~~}||||{zxwwvusrrrrrrrrqqqqqrrrqqqrrsstuvxy{||{{|~}|{{{{{{{{zzzzzzzzzzz{{||}}}}~~}}}~~~~}}}}}~~}|{{zzz{{{{zyyyyyyyxwwwxyyyxwwwwwwxxyyyxxwxxxwxxyyyyyyzzz{{{{{{|}~~~~~~~~~}}}~~~~~~~~}}||||||{{zzzzzzzyyyzzzyyyyyyyyyzzyxwxxxxxxyyyyyyyyyyyzz{{|}}~~~~~~~}}||||{{{{{{zzyxxwxxxxyyyyyyyyzzzzz{{{{{{{{{|||}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~gl-117-1.3.2/sounds/hit1.wav0000644000175000017500000001467010145416156014603 0ustar cedriccedricRIFFWAVEfmt "V"Vdata}}}~}}}~}~~~~~~~~~}~~}}}~}}}}}~}{zzzzzz{zzzzzz{z{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{z{zzz{zzzzzzzzywxxxxxxyxxxxwxysf^dorsvz|~|xrcN?AJRZdv~}{yxxwuuttrsssrssssstrpnmkiknpsuwy|~|mfq~}}|zzzyxxwvuuvurrqk^QLQX\`dhlptwx{~~}}|zxxxxwuutssrqqqqqrrw|wrole_ZVV_fd]\^]\[\]]]^_``bcddegijlnoqstuxyz}~~{}jczw½Ż~{yzywvutsssrqpnlmljjhhhc[\eifdcaa`XMMZifUJSbaWND>IRMSbYFJWXW[^_befhjlllmonnnonmnonmnnmllkiiiihggeddecabbbbbba````_````abbbbbcddcdfghhiikllmoqqqsuuuwy{|}~~ȹ¿qt{zsrtvy|~xrmiea\YUPLJ?*&/,5NXOIJHDB<.*/;Q\TG@;9BHNSY^beiorsw{}|xusokhfc_ZO?69?BHOTY]chlptv{~yvspnh\W`jiaRHWojSQabTVhmXEDLT_iifmvy}{vutqmjdVF@DKPUZ_chmt{u|~{vrokgda_\YWUSQMHGHC99>;6=GLPW]afkpu{xutpllmllnooooolfcfklnquwy{~xwwtpleaejibTLXmmZR\b_aknbUUZ_fkjjnonv}||xvpdWRUY[\_cglpuz}zlt|{xsoljfb`^[YVUTTTQPPF98=6.6AFKSX\cintz}vnjjfcehikosuwz}}yzxvyyx|urwy}xrqqmkjhcYPWjrdSScqqoqsrpqqqonqpbYh|xaSZoyt|v}urps{~xtx{nfiptx|~{xtrpmjhfecba_\]\VRPKB>BHKNU]aelrw{}zussrnkkfTGQ[RGKTY^chnruz~ytqnkgda\ZYL;?STA58>ELQW\bhnsx|ý~}{zxvtsrolpsogbjohds{}~z{~xw~wv|}nfrzrljkknx~|smmfQEMXQDK]]NGQ_d`_fmmnz}yuroliecba^[YWVVUURNMOQL@10DYUDAKNMPYaeehpxz||ywttspni`SNW`]\k~qntv|tllfZQPOPU\ellnu||}|yuomkhecaa^QFFG>6;?EJOV[\]agkosxy{}vzzwtnkhfcaa`^\ZZYWWVTUYZYZYWYUFBYqmWHJSZe}xv}j]f{}ndacffft|{ywvuusrrqpnfVKMTXZXRSas~|pfdjsx|ĽǨtpjVJNQOPQQSST[d]I@D@9CU\^empmaMFUlsk[I?CNTX_flqqidkqrrvyz|~{slfWD82-+18;>CHKOSW\_djoqsx|ž}x}|w}˿{ztkdU?-(,//05878<;1%#.;<65>JPTZafilpsux{|~y}utwrha_\QCBKJEGE7+&" &.37==;2# )+,5@L[iqyþ}zulcZSU[XRU^fmrw}»}{wnbTLLQW\agmswy}ogkoqv{Ǿzsmg`YTPKFC@<83121//.+((&"&3=CIPZcfgoz}yvsqngdhjfbb^P?79>FNSUZbiqx}|{ysopoia\[\]][[_floquy{~{riccjmjkv}}{tvy{~ǽ~vng`[UOIEB?<85310.,,+*)*(#  +58:@KU[^fry|yv|zuup_NKQW\cjmpv{~ûyqjilkd`eje^_ec`dhc_ekjhiiiiiijlllmnnoomkib\_ii_[_cgnuy~|qqoq|}zxtlf^SHHQUU^t}zxusqnkigedbacgfcfr|xnjnne][\[XWZ[WUVVTSTTTUVVWZ[\_abceiklnqsuxwnirymlomie_\fxvp~}xsplgb^VH>?A9./7<>ACEILNORTWYZ[]_`dghpzvuqkfed_XVXYYWTPQX]ZVY[WUZ\SJJLHDHG??LTTVZYYbjfYNQau~yuzxxνɽ̳yrpg^`eb`gmlmsrbTZktvº~|yvtronljigedcda]\[VTYZTTZZTU[`a\YYZZ[[XRG;79737@EHNUY\`dgjlmquv|}yvsqokihfedb__`a`_`aaaeknrwulhlokbZ[ac`\YTNLLGADQ\cea^fsvrou}|y}}y~{z|yuponhehjiimpoptrhcirtw~{vpkhhieabfhfb````_]]cgdachkjfddddeda[RJIIFDIMOPSVY^bgknpqw{}~{ywsomlkihgeddedccdddflpt}{qqwxsh_`gga]YPFCEA11^dbiiT:397:Uywfdu{woLGcdVfyoVOgo_TLSbfhsyqf\MI_y}{yzry}io}vgi|ska]quxxqspddrsnvtsѲxƩyoxy||}~slb[]dpfVg{kqxqm}hIMmxd]s}r{eZav|kdz{mw|w}bMQn|zn_]d_U_pkbq~lW_utW<:SjfTQixpo\O?De|vgai}|gkztfmh]h}tqsvz~n[ON[svpyyzpjhs|supa]mͬnns~fdzwsyvdYgzb_poYUbstcQMNIPqz`_kw~vWASvt]HDZrrc_l||qn{mcd]R^~wc\gtlY_nQOf~yd_vz_UW^j{}ld`Z`vtepeT]{||o]Xijhpkfvn\TTdzupxt\KGKQZdijox}vru{{sjgjmol]H=>BFGO_mlj{~ica]^e`OIZusU@@IPYhqolvxfq±}~u~usq|sx~|ta`kzsltykgq}paVTVUV_lyqpvifr|^HLbv|xqljkmvĴv`P@15Qs{ohhnu|xrs{ummt{|reXQXdmu~ȸtbVSZemuq^QORX_deaak|}i[Zh~wruy|}ronjgeejxpkwusqovqdcfhjp{|yyrt{ymfhqwsk`M8' %3==;AM]ozwngfmwzupi]UZi|ûq_[ds~~tnqronpog\PLT_gkmos~|np}ytngcfnokox|{wngcaa_YTXdtvzy|v^G<:AKPS[b_VSQNPYfpusk_UNGFSeh`bjh\Xaknqwzvtxytnhfjns}rjkvxzwszztz|rjgd[RRURR_pupqwwnd_^\\`c]Zdomc_afnv|~vplf\VTUTNC>BJT_c_\emmrpc]^cis{}xtxlbafnsutmcZWURPRTNFA;6>Telmjecfhd``ehkr||uuz}}zrgZSVbq}|tppoow¸ypq~|~znfjlcVONMR\cjnnjksuojihcZSKEFLRSQMKLRUSU\acinmhfhllijuzomliny¿qggrwngbbflsywrni^TOLHFHLMHFO_nvsqlfju}yusw|uopvxtrv||qhfmtrj^UU\eqľĿ~si_YXUNKOV]ehc`cgaUNMD2(+/16<921327HUXXYYUJ?:;<:;AIIGKQSUWY]a_VPQVXUUYWNFL[eb`edTMW^YVWX\ahu}pea]TKJF5'')!%%'.2//8DKTamsw}xqptz||Ÿ}tgYPMKJRYUMLNF:9FOJDKTSSZ\WYcfep{wwwyrc`hkb]dbN=@MPLPXXNFDCCA<2/32*(/59CQ[]bkrsu{Ⱦzwwwrlkuzv|{pls{xqong_ZXW[fmkipyvqzzka\YZ_c`YXXTT]eghhb\\ahprolottwyy~yh`egcbgls|z}}|}|vooojhmx~utwvqptvwz|{~|usnhju}zrkaPBDMONWb]NIU`^\gxrlqtx}rosuu|}snmkfdkpjYLLXaacrxtpib\WSRXdotv{{tieiqyxrjYJHORRYcc_`emtww|zz|thcc`[Y[bmuutusnlmos{xp}z_[c[KOdspbYSKCEOX^eeXF<:748CHD@EVfjly}z~yrrvxz}uhltpgiuzl_eqrqyvw{y|}zodhxypv{mlyzyzmaQ>7;<3)&.797759>CLSUVVUTTPOWbikqx|roqppuytpppkffnzziXW\XOP\c\NA:9;@GSbpwvt{|wl_^kw~{y}|}wxö¾tnnh^XY[SB652)  /;;533-'%(1?KKEGTdnwŽ}umhmyxjbl~uis|iMIVTA8@KOVdomghmkcalxvnkkdZWXUMEEKS[dhd`enqps|xojgd_ZY^gptm`YcnfPI\uxjcmxwm`VPNI>44;CIQ\ixyqqrngdb]TI>>M`hfa^`hokdo{zygZWXTMKOW_`YQPY^UHFMNB41225APXWW^n{yhZ^mtrt~}wssuux|zv{~Ǿyx~}{znhdbehfb_ZRVguqdi|c^o|vgcnul_\`\UZfkc[^ktrjkxƿxjdc\QIFFKTZUPOLFDHMLHHPVVSTX[YTQTWTPVbigaZQJHF@716DPODCOamojipvtldbejmkijnt{ĵ}~vvyvpp}xvsmgb``b_RC>GTYUOQZ^[^iqj[PLMMMPTW\fqtm_QMT`jqvxx{~ww¿¼}y{t}tv{tq}om{qmzxmd\VYenk_RKMSUNIMSRMPX^afkqv{vbMHRYVOPXclsx}ºпvppl`TLIE?6//4:;8302:>2** )( "&**+3>EN]oz~~wu|}ladonZ@6DSSIDJQRPRWZRD>JWVLIOVTKA>ACELU^fpz|sjmz¸ſƺtjfimlgc]QADE5'.<>65CU\\amvuoiehrs`D446/%*,)@HB?GS_c`]_fjjksxtrty~̿Żqgdeea^chifdhpvsmpztheg`TNPSOGACHKOQQOR\jspigknorsojn}}~y{ɵ{zzvqusfhnh\Xbmi\ZirgQGO[ZQHCCHMONMMNORZ`[OO_nmc`dkpsqi\QKMTWTONQVZ[YY^flllq{zqq{}unfa`_\[ajkc]_dd^[^ef`XYeruoihjpwyp`UU_lvz{zusw{zzwsqojb^bfe`\\`fifbckqpjhox~|rou}~}umgc`\UOKHFDA<9:@HNOLHKT\]XOGHQZZTLGHMOQUXUSYdib[\frwwtrrw~~{uppstojlstk^Y\bfffjmgYNMRVX]abbfmtxyz{zula\`hqx|}{wspqy{uyzv|}yusrssohbbfhdcehea`bejpx}|||}xk^[bhhd^[Z^diieaacca^ZTJ@966530---+&""%*.-($(3=CEDDGLRTNHIPQNLS`muupihnsroosx}~}tmlosqmlqy|xvzö}upqusmiihfdc`[VTSNE?>=;5-&%)-+% $*/1342-**-1445652001/*%&++)*1;@BBAAFNQOKHGGKPRNKNSVTQOOMKPY_`_^bilg\VW]^WOJGC>6018<958@KSSMJOVXXZ_ejlkfcdgklhcbgmpoouùxttutqmigdbbccded_ZXXZZ\bjrtplnu~ývjca_WKCBB?:631,$   %,379:?CCEJQTX`jmhcdhmoonmlhc`bgmmgcdipssstvz}ytrrpmieccdfgjouyyxy|}{wkabmtsqomg`\ZZ[^`_\XSMFDDGJLKJNTZ[ZXWZ`gllkifcbabca]ZZ\^][[`hmnlnu|yx}xrpty{ww}~}x|~yx}}z|}wlgmx|tf\[_ba``^[WSPRRMD;7;AFIKKHDCBBDKOONPRPKIKPW^a]ZZ]binomklpsv{~volpx{~|utvxzyvrqv~wpopokhghjlib[VSOKHJMLD:31242/2:CFEDDEEDEGKOQPQTUUVX\cgjmoqsx|upnkdZTTX\\YY]djovþ~~|uoljgc^XOFACILICABCDEGKQUWZ[XOFBFLLECEA5)! #"!""""#(/5778<@FOYcjqvy}zy~~~~{tppu}xspmihmrspmkhiovz~}{xvx~xqpu{~~~}|~}zvsu|}{{}|umfca_^_aba_\[XSKDBEIMOMHB@BEDA@BGMRWZ_ccbbdgihfhnstw||ywvvspoqqpmjiihhimsz~~zrkgdca\UMIGEB?@CHLNOPJ?7:AEC>82138>CGJLMNOPRSSRSUWUSQOMLNRW[[XWXWRMNSVSOPUZ[Z[_hqwz|{wvwywsquz~~~~wuxǼzvqlknog[OGDFLPSVXXTMGCDHLLOV^cdaZUTW[_`^\ZZXXZ^aaa`_``_]YVUY\\ZY\agiiiikllmqv{~}{{}}|}|wqnnry|{vttwwrmmpqple_]]]^`ccdgkljfcbfkmjfehkha\]chifbabb^ZYYYWVVWSKFGIIE@<;;7212320-+-132.)%"!"$%$ %)+,--/2224;BEECAA@@CFIIJMQTSQOMJKMPTVTNJNQLEGQWYZ^cedflruwz~~{xvwwwsmhghikllifeeec`]\\\[Z\^`aaaaa^XROLJIKMNLJHFC@>=<=;7531-(#!"$# !&&" "$$&(*,28<==<;840./39>AA=82-)$ #(*)('&$! #')*)*,./../23469;=?ABBBBCFKOQSYcnwľ{ywusrtuwyzwtpljjkklnqrojgeb]Z[_ejmmllmmosy~~{zzzywutuvxy~~}~~~~{|wja`bb``cikh`VQPSUTQONLIEBBB@>;99::732358::87789961./367669>DHIHIKPTWXY[^_^\ZZYY[^^\VRPPPNLMOOKGC@?@@ACDCBDHJHEEGLRY_dfghiihgeefjmmlmoqollortw~zsokhd`][ZZ[ZXWWTOMNRX\\VPLMLIFCCGNQOJJMOOORUVUVWVWZ_djosx{|yuv{|{||{xvuuvz|wtrplfcc`[VRPQTVRKGGHHJID@CGFA>>=:851,++++-034569>CCA@CGLOQRUX[ZVSRTTX_fhikliedfhjmrtuwzxsqtxy|}|yvtrmiimopswwrnkjjmqssrqomjfcbdefgebadgiihebbcehjkiihgdbbdksuqkhd^_fklloqomorv|~}{zywtsromjhhjnpnjilopruwx{~|z{|}{yvwzxsojfgkh]SPRSUWXX[\YUQOOSWWXZZVSRPKJQY\[[YVUY^^[\^]ZXXXYZWRQUZ_ba]XWWTRPNMPTXVPJINRV[bjprof_ahmqvz|}|}}yy|}|zyuqnmkijmorsnfacffhmpmigfb__aabdd`ZTONPSTRSW^aa_\WRPSY_ejkkighmswyyxy{~¾~xwyxqlmomkpvyxz{xskfhlkigf`XSRSRPOMKJMONKFB@AAA@BDEEFFECBBGQXYUSRNKMSX[`fhecceffinty||wsqqtwxwxz~~|yywrqvz}~~}~|uqqsuwz|wpkhea^]`bdfgfc_\ZUPPV[_aba__dijggnw{{z|{xvsqrvyxzxqnkeaadfdb_]YWVVVWXYZ\]\[ZZYXVTSTWXXWVUUUVWVTSRSX`gihkoqmjlrvy~}}~|zyvspljihijjhfeddgkopmjjlnqstvxvqmlnppqsuwz}zurqqpqsvxzytnjhdbbeedfiihfddedbaabceddehihfgijjklifdehklkknsvwwz~~~~}xusrrrqpnnprrrrsqnllllnqttspligffgiheba`_]\_beeb_^^acfjmmkjlmmpx~}|}}|||~~~~}zyyyxuttssrsqollnqrrppqpmieddeeb^]]]]]^^]\ZXY\_bcbbcefdbbcdccehkllkklmmnnptxywuttuuuvxyyz|~{xxz{||{zywuttwyy{|~~~|zxxvutttssqnlkihijjjkmnmlnpqrrstuttuwxxwwyz{}|yxxwutuy{|}}|yvsrrstuwxyyyxxyz{|~~~~~~}yvspnlkklkjhilnoommmnnmmoruxzzz{}~}{yvtsqnljiigeb`_^\[\]]^_``_][Z[]^_`abcccbabdhlnopqrtvvwxyzyyy{}~|zzzzz{|}}}}}||{{{{{{{zz{|}~~~|{zzzzzzywuqoooppqrqomlklmnmmmnmmmmnnoqssttuvxxwvvuvvvtrqpnljjkmopqqqpnllllkkkkkkjjijihhiknpqqqrqppqstuvvutsstuuutrqponnopqrtuvvvvuuttuuuttttuvwxyyyxwwwxyz{|}~~~~}|{zyzzzyyyyxxwwwutssssrrrrqponmmmmmnnnnnnmmlllllkkkkkkkjjjjjjjjjjiijjkllmmmmmmmmmmmmnnnoopppppppppppppqqqqqqrrsstuuvvwwwxxxyyzzzzzzz{||}}~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}||||||||||||||||||||gl-117-1.3.2/sounds/plane1.wav0000644000175000017500000004430210145416156015111 0ustar cedriccedricRIFFHWAVEfmt "V"VdataH~||zzxxvvvttrrrrpppppnnnnnnnnnnnnnnnnnnppppppprrrrrrtttttttvvvvvvvvvvvvvvvtttttrrrrpppnnnlljjhhffdddb```^^\\ZZXXVVVTTTRRRPPPPPPPNNNNNPPPPPPRRRTTTVVXXZZ\\^``bddfhjjlnprttvxz|~~||zxvttrppnlljjhhffdddbbbbbbbbbbbbbbdddfffhhjllnnprrtvxxz|~~~|zzxvttrppnlljjhhffdddbbbbb```bbbbbdddffhjjlnpprtvxz|~~|zzxxvvttrrrppppppnnpppppprrrtttvvxzz|~~~|zvtrpnjhfddb`^\\ZZXXVVVTTTTTTTTVVVXXZZ\\^`bddfhjnprtvz|~ÿ~zxtpnjhdb^\ZXTRPNLJHHFDDBB@@>>>>><<<>>>>>@@@BBDDFFHJJLNPRTVVXZ\^`bdfjlnprtvxz|~~|zxvtrppnljhhfdbb``^^\\ZZZXXXXXXXXXXXXXZZZ\\\^^``bbdffhjjlnnprrtvxxz|~~~|zxvttrpnljhfdb`^^\ZXXVTTRRPPNNLLLLJJJJJJJJJJJJLLLLNNNPPPRRRTTVVXXXZZ\\^^^``bbbdddffffhhhhhhjjjjjjjjjjjjjhhhhhfffdddbb``^^\\ZZXXVTTRPPNNLJJHFFDDBB@@>><<::::888888888:::<<<>>@BBDFHHJLNPRTVXZ\^bdfhjlnrtvxz|~|zxvtrpnljhdb`^\ZXVTRPPNLJHHFDDBB@@>>><<<<<<<<<<<>>>>@@BBDDFFHHJLLNPRRTVXXZ\^``bdfhhjlnnprrttvxxzz|||~~~~~~|||zzxxvttrppnljjhfdb`^\\ZXVTRPPNLJJHFFDDBB@@@@>>>>>>>>@@@@BBDDFFHJLLNPRTVXZ\^`bdfjlnprvxz|~~|zzxxvvttrrrrrppppppprrrrrrtttvvvxxxzzz|||~~~~~~~~||||||||~~~~~~~~~~~~~~~~~~~~~~~||||zzzzzxxxxxvvvvvvvvtttttttttttttttrrrrrrrrrrrrrrrrrrrrpppppppppppppppppppppppppppppppppppprrrrrrttttvvvvvxxxxzzzzz||||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|||||zzzzxxxxvvvttrrrppnnnlljjhhffdddbb``^^^\\ZZZXXXXVVVVTTTTTTTTTTTTTVVVVVVXXXZZZ\\\^^^``bbbdddfffhhhjjjlllllnnnnnnpppppppppppppprrrrrrrrrrrrrpppppppppppppppppnnnnnnnllllljjjjhhhhhffffddddbbbbbb````````````bbbbbdddfffhhjjjllnnpprrtttvvxxzzzz||||~~~~~~~~~~~||||zzzxxvvttrrppnlljjhffdbb`^^\ZZXXVTTRRPNNLLJJHHHFFDDDBB@@@@>>><<<<<::::::::::::::::<<<<>>>@@BBDDFHHJJLNPPRTVXZ\\^`bdfhjlnprtvxz||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|||zzzxxvvvttrrppnnlljjjhhffddbb```^^^\\\ZZZZXXXXXXXXXXXXXXXXXXZZZZ\\\^^```bbddfhhjjlnnprttvxz||~~~||zzxxvvtttrrrpppnnnnnllllllllllllllllnnnnnpppprrrtttvvxxxzz||~~~~|zzxxvttrppnnlljjhhffdddbbb``````^^^^^^^``````bbbddfffhhjllnnprrtvvxz||~~~|zzxxvvtttrrrpppppppnnppppppprrrrtttvvxxxzz||~~~~~~~~~~|||||||~~~~~~~~~~|zxvtrpnljhdb`^\ZXTRPNLJHFB@><:866420..,,**((&&&&&&&&&&((**,,.002468:<>@BFHJLNRTVZ\^bdfhlnprvxz|~~|zxvtrnljhfd`^\ZXVTPNLJHFDB@><::86642200...,,,,,,,,,,,,...0002244688:<<>@@BDDFHHJLLNPPRTTVVXXZZ\\^^```bbbddddffffffffhhhhhhhhhhhhhhffffffffffddddddddbbbbbbb```````^^^^^^^^\\\\\\\\\\\\\\\\\\\\\\\\\\\\^^^^^^```````bbbbbbdddddddfffffffffffffffffffffffffffffffffffffddddddddddddddddddddddddddddddddddddddddddddffffffhhhhjjjlllnnpprrtvvxxz||~~||zxvttrpnlljhhfddb``^^\\ZZXXVVTTTRRRRRPPPPPPPPPPPPRRRRTTTVVXXZ\\^``bdfhjlnprtvxz|~~~~||zzzzxxxxxvvvvvvvvvvvvxxxxxzzz|||~~~~~~~~|||||||||||||~~~~~~||zzxxvvvtttrrrrppppppppppppprrrrtttvvxxzz||~~|zxvtrpljhffdb`^\ZZXVVTRRPPNNNLLLLJJJJJJJJJLLLLNNNPPRRTTVVXZZ\^``bdfhjllnprtvxz|~~|zxvtrpnljhffdb`^\ZZXVTTRPPNNLLJJHHHFFFFDDDDDDDDDDDDDDDDFFFFFHHHJJJLLLNNNPPPRRTTVVVXXZZZ\\^^^```bbbdddddffffffffffffffddddbbb```^^^\\ZZXXVVVTTRRPPPNNNLLLJJJJJJJJJJJJJJJLLLLNNNPPRRTTVXXZ\\^``bddfhjllnprttvxz||~|zxvrpnjhdb`\ZVTRNLJFDB@<:864220.,,*(((&&&&$$$$&&&&((**,,.002468::<>@BDFHLNPRTVXZ\^`bdfjjnnprtvxz|~~~||zzxvvtrrpnnlljhhffdddbb````^^^^^^^^^^^^^^```bbbddffhjjllnprrtvxxz|~~|zxvvtrpnljjhfddb``^^\\ZZZXXXVVVVVVVTTTVVVVVVVXXXXZZZ\\^^``bbddffhhjjlnnpprttvxxzz|~~||zzxvvttrrppnnlljjhhhhffffdddddddddddddddffffhhhjjlllnpprrttvxzz|~~~~~|||||||||||||||~~~~~~~|||zzxxxvvvvvttttttttttttttttvvvvvxxxxzzz|||~~~~||zxxvttrppnlljhhfddbb``^^\\\ZZZZXXXXXXXXXXXXXXXZZZZZ\\\\^^^````bbbddddffffhhhhhjjjjjjllllllllllnnnnnnnnnnnnnnnnnnnnnnnnnnnlllllljjjhhhhffddbb``^^\\ZZXXVTTRPPNNLJJHHFFDDBB@@>>><<<<::::::::::::<<<<>>>@@@BBDDFFHJJLLNPPRTTVXXZ\\^`bbdffhjjllnpprttvvxxzz||~~~~|||zzxxvvtrrppnnlljhhffddb``^^\\ZZXXVVTTRRPPNNLLLJJHHHFFFDDDBBBB@@@@@>>>>>>>>>>>>>>>>>>>>>@@@@BBBDDDFFHHHJJLLNPPRRTVVXZ\\^`bbdfhjlnnprtvxz|~~zxvtrnljhfdb`^\ZZXVVTRRRPPPPNNNNPPPPPRRTTVVXXZ\\^`bbdfhjjlnprtvxzz|~~|zxvtrpnnljhffdb``^^\\ZZXXXXVVVVVVVVVVXXXXZZZ\\^^``bbdffhhjllnprrtvvxz||~~~|||zzxxxvvvtttrrrrppppnnnnnnlllllllllljjjjjjjlllllllllnnnnppprrrttvvxxzz||~~|zxvtrrpnlljjhfffdddbbbbbbbbbbbbbbbddddfffhhhjjjlllnnppprrtttvvxxxzzz||~~~~~|||zzzxxxvvvttrrrpppnnllljjjhhhhffffddddbbbbbb```````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```````bbbbddddfffhhhjjjllnnnpprrtttvvxxxzzz||||~~~~~~~~~~||||zzzzzxxxxvvvvttttrrrrppppnnnlllljjjjhhhfffddddbbb````^^^\\\\\ZZZZZXXXXXXXXXXXXXXXXXXXXXXXZZZZZ\\\\^^^^```bbbdddfffhhhhjjjlllllnnnnnnnnnnnnnnnnnlllljjjhhhffddbb``^^\ZZXXVTTRPPNLLJJHFFDBB@@>><::88866442220000......,,,,,,......00022444688::<>>@BDFFHJLNPRTVXZ\^`bdfhjlnprtvxz|~~~~~~~||||||||||||||~~~~~~~~~|||zzzxxxvvtttrrpppnnllljjhhfffddbb``^^^\\ZZZXXXVVVTTTTRRRRRRRRRRRTTTVVVXXZZ\^^`bdffhjlnprvxz|~~|zxvtrpnnljhhfddbb```^^^\\\\\\\\\\\\\\^^^```bbbddffhhjjllnpprrtvvxz||~~|zxvtrppnljhffdb``^\\ZZZXXVVVVTTTTTTTTTTTTVVVVXXXXZZ\\\^^``bbddffhhjjllnpprttvvxz||~~~|zzxvvttrrpppnnnllllllllllnnnppprttvxxz|~~~|zzxxvttrrrppnnnllllljjjjjjjjjjjjjjllllnnnnppprrtttvvxxzz||~~~||zxxvttrrppnnlljjhhhfffddddbbbbbbbbbbbbbbbbbddddddddffffffffffffffffffffffffffffdddddddddddddddddfffffhhhjjjlllnnpprrttvvxzz||~~~||zxvvtrpnljjhfdb`^\ZXXVTRPPNLJJHFFDDBB@@>>><<<<:::::::::<<<<<>>>@@BBDDFHHJLNNPRTVXZ\^`bfhjlprtxz~~zxtrnjhdb^\ZVTRPLJHFDB@>><:8866444222222222222446668::<<>@BBDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~~|zzxtrpnljhfdb`\ZXVTRPNLJHHFDB@@><<::88666444422222222224444466688:::<<>>@@BBDDFHHJJLLNPPRRTVVXXZ\\^^``bbdffhhhjjllnnppprrrtttvvvvxxxxzzzzz|||||~~~~~~||zxvtrpnljhfdb`^ZXVTRPNLJHFDB@><::866442220000000022244688:<<>@BDFHJLNPRTVX\^`bdfhjlnrtvxzz|~~||zxvvtrpnnljhhfddb``^\\ZZXXVVTTTRRRRRRRPRRRRRRRTTVVVXXZ\\^^`bddfhjlnnprtvxzz|~~~~~~~~~~~~||zxxvvttrrppnnnllljjjjjjjjhjjjjjjjjjjllllnnnppprrrttvvxxzzz||~~~||zxvtrppnljhffdb``^\\ZXXVVTTTRRRRPPPPPPPPPPPRRRRTTTVVVXXZZ\\^^^``bbddffhhjjlllnnppprrrtttvvvxxxzzzz|||~~~~~~~~~|||||zzzzxxxxvvvtttrrpppnnlljjhhfddbb`^^\\ZXXVVTRRPPNNLLJJJHHHHFFFFFFFFFFFFFFHHHJJLLLNNPPRTTVVXZZ\^^`bbdffhhjllnnpprrttvvxxzzz||~~~~~~|||zzzxxvvvtttrrrpppnnnllljjjjhhhhffffffffdddddddfffffffhhhhhjjjlllnnnppprrtttvvvxxxzzz|||~~~~~~~~~|||zzzxxvvttrrpnnlljhhfdbb`^\\ZXVVTRPPNLLJHHFFDDBBB@@@@>>>>@@@@BBBDDFHJJLNPRTVX\^`dfhlnptvz|~|zzxvttrppnnljjhhfffddbbbbb`````````bbbbdddffhhjjlnnprrtvvxz||~~~~||||zzzzzxxxxxxxxvvvvvvvvvvvvvvvvvvvvvttttttttrrrrrrppppnnnnllllljjjjhhhhhhffffffffffffffffffffffhhhhhhhjjjjjjjjjjjjjjjlllljjjjjjjjjjjjjjjjjjjllllllnnnnpprrrttvxxzz|~~~||zzzxxvvvtttrrrrrppppppppppppprrrrrtttvvvxxxzzz|||~~~~~~|||||zzzzzzzzzzzzzzzzzz|||||~~~~~~~~~~|||||||zzzzzzzxxxxxxxxxxxxxxxxxxxzzzzz|||~~~~|zxxvtrpnljhfddb`^\\ZXXVTTRRPPPNNNLLLLLLLLLLLLNNNNPPPRRRTTVVXXZZ\\^``bbdffhhjllnpprrtvvxxz||~~~|zzxvvtrrppnnllljjjhhhhhhhhhhhjjjjllnnpprttvxzz|~~zxvtrpnljhfdb`^\\ZXXVTTRRPPNNNLLLLLJJJJLLLLLLNNPPPRRTTVXXZ\^^`bdfhjlnprtvxz|~~|xvtrpljhfdb`^\ZXVVTRRPPNNNLLLLLLLLLLNNNPPRRTVVXZZ\^`bbdfhjlnprtvvxz|~~|zzxvtrppnljjhffddbbb```^^^^^^^^^^````bbdddffhhjllnnprrttvxxzz||~~~~||zzxxvttrrpnlljhhfddb``^\\ZXXVTTRRPPPNNLLLLJJJJJJJJJJJJJLLLNNPPRRTTVXXZ\^^`bdfhjlnnprtvxz|~|zxtrnljfdb^\ZXTRPNLJHFDBB@@><<<<:::::<<<<>@@BDDFHJLNRTVX\^bdhjlprvz|~~|zxvvtrppnljjhffddbb``^^\\\ZZZXXXXXVVVVVVVVVVVXXXXXXZZZZZZ\\\\\^^^^^^^^`````````^^^^^^^\\\\\ZZZZZXXXXXVVVVVVVVVVVVVVVXXXZZZ\\^^`bbdffhjlnprtvxz|~~~|zxxvttrrppnnlljjjjhhhhhhhhhhhhhhhhjjjjlllnnpprrrtvvxxzz|~~~|zvtpnjhdb`\ZVTRNLJHDB@><:8644200..,,,********,,,..0024668:<>@BDFHJNPRTVZ\^`bfhjlnrtvxz|~~~~|||zzzxxxvvvvvttttttttttttvvvvvxxxzzz||~~~~||zzxxxvvvtttrrrrrppppppppppprrrrrrttttvvvxxxzz|||~~~~||zzxxxvvttttrrrrpppppnnnnnnnnnnnnnnpppppprrrrrtttvvvxxzz||~~~|zxxvtrpnljhffdb`^\\ZXVVTRRPNNLLJHHHFFDDDBBB@@@@@@@@@@BBBDDDFFHJJLNNPRTVXZ\^`bdfhjlnprtxz|~~~~~||||zzzzzzxxxxxxxxxxxzzzzzzzz||||~~~~~||zxxvvvtttrrrrrrrrrrrrttttvvxxzzz|~~~|zzxvvtrrppnnlljjhhfffddddbbbbb```````````bbbbbbddddfffhhhjjjllnnnpprrttvvxxzzz||~~~~~~~|||||||||||||||||||||||||||~~~~~~~~~|zxvtpnljjhfdb`^\\ZXXVTTRRRPPPPNNNNNNPPPPRRRTTTVVXXZZ\^^``bbddfhhjjllnnppprrtttvvvvxxxzzzzz||||||~~~~~~~~~~~~~~~~~~||||zzzxxxvvvttrrppnnlljjhhfffddbb``^^^\\\\ZZZZZZZZZZZZZZZ\\\^^^``bbdffhhjllnpprtvvxz||~~~~~~~~||||||||zzzzzzzzzxxxxxxxxvvvvvvtttttrrrppppnnllljjhhffddbb``^^\\ZZXVVTTRRRPPNNNLLLLLJJJJJJJJLLLLNNNPPRRTVVXZZ\^`bddfhjlnprtvxz|~~zxvtpnljhdb`^\ZXVTRRPNNLLJJJJHHJJJJJLLNNPRTVXZ\^`bfhjnptvz|~zxvtrpnlhfdb`^\ZXVTRRPNLLJHHFFDDDBBBBB@@@BBBBBDDFFHHJJLNNPRTTVXZ\^``bdfhjllnprttvxxzz|~~~~~~||zzzxxvvttrrrppnnnllljjjhhhhffffffffffffffffhhhhjjjllnnnpprrttvvxxzz||~~~~||zzxxvvttrrppnnlljjhffddbb``^^\ZZXXVVTTRRPPNNLLLJJJHHHHFFFFFFFFFFHHHHJJLLNNPPRTVVXZ\^`bdfhjlnprtvxz|~~~~|zxxvvtrrpnnlljjhhfffddddbbbbbb````````bbbbbbdddddfffhhhjjjllnnnpprrttvvxzz||~~~~~~||||||||||||||||||||||~~~~~~~~~~~|||||zzzzzxxxxxxxxxxxvxxvxxxxxxxxxxzzzzz||||~~~~~||zzxxvvvttrrpppnnllljjjhhhhfffffdddddddbbbbbbbbbbbdddddddfffffhhhjjjlllnnppprrttvvxxzz||~~~~~||zzxvvttrrpnnlljjhffddbb`^^\\ZZXXVVVTTRRRPPPNNNLLLLJJJJJJJJJJJJJJJLLLLNNPPPRRTTVXXZ\\^``bdfhhjlnpprtvxz||~~zxtpnjfb`\XTPNJFD@<:640.*(&$" "$&(*,.2468<>@BFHJLPRTXZ\^`dfhjlnprtvxz|~~|zvtrnljfdb^\ZXTRPNLJHFDB@@><<:::88888888888::<<<>@@BBDFFHJLLNPRTTVXZZ\^^`bbdffhhjllnnnpprrrttvvvvxxxzzzzz||||||~~~~~~~~~~~~~~~~~~~~|||||zzzzxxxxvvvttttrrrpppnnnnllllljjjjjjjjhhhhhhhhhhhhhhhhhhhhhffffffffffffdddddddbbbbbb````````^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\ZZZZZZZZZZZZZZZZZ\\\\\^^^``bbddffhhjllnpprtvvxz||~gl-117-1.3.2/sounds/thunder1.wav0000644000175000017500000013670010145416156015467 0ustar cedriccedricRIFFWAVEfmt "V"Vdata}{yywtttrrpnnkigeb``^\YYWWUUSSSPPPPNNNNNNNNLLLJJGECAA><::88888:<>ACGJNSWY^bginrty{}}}{{{yyyyyywwtrpnkge`^\YWUUUUUWWY\\^``bbbeeeegggikknprttwy{{}}}}}}}}}}}}}}}}}}}¿{wpkieb```begknrtyy{{{ywtrpnkigeebb```^^^\\YWWUUUSSSSUUUWWWYYYWWWUSPNLJGCA><::::::<>ACGJLPSUWY\\^```bbeeggikknnnnnnkiigeb`^^\\\\\\\\^^^^```bbeegiknnprrtttttttrrrrttwwy{}}ywtrpnnnnnnptw{}}}{{}}}}{ywtrpnigeb``````bbeegiikkknnnpprrtwy{}}{yywtrpnkie`\WUPLJGEEEEGJLPUW\^begiknnppprrrrrppnkigeb``^\\\\\^^``bbbbbbb`^\YWUSPNLLJJJJLNPUY^bgnry}}{ywtrrpnkiigebb``^^^^^^^^^^^^^\\\\\^`bgnt{}ytpkge`^\YWUUSSSPSSSUWY\^bgnry¿}{wwtwwy{}ywttrpppppppprrttwwy{}}{{{}}{ywrpnkiiggggiknprwy{}{wrpkiiiiknrw{ytnie`\YY\\`bgkptw{}}{ytrnkgb`\YWUSSPPPPSSUWY\`egkpt{{ywtrrrrrrrtttrrpnkieb^\WUSNNLLJJJLLNNPSUY\`einrw{}ytpkgb^YWUSSUWY\`gkpw{}{{ywwttttrrtttwyy{}}}}{{{{}}ytrpnnnnnnprtw{}}ytpke`\YUSPNNNNNNPPSSUWWY\^`begknrty{{ytrpnnkknnprrttwwwwtttrrppnkkigeb`^^\YYYYY\^`egkpty{}yrng^WNG>81,(#!!!#&*,15:>AEGJLLNNNNNNPPPSSUWY\^`bginprwy{}}{ywrnie^YUPJEC><8855588:>AEGLPUY^bgkpty}ȿ}{yyy{{}}}}}{ywwtrrrrtw{Ŀ}ytnie`\YWWWYY\`begikkkkkkiiggeeeeeeeeeeeeeegiknry}{wtpkie`^YUSPNJGECCA>><<:::888553333113358>AACEGJNSW\bipw}}}}{{}}}}wpg`WPJEA><<>>AEGLPSW\^`begikknnnnnnnnnnkkkiiigggeeeeeggikknprtwwyyyyywwttttttwy{{rkb\UNJEEEGJNSY^eikprrrpnkieb`^\\YYYY\\\\^^^^``begikprwy{¿}ytng`YPJC<853338:AGNU\`gknpppnkigb`^^\\^^`begknprwy{}ytpnkiiikknrty{Ŀ{wrnigeegginpty{}{ywwtrpnkiggeebb``````bbegiknrty}}{ywttrpnkkiiiiiikknnpprtttwwwtttrrpppprrtw{}}wrkg`\WSNJECA<<:888:<>CELPW\bgkprtwwwwwtrrpnnkiiggebb`^\\YWUUSSPPPPNNNLLJGGECAA>>>>>>AAACCCCCCCCCCCCCEGJLNPSUWYYYYWUSPNLJGEEEEEEEGJJLNPSUY\`ekpw}½}{{yywwttrrpnnkkkiiiiiiiiiiiiiiiiiggggeeeebb`^\YWSPLJGGGJLPW^gp{}}{{{{yyy{{{}}}}{{yyy{{}}{{y{{}}yrngb\YUUSUWY^bgkptwy{}}}{{{{{{}}{wpke`YUPLJGGGJLNSW\^bgiknppprrrrrrrttwwyyyyyywttrpnkgeeb`^^^\\\\YYWUSPNJEA:5/*&!#&*/158:<>>>AACEEGLNPSWY\^`````^\YUSNLJGGGJLNSW^ekt}ƿ}ytpkgeb`^^^^^``bbbbbb```````bbegiknprtwwyyy{{}}{yywwttttrrrrrrrppppprrty{¿}{ywtttrrrrrttwwyy{}}}}{{ywwwtwwwy{}}{ywtrpnkiiggeeeeggiknptw{}}{yyyy{}yrkgb```beinrw{}{wrnieb`^\\\\\\^^``bbeeggikknprrtttttrrrppprtwy}{wpke`YUNJEA><::::<>CGNSY`ekpty{{{{{ywtpnkieb``^\YWUSPNJJGEEEEGGJLNSUW\^beginpprrttrrrpnkieb`^YWUSSPNNNNNNNPPPSSUUWWWWYWWWWWUSSPNLJGECA>><::::888:::<<>ACEJLNSUW\\^`````````begknty}wrkiebbbbbegiknnnkigb^YUPLGECCEGLPU\bipty}}}}}}{wpkge`^^`bgnw}ri`YSLJECA>><<::888555588:<>AEGJNPSUWY\\^`beikpty¿}ywtrrrrrttwwy{{{}}{{ywrpkgb^YUSPNNPSUY^binty}Ŀ}ytpkgb^WSNLGGGGJNSY`gpw{Ľȿyrkgebbeikpw{{wtpnieb^YWSNJGC><:855588:>AEGLNNPPNLJEA>:51,*((&&&((*,/138:>CGLSW^bgkpty{}}{ywttttwwyy{}}}}}}{ywtpkge`\WSPNJGECCA><:853/,(&!!#(*/38><<<<>ACGLSY`gnt{{ytrrrrty{½}{yyyy{}}}}}}}}}{ywtttwwyy{}}{ywrnkgb^YUPNJGGEEEEEGGJLNPSUWY\^`beggiiiiggeb`^\YWSPNJGECA>><<<>>AACEEGJJLNNPPSUWY^`einty}}}}}}}}}ytnie`^YWUSSPPPPPSSSUUUUUUUUUSSSSSSUUWWY\^^`begiknprty{}{wrpkgebbbegkpty}}yrke^WSNLJJLNPU\`ekrw}}}}{{yywwwwy{}{wrpkigebb``^^\YWUPNLJGEEEEGJNPUY`bgknnppnkigebb``bbeinrw{{ywtpnnkkknprty}}ywtrpnnnkkkkkkkiiiiiiiiknprwy}½}ywtrrrrrrtttwwwyyyy{{{}}}{yywwwy{}}yrpkkkknprty{}}}{ywtpkieb`^\YWUUSSPPSSUWY^`einprttrpkgb\UNGC>:888:<>AEGJJJJGC>:51*&#!!#&*/38<>CEGJLNNPPSSSUUUUWWWWWWWYY\\^`begiknprtwy{}Ŀ}{{yywtrpnkgb^YWSPNNNPSW\`gkrw{}}{wrngb\UPJC<81/*((((*,138:>ACEEEEGGGJLNSW^bipt{{tpnkiiiiknrty}{wtrpnnnnnprtw{}{ywttttwy{}wpg`WNGA<:8:><<<>AAEGJNPSUYY\^^^^^\\\YYWWWUUUSPNLJEA<83/*&!!(,5:51/,*((((((*,//133555533111//1138:5333355:<>AEGGJLLLNNPSUW\bgnryĿ{tng`YUPLJJJJLNPSUUWWWUSPNLJJGGGGJLNSUY^beiknnpnnkieb^\YWUUUWY^bgkptwyyywtpkge`\\YY\`binry}}{ywtttwy{}ƽ}ywrppnnnnnnkkkkiiggeeeeegiknpty}}{ywttttttwwtttrppnkiiiiiknprwy{}}{{yyyyyyyyyyywwtrpkigb`\YWUSPNNLLJJJGGGJJLNPSUWY\^^^\YWSNJEC><:88:<>CGLPUY^`bggikknnnnppppnnnkkiiiggggiiknpprtwy{{}}}}}}}{ywtrnkgb`\YUSSPPNNNNNNNLLJGECCA>>>AAEGJNSUW\\^^\\YWUSPNNPSU\`gnw}¿}ytrnkkkkkknnppppnkie`\WSNLGEEEGJLPW\bipw{{wrpkigebb``^^\\YYWWWWY\`eipw}{ywttpnkigebb````bbegiknnnnkieb^WSNJECAA>AACEGLNPSSUUUUUUUUUUWY\^`bgikprwy{}ywtrnkie`^YUPNJGEEEGJLPU\`einprrrpnie`\WSPNLJJJJJLNNPSSUUUUSSPLJEA<51*&  !(1:CLSYbintyytng`YSPNLNPU\bipyƿ}{ywtrrppnnnpprttwy{}{wrpkigebbbbbbeginpty¿{ywttrrrttwy{}{ywtrrrtwy}{wpkgbb``begkptw{}wrkgb`\\YY\`bgkrw{{wtrpnnnnpppppppnkieb`\YYWWY\`einty}}{wrniebbbbgint{½reYLA81*&&#&(*/38>CJPU\bipw{½{yywwwyyy{{{{{{ywtrpnkigggiknrty}{tng^WNGC>:85558:>AEJLNPPPNNLGECA<::888888::<>>ACEJLPUW\`einptwwwwtrnkgb^YUPNLJJJJLNNPSUWY\\\\\\\YYWWUUSSSSSUUWY\^`beginprtwwy{{{}}}}}}}}}}{{yywtrpnnkiggebb``^^\YYWUUUUUUWY\^bginrtwy{}}}}{{{yyywwttrpnigb`\YWUUUWY^ekr{}wrpnnnprw{}}{{{{}}yrngb^\YYY\\^begiknpppppnnkkiigggeeeebb``^\\YWUSSPPSUWY`ekry¿{yy{}½ypke`^\\\^`einrw{}}}}}}}½}{wtpnkigeeb``^^\YWUSNJEA:5/*&#!#(,18:531/,,**((&&&&&(*,15:AELSW^`beeb`\WPLE>83/*(&###&(*,/3358888855588::853333335588::::<<>>AACEEGGJJJJJJJGGGGJJJLNNPSUWWY\\\\^^^^^^`bbeiknptwy{{{{{ywrpkigebbbeginrw}wpib^YWWWWY\^beinpty{{tpib^WSNLJGEEEEEEGJJLNPSSUUWUUSPNJGC><8533358:8558:>ELU^gpy{wrkg`\WSNLJJJLLPSW\`gkryype\SJA:53358>ENWbkw¿{rkb\UPLGGEGJLPUY^bgkpty{}}}}}}}}}}}}¿»}ywrpnigb`\YUSNLJGGEEEGJLNSUY^`egiikkkkiigeeb`^^\\YYYWWWWWWWY\^beinrw{}}ytpkgb`^^`bgkpw}yrke`\WSPPPPPSUWY\^``beeggggiiiggggeebb`^^\\YYWUUSPPNLJGECAA>><<<>>>AAAAAAA>><::853311133558::855558:GNW^ekry}{wng`WPJC>:85333358:<>ACGJLPSUWY\^``bbbeeeeeeeebbb``^^^\\\\\\\^^`beegggiggeb`^\YYWWWYY\^`bbeeeeeeb`````beinrw}{wpkiebbbeginry}{ytrnkge`^YWUSSSSUWY^bgnry}}{ywtrpnnkkiigeeb``^^^^^``egknrwy}½¿}{ywtrpnkiiggeeeeeeeeeeebbb``````bbegiknrtw{}}ytpnnnprtw{}}ytrnkiggggiiknnpprrrppnnkigebb`^\YWWUUSSSSUUWY\`begiknpprrrrrrpppppppppppppnnnnnppprttwwyyyywttrpnkigeebbbbbb``^YWPLE>5,&  !&*/3558885331////13585/*&##&(/5<:::88:::<>ACCEGJJLNNPSUW\^beinrtwyyyywtrnieb^YWUUUUUWY^`egkprwy{{}}}}{{ywttrppnnnnnnnnnkkkigeeb`^\\YYY\\^`beiknpprrrppnkieb`^YWUSSPPNPPSUY^biry}}{{yywttrrpppnnnnnnnpprrtttwwwwwwwttrpnkieb`\WUPNLJGGGJLNPUY`eipty¿¿Ľ}ywrnkgeb^^\YYYWWWWUUUSSSPPPPPSSUWY^`einrw{¿}}{yywtpnkgb`\WUPNNLLNPSW\`einprpnke^ULA8/&!#,3>AAEGLPU\`egknprrrrppnkigeb^\YWUSPNJGC>:51,(&!!#(,3:>ELPUY^`begiiknprwy{}}{wtpkgeb^\YYWWUUUSSPPNLLJJGGGGJJLLNNPPPSSSSSSSSSUUUWWYYY\\^``begiknprtttttrrppppprtw{}{ywwttwwwyyyy{{{{{{}}}}ywttrrrttw{}¿¿}{{{}{tpkeb^\YYY\^`bgkpty{}ywrnkggebbbeegiknprtwy{}{wtpnkiiggeeeeeeeeeeeeeeeb`^\YWSPNJGEEEEEEGJLNPPSUUWWYYYY\\^`begikprttwwwtrpkie`\WSPPNNPSUW\`einprtwyyyyywttrpkige`^\WUSPNLJJGGGGGGGJJJJLLLNNPPPSSUUUWWWYY\\^`beginptwy{}}{ywrpkgb^YUPLGCA<:885588:<>CEJNSW\`bgknprtwwyyyyyyyywwwtrpnkge`\YUPNJGECA>>>AACCEGJLNPPSSUUUUUUUSSPNLJEC><:5311//11358:>AACEEEEEEEEEEEEGGJLNPSUWY^`eginprtwy{{}}}}}}½{ywrrpppprtw{¿}ywtrpppnpppprrtttwwwwtttttrrrrrrttttwwwwwwwwwyyyy{{}}{wrpnkkkkknprwy}yrkg`YSNGC>:5311///1113333331//,**((((*,15:>CGNSUY\\^^\\YWWUSPPPNNNNNNPPPSSUUWYY\^^``````^^\\YYWWUUSSSSPPNNLJJGEECCAA>><<:::8855331111//111133355558888888888555555588::<>CEJLNSUWYYYWWSPNJGCA>>>ACEJLPUY^`bbbbb`^\YWUSSSSUUW\^`egikknnkkiigeb``^^^^^``beeggiiiiiggggggiikknpprtwwyy{}{ywtttwy{{ywtrrpnkieb`^\YWWUUUUUUWY\^beinpty}Ŀ½}wrnigeb`^^\YWUSPNLGEA><85311//,,,,,//11335588:::<<<<:::88888888::<<>>ACCEEGJJLNNPPSSSSSSSPPNLLJGEECAA>>><<<<::::88885555888:<<>ACEGJLNNPPPPPNLJGCA<51,(#!&(*,135:<>ACEGJLLNNNPPPPPPNNNLLJGGEECCCEEGJNPUW\`beiknpprttwyy{}}{wtrrppppppppprrrrrttwwwyyyyywttrpnkiigggiiknpprtwwwyyywwwwwwwwyy{{}}}}¿½}{{yy{{{}}}}}}}{ywtrnkgeb^\WUSPNLJGEEEEEEEEEGGGGGEECCAA>>><<>>>ACCEGGJLLNNPSSUWWYYY\\\\\YYYWWWUUUUUWWWWWYYYWWWUUUSSPPPPNNNNNNLLLJJGGEECAA><<<<<<<<>>ACEEGJJLLLLLLLNNNNNNPPSUWWY\\^^^^^^\\YYWWWWWY\^`bginptwyy{{yywwtrnkieb`\YWUSSPPPPPPSSUUUWWWYYYYY\\\\\\\YYYWWWUUSSSSSPSSSSSSSSSSSSPPNNLLLLLNPSW\`einprttrpnie^YSNJGEEEEGJNSUY^`begiknnprrtwy{}¿¿}}{{{{}}}{ywtrpnkiggebb`````beegiknnpppppnkigeb`^\\YY\\^^`beggiiiiiiiggeeeeeeeggiiiikkkiiigggeebb``^^\YWUSNLJECA><:::::<>AACEGJJLLLJJJGEECCAAAACEGJNSW\bgkptwy{{{{ytrnie`^YUSPPNNNNNNNNNLLJGECCA><:::::::<<>>>>>><:831,(#!!!#&(*,/138:>AEGJNPPSUUUUUUUUUUWYY\^`begikknnnkkiigebb`^\YYWUSSPPPPPPPPPPPPPPNLLJGECCAAACCEJLPUW\`begiiiiggeb``^^``beikpty}½¿¿}ywtrpnnkkkiiiiggggeeeeeeeeeeggiikknppprrrppppnnnnnnppprttwwyy{{{}}{tpigb`^^``egknrtw{{}}}}}{ywtrpnkiigebb```````bbegiknpty}{wpkgb^\WUSSSSSUUWWYY\\\\^^^^^^^^``bbegiikknnnnkkiigeb`^^\YYYWWWWUUSSPNLJECA><:::::::<<<>>><<::85331113358<>CGJLNPSSSPPNLLJJGJJJLNPUWY^`begiikkkkkkkkkkknnnnnppprrrttwwyyyyyyywtrnigb^\WUUUWY\`gnt{¿}ywrpppprrwy{}tng`YUSNLLJJJJJGGEECA><::8553333333558:<>CGNSY`gkry}}ywtrpnkiggeeeeeegiknprtwwwwwtrpkigb`^^\\\^^^`bbeegggggggggggiiiiiiiiggeb`\YWSPLJGECAAAAAACCEEGGGJJJLLLNNPPSSUUWWYYYYYYYYYYY\\^`beiknprrttttttrrppnnnnnppppppppnkigebbbbbegkpty}}wpke`^\\^`ekr{{tnigb`````begiiknnppprppppnnnnkkknnnpprrttwwwwwttrppnigeb``^^^^^`bginrw{}¿}}ywtpkigb`````beginprttwwyyy{{}¿¿{ywtrrrttw{}}{ywtrrppprtwy}}yrnieb^\\\\\\^``bb`^\YUNGA:3,(#!#(,/38AACEEGGJJLLNNPPSUUWWYYYY\\YYYYWWUUSSPPNNLLJGGECCA>><:8855533355588::<<<>>><<<::855311//,***((((***,/1358:<:85331/,*&#  !#####! !&*/15:>ACEGJJJJJJJJJGGGEEEEEEGGJJJLLLLLLLLLJJJJJLLNNPSSUUUWUUUSSPNNLLJJJJLLLNNPPSSUUUUUUUSSPPNLJJGGEEEGJLNPUY^`einrty}{wrngb`\WUSPPPPPPSSUWWY\\^```bbbbbbbbbb``````^^\YWUUSPPSUW\`gkry}{wttrttwy}}{{{{{}}}{{yyyyyy{{{{{{{yyywwwtttttwwwwyyyyyyyywwwyyy{{}¿½{tnib^\WUUUWY\`bgkptw{}}{ywtrrppnnnprtwy}}ywtpnigb`\YWSPNJGCA<:8531111133588::::::::::::::::::<<<<<>>>>>>>>>>>><<::885533311111111111111113358:<>ACEGJLNNPPPPPPPPSSSSSSSPPPNNLLJJGGEEEEEEGGJJLLNNNNNNNLLLJJJJJJJJJJJJLLLNNPSUUWYY\^^^^^^^^^```bbegiknprtwwwyyywwwtttrrrrrrrrtttwyy{{}}}{{{yyyywwtrrpnkigggeggknrw{}{wtrnkigeebbbeeggiknprtwyy{{}}}{{{{{{{{{{}}}{yywttrrrrrrrpppnnkigeb^\YYWWWWYY\^``begiikkknnnnppppppppnnkkiggeb``^^\\\\^^``begiknprtwy{}}}{yywwttrrrrrrttttrrppnigb`\WUPNLJGGGGGGGGGGJJJLLLNNPPSSSSPPNLGEA<:53//,***,,//13355888:::::<<<<>>AAACCEEGJJLLNPPSSSSSSSPPNNLLJJJJJLLNPPSSUUUUUUUSSSSSSSSUUWWY\\^^``bbbbeeeeggiknprw{}}{{ywttrpkigeb^\YWUUSSSSSSSUUUUUUUUUUUSUUUWWY\^`egikprtwyy{}}}}}}}}{ywttrpnkkiiiigggggggeeeeeegggiikkknnnkkkiiggggiiknptwy{}}}{{yyyyy{}}}}{{{{{}}}{ywtrppppprtwy{{}}}{ywtpkge`\YWUSSSSUWWY\^``beeggiikkknnpppppppprrrrtwwy{}{{yyywwwwwyyy{}}}}{{yywwwttrppnnkkiiikknnprtwyy{{}}}}}{ywttttttttttttttttttwwyyy{{{{yywwttrrppprrtwy{}}{{yyyyy{{{}}}}{{ywrpkge`^\YYY\\^beiknprtttttrpnkiggebb```````bbbbbeeeegggiiikkkkkkkkkkiigggeeeeeeeegggiiiiiiiiiiiiiknnptwy{}}{{ywwtrppnnnnnnpprttwwwwwwwtrpnkigeb``````bbbeeggiiiiiikkkkkkkiiiggeeb``^^\YYYYWWWYYY\\^^``bbeeggikknprtwy{}}{{{{}}}}}}}}{ywtrrppnnnnnnnnnppprrttwyy{{}}}}}{{yyyyy{{{{}}}{{{ywwtrrpppppprttwy{}}}{ywtrrpnkigeb`^^\\YYYYYY\\\\\\\\\\YYWWUUSSSSSSUUWY\^`begiknpprrrrrrrpppnnnnnpprtwy{}}}ywtrppnnnnppprrrrpppnnkkkiiikknprtwy{}}}{{{yywwwttrrppnnnkkkknnprtw{}}}{yywttrrrrrrrrrrrrrpnnkigebb``^^``beginpty}}{ywtrpnnkiiiiiiiiikkkknnnnppprrttwy{}{ywtrnkigeb`^\YWWWUUWWWYY\\^^^^^^^\YYWUUSSSSSUUWWY\\^``beeggikknnnppppppnnkkkkiiiiiiiiigggebb`^\YYWWUUUUUUUWWYY\\^^^^^^\\\YYWWWUUUUWWYY\^`bgiknprtwyy{{{{yyyywwwwttwwwwwwwwwwwwwwtttrrppnnkkiigggggiiknprwy{}}{wtrpnkiggeeeeggiiknnprrttwwwwwwwttttttttttttttrrpnkigeb``^\\\\\\\\^^^`bbeggiknpprtwwyyyyyyyyyyyyy{{{}}}}{ywwtttrrtttwwwwyywwwtrrpnnkiiggeeeeeggikknprtwy{}}}{}}}}{{{yyyywwwtrrpnkgeb`^\YWWWWWWWWYYY\\\\\\\\\\\\\\^^^`bbeegiikknnnnnnnnkkiiggebb```^^^^^``bbeggiikknnnnnnnnnkkkiiggebbb``````bbeegiikknnnpppppppppprrrrrrrrrrrppppnnnkkkkiiikkkkknnnppprrtttwwwyy{{{{}}}}}}}}}}{{{yyyywwwwttttttttttwwyy{}}{{yywwtttttttttttttrrpnkiigeb``^^^^^^^^^```bbbeegiikknnpprrtttttttrrppnkiggeeebeeegikknpprrrrrrrrrrpppppprrrrtttwwyyy{{{}}}{wtrpkigebb```bbegiknprrtwwyy{{{yyywtrrpnkkiiiiiiiikkkknkkkiiggeb``^^\\\\YYYYYYYYYYYYYYYY\\^^`bbegikknpprrrttttttttttttrttttttwwwyy{{}}{ytrpnkiggeeeegiiknptwwy{}}}}}}{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}{{{{{{}}{wtpkigeb`````beggiknpprtttwwwwyyyyyyyyy{{}}ywtpnkgeb`^\\\YYY\\\\^^``bbeegiikknnnnpppprrrttwy{}{tpie`\YWWWWWWY\^`beegikknpprrtwwy{{}}{{yywwwwwwyyy{{{}}}}}}}}}{{{{{{{}}{ywtpnkigebbbbbbegiknrtwy{}}ywtrppnnnkkigeb^YUNJE>:831///113588:<>>>AAAAAACCEGLNSUY^bginprtwwyy{{{}}}}}{{yywwwtttttttttrrpnnkiigeeeeeeeggikknnnppppppppprtwy{{tpie`\YWWWWY\^beinpty{}{wtpnigeb`^^\\\\\\\^^``bbbbeeeeeeggiiknprtwy{}}}}}}{{yywwwwwwwwyyyyyyyyyywwttrrpnnkkiiggeeb`^\\YWUSPNLLLLLLNNPSUW\^`begiiknnprrtwy{}{{ywttrrppnnnnnnnpppppppnnkiieb`^\YYWUUUSSSSSSSSSSSSSSUUUUUUWWUUUUSSPPNNNLLLLNNPPSUWY\^`egikprtwwy{{{}}}}}}}}}}}}}}}}}}}{{{{yyyywwwttrpnnkigeb``^^\\\\\\\^^`bbegiknptwy{}}ywrpkigb`^\YWUSSPPPNNNPPPSSUUWYY\\^^`````^^^^^^^^^``begiknptwy{}}{wtrpkige`^^\YYYYYYYY\\^^^```bbeeggiiknnpprrttwwyy{{}}ywwtrrrrrrttwy{}}{{yyyy{{{}}}{ywtrnkigeb`^^\\\\\\\\\\\\^^^``bbbeegggiiiikknnpprtwwy{}}}{{yyywwwwtttttrrrppppnnkiigeb`^\YYWWUUWWYY^`beikprtwy{}}{wtpnkiggeeeeggiknprtwwyy{{{{{}}}}}}}{{yyywttrpkieb^YWSPNNLLLNPSUWY\`begiknnprrttwwy{}}}{wtrrpnnnnnkkkkkkiiiiiiiiiiiiiiiiiiiiiiikkknnppprrttwwyy{{{{{ywtrpkieb`\\YYYY\^`begiikkkiigeeb`````bbegiknprtwwy{}}}{{}}}}{{{{{{}}}}{wtrrpprrtwy}{wrnieb^\YWWUUUSSPPNLJGECA><::::<<>ACEGJLNPSSUUWWYY\\^`begknrtw{}}{yywtrpnnnkkkkkkiiiiggeebbbbbbbegikknprttttttttrrrrpppppppppppppprrrtwwy{}}}}{{yyyyy{{}}}{yywwwtttwwwwyyy{{}}{wtrrrrtty{}}{ywwtrrpppnnnnpprtwy{}}{{ywtrppnkkiiggiiikknprttwy{}}{wtpnkiggggiiknpprttttrppnkigeebbbbegiknprtwwyyywwwwtttwwy{}{ywtrpnkiiggeeeeeeggiikknnnkkiigeebb```bbbeggiknprtwy{}}}}{{yywwwttwwwy{{}}ywrnkge`^\YWUUSSSSSSSUWY\^`egiknpprpppnkgeb`^^^^^`egkpw{}ytpngb^YWSPNLLLLLNNPPSUUWWWYY\\\^^`bbeggiknnprtwy{}}}}}}}}{ywtrppnkkiiiiiikknnprtwwy{{}}{ywtrpppnpprtwy{}{{ywttrppnkkiiggeeeeeegggiiikknpprtwwy{{}}}{yywwtrrppnkkiggeebbbbeegiknptw{}ywrpnkkiiikkkkkkkkkiggeb``^^\\\\\\\\\\^^^^```beegiiknnprttwy{}}{ywrpnnkkkkknprtwwy{{}}}}}}{{yywtrpnkkiiiiiikknnprrttwwwwyyy{{{}}}}}}}}}{{{{}}}}}{{ywwwttttttttttttttttttttttttttttrrrrrrrrrrrtrrrrrrrrpppppprrtwy{}}ywrpnkigggggiknrty}}}}}}}}}}}}}}}}}}}{{ywwtttrrrrrrtttwy{}}}}}}}{ywtpnkkiiiiiikknpprrtttttttrrrrtttwwy{{}}}}}}}}}}}}}}}}}}}}}}{{ywwttrrrrrrrttwy{}{wtpnkiggeeggikknprrrrrrpnnkigeebb````bbbeeeeeeeebb``^^^^^^^`bbegiiknnnnnnnnkkkiiigggeeeebbbbeeeeggiiikkknnnnnnnnkkkkiiiiggiiikknprtwyy{}}}}}}}}}}}}}}}}}}}}}}}{ywtrpnnnnnprty}}}}}}{{{{{yyywttrpnnkiiggggggggiiknnprrtwwyy{{{{{{{yyyyywwwwwwwwwwwwwwwwwwwyy{{}}}}}{{{yyyy{{{}}}{{{{{}}}{yywtttttttwwwwwwwwwwwwwwwwyyy{{}}}}}}}}}}{{{{}}}}{{yywwwwwwwwyyy{{}}}}}{yywwttrrpppnnnnnnnnnppppppprrpppppppprrrrrrttttrrrpnkigeb`^^\\\\\^^`begiknppprrrrrrrrrrppppnnkkiiggeeeeeeeeggiiknprtwy{}}{{yyyyyy{{}}}{{ywwtttrrrrpprrrrrtttwwwyyy{{}}}{ywttrrrrrrrttwy{}}}{{yyyyyyyyyyyyyywwwwwwwwwwyy{{}}}}{{{yyy{{}}}ywrpnkggebb`````````bbbbeeeeggggggggggggggggggiikknnprrtwy{}}}{yywtrpkigebb`^^^^^^^^^``````````bbbbeegiiknprrtwyy{}}}}}}}}}}}{{{{{{{{{{}}}}}}}}}}}}}}{{{yyywwwttttttwwwyyyyyyywwttrrpppppprrtwy}}}{yywwtttrrrppppnnnnnnnppprrtwwwyy{{{{}}}}}}{{yyyyyywwwtrrpnkgeb``^^\\^^^`beegiknpprttwyy{{{}}}}}}}}}}}}}}}}}{{ywwtrppnnnnnnnprrtwyy{{}}}{ywttrrrrrrrttwwwyyy{{{{{{{{{{{{{{yyyyywwwwwwwwyyyyyy{{{{{}}}}}}}}}{{{yyyyywwwwwttttrrpppnnnnnnnnnnnnnnnnnnnnnnnnkkkkiiikkknprtwy{}}{ywtrpnkiiggeebb`````````bbeggiknnpprrttttttttttrrppnnkkkkkkkkkkkkkkkkkiiiggeeeeeeeggiikknnppprrtttwwwyyy{{{{{{{{{{{{{{}}}}{ywtttttwwy}}{yywwtttttrrrrrrrrrrrrrrrttwwwyyy{{{yyywwwtttrrrtttwwwyy{{{{{{{{}}}}}}}}}}}}{{yy{{{}}}{{{yyy{{{{}}}}}}}}{{{yyywwwttttttttttwwyy{{}}}}{ywttrppppprrtwy{}}{ywrpnkigeebbbbeggiknpprrrrrppnnkigebb``^^\\YYYYY\\^^`begiknnprttwwyyy{{{}}}}}}{wtrpnkkiiikknprrtwwwwttrppnkiiiiiiknptwy{}}}}{{{{{}}}{ywttrrppprrrttwwy{{}}}ywrpkgeb`^^^`begkprwy}}{wrpnigeb`^^\\\\^^`begiknrtwy{}}}{{yyy{{{}}}}}}}{{{yywwwtttttttttttttwwwwwyyyy{{{}}}}{ywtrpnnkkkknnpprrttwwwwwwyyy{{}}}}}}}}}}}}}{{{yyyyyyyyywwwttrrppnnkiggeb`^^\\\^^`begknrtwy{}}}}}}{{yywwttrrrpppppppppprrrrtttttttttttttrrrrppnnkiigeeb``^^\\YYWWWWWWYY\\^``begiikknnppppnnkkigeeb``^^^^^``beegiknprrtwyy{{{{{{yywtrnkigeebbbeegiiknnnpppnnnkkiiggggggggiikknpprtwy{}}}{{{{}}}}{yyyyyyy{{{{{{yywttrppnnkkknnnpprttwwyy{}}}{{yywwtttttwwwy{{}}}{ywtrpnkkiiiiiikkknpprrttwwyyyyyyyyyy{{{{{}}}}}}}{ywttrrrrrrrrrpppppnnnkkkkkkkkkkkkknnnpprtwy{}}ywtrppnnnpprttwwwwwttrpnkgeb`^\YYWWUUUUUWWWY\\^^``bbbbb``^^\\YYYYYY\^`begiikkkkkigeb`^\YYWWWWWYY\\^^``bbbbbb```^^^^^^^^^`````````^^^\\YYYYYYYYYY\\^^``beggiknprttwwyyyyywwwttrrppnnkkkiiigggeeebb````^^^^^^^^^^^^\\YYWUUUSSSSSUUWWY\^`begikprtwy{}}}{yywwtttttwwy{}}{ywtrppnnnnnppppppppnnnkkkiiikkkkknnnnnnnppprtwy{}}{ywwtrppnnkkkkikkkknnprrtwyy{{{}}}}}}}}}}}}}}{{{ywttrnkigeb`````begikprwy{}}}}{{ywrpnige`^\WUUSSSSUUWY\^beegggggeeb`^\\YYWWWWWWYY\\\^^^```````bbbbeeggiiknnppprrrrrrpppnnkkigeb``^\YWWUUUUUUUUWWYYY\\\^^^^^^^\\\YYWWUUSSSSPPPSSSSSSUUUUWWYY\\^`bbeggikknnppppprrpppppnnnnkkkkkkkiiiiiggggeeeeegggiikknnpprrrrrrrrrrrrrrttwwy{{}}}}}}}}}}{{yywwttrrrrppppppprrrrrtttttttrrrpppnnnnnnnknkkkkkknnnnnppprrttwwwwwwtttrrrpppppppppppppppprrrttwwyy{{{{{{{yywwtttrrrrttttwwwyyyy{{{{{}}}}{yywwwwttwwwwwyyyy{{{{{{{{{{{yyywwwtttrrrrppppppprrrttwwy{}}}}{{yyywwttttrrrrpppppnnnnkkkiiiiiiiikknprty{}}{ywtrrppnnkkkkiiikkkkkkkkkkkiggeb`^\YYWWWWWYY\\\^^^^^^^^^^^^^^^^```bbbeeeeeeeeeeeeebbbbbbb```````````````^^^^^\\\\\\\^^^``beegiikknnppppprrrrrrrrrttwwy{{}}}{{yyywwwwwttttttrrrrrrtttwwyy{}}}{ywttrrppprrrtttwwwwwwttrpnnkiiggggggggiiikkkkkkkkkkiiiiiikkknnnpprrrrrrrrrrrrrrrrrrrrtrrrrrrpppnnnkkkkknnnnppprrrrttttttwwwwyyyy{{{{{{{yyyyyyyyyy{{{{}}}}{{{yywwttrppnnkkiigggeeeeeeeeeeeeeeeeeeeeeeeebbbb``^^\\\Y\\\^`beikprtwy{{{{{{{yyywwwwwyyy{{}}}}}}{{{yywwttttttttttwwwwwwwwwwwwwwyyyyyyyyyy{{{{{{{}}}}}}}}}}}}{yywtrrppppppppppprrrrrrrrrrrrrrrtttttttttrrrppppppppppprrrrrrrrrrrppnnkkiiggeeeeeeeggiikknnpprrtttwwwwyyyyyyyyyyyywwwtttrrrrpprrrrttwyy{}}}}}}{{ywwttrrrrrrrrtttwwwyyyyyyyy{{{{}}}}{{{{{{{{}}}{ywwtrrppnnkkiiggeeeeeeeeeggiknnprttwyy{{}}}{yywttrrrpppppnnkigeb`^YWUSSSSSUWY\^begknpprrtttttttttwwwwyyyyyyyyyyywwwwwwwwwyy{{}}}{{yywwwttttwwwwyyyyyyywwwtrrppnnkkkkkkkknnnnpppppnnnnnnknnnnpprrttwyy{{}}}}}}}}}}}}}{{{{{{{yyyyyyyyyywwwwtttrrrpppppnnnnnnpppprrttwwyyyyyyywttrpnnkkkkkkknnpprrttttttttttttrrrrrrrrrrrppnnkkiiggeeeeggiknprtwwy{{}}}}}}}}}}}}}{ytrpnkiggggiiknnprtttwwwwwtttttttttttwwwwwwwwyyyyyyyyyyyyywwttrrppnnnkkkkknnnpprrttwwyyy{{}}{{ywwtrrppnnnnkkkkknnnnnnkkkkkkkknnnnpppppppppppppprrttwy{{}}{{ywtrppnnnnnnnnnnppprrtttwwwyyywwwttrrrpprrrtwy{}}}}}{{{yywwwwwyy{{}}{ywttttttttwwwyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy{{{}}}}{{yywwwwwwyy{{}}}}}}}}{{ywwttrppnnkkiiiiiggggeeebb``^^^^```beeggiiiiiiiigggggggiikknprttwyy{{}}}}{ywwttrrrppppnnnnnnnnnnnnnnnnnnnnkkkkkkkkkkkkkknnnnpprttwyy{}}}{yywttttttttttrrrppnkigeb``^^^^^^``beegiikknnpppprrrrrrttttwwwyy{}}}{{yyy{{}}}}}}}}}}{{yywwtttttttwy{{}}{{yywwttttrrrrrrrrppppnnnnnppprrttwwwwwttrpnigeb``````beggiknnppppnnkkiiggeebbb````bbeegiknrtw{}}}}{{{{{yyyyyyyyyyy{{{}}}}{{yyywwwwwwwyy{}}}}{{yywwwttttttwwwyy{}}}{{yywwwwwyy{}}}{ywwttrrrrrtttwwy{}}}}}}}}}}}}{{yywwttrrrrprrrrttttwwwtttrrppnkkkkkkknnprrtwyy{{{{{{{{{{{{}}}}{ywttrrrprrrrrrrrrrrppppnnnppprrttwyy{{}}}}}}}}}}{{yyyyyyyyywwwwwwttttttttttwwwwwwwwwwwwwwwwwyyy{{}}}}}}}}}{{{yyyy{{}}}}{{{{{{{{}}}}{{{{{{}}}}}}{{{yywwtttrrrrrrrrrttwwy{}}}{{yywwwwwwyy{{}}}{ywwttttttttwwyyyyyyywwttttttttwy{}}}}{yywwwwwyy{}}}}{yywwttrrrpppprrrttwwyy{{}}}}{yywwwtwwwwyyy{{}}}}}}}}}}}}}}}}{{{yywwtttttttwwy{}}{yywtttttttttwwyyy{{{{{{{{yyywwwwwwwwwyyyyy{yyyyywwttttrrtttwwyy{{{}}{{{ywttrpnnnnnnnprtwwyy{{{{{yywwttttttwwy{{}}}}{{{{{{{{{{{}}}}{ywttrrrttwy}}}}}}}}{{{{yyyy{{{{{{{{{{yyywwwttttttwwyy{}}}}}{{{{{{{}}}}}}}}}{{{{{{{}}}}}}}}}}}}{{yywwwyyy{{}}}}}{{{yyywwwwwwyyy{{}}}}{{ywtrpnnnknnpprwy{}}}{{ywwttttttwwwwyyyywwwwttttttttwyy{}{ywtrrpppppprrrttwwyy{{}}{{yyyyy{{}}}{{yyywwwwwwwwwwwwwwyyyy{{{}}}}}}}}}}}}}{{ywwtrppnkkkkkkknprrtwwyyyyyyyyyyy{{{}}}}{{ywttrrppnnnnkkkkiiiiiiiiiikknnnnnpnnnnkkiiiggggiiiknnppprrrrrrrppnnkkkiiiiiiiiiiiikkkkiiiiikkkknnpprttttttrrpnnkiiiiiiknprtwy{}}}}}{{yyywwwwwwwwwwyy{{}}{{yyyyyyy{{}}}}}}}}}}}}}}{{yywwwtttrrrrrrrttwwwyyy{yyywtrpnkkiggeegggiknpprtwwy{{{}}}}}}{{{{yyyywwwwwwwwwtttrrrpppppprrrttwwyyyyyywwwttttttwwyy{}}}}}}}{{{{{{{{yyyywwwwwwwwwyyyy{{{{{{{{{{{{{{{{{}}}}}}}}}}}}{{{{{{{{{{{{{{{}}}}}}}{yywwwwwwwwwwwwwttrppnkkiigggggggiiikkknnppprttwwyy{{{}}}}}}{{yywwttrrppnnkkkkkkkkkknnnnnnnnnnnnnnkkkkknnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnpppprrrtttwwwyyy{{{}}}}}}}}}}}}}}}}}{{{{{yyy{{{}}}{{ywwttrrrrrrtttwwyyyyyyyyyyyyyy{{{{}}}}}}}}}}}}}{{{{{{{{{}}}{{yywwwwwttttttwwwwyy{{}}}}{{{{{{}}}}}}}}}}}}}}}}}}}}}{yyywwwwwyyy{{{{{{{{yywwttrrrrrrrttwwyy{{}}}}}{{yyyyyyyyyyy{{{{{}}}}}}}}}}{{{{}}}}}{{yyyywwwwwwwwyyyyy{{}}}}{{{{{}}}{{{{{{{}}}}}}}}}}}}{{{yyywwwtttttwwwwwwwwwwwwwwwwwwwwyy{{{{}}}}}{{{{yyywwwwwwwyyyy{{{{{}}}}}{{{{{{yyyyyy{{{{{}}}}}}}}}}}}}}}}}{ywttrrppppprrtttwwwwwwwwwwwwwwwwyy{{}}}}}}}}{{{{{{{}}}}}}}}}}}}}}}}}}}}{yywttrrppppnnnnppppprrrrtttwwwyy{{{}}}}}{{{yywttrrppppppppppppppppnnkkiiggggggggiiknnpprrttwwwwwwwwwwttttwwwwyyy{{}}}}}}}{yywtrpnkkiiikknnprtwy{{}}}ywtrpnkkiiiiiiikknnprrtwwyyy{{{{{{{{}}}}}}}}}{{yywwwttttwwwwy{{}}}}}}}{{yywwtttrrrttwwy{{}}{yywttrrrrrpprrrrrrrttttwwwwwwwwttrrppnnkkkkkknnnppprrrrppppnnnnnnnnnppprrrtttttwwwwwwwyyyywwwwtttrrrrttwwy{}}}{{{{{{}}}}}}{{yyyyyyy{{{}}}}}}}}}}}{{{yyyyyyyyyy{{{{{{{{{}}}}}}}}{{{{{{{yyyyyyyyyyyyy{{{{{}}}}}}}{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}{{{{{yy{{{{{{{{yyyywwwwtttttwwwyy{{{}}}{{{ywwttrrpprrrtwyy{}}}{{{yyywwwwyyy{{}}}}}{yywwtttttttwwyy{{{{}{{{yywwttttrrrttttwwwwyywwwttrppnnnkkknnnprrttwwwwwwwwwwtttttttttwwyyy{{{{{{{{{yyywwwwtttttttttttttttttttttttttttttttttttttrrrrrrrrrrrrrrrrttttwwwyyyyyyyyyyywwtttrrrppppppppprrrttwwwyyyy{yyyyywwwttttwwwyy{{}}}}}}}}}}}}}}}}}}}}}}}}}}}{{yyywwwwwwwyyy{{}}}}}}{{yyyywwwwwyyy{{}}}}}}}}}}{{{{yyyy{{{{{}}}}}}}}}}}}}}}}{{{yyy{{{}}}{yyywwwwyyyy{{{{{{yywwttrrrppprrrttwwwyy{{{{}}}}}}{{{{{{yyyyyy{{{}}}}}{{yywwwtttttttwwwwyy{{}}}}}}}}}}}}}}}}}}}{}}}}}}}}{{{{{}}}}}}}}{{{{{{{{{}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{yyyyyyywwwwttttrrrppppnnnkkkiiiigggggggiiikknnppppprrrrrrrrtttwwyy{{}}}}}}{{{{{{yyyywwwttttrrrrrrrrrrrrrrrrrrrrttwwy{}}}{{{yywwwwttttttwwwwyyyyy{yyyyywwwttttttttttttwwwwwwwwwwwwwyyyyyy{{{{}}}}{{yyyywwwwyyyyyy{{{{{}}}}}}}}}}}{{yyywwwwttttttttttwwwwwwwyyyyyyyyyy{{{{{}}}}}}{{{{{{{{{}}}}}}}}}}}{{{{{yy{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{{yywwwtttttttwwwwwwwwwwwwwwwttttttttwwwwwyyyy{{{}}}}}}}{{{{}}}}}}}}}}}}}}}}{{{{{{{{}}}}}}gl-117-1.3.2/src/0000755000175000017500000000000010214470204012452 5ustar cedriccedricgl-117-1.3.2/src/3ds.cpp0000644000175000017500000005344510145416401013664 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a 3ds loader. Thanks to the great NeHe Tutorials! */ #ifndef IS_3DS_H #include #include #include #include #include #include "3ds.h" #include "common.h" #include "gl.h" #include "dirs.h" #include "mathtab.h" FILE *debugstream3ds = stdout; BinaryFile::BinaryFile (char *filename) { char buf [STDSIZE]; in = fopen (filename, "rb"); if (in == NULL) { sprintf (buf, "Cannot open file %s", filename); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } fseek (in, 0, SEEK_END); size = ftell (in); fseek (in, 0, SEEK_SET); data = new unsigned char [size]; if (data == NULL) error_outofmemory (); memset (data, 0, size); Uint32 z = 0; while (z < size) { int tmp; if (size - z >= 4096) tmp = fread (&data [z], 1, 4096, in); else tmp = fread (&data [z], 1, size - z, in); z += 4096; } fclose (in); filepointer = 0; } BinaryFile::~BinaryFile () { delete data; } int BinaryFile::readFloat (float *f) { #ifdef WORDS_BIGENDIAN ret [0] = data [filepointer + 3]; ret [1] = data [filepointer + 2]; ret [2] = data [filepointer + 1]; ret [3] = data [filepointer]; ret [4] = 0; *f = *((float *) ret); #else *f = *((float *) &data [filepointer]); #endif filepointer += 4; return 4; } int BinaryFile::readFloat (float *f, int n) { int i; for (i = 0; i < n; i ++) { readFloat (&f [i]); } return n * 4; } int BinaryFile::readUInt32 (Uint32 *i) { #ifdef WORDS_BIGENDIAN ret [0] = data [filepointer + 3]; ret [1] = data [filepointer + 2]; ret [2] = data [filepointer + 1]; ret [3] = data [filepointer]; ret [4] = 0; *i = *((Uint32 *) ret); #else *i = *((Uint32 *) &data [filepointer]); #endif filepointer += 4; return 4; } int BinaryFile::readUInt16 (Uint16 *i) { #ifdef WORDS_BIGENDIAN ret [0] = data [filepointer + 1]; ret [1] = data [filepointer + 0]; ret [2] = 0; *i = *((Uint16 *) ret); #else *i = *((Uint16 *) &data [filepointer]); #endif filepointer += 2; return 2; } int BinaryFile::readString (char *ptr, int ptrmax, int n) { if (n <= 0) return 0; if (filepointer + n > size) n = size - filepointer; if (n > ptrmax) exit (200); memcpy (ptr, &data [filepointer], n); filepointer += n; return n; } int BinaryFile::readString (char *ptr, int n) { if (n <= 0) return 0; if (filepointer + n > size) n = size - filepointer; memcpy (ptr, &data [filepointer], n); filepointer += n; return n; } int BinaryFile::readString (char *ptr) { int i = 0; while (data [filepointer] != 0 && filepointer < size) { ptr [i] = data [filepointer]; i ++; filepointer ++; } ptr [i] = 0; filepointer ++; i ++; return i; } int BinaryFile::skip (int n) { if (filepointer + n > size) n = size - filepointer; filepointer += n; return n; } /**************************************************************************** 3DS LOADER ****************************************************************************/ // Contructor -> initialization CLoad3DS::CLoad3DS () { currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); tempChunk = new Chunk; if (tempChunk == NULL) error_outofmemory (); } // Load the whole 3DS file using the private functions below bool CLoad3DS::Import3DS (CModel *model, char *filename) { char message [255] = {0}; file = new BinaryFile (filename); if (file == NULL) error_outofmemory (); // Read the first chuck ReadChunk(currentChunk); // Make sure this is a 3DS file if (currentChunk->ID != PRIMARY) { sprintf (message, "Unable to load PRIMARY chuck from file: %s", filename); display (message, LOG_FATAL); exit (EXIT_LOADFILE); } // Load objects recursively ProcessNextChunk (model, currentChunk); // Merge equal vertices Compile (model); // Calculate vertex normals ComputeNormals (model); // Load textures LoadTextures (model); // Set vertex colors using textures ComputeColors (model); // Set vertices to [(-1,-1,-1);(1,1,1)] Normalize (model); // Clean up CleanUp(); return true; } void CLoad3DS::CleanUp () { delete file; // fclose (filepointer); // Close the current file pointer /* Vorsicht: Speicherleck !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ //delete currentChunk; // Free the current chunk //delete tempChunk; // Free our temporary chunk } void CLoad3DS::ProcessNextChunk (CModel *model, Chunk *previousChunk) { char version [10]; char buf [STDSIZE]; CObject newObject; CMaterial newTexture; currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); while (previousChunk->bytesRead < previousChunk->length) { ReadChunk(currentChunk); if (currentChunk->ID == 0 && currentChunk->length == 0) exit (1000); if (debug3ds) { fprintf (debugstream3ds, "%X: ", currentChunk->ID); fflush (debugstream3ds); } switch (currentChunk->ID) { case VERSION: currentChunk->bytesRead += file->readString (version, 10, currentChunk->length - currentChunk->bytesRead); if (version [0] > 0x03) { sprintf (buf, "This 3DS file is over version 3 so it may load incorrectly"); display (buf, LOG_WARN); } if (debug3ds) { fprintf (debugstream3ds, "Version %d\n", version [0]); fflush (debugstream3ds); } break; case OBJECTINFO: ReadChunk (tempChunk); tempChunk->bytesRead += file->readString (version, 10, tempChunk->length - tempChunk->bytesRead); currentChunk->bytesRead += tempChunk->bytesRead; ProcessNextChunk (model, currentChunk); break; case MATERIAL: model->addMaterial (&newTexture); ProcessNextMaterialChunk (model, currentChunk); break; case OBJECT: model->addObject (&newObject); memset (&newObject, 0, sizeof (CObject)); currentChunk->bytesRead += GetString (model->object [model->numObjects - 1]->name); ProcessNextObjectChunk (model, (model->object [model->numObjects - 1]), currentChunk); break; case MAINSCALE: float mainscale; currentChunk->bytesRead += file->readFloat (&mainscale); model->scale = mainscale; currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; case EDITKEYFRAME: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; default: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; } previousChunk->bytesRead += currentChunk->bytesRead; } delete currentChunk; currentChunk = previousChunk; } void CLoad3DS::ProcessNextObjectChunk (CModel *model, CObject *object, Chunk *previousChunk) { currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); while (previousChunk->bytesRead < previousChunk->length) { ReadChunk(currentChunk); if (debug3ds) { fprintf (debugstream3ds, "OBJ %X: ", currentChunk->ID); fflush (debugstream3ds); } switch (currentChunk->ID) { case OBJECT_MESH: ProcessNextObjectChunk (model, object, currentChunk); break; case OBJECT_VERTICES: ReadVertices (object, currentChunk); break; case OBJECT_FACES: // triangles ReadVertexIndices (object, currentChunk); break; case OBJECT_MATERIAL: ReadObjectMaterial (model, object, currentChunk); break; case OBJECT_UV: ReadUVCoordinates (object, currentChunk); break; case OBJECT_MESHMATRIX: ReadMeshMatrix (object, currentChunk); break; default: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; } previousChunk->bytesRead += currentChunk->bytesRead; } delete currentChunk; currentChunk = previousChunk; } void CLoad3DS::ProcessNextMaterialChunk (CModel *model, Chunk *previousChunk) { currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); while (previousChunk->bytesRead < previousChunk->length) { ReadChunk(currentChunk); if (debug3ds) { fprintf (debugstream3ds, "MAT %X: ", currentChunk->ID); fflush (debugstream3ds); } switch (currentChunk->ID) { case MAT_NAME: currentChunk->bytesRead += file->readString (model->material [model->numMaterials - 1]->name, 255, currentChunk->length - currentChunk->bytesRead); break; case MAT_DIFFUSE: ReadColorChunk (model->material [model->numMaterials - 1], currentChunk); break; case MAT_MAP: ProcessNextMaterialChunk (model, currentChunk); break; case MAT_MAPFILE: currentChunk->bytesRead += file->readString (model->material [model->numMaterials - 1]->filename, 255, currentChunk->length - currentChunk->bytesRead); { char *str = model->material [model->numMaterials - 1]->filename; while (*str) { if (*str >= 'A' && *str <= 'Z') *str = tolower (*str); str++; } } break; case MAT_USCALE: ReadUScale (model->material [model->numMaterials - 1], currentChunk); break; case MAT_VSCALE: ReadVScale (model->material [model->numMaterials - 1], currentChunk); break; case MAT_UOFFSET: ReadUOffset (model->material [model->numMaterials - 1], currentChunk); break; case MAT_VOFFSET: ReadVOffset (model->material [model->numMaterials - 1], currentChunk); break; case MAT_ROTATION: ReadUVRotation (model->material [model->numMaterials - 1], currentChunk); break; default: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; } previousChunk->bytesRead += currentChunk->bytesRead; } delete currentChunk; currentChunk = previousChunk; } void CLoad3DS::ReadChunk (Chunk *pChunk) { pChunk->bytesRead = file->readUInt16 (&pChunk->ID); pChunk->bytesRead += file->readUInt32 (&pChunk->length); } int CLoad3DS::GetString (char *buffer) { return file->readString (buffer); } void CLoad3DS::ReadColorChunk (CMaterial *material, Chunk *pChunk) { ReadChunk (tempChunk); tempChunk->bytesRead += file->readString ((char *) material->color.c, 4, tempChunk->length - tempChunk->bytesRead); pChunk->bytesRead += tempChunk->bytesRead; } void CLoad3DS::ReadVertexIndices (CObject *object, Chunk *previousChunk) { Uint16 index = 0; previousChunk->bytesRead += file->readUInt16 ((Uint16 *) &object->numTriangles); object->triangle = new CTriangle [object->numTriangles]; if (object->triangle == NULL) error_outofmemory (); memset (object->triangle, 0, sizeof (CTriangle) * object->numTriangles); for (int i = 0; i < object->numTriangles; i ++) { for (int j = 0; j < 4; j++) { previousChunk->bytesRead += file->readUInt16 (&index); if (j < 3) { object->triangle [i].v [j] = &object->vertex [index]; } } } } void CLoad3DS::ReadMeshMatrix (CObject *object, Chunk *previousChunk) { float matrix [12]; previousChunk->bytesRead += file->readFloat ((float *) matrix, (previousChunk->length - previousChunk->bytesRead) / 4); // Where to put theses coords??? } void CLoad3DS::ReadUScale (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->uscale, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadVScale (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->vscale, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadUOffset (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->uoffset, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadVOffset (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->voffset, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadUVRotation (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->wrot, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadUVCoordinates (CObject *object, Chunk *previousChunk) { previousChunk->bytesRead += file->readUInt16 ((Uint16 *) &object->numTexVertex); CVector2 *p = new CVector2 [object->numTexVertex]; if (p == NULL) error_outofmemory (); previousChunk->bytesRead += file->readFloat ((float *) p, (previousChunk->length - previousChunk->bytesRead) / 4); for (int i = 0; i < object->numTexVertex; i ++) object->vertex [i].tex.take (&p [i]); delete p; } void CLoad3DS::ReadVertices (CObject *object, Chunk *previousChunk) { int i; previousChunk->bytesRead += file->readUInt16 ((Uint16 *) &object->numVertices); object->vertex = new CVertex [object->numVertices]; if (object->vertex == NULL) error_outofmemory (); memset (object->vertex, 0, sizeof (CVertex) * object->numVertices); CVector3 *p = new CVector3 [object->numVertices]; if (p == NULL) error_outofmemory (); previousChunk->bytesRead += file->readFloat ((float *) p, (previousChunk->length - previousChunk->bytesRead) / 4); for (i = 0; i < object->numVertices; i ++) { object->vertex [i].vector.take (&p [i]); } // Flip the y values with the z values as 3DMAX changed them and negate z for (i = 0; i < object->numVertices; i ++) { float fTempY = object->vertex [i].vector.y; object->vertex [i].vector.y = object->vertex [i].vector.z; object->vertex [i].vector.z = -fTempY; } delete p; } void CLoad3DS::ReadObjectMaterial (CModel *model, CObject *object, Chunk *previousChunk) { char materialName [255] = {0}; previousChunk->bytesRead += GetString (materialName); for (int i = 0; i < model->numMaterials; i ++) { if (strcmp (materialName, model->material [i]->name) == 0) { object->material = model->material [i]; if (strlen (model->material [i]->filename) > 0) if ((model->material [i]->filename [0] >= 'A' && model->material [i]->filename [0] <= 'Z') || (model->material [i]->filename [0] >= 'a' && model->material [i]->filename [0] <= 'z')) { object->hasTexture = true; } break; } else { object->material = NULL; } } currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::Compile (CModel *model) { // Merge numerically equal vertices // This is necessary to get a smooth shaded object int i; for (i = 0; i < model->numObjects; i ++) { CObject *co = model->object [i]; for (int i2 = 1; i2 < co->numVertices; i2 ++) { for (int i3 = 0; i3 < i2; i3 ++) { if (co->vertex [i2].vector.isEqual (&co->vertex [i3].vector) && // same coordinates co->vertex [i2].tex.isEqual (&co->vertex [i3].tex)) // same texture coordinates { for (int i4 = 0; i4 < co->numTriangles; i4 ++) { if (co->triangle [i4].v [0] == &co->vertex [i2]) co->triangle [i4].v [0] = &co->vertex [i3]; if (co->triangle [i4].v [1] == &co->vertex [i2]) co->triangle [i4].v [1] = &co->vertex [i3]; if (co->triangle [i4].v [2] == &co->vertex [i2]) co->triangle [i4].v [2] = &co->vertex [i3]; } } } } } // Scale texture coordinated by uscale, vscale for (i = 0; i < model->numObjects; i ++) { CObject *co = model->object [i]; float uscale = co->material->uscale; float vscale = co->material->vscale; float uoffset = co->material->uoffset; float voffset = co->material->voffset; for (int i2 = 0; i2 < co->numVertices; i2 ++) { float ax = co->vertex [i2].tex.x - 0.5; float ay = co->vertex [i2].tex.y - 0.5; float phi = -co->material->wrot; co->vertex [i2].tex.x = ax * COS(phi) - ay * SIN(phi) + 0.5; co->vertex [i2].tex.y = ax * SIN(phi) + ay * COS(phi) + 0.5; co->vertex [i2].tex.x -= uoffset; co->vertex [i2].tex.y += voffset; co->vertex [i2].tex.x = (co->vertex [i2].tex.x - 0.5) * uscale + 0.5; co->vertex [i2].tex.y = (co->vertex [i2].tex.y - 0.5) * vscale + 0.5; } } } void CLoad3DS::ComputeNormals (CModel *model) { int i, i2, i3; if (model->numObjects <= 0) return; CVector3 n; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numTriangles; i2 ++) { object->triangle [i2].getNormal (&n); for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->addNormal (&n); } } for (i2 = 0; i2 < object->numTriangles; i2 ++) { for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->normal.norm (); } } } } void CLoad3DS::LoadTextures (CModel *model) { int i, i2; char str [256]; for (i = 0; i < model->numObjects; i ++) { if (model->object [i]->hasTexture) { strcpy (str, dirs->getTextures (model->object [i]->material->filename)); for (i2 = (int) strlen (str) - 1; i2 >= 0; i2 --) { if (i2 > 2 && str [i2] == '.') { str [i2+1] = 't'; str [i2+2] = 'g'; str [i2+3] = 'a'; str [i2+4] = 0; break; } } model->object [i]->material->texture = gl->genTextureTGA (str, 0, -1, 1, false); if (model->object [i]->material->texture == NULL) model->object [i]->hasTexture = false; } } } void CLoad3DS::ComputeColors (CModel *model) { int i, i2; if (model->numObjects <= 0) return; CColor c; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { if (object->hasTexture) { CVertex *v = &object->vertex [i2]; CTexture *tex = object->material->texture; tex->getColor (&c, (int) (v->tex.x * tex->width), (int) (v->tex.y * tex->height)); int val; if (c.c [0] < 200 || c.c [1] < 200) { val = c.c [0]; val = val * 2 / 3; c.c [0] = val; val = c.c [1]; val = val * 2 / 3; c.c [1] = val; val = c.c [2]; val = val * 2 / 3; c.c [2] = val; } v->color.take (&c); } else { if (object->material) { object->vertex [i2].color.c [0] = object->material->color.c [0]; object->vertex [i2].color.c [1] = object->material->color.c [1]; object->vertex [i2].color.c [2] = object->material->color.c [2]; } else { object->vertex [i2].color.c [0] = 200; object->vertex [i2].color.c [1] = 200; object->vertex [i2].color.c [2] = 200; } } } } } void CLoad3DS::Normalize (CModel *model) { int i, i2; float minx = 1E10, miny = 1E10, minz = 1E10; float maxx = -1E10, maxy = -1E10, maxz = -1E10; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; if (v->vector.x > maxx) maxx = v->vector.x; if (v->vector.y > maxy) maxy = v->vector.y; if (v->vector.z > maxz) maxz = v->vector.z; if (v->vector.x < minx) minx = v->vector.x; if (v->vector.y < miny) miny = v->vector.y; if (v->vector.z < minz) minz = v->vector.z; } } float tlx = (maxx + minx) / 2.0; float tly = (maxy + miny) / 2.0; float tlz = (maxz + minz) / 2.0; model->scalex = (maxx - minx) * 0.5; model->scaley = (maxy - miny) * 0.5; model->scalez = (maxz - minz) * 0.5; float sc = model->scalex > model->scaley ? model->scalex : model->scaley; sc = model->scalez > sc ? model->scalez : sc; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; v->vector.x -= tlx; v->vector.x /= sc; v->vector.y -= tly; v->vector.y /= sc; v->vector.z -= tlz; v->vector.z /= sc; } } } #endif gl-117-1.3.2/src/3ds.cpp~0000644000175000017500000005344610145416156014072 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a 3ds loader. Thanks to the great NeHe Tutorials! */ #ifndef IS_3DS_H #include #include #include #include #include #include "3ds.h" #include "common.h" #include "gl.h" #include "dirs.h" #include "mathtab.h" FILE *debugstream3ds = stdout; BinaryFile::BinaryFile (char *filename) { char buf [STDSIZE]; in = fopen (filename, "rb"); if (in == NULL) { sprintf (buf, "Cannot open file %s", filename); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } fseek (in, 0, SEEK_END); size = ftell (in); fseek (in, 0, SEEK_SET); data = new unsigned char [size]; if (data == NULL) error_outofmemory (); memset (data, 0, size); Uint32 z = 0; while (z < size) { int tmp; if (size - z >= 4096) tmp = fread (&data [z], 1, 4096, in); else tmp = fread (&data [z], 1, size - z, in); z += 4096; } fclose (in); filepointer = 0; } BinaryFile::~BinaryFile () { delete data; } int BinaryFile::readFloat (float *f) { #ifdef WORDS_BIGENDIAN ret [0] = data [filepointer + 3]; ret [1] = data [filepointer + 2]; ret [2] = data [filepointer + 1]; ret [3] = data [filepointer]; ret [4] = 0; *f = *((float *) ret); #else *f = *((float *) &data [filepointer]); #endif filepointer += 4; return 4; } int BinaryFile::readFloat (float *f, int n) { int i; for (i = 0; i < n; i ++) { readFloat (&f [i]); } return n * 4; } int BinaryFile::readUInt32 (Uint32 *i) { #ifdef WORDS_BIGENDIAN ret [0] = data [filepointer + 3]; ret [1] = data [filepointer + 2]; ret [2] = data [filepointer + 1]; ret [3] = data [filepointer]; ret [4] = 0; *i = *((Uint32 *) ret); #else *i = *((Uint32 *) &data [filepointer]); #endif filepointer += 4; return 4; } int BinaryFile::readUInt16 (Uint16 *i) { #ifdef WORDS_BIGENDIAN ret [0] = data [filepointer + 1]; ret [1] = data [filepointer + 0]; ret [2] = 0; *i = *((Uint16 *) ret); #else *i = *((Uint16 *) &data [filepointer]); #endif filepointer += 2; return 2; } int BinaryFile::readString (char *ptr, int ptrmax, int n) { if (n <= 0) return 0; if (filepointer + n > size) n = size - filepointer; if (n > ptrmax) exit (200); memcpy (ptr, &data [filepointer], n); filepointer += n; return n; } int BinaryFile::readString (char *ptr, int n) { if (n <= 0) return 0; if (filepointer + n > size) n = size - filepointer; memcpy (ptr, &data [filepointer], n); filepointer += n; return n; } int BinaryFile::readString (char *ptr) { int i = 0; while (data [filepointer] != 0 && filepointer < size) { ptr [i] = data [filepointer]; i ++; filepointer ++; } ptr [i] = 0; filepointer ++; i ++; return i; } int BinaryFile::skip (int n) { if (filepointer + n > size) n = size - filepointer; filepointer += n; return n; } /**************************************************************************** 3DS LOADER ****************************************************************************/ // Contructor -> initialization CLoad3DS::CLoad3DS () { currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); tempChunk = new Chunk; if (tempChunk == NULL) error_outofmemory (); } // Load the whole 3DS file using the private functions below bool CLoad3DS::Import3DS (CModel *model, char *filename) { char message [255] = {0}; file = new BinaryFile (filename); if (file == NULL) error_outofmemory (); // Read the first chuck ReadChunk(currentChunk); // Make sure this is a 3DS file if (currentChunk->ID != PRIMARY) { sprintf (message, "Unable to load PRIMARY chuck from file: %s", filename); display (message, LOG_FATAL); exit (EXIT_LOADFILE); } // Load objects recursively ProcessNextChunk (model, currentChunk); // Merge equal vertices Compile (model); // Calculate vertex normals ComputeNormals (model); // Load textures LoadTextures (model); // Set vertex colors using textures ComputeColors (model); // Set vertices to [(-1,-1,-1);(1,1,1)] Normalize (model); // Clean up CleanUp(); return true; } void CLoad3DS::CleanUp () { delete file; // fclose (filepointer); // Close the current file pointer /* Vorsicht: Speicherleck !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ //delete currentChunk; // Free the current chunk //delete tempChunk; // Free our temporary chunk } void CLoad3DS::ProcessNextChunk (CModel *model, Chunk *previousChunk) { char version [10]; char buf [STDSIZE]; CObject newObject; CMaterial newTexture; currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); while (previousChunk->bytesRead < previousChunk->length) { ReadChunk(currentChunk); if (currentChunk->ID == 0 && currentChunk->length == 0) exit (1000); if (debug3ds) { fprintf (debugstream3ds, "%X: ", currentChunk->ID); fflush (debugstream3ds); } switch (currentChunk->ID) { case VERSION: currentChunk->bytesRead += file->readString (version, 10, currentChunk->length - currentChunk->bytesRead); if (version [0] > 0x03) { sprintf (buf, "This 3DS file is over version 3 so it may load incorrectly"); display (buf, LOG_WARN); } if (debug3ds) { fprintf (debugstream3ds, "Version %d\n", version [0]); fflush (debugstream3ds); } break; case OBJECTINFO: ReadChunk (tempChunk); tempChunk->bytesRead += file->readString (version, 10, tempChunk->length - tempChunk->bytesRead); currentChunk->bytesRead += tempChunk->bytesRead; ProcessNextChunk (model, currentChunk); break; case MATERIAL: model->addMaterial (&newTexture); ProcessNextMaterialChunk (model, currentChunk); break; case OBJECT: model->addObject (&newObject); memset (&newObject, 0, sizeof (CObject)); currentChunk->bytesRead += GetString (model->object [model->numObjects - 1]->name); ProcessNextObjectChunk (model, (model->object [model->numObjects - 1]), currentChunk); break; case MAINSCALE: float mainscale; currentChunk->bytesRead += file->readFloat (&mainscale); model->scale = mainscale; currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; case EDITKEYFRAME: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; default: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; } previousChunk->bytesRead += currentChunk->bytesRead; } delete currentChunk; currentChunk = previousChunk; } void CLoad3DS::ProcessNextObjectChunk (CModel *model, CObject *object, Chunk *previousChunk) { currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); while (previousChunk->bytesRead < previousChunk->length) { ReadChunk(currentChunk); if (debug3ds) { fprintf (debugstream3ds, "OBJ %X: ", currentChunk->ID); fflush (debugstream3ds); } switch (currentChunk->ID) { case OBJECT_MESH: ProcessNextObjectChunk (model, object, currentChunk); break; case OBJECT_VERTICES: ReadVertices (object, currentChunk); break; case OBJECT_FACES: // triangles ReadVertexIndices (object, currentChunk); break; case OBJECT_MATERIAL: ReadObjectMaterial (model, object, currentChunk); break; case OBJECT_UV: ReadUVCoordinates (object, currentChunk); break; case OBJECT_MESHMATRIX: ReadMeshMatrix (object, currentChunk); break; default: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; } previousChunk->bytesRead += currentChunk->bytesRead; } delete currentChunk; currentChunk = previousChunk; } void CLoad3DS::ProcessNextMaterialChunk (CModel *model, Chunk *previousChunk) { currentChunk = new Chunk; if (currentChunk == NULL) error_outofmemory (); while (previousChunk->bytesRead < previousChunk->length) { ReadChunk(currentChunk); if (debug3ds) { fprintf (debugstream3ds, "MAT %X: ", currentChunk->ID); fflush (debugstream3ds); } switch (currentChunk->ID) { case MAT_NAME: currentChunk->bytesRead += file->readString (model->material [model->numMaterials - 1]->name, 255, currentChunk->length - currentChunk->bytesRead); break; case MAT_DIFFUSE: ReadColorChunk (model->material [model->numMaterials - 1], currentChunk); break; case MAT_MAP: ProcessNextMaterialChunk (model, currentChunk); break; case MAT_MAPFILE: currentChunk->bytesRead += file->readString (model->material [model->numMaterials - 1]->filename, 255, currentChunk->length - currentChunk->bytesRead); { char *str = model->material [model->numMaterials - 1]->filename; while (*str) { if (*str >= 'A' && *str <= 'Z') *str = tolower (*str); str++; } } break; case MAT_USCALE: ReadUScale (model->material [model->numMaterials - 1], currentChunk); break; case MAT_VSCALE: ReadVScale (model->material [model->numMaterials - 1], currentChunk); break; case MAT_UOFFSET: ReadUOffset (model->material [model->numMaterials - 1], currentChunk); break; case MAT_VOFFSET: ReadVOffset (model->material [model->numMaterials - 1], currentChunk); break; case MAT_ROTATION: ReadUVRotation (model->material [model->numMaterials - 1], currentChunk); break; default: currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); break; } previousChunk->bytesRead += currentChunk->bytesRead; } delete currentChunk; currentChunk = previousChunk; } void CLoad3DS::ReadChunk (Chunk *pChunk) { pChunk->bytesRead = file->readUInt16 (&pChunk->ID); pChunk->bytesRead += file->readUInt32 (&pChunk->length); } int CLoad3DS::GetString (char *buffer) { return file->readString (buffer); } void CLoad3DS::ReadColorChunk (CMaterial *material, Chunk *pChunk) { ReadChunk (tempChunk); tempChunk->bytesRead += file->readString ((char *) material->color.c, 4, tempChunk->length - tempChunk->bytesRead); pChunk->bytesRead += tempChunk->bytesRead; } void CLoad3DS::ReadVertexIndices (CObject *object, Chunk *previousChunk) { Uint16 index = 0; previousChunk->bytesRead += file->readUInt16 ((Uint16 *) &object->numTriangles); object->triangle = new CTriangle [object->numTriangles]; if (object->triangle == NULL) error_outofmemory (); memset (object->triangle, 0, sizeof (CTriangle) * object->numTriangles); for (int i = 0; i < object->numTriangles; i ++) { for (int j = 0; j < 4; j++) { previousChunk->bytesRead += file->readUInt16 (&index); if (j < 3) { object->triangle [i].v [j] = &object->vertex [index]; } } } } void CLoad3DS::ReadMeshMatrix (CObject *object, Chunk *previousChunk) { float matrix [12]; previousChunk->bytesRead += file->readFloat ((float *) matrix, (previousChunk->length - previousChunk->bytesRead) / 4); // Where to put theses coords??? } void CLoad3DS::ReadUScale (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->uscale, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadVScale (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->vscale, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadUOffset (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->uoffset, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadVOffset (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->voffset, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadUVRotation (CMaterial *material, Chunk *previousChunk) { previousChunk->bytesRead += file->readFloat (&material->wrot, 1); previousChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::ReadUVCoordinates (CObject *object, Chunk *previousChunk) { previousChunk->bytesRead += file->readUInt16 ((Uint16 *) &object->numTexVertex); CVector2 *p = new CVector2 [object->numTexVertex]; if (p == NULL) error_outofmemory (); previousChunk->bytesRead += file->readFloat ((float *) p, (previousChunk->length - previousChunk->bytesRead) / 4); for (int i = 0; i < object->numTexVertex; i ++) object->vertex [i].tex.take (&p [i]); delete p; } void CLoad3DS::ReadVertices (CObject *object, Chunk *previousChunk) { int i; previousChunk->bytesRead += file->readUInt16 ((Uint16 *) &object->numVertices); object->vertex = new CVertex [object->numVertices]; if (object->vertex == NULL) error_outofmemory (); memset (object->vertex, 0, sizeof (CVertex) * object->numVertices); CVector3 *p = new CVector3 [object->numVertices]; if (p == NULL) error_outofmemory (); previousChunk->bytesRead += file->readFloat ((float *) p, (previousChunk->length - previousChunk->bytesRead) / 4); for (i = 0; i < object->numVertices; i ++) { object->vertex [i].vector.take (&p [i]); } // Flip the y values with the z values as 3DMAX changed them and negate z for (i = 0; i < object->numVertices; i ++) { float fTempY = object->vertex [i].vector.y; object->vertex [i].vector.y = object->vertex [i].vector.z; object->vertex [i].vector.z = -fTempY; } delete p; } void CLoad3DS::ReadObjectMaterial (CModel *model, CObject *object, Chunk *previousChunk) { char materialName [255] = {0}; previousChunk->bytesRead += GetString (materialName); for (int i = 0; i < model->numMaterials; i ++) { if (strcmp (materialName, model->material [i]->name) == 0) { object->material = model->material [i]; if (strlen (model->material [i]->filename) > 0) if ((model->material [i]->filename [0] >= 'A' && model->material [i]->filename [0] <= 'Z') || (model->material [i]->filename [0] >= 'a' && model->material [i]->filename [0] <= 'z')) { object->hasTexture = true; } break; } else { object->material = NULL; } } currentChunk->bytesRead += file->skip (currentChunk->length - currentChunk->bytesRead); } void CLoad3DS::Compile (CModel *model) { // Merge numerically equal vertices // This is necessary to get a smooth shaded object int i; for (i = 0; i < model->numObjects; i ++) { CObject *co = model->object [i]; for (int i2 = 1; i2 < co->numVertices; i2 ++) { for (int i3 = 0; i3 < i2; i3 ++) { if (co->vertex [i2].vector.isEqual (&co->vertex [i3].vector) && // same coordinates co->vertex [i2].tex.isEqual (&co->vertex [i3].tex)) // same texture coordinates { for (int i4 = 0; i4 < co->numTriangles; i4 ++) { if (co->triangle [i4].v [0] == &co->vertex [i2]) co->triangle [i4].v [0] = &co->vertex [i3]; if (co->triangle [i4].v [1] == &co->vertex [i2]) co->triangle [i4].v [1] = &co->vertex [i3]; if (co->triangle [i4].v [2] == &co->vertex [i2]) co->triangle [i4].v [2] = &co->vertex [i3]; } } } } } // Scale texture coordinated by uscale, vscale for (i = 0; i < model->numObjects; i ++) { CObject *co = model->object [i]; float uscale = co->material->uscale; float vscale = co->material->vscale; float uoffset = co->material->uoffset; float voffset = co->material->voffset; for (int i2 = 0; i2 < co->numVertices; i2 ++) { float ax = co->vertex [i2].tex.x - 0.5; float ay = co->vertex [i2].tex.y - 0.5; float phi = -co->material->wrot; co->vertex [i2].tex.x = ax * COS(phi) - ay * SIN(phi) + 0.5; co->vertex [i2].tex.y = ax * SIN(phi) + ay * COS(phi) + 0.5; co->vertex [i2].tex.x -= uoffset; co->vertex [i2].tex.y += voffset; co->vertex [i2].tex.x = (co->vertex [i2].tex.x - 0.5) * uscale + 0.5; co->vertex [i2].tex.y = (co->vertex [i2].tex.y - 0.5) * vscale + 0.5; } } } void CLoad3DS::ComputeNormals (CModel *model) { int i, i2, i3; if (model->numObjects <= 0) return; CVector3 n; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numTriangles; i2 ++) { object->triangle [i2].getNormal (&n); for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->addNormal (&n); } } for (i2 = 0; i2 < object->numTriangles; i2 ++) { for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->normal.norm (); } } } } void CLoad3DS::LoadTextures (CModel *model) { int i, i2; char str [256]; for (i = 0; i < model->numObjects; i ++) { if (model->object [i]->hasTexture) { strcpy (str, dirs->getTextures (model->object [i]->material->filename)); for (i2 = (int) strlen (str) - 1; i2 >= 0; i2 --) { if (i2 > 2 && str [i2] == '.') { str [i2+1] = 't'; str [i2+2] = 'g'; str [i2+3] = 'a'; str [i2+4] = 0; break; } } model->object [i]->material->texture = gl->genTextureTGA (str, 0, -1, 1, false); if (model->object [i]->material->texture == NULL) model->object [i]->hasTexture = false; } } } void CLoad3DS::ComputeColors (CModel *model) { int i, i2; if (model->numObjects <= 0) return; CColor c; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { if (object->hasTexture) { CVertex *v = &object->vertex [i2]; CTexture *tex = object->material->texture; tex->getColor (&c, (int) (v->tex.x * tex->width), (int) (v->tex.y * tex->height)); int val; if (c.c [0] < 200 || c.c [1] < 200) { val = c.c [0]; val = val * 2 / 3; c.c [0] = val; val = c.c [1]; val = val * 2 / 3; c.c [1] = val; val = c.c [2]; val = val * 2 / 3; c.c [2] = val; } v->color.take (&c); } else { if (object->material) { object->vertex [i2].color.c [0] = object->material->color.c [0]; object->vertex [i2].color.c [1] = object->material->color.c [1]; object->vertex [i2].color.c [2] = object->material->color.c [2]; } else { object->vertex [i2].color.c [0] = 200; object->vertex [i2].color.c [1] = 200; object->vertex [i2].color.c [2] = 200; } } } } } void CLoad3DS::Normalize (CModel *model) { int i, i2; float minx = 1E10, miny = 1E10, minz = 1E10; float maxx = -1E10, maxy = -1E10, maxz = -1E10; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; if (v->vector.x > maxx) maxx = v->vector.x; if (v->vector.y > maxy) maxy = v->vector.y; if (v->vector.z > maxz) maxz = v->vector.z; if (v->vector.x < minx) minx = v->vector.x; if (v->vector.y < miny) miny = v->vector.y; if (v->vector.z < minz) minz = v->vector.z; } } float tlx = (maxx + minx) / 2.0; float tly = (maxy + miny) / 2.0; float tlz = (maxz + minz) / 2.0; model->scalex = (maxx - minx) * 0.5; model->scaley = (maxy - miny) * 0.5; model->scalez = (maxz - minz) * 0.5; float sc = model->scalex > model->scaley ? model->scalex : model->scaley; sc = model->scalez > sc ? model->scalez : sc; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; v->vector.x -= tlx; v->vector.x /= sc; v->vector.y -= tly; v->vector.y /= sc; v->vector.z -= tlz; v->vector.z /= sc; } } }; #endif gl-117-1.3.2/src/3ds.h0000644000175000017500000001005110145416156013322 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a 3ds loader. Thanks to the great NeHe Tutorials! */ #ifndef IS_3DS_H #define IS_3DS_H #include "model.h" // ok const int debug3ds = 0; // set to 1 to get all Chunk IDs to stdout // abstract binary file representation in memory class BinaryFile { public: FILE *in; // file struct Uint32 size; // file size Uint32 filepointer; // pointer to char in memory unsigned char *data; // file data in memory unsigned char ret [11]; // big endian swapping buffer // data type conversation BinaryFile (char *filename); ~BinaryFile (); int readFloat (float *f); int readFloat (float *f, int n); int readUInt32 (Uint32 *i); int readUInt16 (Uint16 *i); int readString (char *ptr, int ptrmax, int n); int readString (char *ptr, int n); int readString (char *ptr); int skip (int n); }; // Primary Chunk (19789) #define PRIMARY 0x4D4D // Main Chunks (15677, 2, 45056) #define VERSION 0x0002 #define MAINSCALE 0x0100 #define OBJECTINFO 0x3D3D #define EDITKEYFRAME 0xB000 // Sub defines of OBJECTINFO (45055, 16384) #define MATERIAL 0xAFFF #define OBJECT 0x4000 // Sub defines of MATERIAL #define MAT_NAME 0xA000 #define MAT_DIFFUSE 0xA020 #define MAT_MAP 0xA200 #define MAT_MAPFILE 0xA300 #define MAT_USCALE 0xA354 #define MAT_VSCALE 0xA356 #define MAT_UOFFSET 0xA358 #define MAT_VOFFSET 0xA35A #define MAT_ROTATION 0xA35C // Read new object #define OBJECT_MESH 0x4100 // Sub defines of OBJECT_MESH #define OBJECT_VERTICES 0x4110 #define OBJECT_FACES 0x4120 #define OBJECT_MATERIAL 0x4130 #define OBJECT_UV 0x4140 #define OBJECT_MESHMATRIX 0x4160 // Structure for the 3DS indicies struct Indices { Uint16 a, b, c, bVisible; }; // Chunk info struct Chunk { Uint16 ID; Uint32 length; Uint32 bytesRead; }; // CLoad3DS handles all of the loading code (see NEHE's OpenGL tutorials) class CLoad3DS { public: BinaryFile *file; CLoad3DS (); bool Import3DS (CModel *model, char *filename); // developer specific loading routines private: int GetString (char *); void ReadChunk (Chunk *); void ProcessNextChunk (CModel *model, Chunk *); void ProcessNextObjectChunk (CModel *model, CObject *object, Chunk *); void ProcessNextMaterialChunk (CModel *model, Chunk *); void ReadColorChunk (CMaterial *material, Chunk *pChunk); void ReadVertices (CObject *object, Chunk *); void ReadVertexIndices (CObject *object, Chunk *); void ReadUVCoordinates (CObject *object, Chunk *); void ReadMeshMatrix (CObject *object, Chunk *); void ReadUScale (CMaterial *material, Chunk *); void ReadVScale (CMaterial *material, Chunk *); void ReadUOffset (CMaterial *material, Chunk *); void ReadVOffset (CMaterial *material, Chunk *); void ReadUVRotation (CMaterial *material, Chunk *); void ReadObjectMaterial (CModel *model, CObject *object, Chunk *previousChunk); void Compile (CModel *model); void ComputeNormals (CModel *model); void ComputeColors (CModel *model); void LoadTextures (CModel *model); void Normalize (CModel *model); void CleanUp (); FILE *filepointer; Chunk *currentChunk; Chunk *tempChunk; }; #endif gl-117-1.3.2/src/aiobject.cpp0000644000175000017500000024457610145416156014771 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes all AI objects instancing models. */ #ifndef IS_AIOBJECT_H #include "aiobject.h" #include "glland.h" #include "main.h" #include "mathtab.h" // disabled int DynamicObj::net_write () { net [0] = '.'; int z = 1; memcpy (&net [z], &tl->x, sizeof (&tl->x)); z += sizeof (&tl->x); memcpy (&net [z], &tl->y, sizeof (&tl->y)); z += sizeof (&tl->y); memcpy (&net [z], &tl->z, sizeof (&tl->z)); z += sizeof (&tl->z); memcpy (&net [z], &phi, sizeof (&phi)); z += sizeof (&phi); memcpy (&net [z], &theta, sizeof (&theta)); z += sizeof (&theta); memcpy (&net [z], &gamma, sizeof (&gamma)); z += sizeof (&gamma); return z; } // disabled void DynamicObj::net_read () { int z = 1; memcpy (&tl->x, &net [z], sizeof (&tl->x)); z += sizeof (&tl->x); memcpy (&tl->y, &net [z], sizeof (&tl->y)); z += sizeof (&tl->y); memcpy (&tl->z, &net [z], sizeof (&tl->z)); z += sizeof (&tl->z); memcpy (&phi, &net [z], sizeof (&phi)); z += sizeof (&phi); memcpy (&theta, &net [z], sizeof (&theta)); z += sizeof (&theta); memcpy (&gamma, &net [z], sizeof (&gamma)); z += sizeof (&gamma); } void DynamicObj::activate () { active = true; draw = true; } void DynamicObj::deactivate () { active = false; draw = false; } void DynamicObj::dinit () { rot->a = 90; phi = 0; theta = 0; gamma = 180; rectheta = 0; tl->z = 0; tl->x = 0; forcex = 0; forcez = 0; forcey = 0; maxthrust = 0.3; braking = 0/*0.99*/; manoeverability = 0.5; thrust = maxthrust; recthrust = thrust; recheight = 5.0; ttl = -1; shield = 0.01F; maxshield = 0.01F; immunity = 0; recgamma = 180; id = CANNON1; impact = 7; source = NULL; points = 0; party = 0; easymodel = 1; // easy model elevatoreffect = 0; ruddereffect = 0; rolleffect = 0; maxgamma = 70; maxtheta = 90; gamma = 180; theta = 0; explode = 0; sink = 0; nimbility = 1.0; fighterkills = 0; shipkills = 0; tankkills = 0; otherkills = 0; killed = false; realism = false; accx = accy = accz = 0; } DynamicObj::DynamicObj () { dinit (); } DynamicObj::DynamicObj (Space *space2, CModel *o2, float zoom2) { this->space = space2; o = o2; zoom = zoom2; dinit (); space->addObject (this); } void DynamicObj::thrustUp () { recthrust += maxthrust / 12; if (recthrust > maxthrust) recthrust = maxthrust; } void DynamicObj::thrustDown () { recthrust -= maxthrust / 12; if (recthrust < maxthrust / 2) recthrust = maxthrust / 2; } float DynamicObj::distance (DynamicObj *target) { float dx = target->tl->x - tl->x; float dz = target->tl->z - tl->z; float dy = target->tl->y - tl->y; return sqrt (dx * dx + dz * dz + dy * dy); } float DynamicObj::distanceXZ (DynamicObj *target) { float dx = target->tl->x - tl->x; float dz = target->tl->z - tl->z; return sqrt (dx * dx + dz * dz); } // check whether the object is exploding or sinking and deactivate if necessary void DynamicObj::checkExplosion (Uint32 dt) { if (explode > 0) { if (explode == 1) { ttl = -1; if (id == STATIC_CONTAINER1 || id == STATIC_RADAR1 || id == STATIC_COMPLEX1) { setExplosion (1.5, 40 * timestep); setBlackSmoke (3.0, 80 * timestep); } else if (id == STATIC_OILRIG1) { setExplosion (3.0, 40 * timestep); setBlackSmoke (5.5, 80 * timestep); } else if (id == STATIC_TENT1) { } else if (id == TANK1) { } else { float zoom2 = zoom * 2; if (zoom2 > 2) zoom2 = 2; setExplosion (zoom2, 35 * timestep); setBlackSmoke (1.0, 60 * timestep); } } if (id >= STATIC_GROUND || (id >= MOVING_GROUND && id <= MOVING_WATER)) { if (explode >= 25 * timestep && ttl == -1) { setExplosion (zoom * 2, 35 * timestep); setBlackSmoke (1.0, 60 * timestep); ttl = -2; } if (explode >= 30 * timestep && ttl == -2) { setExplosion (zoom * 2, 35 * timestep); setBlackSmoke (1.0, 60 * timestep); ttl = -3; } } if (explode >= 35 * timestep) { deactivate (); ttl = -1; explode += dt; // must be > 35*timestep to end mission if (id >= STATIC_GROUND || (id >= MOVING_GROUND && id <= MOVING_WATER)) { explode = 0; draw = true; id = STATIC_PASSIVE; shield = 100000; o = &model_rubble1; zoom *= 0.7F; if (zoom > 1) zoom = 1; tl->y = l->getExactHeight (tl->x, tl->z) + zoom / 4; } } else { explode += dt; } } if (sink) { sink += dt; if (sink > 100 * timestep) { deactivate (); ttl = -1; } } } // check the objects shield value and explode/sink if necessary void DynamicObj::checkShield () { if (shield <= 0) { shield = 0; if (explode <= 0) { if (id >= MISSILE1 && id <= MISSILE2) { explode = 1; active = false; } if (id >= FIGHTER1 && id <= FIGHTER2) { explode = 1; active = false; } if (id >= TANK1 && id <= TANK2) { explode = 1; active = false; } if (id >= FLAK1 && id <= FLAK2) { explode = 1; active = false; } if (id >= STATIC_PASSIVE) { explode = 1; active = false; } } if (sink <= 0) if (id >= SHIP1 && id <= SHIP2) { sink = 1; } } } // check whether the object collides on the ground and alter gamma and y-translation void DynamicObj::crashGround (Uint32 dt) { if (id >= MOVING_GROUND) return; float height = tl->y - l->getExactHeight (tl->x, tl->z); if (height < zoom) { tl->y -= (height - zoom); gamma += 10; if (shield > 0) { if (id >= MISSILE1 && id <= MISSILE2) { setExplosion (1.2, 30 * timestep); setBlackSmoke (1.2, 30 * timestep); } if (id >= FIGHTER1 && id <= FIGHTER2) { setExplosion (0.2, 25 * timestep); setBlackSmoke (0.5, 25 * timestep); } } if (id >= CANNON1 && id <= CANNON2) deactivate (); float decfac = 3.0F; if (this == (DynamicObj *) fplayer && game == GAME_PLAY) { if (difficulty == 1) decfac = 6.0F; else if (difficulty == 2) decfac = 15.0F; } if (realism && this == (DynamicObj *) fplayer && game == GAME_PLAY) shield = -1; else shield -= decfac * dt / timestep; } // restrict to a maximum height, we want an action game!!! a little bit more now 50 -> 80 if (height > 80) tl->y = l->getHeight (tl->x, tl->z) + 80; } // check for collision, simplified model, each model is surrounded by a cube // this works pretty well, but we must use more than one model for complex models or scenes void DynamicObj::collide (DynamicObj *d, Uint32 dt) // d must be the medium (laser, missile) { if (immunity > 0 || d->immunity > 0) return; if (explode > 0 || sink > 0) return; bool collide = false; if (tl->x + o->cubex >= d->tl->x - d->o->cubex && tl->x - o->cubex <= d->tl->x + d->o->cubex && tl->y + o->cubey >= d->tl->y - d->o->cubey && tl->y - o->cubey <= d->tl->y + d->o->cubey && tl->z + o->cubez >= d->tl->z - d->o->cubez && tl->z - o->cubez <= d->tl->z + d->o->cubez) { collide = true; } if (collide) { if (this == (DynamicObj *) fplayer && game == GAME_PLAY && realism && d->id >= AIR && d->id < MOVING_GROUND) { shield = -1.0F; // player collision vs another plane in SIM mode, boom d->shield = -1.0F; } if (id < STATIC_PASSIVE || (id >= STATIC_PASSIVE && d->id >= MISSILE1 && d->id <= MISSILE2)) shield -= (float) d->impact; else shield -= 2.0F; d->shield -= (float) impact; if (d->source != NULL && active) // only for missiles/cannons { if (d->source->party != party) // calculate points { if (maxshield < 2000) d->source->points += (int) impact; // extra points for shooting an enemy object } else { d->source->points -= (int) impact; // subtract points for shooting an own object } if (shield <= 0) if (d->source->party != party && active && draw && !killed) if (d->source->id >= FIGHTER1 && d->source->id <= FIGHTER2) { killed = true; if (id >= FIGHTER1 && id <= FIGHTER2) d->source->fighterkills ++; else if (id >= SHIP1 && id <= SHIP2) d->source->shipkills ++; else if ((id >= FLAK1 && id <= FLAK2) || (id >= TANK1 && id <= TANK2)) d->source->tankkills ++; else d->source->otherkills ++; } } setExplosion (0.2, 20 * timestep); setBlackSmoke (0.5, 30 * timestep); } } void DynamicObj::setExplosion (float maxzoom, int len) { int i; for (i = 0; i < maxexplosion; i ++) // search a free explosion instance if (explosion [i]->ttl <= 0) break; if (i >= maxexplosion) i = 0; explosion [i]->setExplosion (tl->x, tl->y, tl->z, forcex, forcey, forcez, maxzoom, len); } void DynamicObj::setBlackSmoke (float maxzoom, int len) { int i; for (i = 0; i < maxblacksmoke; i ++) // search a free blacksmoke instance if (blacksmoke [i]->ttl <= 0) break; if (i >= maxblacksmoke) i = 0; blacksmoke [i]->setBlackSmoke (tl->x, tl->y, tl->z, phi, maxzoom, len); } // return heading difference towards enemy int DynamicObj::getAngle (DynamicObj *o) { float dx2 = o->tl->x - tl->x, dz2 = o->tl->z - tl->z; int a, w = (int) phi; if (dz2 > -0.0001 && dz2 < 0.0001) dz2 = 0.0001; a = (int) (atan (dx2 / dz2) * 180 / PI); if (dz2 > 0) { if (dx2 > 0) a -= 180; else a += 180; } int aw = a - w; if (aw < -180) aw += 360; if (aw > 180) aw -= 360; return aw; } // return elevation difference towards enemy int DynamicObj::getAngleH (DynamicObj *o) { float disttarget = distance (o); return (int) (atan ((o->tl->y - tl->y) / disttarget) * 180 / PI - (gamma - 180)); } // check for a looping, this is tricky :-) bool DynamicObj::checkLooping () { if (gamma > 270) { gamma = 540 - gamma; theta += 180; phi += 180; rectheta += 180; if (theta >= 360) theta -= 360; if (rectheta >= 360) rectheta -= 360; if (phi >= 360) phi -= 360; return true; } else if (gamma < 90) { gamma = 180 - gamma; theta += 180; phi += 180; rectheta += 180; if (theta >= 360) theta -= 360; if (rectheta >= 360) rectheta -= 360; if (phi >= 360) phi -= 360; return true; } return false; } // discrete movement, called about timestep times per second, timer-dependant, currently without extra thread (GLUT)! void DynamicObj::move (Uint32 dt) { if (dt <= 0) return; if (realspeed <= 0) realspeed = 1.0F; float brakepower = 1.0F; float timefac = (float) dt / (float) timestep; checkExplosion (dt); // check if this object is exploding if (sink > 0) // only ships (they will not explode) { tl->y -= 0.02 * timefac; // sink down gamma = recgamma = 180.0 + 0.5 * (float) sink / timestep; // change angle when sinking return; // and exit move() } if (!active && !draw) return; // exit if not active if (id >= STATIC_PASSIVE) // only buildings, static objects { if (id == STATIC_TENT1) theta = 178; // set the correct angles to diplay rot->setAngles ((short) (90 + gamma - 180), (short) theta + 180, (short) -phi); checkShield (); return; // and exit this function } if (id == FLARE1) // only flares { tl->y -= 0.04 * timefac; // fall down (gravity, constant) zoom = 0.12F + 0.03F * sin ((float) ttl / (float) timestep / 15); // blink (high frequency) phi = camphi; // angles to viewer (player) theta = 0; gamma = camgamma; } if (id == CHAFF1) // only chaff { tl->y -= 0.04 * timefac; // fall down (gravity, constant) zoom = 0.12F + 0.01F * (80 * timestep - ttl) / timestep; // spread out phi = camphi; // angles to viewer (player) theta = 0; gamma = camgamma; } // check maximum gamma if (easymodel == 1) { if (gamma > 180 + maxgamma) gamma = 180 + maxgamma; else if (gamma < 180 - maxgamma) gamma = 180 - maxgamma; } else if (easymodel == 2) // otherwise check for value overflow due to loops { (void) checkLooping (); } // the core of directional alterations and force calculations: // easymodel==1 means to change heading due to roll angle // this may seem complete nonsense for fighters, but it is just a simplification!!! // angle / aileron = constant, thats enough for a simple AI if (easymodel == 1) { if (id >= MOVING_GROUND) { phi += SIN(theta) * manoeverability * 667 * timefac; //10.0 * maxthrust / div; } else { phi += SIN(theta) * manoeverability * (3.33 + 15.0 * realspeed) * timefac; gamma -= fabs (SIN(theta) * COS(gamma) / realspeed / 20) * timefac; // realistic modification if (gamma < 180 - maxgamma) gamma = 180 - maxgamma; } } else if (easymodel == 2) // now this is much more general, however simplified: { int vz = 1; if (gamma < 90 || gamma > 270) vz = -1; // change heading and elevation due to ailerons and rudder if (maxthrust + thrust <= -0.00001 || maxthrust + thrust >= 0.00001) { phi += vz * SIN(theta) * elevatoreffect * manoeverability * (3.33 + 15.0 * realspeed) * timefac; gamma += COS(theta) * elevatoreffect * manoeverability * (3.33 + 15.0 * realspeed) * timefac; phi += -vz * COS(theta) * ruddereffect * manoeverability * (0.66 + 3.0 * realspeed) * timefac; gamma += SIN(theta) * ruddereffect * manoeverability * (0.66 + 3.0 * realspeed) * timefac; if (!realism) gamma -= fabs (SIN(theta) * COS(gamma) / realspeed / 20) * timefac; // realistic modification } // change roll due to roll ;-) if (rolleffect) { theta += rolleffect * (nimbility * (1.0 + realspeed)) * timefac * 5.0F; rectheta = theta; } } if (phi < 0) phi += 360.0; // validate heading else if (phi >= 360.0) phi -= 360.0; if (easymodel == 1) // easy model restrictions { if (rectheta > maxtheta) rectheta = maxtheta; else if (rectheta < -maxtheta) rectheta = -maxtheta; if (recgamma > 180 + maxgamma) recgamma = 180 + maxgamma; else if (recgamma < 180 - maxgamma) recgamma = 180 - maxgamma; } else if (easymodel == 2) { if (theta < -180 && rectheta < -180) { rectheta += 360; theta += 360; } else if (theta >= 180 && rectheta >= 180) { rectheta -= 360; theta -= 360; } } if (recthrust > maxthrust) // check maximum throttle recthrust = maxthrust; float throttlechange = maxthrust / 200 * timefac; if (recthrust > thrust + throttlechange) // alter throttle effect slowly { thrust += throttlechange; } else if (recthrust < thrust - throttlechange) { thrust -= throttlechange; } // PHYSICS (simplified model) CVector3 vaxis, uaxis, utemp, utemp2, utemp3; float gammaup, phiup, thetaup; bool stop; float gravityforce; if (id <= CANNON2) { tl->x += forcex * timefac; // add our vector to the translation tl->z += forcez * timefac; tl->y += forcey * timefac; goto cannondone; // jump down to decrease ttl and test collision } // axis pointing through the fighter's nose vaxis.set (COS(gamma) * SIN(phi), SIN(gamma), COS(gamma) * COS(phi)); if (realism) { // axis pointing upwards through the cockpit gammaup = gamma + 90; thetaup = -theta; phiup = phi; uaxis.set (COS(gammaup) * SIN(phiup), SIN(gammaup), COS(gammaup) * COS(phiup)); // upward axis (theta = 0) // now rotate around vaxis using theta utemp.take (&uaxis); utemp.mul (COS(thetaup)); utemp2.take (&vaxis); utemp2.mul ((1 - COS(thetaup)) * uaxis.dotproduct (&vaxis)); utemp3.take (&uaxis); utemp3.crossproduct (&vaxis); utemp3.mul (SIN(thetaup)); utemp.add (&utemp2); utemp.add (&utemp3); uaxis.take (&utemp); } realspeed = sqrt (forcex * forcex + forcez * forcez + forcey * forcey); if (realism) // sim model { // add drag force braking = (fabs (ruddereffect) + fabs (elevatoreffect) * 4 + fabs (rolleffect)) * realspeed / 50; brakepower = pow (0.93 - braking, timefac); accx *= brakepower; accy *= brakepower; accz *= brakepower; // add throttle force accz += thrust * vaxis.z * 0.3 * timefac; accx += thrust * vaxis.x * 0.3 * timefac; accy -= thrust * vaxis.y * 0.3 * timefac; // add elevation force accz += thrust * uaxis.z * 0.067 * timefac; accx += thrust * uaxis.x * 0.067 * timefac; accy -= thrust * uaxis.y * 0.067 * timefac; // add gravity force accy -= 0.015 * timefac; // add our vector to the translation float stepfac = 0.24; tl->x += accx * timefac * stepfac; tl->z += accz * timefac * stepfac; tl->y += accy * timefac * stepfac; float scalef = 1.1; forcex = accx * stepfac * scalef; forcey = accy * stepfac * scalef; forcez = accz * stepfac * scalef; } else // action model { // and correct the speedvector forcez = vaxis.z * realspeed; forcex = vaxis.x * realspeed; forcey = -vaxis.y * realspeed; // add throttle force forcez += thrust * vaxis.z * 0.01 * timefac; //0.03 and braking=0.97 by try and error forcex += thrust * vaxis.x * 0.01 * timefac; forcey -= thrust * vaxis.y * 0.01 * timefac; gravityforce = sqrt (realspeed) * vaxis.y * 0.0012 * timefac; forcez += gravityforce * vaxis.z; forcex += gravityforce * vaxis.x; forcey -= gravityforce * vaxis.y; // drag force simulated by adjusting the vector if (easymodel == 2) braking = (fabs (ruddereffect) + fabs (elevatoreffect)) * realspeed / 50; else braking = (fabs (theta / 45)) * realspeed / 50; brakepower = pow (0.9915 - braking, timefac); forcex *= brakepower; forcez *= brakepower; forcey *= brakepower; } stop = false; if (id >= TANK1 && id <= TANK2) // tanks cannot climb steep faces { float newy = l->getExactHeight (tl->x + forcex, tl->z + forcez) + zoom / 2; if (fabs (newy - tl->y) > 0.05) stop = true; else if (fabs (newy - tl->y) > 2) stop = false; } if (!realism) if (!stop) { tl->x += forcex * timefac; // add our vector to the translation tl->z += forcez * timefac; tl->y += forcey * timefac; } // calculate the objects real thrust only once realspeed = sqrt (forcex * forcex + forcez * forcez + forcey * forcey); // objects moving on the ground should always change their elevation due to the surface if (id >= TANK1 && id <= TANK2 && thrust > 0 && !stop) { float newy = l->getExactHeight (tl->x, tl->z) + zoom / 2; float dy = newy - tl->y + forcey; float dx = fabs (forcex) + fabs (forcez); float gamma2 = 0; if (fabs (dx) > 0.0001) gamma2 = atan (dy / dx); gamma = 180.0 + 180.0 / PI * gamma2; tl->y = newy; } if (id != ASTEROID) { // set angles to correctly display the object rot->setAngles ((short) (90 + gamma - 180), (short) theta + 180, (short) -phi); } else // asteroids should rotate around their center of weight, as we must not change theta/gamma, we do this here { ttl -= dt; // we use the ttl value as timer, for other methods ttl<0 is the same as ttl=-1 if (ttl <= -360 * timestep) ttl = -1; int rot1 = (int) (sin ((zoom - 1.3) * 8) * 4); int rot2 = (int) (cos ((zoom - 1.3) * 8) * 4); rot->setAngles ((short) (90 + gamma + ttl * rot1 / timestep - 180), (short) theta + ttl * rot2 / timestep + 180, (short) -phi); } cannondone:; if (ttl > 0) { ttl -= dt; // decrease time to live if (ttl <= 0) { ttl = -1; if (id >= MISSILE1 && id <= MISSILE2) recheight = -10; // missiles drop else deactivate (); // cannon shots vanish } } checkShield (); // check shield issues crashGround (dt); // check ground collision if (immunity > 0) immunity -= dt; // decrease immunity } void AIObj::aiinit () { int i; acttype = 0; dualshot = false; intelligence = 100; aggressivity = 100; precision = 100; shield = 0.01F; ai = true; active = true; draw = true; target = NULL; dtheta = 0; dgamma = 0; id = MISSILE1; impact = 30; manoevertheta = 0; manoeverheight = 0; manoeverthrust = 0; idle = 0; smokettl = 0; firecannonttl = 0; firemissilettl = 0; fireflarettl = 0; firechaffttl = 0; flares = 0; aw = 0; source = NULL; points = 0; easymodel = 1; elevatoreffect = 0; ruddereffect = 0; gamma = 180; recgamma = 180; dgamma = 0; theta = 0; maxgamma = 70; maxtheta = 90; missiletype = 0; autofire = false; ttl = -1; ttf = 30 * timestep; score = -1; for (i = 0; i < missiletypes; i ++) missiles [i] = 0; for (i = 0; i < missileracks; i ++) { missilerack [i] = -1; missilerackn [i] = 0; } bomber = 0; timer = 0; ammo = -1; manoeverstate = 0; } void AIObj::missileCount () { if (id < FIGHTER1 || id > FIGHTER2) return; int i; for (i = 0; i < missiletypes; i ++) missiles [i] = 0; for (i = 0; i < missileracks; i ++) { if (missilerackn [i] > 0) { missiles [missilerack [i]] += missilerackn [i]; } } } void AIObj::newinit (int id, int party, int intelligence, int precision, int aggressivity) { int i; ai = true; this->id = id; this->party = party; manoeverstate = 0; activate (); for (i = 0; i < missileracks; i ++) missilerackn [i] = 0; ammo = -1; bomber = 0; dualshot = false; float cubefac = 0.6F; // fighter float cubefac1 = 0.7F; // tanks and sams o = getModel (id); o->cubex = zoom; o->cubey = zoom; o->cubez = zoom; if (id == FIGHTER_FALCON) { maxthrust = 0.31; nimbility = 0.86; manoeverability = 0.48; maxshield = 85; zoom = 0.35; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 2; missilerackn [1] = 2; missilerackn [2] = 2; missilerackn [3] = 2; missilerack [0] = 0; missilerack [1] = 6; missilerack [2] = 6; missilerack [3] = 0; flares = 20; chaffs = 20; statfirepower = 1; ammo = 1200; } else if (id == FIGHTER_SWALLOW) { maxthrust = 0.24; nimbility = 0.64; manoeverability = 0.35; maxshield = 110; zoom = 0.43; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 2; missilerackn [1] = 3; missilerackn [2] = 3; missilerackn [3] = 2; missilerack [0] = 6; missilerack [1] = 3; missilerack [2] = 3; missilerack [3] = 6; flares = 20; chaffs = 20; bomber = 1; statfirepower = 3; ammo = 1200; } else if (id == FIGHTER_HAWK) { maxthrust = 0.26; nimbility = 0.72; manoeverability = 0.42; maxshield = 120; zoom = 0.43; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 1; missilerackn [1] = 3; missilerackn [2] = 3; missilerackn [3] = 1; missilerack [0] = 6; missilerack [1] = 3; missilerack [2] = 3; missilerack [3] = 6; flares = 20; chaffs = 20; bomber = 1; statfirepower = 2; ammo = 1200; } else if (id == FIGHTER_HAWK2) { maxthrust = 0.28; nimbility = 0.75; manoeverability = 0.44; maxshield = 140; zoom = 0.45; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 1; missilerackn [1] = 3; missilerackn [2] = 3; missilerackn [3] = 1; missilerack [0] = 6; missilerack [1] = 4; missilerack [2] = 4; missilerack [3] = 6; flares = 20; chaffs = 20; bomber = 1; statfirepower = 3; ammo = 1400; dualshot = true; } else if (id == FIGHTER_TRANSPORT) { maxthrust = 0.14; maxshield = 45; missiles [0] = 0; nimbility = 0.15; manoeverability = 0.05; impact = 5; zoom = 1.5; maxgamma = 25; maxtheta = 30; flares = 0; chaffs = 0; ammo = 0; } else if (id == FIGHTER_TRANSPORT2) { maxthrust = 0.16; maxshield = 35; missiles [0] = 0; nimbility = 0.12; manoeverability = 0.04; impact = 5; zoom = 1.5; maxgamma = 25; maxtheta = 30; flares = 0; chaffs = 0; ammo = 0; } else if (id == FIGHTER_BUZZARD) { maxthrust = 0.31; nimbility = 0.82; manoeverability = 0.46; maxshield = 75; zoom = 0.44; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 2; missilerackn [1] = 2; missilerackn [2] = 2; missilerackn [3] = 2; missilerack [0] = 0; missilerack [1] = 6; missilerack [2] = 6; missilerack [3] = 0; flares = 20; chaffs = 20; statfirepower = 2; ammo = 1200; } else if (id == FIGHTER_CROW) { maxthrust = 0.25; nimbility = 0.72; manoeverability = 0.4; maxshield = 60; zoom = 0.41; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 1; missilerackn [1] = 2; missilerackn [2] = 2; missilerackn [3] = 1; missilerack [0] = 6; missilerack [1] = 0; missilerack [2] = 0; missilerack [3] = 6; flares = 20; chaffs = 20; statfirepower = 1; ammo = 1000; } else if (id == FIGHTER_STORM) { maxthrust = 0.25; nimbility = 0.52; manoeverability = 0.34; maxshield = 160; zoom = 0.45; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 1; missilerackn [1] = 2; missilerackn [2] = 2; missilerackn [3] = 1; missilerack [0] = 6; missilerack [1] = 0; missilerack [2] = 0; missilerack [3] = 6; flares = 25; chaffs = 25; statfirepower = 4; ammo = 1800; } else if (id == FIGHTER_PHOENIX) { maxthrust = 0.3; nimbility = 0.54; manoeverability = 0.34; maxshield = 180; zoom = 0.47; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 3; missilerackn [1] = 3; missilerackn [2] = 3; missilerackn [3] = 3; missilerack [0] = 4; missilerack [1] = 4; missilerack [2] = 4; missilerack [3] = 4; flares = 25; chaffs = 25; bomber = 1; statfirepower = 5; ammo = 2000; dualshot = true; } else if (id == FIGHTER_REDARROW) { maxthrust = 0.33; nimbility = 0.95; manoeverability = 0.52; maxshield = 120; zoom = 0.4; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 2; missilerackn [1] = 3; missilerackn [2] = 3; missilerackn [3] = 2; missilerack [0] = 7; missilerack [1] = 1; missilerack [2] = 1; missilerack [3] = 7; flares = 25; chaffs = 25; statfirepower = 2; ammo = 1400; dualshot = true; } else if (id == FIGHTER_BLACKBIRD) { maxthrust = 0.3; nimbility = 1.0; manoeverability = 0.54; maxshield = 85; zoom = 0.33; maxtheta = 90.0; maxgamma = 70.0; missilerackn [0] = 2; missilerackn [1] = 3; missilerackn [2] = 3; missilerackn [3] = 2; missilerack [0] = 7; missilerack [1] = 1; missilerack [2] = 1; missilerack [3] = 7; flares = 25; chaffs = 25; statfirepower = 2; ammo = 1400; dualshot = true; } if (id >= FIGHTER1 && id <= FIGHTER2) { recthrust = maxthrust / 2.0; shield = maxshield; thrust = recthrust = maxthrust / 2; smoke->type = 1; impact = 2; forcez = recthrust; o->cubex = zoom * cubefac; o->cubey = zoom * cubefac; o->cubez = zoom * cubefac; } if (id == FLAK_AIR1) { maxthrust = 0; thrust = 0; maxgamma = 0; maxtheta = 0.03; manoeverability = 12.0; shield = maxshield = 80; zoom = 0.35; } if (id == FLARAK_AIR1) { maxthrust = 0; thrust = 0; maxgamma = 0; maxtheta = 0.03; manoeverability = 6.0; shield = maxshield = 70; zoom = 0.3; missiles [6] = 100; } if (id >= FLAK1 && id <= FLAK2) { o->cubex = zoom * cubefac1; o->cubey = zoom * cubefac1; o->cubez = zoom * cubefac1; } if (id == TANK_AIR1) { maxthrust = 0.04; thrust = 0; gamma = 180; theta = 0; phi = 0; maxgamma = 0; maxtheta = 0.03; manoeverability = 8.0; shield = maxshield = 160; zoom = 0.35; o->cubex = zoom * 0.7; o->cubey = zoom * 0.45; o->cubez = zoom * 0.7; } else if (id == TANK_GROUND1) { maxthrust = 0.04; thrust = 0; gamma = 180; theta = 0; phi = 0; maxgamma = 0; maxtheta = 0.03; manoeverability = 8.0; shield = maxshield = 200; zoom = 0.4; o->cubex = zoom * 0.7; o->cubey = zoom * 0.5; o->cubez = zoom * 0.7; } else if (id == TANK_PICKUP1) { maxthrust = 0; thrust = 0.02; maxgamma = 0; maxtheta = 0.03; manoeverability = 0; shield = maxshield = 30; zoom = 0.25; o->cubex = zoom * 0.7; o->cubey = zoom * 0.55; o->cubez = zoom * 0.7; } else if (id == TANK_TRUCK1) { maxthrust = 0; thrust = 0.02; maxgamma = 0; maxtheta = 0.03; manoeverability = 0; shield = maxshield = 20; zoom = 0.45; o->cubex = zoom * 0.6; o->cubey = zoom * 0.35; o->cubez = zoom * 0.6; } else if (id == TANK_TRUCK2) { maxthrust = 0; thrust = 0.02; maxgamma = 0; maxtheta = 0.03; manoeverability = 0; shield = maxshield = 40; zoom = 0.4; o->cubex = zoom * 0.6; o->cubey = zoom * 0.35; o->cubez = zoom * 0.6; } else if (id == TANK_TRSAM1) { maxthrust = 0; thrust = 0.02; maxgamma = 0; maxtheta = 0.03; manoeverability = 0; shield = maxshield = 50; zoom = 0.35; missiles [6] = 200; o->cubex = zoom * 0.7; o->cubey = zoom * 0.6; o->cubez = zoom * 0.7; } if (id >= TANK1 && id <= TANK2) { } if (id == SHIP_CRUISER) { zoom = 5.0; maxthrust = 0.05; thrust = 0.05; maxgamma = 0; maxtheta = 0.03; manoeverability = 4.0; impact = 20; shield = maxshield = 5500; missiles [6] = 200; o->cubex = zoom * 0.35; o->cubey = zoom * 0.1; o->cubez = zoom * 0.35; } else if (id == SHIP_DESTROYER1) { zoom = 2.5; maxthrust = 0.05; thrust = 0.05; maxgamma = 0; maxtheta = 0.03; manoeverability = 6.0; impact = 20; shield = maxshield = 2800; o->cubex = zoom * 0.4; o->cubey = zoom * 0.12; o->cubez = zoom * 0.4; } float missilethrustbase = 1.2F; if (id == MISSILE_AIR1) { intelligence = 100; maxthrust = 0.7 * missilethrustbase; nimbility = 2.5; // old 2.2 manoeverability = 1.5; ttl = 300 * timestep; impact = 35; } else if (id == MISSILE_AIR2) { intelligence = 50; maxthrust = 0.75 * missilethrustbase; nimbility = 3.5; // old 3.5 manoeverability = 2.0; ttl = 320 * timestep; impact = 45; } else if (id == MISSILE_AIR3) { intelligence = 0; maxthrust = 0.8 * missilethrustbase; nimbility = 4.5; manoeverability = 2.5; ttl = 340 * timestep; impact = 55; } else if (id == MISSILE_GROUND1) { intelligence = 50; maxthrust = 0.75 * missilethrustbase; nimbility = 1.2; manoeverability = 1.0; ai = true; ttl = 300 * timestep; impact = 400; } else if (id == MISSILE_GROUND2) { intelligence = 0; maxthrust = 0.8 * missilethrustbase; nimbility = 1.5; manoeverability = 1.0; ai = true; ttl = 400 * timestep; impact = 500; } else if (id == MISSILE_DF1) { intelligence = 0; maxthrust = 0.75 * missilethrustbase; nimbility = 0.0; manoeverability = 0.0; ai = true; ttl = 350 * timestep; impact = 920; } else if (id == MISSILE_FF1) { intelligence = 0; maxthrust = 0.8 * missilethrustbase; nimbility = 2.0; manoeverability = 1.3; ttl = 300 * timestep; impact = 40; } else if (id == MISSILE_FF2) { intelligence = 0; maxthrust = 0.85 * missilethrustbase; nimbility = 3.0; manoeverability = 2.0; ttl = 320 * timestep; impact = 50; } else if (id == MISSILE_MINE1) { intelligence = 0; maxthrust = 0.1; if (difficulty == 1) maxthrust = 0.14; else if (difficulty == 2) maxthrust = 0.18; nimbility = 1.5; manoeverability = 1.0; ai = true; ttl = -1; impact = 500; zoom = 0.3; } if (id >= MISSILE1 && id <= MISSILE2) { o->cubex = zoom; o->cubey = zoom; o->cubez = zoom; } if (id >= STATIC_PASSIVE) { intelligence = 0; maxthrust = 0; nimbility = 0; manoeverability = 0; impact = 5; maxtheta = 0; maxgamma = 0; } if (id == STATIC_TENT1) { shield = maxshield = 80; zoom = 0.5; o->cubex = zoom * 0.9; o->cubey = zoom; o->cubez = zoom * 0.9; } if (id == STATIC_TENT4) { shield = maxshield = 160; zoom = 1.2; o->cubex = zoom * 0.7; o->cubey = zoom * 0.42; o->cubez = zoom * 0.7; } if (id == STATIC_CONTAINER1) { shield = maxshield = 30; zoom = 1.0; impact = 20; o->cubex = zoom * 0.4; o->cubey = zoom * 0.35; o->cubez = zoom * 0.9; } if (id == STATIC_HALL1) { shield = maxshield = 450; zoom = 1.8; impact = 20; o->cubex = zoom * 0.45; o->cubey = zoom * 0.42; o->cubez = zoom; } if (id == STATIC_HALL2) { shield = maxshield = 900; zoom = 2.5; impact = 20; o->cubex = zoom; o->cubey = zoom * 0.45; o->cubez = zoom; } if (id == STATIC_OILRIG1) { shield = maxshield = 1400; zoom = 3.5; impact = 20; o->cubex = zoom * 0.95; o->cubey = zoom * 0.5; o->cubez = zoom * 0.95; } if (id == STATIC_COMPLEX1) { shield = maxshield = 5000; zoom = 2.0; impact = 20; o->cubex = zoom * 0.75; o->cubey = zoom * 0.6; o->cubez = zoom * 0.75; } if (id == STATIC_RADAR1) { shield = maxshield = 500; zoom = 1.3; impact = 20; o->cubex = zoom * 0.5; o->cubey = zoom * 0.7; o->cubez = zoom * 0.5; } if (id == ASTEROID) { shield = maxshield = 100000; zoom = 0.01 * myrandom (60) + 1.0; impact = 5; thrust = 0.25; maxthrust = 0.25; forcez = 0.12; ai = false; o->cubex = zoom * 0.7; o->cubey = zoom * 0.7; o->cubez = zoom * 0.7; } if (id == STATIC_BASE1) { shield = maxshield = 5500; zoom = 4.0; impact = 20; o->cubex = zoom * 0.7; o->cubey = zoom * 0.5; o->cubez = zoom * 0.7; } if (id == STATIC_DEPOT1) { shield = maxshield = 3000; zoom = 1.5; impact = 20; o->cubex = zoom; o->cubey = zoom * 0.5; o->cubez = zoom; } if (id == STATIC_BARRIER1) { shield = maxshield = 1000; zoom = 12.0; impact = 2000; o->cubex = 0.8; o->cubey = 11; o->cubez = 11; } if (id >= STATIC_PASSIVE) { } if (difficulty == 0) // easy { intelligence = 400 - (400 - intelligence) * 1 / 3; precision = 400 - (400 - precision) * 1 / 3; aggressivity = 400 - (400 - aggressivity) * 1 / 3; if (party != 1 && shield > 10) // not player party { shield = shield * 8 / 10; maxshield = shield; } } else if (difficulty == 1) // normal { intelligence = 400 - (400 - intelligence) * 2 / 3; precision = 400 - (400 - precision) * 2 / 3; aggressivity = 400 - (400 - aggressivity) * 2 / 3; } else if (difficulty == 2) // hard { } this->intelligence = intelligence; this->precision = precision; this->aggressivity = aggressivity; missileCount (); } void AIObj::newinit (int id, int party, int intelligence) { newinit (id, party, intelligence, intelligence, intelligence); } AIObj::AIObj () { o = NULL; zoom = 1.0; aiinit (); smoke = new CSmoke (0); } AIObj::AIObj (Space *space2, CModel *o2, float zoom2) { this->space = space2; o = o2; zoom = zoom2; aiinit (); smoke = new CSmoke (0); space->addObject (this); } AIObj::~AIObj () { delete smoke; } void AIObj::initValues (DynamicObj *dobj, float phi) { float fac = zoom / 8; if (dobj->id == FLARE1 || dobj->id == CHAFF1) fac = -fac; // use the exact polar coordinates because of gamma and theta float cgamma = gamma; dobj->tl->x = tl->x + COS(cgamma) * SIN(phi) * fac; dobj->tl->y = tl->y - SIN(cgamma) * fac; if ((id >= FLAK1 && id <= FLAK2) || (id >= TANK1 && id <= TANK2)) dobj->tl->y += fac; dobj->tl->z = tl->z + COS(cgamma) * COS(phi) * fac; dobj->phi = phi; dobj->rectheta = dobj->theta; dobj->forcex = forcex; dobj->forcey = forcey; dobj->forcez = forcez; dobj->rot->setAngles ((short) (90 + dobj->gamma - 180), (short) dobj->theta + 180, (short) -dobj->phi); } void AIObj::fireCannon (DynamicObj *laser, float phi) { if (firecannonttl > 0) return; if (ammo == 0) return; ammo --; laser->thrust = 0; laser->recthrust = laser->thrust; laser->manoeverability = 0.0; laser->maxthrust = 0; if (target != NULL && ai) { if (target->active) { // exact calculation to hit enemy (non-static turret!) if (id >= FIGHTER1 && id <= FIGHTER2) laser->gamma = gamma; else laser->gamma = 180.0 + atan ((target->tl->y - tl->y) / distance (target)) * 180.0 / pitab; } } else laser->gamma = gamma; // + 90.0; laser->party = party; laser->ttl = 80 * timestep; laser->shield = 1; laser->immunity = (int) (zoom * 12) * timestep; laser->source = this; laser->phi = phi; laser->theta = theta; initValues (laser, phi); float fac = 0.7F; laser->forcex += COS(laser->gamma) * SIN(laser->phi) * fac; laser->forcey -= SIN(laser->gamma) * fac; laser->forcez += COS(laser->gamma) * COS(laser->phi) * fac; laser->activate (); firecannonttl += 45; if (day) { if (dualshot) laser->o = &model_cannon1b; else laser->o = &model_cannon1; } else { if (dualshot) laser->o = &model_cannon2b; else laser->o = &model_cannon2; } } void AIObj::fireCannon (DynamicObj **laser, float phi) { int i; if (firecannonttl > 0) return; if (ammo == 0) return; for (i = 0; i < maxlaser; i ++) { if (!laser [i]->active) break; } if (i < maxlaser) { fireCannon (laser [i], phi); } } void AIObj::fireCannon (DynamicObj **laser) { if (firecannonttl > 0) return; if (ammo == 0) return; fireCannon (laser, phi); } void AIObj::fireMissile2 (int id, AIObj *missile, AIObj *target) { char buf [STDSIZE]; if (debuglevel == LOG_ALL) { sprintf (buf, "Missile: party=%d, id=%d", party, id); display (buf, LOG_ALL); } ttf = 50 * timestep; missile->dinit (); missile->aiinit (); missile->newinit (id, party, 0); initValues (missile, phi); missile->id = id; missile->explode = 0; missile->thrust = thrust + 0.001; missile->recthrust = missile->maxthrust; missile->gamma = gamma; missile->target = target; missile->recgamma = gamma; missile->shield = 1; missile->party = party; missile->immunity = (45 + (int) (zoom * 6.0)) * timestep; missile->dtheta = 0; missile->dgamma = 0; missile->source = this; missile->activate (); if (id >= FIGHTER1 && id <= FIGHTER2) { missile->manoeverheight = 30 * timestep; missile->recheight = missile->tl->y - l->getHeight (missile->tl->x, missile->tl->z) - 4; } } void AIObj::fireFlare2 (DynamicObj *flare) { char buf [STDSIZE]; if (debuglevel == LOG_ALL) { sprintf (buf, "Flare: party=%d", party); display (buf, debuglevel); } flare->dinit (); flare->thrust = 0; flare->realspeed = 0; flare->recthrust = 0; flare->manoeverability = 0.0; flare->maxthrust = 1.0; flare->gamma = 0; flare->party = party; flare->ttl = 80 * timestep; flare->shield = 1; flare->immunity = (int) (zoom * 12) * timestep; flare->source = this; flare->phi = phi; flare->id = FLARE1; initValues (flare, phi); flare->activate (); flare->explode = 0; } void AIObj::fireChaff2 (DynamicObj *chaff) { char buf [STDSIZE]; if (debug == LOG_ALL) { sprintf (buf, "Chaff: party=%d", party); display (buf, LOG_ALL); } chaff->dinit (); chaff->thrust = 0; chaff->realspeed = 0; chaff->recthrust = 0; chaff->manoeverability = 0.0; chaff->maxthrust = 1.0; chaff->gamma = 0; chaff->party = party; chaff->ttl = 80 * timestep; chaff->shield = 1; chaff->immunity = (int) (zoom * 12) * timestep; chaff->source = this; chaff->phi = phi; chaff->id = CHAFF1; initValues (chaff, phi); chaff->activate (); chaff->explode = 0; chaff->zoom = 0.12F; } int AIObj::firstMissile () { int i = 0; while (!missiles [i]) { i ++; if (i >= missiletypes) return 0; } ttf = 50 * timestep; return i; } int AIObj::nextMissile (int from) { int i = from + 1; if (i >= missiletypes) i = 0; while (!missiles [i]) { i ++; if (i >= missiletypes) i = 0; if (i == from) break; } ttf = 50 * timestep; return i; } bool AIObj::haveMissile (int id) { char buf [STDSIZE]; id -= MISSILE1; if (id < 0 || id >= missiletypes) { sprintf (buf, "Wrong missile ID in %s, line %d", __FILE__, __LINE__); display (buf, LOG_ERROR); } if (missiles [id] > 0) return true; return false; } bool AIObj::haveMissile () // due to missiletype { if (missiles [missiletype] > 0) return true; return false; } void AIObj::decreaseMissile (int id) { char buf [STDSIZE]; int i; id -= MISSILE1; if (id < 0 || id >= missiletypes) { sprintf (buf, "Wrong missile ID in %s, line %d", __FILE__, __LINE__); display (buf, LOG_ERROR); } missiles [id] --; int ptrrack = 0, maxrack = 0; for (i = 0; i < missileracks; i ++) if (missilerack [i] == id) if (missilerackn [i] > maxrack) { ptrrack = i; maxrack = missilerackn [i]; } if (maxrack > 0) { missilerackn [ptrrack] --; refscale [ptrrack * 3 + 2 - missilerackn [ptrrack]] = 0; } } bool AIObj::fireMissile (int id, AIObj **missile, AIObj *target) { int i; if (!haveMissile (id)) return false; if (ttf > 0) return false; for (i = 0; i < maxmissile; i ++) { if (missile [i]->ttl <= 0) break; } if (i < maxmissile) { fireMissile2 (id, missile [i], target); decreaseMissile (id); firemissilettl = 20 * timestep; return true; } return false; } bool AIObj::fireMissile (AIObj **missile, AIObj *target) { if (ttf > 0) return false; return fireMissile (missiletype + MISSILE1, missile, (AIObj *) target); } bool AIObj::fireMissile (int id, AIObj **missile) { if (ttf > 0) return false; return fireMissile (id, missile, (AIObj *) target); } bool AIObj::fireMissile (AIObj **missile) { if (ttf > 0) return false; return fireMissile (missiletype + MISSILE1, missile); } bool AIObj::fireFlare (DynamicObj **flare, AIObj **missile) { int i, i2; if (flares <= 0) return false; if (fireflarettl > 0) return false; for (i = 0; i < maxflare; i ++) { if (flare [i]->ttl <= 0) break; } if (i < maxflare) { fireFlare2 (flare [i]); flares --; fireflarettl = 8 * timestep; for (i2 = 0; i2 < maxmissile; i2 ++) { if (missile [i2]->ttl > 0) { if (missile [i2]->id >= MISSILE_AIR1 && missile [i2]->id <= MISSILE_AIR3) // only heat seeking missiles if (missile [i2]->target == this) // only change target if angle is good { bool hit = false; if (easymodel == 1) { if (myrandom ((int) (theta + 20)) > 50) hit = true; } else if (easymodel == 2) { if (myrandom ((int) (fabs (elevatoreffect) * 90 + 20)) > 50) hit = true; } if (hit) { if (debuglevel == LOG_ALL) { display ("Missile to flare", LOG_ALL); } missile [i2]->target = flare [i]; } } } } return true; } return false; } bool AIObj::fireChaff (DynamicObj **chaff, AIObj **missile) { int i, i2; if (chaffs <= 0) return false; if (firechaffttl > 0) return false; for (i = 0; i < maxchaff; i ++) { if (chaff [i]->ttl <= 0) break; } if (i < maxchaff) { fireChaff2 (chaff [i]); chaffs --; firechaffttl = 8 * timestep; for (i2 = 0; i2 < maxmissile; i2 ++) { if (missile [i2]->ttl > 0) { if (missile [i2]->id > MISSILE_AIR3) // only radar seeking missiles if (missile [i2]->target == this) // only change target if angle is good { bool hit = false; if (easymodel == 1) { if (myrandom ((int) (theta + 20)) > 50) hit = true; } else if (easymodel == 2) { if (myrandom ((int) (fabs (elevatoreffect) * 90 + 20)) > 50) hit = true; } if (hit) { if (debuglevel == LOG_ALL) { display ("Missile to chaff", LOG_ALL); } missile [i2]->target = chaff [i]; } } } } return true; } return false; } bool AIObj::fireMissileAir (AIObj **missile, AIObj *target) { if (ttf > 0) return false; if (target->id >= MOVING_GROUND) return false; if (haveMissile (MISSILE_AIR3)) return fireMissile (MISSILE_AIR3, missile, (AIObj *) target); else if (haveMissile (MISSILE_AIR2)) return fireMissile (MISSILE_AIR2, missile, (AIObj *) target); else if (haveMissile (MISSILE_AIR1)) return fireMissile (MISSILE_AIR1, missile, (AIObj *) target); return false; } bool AIObj::selectMissileAir (AIObj **missile) { bool sel = false; if (haveMissile (MISSILE_AIR3)) { missiletype = MISSILE_AIR3 - MISSILE1; sel = true; } else if (haveMissile (MISSILE_AIR2)) { missiletype = MISSILE_AIR2 - MISSILE1; sel = true; } else if (haveMissile (MISSILE_AIR1)) { missiletype = MISSILE_AIR1 - MISSILE1; sel = true; } return sel; } bool AIObj::fireMissileAirFF (AIObj **missile, AIObj *target) { if (ttf > 0) return false; if (target->id >= MOVING_GROUND) return false; if (haveMissile (MISSILE_FF2)) return fireMissile (MISSILE_FF2, missile, (AIObj *) target); else if (haveMissile (MISSILE_FF1)) return fireMissile (MISSILE_FF1, missile, (AIObj *) target); return false; } bool AIObj::selectMissileAirFF (AIObj **missile) { bool sel = false; if (haveMissile (MISSILE_FF2)) { missiletype = MISSILE_FF2 - MISSILE1; sel = true; } else if (haveMissile (MISSILE_FF1)) { missiletype = MISSILE_FF1 - MISSILE1; sel = true; } return sel; } bool AIObj::fireMissileGround (AIObj **missile) { if (ttf > 0) return false; if (target->id < MOVING_GROUND) return false; if (haveMissile (MISSILE_GROUND2)) return fireMissile (MISSILE_GROUND2, missile, (AIObj *) target); else if (haveMissile (MISSILE_GROUND1)) return fireMissile (MISSILE_GROUND1, missile, (AIObj *) target); return false; } bool AIObj::selectMissileGround (AIObj **missile) { bool sel = false; if (haveMissile (MISSILE_GROUND2)) { missiletype = MISSILE_GROUND2 - MISSILE1; sel = true; } else if (haveMissile (MISSILE_GROUND1)) { missiletype = MISSILE_GROUND1 - MISSILE1; sel = true; } return sel; } void AIObj::targetNearestGroundEnemy (AIObj **f) { int i; float d = 1E12; //10000 is too low ttf = 50 * timestep; for (i = 0; i < maxfighter; i ++) { if (this != f [i] && party != f [i]->party && f [i]->active) { float phi = getAngle (f [i]); float d2 = distance (f [i]) * (60 + fabs (phi)); // prefer enemies in front if (bomber) if (f [i]->id < MOVING_GROUND) d2 += 1E10; // only use this target if no ground targets exist if (d2 < d) { d = d2; target = f [i]; } } } if (target) if (distance (target) > 400) { target = NULL; } } void AIObj::targetNearestEnemy (AIObj **f) { int i; float d = 1E12; //10000 is too low ttf = 50 * timestep; for (i = 0; i < maxfighter; i ++) { if (this != f [i] && party != f [i]->party && f [i]->active) { float phi = getAngle (f [i]); float d2 = distance (f [i]) * (60 + fabs (phi)); // prefer enemies in front if (d2 < d) { d = d2; target = f [i]; } } } if (!ai && target) if (distance (target) > 400) target = NULL; } void AIObj::targetLockingEnemy (AIObj **f) { int i; ttf = 50 * timestep; if (target == NULL) target = f [0]; for (i = 0; i < maxfighter; i ++) if (target == f [i]) break; int z = 0; do { i ++; if (i >= maxfighter) { i = 0; z ++; } } while ((!f [i]->active || f [i]->party == party || f [i]->target != this || distance (f [i]) > 200) && z <= 1); target = f [i]; if (z > 1 && !ai) target = NULL; } void AIObj::targetNext (AIObj **f) { int i; ttf = 50 * timestep; if (target == NULL) target = f [0]; for (i = 0; i < maxfighter; i ++) if (target == f [i]) break; int z = 0; do { i ++; if (i >= maxfighter) i = 0; if (f [i] == this) { i ++; z ++; } if (i >= maxfighter) i = 0; } while ((!f [i]->active || distance (f [i]) > 400) && z <= 1); target = f [i]; if (z > 1 && !ai) target = NULL; } void AIObj::targetNextEnemy (AIObj **f) { int i; ttf = 50 * timestep; if (target == NULL) target = f [0]; for (i = 0; i < maxfighter; i ++) if (target == f [i]) break; int z = 0; do { i ++; if (i >= maxfighter) i = 0; if (f [i] == this) { i ++; z ++; } if (i >= maxfighter) i = 0; } while ((!f [i]->active || distance (f [i]) > 400 || party == f [i]->party) && z <= 1); target = f [i]; if (z > 1 && !ai) target = NULL; } void AIObj::targetPrevious (AIObj **f) { int i; ttf = 50 * timestep; if (target == NULL) target = f [0]; for (i = 0; i < maxfighter; i ++) if (target == f [i]) break; int z = 0; do { i --; if (i < 0) i = maxfighter - 1; if (f [i] == this) { i --; z ++; } if (i < 0) i = maxfighter - 1; } while ((!f [i]->active || distance (f [i]) > 400) && z <= 1); target = f [i]; if (z > 1 && !ai) target = NULL; } // core AI method void AIObj::aiAction (Uint32 dt, AIObj **f, AIObj **m, DynamicObj **c, DynamicObj **flare, DynamicObj **chaff) { int i; timer += dt; if (!active && !draw) // not active, not drawn, then exit { return; } if (firecannonttl > 0) firecannonttl -= dt; // time to fire the next missile if (firemissilettl > 0) firemissilettl -= dt; // time to fire the next missile if (fireflarettl > 0) fireflarettl -= dt; // time to fire the next flare if (firechaffttl > 0) firechaffttl -= dt; // time to fire the next chaff if (smokettl > 0) smokettl -= dt; // time to fire the next chaff // move object according to our physics move (dt); float timefac = (float) dt / (float) timestep; if (id >= STATIC_PASSIVE) // no AI for static ground objects (buildings) return; // set smoke if ((id >= MISSILE1 && id < MISSILE_MINE1) || (id >= FIGHTER1 && id <= FIGHTER2)) // missile or fighter { float sz = COS(gamma) * COS(phi) * zoom * 1.1; // polar (spherical) coordinates float sy = -SIN(gamma) * zoom * 1.1; float sx = COS(gamma) * SIN(phi) * zoom * 1.1; // some smoke elements per discrete movement float fg = sqrt (forcex * forcex + forcey * forcey + forcez * forcez) * 13; if (fg >= MAXSMOKEELEM) fg = (float) MAXSMOKEELEM - 0.5; for (i = 0; i < (int) fg; i ++) { float fac = (float) i / fg; smoke->setSmoke (tl->x - sx - forcex * fac, tl->y - sy - forcey * fac, tl->z - sz - forcez * fac, (int) phi, 39 - i); } /* smoke->setSmoke (tl->x - sx - forcex * 0.6, tl->y - sy - forcey * 0.6, tl->z - sz - forcez * 0.6, (int) phi, 36); smoke->setSmoke (tl->x - sx - forcex * 0.4, tl->y - sy - forcey * 0.4, tl->z - sz - forcez * 0.4, (int) phi, 37); smoke->setSmoke (tl->x - sx - forcex * 0.2, tl->y - sy - forcey * 0.2, tl->z - sz - forcez * 0.2, (int) phi, 38); smoke->setSmoke (tl->x - sx, tl->y - sy, tl->z - sz, (int) phi, 39); smoke->move (dt, 5);*/ smoke->move (dt, (int) fg + 1); smokettl += timestep; } if (!active) // not active, then exit { return; } if (explode > 0 || sink > 0) // exploding or sinking, then exit { thrust = 0; return; } // do expensive calculations only once float myheight = l->getExactHeight (tl->x, tl->z); float targetheight = tl->y; if (target != NULL) targetheight = l->getExactHeight (target->tl->x, target->tl->z); if (target != NULL) disttarget = distance (target); // distance to target else disttarget = 1; // get a new target if necessary if (id >= MISSILE1 && id <= MISSILE2) { if (target == NULL) ttl = 0; else if (!target->active) ttl = 0; } if (target == NULL) { if (bomber) targetNearestGroundEnemy (f); else targetNearestEnemy (f); } if (target != NULL) if (!target->active) { if (bomber) targetNearestGroundEnemy (f); else targetNearestEnemy (f); } if (id >= FIGHTER1 && id <= FIGHTER2) // for fighters do the following { if (haveMissile () && target != NULL) { float dgamma = atan ((target->tl->y - tl->y) / disttarget) * 180 / PI - (gamma - 180); float dphi = getAngle (target); if (missiletype == MISSILE_DF1 - MISSILE1) { ttf = 0; } else if (fabs (dphi) < 50 && fabs (dgamma) < 50 && party != target->party) { if (disttarget < 75) { if (ttf > 0) { if (missiletype >= 0 && missiletype <= 2) { if (target->id >= FIGHTER1 && target->id <= FIGHTER2) { float dphi = fabs (phi - target->phi); if (dphi > 270) dphi = 360 - dphi; if (dphi < 45) ttf -= 2 * dt; else ttf = 50 * timestep; } } else if (missiletype == 6 || missiletype == 7) { if (target->id >= FIGHTER1 && target->id <= FIGHTER2) { ttf -= 2 * dt; } } else { if (target->id > FIGHTER2) { ttf -= 2 * dt; } } } } } else { ttf = 50 * timestep; } } } if (!ai) return; /* // The following model would be the REAL AI behaviour! // However enemies are too weak! CVector3 targetvec; if (target != NULL) { targetvec.take (target->tl); float disttarget = distance (&targetvec); if (disttarget > 30) disttarget = 30; targetvec.x += target->forcex * disttarget / 5; targetvec.y += target->forcey * disttarget / 5; targetvec.z += target->forcez * disttarget / 5; } int lsdst = 5; float flyx1 = tl->x + forcex * lsdst, flyz1 = tl->z + forcez * lsdst; float flyx2 = tl->x + forcex * lsdst * 4, flyz2 = tl->z + forcez * lsdst * 4; float h1 = tl->y - l->getMaxHeight (flyx1, flyz1); float h2 = tl->y - l->getMaxHeight (flyx2, flyz2); if (h1 < 5 || h1 > 25) { targetvec.x = flyx1; targetvec.z = flyz1; targetvec.y = l->getMaxHeight (flyx1, flyz1) + 15; } disttarget = distance (&targetvec); float dgamma = getAngleH (&targetvec); float dphi = getAngle (&targetvec); if (fabs (dphi) < 1E-5) dphi = 1E-5; float delta = atan (dgamma / dphi) * 180 / PI; if (dphi > 0) delta -= 180; rectheta = -delta - 90; if (rectheta < -180) rectheta += 360; if (rectheta >= 180) rectheta -= 360; recelevatoreffect = 1; if (disttarget > 50 && fabs (dphi) < 25) { rectheta = 0; recelevatoreffect = 0; if (fabs (theta - rectheta) < 5) recrolleffect = 0; else if (theta - rectheta >= 5) recrolleffect = -1; else if (theta - rectheta <= -5) recrolleffect = 1; } else if (fabs (theta - rectheta) > 150 && fabs (dphi) < 30 && fabs (dgamma) < 30) { recrolleffect = 0; recelevatoreffect = -0.5; } else if (theta - rectheta > 50) { recrolleffect = -1; recelevatoreffect = 0; } else if (theta - rectheta < -50) { recrolleffect = 1; recelevatoreffect = 0; } else if (theta - rectheta > 20) { recrolleffect = -1; recelevatoreffect = 1; } else if (theta - rectheta < -20) { recrolleffect = 1; recelevatoreffect = 1; } else { recrolleffect = 0; recelevatoreffect = 1; } easymodel = 2; if (phi >= 360) phi -= 360; if (phi < 0) phi += 360; if (gamma >= 360) gamma -= 360; if (gamma < 0) gamma += 360; thrust = maxthrust * 0.7; float pulljoystick = 0.005; float nocorrection = 0.1; if (recrolleffect > rolleffect + nocorrection) rolleffect += pulljoystick * timestep; else if (recrolleffect < rolleffect - nocorrection) rolleffect -= pulljoystick * timestep; if (recelevatoreffect > elevatoreffect + nocorrection) elevatoreffect += pulljoystick * timestep; else if (recelevatoreffect < elevatoreffect - nocorrection) elevatoreffect -= pulljoystick * timestep; if (target) { if (disttarget < 20 && dphi < 5 && dgamma < 5) fireCannon (laser); } if (disttarget < 5 && dphi < 90 && dgamma < 90) { thrust = maxthrust / 2; } else { thrust = maxthrust; } return; */ // which height??? float recheight2; // this is the height, the object wants to achieve int lsdist = 15; float flyx = tl->x + forcex * lsdist, flyz = tl->z + forcez * lsdist; int flyxs = l->getCoord ((int) flyx), flyzs = l->getCoord ((int) flyz); { if (manoeverheight > 0) { // precalculated height recheight2 = l->getExactHeight (flyx, flyz) + recheight; } else { // missiles and non intelligent objects will not change their height due to the surface if ((id >= MISSILE1 && id <= MISSILE2 && target != NULL) || (tl->y - myheight > 8 && target != NULL && tl->y - myheight < 50/* && !manoeverheight*/)) { recheight2 = target->tl->y - 8 * target->thrust * SIN(target->gamma); } else { // precalculated height float flyx2 = tl->x + forcex * lsdist * 3, flyz2 = tl->z + forcez * lsdist * 3; float flyx3 = tl->x + forcex * lsdist * 8, flyz3 = tl->z + forcez * lsdist * 8; float h1 = l->getMaxHeight (flyx, flyz); float h2 = l->getMaxHeight (flyx2, flyz2); float h3 = l->getMaxHeight (flyx3, flyz3); h1 = h1 > h2 ? h1 : h2; h1 = h1 > h3 ? h1 : h3; recheight2 = recheight + h1; } } } // fire flares and chaff if (id >= FIGHTER1 && id <= FIGHTER2) // for fighters do the following { if (manoevertheta <= 0) for (i = 0; i < maxmissile; i ++) if (m [i]->ttl > 0) if (m [i]->target == this) { if (m [i]->id >= 0 && m [i]->id <= MISSILE_AIR3) { if ((easymodel == 1 && fabs (theta) >= 30) || (easymodel == 2 && fplayer->elevatoreffect >= 0.5)) { fireFlare (flare, m); fireflarettl += intelligence / 20 * timestep; } manoevertheta = 35 * timestep; } else { if ((easymodel == 1 && fabs (theta) >= 30) || (easymodel == 2 && fplayer->elevatoreffect >= 0.5)) { fireChaff (chaff, m); firechaffttl += intelligence / 20 * timestep; } manoevertheta = 35 * timestep; } } } // manoevers (may use the height information) if (manoeverstate && active && draw) { easymodel = 2; if (manoeverstate == 1) // Immelmann { recelevatoreffect = 0.05; if (fabs (theta) > 10) recrolleffect = -1; else { recrolleffect = 0; manoeverstate = 2; } } else if (manoeverstate == 2) { if (fabs (theta) <= 150) { recrolleffect = 0; recelevatoreffect = 1; } else { manoeverstate = 3; } } else if (manoeverstate == 3) { if (gamma < 170 || gamma > 190) { recrolleffect = 0; recelevatoreffect = 1; } else { manoeverstate = 4; } } else if (manoeverstate == 4) { if (fabs (theta) > 20) { recrolleffect = 1; recelevatoreffect = 0.05; } else { manoeverstate = 0; } } if (manoeverstate == 10) // climb vertical { recrolleffect = 0; recelevatoreffect = 1; if (gamma > 260 || gamma < 90) { recrolleffect = 0; recelevatoreffect = 0; manoeverstate = 11; } } else if (manoeverstate == 11) { if (fabs (tl->y - myheight) > 3) { manoeverstate = 12; } } else if (manoeverstate == 12) { recelevatoreffect = -0.5; if (gamma > 170 && gamma < 190) { recelevatoreffect = 0; manoeverstate = 0; } } if (manoeverstate == 20) // Roll { recelevatoreffect = 0.55; recrolleffect = 1; if (theta > 80 && theta < 90) { manoeverstate = 21; } } else if (manoeverstate == 21) { if (theta > -10 && theta < 10) { manoeverstate = 0; } } float pulljoystick = 0.005; float nocorrection = 0.1; if (recrolleffect > rolleffect + nocorrection) rolleffect += pulljoystick * timestep; else if (recrolleffect < rolleffect - nocorrection) rolleffect -= pulljoystick * timestep; if (recelevatoreffect > elevatoreffect + nocorrection) elevatoreffect += pulljoystick * timestep; else if (recelevatoreffect < elevatoreffect - nocorrection) elevatoreffect -= pulljoystick * timestep; return; } else { if (ai) easymodel = 1; } // calculate the recommended height, recheight2 depends on it if (manoeverheight > 0) manoeverheight -= dt; if (manoeverheight <= 0) { if (!(id >= FIGHTER1 && id <= FIGHTER2) && target != NULL) // no fighter, has target (missile, mine) { recheight = target->tl->y - targetheight; } else if (id == FIGHTER_TRANSPORT || id == FIGHTER_TRANSPORT2) // transporters have to stay higher { recheight = 40; manoeverheight = 1; } else if (id >= FIGHTER1 && id <= FIGHTER2 && target != NULL) // fighter, has target { if (target->id >= FIGHTER1 && target->id <= FIGHTER2) recheight = target->tl->y - targetheight; // target is a fighter else recheight = target->tl->y - targetheight + 5; // target is no fighter if (!l->isWater (l->f [flyxs] [flyzs])) // not flying above water { if (recheight < 3.5 + 0.01 * aggressivity) recheight = 3.5 + 0.01 * aggressivity; } float minh = 5.5 + 0.01 * aggressivity; // minimum height if (l->type == LAND_CANYON) minh = 6.5 + 0.01 * aggressivity; // stay higher in canyons if (fabs (tl->y - myheight) < minh) { recheight = 9 + 0.015 * aggressivity; if (fabs (tl->y - myheight) < minh * 0.3) { manoeverstate = 10; display ("Manoever: Vertical climb", LOG_ALL); } else { manoeverheight = 5 * timestep; // fly manoever to gain height } } if (disttarget < 50 && fabs (tl->y - myheight) > 25) { recheight = 8 + 0.025 * aggressivity; manoeverheight = 12 * timestep; } } } if (ttl <= 0 && id >= MISSILE1 && id <= MISSILE2 && id != MISSILE_MINE1) { recheight = -100; recheight2 = -100; recgamma = 90; } else if (ai) { if (target != NULL && ((id >= MISSILE1 && id <= MISSILE2) || (id >= FIGHTER1 && id <= FIGHTER2 && manoeverheight <= 0))) // is AGM { float dgamma = 0; if (disttarget <= -0.00001 || disttarget >= 0.00001) // no division by zero dgamma = atan ((target->tl->y - tl->y) / disttarget) * 180 / PI - (gamma - 180); recgamma = gamma + dgamma; // get recommended elevation to target } else { recgamma = (int) ((recheight2 - tl->y) * 10 - gamma + 360); } } // do a smooth roll float deltatheta; if (easymodel == 1) { deltatheta = rectheta - theta; if (fabs (dtheta) > 30) { dtheta = 0; } float mynimbility = fabs (deltatheta) / 5.0F * nimbility; if (mynimbility > nimbility) mynimbility = nimbility; float nimbility2 = mynimbility; if (nimbility2 >= -0.00001 && nimbility2 <= 0.00001) nimbility2 = 0.00001; if (deltatheta > 0 && dtheta < 0) dtheta += mynimbility * timefac; else if (deltatheta < 0 && dtheta > 0) dtheta -= mynimbility * timefac; else if (deltatheta > 0) { float estimatedtheta = dtheta * (dtheta + nimbility2 * 5 / timefac) / 2 / nimbility2; if (deltatheta > estimatedtheta) dtheta += mynimbility * timefac; else if (deltatheta < estimatedtheta) dtheta -= mynimbility * timefac; } else { float estimatedtheta = -dtheta * (dtheta - nimbility2 * 5 / timefac) / 2 / nimbility2; if (deltatheta < estimatedtheta) dtheta -= mynimbility * timefac; else if (deltatheta > estimatedtheta) dtheta += mynimbility * timefac; } if (dtheta > (nimbility * (1.0 + realspeed)) * timefac * 5.0F) dtheta = (nimbility * (1.0 + realspeed)) * timefac * 5.0F; theta += dtheta; // height changes if (easymodel == 1) { float nimbility1 = nimbility / 5; if (nimbility1 >= -0.00001 && nimbility1 <= 0.00001) nimbility1 = 0.00001; if (theta > maxtheta) theta = maxtheta; // restrict roll angle else if (theta < -maxtheta) theta = -maxtheta; float deltagamma = recgamma - gamma; if (deltagamma > 0 && dgamma < 0) dgamma += nimbility1 * timefac; else if (deltagamma < 0 && dgamma > 0) dgamma -= nimbility1 * timefac; else if (deltagamma > 0) { float estimatedgamma = dgamma * (dgamma + nimbility1 * 2) / nimbility1; if (id == 200) id = id; if (deltagamma > estimatedgamma + 2) dgamma += nimbility1 * timefac; else if (deltagamma < estimatedgamma - 2) dgamma -= nimbility1 * timefac; } else if (deltagamma < 0) { float estimatedgamma = -dgamma * (dgamma + nimbility1 * 2) / nimbility1; if (id == 200) id = id; if (deltagamma < estimatedgamma - 2) dgamma -= nimbility1 * timefac; else if (deltagamma > estimatedgamma + 2) dgamma += nimbility1 * timefac; } if (dgamma > manoeverability * (3.33 + 15.0 * realspeed) * timefac) dgamma = manoeverability * (3.33 + 15.0 * realspeed) * timefac; gamma += dgamma; } } if (gamma > 180 + maxgamma) gamma = 180 + maxgamma; else if (gamma < 180 - maxgamma) gamma = 180 - maxgamma; if (id >= MISSILE1 && id <= MISSILE2) { if (target == NULL) { ttl = 0; return; } else if (target->active == false) { ttl = 0; return; } } if (target == NULL) return; // fighter's targeting mechanism for missiles if (id >= FIGHTER1 && id <= FIGHTER2) // for fighters do the following { if (ai) { if (target->id >= FIGHTER1 && target->id <= FIGHTER2) { if (!selectMissileAirFF (m)) selectMissileAir (m); } else { selectMissileGround (m); } } } if (!ai || target == NULL) // no AI (player) or no target found, then exit { return; } int firerate; if (difficulty == 0) firerate = 12; else if (difficulty == 1) firerate = 6; else firerate = 3; float dx2, dz2, ex, ez; float dx = target->tl->x - tl->x, dz = target->tl->z - tl->z; // current distances if ((id >= FIGHTER1 && id <= FIGHTER2) || (id >= MISSILE1 && id <= MISSILE2) || (id >= FLAK1 && id <= FLAK2) || (id >= TANK1 && id <= TANK2)) { float t = 10.0 * disttarget; // generous time to new position if (t > 60) t = 60; // higher values will not make sense t *= (float) (400 - precision) / 400; int tt = (int) target->theta; if (tt < 0) tt += 360; float newphi = t * SIN(tt) * 5.0 * target->manoeverability; // new angle of target after time t if (newphi > 90) newphi = 90; else if (newphi < -90) newphi = -90; newphi += (float) target->phi; if (newphi >= 360) newphi -= 360; if (newphi < 0) newphi += 360; if ((id >= FIGHTER1 && id <= FIGHTER2) || (id >= FLAK1 && id <= FLAK2) || (id >= TANK1 && id <= TANK2)) { ex = target->tl->x - SIN(newphi) * t * target->realspeed * 0.25; // estimated target position x ez = target->tl->z - COS(newphi) * t * target->realspeed * 0.25; // estimated target position z } else { ex = target->tl->x - SIN(newphi) * t * target->realspeed * 0.05; // estimated target position x ez = target->tl->z - COS(newphi) * t * target->realspeed * 0.05; // estimated target position z } dx2 = ex - tl->x; dz2 = ez - tl->z; // estimated distances } else { dx2 = dx; dz2 = dz; } float a, w = phi; if (dz2 > -0.0001 && dz2 < 0.0001) dz2 = 0.0001; // get heading to target a = atan (dx2 / dz2) * 180 / PI; if (dz2 > 0) { if (dx2 > 0) a -= 180.0F; else a += 180.0F; } // this->aw = a; aw = a - w; // aw=0: target in front, aw=+/-180: target at back if (aw < -180) aw += 360; if (aw > 180) aw -= 360; if (manoevertheta > 0) manoevertheta -= dt; if (manoeverthrust > 0) manoeverthrust -= dt; // heading calculations if (id >= FIGHTER1 && id < FIGHTER_TRANSPORT) // for fighters do the following { if (!acttype && disttarget <= 1000 && manoevertheta <= 0) // no special action, near distance, no roll manoever { if (aw > 0) // positive angle { if (aw > 140 && disttarget > 50) { manoeverstate = 1; display ("Manoever: Immelmann", LOG_ALL); } else if (aw > 160.0F + 0.05 * intelligence && disttarget < 4 + 0.01 * intelligence) // target very near at the back { manoeverstate = 1; display ("Manoever: Immelmann", LOG_ALL); } else if (aw > 160 && disttarget < 25) // target is at the back { if (fabs (tl->y - myheight) > 7 && gamma >= 175 + intelligence / 100) // high enough over ground { manoeverstate = 20; // roll display ("Manoever: Roll", LOG_ALL); } else { rectheta = -90; if (manoevertheta <= 0) { manoevertheta = timestep * (100 + myrandom ((400 - intelligence) / 8)); // turn hard left or right display ("Manoever: Turn", LOG_ALL); } if (manoeverthrust <= 0) recthrust = maxthrust / (1.05F + (float) intelligence * 0.0015); // fly faster if (intelligence < 280 && manoeverheight <= 0) { recheight = 5; manoeverheight = timestep * (20 - intelligence / 50); display ("Manoever: Height change", LOG_ALL); } // stay low } } else if (aw < 40 && disttarget > 60) { rectheta = 0; } else if (aw < 20 && disttarget > 30) { rectheta = 0; } else // otherwise fly to target direction { int maw = aw > 90 ? 90 : (int) aw; int maw2 = 90 - maw; rectheta = 90 - maw2 * intelligence / 400; if (maw < 30) rectheta /= 2; if (maw < 5) { rectheta = 0; if (target->id >= FIGHTER1 && target->id <= FIGHTER2 && disttarget < 20) ((AIObj *) target)->manoevertheta = timestep * (50 - intelligence / 10); } } } else // same for negative angle { if (aw < -140 && disttarget > 50) { manoeverstate = 1; display ("Manoever: Immelmann", LOG_ALL); } else if (aw < -160.0F - 0.05 * intelligence && disttarget < 4 + 0.01 * intelligence) // target very near at the back { manoeverstate = 1; display ("Manoever: Immelmann", LOG_ALL); } else if (aw < -160 && disttarget < 25) { if (fabs (tl->y - myheight) > 7 && gamma >= 175 + intelligence / 100) // high enough over ground { manoeverstate = 20; // roll display ("Manoever: Roll", LOG_ALL); } else { rectheta = 90; if (manoevertheta <= 0) { manoevertheta = timestep * (100 + myrandom ((400 - intelligence) / 8)); display ("Manoever: Turn", LOG_ALL); } if (manoeverthrust <= 0) recthrust = maxthrust / (1.05F + (float) intelligence * 0.0015); if (intelligence < 280 && manoeverheight <= 0) { recheight = 5; manoeverheight = timestep * (20 - intelligence / 50); display ("Manoever: Height change", LOG_ALL); } } } else if (aw > -40 && disttarget > 60) { rectheta = 0; } else if (aw > -20 && disttarget > 30) { rectheta = 0; } else { int maw = aw < -90 ? -90 : (int) aw; int maw2 = -90 - maw; rectheta = -90 - maw2 * intelligence / 400; if (maw > -30) rectheta /= 2; if (maw > -5) { rectheta = 0; if (target->id >= FIGHTER1 && target->id <= FIGHTER2 && disttarget < 20) ((AIObj *) target)->manoevertheta = timestep * (50 - intelligence / 10); } } } } } else if (id >= MISSILE1 && id <= MISSILE2) // for missiles do the following { if (fabs (aw) < 50 && disttarget > 50) // target in front and minimum distance, then no roll rectheta = 0; else // otherwise chase target { if (aw < -90 || aw > 90) rectheta = 0; else if (aw > 0) { rectheta = aw > 90 ? 90 : aw; } else { rectheta = aw < -90 ? -90 : aw; } } } else if (id >= FLAK1 && id <= FLAK2) // ground-air-cannon { recthrust = 0; thrust = 0; if (aw > 5) { rectheta = maxtheta; } else if (aw < -5) { rectheta = -maxtheta; } else { rectheta = 0; } } else if (id >= TANK1 && id <= TANK2) // tanks { recthrust = maxthrust; thrust = maxthrust; // always at maximum thrust if (aw > 5) { rectheta = maxtheta; } else if (aw < -5) { rectheta = -maxtheta; } else { rectheta = 0; } if (firecannonttl <= 0) { if (id == TANK_AIR1) if (fabs (rectheta - theta) < 2 && fabs (aw) < 20 && disttarget < 40 && target->tl->y > tl->y + 2) { fireCannon (c); firecannonttl += firerate * timestep; } if (id == TANK_GROUND1) if (fabs (rectheta - theta) < 2 && fabs (aw) < 20 && disttarget < 35 && target->tl->y <= tl->y + 1 && target->tl->y >= tl->y - 1) { fireCannon (c); firecannonttl += firerate * timestep; } } } // thrust and manoever calculations if (id >= FIGHTER1 && id <= FIGHTER2) // fighters { if (disttarget > 5 + aggressivity / 12) // 2.5 seems to be best, but fighters become far too strong { if (disttarget < 50 && fabs (aw) > 30 && manoeverthrust <= 0) recthrust = maxthrust / (1.0F + (float) intelligence * 0.0025); else thrustUp (); // otherwise fly faster } else if (manoeverthrust <= 0) { if (recthrust > target->thrust) // adopt thrust of target { thrustDown (); } else { thrustUp (); } } if (disttarget > 50 && fabs (aw) < 20) // high distance and target in front, then fly straight rectheta = 0; if (manoeverthrust <= 0) if (disttarget < 25 && fabs (aw) > 160 && target->id >= TANK1) // avoid collisions { manoeverthrust = 25 * timestep; recthrust = maxthrust; if (difficulty == 0) recthrust = maxthrust * 0.8F; manoevertheta = 25 * timestep; rectheta = 0; manoeverheight = 25 * timestep; recheight = 10; } // fire cannon? float agr = 4.0 - (float) aggressivity / 100; if (firecannonttl <= 0) { if (fabs (rectheta - theta) < agr && fabs (aw) < 20 + agr * 4 && disttarget < 30) fireCannon (c); else if (disttarget < 2 + agr && fabs (aw) < 20 + agr * 4) fireCannon (c); } // fire missile? if (firemissilettl <= 0) { if (target->id >= FIGHTER1 && target->id <= FIGHTER2) { int z1 = 0; if (disttarget < 15 && fabs (aw) < 20) { for (i = 0; i < maxfighter; i ++) { if (target == f [i]->target && party == f [i]->party) z1 ++; } if (z1 >= 3) { manoevertheta = 15 * timestep; firemissilettl = 10 * timestep; if (myrandom (2)) rectheta = 90; else rectheta = -90; targetNextEnemy (f); } } if (firemissilettl <= 0) { if (fabs (rectheta - theta) < agr / 2 && fabs (aw) < agr && disttarget < 45) { fireMissile (m, (AIObj *) target); firemissilettl += aggressivity * timestep; } } } else // ground target { if (fabs (rectheta - theta) < 5 + agr * 4 && fabs (aw) < 5 + agr * 4 && disttarget < 50) if (!(l->lsticker & 7)) { fireMissileGround (m); firemissilettl += aggressivity / 2 * timestep; } } } } if ((id >= FLAK1 && id <= FLAK2) || id == SHIP_CRUISER || id == SHIP_DESTROYER1 || id == TANK_TRSAM1) { if (firecannonttl <= 0) for (int i = 0; i < maxfighter; i ++) if (f [i]->active) if (party != f [i]->party) { disttarget = distance (f [i]); // distance to target ex = f [i]->tl->x; // estimated target position x ez = f [i]->tl->z; // estimated target position z dx2 = ex - tl->x; dz2 = ez - tl->z; // estimated distances w = (int) phi; if (dz2 > -0.0001 && dz2 < 0.0001) dz2 = 0.0001; a = (atan (dx2 / dz2) * 180 / PI); if (dz2 > 0) { if (dx2 > 0) a -= 180; else a += 180; } aw = a - w; if (aw < -180) aw += 360; if (aw > 180) aw -= 360; if (id == FLAK_AIR1) if (f [i]->tl->y > tl->y + 2) { if (fabs (aw) <= 20 && disttarget < 50) // + aggressive fireCannon (c, phi + aw); firecannonttl = firerate * timestep; } if (id == SHIP_DESTROYER1) if (f [i]->tl->y > tl->y + 2) { if (aw >= 0 && aw < 40 && disttarget < 50) // + aggressive fireCannon (c, phi + aw); if (aw >= -40 && aw < 0 && disttarget < 50) // + aggressive fireCannon (c, phi + aw); if (aw >= 120 && aw < 160 && disttarget < 50) // + aggressive fireCannon (c, phi + aw); if (aw >= -160 && aw < -120 && disttarget < 50) // + aggressive fireCannon (c, phi + aw); firecannonttl = firerate * timestep; } if (firemissilettl <= 0) if (id == FLARAK_AIR1) if (fabs (aw) < 25 && disttarget < 45) // + aggressive if (f [i]->tl->y > tl->y + 2) { ttf = 0; fireMissileAirFF (m, f [i]); firemissilettl += (20 + firerate * 10) * timestep; } if (id == TANK_TRSAM1) { if (firemissilettl <= 0) if (aw >= -30 && aw < 30 && disttarget < 60) // + aggressive { ttf = 0; fireMissileAirFF (m, f [i]); firemissilettl += aggressivity / 5 * timestep; missiles [6] ++; // unlimited ammo } } if (id == SHIP_CRUISER) { if (firemissilettl <= 0) if (aw >= -30 && aw < 30 && disttarget < 60) // + aggressive { ttf = 0; fireMissileAirFF (m, f [i]); firemissilettl += aggressivity / 5 * timestep; missiles [6] ++; // unlimited ammo } if (firecannonttl <= 0) { fireCannon (c, phi + aw); } } } } if (id >= FIGHTER1 && id <= FIGHTER2) { if (rectheta > 90 - precision / 5) rectheta = 90 - precision / 5; else if (rectheta < -90 + precision / 5) rectheta = -90 + precision / 5; } } #endif gl-117-1.3.2/src/aiobject.h0000644000175000017500000002523510145416156014423 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes all AI objects instancing models. */ #ifndef IS_AIOBJECT_H #define IS_AIOBJECT_H #include "common.h" // ok #include "model.h" // ok #include "effects.h" // ok // id values of objects // non-AI air objects #define CANNON1 0 #define ASTEROID 50 #define FLARE1 80 #define CHAFF1 85 #define CANNON2 99 // missiles #define MISSILE1 100 #define MISSILE_AIR1 100 #define MISSILE_AIR2 101 #define MISSILE_AIR3 102 #define MISSILE_GROUND1 103 #define MISSILE_GROUND2 104 #define MISSILE_DF1 105 #define MISSILE_FF1 106 #define MISSILE_FF2 107 #define MISSILE_MINE1 180 #define MISSILE2 199 // air units #define AIR 200 #define FIGHTER1 200 #define FIGHTER_FALCON 200 #define FIGHTER_SWALLOW 201 #define FIGHTER_HAWK 202 #define FIGHTER_HAWK2 203 #define FIGHTER_BUZZARD 204 #define FIGHTER_CROW 205 #define FIGHTER_PHOENIX 206 #define FIGHTER_REDARROW 207 #define FIGHTER_BLACKBIRD 208 #define FIGHTER_STORM 209 #define FIGHTER_PILOTED2 249 #define FIGHTER_TRANSPORT 280 #define FIGHTER_TRANSPORT2 281 #define FIGHTER2 299 // moving ground units from here #define MOVING_GROUND 500 #define TANK1 700 #define TANK_AIR1 700 #define TANK_GROUND1 710 #define TANK_TRSAM1 711 #define TANK_PICKUP1 780 #define TANK_TRUCK1 790 #define TANK_TRUCK2 791 #define TANK2 799 // moving water units from here #define MOVING_WATER 800 #define SHIP1 800 #define SHIP_CRUISER 800 #define SHIP_DESTROYER1 810 #define SHIP2 899 // static ground units from here #define STATIC_GROUND 1000 #define FLAK1 1000 #define FLAK_AIR1 1000 #define FLARAK_AIR1 1010 #define FLAK2 1099 // passive static units from here #define STATIC_PASSIVE 10000 #define STATIC_TENT1 10000 #define STATIC_TENT4 10003 #define STATIC_CONTAINER1 10100 #define STATIC_HALL1 10200 #define STATIC_HALL2 10201 #define STATIC_OILRIG1 10300 #define STATIC_COMPLEX1 10301 #define STATIC_RADAR1 10302 #define STATIC_BASE1 10303 #define STATIC_DEPOT1 10304 #define STATIC_BARRIER1 10400 class DynamicObj : public CSpaceObj { public: int id; // object type: FLARAK_AIR1, STATIC_TENT1, FIGHTER_SWALLOW, ... // bool controls; bool active; // deactivated means no AI, no collision control and so on // easymodel==1 is the ancient core of the game ;-) // 1 means that theta will directly alter phi! Computer AI uses this model! // 2 means the realistic model with ailerons, elevator, rudder int easymodel; int ttl; // time to live: cannon and missiles will only live a short time, missiles will sink when ttl<=0 int immunity; // immunity means the object cannot collide with others, needed for shooting missiles/cannon float impact; // this value will be subtracted from the other objects shield when colliding // Imagine a carthesian coordinate system in the landscape, the y-axis pointing up float phi; // angle in x-z plane (polar coordinates) float gamma; // orthogonal angle (polar coordinates) float theta; // roll angle of the fighter! float thrust; // current thrust, not the speed itself! float realspeed; // the current speed, we only want to calculate this once per time step float forcex, forcez, forcey; // the force vectors (orthogonal, should be clear) float braking; // far away from reality: this factorizes the last speed vector with the current conditions (see move method) float manoeverability; // how fast a fighter can alter its direction float nimbility; // how fast a fighter responds to alterations of recXXX (recommended XXX) float maxthrust; // maximum throttle value float rectheta; // roll angle the fighter/object wants to reach float recthrust; // throttle the fighter/object wants to reach float recheight; // height above ground the fighter wants to reach float recgamma; // elevation the fighter wants to reach float maxtheta; // a maximum roll angle the object may achieve, easymodel==1 only! float maxgamma; // a maximum elevation the object may achieve, easymodel==1 only! float elevatoreffect; // number between 1.0 and -0.5, as diving should be less float ruddereffect; float rolleffect; float recelevatoreffect; // number between 1.0 and -0.5, as diving should be less float recruddereffect; float recrolleffect; int party; // usually 0 for enemies, 1 for allieds int points, fighterkills, shipkills, tankkills, otherkills; // statistics int sink; // ships will not explode but sink bool killed; // statistics Space *space; // in which space is this object, there is only one ;-) DynamicObj *source; // missiles must keep track of the object they have been fired from -> statistics int bomber; // act as bomber and prefer groud targets char net [100]; int realism; float accx, accy, accz; float shield, maxshield; // current and initial/maximum shield int net_write (); void net_read (); void activate (); void deactivate (); void dinit (); DynamicObj (); DynamicObj (Space *space2, CModel *o2, float zoom2); void thrustUp (); void thrustDown (); float distance (DynamicObj *target); float distanceXZ (DynamicObj *target); // check whether the object is exploding or sinking and deactivate if necessary void checkExplosion (Uint32 dt); // check the objects shield value and explode/sink if necessary void checkShield (); // check whether the object collides on the ground and alter gamma and y-translation void crashGround (Uint32 dt); // check for collision, simplified model, each model is surrounded by a cube // this works pretty well, but we must use more than one model for complex models or scenes void collide (DynamicObj *d, Uint32 dt); // d must be the medium (laser, missile) void setExplosion (float maxzoom, int len); void setBlackSmoke (float maxzoom, int len); // return heading difference towards enemy int getAngle (DynamicObj *o); // return elevation difference towards enemy int getAngleH (DynamicObj *o); // check for a looping, this is tricky :-) bool checkLooping (); void move (Uint32 dt); }; const int missiletypes = 8; const int missileracks = 6; class AIObj : public DynamicObj { protected: public: bool ai; // AI on/off bool autofire; // cannon fire on/off DynamicObj *target; // targeted object int acttype; // object is doing some action (Immelmann, Loop, ... not yet implemented) // three intellience characteristics which make up a pilot: 0 = best, 400 = worst int intelligence; // valid for every AI object: manoevers, fire rate (tanks), ... int aggressivity; // valid for fighters: fly low, stay near and behind enemy int precision; // valid for fighters: heading calculation // manoevers disable any other AI consideration int manoevertheta, manoeverheight, manoeverthrust; int idle; // counter how long AI object does the same thing (to change direction) int firemissilettl; // minimum time to wait between shooting missiles int firecannonttl; // minimum time to wait between shooting cannon int smokettl; // minimum time to wait between setting smoke elements int missiletype; // only relevant for the player, describes type: AAM, AGM, DF int missiles [missiletypes]; // number of missiles of each type int missilerack [missileracks]; // number of missile racks int missilerackn [missileracks]; // number of missile racks float aw; // current heading difference to target int score; // final score float dtheta, dgamma; // theta/gamma alteration (smooth piloting) float disttarget; // current distance to target int flares; int chaffs; int fireflarettl; int firechaffttl; int ammo; int ttf; // time to fire missile, targeting mechanism CSmoke *smoke; // bright smoke behind the object (fighter&missiles) Uint32 timer; int statfirepower; // firepower (missiles) statistics, number of stars bool dualshot; // one or two cannons? int manoeverstate; // changes to realistic manoevers and turns off easymodel void aiinit (); // initialize variables void missileCount (); void newinit (int id, int party, int intelligence, int precision, int aggressivity); // init new AI object void newinit (int id, int party, int intelligence); // init new AI object (esp. non-fighter) AIObj (); AIObj (Space *space2, CModel *o2, float zoom2); ~AIObj (); void initValues (DynamicObj *dobj, float phi); // init values to shoot cannon or missile void fireCannon (DynamicObj *laser, float phi); void fireCannon (DynamicObj **laser, float phi); void fireCannon (DynamicObj **laser); void fireMissile2 (int id, AIObj *missile, AIObj *target); void fireFlare2 (DynamicObj *flare); void fireChaff2 (DynamicObj *chaff); int firstMissile (); // select first missile type int nextMissile (int from); // select next missile type (cyclic) bool haveMissile (int id); // missile of type id left? bool haveMissile (); // missile of type missiletype left? void decreaseMissile (int id); // decrease missiles by one bool fireMissile (int id, AIObj **missile, AIObj *target); bool fireMissile (AIObj **missile, AIObj *target); bool fireMissile (int id, AIObj **missile); bool fireMissile (AIObj **missile); bool fireFlare (DynamicObj **flare, AIObj **missile); bool fireChaff (DynamicObj **chaff, AIObj **missile); bool fireMissileAir (AIObj **missile, AIObj *target); bool selectMissileAir (AIObj **missile); bool fireMissileAirFF (AIObj **missile, AIObj *target); bool selectMissileAirFF (AIObj **missile); bool fireMissileGround (AIObj **missile); bool selectMissileGround (AIObj **missile); void targetNearestGroundEnemy (AIObj **f); void targetNearestEnemy (AIObj **f); void targetNextEnemy (AIObj **f); void targetLockingEnemy (AIObj **f); void targetNext (AIObj **f); void targetPrevious (AIObj **f); void aiAction (Uint32 dt, AIObj **f, AIObj **m, DynamicObj **c, DynamicObj **flare, DynamicObj **chaff); // core AI method }; #endif gl-117-1.3.2/src/audio.cpp0000644000175000017500000003305210145416431014267 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes all SDL and SDL_mixer audio processing: sound and music */ #ifndef IS_AUDIO_H #include #include "audio.h" #include "dirs.h" WaveFile *wave = NULL; #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER void fillrepeat (void *unused, Uint8 *stream, int len) { Uint8 *waveptr; int waveleft; waveptr = wave->sound + wave->soundpos; waveleft = wave->soundlen - wave->soundpos; while (waveleft <= len) { SDL_MixAudio (stream, waveptr, waveleft, SDL_MIX_MAXVOLUME); stream += waveleft; len -= waveleft; waveptr = wave->sound; waveleft = wave->soundlen; wave->soundpos = 0; SDL_PauseAudio (1); return; } SDL_MixAudio (stream, waveptr, len, SDL_MIX_MAXVOLUME); wave->soundpos += len; } void fillonce (void *unused, Uint8 *stream, int len) { Uint8 *waveptr; int waveleft; waveleft = wave->soundlen - wave->soundpos; if (waveleft <= len) { if (SDL_GetAudioStatus () == SDL_AUDIO_PLAYING) { SDL_PauseAudio (0); } return; } waveptr = wave->sound + wave->soundpos; SDL_MixAudio (stream, waveptr, len, SDL_MIX_MAXVOLUME); wave->soundpos += len; } #endif #endif void freqEffect (int channel, void *stream, int len, void *udata) { /* 16 bits * 2 channels. */ Uint32 *ptr = (Uint32 *) stream; int i; for (i = 0; i < len / 4 *7/8; i ++) { ptr [i] = ptr [i*8/7]; } for (i = len/4*7/8; i < len/4; i ++) { ptr [i] = 0; } } WaveFile::WaveFile () { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER soundpos = 0; #else channel = -1; #endif #endif } WaveFile::WaveFile (char *filename) { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER soundpos = 0; #else channel = -1; #endif volume = 100; load (filename); #endif } WaveFile::~WaveFile () {} void WaveFile::load (char *filename) { #ifndef USE_GLUT char buf [STDSIZE]; #ifndef HAVE_SDL_MIXER if (SDL_LoadWAV (filename, &spec, &sound, &soundlen) == NULL) { sprintf (buf, "Couldn't load %s: %s", filename, SDL_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } spec.callback = fillrepeat; wave = this; #else chunk = Mix_LoadWAV (filename); if (chunk == NULL) { sprintf (buf, "SDL_Mixer: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } #endif #endif } void WaveFile::play (int chan, bool loop) { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER SDL_PauseAudio (1); if (wave != NULL) { wave->soundpos = 0; } wave = this; SDL_PauseAudio (0); #else if (!loop) channel = Mix_PlayChannel (chan, chunk, 0); else channel = Mix_PlayChannel (chan, chunk, -1); #endif #endif } void WaveFile::stop () { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER // No loop sounds on one channel #else if (channel < 0) return; if (Mix_Playing (channel)) Mix_HaltChannel (channel); #endif #endif } void WaveFile::setVolume (int level) { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER #else if (abs (volume - level) <= 5) return; volume = level; bool pause = false; if (channel >= 0) { if (Mix_Playing (channel)) { Mix_Pause (channel); pause = true; } } Mix_VolumeChunk (chunk, level); if (pause && channel >= 0) Mix_Resume (channel); #endif #endif } SoundSystem::SoundSystem () { audio = false; sound = true; music = true; musicplaying = false; volumesound = 100; volumemusic = 100; #ifndef USE_GLUT char buf [STDSIZE]; #ifndef HAVE_SDL_MIXER waveclick1 = new WaveFile (dirs->getSounds ("click1.wav")); if (SDL_OpenAudio (&waveclick1->spec, NULL) < 0) { sprintf (buf, "Couldn't open audio: %s, no sound available", SDL_GetError ()); display (buf, LOG_ERROR); audio = false; delete waveclick1; return; } else { audio = true; } delete waveclick1; #else display ("Using SDL_mixer", LOG_MOST); if (Mix_OpenAudio (22050, AUDIO_S16, 2, 4096)) { display ("Unable to open audio device", LOG_ERROR); audio = false; return; } else { audio = true; } music1 = Mix_LoadMUS (dirs->getMusic ("winner.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open winner.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("loser.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open loser.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("dark.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open dark.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("stars.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open stars.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("ambient.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open ambient.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("standby.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open standby.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("electro.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open electro.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("softtec.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open softtec.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } playtime = 0; #endif int i; waveexplosion1 = new WaveFile (dirs->getSounds ("explode1.wav")); waveclick1 = new WaveFile (dirs->getSounds ("click1.wav")); wavecannon1 = new WaveFile (dirs->getSounds ("cannon1.wav")); wavemissile1 = new WaveFile (dirs->getSounds ("missile1.wav")); wavethunder1 = new WaveFile (dirs->getSounds ("thunder1.wav")); for (i = 0; i < 1; i ++) { sprintf (buf, "plane%d.wav", i + 1); waveplane [i] = new WaveFile (dirs->getSounds (buf)); } engine = 0; wavehit1 = new WaveFile (dirs->getSounds ("hit1.wav")); wavebeep1 = new WaveFile (dirs->getSounds ("beep1.wav")); wavechaff1 = new WaveFile (dirs->getSounds ("chaff1.wav")); wavebeep2 = new WaveFile (dirs->getSounds ("beep2.wav")); wavecannon1->setVolume (50); wavemissile1->setVolume (110); waveclick1->setVolume (80); #endif } SoundSystem::~SoundSystem () { int i; if (!audio) return; #ifdef HAVE_SDL_MIXER if (music1) Mix_FreeMusic (music1); Mix_CloseAudio (); #else #ifdef HAVE_SDL SDL_CloseAudio (); #endif #endif delete waveexplosion1; delete waveclick1; delete wavecannon1; delete wavemissile1; delete wavethunder1; for (i = 0; i < 1; i ++) delete waveplane [i]; delete wavehit1; delete wavebeep1; delete wavechaff1; delete wavebeep2; } void SoundSystem::play (int sample, bool loop) { if (!audio) return; if (!sound) return; switch (sample) { case SOUND_CLICK1: waveclick1->play (0, loop); break; case SOUND_CANNON1: wavecannon1->play (0, loop); break; case SOUND_MISSILE1: wavemissile1->play (1, loop); break; case SOUND_EXPLOSION1: waveexplosion1->play (2, loop); break; case SOUND_THUNDER1: wavethunder1->play (3, loop); break; case SOUND_PLANE1: waveplane [0]->play (4, loop); // should be [engine] instead of [0], first find better sounds break; case SOUND_HIT1: wavehit1->play (5, loop); break; case SOUND_BEEP1: wavebeep1->play (6, loop); break; case SOUND_CHAFF1: wavechaff1->play (7, loop); break; case SOUND_BEEP2: wavebeep2->play (6, loop); break; } } void SoundSystem::playLoop (int sample) { if (!audio) return; if (!sound) return; play (sample, true); } void SoundSystem::playMusic () { if (!audio) return; if (!music) return; if (volumemusic == 0) return; #ifdef HAVE_SDL_MIXER musicplaying = true; Mix_PlayMusic (music1, -1); setVolumeMusic (); #endif } void SoundSystem::playMusic (int times) { if (!audio) return; if (!music) return; if (volumemusic == 0) return; #ifdef HAVE_SDL_MIXER musicplaying = true; Mix_PlayMusic (music1, times); setVolumeMusic (); #endif } void SoundSystem::haltMusic () { if (!audio) return; #ifdef HAVE_SDL_MIXER musicplaying = false; playtime = SDL_GetTicks (); Mix_HaltMusic (); #endif } void SoundSystem::loadMusic (int sample) { if (!audio) return; #ifdef HAVE_SDL_MIXER if (music1) Mix_FreeMusic (music1); switch (sample) { case MUSIC_DARK1: music1 = Mix_LoadMUS (dirs->getMusic ("dark.s3m")); break; case MUSIC_WINNER1: music1 = Mix_LoadMUS (dirs->getMusic ("winner.s3m")); break; case MUSIC_LOSER1: music1 = Mix_LoadMUS (dirs->getMusic ("loser.s3m")); break; case MUSIC_STANDBY1: music1 = Mix_LoadMUS (dirs->getMusic ("standby.s3m")); break; case MUSIC_ELECTRO1: music1 = Mix_LoadMUS (dirs->getMusic ("electro.s3m")); break; case MUSIC_STARS1: music1 = Mix_LoadMUS (dirs->getMusic ("stars.s3m")); break; case MUSIC_SOFTTEC1: music1 = Mix_LoadMUS (dirs->getMusic ("softtec.s3m")); break; case MUSIC_AMBIENT1: music1 = Mix_LoadMUS (dirs->getMusic ("ambient.s3m")); break; } #endif } void SoundSystem::setVolume (int sample, int level) { if (!audio) return; level *= volumesound; level /= 100; switch (sample) { case SOUND_CLICK1: waveclick1->setVolume (level); break; case SOUND_CANNON1: wavecannon1->setVolume (level); break; case SOUND_MISSILE1: wavemissile1->setVolume (level); break; case SOUND_EXPLOSION1: waveexplosion1->setVolume (level); break; case SOUND_THUNDER1: wavethunder1->setVolume (level); break; case SOUND_PLANE1: waveplane [0]->setVolume (level); // should be [engine] instead of [0], first find better sounds break; case SOUND_HIT1: wavehit1->setVolume (level); break; case SOUND_BEEP1: wavebeep1->setVolume (level); break; case SOUND_CHAFF1: wavechaff1->setVolume (level); break; case SOUND_BEEP2: wavebeep2->setVolume (level); break; } } void SoundSystem::setVolume () { if (!audio) return; int i; int level = 128 * volumesound / 100; waveclick1->setVolume (level * 80 / 128); wavecannon1->setVolume (level * 50 / 128); wavemissile1->setVolume (level * 110 / 128); waveexplosion1->setVolume (level); wavethunder1->setVolume (level); for (i = 0; i < 1; i ++) waveplane [i]->setVolume (level); wavehit1->setVolume (level); wavebeep1->setVolume (level); wavechaff1->setVolume (level); wavebeep2->setVolume (level); } void SoundSystem::setVolumeMusic () { if (!audio) return; #ifdef HAVE_SDL_MIXER int level = 128 * volumemusic / 100; Mix_VolumeMusic (level); #endif } void SoundSystem::setPosition (int sample, int angle, int dist) { if (!audio) return; switch (sample) { case SOUND_EXPLOSION1: #ifdef HAVE_SDL_MIXER Mix_SetPosition (2, angle, dist); #endif break; } } void SoundSystem::stop (int sample) { if (!audio) return; switch (sample) { case SOUND_CLICK1: waveclick1->stop (); break; case SOUND_CANNON1: wavecannon1->stop (); break; case SOUND_MISSILE1: wavemissile1->stop (); break; case SOUND_EXPLOSION1: waveexplosion1->stop (); break; case SOUND_THUNDER1: wavethunder1->stop (); break; case SOUND_PLANE1: waveplane [0]->stop (); // should be [engine] instead of [0], first find better sounds break; case SOUND_HIT1: wavehit1->stop (); break; case SOUND_BEEP1: wavebeep1->stop (); break; case SOUND_CHAFF1: wavechaff1->stop (); break; case SOUND_BEEP2: wavebeep2->stop (); break; } } void SoundSystem::stopAll () { if (!audio) return; #ifdef HAVE_SDL_MIXER Mix_HaltChannel (-1); #endif } #endif gl-117-1.3.2/src/audio.cpp~0000644000175000017500000003305310145416156014472 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes all SDL and SDL_mixer audio processing: sound and music */ #ifndef IS_AUDIO_H #include #include "audio.h" #include "dirs.h" WaveFile *wave = NULL; #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER void fillrepeat (void *unused, Uint8 *stream, int len) { Uint8 *waveptr; int waveleft; waveptr = wave->sound + wave->soundpos; waveleft = wave->soundlen - wave->soundpos; while (waveleft <= len) { SDL_MixAudio (stream, waveptr, waveleft, SDL_MIX_MAXVOLUME); stream += waveleft; len -= waveleft; waveptr = wave->sound; waveleft = wave->soundlen; wave->soundpos = 0; SDL_PauseAudio (1); return; } SDL_MixAudio (stream, waveptr, len, SDL_MIX_MAXVOLUME); wave->soundpos += len; } void fillonce (void *unused, Uint8 *stream, int len) { Uint8 *waveptr; int waveleft; waveleft = wave->soundlen - wave->soundpos; if (waveleft <= len) { if (SDL_GetAudioStatus () == SDL_AUDIO_PLAYING) { SDL_PauseAudio (0); } return; } waveptr = wave->sound + wave->soundpos; SDL_MixAudio (stream, waveptr, len, SDL_MIX_MAXVOLUME); wave->soundpos += len; } #endif #endif void freqEffect (int channel, void *stream, int len, void *udata) { /* 16 bits * 2 channels. */ Uint32 *ptr = (Uint32 *) stream; int i; for (i = 0; i < len / 4 *7/8; i ++) { ptr [i] = ptr [i*8/7]; } for (i = len/4*7/8; i < len/4; i ++) { ptr [i] = 0; } } WaveFile::WaveFile () { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER soundpos = 0; #else channel = -1; #endif #endif } WaveFile::WaveFile (char *filename) { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER soundpos = 0; #else channel = -1; #endif volume = 100; load (filename); #endif } WaveFile::~WaveFile () {} void WaveFile::load (char *filename) { #ifndef USE_GLUT char buf [STDSIZE]; #ifndef HAVE_SDL_MIXER if (SDL_LoadWAV (filename, &spec, &sound, &soundlen) == NULL) { sprintf (buf, "Couldn't load %s: %s", filename, SDL_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } spec.callback = fillrepeat; wave = this; #else chunk = Mix_LoadWAV (filename); if (chunk == NULL) { sprintf (buf, "SDL_Mixer: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } #endif #endif } void WaveFile::play (int chan, bool loop) { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER SDL_PauseAudio (1); if (wave != NULL) { wave->soundpos = 0; } wave = this; SDL_PauseAudio (0); #else if (!loop) channel = Mix_PlayChannel (chan, chunk, 0); else channel = Mix_PlayChannel (chan, chunk, -1); #endif #endif } void WaveFile::stop () { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER // No loop sounds on one channel #else if (channel < 0) return; if (Mix_Playing (channel)) Mix_HaltChannel (channel); #endif #endif } void WaveFile::setVolume (int level) { #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER #else if (abs (volume - level) <= 5) return; volume = level; bool pause = false; if (channel >= 0) { if (Mix_Playing (channel)) { Mix_Pause (channel); pause = true; } } Mix_VolumeChunk (chunk, level); if (pause && channel >= 0) Mix_Resume (channel); #endif #endif } SoundSystem::SoundSystem () { audio = false; sound = true; music = true; musicplaying = false; volumesound = 100; volumemusic = 100; #ifndef USE_GLUT char buf [STDSIZE]; #ifndef HAVE_SDL_MIXER waveclick1 = new WaveFile (dirs->getSounds ("click1.wav")); if (SDL_OpenAudio (&waveclick1->spec, NULL) < 0) { sprintf (buf, "Couldn't open audio: %s, no sound available", SDL_GetError ()); display (buf, LOG_ERROR); audio = false; delete waveclick1; return; } else { audio = true; } delete waveclick1; #else display ("Using SDL_mixer", LOG_MOST); if (Mix_OpenAudio (22050, AUDIO_S16, 2, 4096)) { display ("Unable to open audio device", LOG_ERROR); audio = false; return; } else { audio = true; } music1 = Mix_LoadMUS (dirs->getMusic ("winner.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open winner.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("loser.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open loser.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("dark.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open dark.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("stars.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open stars.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("ambient.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open ambient.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("standby.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open standby.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("electro.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open electro.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } Mix_FreeMusic (music1); music1 = Mix_LoadMUS (dirs->getMusic ("softtec.s3m")); if (music1 == NULL) { sprintf (buf, "Cannot open softtec.s3m: %s", Mix_GetError ()); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } playtime = 0; #endif int i; waveexplosion1 = new WaveFile (dirs->getSounds ("explode1.wav")); waveclick1 = new WaveFile (dirs->getSounds ("click1.wav")); wavecannon1 = new WaveFile (dirs->getSounds ("cannon1.wav")); wavemissile1 = new WaveFile (dirs->getSounds ("missile1.wav")); wavethunder1 = new WaveFile (dirs->getSounds ("thunder1.wav")); for (i = 0; i < 1; i ++) { sprintf (buf, "plane%d.wav", i + 1); waveplane [i] = new WaveFile (dirs->getSounds (buf)); } engine = 0; wavehit1 = new WaveFile (dirs->getSounds ("hit1.wav")); wavebeep1 = new WaveFile (dirs->getSounds ("beep1.wav")); wavechaff1 = new WaveFile (dirs->getSounds ("chaff1.wav")); wavebeep2 = new WaveFile (dirs->getSounds ("beep2.wav")); wavecannon1->setVolume (50); wavemissile1->setVolume (110); waveclick1->setVolume (80); #endif }; SoundSystem::~SoundSystem () { int i; if (!audio) return; #ifdef HAVE_SDL_MIXER if (music1) Mix_FreeMusic (music1); Mix_CloseAudio (); #else #ifdef HAVE_SDL SDL_CloseAudio (); #endif #endif delete waveexplosion1; delete waveclick1; delete wavecannon1; delete wavemissile1; delete wavethunder1; for (i = 0; i < 1; i ++) delete waveplane [i]; delete wavehit1; delete wavebeep1; delete wavechaff1; delete wavebeep2; } void SoundSystem::play (int sample, bool loop) { if (!audio) return; if (!sound) return; switch (sample) { case SOUND_CLICK1: waveclick1->play (0, loop); break; case SOUND_CANNON1: wavecannon1->play (0, loop); break; case SOUND_MISSILE1: wavemissile1->play (1, loop); break; case SOUND_EXPLOSION1: waveexplosion1->play (2, loop); break; case SOUND_THUNDER1: wavethunder1->play (3, loop); break; case SOUND_PLANE1: waveplane [0]->play (4, loop); // should be [engine] instead of [0], first find better sounds break; case SOUND_HIT1: wavehit1->play (5, loop); break; case SOUND_BEEP1: wavebeep1->play (6, loop); break; case SOUND_CHAFF1: wavechaff1->play (7, loop); break; case SOUND_BEEP2: wavebeep2->play (6, loop); break; } } void SoundSystem::playLoop (int sample) { if (!audio) return; if (!sound) return; play (sample, true); } void SoundSystem::playMusic () { if (!audio) return; if (!music) return; if (volumemusic == 0) return; #ifdef HAVE_SDL_MIXER musicplaying = true; Mix_PlayMusic (music1, -1); setVolumeMusic (); #endif } void SoundSystem::playMusic (int times) { if (!audio) return; if (!music) return; if (volumemusic == 0) return; #ifdef HAVE_SDL_MIXER musicplaying = true; Mix_PlayMusic (music1, times); setVolumeMusic (); #endif } void SoundSystem::haltMusic () { if (!audio) return; #ifdef HAVE_SDL_MIXER musicplaying = false; playtime = SDL_GetTicks (); Mix_HaltMusic (); #endif } void SoundSystem::loadMusic (int sample) { if (!audio) return; #ifdef HAVE_SDL_MIXER if (music1) Mix_FreeMusic (music1); switch (sample) { case MUSIC_DARK1: music1 = Mix_LoadMUS (dirs->getMusic ("dark.s3m")); break; case MUSIC_WINNER1: music1 = Mix_LoadMUS (dirs->getMusic ("winner.s3m")); break; case MUSIC_LOSER1: music1 = Mix_LoadMUS (dirs->getMusic ("loser.s3m")); break; case MUSIC_STANDBY1: music1 = Mix_LoadMUS (dirs->getMusic ("standby.s3m")); break; case MUSIC_ELECTRO1: music1 = Mix_LoadMUS (dirs->getMusic ("electro.s3m")); break; case MUSIC_STARS1: music1 = Mix_LoadMUS (dirs->getMusic ("stars.s3m")); break; case MUSIC_SOFTTEC1: music1 = Mix_LoadMUS (dirs->getMusic ("softtec.s3m")); break; case MUSIC_AMBIENT1: music1 = Mix_LoadMUS (dirs->getMusic ("ambient.s3m")); break; } #endif } void SoundSystem::setVolume (int sample, int level) { if (!audio) return; level *= volumesound; level /= 100; switch (sample) { case SOUND_CLICK1: waveclick1->setVolume (level); break; case SOUND_CANNON1: wavecannon1->setVolume (level); break; case SOUND_MISSILE1: wavemissile1->setVolume (level); break; case SOUND_EXPLOSION1: waveexplosion1->setVolume (level); break; case SOUND_THUNDER1: wavethunder1->setVolume (level); break; case SOUND_PLANE1: waveplane [0]->setVolume (level); // should be [engine] instead of [0], first find better sounds break; case SOUND_HIT1: wavehit1->setVolume (level); break; case SOUND_BEEP1: wavebeep1->setVolume (level); break; case SOUND_CHAFF1: wavechaff1->setVolume (level); break; case SOUND_BEEP2: wavebeep2->setVolume (level); break; } } void SoundSystem::setVolume () { if (!audio) return; int i; int level = 128 * volumesound / 100; waveclick1->setVolume (level * 80 / 128); wavecannon1->setVolume (level * 50 / 128); wavemissile1->setVolume (level * 110 / 128); waveexplosion1->setVolume (level); wavethunder1->setVolume (level); for (i = 0; i < 1; i ++) waveplane [i]->setVolume (level); wavehit1->setVolume (level); wavebeep1->setVolume (level); wavechaff1->setVolume (level); wavebeep2->setVolume (level); } void SoundSystem::setVolumeMusic () { if (!audio) return; #ifdef HAVE_SDL_MIXER int level = 128 * volumemusic / 100; Mix_VolumeMusic (level); #endif } void SoundSystem::setPosition (int sample, int angle, int dist) { if (!audio) return; switch (sample) { case SOUND_EXPLOSION1: #ifdef HAVE_SDL_MIXER Mix_SetPosition (2, angle, dist); #endif break; } } void SoundSystem::stop (int sample) { if (!audio) return; switch (sample) { case SOUND_CLICK1: waveclick1->stop (); break; case SOUND_CANNON1: wavecannon1->stop (); break; case SOUND_MISSILE1: wavemissile1->stop (); break; case SOUND_EXPLOSION1: waveexplosion1->stop (); break; case SOUND_THUNDER1: wavethunder1->stop (); break; case SOUND_PLANE1: waveplane [0]->stop (); // should be [engine] instead of [0], first find better sounds break; case SOUND_HIT1: wavehit1->stop (); break; case SOUND_BEEP1: wavebeep1->stop (); break; case SOUND_CHAFF1: wavechaff1->stop (); break; case SOUND_BEEP2: wavebeep2->stop (); break; } } void SoundSystem::stopAll () { if (!audio) return; #ifdef HAVE_SDL_MIXER Mix_HaltChannel (-1); #endif } #endif gl-117-1.3.2/src/audio.h0000644000175000017500000000512410145416156013737 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes all SDL and SDL_mixer audio processing: sound and music */ #ifndef IS_AUDIO_H #define IS_AUDIO_H #include "common.h" // ok class WaveFile { public: #ifndef USE_GLUT #ifndef HAVE_SDL_MIXER SDL_AudioSpec spec; Uint8 *sound; Uint32 soundlen; int soundpos; #else Mix_Chunk *chunk; int channel; #endif #endif int volume; WaveFile (); WaveFile (char *filename); ~WaveFile (); void load (char *filename); void play (int channel, bool loop); void stop (); void setVolume (int level); }; #define SOUND_EXPLOSION1 1000 #define SOUND_CLICK1 1 #define SOUND_CANNON1 2 #define SOUND_MISSILE1 3 #define SOUND_THUNDER1 4 #define SOUND_PLANE1 5 #define SOUND_HIT1 6 #define SOUND_BEEP1 7 #define SOUND_CHAFF1 8 #define SOUND_BEEP2 9 #define MUSIC_DARK1 0 #define MUSIC_WINNER1 1 #define MUSIC_STANDBY1 2 #define MUSIC_ELECTRO1 3 #define MUSIC_STARS1 4 #define MUSIC_LOSER1 5 #define MUSIC_SOFTTEC1 6 #define MUSIC_AMBIENT1 7 class SoundSystem { public: bool audio; bool sound, music; bool musicplaying; int volumesound, volumemusic; int engine; #ifdef HAVE_SDL_MIXER int playtime; Mix_Music *music1; #endif WaveFile *waveexplosion1, *waveclick1, *wavecannon1, *wavemissile1; WaveFile *wavethunder1, *waveplane [10], *wavehit1, *wavebeep1, *wavechaff1, *wavebeep2; SoundSystem (); ~SoundSystem (); void play (int sample, bool loop); void playLoop (int sample); void setPosition (int sample, int angle, int dist); void stop (int sample); void stopAll (); void playMusic (); void playMusic (int times); void loadMusic (int music); void haltMusic (); void setVolume (int sample, int level); void setVolume (); void setVolumeMusic (); }; #endif gl-117-1.3.2/src/cockpit.cpp0000644000175000017500000006001610145416156014626 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes the cockpit rendering methods. */ #ifndef IS_COCKPIT_H #include #include #include "cockpit.h" #include "main.h" #include "pilots.h" #include "mathtab.h" #include "mission.h" #include "gl.h" #include "glland.h" #define TRIANGLE_BLIP 1 #define SQUARE_BLIP 2 Cockpit::Cockpit () { flarewarning = 0; chaffwarning = 0; } // Mitchell Perilstein: void Cockpit::drawBlip(int shape, float x, float y, float z, unsigned char r, unsigned char g, unsigned char b) { float blipsize = 0.02; int alpha = 200; CColor color; // setColor (&color, alpha); // no need here glColor4ub (r, g, b, alpha); glBegin (GL_QUADS); switch (shape) { case SQUARE_BLIP: glVertex3f (x + blipsize, y + blipsize, z); glVertex3f (x + blipsize, y - blipsize, z); glVertex3f (x - blipsize, y - blipsize, z); glVertex3f (x - blipsize, y + blipsize, z); glVertex3f (x + blipsize, y + blipsize, z); break; case TRIANGLE_BLIP: glVertex3f (x, y + blipsize, z); glVertex3f (x + blipsize, y - blipsize, z); glVertex3f (x - blipsize, y - blipsize, z); glVertex3f (x, y + blipsize, z); break; default: abort(); } glEnd (); } void Cockpit::cockpitvertex (float phi, float gamma) // cylindrical headup projection { float fpt = -fplayer->theta + 180; float sinfpt = SIN(fpt), cosfpt = COS(fpt); float x = cosfpt * phi + sinfpt * gamma + 180; float y = sinfpt * phi - cosfpt * gamma + 180; glVertex3f (10*SIN(x),10*SIN(y),-10*COS(x)*COS(y)); } void Cockpit::setColor (int alpha) { if (fplayer->o == &model_fig) glColor4ub (255, 255, 0, alpha); else if (fplayer->o == &model_figb) glColor4ub (255, 150, 100, alpha); else if (fplayer->o == &model_figc) glColor4ub (200, 200, 100, alpha); else if (fplayer->o == &model_figg) glColor4ub (255, 0, 0, alpha); else if (fplayer->o == &model_figi) glColor4ub (200, 200, 100, alpha); else glColor4ub (100, 100, 255, alpha); } void Cockpit::setColor (CColor *color, int alpha) { if (fplayer->o == &model_fig) color->setColor (255, 255, 0, alpha); else if (fplayer->o == &model_figb) color->setColor (255, 150, 100, alpha); else if (fplayer->o == &model_figc) color->setColor (200, 200, 100, alpha); else if (fplayer->o == &model_figg) color->setColor (255, 0, 0, alpha); else if (fplayer->o == &model_figi) color->setColor (200, 200, 100, alpha); else color->setColor (100, 100, 255, alpha); } void Cockpit::drawCounter () { int i; char buf [STDSIZE]; float xf = 2.8F, yf = -1.0F, zf = -4.0F, yf2 = -1.3F, xfl = 0.4F, yfl = 0.1F; // glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); bool flarewarn = false, chaffwarn = false; for (i = 0; i < maxmissile; i ++) if (missile [i]->active) if (missile [i]->target == fplayer) { if (missile [i]->id <= MISSILE_AIR1) flarewarn = true; else chaffwarn = true; } if (flarewarn && game == GAME_PLAY) { if (flarewarning <= 0) { flarewarning = 10 * timestep; sound->play (SOUND_BEEP2, false); } flarewarning -= dt; if (flarewarning <= 6 * timestep) { glColor3ub (200, 0, 0); glBegin (GL_QUADS); glVertex3f (xf - xfl, yf2 - yfl, zf); glVertex3f (xf + xfl, yf2 - yfl, zf); glVertex3f (xf + xfl, yf2 + yfl, zf); glVertex3f (xf - xfl, yf2 + yfl, zf); glEnd (); } } if (chaffwarn && game == GAME_PLAY) { if (chaffwarning <= 0) { chaffwarning = 10 * timestep; sound->play (SOUND_BEEP1, false); } chaffwarning -= dt; if (chaffwarning <= 6 * timestep) { glColor3ub (0, 0, 200); glBegin (GL_QUADS); glVertex3f (xf - xfl, yf - yfl, zf); glVertex3f (xf + xfl, yf - yfl, zf); glVertex3f (xf + xfl, yf + yfl, zf); glVertex3f (xf - xfl, yf + yfl, zf); glEnd (); } } glLineWidth (LINEWIDTH(1.0F)); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (xf - xfl, yf2 - yfl, zf); glVertex3f (xf + xfl, yf2 - yfl, zf); glVertex3f (xf + xfl, yf2 + yfl, zf); glVertex3f (xf - xfl, yf2 + yfl, zf); glVertex3f (xf - xfl, yf2 - yfl, zf); glEnd (); glColor3ub (0, 100, 255); glBegin (GL_LINE_STRIP); glVertex3f (xf - xfl, yf - yfl, zf); glVertex3f (xf + xfl, yf - yfl, zf); glVertex3f (xf + xfl, yf + yfl, zf); glVertex3f (xf - xfl, yf + yfl, zf); glVertex3f (xf - xfl, yf - yfl, zf); glEnd (); CColor blue (0, 100, 255); CColor red (255, 0, 0); sprintf (buf, "CHAFF: %d", fplayer->chaffs); font1->drawTextCentered (xf*10, (yf-0.05)*10, zf, buf, &blue); sprintf (buf, "FLARE: %d", fplayer->flares); font1->drawTextCentered (xf*10, (yf2-0.05)*10, zf, buf, &red); if (mission->id == MISSION_DEATHMATCH1 || mission->id == MISSION_DEATHMATCH3) { sprintf (buf, "%s: %d", pilots->pilot [pilots->aktpilot]->name, fplayer->fighterkills); font1->drawText (-30.0F, 15.0F, -3.0F, buf, &blue); for (i = 1; i < 8; i ++) { sprintf (buf, "PILOT%d: %d", i, fighter [i]->fighterkills); font1->drawText (-30.0F, 15.0F - i, -3.0F, buf, &red); } } if (mission->id == MISSION_DEATHMATCH2) { for (i = 0; i < 4; i ++) { sprintf (buf, "TEAM%d: %d", i, fighter [i * 2]->fighterkills + fighter [i * 2 + 1]->fighterkills); font1->drawText (-30.0F, 15.0F - i, -3.0F, buf, &red); } } } /*void Cockpit::drawTargeter () { if (! fplayer->target) return; glMatrixMode (GL_MODELVIEW); glPushMatrix(); if (fplayer->target->active) { DynamicObj* target = fplayer->target; float hud_width = 800.0f; // so x will be from -400.0f to 400.0f float hud_height = 600.0f; // and y from -300.0f to 300.0f float view_angle = 80.0f / 180.0f * PI; // in radians! float view_matrix [16]; glGetFloatv (GL_MODELVIEW_MATRIX, view_matrix); glLoadIdentity (); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluOrtho2D (-hud_width * 0.5f, hud_width * 0.5f, -hud_height * 0.5f, hud_height * 0.5f); CVector3 pos = *target->tl; CVector3 delta = *fplayer->tl; delta.sub (&pos); // multiply Vector by Matrix float* m = view_matrix; float x = m[0] * pos.x + m[4] * pos.y + m[8] * pos.z + m[12]; float y = m[1] * pos.x + m[5] * pos.y + m[9] * pos.z + m[13]; float z = m[2] * pos.x + m[6] * pos.y + m[10] * pos.z + m[14]; pos.x = x; pos.y = y; pos.z = z; float dist = delta.length (); // sorry, but some variables names as good as my english :( float a = sqrt (pos.x * pos.x + pos.y * pos.y); float b = sqrt (dist * dist - a * a); float descale = hud_height * 0.5f / tan (view_angle * 0.5f) / b; gl->enableAlphaBlending (); glTranslatef (pos.x * descale, pos.y * descale, 0.0f); glPushMatrix (); // FIXME: don't sure that this is right: float object_radius = target->zoom; float second_descale = hud_height * 0.5f / tan (view_angle * 0.5f) / (b - object_radius); float radius = object_radius * second_descale + 4.0f; bool full = false; if (static_cast (fplayer->target)->party != fplayer->party) { if (fplayer->ttf < 0 && fplayer->missiletype != MISSILE_DF1 - MISSILE1) { glColor4ub (255, 255, 0, 255); full = true; } else { glColor4ub (255, (50 * timestep - fplayer->ttf) * 255 / 60 / timestep, 0, 255); } } else { glColor4ub (0, 0, 255, 255); } if (! full) { const float corner_size = 0.5f; // in half's of rect side glBegin (GL_LINE_STRIP); glVertex2f (- radius, radius * (1.0f - corner_size)); glVertex2f (- radius, radius); glVertex2f (- radius * (1.0f - corner_size), radius); glEnd (); glBegin (GL_LINE_STRIP); glVertex2f (radius * (1.0f - corner_size), radius); glVertex2f (radius, radius); glVertex2f (radius, radius * (1.0f - corner_size)); glEnd (); glBegin (GL_LINE_STRIP); glVertex2f (radius * (1.0f - corner_size), - radius); glVertex2f (radius, - radius); glVertex2f (radius, - radius * (1.0f - corner_size)); glEnd (); glBegin (GL_LINE_STRIP); glVertex2f (- radius, - radius * (1.0f - corner_size)); glVertex2f (- radius, - radius); glVertex2f (- radius * (1.0f - corner_size), - radius); glEnd (); } else { glBegin (GL_LINE_STRIP); glVertex2f (- radius, - radius); glVertex2f (radius, - radius); glVertex2f (radius, radius); glVertex2f (- radius, radius); glVertex2f (- radius, - radius); glEnd (); } glPopMatrix (); gl->disableAlphaBlending (); } glMatrixMode (GL_MODELVIEW); glPopMatrix(); glViewport(0, 0, (GLint) width, (GLint) height); glMatrixMode (GL_PROJECTION); glLoadIdentity (); float v = getView (); if (camera == 50) v = 100000.0; gluPerspective (80.0, (float) width / height, 0.25 * GLOBALSCALE, v * GLOBALSCALE); glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); }*/ void Cockpit::drawTargeter () { if (fplayer->target) if (fplayer->target->active) { DynamicObj *o = fplayer->target; float myphi = fplayer->phi; if (myphi < 0) myphi += 360; float ex1 = cosi [(int) myphi] * o->zoom, ey1 = -sine [(int) myphi] * o->zoom; float ex2 = -ex1, ey2 = -ey1; float ez = o->zoom; gl->enableAlphaBlending (); bool full = false; if (((AIObj *) fplayer->target)->party != fplayer->party) { if (fplayer->ttf <= 0 && fplayer->missiletype != MISSILE_DF1 - MISSILE1) { glColor4ub (255, 255, 0, 255); full = true; } else { glColor4ub (255, (50 * timestep - fplayer->ttf) * 255 / 60 / timestep, 0, 255); } } else { glColor4ub (0, 0, 255, 255); } if (!full) { float dx = (ex2 - ex1) / 4; float dy = (ey2 - ey1) / 4; float dz = ez / 2; glBegin (GL_LINE_STRIP); glVertex3f (o->tl->x + ex1, o->tl->y + ez - dz, o->tl->z + ey1); glVertex3f (o->tl->x + ex1, o->tl->y + ez, o->tl->z + ey1); glVertex3f (o->tl->x + ex1 + dx, o->tl->y + ez, o->tl->z + ey1 + dy); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (o->tl->x + ex2 - dx, o->tl->y + ez, o->tl->z + ey2 - dy); glVertex3f (o->tl->x + ex2, o->tl->y + ez, o->tl->z + ey2); glVertex3f (o->tl->x + ex2, o->tl->y + ez - dz, o->tl->z + ey2); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (o->tl->x + ex2, o->tl->y - ez + dz, o->tl->z + ey2); glVertex3f (o->tl->x + ex2, o->tl->y - ez, o->tl->z + ey2); glVertex3f (o->tl->x + ex2 - dx, o->tl->y - ez, o->tl->z + ey2 - dy); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (o->tl->x + ex1 + dx, o->tl->y - ez, o->tl->z + ey1 + dy); glVertex3f (o->tl->x + ex1, o->tl->y - ez, o->tl->z + ey1); glVertex3f (o->tl->x + ex1, o->tl->y - ez + dz, o->tl->z + ey1); glEnd (); } else { glBegin (GL_LINE_STRIP); glVertex3f (o->tl->x + ex1, o->tl->y + ez, o->tl->z + ey1); glVertex3f (o->tl->x + ex2, o->tl->y + ez, o->tl->z + ey2); glVertex3f (o->tl->x + ex2, o->tl->y - ez, o->tl->z + ey2); glVertex3f (o->tl->x + ex1, o->tl->y - ez, o->tl->z + ey1); glVertex3f (o->tl->x + ex1, o->tl->y + ez, o->tl->z + ey1); glEnd (); } gl->disableAlphaBlending (); } } void Cockpit::drawCross () { glDisable (GL_LIGHTING); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); // glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); if (fplayer->o == &model_fig || fplayer->o == &model_figg) { gl->enableTextures (texcross->textureID); } else { gl->enableTextures (texcross2->textureID); } float xf = 0.1, yf = 0.1, zf = 1.0; setColor (150); glBegin (GL_QUADS); glTexCoord2d (0, 0); glVertex3f (-xf, -yf, -zf); glTexCoord2d (0, 1); glVertex3f (-xf, yf, -zf); glTexCoord2d (1, 1); glVertex3f (xf, yf, -zf); glTexCoord2d (1, 0); glVertex3f (xf, -yf, -zf); glEnd (); glDisable (GL_ALPHA_TEST); glDisable (GL_TEXTURE_2D); gl->disableAlphaBlending (); // glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); } void Cockpit::drawHeading () { char str [STDSIZE]; CColor color; int i = 0; int alpha = 175; setColor (&color, alpha); glDisable (GL_LIGHTING); glLineWidth (LINEWIDTH(2.0F)); glDisable (GL_DEPTH_TEST); float xf; float yf = 17.5; float zf = -2.5; float g = 0.5; for (i = 0; i < 360; i += 5) { float p = (float) i - fplayer->phi; if (p < -180) p += 360; if (p > 180) p -= 360; if (p >= -40 && p <= 40) { if ((i - mission->heading) % 90 == 0) g = 0.6; else if (!(i % 10)) g = 0.3; else g = 0.1; xf = p / 6.0; gl->enableAlphaBlending (); setColor (alpha); glBegin (GL_LINES); glVertex3f (xf * 0.1, (yf - g) * 0.1, zf); glVertex3f (xf * 0.1, yf * 0.1, zf); glEnd (); if (i == mission->heading) font1->drawText (xf - 0.5, yf - 2.0, zf, "S", &color); else if (i == mission->heading + 90 || i == mission->heading - 270) font1->drawText (xf - 0.5, yf - 2.0, zf, "E", &color); else if (i == mission->heading + 180 || i == mission->heading - 180) font1->drawText (xf - 0.5, yf - 2.0, zf, "N", &color); else if (i == mission->heading + 270 || i == mission->heading - 90) font1->drawText (xf - 0.5, yf - 2.0, zf, "W", &color); } } if (fplayer->target != NULL) if (fplayer->target->active) { float dgamma = fplayer->getAngleH (fplayer->target); float dphi = fplayer->getAngle (fplayer->target); if (fabs (dphi) > 50 || fabs (dgamma) > 50) { if (dphi < -90) dphi = -90; else if (dphi > 90) dphi = 90; float delta = atan (dgamma / dphi) * 180 / PI; if (dphi > 0) delta -= 180; delta += fplayer->theta; float xs = COS(delta) * 3; float ys = -SIN(delta) * 3; float delta1 = delta + 5; float xs1 = COS(delta1) * 2.8; float ys1 = -SIN(delta1) * 2.8; float delta2 = delta - 5; float xs2 = COS(delta2) * 2.8; float ys2 = -SIN(delta2) * 2.8; zf = -4; glBegin (GL_LINE_STRIP); glColor4ub (255, 0, 0, alpha); glVertex3f (xs2, ys2, zf); glVertex3f (xs, ys, zf); glVertex3f (xs1, ys1, zf); glEnd (); } } sprintf (str, "SPEED %d", (int) (fplayer->realspeed / timestep * 80000.0F)); font1->drawTextCentered (-8.0, -8.5, -4.0, str, &color); sprintf (str, "AMMO %d", fplayer->ammo); font1->drawTextCentered (8.0, -8.5, -4.0, str, &color); gl->enableAlphaBlending (); float dgamma = fplayer->gamma - (int) fplayer->gamma; float innerx = 5, outerx = 10, widthx = 1; int step = 15; glLineWidth (LINEWIDTH(1.2F)); glBegin (GL_LINES); float tmp = fplayer->gamma - 180; cockpitvertex (-innerx,tmp); cockpitvertex (-15,tmp); cockpitvertex (innerx,tmp); cockpitvertex (15,tmp); for (i = -180 + step; i < 0; i += step) { float tmp=int(-i+fplayer->gamma+540)%360-180; tmp += dgamma; cockpitvertex (-innerx,tmp+1); cockpitvertex (-innerx,tmp); cockpitvertex (innerx,tmp+1); cockpitvertex (innerx,tmp); cockpitvertex (-outerx,tmp); cockpitvertex (-innerx,tmp); cockpitvertex (innerx,tmp); cockpitvertex (outerx,tmp); } for (i = step; i < 180; i += step) { float tmp=int(-i+fplayer->gamma+540)%360-180; tmp += dgamma; cockpitvertex (-innerx,tmp+1); cockpitvertex (-innerx,tmp); cockpitvertex (innerx,tmp+1); cockpitvertex (innerx,tmp); cockpitvertex (-outerx,tmp); cockpitvertex (-outerx+widthx,tmp); cockpitvertex (innerx,tmp); cockpitvertex (innerx+widthx,tmp); cockpitvertex (-innerx-widthx,tmp); cockpitvertex (-innerx,tmp); cockpitvertex (outerx-widthx,tmp); cockpitvertex (outerx,tmp); } glEnd (); gl->disableAlphaBlending (); glLineWidth (LINEWIDTH(2.0F)); } void Cockpit::drawTargetedElement () { char str [20]; CColor color; CVector3 tl, n; CRotation r; color.setColor (255, 0, 0); color.c [3] = 255; tl.x = -0.35; tl.y = -0.3; tl.z = -0.5; gl->disableAlphaBlending (); glEnable (GL_DEPTH_TEST); if (fplayer->target != NULL) if (fplayer->target->active) { glEnable (GL_LIGHTING); fplayer->target->o->draw (&n, &tl, fplayer->target->rot, 0.05, 0.3, 0); glDisable (GL_LIGHTING); if (((AIObj *) fplayer->target)->party == fplayer->party) color.setColor (0, 0, 255); font1->drawText (-24.0, -23.0, -4.0, fplayer->target->o->name, &color); sprintf (str, "%d", (int) (15.0 * fplayer->distance (fplayer->target))); font1->drawText (-24.0, -25.0, -4.0, str, &color); } glDisable (GL_DEPTH_TEST); } void Cockpit::drawWeapon () { char str [20]; CColor color; CVector3 tl, n; CRotation r; if (fplayer->missiles [fplayer->missiletype] <= 0) return; color.setColor (255, 0, 0); color.c [3] = 255; tl.x = 0.35; tl.y = -0.3; tl.z = -0.5; gl->disableAlphaBlending (); glEnable (GL_DEPTH_TEST); CModel *missile = NULL; if (fplayer->missiletype == 0) missile = &model_missile1; else if (fplayer->missiletype == 1) missile = &model_missile2; else if (fplayer->missiletype == 2) missile = &model_missile3; else if (fplayer->missiletype == 3) missile = &model_missile4; else if (fplayer->missiletype == 4) missile = &model_missile5; else if (fplayer->missiletype == 5) missile = &model_missile6; else if (fplayer->missiletype == 6) missile = &model_missile7; else if (fplayer->missiletype == 7) missile = &model_missile8; glEnable (GL_LIGHTING); missile->draw (&n, &tl, fplayer->rot, 0.05, 1.0, 0); glDisable (GL_LIGHTING); glDisable (GL_DEPTH_TEST); font1->drawText (16.0, -22.0, -4.0, missile->name, &color); sprintf (str, "N %d", fplayer->missiles [fplayer->missiletype]); font1->drawText (16.0, -24.0, -4.0, str, &color); } void Cockpit::drawRadar () { int i; float yf = -4.2, zf = -7.0; gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); setColor (150); float xl, yl; int type; if (fplayer->o == &model_fig || fplayer->o == &model_figg) { gl->enableTextures (texradar2->textureID); xl = 1.4; yl = 1.3; type = 0; } else { gl->enableTextures (texradar1->textureID); xl = 1.3; yl = 1.2; type = 1; } glBegin (GL_QUADS); glTexCoord2d (0, 0); glVertex3f (-xl, yf - yl, zf); glTexCoord2d (0, 1); glVertex3f (-xl, yf + yl, zf); glTexCoord2d (1, 1); glVertex3f (xl, yf + yl, zf); glTexCoord2d (1, 0); glVertex3f (xl, yf - yl, zf); glEnd (); glDisable (GL_ALPHA_TEST); glDisable (GL_TEXTURE_2D); glLineWidth (LINEWIDTH(1.0F)); glBegin (GL_LINES); glVertex3f (0, yf - yl * 0.9, zf); glVertex3f (0, yf + yl * 0.9, zf); glVertex3f (-xl * 0.9, yf, zf); glVertex3f (xl * 0.9, yf, zf); glEnd (); int radarzoom = 1; if (fplayer->disttarget < 40) radarzoom = 2; for (i = 0; i < maxfighter; i ++) if (fighter [i] != fplayer && fighter [i]->active) { int aw = fplayer->getAngle (fighter [i]); if (aw < 0) aw += 360; float d = fplayer->distanceXZ (fighter [i]) / 100.0 * radarzoom; float px = -d * sine [aw]; float py = yf + d * cosi [aw]; if ((type == 0 && d < 1.2) || (type == 1 && px >= -1.2 && px <= 1.2 && py >= yf - 1.1 && py <= yf + 1.1)) { if (fighter [i] == fplayer->target) { drawBlip(SQUARE_BLIP, px, py, zf, 255, 200, 0); } else if (fighter [i]->party != fplayer->party) { drawBlip(SQUARE_BLIP, px, py, zf, 255, 0, 0); } else { drawBlip(SQUARE_BLIP, px, py, zf, 0, 0, 255); } } } for (i = 0; i < maxmissile; i ++) { if (missile [i]->target == fplayer && missile [i]->active) { int aw = fplayer->getAngle (missile [i]); if (aw < 0) aw += 360; float d = fplayer->distance (missile [i]) / 100.0 * radarzoom; float px = -d * sine [aw]; float py = yf + d * cosi [aw]; if ((type == 0 && d < 1.2) || (type == 1 && px >= -1.2 && px <= 1.2 && py >= yf - 1.1 && py <= yf + 1.1)) { drawBlip(TRIANGLE_BLIP, px, py, zf, 255, 255, 255); } } } gl->disableAlphaBlending (); } void Cockpit::drawRelativeHeightBar() { char str [STDSIZE]; CColor color; int alpha = 175; setColor (&color, alpha); setColor (alpha); glDisable (GL_LIGHTING); glLineWidth (LINEWIDTH(1.0F)); glDisable (GL_DEPTH_TEST); gl->enableAlphaBlending (); float xf = 1.5F, xfl = 0.06F, yf=0.0F, yfl = 0.7F, zf=-4.0F; float px = fplayer->tl->x, py = fplayer->tl->y, pz = fplayer->tl->z; float lh = l->getExactHeight(px, pz); setColor(80); // low alpha for better visibility // add 100.0 to each player_y and land_h to avoid values <= 0.0 float rel_height = ((100.0F+py)/(100.0F+lh) * 100.0F) - 100.0F; // turn 0 -> 50.0 range to -0.7 -> 0.7 for drawing, 1.4/50=0.0208 float yfv = (rel_height * 0.0208F)-0.7F; // cap max-min values if(yfv > 0.7F) yfv = 0.7F; if(yfv < -0.7F) yfv = -0.7F; glBegin (GL_QUADS); glVertex3f (xf - xfl, yf - yfl, zf); // fixed glVertex3f (xf + xfl, yf - yfl, zf); // fixed glVertex3f (xf + xfl, yf + yfv, zf); // var glVertex3f (xf - xfl, yf + yfv, zf); // var glEnd (); setColor(alpha); sprintf (str, "RHEIGHT"); font1->drawTextCentered (xf*11.0F, (yf-0.85F)*10.0F, zf, str, &color); glEnd(); gl->disableAlphaBlending (); } void Cockpit::drawThrustBar() { char str [STDSIZE]; CColor color; int alpha = 175; setColor (&color, alpha); setColor (alpha); glDisable (GL_LIGHTING); glLineWidth (LINEWIDTH(1.0F)); glDisable (GL_DEPTH_TEST); gl->enableAlphaBlending (); setColor(80); // don't block visibility too much float xf = -1.5F, xfl = 0.06F, yf=0.0F, yfl = 0.7F, zf=-4.0F; // turn 0.5 -> 1.0 range to -0.7 -> 0.7 for drawing float yfv = fplayer->thrust / fplayer->maxthrust * 2.8F - 2.1F; // cap max-min values if(yfv > 0.7F) yfv = 0.7F; if(yfv < -0.7F) yfv = -0.7F; glBegin (GL_QUADS); glVertex3f (xf - xfl, yf - yfl, zf); // fixed glVertex3f (xf + xfl, yf - yfl, zf); // fixed glVertex3f (xf + xfl, yf + yfv, zf); // var glVertex3f (xf - xfl, yf + yfv, zf); // var glEnd (); setColor(alpha); sprintf (str, "THRUST"); font1->drawTextCentered (xf*11.0F, (yf-0.85F)*10.0F, zf, str, &color); glEnd(); gl->disableAlphaBlending (); } #endif //vim:sw=2 cino=c5,:.4s,=.2s,(0,u0,g0,h2,+2 gl-117-1.3.2/src/cockpit.h0000644000175000017500000000277710145416156014305 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes the cockpit rendering methods. */ #ifndef IS_COCKPIT_H #define IS_COCKPIT_H #include "common.h" // ok #include "model.h" // ok class Cockpit { private: void cockpitvertex (float phi, float gamma); public: int flarewarning, chaffwarning; Uint32 dt; Cockpit (); void drawBlip (int shape, float x, float y, float z, unsigned char r, unsigned char g, unsigned char b); void setColor (int alpha); void setColor (CColor *color, int alpha); void drawCounter (); void drawTargeter (); void drawCross (); void drawHeading (); void drawTargetedElement (); void drawWeapon (); void drawRadar (); void drawRelativeHeightBar(); void drawThrustBar(); }; #endif gl-117-1.3.2/src/common.cpp0000644000175000017500000000722410145416156014464 0ustar cedriccedric/* This file includes all global definitions. */ #ifndef IS_COMMON_H #include #include #include #include #include "common.h" #include "dirs.h" void display_stream (FILE *stream, char *str, int level) { if (level == LOG_NONE) fprintf (stream, "%s\n", str); else if (level == LOG_FATAL) fprintf (stream, "Fatal: %s\n", str); else if (level == LOG_ERROR) fprintf (stream, "Error: %s\n", str); else if (level == LOG_WARN) fprintf (stream, "Warning: %s\n", str); else if (level == LOG_MOST) fprintf (stream, "Info: %s\n", str); else fprintf (stream, "Debug: %s\n", str); fflush (stream); } FILE *display_out = NULL; void display_exit () { if (display_out) fclose (display_out); display_out = NULL; } // display log/debug message void display (char *str, int level) { int len = strlen (str); if (!len) return; if (level <= debuglevel) { FILE *stream = stdout; if (level == LOG_FATAL || level == LOG_ERROR || level == LOG_WARN) stream = stderr; display_stream (stream, str, level); if (!display_out) { if (dirs) if ((display_out = fopen (dirs->getSaves ("logfile.txt"), "wt")) != NULL) { display_stream (display_out, str, level); } } else { display_stream (display_out, str, level); } } } // display "out of memory" error and exit void error_outofmemory () { display ("Out of memory", LOG_FATAL); exit (EXIT_ALLOC); } void key2string (int key, char *buf) { buf [0] = '\0'; // try one byte keys if (key > 32 && key <= 'z') sprintf (buf, "%c", key); else if (key == KEY_SPACE) strcpy (buf, "SPACE"); else if (key == KEY_TAB) strcpy (buf, "TAB"); else if (key == KEY_ENTER) strcpy (buf, "ENTER"); else if (key == KEY_BACKSPACE) strcpy (buf, "BSPACE"); if (key < 256) return; // try special keys key -= 256; if (key == KEY_F1) strcpy (buf, "F1"); else if (key == KEY_F2) strcpy (buf, "F2"); else if (key == KEY_F3) strcpy (buf, "F3"); else if (key == KEY_F4) strcpy (buf, "F4"); else if (key == KEY_F5) strcpy (buf, "F5"); else if (key == KEY_F6) strcpy (buf, "F6"); else if (key == KEY_F7) strcpy (buf, "F7"); else if (key == KEY_F8) strcpy (buf, "F8"); else if (key == KEY_F9) strcpy (buf, "F9"); else if (key == KEY_F10) strcpy (buf, "F10"); else if (key == KEY_F10) strcpy (buf, "F11"); else if (key == KEY_F10) strcpy (buf, "F12"); else if (key == KEY_UP) strcpy (buf, "UP"); else if (key == KEY_DOWN) strcpy (buf, "DOWN"); else if (key == KEY_LEFT) strcpy (buf, "LEFT"); else if (key == KEY_RIGHT) strcpy (buf, "RIGHT"); else if (key == KEY_PGUP) strcpy (buf, "PGUP"); else if (key == KEY_PGDOWN) strcpy (buf, "PGDOWN"); else if (key == KEY_LALT) strcpy (buf, "LALT"); else if (key == KEY_RALT) strcpy (buf, "RALT"); else if (key == KEY_LCTRL) strcpy (buf, "LCTRL"); else if (key == KEY_RCTRL) strcpy (buf, "RCTRL"); else if (key == KEY_LSHIFT) strcpy (buf, "LSHIFT"); else if (key == KEY_RSHIFT) strcpy (buf, "RSHIFT"); else if (key == KEY_CAPSLOCK) strcpy (buf, "CAPS"); else if (key == KEY_DELETE) strcpy (buf, "DEL"); else if (key == KEY_HOME) strcpy (buf, "HOME"); else if (key == KEY_INSERT) strcpy (buf, "INS"); else if (key == KEY_END) strcpy (buf, "END"); } void joystick2string (int button, char *buf) { buf [0] = '\0'; char joystick = 'A' + button / 1000; int b = button % 1000; // try one byte keys if (b >= 0 && b < 100) sprintf (buf, "%c BTN%d", joystick, b); else if (b >= 100) sprintf (buf, "%c HAT%d", joystick, b - 100); } #endif gl-117-1.3.2/src/common.h0000644000175000017500000001637610214470172014134 0ustar cedriccedric#ifndef IS_COMMON_H #define IS_COMMON_H #include "config.h" // defines HAVE_SDL, HAVE_SDL_MIXER // USE_GLUT means ONLY use GLUT // HAVE_SDL means that SDL is available, so USE_GLUT will not be defined // HAVE_SDL_MIXER means SDL and SDL_mixer are available // HAVE_SDL_NET means SDL_net is available //#define HAVE_SDL_NET // dummy //#undef HAVE_SDL_MIXER // dummy //#undef HAVE_SDL // dummy #define USE_GLUT #ifdef HAVE_SDL #undef USE_GLUT #else #undef HAVE_SDL_MIXER #endif // APPLE path is different (thanks Minami) #ifdef __APPLE__ #include #include "SDL/SDL.h" #include "SDL/SDL_thread.h" #ifdef HAVE_SDL_MIXER #include "SDL/SDL_mixer.h" #endif #ifdef HAVE_SDL_NET #include "SDL/SDL_net.h" #endif #endif #ifndef __APPLE__ #ifdef USE_GLUT #include #else #include #include "SDL/SDL.h" #include "SDL/SDL_thread.h" #ifdef HAVE_SDL_MIXER #include "SDL/SDL_mixer.h" #endif #ifdef HAVE_SDL_NET #include "SDL/SDL_net.h" #endif #endif #endif // __APPLE__ #define ZOOM 256 #define GLOBALSCALE 1 #define VERSIONSTRING "V1.3" // data types #ifdef USE_GLUT #define Uint32 unsigned int #define Uint16 unsigned short #endif #define LINEWIDTH(x) (float) x * height / 600.0F // game states #define GAME_INIT 0 #define GAME_PLAY 1 #define GAME_PAUSE 2 #define GAME_MENU 3 #define GAME_CREDITS 4 #define GAME_CREATE 5 #define GAME_JOIN 6 #define GAME_MISSION 7 #define GAME_STATS 8 #define GAME_FAME 9 #define GAME_FIGHTER 10 #define GAME_FINISH 11 #define GAME_QUIT 12 // weather #define WEATHER_SUNNY 0 #define WEATHER_THUNDERSTORM 1 #define WEATHER_CLOUDY 2 // controls #define CONTROLS_KEYBOARD 0 #define CONTROLS_MOUSE 1 #define CONTROLS_JOYSTICK 2 // view range borders #define VIEW_MIN 30 #define VIEW_MAX 150 // preferences extern int quality; extern float view; extern int width, height, bpp; extern int wantwidth, wantheight, wantfullscreen; // requested values for next restart extern int volumesound; extern int volumemusic; extern int dithering; extern int antialiasing; extern int specialeffects; extern int dynamiclighting; // current mouse coordinates extern int mousex, mousey; extern int debug; // debug mode (1=counter measures) extern bool multiplayer, isserver; extern int fullscreen; extern int day; extern int weather; // 0: sunny, 1: thunderstorm, 2: no atmosphere (moon) extern float sungamma; // angle of sunrays dropping on horizon extern int camera; // camera type (0=cockpit, 1=chase, 2=backward, ...) extern float camx, camy, camz; // camera position extern float camphi, camgamma, camtheta; // phi: heading, theta: roll, gamma: elevation extern float sunlight; // dynamically adjustable light (0=black...1=default...brighter) extern int lighting; // 1=on, 0=off (obsolete) extern int mode; // always off=0, 1 would mean to calculate ROAM (obsolete)! extern float getView (); // return view dependant on weather extern int difficulty; // 0=easy, 1=normal, 2=hard extern int physics; // 0=action, 1=realistic extern int brightness; // brightness correction extern int contrast; // contrast/gamma correction (not yet configurable) extern bool sunblinding; // viewer gazing into the sun? extern int clouds; extern int controls; // see CONTROLS-constants extern int game; // see GAME-constants extern float blackout, redout; // high force extern float view_x, view_y; // angles for joystick-controlled view // maximum constants for objects const int maxexplosion = 30, maxfighter = 30, maxlaser = 150, maxmissile = 30, maxstar = 70, maxgroundobj = 10, maxblacksmoke = 50, maxflare = 30, maxchaff = 30; // sine and cosine table (obsolete) //#define SIN(x) sine[(int)x] //#define COS(x) cosi[(int)x] // exact sine, cosine functions #define SIN(x) sin(x*PI/180.0) #define COS(x) cos(x*PI/180.0) // define common GLUT/SDL keys #ifdef USE_GLUT #define MOUSE_BUTTON_LEFT GLUT_LEFT_BUTTON+1 // LEFT MB=0, but we use 0 for "no button" #define MOUSE_BUTTON_MIDDLE GLUT_MIDDLE_BUTTON+1 #define MOUSE_BUTTON_RIGHT GLUT_RIGHT_BUTTON+1 #define MOUSE_UP GLUT_UP #define MOUSE_DOWN GLUT_DOWN #define KEY_F1 GLUT_KEY_F1 #define KEY_F2 GLUT_KEY_F2 #define KEY_F3 GLUT_KEY_F3 #define KEY_F4 GLUT_KEY_F4 #define KEY_F5 GLUT_KEY_F5 #define KEY_F6 GLUT_KEY_F6 #define KEY_F7 GLUT_KEY_F7 #define KEY_F8 GLUT_KEY_F8 #define KEY_F9 GLUT_KEY_F9 #define KEY_F10 GLUT_KEY_F10 #define KEY_UP GLUT_KEY_UP #define KEY_DOWN GLUT_KEY_DOWN #define KEY_LEFT GLUT_KEY_LEFT #define KEY_RIGHT GLUT_KEY_RIGHT #define KEY_PGUP GLUT_KEY_PAGE_UP #define KEY_PGDOWN GLUT_KEY_PAGE_DOWN #define KEY_LALT -1 // where in glut.h??? #define KEY_LCTRL -2 #define KEY_LSHIFT -3 #define KEY_RSHIFT -4 #define KEY_RALT -5 #define KEY_RCTRL -6 #define KEY_CAPSLOCK -7 #define KEY_DELETE -8 #define KEY_INSERT GLUT_KEY_INSERT #define KEY_HOME GLUT_KEY_HOME #define KEY_END GLUT_KEY_END #else #define MOUSE_BUTTON_LEFT SDL_BUTTON_LEFT #define MOUSE_BUTTON_MIDDLE SDL_BUTTON_MIDDLE #define MOUSE_BUTTON_RIGHT SDL_BUTTON_RIGHT #define MOUSE_UP SDL_RELEASED #define MOUSE_DOWN SDL_PRESSED #define KEY_F1 SDLK_F1 #define KEY_F2 SDLK_F2 #define KEY_F3 SDLK_F3 #define KEY_F4 SDLK_F4 #define KEY_F5 SDLK_F5 #define KEY_F6 SDLK_F6 #define KEY_F7 SDLK_F7 #define KEY_F8 SDLK_F8 #define KEY_F9 SDLK_F9 #define KEY_F10 SDLK_F10 #define KEY_UP SDLK_UP #define KEY_DOWN SDLK_DOWN #define KEY_LEFT SDLK_LEFT #define KEY_RIGHT SDLK_RIGHT #define KEY_PGUP SDLK_PAGEUP #define KEY_PGDOWN SDLK_PAGEDOWN #define KEY_LALT SDLK_LALT #define KEY_RALT SDLK_RALT #define KEY_LCTRL SDLK_LCTRL #define KEY_RCTRL SDLK_RCTRL #define KEY_LSHIFT SDLK_LSHIFT #define KEY_RSHIFT SDLK_RSHIFT #define KEY_CAPSLOCK SDLK_CAPSLOCK #define KEY_DELETE SDLK_DELETE #define KEY_INSERT SDLK_INSERT #define KEY_HOME SDLK_HOME #define KEY_END SDLK_END #endif #define KEY_BACKSPACE 8 #define KEY_TAB 9 #define KEY_ENTER 13 #define KEY_SPACE 32 // log/debug level, look at common.cpp #define LOG_NONE 0 // do not log anything #define LOG_FATAL 1 // only show fatal (GL-117 will exit) errors (stderr) #define LOG_ERROR 2 // show errors too (stderr) #define LOG_WARN 3 // show warnings too (stdout) #define LOG_MOST 4 // show important messages too (stdout) #define LOG_ALL 5 // log everything (stdout) // display log/debug message extern void display (char *str, int level); extern void display_exit (); // display "out of memory" error and exit extern void error_outofmemory (); extern void key2string (int key, char *buf); extern void joystick2string (int key, char *buf); // current log/debug level (set to constants above) extern int debuglevel; // show collition detection extern int showcollision; #define STDSIZE 256 // typical temporary buffer size #define PATHSIZE 4096 // maximum path/directory string size // exit codes #define EXIT_NORMAL 0 #define EXIT_LOADFILE 1 #define EXIT_INIT 2 #define EXIT_COMMAND 3 #define EXIT_ALLOC 4 #define EXIT_CONTEXT 5 // joystick constants const int maxjaxis = 10; const int maxjoysticks = 10; // global normed timestep (higher values mean slower gameplay) const int timestep = 34; #endif gl-117-1.3.2/src/conf.cpp0000644000175000017500000005654510145416156014133 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file contains all configuration parsing code. */ #ifndef IS_CONF_H #include #include #include #include #include "conf.h" #include "common.h" #include "dirs.h" // initialization int quality = 3; float view = 50.0; int width = 800, height = 600, bpp = 32; int wantwidth = 800, wantheight = 600, wantfullscreen = 1; int dithering = 1; int volumesound = 100; int volumemusic = 100; int fullscreen = 1; int controls = CONTROLS_MOUSE; int difficulty = 1; int physics = 0; int antialiasing = 1; int specialeffects = 1; int dynamiclighting = 1; // use 0...255 for one byte keys, 256... for special (two byte) beys unsigned int key_firecannon = 32, key_firemissile = 13, key_dropchaff = 'C', key_dropflare = 'F'; unsigned int key_selectmissile = 'M', key_thrustup = 'S', key_thrustdown = 'X'; unsigned int key_targetnearest = 'E', key_targetnext = 'T', key_targetprevious = 'P', key_targetlocking = 'L'; int joystick_firecannon = 0, joystick_firemissile = 2, joystick_dropchaff = 3, joystick_dropflare = 3; int joystick_selectmissile = 1, joystick_thrustup = 4, joystick_thrustdown = 5; int joystick_targetnearest = 101, joystick_targetnext = 100, joystick_targetprevious = 102, joystick_targetlocking = 103; int joystick_aileron = 0, joystick_elevator = 1, joystick_rudder = 3, joystick_throttle = 2; int joystick_view_x = 4, joystick_view_y = 5; unsigned char mouse_firecannon = MOUSE_BUTTON_LEFT, mouse_firemissile = MOUSE_BUTTON_RIGHT; unsigned char mouse_selectmissile = MOUSE_BUTTON_MIDDLE; unsigned int mouse_sensitivity = 100; bool mouse_reverse = false; bool mouse_relative = false; int mouse_autorudder = 30; ConfigFile::ConfigFile () {} ConfigFile::ConfigFile (char *fname) { char buf2 [STDSIZE]; bool commentmode = false; FILE *in; length = 0; in = fopen (fname, "rb"); if (in != NULL) { length = fread (buf, 1, 32000, in); fclose (in); } else { sprintf (buf2, "Could not load %s", fname); display (buf2, LOG_WARN); buf [0] = 0; } for (int i = 0; i < length; i ++) { if (buf [i] == '#') commentmode = true; if (buf [i] == '\n') commentmode = false; if (commentmode) buf [i] = ' '; else buf [i] = tolower (buf [i]); } } char *ConfigFile::skipwhite (char *str) { while (*str == ' ' || *str == '\t') str ++; return str; } char *ConfigFile::skipnum (char *str) { while (*str >= '0' && *str <= '9') str ++; return str; } char *ConfigFile::skipalphanum (char *str) { while (*str >= '0' && *str <= 'z') str ++; return str; } char *ConfigFile::getString (char *dest, char *str) { char *strf, *stre; char cmpstr [256]; int i; if (strlen (str) >= 256) { return NULL; } strcpy (cmpstr, str); if (buf [0] == 0) { return NULL; } for (i = 0; i < (int) strlen (cmpstr); i ++) { cmpstr [i] = tolower (cmpstr [i]); } strf = strstr (buf, cmpstr); if (strf == NULL) { return NULL; } strf += strlen (cmpstr); strf = skipwhite (strf); if (*strf == 0) { return NULL; } strf ++; if (*strf == 0) { return NULL; } strf = skipwhite (strf); if (*strf == 0) { return NULL; } stre = skipalphanum (strf); if (stre - strf >= 256) { return NULL; } if (*strf == 0) { return NULL; } for (i = 0; i < (int) (stre - strf); i ++) dest [i] = *(strf+i); dest [i] = 0; return dest; } int ConfigFile::getValue (char *str) { char res [256]; getString (res, str); if (res == NULL) return -1; return atoi (res); } int ConfigFile::openOutput (char *fname) { out = fopen (fname, "wb"); if (out == NULL) return 0; return 1; } int ConfigFile::write (char *str1, int n) { char str [256]; if (strlen (str1) + 8 > 256) return 0; sprintf (str, "%s = %d\n", str1, n); fwrite (str, 1, strlen (str), out); return 1; } int ConfigFile::write (char *str1, char c) { char str [256]; if (c <= 32 || c >= 97) { write (str1, (int) c); return 1; } if (strlen (str1) + 8 > 256) return 0; sprintf (str, "%s = %c\n", str1, c); fwrite (str, 1, strlen (str), out); return 1; } void ConfigFile::writeText (char *str) { fwrite (str, 1, strlen (str), out); fwrite ("\n", 1, 1, out); } void ConfigFile::close () { fclose (out); } void save_config () { char buf [STDSIZE]; ConfigFile *cf = new ConfigFile (); char *confname = dirs->getSaves ("conf"); sprintf (buf, "Saving %s ", confname); display (buf, LOG_MOST); int ret1 = cf->openOutput (confname); if (ret1 == 0) { display ("Could not save configuration", LOG_ERROR); fflush (stderr); return; } cf->writeText ("# Configuration\n"); cf->writeText ("# Some possible width x height values for fullscreen mode:"); cf->writeText ("# 640x480, 800x600, 1024x768, 1152x864, 1280x768, 1280x960, 1280x1024"); cf->write (" width", wantwidth); cf->write (" height", wantheight); cf->writeText ("# Possible bits per pixel values (color depth):"); cf->writeText ("# 8 (not recommended), 16, 24, 32"); cf->write (" bpp", bpp); cf->writeText ("# Try to go fullscreen = 1, game in window = 0"); cf->write (" fullscreen", wantfullscreen); cf->writeText ("# Quality: 0=software rendered up to 5=best (default=2)"); cf->write (" quality", quality); cf->writeText ("# Far clipping plane: 20..100 (default=50)"); cf->write (" view", (int) view); cf->writeText ("# Dithering: 0=off, 1=on (default=1)"); cf->write (" dithering", dithering); cf->writeText ("# Antialiasing: 0=off, 1=on (default=1)"); cf->write (" antialiasing", antialiasing); cf->writeText ("# Special effects: 0=off, 1=on (default=1)"); cf->write (" specialeffects", specialeffects); cf->writeText ("# Dynamic lighting: 0=off, 1=on (default=1)"); cf->write (" dynamiclighting", dynamiclighting); #ifdef HAVE_SDL_MIXER cf->writeText ("# Sound volume: 0..100 (default=100) per cent"); cf->write (" sound", (int) volumesound); cf->writeText ("# Music volume: 0..100 (default=100) per cent"); cf->write (" music", (int) volumemusic); #endif cf->writeText ("# Piloting controls: 0=keyboard, 1=mouse easy, 2=joystick"); cf->write (" controls", controls); cf->writeText ("# Difficulty level: 0=easy, 1=medium, 2=hard"); cf->write (" difficulty", difficulty); cf->writeText ("# Brightness: -50..50 per cent (default=0)"); cf->write (" brightness", brightness); cf->writeText ("# Physics: 0=action, 1=realistic"); cf->write (" physics", physics); cf->writeText ("\n# This file is meant to give sensible startup settings"); cf->writeText ("# as graphic cards and drivers may differ some 100 times in speed"); cf->writeText ("\n# To get back to default settings, just delete this file!"); cf->close (); delete cf; } void save_saveconfig () { char buf [STDSIZE]; ConfigFile *cf = new ConfigFile (); char *confname = dirs->getSaves ("saveconf"); sprintf (buf, "Saving %s ", confname); display (buf, LOG_MOST); int ret1 = cf->openOutput (confname); if (ret1 == 0) { display ("Could not save working graphics mode configuration", LOG_ERROR); fflush (stderr); return; } cf->writeText ("# Working backup configuration\n"); cf->writeText ("# Do not edit this file. It is only used to restore a broken configuration!"); cf->write (" width", width); cf->write (" height", height); cf->write (" bpp", bpp); cf->write (" fullscreen", fullscreen); cf->close (); delete cf; } int load_config () { char buf [STDSIZE]; char ret [256]; char *str; char *confname = dirs->getSaves ("conf"); sprintf (buf, "Loading %s ", confname); display (buf, LOG_MOST); ConfigFile *cf = new ConfigFile (confname); if (cf->buf [0] == 0) // no file found { delete cf; return 0; } str = cf->getString (ret, "width"); if (str == NULL) { width = 800; } else { width = atoi (str); } if (width < 100) width = 100; else if (width > 3000) width = 1024; wantwidth = width; str = cf->getString (ret, "height"); if (str == NULL) { height = 600; } else { height = atoi (str); } if (height < 100) height = 100; else if (height > 2000) height = 768; wantheight = height; str = cf->getString (ret, "bpp"); if (str == NULL) { bpp = 32; } else { bpp = atoi (str); } if (bpp != 8 && bpp != 16 && bpp != 24 && bpp != 32) bpp = 32; str = cf->getString (ret, "fullscreen"); if (str == NULL) { fullscreen = 1; } else { fullscreen = atoi (str); } if (fullscreen) fullscreen = 1; wantfullscreen = fullscreen; str = cf->getString (ret, "quality"); if (str == NULL) { quality = 2; } else { quality = atoi (str); } if (quality < 0) quality = 0; else if (quality > 5) quality = 5; str = cf->getString (ret, "view"); if (str == NULL) { view = 50; } else { view = atoi (str); } if (view < VIEW_MIN) { view = VIEW_MIN; } else if (view > VIEW_MAX) { view = VIEW_MAX; } str = cf->getString (ret, "dithering"); dithering = (str == NULL) ? 1 : atoi (str); if (dithering) dithering = 1; str = cf->getString (ret, "antialiasing"); antialiasing = (str == NULL) ? 1 : atoi (str); if (antialiasing) antialiasing = 1; str = cf->getString (ret, "specialeffects"); specialeffects = (str == NULL) ? 1 : atoi (str); if (specialeffects) specialeffects = 1; str = cf->getString (ret, "dynamiclighting"); dynamiclighting = (str == NULL) ? 1 : atoi (str); if (dynamiclighting) dynamiclighting = 1; #ifdef HAVE_SDL_MIXER str = cf->getString (ret, "sound"); if (str == NULL) { volumesound = 100; } else { volumesound = atoi (str); } if (volumesound < 0) volumesound = 0; else if (volumesound > 100) volumesound = 100; str = cf->getString (ret, "music"); if (str == NULL) { volumemusic = 100; } else { volumemusic = atoi (str); } if (volumemusic < 0) volumemusic = 0; else if (volumemusic > 100) volumemusic = 100; #endif str = cf->getString (ret, "controls"); if (str == NULL) { controls = CONTROLS_MOUSE; } else { controls = atoi (str); } if (controls < 0) controls = 0; else if (controls > 2) controls = 0; str = cf->getString (ret, "difficulty"); if (str == NULL) { difficulty = 1; } else { difficulty = atoi (str); } if (difficulty < 0) difficulty = 0; else if (difficulty > 2) difficulty = 0; str = cf->getString (ret, "brightness"); if (str == NULL) { brightness = 0; } else { brightness = atoi (str); } if (brightness < -50) brightness = -50; else if (brightness > 50) brightness = 50; str = cf->getString (ret, "physics"); if (str == NULL) { physics = 0; } else { physics = atoi (str); } if (physics < 0) physics = 0; else if (physics > 1) physics = 1; delete cf; return 1; } int load_saveconfig () { char buf [STDSIZE]; char ret [256]; char *str; char *confname = dirs->getSaves ("saveconf"); sprintf (buf, "Loading %s ", confname); display (buf, LOG_MOST); ConfigFile *cf = new ConfigFile (confname); if (cf->buf [0] == 0) // no file found { delete cf; return 0; } str = cf->getString (ret, "savewidth"); if (str == NULL) { width = 800; } else { width = atoi (str); } if (width < 100) width = 100; else if (width > 3000) width = 1024; str = cf->getString (ret, "saveheight"); if (str == NULL) { height = 600; } else { height = atoi (str); } if (height < 100) height = 100; else if (height > 2000) height = 768; str = cf->getString (ret, "savebpp"); if (str == NULL) { bpp = 32; } else { bpp = atoi (str); } if (bpp != 8 && bpp != 16 && bpp != 24 && bpp != 32) bpp = 32; str = cf->getString (ret, "savefullscreen"); if (str == NULL) { fullscreen = 1; } else { fullscreen = atoi (str); } if (fullscreen) fullscreen = 1; delete cf; return 1; } void writeJoystick (ConfigFile *cf, char *str, int jn) { char buf [STDSIZE]; sprintf (buf, "%s = %c%d", str, 'A' + (jn / 1000), jn % 1000); cf->writeText (buf); } void save_configInterface () { char buf [STDSIZE]; ConfigFile *cf = new ConfigFile (); char *confname = dirs->getSaves ("conf.interface"); sprintf (buf, "Saving %s ", confname); display (buf, LOG_MOST); int ret1 = cf->openOutput (confname); if (ret1 == 0) { display ("Could not save interface configuration", LOG_ERROR); return; } cf->writeText ("# Interface configuration\n"); cf->writeText ("# ---------------------------------------------------------------------"); cf->writeText ("# Keyboard section"); cf->writeText ("# ---------------------------------------------------------------------\n"); cf->writeText ("# Use ASCII-Code values or letters to remap"); cf->writeText ("# 8=BACKSPACE, 13=ENTER, 32=SPACE, 65=A...90=Z (NOT case sensitive)"); cf->write (" key_firecannon", (int) key_firecannon); cf->write (" key_firemissile", (int) key_firemissile); cf->write (" key_dropflare", (int) key_dropflare); cf->write (" key_dropchaff", (int) key_dropchaff); cf->write (" key_selectmissile", (int) key_selectmissile); cf->writeText ("# Target nearest enemy with priority for enemies in front of you"); cf->write (" key_targetnearest", (int) key_targetnearest); cf->writeText ("# Target next enemy who has locked you"); cf->write (" key_targetlocking", (int) key_targetlocking); cf->write (" key_targetnext", (int) key_targetnext); cf->write (" key_targetprevious", (int) key_targetprevious); cf->write (" key_incthrust", (int) key_thrustup); cf->write (" key_decthrust", (int) key_thrustdown); cf->writeText ("# All other piloting keys (CURSORS, PGUP/DN) are fixed."); cf->writeText ("\n# ---------------------------------------------------------------------"); cf->writeText ("# Mouse section"); cf->writeText ("# ---------------------------------------------------------------------\n"); cf->writeText ("# Sensitivity: 70...200%, 70%=full screen area, 200%=max sensitivity"); cf->write (" mouse_sensitivity", (int) mouse_sensitivity); cf->writeText ("# Reverse y-axis: 0 (no) or 1 (yes)"); cf->write (" mouse_reverse", (int) mouse_reverse); cf->writeText ("# Relative coordinates: 0 (no) or 1 (yes)"); cf->write (" mouse_relative", (int) mouse_relative); cf->writeText ("# Auto rudder on x-axis, dead area for rolls: 0...100"); cf->write (" mouse_autorudder", (int) mouse_autorudder); cf->writeText ("\n# Buttons: 1=Left, 2=Middle, 3=Right"); int mousebutton = 1; if (mouse_firecannon == MOUSE_BUTTON_MIDDLE) mousebutton = 2; else if (mouse_firecannon == MOUSE_BUTTON_RIGHT) mousebutton = 3; else mousebutton = 1; cf->write (" mouse_firecannon", mousebutton); if (mouse_firemissile == MOUSE_BUTTON_MIDDLE) mousebutton = 2; else if (mouse_firemissile == MOUSE_BUTTON_RIGHT) mousebutton = 3; else mousebutton = 1; cf->write (" mouse_firemissile", mousebutton); if (mouse_selectmissile == MOUSE_BUTTON_MIDDLE) mousebutton = 2; else if (mouse_selectmissile == MOUSE_BUTTON_RIGHT) mousebutton = 3; else mousebutton = 1; cf->write (" mouse_selectmissile", mousebutton); cf->writeText ("\n# ---------------------------------------------------------------------"); cf->writeText ("# Joystick section"); cf->writeText ("# ---------------------------------------------------------------------\n"); cf->writeText ("# The number of axes, buttons, and the coolie hat depends on your joystick!"); cf->writeText ("# Numbers start with A=first joystick, B=second joystick...J=10th joystick"); cf->writeText ("# followed by a number to identify axes, buttons, and coolie hat\n"); cf->writeText ("# Axis: 0...MAX-1 (maybe 0=aileron 1=elevator 2=throttle 3=rudder)"); writeJoystick (cf, " joystick_aileron", joystick_aileron); writeJoystick (cf, " joystick_elevator", joystick_elevator); writeJoystick (cf, " joystick_throttle", joystick_throttle); writeJoystick (cf, " joystick_rudder", joystick_rudder); writeJoystick (cf, " joystick_view_x", joystick_view_x); writeJoystick (cf, " joystick_view_y", joystick_view_y); cf->writeText ("\n# Buttons: 0...MAX-1, Coolie: 100=Right, 101=Up, 102=Left, 103=Down"); writeJoystick (cf, " joystick_firecannon", joystick_firecannon); writeJoystick (cf, " joystick_firemissile", joystick_firemissile); cf->writeText ("# Dropping chaff AND flare may be preferred"); writeJoystick (cf, " joystick_dropflare", joystick_dropflare); writeJoystick (cf, " joystick_dropchaff", joystick_dropchaff); writeJoystick (cf, " joystick_selectmissile", joystick_selectmissile); writeJoystick (cf, " joystick_targetnearest", joystick_targetnearest); writeJoystick (cf, " joystick_targetlocking", joystick_targetlocking); writeJoystick (cf, " joystick_targetnext", joystick_targetnext); writeJoystick (cf, " joystick_targetprevious", joystick_targetprevious); writeJoystick (cf, " joystick_incthrust", joystick_thrustup); writeJoystick (cf, " joystick_decthrust", joystick_thrustdown); cf->writeText ("\n# This file is meant to give sensible custom interface settings"); cf->writeText ("\n# To get back to default settings, just delete this file!"); cf->close (); delete cf; } int getKey (char *str, int n) { int tmp; if (str == NULL) return n; tmp = atoi (str); if (tmp == 0) { if (str [0] >= 33) { return toupper (str [0]); } return n; } return tmp; } int getJoystick (char *str, int n) { int tmp, jn = 0; if (str == NULL) return n; int str0 = toupper (str [0]) - (int) 'A'; if (str0 >= -1 && str0 < 10) jn = str0; else return n; tmp = atoi (&str [1]); return jn * 1000 + tmp; } int load_configInterface () { char buf [STDSIZE]; char ret [256]; char *str; char *confname = dirs->getSaves ("conf.interface"); sprintf (buf, "Loading %s ", confname); display (buf, LOG_MOST); ConfigFile *cf = new ConfigFile (confname); str = cf->getString (ret, "key_firecannon"); key_firecannon = getKey (str, 32); str = cf->getString (ret, "key_firemissile"); key_firemissile = getKey (str, 13); str = cf->getString (ret, "key_dropchaff"); key_dropchaff = getKey (str, 'C'); str = cf->getString (ret, "key_dropflare"); key_dropflare = getKey (str, 'F'); str = cf->getString (ret, "key_selectmissile"); key_selectmissile = getKey (str, 'M'); str = cf->getString (ret, "key_targetnearest"); key_targetnearest = getKey (str, 'E'); str = cf->getString (ret, "key_targetlocking"); key_targetlocking = getKey (str, 'L'); str = cf->getString (ret, "key_targetnext"); key_targetnext = getKey (str, 'T'); str = cf->getString (ret, "key_targetprevious"); key_targetprevious = getKey (str, 'P'); str = cf->getString (ret, "key_incthrust"); key_thrustup = getKey (str, 'S'); str = cf->getString (ret, "key_decthrust"); key_thrustdown = getKey (str, 'X'); str = cf->getString (ret, "mouse_sensitivity"); if (str == NULL) { mouse_sensitivity = 100; } else { mouse_sensitivity = atoi (str); } if (mouse_sensitivity < 70) mouse_sensitivity = 70; else if (mouse_sensitivity > 200) mouse_sensitivity = 200; str = cf->getString (ret, "mouse_reverse"); if (str == NULL) { mouse_reverse = false; } else { mouse_reverse = (atoi (str) != 0); } str = cf->getString (ret, "mouse_relative"); if (str == NULL) { mouse_relative = false; } else { mouse_relative = (atoi (str) != 0); } str = cf->getString (ret, "mouse_autorudder"); if (str == NULL) { mouse_autorudder = 30; } else { mouse_autorudder = atoi (str); } if (mouse_autorudder < 0) mouse_autorudder = 0; else if (mouse_autorudder > 100) mouse_autorudder = 100; int mousebutton = 1; str = cf->getString (ret, "mouse_firecannon"); if (str == NULL) { mousebutton = 1; } else { mousebutton = atoi (str); } if (mousebutton == 2) mouse_firecannon = MOUSE_BUTTON_MIDDLE; else if (mousebutton == 3) mouse_firecannon = MOUSE_BUTTON_RIGHT; else mouse_firecannon = MOUSE_BUTTON_LEFT; str = cf->getString (ret, "mouse_firemissile"); if (str == NULL) { mousebutton = 3; } else { mousebutton = atoi (str); } if (mousebutton == 2) mouse_firemissile = MOUSE_BUTTON_MIDDLE; else if (mousebutton == 3) mouse_firemissile = MOUSE_BUTTON_RIGHT; else mouse_firemissile = MOUSE_BUTTON_LEFT; str = cf->getString (ret, "mouse_selectmissile"); if (str == NULL) { mousebutton = 2; } else { mousebutton = atoi (str); } if (mousebutton == 2) mouse_selectmissile = MOUSE_BUTTON_MIDDLE; else if (mousebutton == 3) mouse_selectmissile = MOUSE_BUTTON_RIGHT; else mouse_selectmissile = MOUSE_BUTTON_LEFT; str = cf->getString (ret, "joystick_aileron"); joystick_aileron = getJoystick (str, 0); str = cf->getString (ret, "joystick_elevator"); joystick_elevator = getJoystick (str, 1); str = cf->getString (ret, "joystick_throttle"); joystick_throttle = getJoystick (str, 2); str = cf->getString (ret, "joystick_rudder"); joystick_rudder = getJoystick (str, 3); str = cf->getString (ret, "joystick_view_x"); joystick_view_x = getJoystick (str, 4); str = cf->getString (ret, "joystick_view_y"); joystick_view_y = getJoystick (str, 5); str = cf->getString (ret, "joystick_firecannon"); joystick_firecannon = getJoystick (str, 0); str = cf->getString (ret, "joystick_firemissile"); joystick_firemissile = getJoystick (str, 2); str = cf->getString (ret, "joystick_dropchaff"); joystick_dropchaff = getJoystick (str, 3); str = cf->getString (ret, "joystick_dropflare"); joystick_dropflare = getJoystick (str, 3); str = cf->getString (ret, "joystick_selectmissile"); joystick_selectmissile = getJoystick (str, 1); str = cf->getString (ret, "joystick_targetnearest"); joystick_targetnearest = getJoystick (str, 101); str = cf->getString (ret, "joystick_targetlocking"); joystick_targetlocking = getJoystick (str, 103); str = cf->getString (ret, "joystick_targetnext"); joystick_targetnext = getJoystick (str, 100); str = cf->getString (ret, "joystick_targetprevious"); joystick_targetprevious = getJoystick (str, 102); str = cf->getString (ret, "joystick_incthrust"); joystick_thrustup = getJoystick (str, 4); str = cf->getString (ret, "joystick_decthrust"); joystick_thrustdown = getJoystick (str, 5); if (cf->buf [0] == 0) // no file found { delete cf; return 0; } delete cf; return 1; } #endif gl-117-1.3.2/src/conf.h0000644000175000017500000000512110145416156013560 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file contains all configuration parsing code. */ #ifndef IS_CONF_H #define IS_CONF_H // interface definitions extern unsigned int key_firecannon, key_firemissile, key_dropchaff, key_dropflare; extern unsigned int key_selectmissile, key_thrustup, key_thrustdown; extern unsigned int key_targetnearest, key_targetnext, key_targetprevious, key_targetlocking; extern int joystick_firecannon, joystick_firemissile, joystick_dropchaff, joystick_dropflare; extern int joystick_selectmissile, joystick_thrustup, joystick_thrustdown; extern int joystick_targetnearest, joystick_targetnext, joystick_targetprevious, joystick_targetlocking; extern int joystick_aileron, joystick_elevator, joystick_rudder, joystick_throttle; extern int joystick_view_x, joystick_view_y; extern unsigned char mouse_firecannon, mouse_firemissile; extern unsigned char mouse_selectmissile; extern unsigned int mouse_sensitivity; extern bool mouse_reverse; extern bool mouse_relative; extern int mouse_autorudder; // the abstract config file as text file in memory class ConfigFile { public: char buf [32000]; // max file size int length; FILE *out; ConfigFile (); ConfigFile (char *fname); char *skipwhite (char *str); char *skipnum (char *str); char *skipalphanum (char *str); char *getString (char *dest, char *str); int getValue (char *str); int openOutput (char *fname); int write (char *str1, int n); int write (char *str1, char c); void writeText (char *str); void close (); }; // special config files of GL-117: conf and conf.interface extern void save_config (); extern void save_saveconfig (); extern int load_config (); extern int load_saveconfig (); extern void save_configInterface (); extern int load_configInterface (); #endif gl-117-1.3.2/src/CVS/0000755000175000017500000000000010145416156013116 5ustar cedriccedricgl-117-1.3.2/src/CVS/Entries0000644000175000017500000000420410145416156014452 0ustar cedriccedric/3ds.cpp/1.17/Sat May 22 19:10:42 2004// /3ds.h/1.10/Sat May 22 19:10:42 2004// /Makefile.am/1.8/Sat May 22 19:10:42 2004// /Makefile.in/1.12/Sat May 29 07:27:59 2004// /aiobject.cpp/1.61/Sat Jun 5 16:07:26 2004// /aiobject.h/1.26/Sat May 22 19:10:43 2004// /audio.cpp/1.20/Sat May 22 19:10:43 2004// /audio.h/1.18/Sat May 22 19:10:43 2004// /cockpit.cpp/1.20/Thu Jun 10 14:16:14 2004// /cockpit.h/1.7/Sat May 22 19:10:43 2004// /common.cpp/1.8/Sat May 29 11:36:47 2004// /common.h/1.41/Sat Jun 5 15:20:41 2004// /conf.cpp/1.18/Thu Jun 10 14:16:15 2004// /conf.h/1.13/Sat Jun 5 15:20:41 2004// /dirs.cpp/1.11/Sat May 29 07:27:59 2004// /dirs.h/1.8/Sat May 29 07:27:59 2004// /effects.cpp/1.26/Sat Jun 5 16:07:26 2004// /effects.h/1.21/Sat Jun 5 16:07:26 2004// /fileloader.c/1.1/Sat Jan 24 18:38:20 2004// /fileloader.cpp/1.3/Sat May 29 07:27:59 2004// /fileloader.h/1.3/Sat May 29 07:27:59 2004// /gl.cpp/1.12/Sat May 22 19:10:44 2004// /gl.h/1.9/Sat May 22 19:10:44 2004// /glland.cpp/1.50/Sat Jun 5 15:20:41 2004// /glland.h/1.31/Sat Jun 5 15:20:41 2004// /land.cpp/1.20/Sat Jun 5 15:20:41 2004// /land.h/1.16/Sat May 22 19:10:44 2004// /loader_tga.cpp/1.9/Sat Jun 5 15:20:41 2004// /loader_tga.h/1.4/Sat May 22 19:10:44 2004// /main.cpp/1.101/Thu Jun 10 14:16:15 2004// /main.h/1.20/Sat May 22 19:10:45 2004// /maploader.cpp/1.4/Sat Jun 5 15:20:42 2004// /maploader.h/1.2/Sat May 22 19:10:45 2004// /mathtab.cpp/1.8/Sat Jun 5 16:07:26 2004// /mathtab.h/1.9/Sat Jun 5 16:07:26 2004// /menu.cpp/1.2/Sat May 22 19:10:45 2004// /menu.h/1.2/Sat May 22 19:10:45 2004// /mission.cpp/1.26/Thu Jun 10 14:16:19 2004// /mission.h/1.15/Thu Jun 10 14:16:19 2004// /model.cpp/1.20/Sat May 22 19:10:45 2004// /model.h/1.10/Sat May 22 19:10:45 2004// /net.cpp/1.8/Sat May 22 19:10:45 2004// /net.h/1.7/Sat May 22 19:10:45 2004// /object.cpp/1.7/Fri Nov 14 10:14:07 2003// /object.h/1.5/Sat May 29 07:28:01 2004// /objload.cpp/1.8/Sat May 22 19:10:45 2004// /objload.h/1.5/Sat May 22 19:10:45 2004// /pilots.cpp/1.10/Sat May 22 19:10:45 2004// /pilots.h/1.6/Sat May 22 19:10:45 2004// /vertexarray.cpp/1.1/Sat May 22 19:10:45 2004// /vertexarray.h/1.1/Sat May 22 19:10:45 2004// D gl-117-1.3.2/src/CVS/Repository0000644000175000017500000000001310145416156015212 0ustar cedriccedricgl-117/src gl-117-1.3.2/src/CVS/Root0000644000175000017500000000006310145416156013763 0ustar cedriccedric:ext:heptargon@cvs.sourceforge.net:/cvsroot/gl-117 gl-117-1.3.2/src/dirs.cpp0000644000175000017500000001372010214470177014133 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file handles als input/output directories. */ #ifndef IS_DIRS_H #include #include #include #ifndef _MSC_VER // no microsoft? #include #include #include #endif #include "dirs.h" #include "common.h" char *mystrtok (char *str, int len, char *tok) { char *str0 = str; int z = 0; while (*str != tok [0]) { str ++; z ++; if (z >= len) return NULL; } *str = 0; return str0; } void Dirs::append (char *target, char *str) { #ifdef _MSC_VER if (target [strlen (target) - 1] != '\\') strcat (target, "\\"); strcat (target, str); strcat (target, "\\"); #else if (target [strlen (target) - 1] != '/') strcat (target, "/"); strcat (target, str); strcat (target, "/"); #endif } Dirs::Dirs (char *arg) { #ifdef _MSC_VER char path [4096]; int bscount = 0; strcpy (path, arg); char *p; for (p = path; p < path + strlen (path); p ++) if (*p == '\\') bscount ++; if (bscount >= 2) { p = path + strlen (path); while (*p != '\\') p --; p --; while (*p != '\\') p --; if (p [1] == 'D' && p [2] == 'e' && p [3] == 'b') { p --; while (*p != '\\') p --; } *p = 0; } else { display ("Binary file has no context to the data files", LOG_FATAL); display ("Do not execute from console, just doubleclick", LOG_MOST); exit (EXIT_CONTEXT); } strcpy (textures, path); strcpy (music, path); strcpy (sound, path); strcpy (models, path); strcpy (saves, path); strcpy (maps, path); append (saves, "saves"); #else char buf [STDSIZE]; char *home = getenv ("HOME"); char *env = getenv ("GL117"); char *path = getenv ("PATH"); char myfile [4096]; #ifdef __APPLE__ strcpy(myfile, DATADIR); #else sprintf (myfile, "%s/gl-117", DATADIR); #endif bool founddir = false; struct stat mystat; if (!stat (myfile, &mystat)) { if (S_ISDIR (mystat.st_mode)) { founddir = true; } } if (!founddir) { // FILE *in; char cwd [4096]; getcwd (cwd, 4096); // get current working directory char mypath [8092]; strcpy (mypath, cwd); strcat (mypath, ":"); strcat (mypath, path); char *p = mypath; int pathlen = strlen (mypath); if (arg [0] != '/') { p = mystrtok (p, (int) (path + pathlen - p), ":"); while (p + strlen (p) - 1 < mypath + pathlen) { strcpy (myfile, p); if (myfile [strlen (myfile) - 1] != '/') strcat (myfile, "/"); if (*arg == '.' && *(arg+1) == '/') strcat (myfile, arg + 2); else strcat (myfile, arg); if (!stat (myfile, &mystat)) { if (S_ISREG (mystat.st_mode)) { goto found; } } p = mystrtok (p + strlen (p) + 1, (int) (path + pathlen - p), ":"); } } display ("Binary file has no context to the data files.", LOG_FATAL); exit (EXIT_CONTEXT); found:; int bscount = 0; for (p = myfile; p < myfile + strlen (myfile); p ++) if (*p == '/') bscount ++; if (bscount >= 2) { p = myfile + strlen (myfile); while (*p != '/') p --; p --; while (*p != '/') p --; if (p [1] == '.' && p [2] == '/') { p --; while (*p != '/') p --; } p ++; *p = 0; } else { display ("Binary file has no context to the data files.", LOG_FATAL); exit (EXIT_CONTEXT); } } // if (!founddir) if (home != NULL) { strcpy (saves, home); append (saves, ".gl-117"); if (stat (saves, &mystat)) { mkdir (saves, S_IRWXU); } } else { if (env != NULL) { strcpy (saves, env); } else { strcpy (saves, ".."); } } if (env != NULL) { strcpy (textures, env); strcpy (music, env); strcpy (sound, env); strcpy (models, env); strcpy (maps, env); } else { sprintf (buf, "Found gl-117 data directory %s ", myfile); display (buf, LOG_MOST); strcpy (textures, myfile); strcpy (music, myfile); strcpy (sound, myfile); strcpy (models, myfile); strcpy (maps, myfile); } #endif append (textures, "textures"); append (music, "music"); append (sound, "sounds"); append (models, "models"); append (maps, "maps"); } Dirs::~Dirs () {} char *Dirs::getSaves (char *name) { strcpy (dir, saves); strcat (dir, name); return dir; } char *Dirs::getTextures (char *name) { strcpy (dir, textures); strcat (dir, name); return dir; } char *Dirs::getMusic (char *name) { strcpy (dir, music); strcat (dir, name); return dir; } char *Dirs::getSounds (char *name) { strcpy (dir, sound); strcat (dir, name); return dir; } char *Dirs::getModels (char *name) { strcpy (dir, models); strcat (dir, name); return dir; } char *Dirs::getMaps (char *name) { strcpy (dir, maps); strcat (dir, name); return dir; } #endif gl-117-1.3.2/src/dirs.h0000644000175000017500000000314310145416156013576 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file handles als input/output directories. */ #ifndef IS_DIRS_H #define IS_DIRS_H class Dirs { public: char dir [4096]; char saves [4096]; // path to saves, UNIX and Windows differ char textures [4096]; // path to textures, ... char music [4096]; char sound [4096]; char models [4096]; char maps [4096]; void append (char *target, char *str); // append subdir/file to path using (back-)slashes Dirs (char *arg); virtual ~Dirs (); char *getSaves (char *name); // get dir name containing the saves, ... char *getTextures (char *name); char *getSounds (char *name); char *getMusic (char *name); char *getModels (char *name); char *getMaps (char *name); }; extern Dirs *dirs; // paths to directories with game data or saves #endif gl-117-1.3.2/src/effects.cpp0000644000175000017500000005763310145416156014624 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes all special effects. */ #ifndef IS_EFFECTS_H #include #include #include "effects.h" #include "glland.h" #include "gl.h" #include "common.h" CTexture *texsmoke, *texsmoke2, *texsmoke3; CSmoke::CSmoke (int type) { for (int i = 0; i < MAXSMOKEELEM; i ++) { time [i] = 0; zoom [i] = 0.1; phi [i] = 0; } last = 0; this->type = type; } CSmoke::~CSmoke () { } void CSmoke::setSmoke (float x, float y, float z, int myphi, int mytime) { last ++; if (last >= MAXSMOKEELEM) last = 0; v [last].x = x; v [last].y = y; v [last].z = z; time [last] = mytime; phi [last] = myphi; } void CSmoke::move (Uint32 dt, int dec) { for (int i = 0; i < MAXSMOKEELEM; i ++) if (time [i] > 0) { time [i] -= dec; if (time [i] < 0) time [i] = 0; } } void CSmoke::drawElem (int n) { if (n < 0 || n >= MAXSMOKEELEM) return; float myzoom = smokezoom [time [n]]; glPushMatrix (); glTranslatef (v [n].x, v [n].y, v [n].z); glRotatef (camphi, 0.0, 1.0, 0.0); glRotatef (-camgamma, 1.0, 0.0, 0.0); glScalef (myzoom, myzoom, myzoom); glBegin (GL_QUADS); glColor4ub (255, 255, 255, time [n] * 5 + 25); glTexCoord2f (0, 0); glVertex3f (1, 1, 0); glTexCoord2f (1, 0); glVertex3f (1, -1, 0); glTexCoord2f (1, 1); glVertex3f (-1, -1, 0); glTexCoord2f (0, 1); glVertex3f (-1, 1, 0); glEnd (); glPopMatrix (); } void CSmoke::drawElemHQ (int n) { if (n < 0 || n >= MAXSMOKEELEM) return; glBegin (GL_QUADS); glColor4ub (255, 255, 255, time [n] * 10 + 55); float myzoom = smokezoom [time [n]]; glTexCoord2f (0, 0); glVertex3f (v [n].x - myzoom, v [n].y + myzoom, v [n].z); glTexCoord2f (1, 0); glVertex3f (v [n].x + myzoom, v [n].y + myzoom, v [n].z); glTexCoord2f (1, 1); glVertex3f (v [n].x + myzoom, v [n].y - myzoom, v [n].z); glTexCoord2f (0, 1); glVertex3f (v [n].x - myzoom, v [n].y - myzoom, v [n].z); glTexCoord2f (0, 0); glVertex3f (v [n].x, v [n].y + myzoom, v [n].z - myzoom); glTexCoord2f (1, 0); glVertex3f (v [n].x, v [n].y + myzoom, v [n].z + myzoom); glTexCoord2f (1, 1); glVertex3f (v [n].x, v [n].y - myzoom, v [n].z + myzoom); glTexCoord2f (0, 1); glVertex3f (v [n].x, v [n].y - myzoom, v [n].z - myzoom); glEnd (); } void CSmoke::draw () { int i; int smoketype = 0; if (type == 0) smoketype = texsmoke->textureID; else if (type == 1) smoketype = texsmoke2->textureID; if (antialiasing) gl->enableLinearTexture (smoketype); else gl->disableLinearTexture (smoketype); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.02); gl->enableTextures (smoketype); // draw smoke elements in the best order for (i = last; i >= 0; i --) { if (time [i] > 0) { drawElem (i); } } for (i = MAXSMOKEELEM - 1; i > last; i --) { if (time [i] > 0) { drawElem (i); } } glDisable (GL_TEXTURE_2D); glDisable (GL_ALPHA_TEST); gl->disableAlphaBlending (); } Flash::Flash () { phi = 0; } Flash::~Flash () { } void Flash::set (float x, float y, float z, int phi) { int i; this->phi = phi; w [0].x = x; w [0].y = y; w [0].z = z; for (i = 1; i < 10; i ++) { w [i].y = y + 6.0 * i; w [i].x = w [i - 1].x + 0.1 * myrandom (60) - 3.0; w [i].z = w [i - 1].z + 0.1 * myrandom (60) - 3.0; } } void Flash::draw () { int i; glDisable (GL_TEXTURE_2D); glBegin (GL_QUAD_STRIP); glColor3ub (255, 255, 255); float myzoom = 0.3; for (i = 0; i < 10; i ++) { glVertex3f (w [i].x - myzoom * cosi [phi], w [i].y, w [i].z + myzoom * sine [phi]); glVertex3f (w [i].x + myzoom * cosi [phi], w [i].y, w [i].z - myzoom * sine [phi]); } glEnd (); } void Flash::drawHQ () { int i; glDisable (GL_TEXTURE_2D); gl->enableAlphaBlending (); glBegin (GL_QUADS); float myzoom = 0.4; float alphawidth = 0.7; for (i = 0; i < 9; i ++) { glColor4ub (255, 255, 255, 0); glVertex3f (w [i].x - myzoom * cosi [phi], w [i].y, w [i].z + myzoom * sine [phi]); glColor4ub (255, 255, 255, 255); glVertex3f (w [i].x - myzoom * alphawidth * cosi [phi], w [i].y, w [i].z + myzoom * alphawidth * sine [phi]); glColor4ub (255, 255, 255, 255); glVertex3f (w [i + 1].x - myzoom * alphawidth * cosi [phi], w [i + 1].y, w [i + 1].z + myzoom * alphawidth * sine [phi]); glColor4ub (255, 255, 255, 0); glVertex3f (w [i + 1].x - myzoom * cosi [phi], w [i + 1].y, w [i + 1].z + myzoom * sine [phi]); glColor4ub (255, 255, 255, 255); glVertex3f (w [i].x - myzoom * alphawidth * cosi [phi], w [i].y, w [i].z + myzoom * alphawidth * sine [phi]); glVertex3f (w [i].x + myzoom * alphawidth * cosi [phi], w [i].y, w [i].z - myzoom * alphawidth * sine [phi]); glVertex3f (w [i + 1].x + myzoom * alphawidth * cosi [phi], w [i + 1].y, w [i + 1].z - myzoom * alphawidth * sine [phi]); glVertex3f (w [i + 1].x - myzoom * alphawidth * cosi [phi], w [i + 1].y, w [i + 1].z + myzoom * alphawidth * sine [phi]); glColor4ub (255, 255, 255, 255); glVertex3f (w [i].x + myzoom * alphawidth * cosi [phi], w [i].y, w [i].z - myzoom * alphawidth * sine [phi]); glColor4ub (255, 255, 255, 0); glVertex3f (w [i].x + myzoom * cosi [phi], w [i].y, w [i].z - myzoom * sine [phi]); glColor4ub (255, 255, 255, 0); glVertex3f (w [i + 1].x + myzoom * cosi [phi], w [i + 1].y, w [i + 1].z - myzoom * sine [phi]); glColor4ub (255, 255, 255, 255); glVertex3f (w [i + 1].x + myzoom * alphawidth * cosi [phi], w [i + 1].y, w [i + 1].z - myzoom * alphawidth * sine [phi]); } glEnd (); gl->disableAlphaBlending (); } CExplosion::CExplosion (Space *space, CModel *sphere) { this->space = space; o = sphere; ttl = 0; space->addObject (this); draw = false; zoom = 0.1; drawlight = false; } void CExplosion::setExplosion (float x, float y, float z, float vx, float vy, float vz, float maxzoom, int len) { tl->x = x; tl->y = y; tl->z = z; this->maxzoom = maxzoom; ttl = len; maxlen = len; draw = true; v.set (vx, vy, vz); } void CExplosion::move (Uint32 dt) { if (ttl > 0) { float timefac = (float) dt / (float) timestep; zoom = sine [ttl * 180 / maxlen] * maxzoom; ttl -= dt; tl->y += 0.01 * timefac; if (ttl <= 0) { ttl = 0; draw = false; } float brakepower = pow (0.98, timefac); v.mul (brakepower); tl->x += v.x * timefac; tl->y += v.y * timefac; tl->z += v.z * timefac; } } CBlackSmoke::CBlackSmoke (Space *space) { this->space = space; ttl = 0; space->addObject (this); draw = false; zoom = 0.1; drawlight = false; alpha = -1; } void CBlackSmoke::setBlackSmoke (float x, float y, float z, float myphi, float maxzoom, int len) { this->myphi = myphi; tl->x = x; tl->y = y; tl->z = z; this->maxzoom = maxzoom; ttl = len; maxlen = len; draw = true; zoom = 0; } void CBlackSmoke::move (Uint32 dt) { if (ttl > 0) { zoom = maxzoom * (maxlen - ttl) / maxlen; tl->y += 0.04 * dt / timestep; ttl -= dt; if (ttl <= 0) { ttl = 0; draw = false; } } } void CBlackSmoke::drawGL (CVector3 *z1, CVector3 *z2, CVector3 *tl, float alpha2, float lum2, bool drawlight2, bool istextured2) { if (ttl <= 0 || !specialeffects) return; if (draw == 2 || gl->isSphereInFrustum (tl->x + this->tl->x, tl->y + this->tl->y, tl->z + this->tl->z, this->zoom)) { glDepthMask (GL_FALSE); if (antialiasing) gl->enableLinearTexture (texsmoke3->textureID); else gl->disableLinearTexture (texsmoke3->textureID); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.02); gl->enableTextures (texsmoke3->textureID); glBegin (GL_QUADS); int myalpha = 255 - (maxlen - ttl) * 255 / maxlen; if (myalpha > 255) myalpha = 255; glColor4ub (0, 0, 0, myalpha); float myzoom = zoom; float cosphi = COS(camphi), sinphi = SIN(camphi); glTexCoord2f (0, 0); glVertex3f (this->tl->x - myzoom * cosphi, this->tl->y + myzoom, this->tl->z + myzoom * sinphi); glTexCoord2f (1, 0); glVertex3f (this->tl->x + myzoom * cosphi, this->tl->y + myzoom, this->tl->z - myzoom * sinphi); glTexCoord2f (1, 1); glVertex3f (this->tl->x + myzoom * cosphi, this->tl->y - myzoom, this->tl->z - myzoom * sinphi); glTexCoord2f (0, 1); glVertex3f (this->tl->x - myzoom * cosphi, this->tl->y - myzoom, this->tl->z + myzoom * sinphi); glEnd (); glDisable (GL_TEXTURE_2D); glDisable (GL_ALPHA_TEST); gl->disableAlphaBlending (); glDepthMask (GL_TRUE); } } Star::Star (int phi, int gamma, float size) { this->phi = phi; this->gamma = gamma; this->size = size; } void Star::draw () { glPointSize (LINEWIDTH(size)); // gl->enableAntiAliasing (); glBegin (GL_POINTS); glColor3ub (255, 255, 255); glVertex3f (0, 0, 0); glEnd (); // gl->disableAntiAliasing (); } /* Each font is stored in one bitmap, width=height=2^n! Use GIMP or equiv and put the ASCII letters of your favourite font there, ascending order, start whereever you want. Write as many letters as possible per line, each separated by at least one whitespace. Look at the font*.tga files for examples. The max letter height is fixed. */ bool Font::isPixel (int x, int y) { y = texture->height - y; int index = (y * texture->width + x) * 4; if (texture->data [index] > 50 && texture->data [index + 1] > 50 && texture->data [index + 2] > 50) return true; return false; } void Font::extractLetters (int height, char start, int num) { int i; int mode = 0; bool modeon = 0; this->start = start; this->height = height; int x = 0, y = 0; int xs = 0, xe = 0; n = 0; for (;;) { mode ++; for (i = y + 2; i <= y + height - 2; i += 2) { if (isPixel (x, i)) { mode = 0; } } if (mode == 0) { if (!modeon) { xs = x; modeon = true; } } if (mode >= 5) { if (modeon) { xe = x; modeon = false; letterx [n] = xs - 2; lettery [n] = y; letterw [n] = xe - xs + 1; n ++; if (n >= num) return; } } x ++; if (x >= texture->width) { if (modeon) { xe = x; modeon = false; letterx [n] = xs - 2; lettery [n] = y; letterw [n] = xe - xs + 3; n ++; if (n >= num) return; } y += height; x = 0; } if (y >= texture->height) return; } } Font::Font (char *filename, int height, char start, int num) { texture = gl->genTextureTGA (filename, 0, 1, 0, true); extractLetters (height, start, num); zoom = 0.1F; stdcol = new CColor (255, 255, 255, 220); highlightcol = new CColor (255, 255, 0, 255); } Font::~Font () { delete stdcol; delete highlightcol; } void Font::drawText (float x, float y, float z, char *str, CColor *c, bool centered, int highlight, CColor *highlightcol) { int len = strlen (str); glDisable (GL_LIGHTING); glDisable (GL_DEPTH_TEST); gl->enableTextures (texture->textureID); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); glBegin (GL_QUADS); glColor4ub (c->c [0], c->c [1], c->c [2], c->c [3]); float xz = x * zoom, yz = y * zoom; if (centered) { float xw = 0; for (int i = 0; i < len; i ++) { if (str [i] >= start && str [i] < start + n) { int c = (int) (str [i] - start); xw += zoom * letterw [c] / height; } else if (str [i] == '\t') { int xzint = (int) (xw * 10.0); xzint -= xzint & 3; // modulo 4 xzint += 4; xw = (float) xzint * zoom; } else { xw += 0.5 * zoom; } } xz -= xw / 2; } for (int i = 0; i < len; i ++) { if (str [i] >= start && str [i] < start + n) { if (i != highlight) glColor4ub (c->c [0], c->c [1], c->c [2], c->c [3]); else glColor4ub (highlightcol->c [0], highlightcol->c [1], highlightcol->c [2], highlightcol->c [3]); int c = (int) (str [i] - start); float tx = (float) letterx [c] / texture->width; float ty = 1.0 - (float) lettery [c] / texture->height; float tx2 = (float) tx + (float) letterw [c] / texture->width; float ty2 = (float) ty - (float) height / texture->height; float xi = zoom * letterw [c] / height; float yi = zoom; glTexCoord2f (tx, ty2); glVertex3f (xz, yz, z); glTexCoord2f (tx, ty); glVertex3f (xz, yz + yi, z); glTexCoord2f (tx2, ty); glVertex3f (xz + xi, yz + yi, z); glTexCoord2f (tx2, ty2); glVertex3f (xz + xi, yz, z); xz += xi; } else if (str [i] == '\t') { int xzint = (int) (xz * 10.0); xzint -= xzint & 3; // modulo 4 xzint += 4; xz = (float) xzint * zoom; } else if (str [i] == '\n') { yz -= zoom; xz = x * zoom; } else { xz += 0.5 * zoom; } } glEnd (); glDisable (GL_ALPHA_TEST); gl->disableAlphaBlending (); glDisable (GL_TEXTURE_2D); } void Font::drawText (float x, float y, float z, char *str, CColor *c, int highlight, CColor *highlightcol) { drawText (x, y, z, str, c, false, highlight, highlightcol); } void Font::drawText (float x, float y, float z, char *str, CColor *c, int highlight) { drawText (x, y, z, str, c, false, highlight, highlightcol); } void Font::drawText (float x, float y, float z, char *str, int highlight, CColor *highlightcol) { drawText (x, y, z, str, stdcol, false, highlight, highlightcol); } void Font::drawText (float x, float y, float z, char *str, int highlight) { drawText (x, y, z, str, stdcol, false, highlight, highlightcol); } void Font::drawText (float x, float y, float z, char *str, CColor *c) { drawText (x, y, z, str, c, false, -1, highlightcol); } void Font::drawText (float x, float y, float z, char *str) { drawText (x, y, z, str, stdcol, false, -1, highlightcol); } void Font::drawTextCentered (float x, float y, float z, char *str, CColor *c, int highlight, CColor *highlightcol) { drawText (x, y, z, str, c, true, highlight, highlightcol); } void Font::drawTextCentered (float x, float y, float z, char *str, CColor *c, int highlight) { drawText (x, y, z, str, c, true, highlight, highlightcol); } void Font::drawTextCentered (float x, float y, float z, char *str, CColor *c) { drawText (x, y, z, str, c, true, -1, highlightcol); } void Font::drawTextCentered (float x, float y, float z, char *str, int highlight, CColor *highlightcol) { drawText (x, y, z, str, stdcol, true, highlight, highlightcol); } void Font::drawTextCentered (float x, float y, float z, char *str, int highlight) { drawText (x, y, z, str, stdcol, true, highlight, highlightcol); } void Font::drawTextCentered (float x, float y, float z, char *str) { drawText (x, y, z, str, stdcol, true, -1, highlightcol); } void Font::drawTextRotated (float x, float y, float z, char *str, CColor *color, int timer) { int len = strlen (str); glDisable (GL_LIGHTING); glDisable (GL_DEPTH_TEST); gl->enableTextures (texture->textureID); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); float xz = x * 0.1, yz = y * 0.1; for (int i = 0; i < len; i ++) { if (str [i] >= start && str [i] <= start + n) { int c = (int) (str [i] - start); float tx = (float) letterx [c] / texture->width; float ty = 1.0 - (float) lettery [c] / texture->height; float tx2 = (float) tx + (float) letterw [c] / texture->width; float ty2 = (float) ty - (float) height / texture->height; float xi = 0.1 * letterw [c] / height; float yi = 0.1; glPushMatrix (); glTranslatef (xz + xi / 2, yz + yi / 2, z); glRotatef ((float) timer / timestep + i * 20, 1, 0, 0); glBegin (GL_QUADS); glColor4ub (color->c [0], color->c [1], color->c [2], color->c [3]); glTexCoord2f (tx, ty2); glVertex3f (-xi / 2, -yi / 2, 0); glTexCoord2f (tx, ty); glVertex3f (-xi / 2, yi / 2, 0); glTexCoord2f (tx2, ty); glVertex3f (xi / 2, yi / 2, 0); glTexCoord2f (tx2, ty2); glVertex3f (xi / 2, -yi / 2, 0); glEnd (); glPopMatrix (); xz += xi; } else if (str [i] == '\t') { int xzint = (int) (xz * 10.0); xzint -= xzint & 3; // modulo 4 xzint += 4; xz = (float) xzint / 10.0; } else { xz += 0.05; } } glDisable (GL_ALPHA_TEST); gl->disableAlphaBlending (); glDisable (GL_TEXTURE_2D); } void Font::drawTextScaled (float x, float y, float z, char *str, CColor *color, int timer, int highlight, CColor *highlightcol) { int i; int len = strlen (str); glDisable (GL_LIGHTING); glDisable (GL_DEPTH_TEST); gl->enableTextures (texture->textureID); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); float xw = 0; for (i = 0; i < len; i ++) { if (str [i] >= start && str [i] <= start + n) { int c = (int) (str [i] - start); xw += 0.1 * letterw [c] / height; } else if (str [i] == '\t') { int xzint = (int) (xw * 10.0); xzint -= xzint & 3; // modulo 4 xzint += 4; xw = (float) xzint / 10.0; } else { xw += 0.05; } } float xz = x * 0.1, yz = y * 0.1; glPushMatrix (); glTranslatef (xz + xw / 2, yz, z); xz = 0; glScalef (1.0 + 0.08 * sine [abs (timer * 8 / timestep % 360)], 1, 1); for (i = 0; i < len; i ++) { if (str [i] >= start && str [i] <= start + n) { int c = (int) (str [i] - start); float tx = (float) letterx [c] / texture->width; float ty = 1.0 - (float) lettery [c] / texture->height; float tx2 = (float) tx + (float) letterw [c] / texture->width; float ty2 = (float) ty - (float) height / texture->height; float xi = 0.1 * letterw [c] / height; float yi = 0.1; if (i != highlight) glColor4ub (color->c [0], color->c [1], color->c [2], color->c [3]); else glColor4ub (highlightcol->c [0], highlightcol->c [1], highlightcol->c [2], highlightcol->c [3]); glPushMatrix (); glTranslatef (xz + xi / 2 - xw / 2, yi / 2, 0); glBegin (GL_QUADS); glTexCoord2f (tx, ty2); glVertex3f (-xi / 2, -yi / 2, 0); glTexCoord2f (tx, ty); glVertex3f (-xi / 2, yi / 2, 0); glTexCoord2f (tx2, ty); glVertex3f (xi / 2, yi / 2, 0); glTexCoord2f (tx2, ty2); glVertex3f (xi / 2, -yi / 2, 0); glEnd (); glPopMatrix (); xz += xi; } else if (str [i] == '\t') { int xzint = (int) (xz * 10.0); xzint -= xzint & 3; // modulo 4 xzint += 4; xz = (float) xzint / 10.0; } else { xz += 0.05; } } glPopMatrix (); glDisable (GL_ALPHA_TEST); gl->disableAlphaBlending (); glDisable (GL_TEXTURE_2D); } void Font::drawTextScaled (float x, float y, float z, char *str, CColor *color, int timer, int highlight) { drawTextScaled (x, y, z, str, color, timer, highlight, highlightcol); } void Font::drawTextScaled (float x, float y, float z, char *str, CColor *color, int timer) { drawTextScaled (x, y, z, str, color, timer, -1, highlightcol); } void Font::drawTextScaled (float x, float y, float z, char *str, int timer, int highlight, CColor *highlightcol) { drawTextScaled (x, y, z, str, stdcol, timer, highlight, highlightcol); } void Font::drawTextScaled (float x, float y, float z, char *str, int timer, int highlight) { drawTextScaled (x, y, z, str, stdcol, timer, highlight, highlightcol); } void Font::drawTextScaled (float x, float y, float z, char *str, int timer) { drawTextScaled (x, y, z, str, stdcol, timer, -1, highlightcol); } HighClouds::HighClouds (int theta) { init (theta); } HighClouds::~HighClouds () { delete sphere; } void HighClouds::init (int theta) { sphere = new CSpherePart (1, 9, theta); CObject *co = sphere->object [0]; co->hasTexture = true; co->material = new CMaterial (); for (int i2 = 0; i2 < co->numVertices; i2 ++) { co->vertex [i2].tex.x = co->vertex [i2].vector.x * 5; co->vertex [i2].tex.y = co->vertex [i2].vector.y * 5; } co->hasTexture = true; sphere->displaylist = false; o = sphere; rot->b = 90; draw = 2; drawlight = false; zoom = 300; } void HighClouds::setTexture (CTexture *texture) { sphere->object [0]->material->texture = texture; } void HighClouds::drawGL (CVector3 *tl, CVector3 *textl) { int j; CObject *cm = o->object [0]; for (int i2 = 0; i2 < cm->numVertices; i2 ++) { cm->vertex [i2].tex.x = cm->vertex [i2].vector.x * 4 + textl->x / zoom; cm->vertex [i2].tex.y = cm->vertex [i2].vector.y * 4 - textl->z / zoom; } glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.015); glDisable (GL_DEPTH_TEST); glPushMatrix (); glTranslatef (tl->x, tl->y, tl->z); glRotatef (90, 0, -1, 0); glRotatef (270, 1, 0, 0); glRotatef (90, 0, 0, 1); glScalef (zoom, zoom, zoom); glShadeModel (GL_SMOOTH); glEnable (GL_TEXTURE_2D); glColor3ub (255, 255, 255); glBindTexture (GL_TEXTURE_2D, cm->material->texture->textureID); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; glNormal3f (v->normal.x, v->normal.y, v->normal.z); glTexCoord2f (v->tex.x, v->tex.y); glVertex3f(v->vector.x, v->vector.y, v->vector.z); } } glEnd(); if (quality <= 2 || !antialiasing) { glBindTexture (GL_TEXTURE_2D, cm->material->texture->textureID); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); } glBegin(GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; for (int whichVertex = 0; whichVertex < 4; whichVertex ++) { v = cm->quad [j].v [whichVertex]; glNormal3f (v->normal.x, v->normal.y, v->normal.z); glTexCoord2f(v->tex.x, v->tex.y); glVertex3f(v->vector.x, v->vector.y, v->vector.z); } } glEnd(); glEnable (GL_DEPTH_TEST); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); glDisable (GL_TEXTURE_2D); glPopMatrix (); } #endif gl-117-1.3.2/src/effects.h0000644000175000017500000001325010145416156014254 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes all special effects. */ #ifndef IS_EFFECTS_H #define IS_EFFECTS_H #include "model.h" // ok #include "object.h" // ok #include "mathtab.h" // ok extern CTexture *texsmoke, *texsmoke2, *texsmoke3; // Smoke of missiles and fighters class CSmoke { public: CVector3 v [MAXSMOKEELEM]; float zoom [MAXSMOKEELEM]; int time [MAXSMOKEELEM]; int phi [MAXSMOKEELEM]; // player's view angle (for low quality smoke), obsolete since v0.8.5 int last; int type; CSmoke (int type); virtual ~CSmoke (); void setSmoke (float x, float y, float z, int myphi, int mytime); void move (Uint32 dt, int dec); void drawElem (int n); void drawElemHQ (int n); void draw (); }; // Flash of a thunderstorm class Flash { public: int time; int phi; // player's view angle CVector3 w [10]; Flash (); virtual ~Flash (); void set (float x, float y, float z, int phi); void draw (); void drawHQ (); }; // Explosion balls class CExplosion : public CSpaceObj { public: Space *space; int ttl, maxlen; float maxzoom; CVector3 v; CExplosion (Space *space, CModel *sphere); virtual ~CExplosion () {} void setExplosion (float x, float y, float z, float vx, float vy, float vz, float maxzoom, int len); void move (Uint32 dt); // drawGL() of CSpaceObj }; // Dark smoke after explosions class CBlackSmoke : public CSpaceObj { public: Space *space; int ttl, maxlen; float maxzoom; float myphi; // player's view angle, obsolete since v0.8.5 CBlackSmoke (Space *space); virtual ~CBlackSmoke () {} void setBlackSmoke (float x, float y, float z, float myphi, float maxzoom, int len); void move (Uint32 dt); virtual void drawGL (CVector3 *z1, CVector3 *z2, CVector3 *tl, float alpha2, float lum2, bool drawlight2, bool istextured2); }; // Stars at night class Star { public: int phi, gamma; // polar (sphere) coords float size; Star (int phi, int gamma, float size); virtual ~Star () {} void draw (); }; // Font class to create fonts out of bitmaps class Font { public: CTexture *texture; // the font texture char start; // starting character int height; // fixed line height in the texture (should be maximum letter height) int n; // number of letters float zoom; // zoom factor for output short letterx [256]; // starting x coordinate in the texture short lettery [256]; // starting y coordinate in the texture short letterw [256]; // width in the texture CColor *stdcol; CColor *highlightcol; Font (char *filename, int height, char start, int num); // new Font virtual ~Font (); bool isPixel (int x, int y); // is pixel set in the texture? void extractLetters (int height, char start, int num); // extract the letters // some custom OpenGL output methods void drawText (float x, float y, float z, char *str, CColor *c, bool centered, int highlight, CColor *highlightcol); void drawText (float x, float y, float z, char *str, CColor *c, int highlight, CColor *highlightcol); void drawText (float x, float y, float z, char *str, CColor *c, int highlight); void drawText (float x, float y, float z, char *str, CColor *c); void drawText (float x, float y, float z, char *str, int highlight, CColor *highlightcol); void drawText (float x, float y, float z, char *str, int highlight); void drawText (float x, float y, float z, char *str); void drawTextCentered (float x, float y, float z, char *str, CColor *c, int highlight, CColor *highlightcol); void drawTextCentered (float x, float y, float z, char *str, CColor *c, int highlight); void drawTextCentered (float x, float y, float z, char *str, CColor *c); void drawTextCentered (float x, float y, float z, char *str, int highlight, CColor *highlightcol); void drawTextCentered (float x, float y, float z, char *str, int highlight); void drawTextCentered (float x, float y, float z, char *str); void drawTextRotated (float x, float y, float z, char *str, CColor *color, int timer); void drawTextScaled (float x, float y, float z, char *str, CColor *color, int timer, int highlight, CColor *highlightcol); void drawTextScaled (float x, float y, float z, char *str, CColor *color, int timer, int highlight); void drawTextScaled (float x, float y, float z, char *str, CColor *color, int timer); void drawTextScaled (float x, float y, float z, char *str, int timer, int highlight, CColor *highlightcol); void drawTextScaled (float x, float y, float z, char *str, int timer, int highlight); void drawTextScaled (float x, float y, float z, char *str, int timer); }; class HighClouds : public CSpaceObj { public: CSpherePart *sphere; HighClouds (int theta); virtual ~HighClouds (); void init (int theta); void setTexture (CTexture *texture); void drawGL (CVector3 *tl, CVector3 *textl); }; #endif gl-117-1.3.2/src/fileloader.c0000644000175000017500000004535010145416156014744 0ustar cedriccedric/* **************************************************************************** * COPYRIGHT by Testing Solutions * * Reuter, Christian c.reuter@testingsolutions.de * * Von-Leoprechting-Str. 14, 86899 Landsberg / Lech Germany * * Phone: +49 8191 305202, Fax: +49 8191 305244 * * Internet: www.testingsolutions.de * **************************************************************************** * * * All Rights Reserved. * * * * This software is the confidential and proprietary information of the * * author. * * * * All brand names and product names used in this software are trademarks, * * registered trademarks, or trade names of their respective holders. * * The authors of this software are not associated with any product or * * vendor mentioned in the code or documentation. * * * **************************************************************************** DOCUMENTATION: This is a low level library to split text files into tokens. */ #ifndef IS_FILELOADER_H #include "fileloader.h" /************************************************************************** This is a low level library to split text files into tokens. Customize strings for quotes, whitespace and comments. Then parse one token after each other calling file_nextToken() or set the file cursor to a new position calling file_find(mystr) Documentation notes: - all int-functions return 0 on error/EOF, 1 on success - all documented functions are public, the rest is private Example to parse MEA-files: char token [256]; file_setWhitespace (" \t\r\n-="); file_setQuotes ("\'{}"); file_addComment ("$", "\n"); file_open ("test.mea"); while (file_find ("[MEA_")) // search for string [MEA_ { file_nextToken (token, 256); // read the [MEA_ token printf ("%s\n", token); // and print it on stdout } file_rewind (); // again from the beginning while (file_nextToken (token, 256)) // read every token { printf ("%s\n", token); // print out every token } **************************************************************************/ int file_quoteremove = 0; FILE *file_file = NULL; /* FILE pointer */ char file_buffer [FILE_MAXLEN+1]; /* file buffer in RAM */ int file_ptr = FILE_MAXLEN; /* file_buffer pointer to current char = "file cursor" */ char file_whitespace [256]; /* string containing the whitespace chars */ char file_separator [256]; /* string containing the separator chars */ int file_commentnum = 0; /* number of comment strings */ char file_quotes [256]; /* string containing the quote chars */ char file_commentstart [FILE_MAXCOMMENTS] [256]; /* strings for comment beginnings */ char file_commentend [FILE_MAXCOMMENTS] [256]; /* strings for corresponding comment ends */ int file_bufferlen = FILE_MAXLEN; /* current length of the file buffer */ int file_line = 1; char file_currentquotes = 0; char file_currentcomment = 0; XLONG file_bufferstart = 0; int file_bufferread = 0; char file_lastchar; int file_reverse = 0; /************************************************************************** Init data structure Example: file_init (); **************************************************************************/ void file_init () { memset (file_whitespace, 0, 256); memset (file_separator, 0, 256); memset (file_quotes, 0, 256); memset (file_commentstart, 0, FILE_MAXCOMMENTS * 256); memset (file_commentend, 0, FILE_MAXCOMMENTS * 256); file_commentnum = 0; file_quoteremove = 0; file_currentquotes = 0; file_currentcomment = 0; file_reverse = 0; file_bufferread = 0; file_bufferstart = 0; file_buffer [FILE_MAXLEN] = 0; } void file_initComments () { memset (file_commentstart, 0, FILE_MAXCOMMENTS * 256); memset (file_commentend, 0, FILE_MAXCOMMENTS * 256); file_commentnum = 0; } /************************************************************************** Get current position of the file pointer Example: file_getPosition (); **************************************************************************/ XLONG file_getPosition () { if (!file_reverse) return (XLONG) ftell (file_file) - FILE_MAXLEN + file_ptr; else return (XLONG) ftell (file_file) - file_ptr; /* if (!file_revert) return file_bufferstart + file_ptr; else return file_bufferstart - file_ptr;*/ // return (XLONG) ftell (file_file); } /************************************************************************** Get current line of the file Example: file_getLine (); **************************************************************************/ int file_getLine () { return file_line; } /************************************************************************** Set the whitespace chars for this file Example: file_setWhitespace (" \n\t"); **************************************************************************/ void file_setWhitespace (char *string) { strncpy (file_whitespace, string, 256); file_whitespace [255] = 0; } /************************************************************************** Set the separator chars for this file Example: file_setSeparator (",;"); **************************************************************************/ void file_setSeparator (char *string) { strncpy (file_separator, string, 256); file_separator [255] = 0; } /************************************************************************** Add comment strings for this file Example language C++: file_addComment ("//", "\n"); file_addComment ("/*", "* /"); <-- without whitespace between * and / **************************************************************************/ void file_addComment (char *startstring, char *endstring) { if (file_commentnum >= FILE_MAXCOMMENTS) return; strncpy (file_commentstart [file_commentnum], startstring, 256); file_commentstart [file_commentnum] [255] = 0; strncpy (file_commentend [file_commentnum], endstring, 256); file_commentend [file_commentnum] [255] = 0; file_commentnum ++; } /************************************************************************** Set the quote chars for string in this file Example: file_setQuotes ("\'\""); **************************************************************************/ void file_setQuotes (char *string) { strncpy (file_quotes, string, 256); file_quotes [255] = 0; } void file_revertBuffer (int start, int end) { int i; char c; for (i = 0; i <= (end - start) / 2; i ++) { c = file_buffer [start + i]; file_buffer [start + i] = file_buffer [end - i]; file_buffer [end - i] = c; } } int file_fillBuffer () { int bytesread = 0; int n = FILE_MAXLEN - file_ptr; int bytestoread = file_ptr; if (file_ptr < FILE_MAXLEN) if (file_buffer [file_ptr] == 0) return 0; if (file_ptr <= FILE_MAXLEN / 2) return 1; memcpy (file_buffer, &file_buffer [file_ptr], n); if (file_reverse) { // n = file_bufferlen - file_ptr; if (file_bufferstart - bytestoread - file_bufferread >= 0) { fseek (file_file, -bytestoread - file_bufferread, SEEK_CUR); file_bufferstart += -bytestoread - file_bufferread; } else { bytestoread = (int) file_bufferstart - file_bufferread; fseek (file_file, 0, SEEK_SET); file_bufferstart = 0; memset (&file_buffer [n + bytestoread], 0, FILE_MAXLEN - (n + bytestoread)); } } bytesread = fread (&file_buffer [n], 1, bytestoread, file_file); file_bufferlen = file_bufferlen + bytesread - file_ptr; file_bufferread = bytesread; file_bufferstart += bytesread; if (file_reverse) { if (bytesread > 0) file_revertBuffer (n, n + bytesread - 1); } if (bytesread != file_ptr) { if (file_bufferlen >= 0 && file_bufferlen < FILE_MAXLEN) file_buffer [file_bufferlen] = 0; } file_ptr = 0; return 1; } /*int file_fillBuffer () { int bytesread = 0; int n = FILE_MAXLEN - file_ptr; if (file_ptr < FILE_MAXLEN) if (file_buffer [file_ptr] == 0) return 0; if (file_ptr <= FILE_MAXLEN / 2) return 1; memcpy (file_buffer, &file_buffer [file_ptr], n); bytesread = fread (&file_buffer [n], 1, file_ptr, file_file); file_bufferlen = file_bufferlen + bytesread - file_ptr; if (bytesread != file_ptr) { if (file_bufferlen - 1 >= 0) file_buffer [file_bufferlen - 1] = 0; } file_ptr = 0; return 1; }*/ /*int file_fillBuffer () { int bytesread = 0; int bytestoread = file_ptr; int filemaxlen = FILE_MAXLEN - 1; int n = FILE_MAXLEN - 1 - file_ptr; if (file_ptr <= filemaxlen / 2 && file_ptr <= file_bufferlen) return 1; if (file_ptr < filemaxlen && file_ptr >= 0) if (file_buffer [file_ptr] == 0) return 0; memcpy (file_buffer, &file_buffer [file_ptr], n); if (file_reverse) { n = file_bufferlen - file_ptr - 1; if (file_bufferstart - bytestoread >= 0) { fseek (file_file, -bytestoread - file_bufferread, SEEK_CUR); file_bufferstart += -bytestoread - file_bufferread; } else { bytestoread = file_bufferstart; fseek (file_file, 0, SEEK_SET); memset (&file_buffer [n + bytestoread], 0, filemaxlen - (n + bytestoread)); } } bytesread = fread (&file_buffer [n], 1, bytestoread, file_file); file_bufferstart = ftell (file_file); if (file_reverse) { file_revertBuffer (n, n + bytesread - 1); file_bufferlen = file_bufferlen + bytesread - file_ptr; } else { file_bufferlen = n + bytesread; } file_bufferread = bytesread; if (bytesread != file_ptr) { if (file_bufferlen < 0) return 0; file_buffer [file_bufferlen - 1] = 0; } file_ptr = 0; return 1; }*/ /************************************************************************** Revert the file read order (forward/backward) Example: file_revert (); **************************************************************************/ void file_revert () { if (file_reverse) { fseek (file_file, -file_bufferread - file_ptr + file_bufferlen, SEEK_CUR); file_bufferstart += -file_bufferread - file_ptr + file_bufferlen; } file_bufferread = file_bufferlen - file_ptr; file_reverse = !file_reverse; file_ptr = FILE_MAXLEN; file_bufferlen = FILE_MAXLEN; file_fillBuffer (); } /************************************************************************** Set current position of the file pointer Example: file_setPosition (); **************************************************************************/ int file_setPosition (XLONG pointer, int whence) { if (fseek (file_file, 0, whence)) return 0; if (whence == 1) { if (!file_reverse) pointer += -FILE_MAXLEN + file_ptr; else pointer += -file_ptr; } while (pointer > 0x77777777) { if (fseek (file_file, 0x77777777, 1)) return 0; pointer -= 0x77777777; } while (pointer < -0x77777777) { if (fseek (file_file, -0x77777777, 1)) return 0; pointer += 0x77777777; } if (!fseek (file_file, (long) pointer, 1)) { file_bufferstart = ftell (file_file); file_bufferread = 0; file_ptr = FILE_MAXLEN; file_bufferlen = FILE_MAXLEN; file_fillBuffer (); return 1; } return 0; } /************************************************************************** Rewind file to an initial state to restart parsing **************************************************************************/ void file_rewind () { fseek (file_file, 0, SEEK_SET); file_reverse = 0; file_ptr = FILE_MAXLEN; file_bufferlen = FILE_MAXLEN; file_bufferstart = 0; file_fillBuffer (); file_line = 1; } /************************************************************************** Open file for parsing **************************************************************************/ int file_open (char *filename) { file_file = fopen (filename, "rb"); if (!file_file) return 0; file_rewind (); return 1; } /************************************************************************** Close file **************************************************************************/ int file_close () { if (file_file) return !fclose (file_file); else return 1; } int file_isChar (char *string) { int i = 0; while (string [i] != 0 && i < 256) { if (file_buffer [file_ptr] == string [i]) return 1; i ++; } return 0; } int file_isCommentStart () { int i, i2; for (i = 0; i < file_commentnum; i ++) { for (i2 = 0; i2 < (int) strlen (file_commentstart [i]); i2 ++) if (file_buffer [file_ptr + i2] != file_commentstart [i] [i2]) break; if (i2 == (int) strlen (file_commentstart [i])) { file_currentcomment = i; return 1; } } return 0; } int file_isCommentEnd () { int i, i2; i = file_currentcomment; for (i2 = 0; i2 < (int) strlen (file_commentend [i]); i2 ++) if (file_buffer [file_ptr + i2] != file_commentend [i] [i2]) break; if (i2 == (int) strlen (file_commentend [i])) { for (i = 0; i < i2; i ++) (void) file_nextChar (); return 1; } return 0; } /************************************************************************** Find the first occurance of string from the cursor and set cursor to the new position, this is quite fast! **************************************************************************/ int file_find (char *string) { char *result = NULL; int stringlen = strlen (string); if (stringlen >= FILE_MAXLEN / 2) return 0; while (result == NULL) { result = strstr (&file_buffer [file_ptr], string); if (result == NULL) { file_ptr = file_bufferlen - stringlen; if (file_bufferlen < FILE_MAXLEN) return 0; if (!file_fillBuffer ()) return 0; } else { file_ptr += (int) (result - (&file_buffer [file_ptr])); file_fillBuffer (); return 1; } } return 1; } int file_nextChar () { if (file_buffer [file_ptr] == '\n' && file_lastchar != 92) file_line ++; file_lastchar = file_buffer [file_ptr]; file_ptr ++; return file_fillBuffer (); } int file_tokenpos = 0; int file_fillToken (char *token, int tokenlen) { if (tokenlen == 0) return 0; if (file_tokenpos >= tokenlen - 1) { token [tokenlen - 1] = 0; return 0; } token [file_tokenpos ++] = file_buffer [file_ptr]; token [file_tokenpos] = 0; return 1; } /*int file_nextDouble (double *d) { char *ptr; int readlen; *d = strtod (&file_buffer [file_ptr], &ptr); readlen = (int) (ptr - &file_buffer [file_ptr]); file_ptr += readlen; if (readlen == 0) return -1; return file_fillBuffer (); }*/ /************************************************************************** Find the next token from the current cursor position and fill the token string. Use tokenlen to define a maximum length for token. **************************************************************************/ int file_nextToken (char *token, int tokenlen) { char last = 0; int ptr = 0; file_tokenpos = 0; if (tokenlen <= 0) return 1; token [0] = '\0'; if (file_buffer [file_ptr] == 0) { return 0; } while (1) { if (file_isChar (file_whitespace)) { if (!file_nextChar ()) return 0; } else if (file_isChar (file_separator)) { if (!file_fillToken (token, tokenlen)) return 1; if (!file_nextChar ()) return 0; return 1; } else if (file_isCommentStart ()) { do { if (!file_nextChar ()) return 0; } while (!file_isCommentEnd ()); } else if (file_isChar (file_quotes)) { file_currentquotes = file_buffer [file_ptr]; if (!file_quoteremove) if (!file_fillToken (token, tokenlen)) /* opening quotes */ return 1; last = 0; while (1) { last = file_buffer [file_ptr]; if (!file_nextChar ()) return 0; /* while (file_isChar ("\\")) { if (!file_fillToken (token, tokenlen)) return 1; if (!file_nextChar ()) return 0; if (!file_fillToken (token, tokenlen)) return 1; if (!file_nextChar ()) return 0; }*/ if (file_buffer [file_ptr] == file_currentquotes && last != '\\') { if (!file_quoteremove) if (!file_fillToken (token, tokenlen)) /* closing quotes */ return 1; if (!file_nextChar ()) return 0; return 1; } if (file_buffer [file_ptr] != '\\') { if (last != '\\') { if (!file_fillToken (token, tokenlen)) return 1; } else { if (file_buffer [file_ptr] == 'n') file_buffer [file_ptr] = '\n'; else if (file_buffer [file_ptr] == 't') file_buffer [file_ptr] = '\t'; else if (file_buffer [file_ptr] == 'r') file_buffer [file_ptr] = '\r'; else if (file_buffer [file_ptr] == 'a') file_buffer [file_ptr] = '\a'; else if (file_buffer [file_ptr] == '\\') file_buffer [file_ptr] = '\\'; if (!file_fillToken (token, tokenlen)) return 1; } } } } else { while (1) { if (!file_fillToken (token, tokenlen)) return 1; if (!file_nextChar ()) return 0; if (file_isChar (file_whitespace)) return 1; if (file_isChar (file_separator)) return 1; if (file_isCommentStart ()) return 1; if (file_isChar (file_quotes)) return 1; } } } return 1; } /* void main () { char token [256]; file_setWhitespace (" \t\r\n-"); file_setQuotes ("\'{}"); file_addComment ("$", "\n"); file_open ("test.mea"); while (file_find ("[MEA_")) { file_nextToken (token, 256); printf ("%s\n", token); } file_rewind (); while (file_nextToken (token, 256)) { printf ("%s\n", token); } file_close (); } */ #endif gl-117-1.3.2/src/fileloader.cpp0000644000175000017500000003775210145416156015313 0ustar cedriccedric/* **************************************************************************** * COPYRIGHT by Testing Solutions * * Reuter, Christian c.reuter@testingsolutions.de * * Von-Leoprechting-Str. 14, 86899 Landsberg / Lech Germany * * Phone: +49 8191 305202, Fax: +49 8191 305244 * * Internet: www.testingsolutions.de * **************************************************************************** * * * All Rights Reserved. * * * * This software is the confidential and proprietary information of the * * author. * * * * All brand names and product names used in this software are trademarks, * * registered trademarks, or trade names of their respective holders. * * The authors of this software are not associated with any product or * * vendor mentioned in the code or documentation. * * * **************************************************************************** DOCUMENTATION: This is a low level library to split text files into tokens. */ #ifndef IS_FILELOADER_H #include #include #include #include "fileloader.h" /************************************************************************** This is a low level library to split text files into tokens. Customize strings for quotes, whitespace and comments. Then parse one token after each other calling file_nextToken() or set the file cursor to a new position calling file_find(mystr) Documentation notes: - all int-functions return 0 on error/EOF, 1 on success - all documented functions are public, the rest is private Example to parse MEA-files: char token [256]; file_setWhitespace (" \t\r\n-="); file_setQuotes ("\'{}"); file_addComment ("$", "\n"); file_open ("test.mea"); while (file_find ("[MEA_")) // search for string [MEA_ { file_nextToken (token, 256); // read the [MEA_ token printf ("%s\n", token); // and print it on stdout } file_rewind (); // again from the beginning while (file_nextToken (token, 256)) // read every token { printf ("%s\n", token); // print out every token } **************************************************************************/ int file_quoteremove = 0; FILE *file_file = NULL; /* FILE pointer */ char file_buffer [FILE_MAXLEN+1]; /* file buffer in RAM */ int file_ptr = FILE_MAXLEN; /* file_buffer pointer to current char = "file cursor" */ char file_whitespace [256]; /* string containing the whitespace chars */ char file_separator [256]; /* string containing the separator chars */ int file_commentnum = 0; /* number of comment strings */ char file_quotes [256]; /* string containing the quote chars */ char file_commentstart [FILE_MAXCOMMENTS] [256]; /* strings for comment beginnings */ char file_commentend [FILE_MAXCOMMENTS] [256]; /* strings for corresponding comment ends */ int file_bufferlen = FILE_MAXLEN; /* current length of the file buffer */ int file_line = 1; char file_currentquotes = 0; char file_currentcomment = 0; XLONG file_bufferstart = 0; int file_bufferread = 0; char file_lastchar; int file_reverse = 0; /************************************************************************** Init data structure Example: file_init (); **************************************************************************/ void file_init () { memset (file_whitespace, 0, 256); memset (file_separator, 0, 256); memset (file_quotes, 0, 256); memset (file_commentstart, 0, FILE_MAXCOMMENTS * 256); memset (file_commentend, 0, FILE_MAXCOMMENTS * 256); file_commentnum = 0; file_quoteremove = 0; file_currentquotes = 0; file_currentcomment = 0; file_reverse = 0; file_bufferread = 0; file_bufferstart = 0; file_buffer [FILE_MAXLEN] = 0; } void file_initComments () { memset (file_commentstart, 0, FILE_MAXCOMMENTS * 256); memset (file_commentend, 0, FILE_MAXCOMMENTS * 256); file_commentnum = 0; } /************************************************************************** Get current position of the file pointer Example: file_getPosition (); **************************************************************************/ XLONG file_getPosition () { if (!file_reverse) return (XLONG) ftell (file_file) - FILE_MAXLEN + file_ptr; else return (XLONG) ftell (file_file) - file_ptr; } /************************************************************************** Get current line of the file Example: file_getLine (); **************************************************************************/ int file_getLine () { return file_line; } /************************************************************************** Set the whitespace chars for this file Example: file_setWhitespace (" \n\t"); **************************************************************************/ void file_setWhitespace (char *string) { strncpy (file_whitespace, string, 256); file_whitespace [255] = 0; } /************************************************************************** Set the separator chars for this file Example: file_setSeparator (",;"); **************************************************************************/ void file_setSeparator (char *string) { strncpy (file_separator, string, 256); file_separator [255] = 0; } /************************************************************************** Add comment strings for this file Example language C++: file_addComment ("//", "\n"); **************************************************************************/ void file_addComment (char *startstring, char *endstring) { if (file_commentnum >= FILE_MAXCOMMENTS) return; strncpy (file_commentstart [file_commentnum], startstring, 256); file_commentstart [file_commentnum] [255] = 0; strncpy (file_commentend [file_commentnum], endstring, 256); file_commentend [file_commentnum] [255] = 0; file_commentnum ++; } /************************************************************************** Set the quote chars for string in this file Example: file_setQuotes ("\'\""); **************************************************************************/ void file_setQuotes (char *string) { strncpy (file_quotes, string, 256); file_quotes [255] = 0; } void file_revertBuffer (int start, int end) { int i; char c; for (i = 0; i <= (end - start) / 2; i ++) { c = file_buffer [start + i]; file_buffer [start + i] = file_buffer [end - i]; file_buffer [end - i] = c; } } int file_fillBuffer () { int bytesread = 0; int n = FILE_MAXLEN - file_ptr; int bytestoread = file_ptr; if (file_ptr < FILE_MAXLEN) if (file_buffer [file_ptr] == 0) return 0; if (file_ptr <= FILE_MAXLEN / 2) return 1; memcpy (file_buffer, &file_buffer [file_ptr], n); if (file_reverse) { if (file_bufferstart - bytestoread - file_bufferread >= 0) { fseek (file_file, -bytestoread - file_bufferread, SEEK_CUR); file_bufferstart += -bytestoread - file_bufferread; } else { bytestoread = (int) file_bufferstart - file_bufferread; fseek (file_file, 0, SEEK_SET); file_bufferstart = 0; memset (&file_buffer [n + bytestoread], 0, FILE_MAXLEN - (n + bytestoread)); } } bytesread = fread (&file_buffer [n], 1, bytestoread, file_file); file_bufferlen = file_bufferlen + bytesread - file_ptr; file_bufferread = bytesread; file_bufferstart += bytesread; if (file_reverse) { if (bytesread > 0) file_revertBuffer (n, n + bytesread - 1); } if (bytesread != file_ptr) { if (file_bufferlen >= 0 && file_bufferlen < FILE_MAXLEN) file_buffer [file_bufferlen] = 0; } file_ptr = 0; return 1; } /************************************************************************** Revert the file read order (forward/backward) Example: file_revert (); **************************************************************************/ void file_revert () { if (file_reverse) { fseek (file_file, -file_bufferread - file_ptr + file_bufferlen, SEEK_CUR); file_bufferstart += -file_bufferread - file_ptr + file_bufferlen; } file_bufferread = file_bufferlen - file_ptr; file_reverse = !file_reverse; file_ptr = FILE_MAXLEN; file_bufferlen = FILE_MAXLEN; file_fillBuffer (); } /************************************************************************** Set current position of the file pointer Example: file_setPosition (); **************************************************************************/ int file_setPosition (XLONG pointer, int whence) { if (fseek (file_file, 0, whence)) return 0; if (whence == 1) { if (!file_reverse) pointer += -FILE_MAXLEN + file_ptr; else pointer += -file_ptr; } while (pointer > 0x77777777) { if (fseek (file_file, 0x77777777, 1)) return 0; pointer -= 0x77777777; } while (pointer < -0x77777777) { if (fseek (file_file, -0x77777777, 1)) return 0; pointer += 0x77777777; } if (!fseek (file_file, (long) pointer, 1)) { file_bufferstart = ftell (file_file); file_bufferread = 0; file_ptr = FILE_MAXLEN; file_bufferlen = FILE_MAXLEN; file_fillBuffer (); return 1; } return 0; } /************************************************************************** Rewind file to an initial state to restart parsing **************************************************************************/ void file_rewind () { fseek (file_file, 0, SEEK_SET); file_reverse = 0; file_ptr = FILE_MAXLEN; file_bufferlen = FILE_MAXLEN; file_bufferstart = 0; file_fillBuffer (); file_line = 1; } /************************************************************************** Open file for parsing **************************************************************************/ int file_open (char *filename) { file_file = fopen (filename, "rb"); if (!file_file) return 0; file_rewind (); return 1; } /************************************************************************** Close file **************************************************************************/ int file_close () { if (file_file) return !fclose (file_file); else return 1; } int file_isChar (char *string) { int i = 0; while (string [i] != 0 && i < 256) { if (file_buffer [file_ptr] == string [i]) return 1; i ++; } return 0; } int file_isCommentStart () { int i, i2; for (i = 0; i < file_commentnum; i ++) { for (i2 = 0; i2 < (int) strlen (file_commentstart [i]); i2 ++) if (file_buffer [file_ptr + i2] != file_commentstart [i] [i2]) break; if (i2 == (int) strlen (file_commentstart [i])) { file_currentcomment = i; return 1; } } return 0; } int file_isCommentEnd () { int i, i2; i = file_currentcomment; for (i2 = 0; i2 < (int) strlen (file_commentend [i]); i2 ++) if (file_buffer [file_ptr + i2] != file_commentend [i] [i2]) break; if (i2 == (int) strlen (file_commentend [i])) { for (i = 0; i < i2; i ++) (void) file_nextChar (); return 1; } return 0; } /************************************************************************** Find the first occurance of string from the cursor and set cursor to the new position, this is quite fast! **************************************************************************/ int file_find (char *string) { char *result = NULL; int stringlen = strlen (string); if (stringlen >= FILE_MAXLEN / 2) return 0; while (result == NULL) { result = strstr (&file_buffer [file_ptr], string); if (result == NULL) { file_ptr = file_bufferlen - stringlen; if (file_bufferlen < FILE_MAXLEN) return 0; if (!file_fillBuffer ()) return 0; } else { file_ptr += (int) (result - (&file_buffer [file_ptr])); file_fillBuffer (); return 1; } } return 1; } int file_nextChar () { if (file_buffer [file_ptr] == '\n' && file_lastchar != 92) file_line ++; file_lastchar = file_buffer [file_ptr]; file_ptr ++; return file_fillBuffer (); } int file_tokenpos = 0; int file_fillToken (char *token, int tokenlen) { if (tokenlen == 0) return 0; if (file_tokenpos >= tokenlen - 1) { token [tokenlen - 1] = 0; return 0; } token [file_tokenpos ++] = file_buffer [file_ptr]; token [file_tokenpos] = 0; return 1; } /************************************************************************** Find the next token from the current cursor position and fill the token string. Use tokenlen to define a maximum length for token. **************************************************************************/ int file_nextToken (char *token, int tokenlen) { char last = 0; file_tokenpos = 0; if (tokenlen <= 0) return 1; token [0] = '\0'; if (file_buffer [file_ptr] == 0) { return 0; } while (1) { if (file_isChar (file_whitespace)) { if (!file_nextChar ()) return 0; } else if (file_isChar (file_separator)) { if (!file_fillToken (token, tokenlen)) return 1; if (!file_nextChar ()) return 0; return 1; } else if (file_isCommentStart ()) { do { if (!file_nextChar ()) return 0; } while (!file_isCommentEnd ()); } else if (file_isChar (file_quotes)) { file_currentquotes = file_buffer [file_ptr]; if (!file_quoteremove) if (!file_fillToken (token, tokenlen)) /* opening quotes */ return 1; last = 0; while (1) { last = file_buffer [file_ptr]; if (!file_nextChar ()) return 0; if (file_buffer [file_ptr] == file_currentquotes && last != '\\') { if (!file_quoteremove) if (!file_fillToken (token, tokenlen)) /* closing quotes */ return 1; if (!file_nextChar ()) return 0; return 1; } if (file_buffer [file_ptr] != '\\') { if (last != '\\') { if (!file_fillToken (token, tokenlen)) return 1; } else { if (file_buffer [file_ptr] == 'n') file_buffer [file_ptr] = '\n'; else if (file_buffer [file_ptr] == 't') file_buffer [file_ptr] = '\t'; else if (file_buffer [file_ptr] == 'r') file_buffer [file_ptr] = '\r'; else if (file_buffer [file_ptr] == 'a') file_buffer [file_ptr] = '\a'; else if (file_buffer [file_ptr] == '\\') file_buffer [file_ptr] = '\\'; if (!file_fillToken (token, tokenlen)) return 1; } } } } else { while (1) { if (!file_fillToken (token, tokenlen)) return 1; if (!file_nextChar ()) return 0; if (file_isChar (file_whitespace)) return 1; if (file_isChar (file_separator)) return 1; if (file_isCommentStart ()) return 1; if (file_isChar (file_quotes)) return 1; } } } return 1; } #endif gl-117-1.3.2/src/fileloader.h0000644000175000017500000001446310145416156014752 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ // This is a low level library to split text files into tokens. #ifndef IS_FILELOADER_H #define IS_FILELOADER_H /************************************************************************** This is a low level library to split text files into tokens. Customize strings for quotes, whitespace and comments. Then parse one token after each other calling file_nextToken() or set the file cursor to a new position calling file_find(mystr) Documentation notes: - all int-functions return 0 on error/EOF, 1 on success - all documented functions are public, the rest is private Example to parse MEA-files: char token [256]; file_setWhitespace (" \t\r\n-="); file_setQuotes ("\'{}"); file_addComment ("$", "\n"); file_open ("test.mea"); while (file_find ("[MEA_")) // search for string [MEA_ { file_nextToken (token, 256); // read the [MEA_ token printf ("%s\n", token); // and print it on stdout } file_rewind (); // again from the beginning while (file_nextToken (token, 256)) // read every token { printf ("%s\n", token); // print out every token } **************************************************************************/ //#define _LARGEFILE_SOURCE #define _LARGEFILE_SOURCE64 #define _FILE_OFFSET_BITS 64 // we should use __long here!!! #define XLONG long #define FILE_MAXCOMMENTS 10 /* maximum number of comment strings */ #define FILE_MAXLEN 4096 /* maximum length of the file buffer */ extern int file_quoteremove; /* 1: remove quotes from tokens */ extern int file_ptr; /* file_buffer pointer to current char = "file cursor" */ extern int file_reverse; /* read only!!! */ /************************************************************************** Init data structure Example: file_init (); **************************************************************************/ extern void file_init (); extern void file_initComments (); /************************************************************************** Revert the file read order (forward/backward) Example: file_revert (); **************************************************************************/ extern void file_revert (); /************************************************************************** Get current position of the file pointer Example: file_getPosition (); **************************************************************************/ extern XLONG file_getPosition (); /************************************************************************** Set current position of the file pointer Example: file_setPosition (); **************************************************************************/ extern int file_setPosition (); /************************************************************************** Get current line of the file Example: file_getLine (); **************************************************************************/ extern int file_getLine (); /************************************************************************** Set the whitespace chars for this file Example: file_setWhitespace (" \n\t"); **************************************************************************/ extern void file_setWhitespace (char *string); /************************************************************************** Set the separator chars for this file Example: file_setSeparator (",;"); **************************************************************************/ extern void file_setSeparator (char *string); /************************************************************************** Add comment strings for this file Example language C++: file_addComment ("//", "\n"); **************************************************************************/ extern void file_addComment (char *startstring, char *endstring); /************************************************************************** Set the quote chars for string in this file Example: file_setQuotes ("\'\""); **************************************************************************/ extern void file_setQuotes (char *string); /************************************************************************** Rewind file to an initial state to restart parsing **************************************************************************/ extern void file_rewind (); /************************************************************************** Open file for parsing **************************************************************************/ extern int file_open (char *filename); /************************************************************************** Close file **************************************************************************/ extern int file_close (); /************************************************************************** Find the first occurance of string from the cursor and set cursor to the new position, this is quite fast! **************************************************************************/ extern int file_find (char *string); /************************************************************************** Find the next token from the current cursor position and fill the token string. Use tokenlen to define a maximum length for token. **************************************************************************/ extern int file_nextToken (char *token, int tokenlen); extern int file_nextChar (); #endif gl-117-1.3.2/src/gl.cpp0000644000175000017500000003051610145416156013576 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a collection of GL features. */ #ifndef IS_GL_H #include #include #include #include #include "gl.h" /**************************************************************************** OpenGL ****************************************************************************/ GL::GL () { antialiasing = false; zbuffer = false; alphablending = false; shading = 0; gllistnr = 0; gllightnr = 0; texnum = -1; aktlist = 0; fogcolor [0] = 0.5; fogcolor [1] = 0.5; fogcolor [2] = 0.5; foglum = 1.0; } GL::~GL () { } void GL::clearScreen () { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } void GL::drawScreen () { glutSwapBuffers (); } void GL::rotate (int x, int y, int z) { glRotatef (z, 0.0f, 0.0f, 1.0f); glRotatef (y, 0.0f, 1.0f, 0.0f); glRotatef (x, 1.0f, 0.0f, 0.0f); } GLuint GL::genListSphere (GLint slices, GLint stacks, float radius) { GLUquadricObj *quadObj; quadObj = gluNewQuadric (); glNewList (++ gllistnr, GL_COMPILE); gluSphere (quadObj, radius, slices, stacks); glEndList (); return gllistnr; } void GL::setList (GLuint listnr) { glCallList (listnr); } void GL::genList (int *list) { *list = ++ aktlist; glNewList (aktlist, GL_COMPILE_AND_EXECUTE); } int GL::genTexture () { return 1; } void GL::enableLinearTexture (int texnum) { glBindTexture (GL_TEXTURE_2D, texnum); if (!tex [texnum]->mipmap) glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); else glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); } void GL::disableLinearTexture (int texnum) { glBindTexture (GL_TEXTURE_2D, texnum); if (!tex [texnum]->mipmap) glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); else glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); } CTexture *GL::getTextureTGA (char *fname) { int i; for (i = 0; i <= texnum; i ++) { if (!strcmp (fname, tex [i]->name)) break; } if (i <= texnum) return tex [i]; return NULL; } CTexture *GL::genTextureTGA (char *fname, int quality, int alphatype, int mipmap2, bool alpha) { char buf [STDSIZE]; CTexture *mytex; if ((mytex = getTextureTGA (fname)) != NULL) { return mytex; } texnum ++; glBindTexture (GL_TEXTURE_2D, texnum); tex [texnum] = new CTexture (); if (!tex [texnum]->loadFromTGA (fname, quality, alphatype, mipmap2)) { sprintf (buf, "Texture %s not found", fname); display (buf, LOG_ERROR); // exit (EXIT_LOADFILE); // If texture cannot be loaded, allocate dummy tex buffer tex [texnum]->width = 8; tex [texnum]->height = 8; int buflen = tex [texnum]->width * tex [texnum]->height * 4; tex [texnum]->data = (unsigned char *) malloc (buflen); if (tex [texnum] == NULL) error_outofmemory (); memset (tex [texnum]->data, 0, buflen); } tex [texnum]->alpha = alpha; tex [texnum]->textureID = texnum; if (!antialiasing) disableLinearTexture (texnum); else enableLinearTexture (texnum); if (!mipmap2) glTexImage2D (GL_TEXTURE_2D, 0, 4, tex [texnum]->width, tex [texnum]->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, tex [texnum]->data); else gluBuild2DMipmaps (GL_TEXTURE_2D, 4, tex [texnum]->width, tex [texnum]->height, GL_RGBA, GL_UNSIGNED_BYTE, tex [texnum]->data); return tex [texnum]; } float GL::getTexLight () { return tex [akttex]->texlight; } void GL::enableAntiAliasing () { glEnable (GL_LINE_SMOOTH); glEnable (GL_POINT_SMOOTH); glEnable (GL_POLYGON_SMOOTH); glHint (GL_LINE_SMOOTH_HINT, GL_FASTEST); glHint (GL_POINT_SMOOTH_HINT, GL_FASTEST); glHint (GL_POLYGON_SMOOTH_HINT, GL_FASTEST); antialiasing = true; } void GL::disableAntiAliasing () { glDisable (GL_LINE_SMOOTH); glDisable (GL_POINT_SMOOTH); glDisable (GL_POLYGON_SMOOTH); antialiasing = false; } void GL::enableAlphaBlending () { glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); alphablending = true; } void GL::disableAlphaBlending () { glDisable (GL_BLEND); alphablending = false; } void GL::enableTextures (int num) { akttex = num; glBindTexture (GL_TEXTURE_2D, num); glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /* GL_CLAMP or GL_REPEAT? */ glEnable (GL_TEXTURE_2D); } void GL::enableLighting () { glEnable (GL_LIGHTING); } void GL::enableZBuffer () { glEnable (GL_DEPTH_TEST); glDepthFunc (GL_LEQUAL); glDepthRange (10.0, -10.0); zbuffer = true; } void GL::disableZBuffer () { glDisable (GL_DEPTH_TEST); zbuffer = false; } void GL::shadeFlat () { glShadeModel (GL_FLAT); shading = 1; } void GL::shadeSmooth () { glShadeModel (GL_SMOOTH); shading = 2; } void GL::enableFog (float view) { float fcol [3]; fcol [0] = fogcolor [0] * foglum; fcol [1] = fogcolor [1] * foglum; fcol [2] = fogcolor [2] * foglum; glEnable (GL_FOG); glFogfv (GL_FOG_COLOR, fcol); glFogf (GL_FOG_DENSITY, 0.1); glFogi (GL_FOG_MODE, GL_LINEAR); // possible alternatives: // glFogf (GL_FOG_DENSITY, 0.017 * 100 / view); // glFogi (GL_FOG_MODE, GL_EXP2); if (quality <= 5) glHint (GL_FOG_HINT, GL_FASTEST); else glHint (GL_FOG_HINT, GL_NICEST); glFogf (GL_FOG_START, 1.0 * GLOBALSCALE); glFogf (GL_FOG_END, view * GLOBALSCALE); } // Frustum Culling according to OpenGL Page void GL::extractFrustum() { float proj[16]; float modl[16]; float clip[16]; float t; // extract transformation matrices glGetFloatv( GL_PROJECTION_MATRIX, proj ); glGetFloatv( GL_MODELVIEW_MATRIX, modl ); clip[0] = modl[0] * proj[0] + modl[1] * proj[4] + modl[2] * proj[8] + modl[3] * proj[12]; clip[1] = modl[0] * proj[1] + modl[1] * proj[5] + modl[2] * proj[9] + modl[3] * proj[13]; clip[2] = modl[0] * proj[2] + modl[1] * proj[6] + modl[2] * proj[10] + modl[3] * proj[14]; clip[3] = modl[0] * proj[3] + modl[1] * proj[7] + modl[2] * proj[11] + modl[3] * proj[15]; clip[4] = modl[4] * proj[0] + modl[5] * proj[4] + modl[6] * proj[8] + modl[7] * proj[12]; clip[5] = modl[4] * proj[1] + modl[5] * proj[5] + modl[6] * proj[9] + modl[7] * proj[13]; clip[6] = modl[4] * proj[2] + modl[5] * proj[6] + modl[6] * proj[10] + modl[7] * proj[14]; clip[7] = modl[4] * proj[3] + modl[5] * proj[7] + modl[6] * proj[11] + modl[7] * proj[15]; clip[8] = modl[8] * proj[0] + modl[9] * proj[4] + modl[10] * proj[8] + modl[11] * proj[12]; clip[9] = modl[8] * proj[1] + modl[9] * proj[5] + modl[10] * proj[9] + modl[11] * proj[13]; clip[10] = modl[8] * proj[2] + modl[9] * proj[6] + modl[10] * proj[10] + modl[11] * proj[14]; clip[11] = modl[8] * proj[3] + modl[9] * proj[7] + modl[10] * proj[11] + modl[11] * proj[15]; clip[12] = modl[12] * proj[0] + modl[13] * proj[4] + modl[14] * proj[8] + modl[15] * proj[12]; clip[13] = modl[12] * proj[1] + modl[13] * proj[5] + modl[14] * proj[9] + modl[15] * proj[13]; clip[14] = modl[12] * proj[2] + modl[13] * proj[6] + modl[14] * proj[10] + modl[15] * proj[14]; clip[15] = modl[12] * proj[3] + modl[13] * proj[7] + modl[14] * proj[11] + modl[15] * proj[15]; // extract numbers for the RIGHT plane frustum[0][0] = clip[3] - clip[0]; frustum[0][1] = clip[7] - clip[4]; frustum[0][2] = clip[11] - clip[8]; frustum[0][3] = clip[15] - clip[12]; // normalize the result t = sqrt(frustum[0][0] * frustum[0][0] + frustum[0][1] * frustum[0][1] + frustum[0][2] * frustum[0][2]); frustum[0][0] /= t; frustum[0][1] /= t; frustum[0][2] /= t; frustum[0][3] /= t; // extract the numbers for the LEFT plane frustum[1][0] = clip[3] + clip[0]; frustum[1][1] = clip[7] + clip[4]; frustum[1][2] = clip[11] + clip[8]; frustum[1][3] = clip[15] + clip[12]; // normalize the result t = sqrt(frustum[1][0] * frustum[1][0] + frustum[1][1] * frustum[1][1] + frustum[1][2] * frustum[1][2]); frustum[1][0] /= t; frustum[1][1] /= t; frustum[1][2] /= t; frustum[1][3] /= t; // extract the BOTTOM plane frustum[2][0] = clip[3] + clip[1]; frustum[2][1] = clip[7] + clip[5]; frustum[2][2] = clip[11] + clip[9]; frustum[2][3] = clip[15] + clip[13]; // normalize the result t = sqrt(frustum[2][0] * frustum[2][0] + frustum[2][1] * frustum[2][1] + frustum[2][2] * frustum[2][2]); frustum[2][0] /= t; frustum[2][1] /= t; frustum[2][2] /= t; frustum[2][3] /= t; // extract the TOP plane frustum[3][0] = clip[3] - clip[1]; frustum[3][1] = clip[7] - clip[5]; frustum[3][2] = clip[11] - clip[9]; frustum[3][3] = clip[15] - clip[13]; // normalize the result t = sqrt(frustum[3][0] * frustum[3][0] + frustum[3][1] * frustum[3][1] + frustum[3][2] * frustum[3][2]); frustum[3][0] /= t; frustum[3][1] /= t; frustum[3][2] /= t; frustum[3][3] /= t; // extract the FAR plane frustum[4][0] = clip[3] - clip[2]; frustum[4][1] = clip[7] - clip[6]; frustum[4][2] = clip[11] - clip[10]; frustum[4][3] = clip[15] - clip[14]; // normalize the result t = sqrt(frustum[4][0] * frustum[4][0] + frustum[4][1] * frustum[4][1] + frustum[4][2] * frustum[4][2]); frustum[4][0] /= t; frustum[4][1] /= t; frustum[4][2] /= t; frustum[4][3] /= t; // extract the NEAR plane frustum[5][0] = clip[3] + clip[2]; frustum[5][1] = clip[7] + clip[6]; frustum[5][2] = clip[11] + clip[10]; frustum[5][3] = clip[15] + clip[14]; // normalize the result t = sqrt(frustum[5][0] * frustum[5][0] + frustum[5][1] * frustum[5][1] + frustum[5][2] * frustum[5][2]); frustum[5][0] /= t; frustum[5][1] /= t; frustum[5][2] /= t; frustum[5][3] /= t; } bool GL::isPointInFrustum( float x, float y, float z ) { int i; for (i = 0; i < 6; i ++) if (frustum[i][0] * x + frustum[i][1] * y + frustum[i][2] * z + frustum[i][3] <= 0) return false; return true; } bool GL::isSphereInFrustum( float x, float y, float z, float radius ) { int i; for (i = 0; i < 6; i ++) if (frustum[i][0] * x + frustum[i][1] * y + frustum[i][2] * z + frustum[i][3] <= -radius) return false; return true; } bool GL::isCubeInFrustum( float x, float y, float z, float size ) { int i; for (i = 0; i < 6; i ++) { if (frustum[i][0] * (x - size) + frustum[i][1] * (y - size) + frustum[i][2] * (z - size) + frustum[i][3] > 0) continue; if (frustum[i][0] * (x + size) + frustum[i][1] * (y - size) + frustum[i][2] * (z - size) + frustum[i][3] > 0) continue; if (frustum[i][0] * (x - size) + frustum[i][1] * (y + size) + frustum[i][2] * (z - size) + frustum[i][3] > 0) continue; if (frustum[i][0] * (x + size) + frustum[i][1] * (y + size) + frustum[i][2] * (z - size) + frustum[i][3] > 0) continue; if (frustum[i][0] * (x - size) + frustum[i][1] * (y - size) + frustum[i][2] * (z + size) + frustum[i][3] > 0) continue; if (frustum[i][0] * (x + size) + frustum[i][1] * (y - size) + frustum[i][2] * (z + size) + frustum[i][3] > 0) continue; if (frustum[i][0] * (x - size) + frustum[i][1] * (y + size) + frustum[i][2] * (z + size) + frustum[i][3] > 0) continue; if (frustum[i][0] * (x + size) + frustum[i][1] * (y + size) + frustum[i][2] * (z + size) + frustum[i][3] > 0) continue; return false; } return true; } #endif gl-117-1.3.2/src/gl.h0000644000175000017500000000472110145416156013242 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a collection of GL features. */ #ifndef IS_GL_H #define IS_GL_H #include "common.h" // ok #include "model.h" // ok class GL { private: GLint texnum; // highest used texture number int akttex; // current texture number CTexture *tex [200]; // support max 200 textures GLuint gllistnr, gllightnr; // highest used list number int aktlist; // current list number public: bool alphablending, zbuffer, antialiasing; // features turned on int shading; float fogcolor [3]; float foglum; float frustum [6] [4]; // the six frustum (cone) planes GL (); ~GL (); void clearScreen (); void drawScreen (); void rotate (int x, int y, int z); GLuint genListSphere (GLint slices, GLint stacks, float radius); void setList (GLuint listnr); void genList (int *list); int genTexture (); void enableLinearTexture (int texnum); void disableLinearTexture (int texnum); CTexture *getTextureTGA (char *fname); CTexture *genTextureTGA (char *fname, int quality, int alphatype, int mipmap2, bool alpha); float getTexLight (); void enableAntiAliasing (); void disableAntiAliasing (); void enableAlphaBlending (); void disableAlphaBlending (); void enableTextures (int num); void enableLighting (); void enableZBuffer (); void disableZBuffer (); void shadeFlat (); void shadeSmooth (); void enableFog (float view); void extractFrustum (); bool isPointInFrustum (float x, float y, float z); bool isSphereInFrustum (float x, float y, float z, float radius); bool isCubeInFrustum (float x, float y, float z, float size); }; extern GL *gl; #endif gl-117-1.3.2/src/glland.cpp0000644000175000017500000027364110145416231014437 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a random landscape generator. */ #ifndef IS_GLLAND_H #include "glland.h" #include "main.h" #include "mathtab.h" #include "gl.h" #include "common.h" #include const float zoomz = 1.0/(100.0*MAXX); const float hh = (float) 1 / (float) MAXX; const float zoomz2 = 32768.0 * zoomz; const float hh2 = 2.0*hh; CTexture *texgrass, *texrocks, *texwater, *textree, *textree2, *textree3, *texcactus1, *texredstone; CTexture *textreeu, *textreeu2, *textreeu3, *textreeu4, *textreeu5, *texcactusu1; CTexture *textree4, *textree5, *texearth, *texsand, *texredsand, *texgravel1; CTexture *texglitter1; VertexArray *va; VertexArray vertexarrayquadstrip; VertexArray vertexarrayquad [30]; VertexArray vertexarraytriangle [30]; VertexArray vertexarrayglitter [2]; class IndexCounter { public: int index [100]; int n; IndexCounter () { init (); } ~IndexCounter () { } void init () { n = 0; memset (index, 0, 100 * sizeof (int)); } int get (int index1) { int i; for (i = 0; i < n; i ++) { if (index [i] == index1) return i; } index [n] = index1; n ++; return n - 1; } }; IndexCounter ic; void GLLandscape::norm (float *c) { float n; n = 1.0/sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*c[2]); c[0] *= n; c[1] *= n; c[2] *= n; } void GLLandscape::normalcrossproduct( float* a, float* b, float*c ) { c[0] = a[1]*b[2] - a[2]*b[1]; c[1] = a[2]*b[0] - a[0]*b[2]; c[2] = a[0]*b[1] - a[1]*b[0]; norm (c); } int GLLandscape::selectColor (int x, int y) { return f [x] [y]; /* if (f [x] [y] == GRASS) return 0; else if (f [x] [y] >= CONIFEROUSWOODS1 && f [x] [y] <= MIXEDWOODS3) return 1; else if (f [x] [y] == ROCKS) return 2; else if (f [x] [y] == GLACIER) return 3; else if (f [x] [y] >= DWARFPINES1 && f [x] [y] <= BUSHES3) return 1; else if (f [x] [y] == WATER) return 5; else if (f [x] [y] == SHALLOWWATER) return 4; else if (f [x] [y] == DEEPWATER) return 6; else if (f [x] [y] == ROCKS2) return 7; else if (f [x] [y] == XSHALLOWWATER) return 8; else if (f [x] [y] == XDEEPWATER) return 9; else if (f [x] [y] == MOONSAND) return 10; else if (f [x] [y] == REDSTONE) return 11; else if (f [x] [y] == REDSAND || f [x] [y] == REDTREE0) return 12; else if (f [x] [y] == DESERTSAND || f [x] [y] == CACTUS0) return 13; else if (f [x] [y] == GREYSAND) return 14; else if (f [x] [y] == GRAVEL) return 15; else if (f [x] [y] == TOWN) return 16; else return 0;*/ } void GLLandscape::precalculate () { int i, i2, i3, i4, x, z; float no[3]; float nw[3]; float so[3]; float sw[3]; float a[3]; float c[3]; // initialize dynamic light mask memset (dl, 0, (MAXX + 1) * (MAXX + 1)); norm (lv); // normalize light vector lightfac = (0.002 * contrast + 1.0) * 0.001 / 256.0; // generate greyish material values for night if necessary float matgrey [MAXMATERIAL] [4]; if (!day) { float greyfactor = 0.75; // 0 = grey, 1 = no modification for (i = 0; i < MAXMATERIAL; i ++) { float mid = (mat [i] [0] + mat [i] [1] + mat [i] [2]) / 3.0F; matgrey [i] [0] = mid + (mat [i] [0] - mid) * greyfactor; matgrey [i] [1] = mid + (mat [i] [1] - mid) * greyfactor; matgrey [i] [2] = mid + (mat [i] [2] - mid) * greyfactor; } } // create coarse height map for (x = 0; x <= MAXX - 4; x += 4) for (z = 0; z <= MAXX - 4; z += 4) { unsigned short max = 0, min = 65535; for (i = 0; i <= 3; i ++) for (i2 = 0; i2 <= 3; i2 ++) { if (hw [x + i] [z + i2] > max) max = hw [x + i] [z + i2]; if (hw [x + i] [z + i2] < min) min = hw [x + i] [z + i2]; } hcmax [x / 4] [z / 4] = max; hcmin [x / 4] [z / 4] = min; } // set the colors of the landscape hastowns = false; float mzoom = zoomz; for (x=0; x<=MAXX; x++) for (z=0; z<=MAXX; z++) { int a; a = f [x] [z]; if (type == 2 && a == 4) { a = 11; } else if (type == 4 && a == 4) { a = 2; } else if (a == 16) { hastowns = true; } if (day) { r [x] [z] = (unsigned char) (mat [a] [0] * 255.9); g [x] [z] = (unsigned char) (mat [a] [1] * 255.9); b [x] [z] = (unsigned char) (mat [a] [2] * 255.9); } else { r [x] [z] = (unsigned char) (matgrey [a] [0] * 255.9); g [x] [z] = (unsigned char) (matgrey [a] [1] * 255.9); b [x] [z] = (unsigned char) (matgrey [a] [2] * 255.9); } } long sum; // smooth the colors (obsolete) /* long g3[3][3]={{0,1,0}, {1,4,1}, {0,1,0}}; for (i = 1; i < MAXX; i ++) for (i2 = 1; i2 < MAXX; i2 ++) { sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3[i3][i4] * r[i+i3-1][i2+i4-1]; } sum /= 8; lg[i][i2]=sum; } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { r [i] [i2] = (unsigned char) lg [i] [i2]; } for (i = 1; i < MAXX; i ++) for (i2 = 1; i2 < MAXX; i2 ++) { sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3[i3][i4] * g[i+i3-1][i2+i4-1]; } sum /= 8; lg[i][i2]=sum; } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { g [i] [i2] = (unsigned char) lg [i] [i2]; } for (i = 1; i < MAXX; i ++) for (i2 = 1; i2 < MAXX; i2 ++) { float sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3[i3][i4] * b[i+i3-1][i2+i4-1]; } sum /= 8; lg[i][i2]=sum; } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { b [i] [i2] = (unsigned char) lg [i] [i2]; }*/ // Set the height mask for the lowest sunrays touching the landscape's surface // This is just an approximation presuming the sun is a vertical line float m1 = mzoom / hh; float ih = tan ((sungamma + 5) * PI / 180) / m1; // 0 degree vertical sun radius for (x = 0; x <= MAXX; x ++) { float rayheight = hw [x] [MAXX]; for (z = MAXX; z >= 0; z --) { unsigned short maxheight = (int) rayheight; if (rayheight < hw [x] [z]) { rayheight = hw [x] [z]; maxheight = hw [x] [z]; } rayheight -= ih; hray [x] [z] = maxheight; } } // precalculate water light, always the same angle int nlwater = 1200 - (int) (1000.0 * 2.0 * fabs ((90.0 - sungamma) * PI / 180.0) / PI); // precalculate a height average int midheight = (highestpoint + lowestpoint) / 2; // set minimum ambient light int minambient = (int) (100.0 + sungamma * 4); if (!day) minambient = 100; if (minambient > 350) minambient = 350; // Set the luminance of the landscape for (x = 0; x <= MAXX; x ++) for (z = 0; z <= MAXX; z ++) { int xm1 = GETCOORD(x - 1); int xp1 = GETCOORD(x + 1); int zm1 = GETCOORD(z - 1); int zp1 = GETCOORD(z + 1); // Calculate the normal vectors a[0] = 0; a[1] = (float) (hw[x][zm1] - hw[x][z]) * mzoom; a[2] = -hh; c[0] = -hh; c[1] = (float) (hw[xm1][z] - hw[x][z]) * mzoom; c[2] = 0; normalcrossproduct( a, c, nw ); a[0] = hh; a[1] = (float) (hw[xp1][z] - hw[x][z]) * mzoom; a[2] = 0; c[0] = 0; c[1] = (float) (hw[x][zm1] - hw[x][z]) * mzoom; c[2] = -hh; normalcrossproduct( a, c, no ); a[0] = 0; a[1] = (float) (hw[x][zp1] - hw[x][z]) * mzoom; a[2] = hh; c[0] = hh; c[1] = (float) (hw[xp1][z] - hw[x][z]) * mzoom; c[2] = 0; normalcrossproduct( a, c, so ); a[0] = -hh; a[1] = (float) (hw[xm1][z] - hw[x][z]) * mzoom; a[2] = 0; c[0] = 0; c[1] = (float) (hw[x][zp1] - hw[x][z]) * mzoom; c[2] = hh; normalcrossproduct( a, c, sw ); float normx = (no[0] + nw[0] + so[0] + sw[0]) / 4.0; float normy = (no[1] + nw[1] + so[1] + sw[1]) / 4.0; float normz = (no[2] + nw[2] + so[2] + sw[2]) / 4.0; // Calculate the light hitting the surface float gamma = (float) acos (normx * lv [0] + normy * lv [1] + normz * lv [2]); // angle if (!isWater (f [x] [z])) { nl [x] [z] = 1200 - (int) (900.0 * 2.0 * fabs (gamma) / PI); // calculate light if (type == LAND_CANYON) // in canyons more ambient light in higher regions nl [x] [z] += (h [x] [z] - midheight) / 40; // typical max height diff is 10000 } else { nl [x] [z] = nlwater; // precalculated light (above) } if (nl [x] [z] < minambient) // minimum ambient light nl [x] [z] = minambient; // Check whether this point is in the shadow of some mountain if (hw [x] [z] < hray [x] [z]) { nl [x] [z] /= 2; if (nl [x] [z] < minambient) nl [x] [z] = minambient; // minimum ambient light } } // Smooth the luminance (very important) long g3_1[3][3]={{1,2,1}, {2,4,2}, {1,2,1}}; for (i = 1; i <= MAXX - 1; i ++) { for (i2 = 1; i2 <= MAXX - 1; i2 ++) { sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3_1[i3][i4] * nl[i+i3-1][i2+i4-1]; } sum /= 16; lg[i][i2] = (unsigned short) sum; } } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { nl [i] [i2] = lg [i] [i2]; } // Assign textures: tex1 = quad texture // if tex2 defined: tex1 = upper triangle texture, tex2 = lower triangle texture for (i = 0; i < MAXX; i ++) for (i2 = 0; i2 < MAXX; i2 ++) { drawrule [i] [i2] = 0; int f1 = f [i] [i2], f2 = f [i + 1] [i2], f3 = f [i] [i2 + 1], f4 = f [i + 1] [i2 + 1]; if (isType (f1, GRASS)) { tex1 [i] [i2] = texgrass->textureID; } else if (isWoods (f1) || isType (f1, MOONSAND) || isType (f1, REDSAND) || isType (f1, REDTREE0) || isType (f1, CACTUS0) || isType (f1, GREYSAND)) { tex1 [i] [i2] = texredsand->textureID; } else if (isType (f1, GRAVEL)) { tex1 [i] [i2] = texgravel1->textureID; } else if (isWater (f1)) { if (type == 0 || type == 2) tex1 [i] [i2] = texgrass->textureID; else tex1 [i] [i2] = 0xFF; } else if (isType (f1, ROCKS) || isType (f1, ROCKS2)) { tex1 [i] [i2] = texrocks->textureID; } else if (isType (f1, REDSTONE)) { tex1 [i] [i2] = texredstone->textureID; } else if (isType (f1, DESERTSAND)) { tex1 [i] [i2] = texsand->textureID; } else { tex1 [i] [i2] = 0xFF; } if (!isGlacier (f1) && isGlacier (f2) && isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = 0xFF; } if (isGlacier (f1) && !isGlacier (f2) && !isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (!isGlacier (f1) && !isGlacier (f2) && !isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (isGlacier (f1) && isGlacier (f2) && isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = 0xFF; tex2 [i] [i2] = texrocks->textureID; } if (isGlacier (f1) && !isGlacier (f2) && isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = 0xFF; } if (!isGlacier (f1) && isGlacier (f2) && !isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (!isGlacier (f1) && !isGlacier (f2) && isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (isGlacier (f1) && isGlacier (f2) && !isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = 0xFF; tex2 [i] [i2] = texrocks->textureID; } } } // Get height over landscape/water, no interpolation (fast) float GLLandscape::getMinHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hcmin[mx/4][mz/4]*zoomz - zoomz2)); } // Get height over landscape/water, no interpolation (fast) float GLLandscape::getMaxHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hcmax[mx/4][mz/4]*zoomz - zoomz2)); } // Get height over landscape/water, no interpolation (fast) float GLLandscape::getHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hw[mx][mz]*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight2 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 1; mz1 -= mz1 & 1; int mx2 = mx1 + 2; int mz2 = mz1 + 2; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2/4*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight3 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 % 3; mz1 -= mz1 % 3; int mx2 = mx1 + 3; int mz2 = mz1 + 3; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2/9*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight4 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 3; mz1 -= mz1 & 3; int mx2 = mx1 + 4; int mz2 = mz1 + 4; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2/16*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight (float x, float z) { if (gridstep == 2) return getExactHeight2 (x, z); else if (gridstep == 3) return getExactHeight3 (x, z); else if (gridstep == 4) return getExactHeight4 (x, z); float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); int mx2 = mx1 + 1; int mz2 = mz1 + 1; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2*zoomz - zoomz2)); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight2 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 1; mz1 -= mz1 & 1; int mx2 = mx1 + 2; int mz2 = mz1 + 2; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2/4*zoomz - zoomz2); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight3 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 % 3; mz1 -= mz1 % 3; int mx2 = mx1 + 3; int mz2 = mz1 + 3; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2/9*zoomz - zoomz2); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight4 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 3; mz1 -= mz1 & 3; int mx2 = mx1 + 4; int mz2 = mz1 + 4; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2/16*zoomz - zoomz2); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight (float x, float z) { if (gridstep == 2) return getExactLSHeight2 (x, z); else if (gridstep == 3) return getExactLSHeight3 (x, z); else if (gridstep == 4) return getExactLSHeight4 (x, z); float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); int mx2 = mx1 + 1; int mz2 = mz1 + 1; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2*zoomz - zoomz2); } // Get height of lowest sunray, no interpolation float GLLandscape::getRayHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hray[mx][mz]*zoomz - zoomz2)); } // Get height of lowest sunray, linear interpolation float GLLandscape::getExactRayHeight (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mx2 = mx1 + 1; int mz1 = (int) floor (mz); int mz2 = mz1 + 1; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hray[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hray[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hray[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hray[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2*zoomz - zoomz2)); } // Draw tree using two static quads (high quality, slow) void GLLandscape::drawTree (float x, float y, float htree, float wtree, int phi) { float ht = getExactLSHeight (x, y); phi = 359 - phi; if (phi < 0 || phi > 359) { printf ("Test: maybe a problem in drawTree!"); } // Draw tree using a single rotated quad (low quality, fast) float ex1 = cosi [phi] * wtree, ey1 = sine [phi] * wtree; float ex2 = -ex1, ey2 = -ey1; int myticker; float zy = 0; if (weather == 1) // stormy weather { myticker = (int) (0.05 / htree * lsticker / timestep + 1000 * wtree + (x + y) * 50); if (myticker != 0) myticker %= 360; zy = 0.2 * (2.0 + sine [myticker]); } if (texturetree1 >= 0) { // glBindTexture (GL_TEXTURE_2D, texturetree1); va = &vertexarrayquad [texturetree1 + 1]; va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 1); va->glVertex3f (hh2*(ex1+x), ht + htree, hh2*((ey1+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 1); va->glVertex3f (hh2*(ex2+x), ht + htree, hh2*((ey2+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 0); va->glVertex3f (hh2*(ex2+x), ht, hh2*((ey2+y))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 0); va->glVertex3f (hh2*(ex1+x), ht, hh2*((ey1+y))); } if (quality >= 2 && texturetree2 >= 0) { wtree *= 1.4F; ht += htree * 0.4F; zy *= 0.4F; phi += 45; if (phi >= 360) phi -= 360; ex1 = cosi [phi] * wtree; ey1 = sine [phi] * wtree; ex2 = -ex1; ey2 = -ey1; phi += 90; if (phi >= 360) phi -= 360; float ex3 = cosi [phi] * wtree, ey3 = sine [phi] * wtree; float ex4 = -ex3, ey4 = -ey3; // glBindTexture (GL_TEXTURE_2D, texturetree2); va = &vertexarrayquad [texturetree2 + 1]; va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 1); va->glVertex3f (hh2*(ex1+x), ht, hh2*((ey1+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 1); va->glVertex3f (hh2*(ex3+x), ht, hh2*((ey3+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 0); va->glVertex3f (hh2*(ex2+x), ht, hh2*((ey2+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 0); va->glVertex3f (hh2*(ex4+x), ht, hh2*((ey4+y+zy))); } } float xtree [256]; float ytree [256]; // Draw tree using two static quads (high quality, slow) void GLLandscape::drawTreeQuad (int x, int y, int phi, bool hq) { int i; int rotval = (x + 2 * y) & 127; int xs = getCoord (x); int ys = getCoord (y); if (f [xs] [ys] >= CONIFEROUSWOODS0 && f [xs] [ys] <= CONIFEROUSWOODS3) { texturetree1 = textree2->textureID; if (hq) texturetree2 = textreeu2->textureID; else texturetree2 = -1; int trees = CONIFEROUSWOODS3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0035 + 0.0002 * ((3 * y + 2 * x) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 70, phi); } } else if (f [xs] [ys] >= DECIDUOUSWOODS0 && f [xs] [ys] <= DECIDUOUSWOODS3) { texturetree1 = textree->textureID; if (hq) texturetree2 = textreeu->textureID; else texturetree2 = -1; int trees = DECIDUOUSWOODS3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0035 + 0.0003 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 60, phi); } } else if (f [xs] [ys] >= MIXEDWOODS0 && f [xs] [ys] <= MIXEDWOODS3) { texturetree1 = textree2->textureID; if (hq) texturetree2 = textreeu2->textureID; else texturetree2 = -1; int trees = MIXEDWOODS3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < 2; i ++) { float htree = 0.0035 + 0.0002 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 70, phi); } texturetree1 = textree5->textureID; if (hq) texturetree2 = textreeu5->textureID; else texturetree2 = -1; for (i = 2; i < 3; i ++) { float htree = 0.0025 + 0.00015 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 60, phi); } texturetree1 = textree->textureID; if (hq) texturetree2 = textreeu->textureID; else texturetree2 = -1; for (i = 3; i < trees; i ++) { float htree = 0.0035 + 0.0003 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 60, phi); } } else if (f [xs] [ys] >= DWARFPINES0 && f [xs] [ys] <= DWARFPINES3) { texturetree1 = textree3->textureID; if (hq) texturetree2 = textreeu3->textureID; else texturetree2 = -1; int trees = DWARFPINES3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0015 + 0.00015 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 150, phi); } } else if (f [xs] [ys] >= BUSHES0 && f [xs] [ys] <= BUSHES3) { texturetree1 = textree5->textureID; if (hq) texturetree2 = textreeu5->textureID; else texturetree2 = -1; int trees = BUSHES3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0025 + 0.00015 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 80, phi); } } else if (f [xs] [ys] == REDTREE0) { texturetree1 = textree4->textureID; if (hq) texturetree2 = textreeu4->textureID; else texturetree2 = -1; drawTree (x, y, 0.004, 0.35, phi); } else if (f [xs] [ys] == CACTUS0) { texturetree1 = texcactus1->textureID; if (hq) texturetree2 = texcactusu1->textureID; else texturetree2 = -1; drawTree (x, y, 0.004, 0.3, phi); } } void GLLandscape::drawTown (int x, int y) { int xs = getCoord (x); int ys = getCoord (y); if (f [xs] [ys] == TOWN) { CVector3 tl; CRotation rot; rot.a = 270; rot.c = 90 * ((xs + ys / 3) & 3); tl.set (x + 0.5, getExactHeight ((float) xs + 0.5, (float) ys + 0.5) + 0.2, y + 0.5); glPushMatrix (); model_house1.draw (&tl, NULL, &rot, 0.3, 1, 0); glPopMatrix (); return; } } int visibility = 0; // Fast landscape rendering without textures void GLLandscape::drawQuadStrip (int x1, int y1, int x2, int y2) { int x, y, xs, ys; float cr, cg, cb; bool water = false; bool last = false; int step = fargridstep; float texred, texgreen, texblue; va = &vertexarrayquadstrip; glDisable (GL_TEXTURE_2D); CTexture *tex; x1 -= x1 % step; y1 -= y1 % step; for (xs = x1; xs < x2;) { x = GETCOORD(xs); for (ys = y1; ys < y2;) { y = GETCOORD(ys); int xstep = GETCOORD(x + step); int y2 = GETCOORD(y + step); if (gl->isSphereInFrustum ((float) xs + 0.5F * step, (float)(hw[x][y]+hw[xstep][y])*0.5, (float) ys, step*8)) { int a = f [x] [y]; if (a >= 40 && a <= 49) water = true; int x2 = xstep; int y0 = GETCOORD(y - step); if (!(h [x] [y] < hw [x] [y] && h [x2] [y] < hw [x2] [y] && h [x] [y2] < hw [x] [y2] && h [x2] [y2] < hw [x2] [y2] && h [x] [y0] < hw [x] [y0] && h [x2] [y0] < hw [x2] [y0])) { if (!last) { last = true; va->glBegin (GL_QUAD_STRIP); } tex = texmap [a]; if (tex == NULL) { texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; } else { texred = tex->texred; texgreen = tex->texgreen; texblue = tex->texblue; } float fac = lightfac * (nl [x] [y] + (short) dl [x] [y] * 16) * sunlight; cr = (float) r [x] [y] * fac * texred; cg = (float) g [x] [y] * fac * texgreen; cb = (float) b [x] [y] * fac * texblue; if (cr >= texred) cr = texred; if (cg >= texgreen) cg = texgreen; if (cb >= texblue) cb = texblue; va->glColor3f (cr, cg, cb); va->glVertex3f (xs, (float)h[x][y], (ys)); fac = lightfac * (nl [xstep] [y] + (short) dl [xstep] [y] * 16) * sunlight; cr = (float) r [x + step] [y] * fac * texred; cg = (float) g [x + step] [y] * fac * texgreen; cb = (float) b [x + step] [y] * fac * texblue; if (cr >= texred) cr = texred; if (cg >= texgreen) cg = texgreen; if (cb >= texblue) cb = texblue; va->glColor3f (cr, cg, cb); va->glVertex3f ((xs+step), (float)h[xstep][y], (ys)); } else { if (last) va->glEnd (); last = false; } } ys += step; } if (last) { va->glEnd (); last = false; } xs += step; } last = false; if (water) { float texlight; float watergreen = 0.00025; if (day) watergreen = 0.0004; for (xs = x1; xs < x2;) { x = GETCOORD(xs); for (ys = y1; ys < y2;) { y = GETCOORD(ys); int xstep = GETCOORD(x + step); int ystep = GETCOORD(y + step); int ymstep = GETCOORD(y - step); if (isWater (f [x] [y]) || isWater (f [xstep] [y]) || isWater (f [xstep] [ystep]) || isWater (f [x] [ystep]) || isWater (f [x] [ymstep]) || isWater (f [xstep] [ymstep])) { float h1 = hw [x] [y]; if (hw [xstep] [ystep] < h1) h1 = hw [xstep] [ystep]; if (hw [xstep] [y] < h1) h1 = hw [xstep] [y]; if (hw [x] [ystep] < h1) h1 = hw [x] [ystep]; if (hw [x] [ymstep] < h1) h1 = hw [x] [ymstep]; if (hw [xstep] [ymstep] < h1) h1 = hw [xstep] [ymstep]; if (gl->isSphereInFrustum ((xs), (float)h1, (ys), step*2)) { if (!last) { last = true; va->glBegin (GL_QUAD_STRIP); } texlight = texwater->texlight; float d = watergreen * (h1 - h [x] [y]); if (d > 0.75) d = 0.75; if (type == LAND_ALPINE) { cr = 0.1 * 256; cg = (0.85 - d) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_CANYON) { cr = (0.55 - d/2) * 256; cg = (0.55 - d/2) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_ARCTIC) { cr = (0.7 - d/2) * 256; cg = (0.7 - d/2) * 256; cb = (0.7 + d / 2) * 256; } else { cr = 0; cg = 0; cb = 0; } float fac = lightfac * (nl [x] [y] + (short) dl [x] [y] * 16) * sunlight * texlight; cr = (float) cr * fac; cg = (float) cg * fac; cb = (float) cb * fac; if (cr > texlight) cr = texlight; if (cg < 0.1 * texlight) cg = 0.1 * texlight; if (cg > texlight) cg = texlight; if (cb > texlight) cb = texlight; va->glColor3f (cr, cg, cb); va->glVertex3f (xs, h1, (ys)); d = watergreen * (h1 - h [xstep] [y]); if (d > 0.75) d = 0.75; if (type == LAND_ALPINE) { cr = 0.1 * 256; cg = (0.85 - d) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_CANYON) { cr = (0.55 - d/2) * 256; cg = (0.55 - d/2) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_ARCTIC) { cr = (0.7 - d/2) * 256; cg = (0.7 - d/2) * 256; cb = (0.7 + d / 2) * 256; } fac = lightfac * (nl [xstep] [y] + (short) dl [xstep] [y] * 16) * sunlight * texlight; cr = (float) cr * fac; cg = (float) cg * fac; cb = (float) cb * fac; if (cr > texlight) cr = texlight; if (cg < 0.1 * texlight) cg = 0.1 * texlight; if (cg > texlight) cg = texlight; if (cb > texlight) cb = texlight; va->glColor3f (cr, cg, cb); va->glVertex3f ((xs+step), h1, (ys)); } else { if (last) va->glEnd (); last = false; } } ys += step; } if (last) { va->glEnd (); last = false; } xs += step; } } } // Draw a single untextured quad void GLLandscape::drawQuad (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { int j; int step = fargridstep; float texred, texgreen, texblue; CTexture *tex = NULL; float col [4] [3]; float pos [4] [3]; float fac; int px [4], py [4]; int xs = x1, ys = y1; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; px [3] = x4; py [3] = y4; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 4; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+xs), midh, (0.5+ys), size * 2)) return; va = &vertexarrayquad [0]; int a = f [x] [y]; tex = texmap [a]; if (tex == NULL) { texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; } else { texred = tex->texred; texgreen = tex->texgreen; texblue = tex->texblue; } // glDisable (GL_TEXTURE_2D); float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac * texred; col [j] [1] = g [mx] [my] * fac * texgreen; col [j] [2] = b [mx] [my] * fac * texblue; if (col [j] [0] >= texred) col [j] [0] = texred; if (col [j] [1] >= texgreen) col [j] [1] = texgreen; if (col [j] [2] >= texblue) col [j] [2] = texblue; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single untextured triangle void GLLandscape::drawTriangle (int x1, int y1, int x2, int y2, int x3, int y3) { int j; int step = fargridstep; float texred, texgreen, texblue; CTexture *tex = NULL; float col [3] [3]; float pos [3] [3]; float fac; int px [3], py [3]; int xs = x1, ys = y1; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 3; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+xs), midh, (0.5+ys), size * 2)) return; va = &vertexarraytriangle [0]; int a = f [x] [y]; tex = texmap [a]; if (tex == NULL) { texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; } else { texred = tex->texred; texgreen = tex->texgreen; texblue = tex->texblue; } // glDisable (GL_TEXTURE_2D); float fac2 = lightfac * sunlight; for (j = 0; j < 3; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac * texred; col [j] [1] = g [mx] [my] * fac * texgreen; col [j] [2] = b [mx] [my] * fac * texblue; if (col [j] [0] >= texred) col [j] [0] = texred; if (col [j] [1] >= texgreen) col [j] [1] = texgreen; if (col [j] [2] >= texblue) col [j] [2] = texblue; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } // glBegin (GL_TRIANGLES); for (j = 0; j < 3; j ++) { va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } // glEnd(); } // Draw a single textured quad void GLLandscape::drawTexturedQuad (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(x2); int y = GETCOORD(y2); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; px [3] = x4; py [3] = y4; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 4; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+x2), midh, (0.5+y2), size * 2)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarrayquad [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarrayquad [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } int texcoord = 0; if (tex1 [x] [y] == texredstone->textureID) { texzoom = 0.5; texcoord = 1; } else if (tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { if (texcoord == 0) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } else { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) h [GETCOORD(px [j])] [GETCOORD(py [j])] * texzoom / 400.0; } } for (j = 0; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single textured triangle void GLLandscape::drawTexturedTriangle (int x1, int y1, int x2, int y2, int x3, int y3) { int j; int step = gridstep; bool texture = false; float col [3] [3]; float pos [3] [3]; float tf [3] [2]; float fac; float texzoom; int px [3], py [3]; int x = GETCOORD(x2); int y = GETCOORD(y2); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 3; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+x2), midh, (0.5+y2), size * 2)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } int texcoord = 0; if (tex1 [x] [y] == texredstone->textureID) { texzoom = 0.5; texcoord = 1; } else if (tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 3; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 3; j ++) { if (texcoord == 0) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } else { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) h [GETCOORD(px [j])] [GETCOORD(py [j])] * texzoom / 400.0; } } for (j = 0; j < 3; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single textured quad void GLLandscape::drawTexturedQuad (int xs, int ys) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int pcx [4], pcy [4]; px [0] = xs; py [0] = ys; px [1] = xs + step; py [1] = ys; px [2] = xs + step; py [2] = ys + step; px [3] = xs; py [3] = ys + step; for (j = 0; j < 4; j ++) { pcx [j] = GETCOORD(px [j]); pcy [j] = GETCOORD(py [j]); } int x = GETCOORD(pcx [0]); int y = GETCOORD(pcy [0]); float minh = h [x] [y]; float maxh = minh; for (j = 1; j < 4; j ++) { int h1 = h [pcx [j]] [pcy [j]]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+xs), midh, (0.5+ys), size * 2)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarrayquad [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarrayquad [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } int texcoord = 0; if (tex1 [x] [y] == texredstone->textureID) { texzoom = 0.5; texcoord = 1; } else if (tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = pcx [j], my = pcy [j]; fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = (float) r [mx] [my] * fac; col [j] [1] = (float) g [mx] [my] * fac; col [j] [2] = (float) b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { if (texcoord == 0) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } else { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) h [pcx [j]] [pcy [j]] * texzoom / 400.0; } } for (j = 0; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single textured water quad void GLLandscape::drawWaterTexturedQuad (int xs, int ys) { int i, j; int step = gridstep; bool texture = false; float col [4] [4]; float pos [4] [3]; float tf [4] [2]; float li [4]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(xs); int y = GETCOORD(ys); int xstep = GETCOORD(xs + step); int ystep = GETCOORD(ys + step); px [0] = xs; py [0] = ys; li [0] = (nl [x] [y] + (short) dl [x] [y] * 16); px [1] = xs + step; py [1] = ys; li [1] = (nl [xstep] [y] + (short) dl [xstep] [y] * 16); px [2] = xs + step; py [2] = ys + step; li [2] = (nl [xstep] [ystep] + (short) dl [xstep] [ystep] * 16); px [3] = xs; py [3] = ys + step; li [3] = (nl [x] [ystep] + (short) dl [x] [ystep] * 16); float h1 = hw [x] [y]; for (i = 1; i <= 3; i ++) { int mx = GETCOORD(px [i]); int my = GETCOORD(py [i]); if (hw [mx] [my] < h1) { h1 = hw [mx] [my]; } } if (!gl->isSphereInFrustum ((0.5+xs), (float) h1, (0.5+ys), step)) return; float quadglittering = 0; float glitter [4] = { 1, 1, 1, 1 }; if (specialeffects) if (weather == WEATHER_SUNNY || weather == WEATHER_CLOUDY) { float dz1 = fabs ((float) camx - xs); float dz2 = fabs ((float) camx - xs - step); float dy = fabs (camy - (h1*zoomz - zoomz2) * ZOOM); float dtheta1 = fabs (atan (dy / dz1) * 180.0 / PI - 90); float dtheta2 = fabs (atan (dy / dz2) * 180.0 / PI - 90); dtheta1 /= 4; dtheta2 /= 4; // if (lz1 <= 5 || lz2 <= 5) { float divdy = 1.0F / dy * 200; float dx1 = ((float) -camz + ys); float dx2 = ((float) -camz + ys + step); // float dy = fabs (camy - (h1*zoomz - zoomz2) * ZOOM); float dgamma1 = fabs (atan (dy / dx1) * 180.0 / PI - sungamma); float dgamma2 = fabs (atan (dy / dx2) * 180.0 / PI - sungamma); dgamma1 /= 4; dgamma2 /= 4; float sc = 1.0; float test; if (dx1 < 0) dgamma1 += 90; if (dx2 < 0) dgamma2 += 90; if (h1 >= hray [x] [y]) { test = sc * exp ((-dgamma1 * dgamma1 - dtheta1 * dtheta1) / divdy) + 0.98; if (test > 1.0) { glitter [0] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } if (h1 >= hray [xstep] [y]) { test = sc * exp ((-dgamma1 * dgamma1 - dtheta2 * dtheta2) / divdy) + 0.98; if (test > 1.0) { glitter [1] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } if (h1 >= hray [x] [ystep]) { test = sc * exp ((-dgamma2 * dgamma2 - dtheta1 * dtheta1) / divdy) + 0.98; if (test > 1.0) { glitter [3] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } if (h1 >= hray [xstep] [ystep]) { test = sc * exp ((-dgamma2 * dgamma2 - dtheta2 * dtheta2) / divdy) + 0.98; if (test > 1.0) { glitter [2] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } } } texture = true; va = &vertexarrayquad [texwater->textureID + 1]; gl->enableTextures (texwater->textureID); texzoom = 0.5; float watergreen = 0.00025; if (day) watergreen = 0.0004; float fac2 = lightfac * sunlight * 256.0; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); float d = watergreen * (h1 - h [mx] [my]); if (d > 0.75) d = 0.75; fac = fac2 * li [j]; if (type == LAND_ALPINE) { col [j] [0] = 0.1 * fac; col [j] [1] = (0.85 - d) * fac; col [j] [2] = (0.6 + d) * fac; } else if (type == LAND_CANYON) { col [j] [0] = (0.55 - d/2) * fac; col [j] [1] = (0.55 - d/2) * fac; col [j] [2] = (0.6 + d) * fac; } else if (type == LAND_ARCTIC) { col [j] [0] = (0.7 - d/2) * fac; col [j] [1] = (0.7 - d/2) * fac; col [j] [2] = (0.7 + d / 2) * fac; } if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] <= 0.1) col [j] [1] = 0.1; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h1; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { float waterspeed = 0.008; if (weather == 1) waterspeed = 0.016; tf [j] [0] = (float) px [j] * texzoom + waterspeed * lsticker / timestep; tf [j] [1] = (float) py [j] * texzoom; } for (j = 0; j < 4; j ++) { if (texture) { va->glTexCoord2fv (tf [j]); } va->glColor4fv (col [j]); va->glVertex3fv (pos [j]); } va = &vertexarrayglitter [0]; if (specialeffects && quadglittering > 1.2) { glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_ONE, GL_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); gl->enableTextures (texglitter1->textureID); gl->enableLinearTexture (texglitter1->textureID); for (j = 0; j < 4; j ++) { if (texture) { tf [j] [0] = (px [j] * texzoom) + (float) ((lsticker / timestep / 2) & 7) * 0.6; tf [j] [1] = (py [j] * texzoom) + (float) ((lsticker / timestep / 2) & 7) * 0.6; va->glTexCoord2fv (tf [j]); } col [j] [3] = glitter [j] - 1.0; col [j] [0] = 1.0; col [j] [1] = 1.0; col [j] [2] = 1.0; va->glColor4fv (col [j]); va->glVertex3fv (pos [j]); } glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); } va = &vertexarrayglitter [1]; if (specialeffects && quadglittering > 1.02) { glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.02); glDisable (GL_TEXTURE_2D); for (j = 0; j < 4; j ++) { col [j] [3] = glitter [j] - 1.0; col [j] [0] = 1.0; col [j] [1] = 1.0; col [j] [2] = 1.0; va->glColor4fv (col [j]); va->glVertex3fv (pos [j]); } glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); } } // Draw two textured triangles (quad) void GLLandscape::drawTexturedTriangle1 (int xs, int ys) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = xs; py [0] = ys; px [1] = xs + step; py [1] = ys; px [2] = xs + step; py [2] = ys + step; px [3] = xs; py [3] = ys + step; if (!gl->isSphereInFrustum ((0.5+xs), (float)h[x][y], (0.5+ys), 2*step)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } if (tex1 [x] [y] != texgrass->textureID && tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } for (j = 0; j < 3; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } if (tex2 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; } else { texture = true; va = &vertexarraytriangle [tex2 [x] [y] + 1]; } if (tex2 [x] [y] != texgrass->textureID && tex2 [x] [y] != texredstone->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } if (texture) va->glTexCoord2fv (tf [0]); va->glColor3fv (col [0]); va->glVertex3fv (pos [0]); for (j = 2; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw two textured triangles (quad) void GLLandscape::drawTexturedTriangle2 (int xs, int ys) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = xs; py [0] = ys; px [1] = xs + step; py [1] = ys; px [2] = xs + step; py [2] = ys + step; px [3] = xs; py [3] = ys + step; if (!gl->isSphereInFrustum ((0.5+xs), (float)h[x][y], (0.5+ys), 2*step)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } if (tex1 [x] [y] != texgrass->textureID && tex1 [x] [y] != texredstone->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my]); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } // glBegin (GL_TRIANGLES); for (j = 0; j < 2; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } if (texture) va->glTexCoord2fv (tf [3]); va->glColor3fv (col [3]); va->glVertex3fv (pos [3]); // glEnd(); if (tex2 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex2 [x] [y] + 1]; // gl->enableTextures (tex2 [x] [y]); } if (tex2 [x] [y] != texgrass->textureID && tex2 [x] [y] != texredstone->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } // glBegin (GL_TRIANGLES); for (j = 1; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } // glEnd(); } void GLLandscape::draw (int phi, int gamma) { char buf [STDSIZE]; int i, i2, i3, x, y; int xs, ys; float fac; int fardetail = quality; int middetail = quality; int lineardetail = -1; // until v1.2 (no vertex arrays) /* if (quality == 0) { neargridstep = 3; fargridstep = 3; middetail = -1; fardetail = -1; lineardetail = -1; } else if (quality == 1) { neargridstep = 2; fargridstep = 4; middetail = 2; fardetail = 2; lineardetail = -1; } else if (quality == 2) { neargridstep = 2; fargridstep = 4; middetail = 5; fardetail = 5; lineardetail = -1; } else if (quality == 3) { neargridstep = 2; fargridstep = 4; middetail = 7; fardetail = 7; lineardetail = 0; } else if (quality == 4) { neargridstep = 2; fargridstep = 2; middetail = -1; fardetail = 7; lineardetail = 0; } else { neargridstep = 1; fargridstep = 2; middetail = 3; fardetail = 7; lineardetail = 0; }*/ if (quality == 0) { neargridstep = 3; fargridstep = 3; middetail = -1; fardetail = -1; lineardetail = -1; } else if (quality == 1) { neargridstep = 2; fargridstep = 4; middetail = 3; fardetail = 3; lineardetail = -1; } else if (quality == 2) { neargridstep = 2; fargridstep = 4; middetail = 6; fardetail = 6; lineardetail = -1; } else if (quality == 3) { neargridstep = 2; fargridstep = 2; middetail = -1; fardetail = 7; lineardetail = 0; } else if (quality == 4) { neargridstep = 1; fargridstep = 2; middetail = 3; fardetail = 7; lineardetail = 0; } else { neargridstep = 1; fargridstep = 2; middetail = 5; fardetail = 7; lineardetail = 0; } if (phi < 0) phi += 360; else if (phi >= 360) phi -= 360; if (gamma < 0) gamma += 360; else if (gamma >= 360) gamma -= 360; if (phi < 0 || phi >= 360) { sprintf (buf, "Phi exceeds in file %s, line %d, val %d", __FILE__, __LINE__, phi); display (buf, LOG_ERROR); } if (gamma < 0 || gamma >= 360) { sprintf (buf, "Gamma exceeds in file %s, line %d, val %d", __FILE__, __LINE__, gamma); display (buf, LOG_ERROR); } glPushMatrix (); glScalef (MAXX2, ZOOM, MAXX2); glPushMatrix (); glTranslatef (0, -zoomz2, 0); glScalef (hh2, zoomz, hh2); gl->extractFrustum (); float pseudoview = getView (); float radius = pseudoview / cosi [45]; int minx = (int) (camx - radius); int miny = (int) (camz - radius); int maxx = (int) (minx + radius * 2); int maxy = (int) (miny + radius * 2); space->z1->x = minx - MAXX2; space->z1->y = -MAXX2; space->z1->z = maxy - MAXX2; space->z2->x = maxx - MAXX2; space->z2->y = MAXX2; space->z2->z = miny - MAXX2; if (camera == 50) { minx = 0; maxx = MAXX; miny = 0; maxy = MAXX; } int parts = (int) (view / 13); parts *= 2; parts ++; if (parts >= PARTS) { display ("view exceeds ray casting blocks - not implemented", LOG_FATAL); exit (6); } int mp = parts / 2; for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { float d = dist (mp - i, mp - i2); detail [i] [i2] = (int) (d * 200.0F / view); // do not use pseudoview } float dx = (float) (maxx - minx + 1) / parts; float dy = (float) (maxy - miny + 1) / parts; // Efficient occlusion culling (kind of ray casting technique): // Run from inner grid point (viewer) to outer grid parts and check if grid points are hidden // This is currently not completely correct (needs two comparisons of inner fields), but // it already works very well, so I negligate the second comparison, as it would double the code for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { int ax = minx + (int) (dx * (float) i2); int ay = miny + (int) (dy * (float) i); int zx = minx + (int) (dx * (float) (i2 + 1)); int zy = miny + (int) (dy * (float) (i + 1)); vmin [i] [i2] = 65535; vmax [i] [i2] = 0; for (int i3 = 0; i3 < zy - ay + 1; i3 += 4) for (int i4 = 0; i4 < zx - ax + 1; i4 += 4) { int by = getCoord (ay + i3) / 4; int bx = getCoord (ax + i4) / 4; if (hcmin [bx] [by] < vmin [i] [i2]) vmin [i] [i2] = hcmin [bx] [by]; if (hcmax [bx] [by] > vmax [i] [i2]) vmax [i] [i2] = hcmax [bx] [by]; } } // ray casting bool dosecondtest = false; int count = 0; bool set = true; memset (vis, 0, PARTS * PARTS * sizeof (bool)); int cx = parts / 2, cy = parts / 2; float ch = (unsigned int) ((camy / ZOOM + zoomz2) / zoomz); // - (h1*zoomz - zoomz2) * ZOOM; vh [cy] [cx] = ch; vis [cy] [cx] = set; for (i = cy + 1; i < parts; i ++) for (i2 = parts - i - 1; i2 < i + 1; i2 ++) { int lasty = 1; int lastx = 0; if (i2 < cx) lastx = -1; if (i2 > cx) lastx = 1; // if (i2 == cx - 1 && i2 > parts - i - 1) lastx = 0; // if (i2 == cx + 1 && i2 < i - 1) lastx = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i2 < cx && i2 > parts - i - 1) { lastx = 0; secondtest = true; } if (i2 > cx && i2 < i) { lastx = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } for (i = cy - 1; i >= 0; i --) for (i2 = i; i2 < parts - i; i2 ++) { int lasty = -1; int lastx = 0; if (i2 < cx) lastx = -1; if (i2 > cx) lastx = 1; if (i2 == cx - 1 && i2 > i) lastx = 0; if (i2 == cx + 1 && i2 < parts - 1) lastx = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i2 < cx && i2 > i) { lastx = 0; secondtest = true; } if (i2 > cx && i2 < parts - i - 1) { lastx = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } for (i2 = cx + 1; i2 < parts; i2 ++) for (i = parts - i2; i < i2; i ++) { int lasty = 0; int lastx = 1; if (i < cy) lasty = -1; if (i > cy) lasty = 1; if (i == cy - 1 && i > parts - i2) lasty = 0; if (i == cy + 1 && i < i2) lasty = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i < cy && i > parts - i2) { lasty = 0; secondtest = true; } if (i > cy && i < i2 - 1) { lasty = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } for (i2 = cx - 1; i2 >= 0; i2 --) for (i = i2 + 1; i < parts - i2 - 1; i ++) { int lasty = 0; int lastx = -1; if (i < cy) lasty = -1; if (i > cy) lasty = 1; if (i == cy - 1 && i > i2 - 1) lasty = 0; if (i == cy + 1 && i < parts - i2 - 1) lasty = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i < cy && i > i2 + 1) { lasty = 0; secondtest = true; } if (i > cy && i < parts - i2 - 2) { lasty = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } // printf ("c=%d ", count); // memset (vis, 0xFF, PARTS * PARTS * sizeof (bool)); for (i = 0; i < 20; i ++) vertexarrayquad [i].glBegin (GL_QUADS); for (i = 0; i < 20; i ++) vertexarraytriangle [i].glBegin (GL_TRIANGLES); vertexarrayglitter [0].glBegin (GL_QUADS); vertexarrayglitter [1].glBegin (GL_QUADS); int zz1 = 0, zz = 0; if (quality <= 0 || camera == 50) { drawQuadStrip (minx, miny, maxx, maxy); } else { if (mode == 0) { for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) if (vis [i] [i2]) { int ax = (minx + (int) (dx * (float) i2)); int ay = (miny + (int) (dy * (float) i)); int zx = (minx + (int) (dx * (float) (i2 + 1))); int zy = (miny + (int) (dy * (float) (i + 1))/* + gridstep*/); if (fargridstep == 2) { ax -= ax & 1; ay -= ay & 1; zx -= zx & 1; zy -= zy & 1; } else if (fargridstep == 3) { ax -= ax % 3; ay -= ay % 3; zx -= zx % 3; zy -= zy % 3; } else if (fargridstep == 4) { ax -= ax & 3; ay -= ay & 3; zx -= zx & 3; zy -= zy & 3; } if (detail [i] [i2] > fardetail) { zy += fargridstep; // if (gl->isSphereInFrustum ((ax+zx)/2, (float)hw[getCoord((ax+zx)/2)][getCoord((ay+zy)/2)], ((float)(ay+zy)/2), (zx-ax)*2.0)) if (gl->isSphereInFrustum (ax, (float)hw[getCoord(ax)][getCoord(ay)], (float)(ay), 0.00001) || gl->isSphereInFrustum (ax, (float)hw[getCoord(ax)][getCoord(zy)], (float)(zy), 0.00001) || gl->isSphereInFrustum (zx, (float)hw[getCoord(zx)][getCoord(ay)], (float)(ay), 0.00001) || gl->isSphereInFrustum (zx, (float)hw[getCoord(zx)][getCoord(zy)], (float)(zy), 0.00001)) { drawQuadStrip (ax, ay, zx, zy); } else { float sl = sunlight; sunlight = 10.0; // drawQuadStrip (ax, ay, zx, zy); sunlight = sl; } } else { if (detail [i] [i2] <= lineardetail) { gl->enableLinearTexture (texgrass->textureID); gl->enableLinearTexture (texgravel1->textureID); gl->enableLinearTexture (texredsand->textureID); gl->enableLinearTexture (texrocks->textureID); gl->enableLinearTexture (texwater->textureID); gl->enableLinearTexture (texredstone->textureID); } else { gl->disableLinearTexture (texgrass->textureID); gl->disableLinearTexture (texgravel1->textureID); gl->disableLinearTexture (texredsand->textureID); gl->disableLinearTexture (texrocks->textureID); gl->disableLinearTexture (texwater->textureID); gl->disableLinearTexture (texredstone->textureID); } if (detail [i] [i2] <= middetail) { if (i > 0) // south { if (detail [i - 1] [i2] > middetail) { if (fargridstep == 3 * neargridstep) { ys = ay; for (xs = ax; xs < zx;) { drawTexturedQuad (xs, ys, xs + 3 * neargridstep, ys, xs + 2 * neargridstep, ys, xs + 1 * neargridstep, ys); xs += fargridstep; } } else if (fargridstep == 2 * neargridstep) { ys = ay; for (xs = ax; xs < zx;) { drawTexturedTriangle (xs, ys, xs + 2 * neargridstep, ys, xs + 1 * neargridstep, ys); xs += fargridstep; } } } } if (i < parts - 1) // north { if (detail [i + 1] [i2] > middetail) { if (fargridstep == 3 * neargridstep) { ys = zy; for (xs = ax; xs < zx;) { drawTexturedQuad (xs, ys, xs + 1 * neargridstep, ys, xs + 2 * neargridstep, ys, xs + 3 * neargridstep, ys); xs += fargridstep; } } else if (fargridstep == 2 * neargridstep) { ys = zy; for (xs = ax; xs < zx;) { drawTexturedTriangle (xs, ys, xs + 1 * neargridstep, ys, xs + 2 * neargridstep, ys); xs += fargridstep; } } } } if (i2 > 0) // east { if (detail [i] [i2 - 1] > middetail) { if (fargridstep == 3 * neargridstep) { xs = ax; for (ys = ay; ys < zy;) { drawTexturedQuad (xs, ys, xs, ys + 1 * neargridstep, xs, ys + 2 * neargridstep, xs, ys + 3 * neargridstep); ys += fargridstep; } } else if (fargridstep == 2 * neargridstep) { xs = ax; for (ys = ay; ys < zy;) { drawTexturedTriangle (xs, ys, xs, ys + 1 * neargridstep, xs, ys + 2 * neargridstep); ys += fargridstep; } } } } if (i2 < parts - 1) // west { if (detail [i] [i2 + 1] > middetail) { if (fargridstep == 3 * neargridstep) { xs = zx; for (ys = ay; ys < zy;) { drawTexturedQuad (xs, ys, xs, ys + 3 * neargridstep, xs, ys + 2 * neargridstep, xs, ys + 1 * neargridstep); ys += fargridstep; } } else if (fargridstep == 2 * neargridstep) { xs = zx; for (ys = ay; ys < zy;) { drawTexturedTriangle (xs, ys, xs, ys + 2 * neargridstep, xs, ys + 1 * neargridstep); ys += fargridstep; } } } } gridstep = neargridstep; } else { gridstep = fargridstep; } for (xs = ax; xs < zx;) { x = GETCOORD(xs); for (ys = ay; ys < zy;) { y = GETCOORD(ys); zz1 ++; int x2 = GETCOORD(xs+gridstep); int y2 = GETCOORD(ys+gridstep); if (h [x] [y] < hw [x] [y] && h [x2] [y] < hw [x2] [y] && h [x] [y2] < hw [x] [y2] && h [x2] [y2] < hw [x2] [y2]) ; // water else { if (drawrule [x] [y] == 0) drawTexturedQuad (xs, ys); else if (drawrule [x] [y] == 2) drawTexturedTriangle1 (xs, ys); else drawTexturedTriangle2 (xs, ys); } ys += gridstep; zz ++; } xs += gridstep; } for (xs = ax; xs < zx;) { x = GETCOORD(xs); for (ys = ay; ys < zy;) { y = GETCOORD(ys); zz1 ++; int xstep = GETCOORD(xs + gridstep); int ystep = GETCOORD(ys + gridstep); if (isWater (f [x] [y]) || isWater (f [xstep] [y]) || isWater (f [xstep] [ystep]) || isWater (f [x] [ystep])) { drawWaterTexturedQuad (xs, ys); } ys += gridstep; zz ++; } xs += gridstep; } } } // for i2 } // if mode } glDisable (GL_TEXTURE_2D); vertexarrayquad [0].glEnd (); vertexarraytriangle [0].glEnd (); for (i = 1; i < 20; i ++) { gl->enableTextures (i - 1); vertexarrayquad [i].glEnd (); vertexarraytriangle [i].glEnd (); } glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_ONE, GL_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); gl->enableTextures (texglitter1->textureID); gl->enableLinearTexture (texglitter1->textureID); vertexarrayglitter [0].glEnd (); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.02); glDisable (GL_TEXTURE_2D); vertexarrayglitter [1].glEnd (); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); glPopMatrix (); gl->extractFrustum (); int treestep = 2; if (quality >= 2) treestep = 1; // Draw trees, bushes if (quality >= 1) { glPushMatrix (); glDisable (GL_CULL_FACE); if (quality >= 6) { gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); } else { glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.5); } gl->enableTextures (textree->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree2->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree3->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree4->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree5->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (texcactus1->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); float mydep = 1000; if (quality == 2) mydep = 1800; else if (quality == 3) mydep = 2500; else if (quality == 4) mydep = 3200; else if (quality == 5) mydep = 3800; if (mydep > view * view) mydep = view * view; int cutdep = 800; int lineartree = -1; if (antialiasing) lineartree = 0; float treelightfac = lightfac * 1000.0 * 256.0 * 0.00085; for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { if (detail [i] [i2] > middetail) gridstep = fargridstep; else gridstep = neargridstep; if (detail [i] [i2] <= lineartree) { gl->enableLinearTexture (textree->textureID); gl->enableLinearTexture (textree2->textureID); gl->enableLinearTexture (textree3->textureID); gl->enableLinearTexture (textree4->textureID); gl->enableLinearTexture (textree5->textureID); gl->enableLinearTexture (texcactus1->textureID); gl->enableLinearTexture (textreeu->textureID); gl->enableLinearTexture (textreeu2->textureID); gl->enableLinearTexture (textreeu3->textureID); gl->enableLinearTexture (textreeu4->textureID); gl->enableLinearTexture (textreeu5->textureID); gl->enableLinearTexture (texcactusu1->textureID); } else { gl->disableLinearTexture (textree->textureID); gl->disableLinearTexture (textree2->textureID); gl->disableLinearTexture (textree3->textureID); gl->disableLinearTexture (textree4->textureID); gl->disableLinearTexture (textree5->textureID); gl->disableLinearTexture (texcactus1->textureID); gl->disableLinearTexture (textreeu->textureID); gl->disableLinearTexture (textreeu2->textureID); gl->disableLinearTexture (textreeu3->textureID); gl->disableLinearTexture (textreeu4->textureID); gl->disableLinearTexture (textreeu5->textureID); gl->disableLinearTexture (texcactusu1->textureID); } int ax = minx + (int) (dx * (float) i2); int ay = miny + (int) (dy * (float) i); int ex = minx + (int) (dx * (float) (i2 + 1)); int ey = miny + (int) (dy * (float) (i + 1)) + treestep; float dep; if (treestep == 2) { ax -= ax & 1; ay -= ay & 1; } for (i3 = 1; i3 < 20; i3 ++) vertexarrayquad [i3].glBegin (GL_QUADS); for (i3 = 1; i3 < 20; i3 ++) vertexarraytriangle [i3].glBegin (GL_TRIANGLES); for (xs = ax; xs < ex;) { x = GETCOORD(xs); zz = 0; for (ys = ay; ys <= ey;) { y = GETCOORD(ys); float tdx = camx - xs; float tdy = camz - ys; dep = tdx * tdx + tdy * tdy; if (dep < mydep) if (isWoods (f [x] [y]) || isType (f [x] [y], REDTREE0) || isType (f [x] [y], CACTUS0)) if (gl->isSphereInFrustum (hh2*(xs), (float)h[x][y]*zoomz - zoomz2, hh2*((ys)), hh2*2)) { float cg = g [x] [y]; fac = treelightfac * (nl [x] [y] + (short) dl [x] [y] * 16) * sunlight; cg = (float) cg * fac; if (cg >= 256.0) cg = 255.0; treecolor.c [0] = treecolor.c [1] = treecolor.c [2] = (int) cg; drawTreeQuad (xs, ys, phi, dep < cutdep); } ys += treestep; } // ys for xs += treestep; } // xs for for (i3 = 1; i3 < 20; i3 ++) { glBindTexture (GL_TEXTURE_2D, i3 - 1); vertexarrayquad [i3].glEnd (); vertexarraytriangle [i3].glEnd (); } } glDisable (GL_ALPHA_TEST); glPopMatrix (); gl->disableAlphaBlending (); } glDisable (GL_TEXTURE_2D); glPopMatrix (); if (quality >= 1 && hastowns) { float mydep = 1000; if (quality == 2) mydep = 1800; else if (quality == 3) mydep = 2600; else if (quality == 4) mydep = 3300; else if (quality == 5) mydep = 4000; if (mydep > view * view) mydep = view * view; for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { int ax = minx + (int) (dx * (float) i2); int ay = miny + (int) (dy * (float) i); int ex = minx + (int) (dx * (float) (i2 + 1)); int ey = miny + (int) (dy * (float) (i + 1)); float dep; for (xs = ax; xs < ex;) { x = GETCOORD(xs); zz = 0; for (ys = ay; ys <= ey;) { y = GETCOORD(ys); if (f [x] [y] == TOWN) { float tdx = camx - xs; float tdy = camz - ys; dep = tdx * tdx + tdy * tdy; if (dep < mydep) if (gl->isSphereInFrustum (hh2*(xs), (float)h[x][y]*zoomz - zoomz2, hh2*((ys)), hh2*2)) { drawTown (xs, ys); } } ys += 1; } // ys for xs += 1; } // xs for } } gridstep = neargridstep; // set to finer grid for ground collision detection } void GLLandscape::calcDynamicLight (CExplosion **explo, DynamicObj **cannon, DynamicObj **missile, DynamicObj **flare) { int i, x, y; memset (dl, 0, (MAXX + 1) * (MAXX + 1)); if (!dynamiclighting) return; for (i = 0; i < maxexplosion; i ++) { if (explo [i]->ttl > 0) { int mx = (int) explo [i]->tl->x; int mz = (int) explo [i]->tl->z; float h = explo [i]->tl->y - getHeight (explo [i]->tl->x, explo [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 50) { float intens = 100.0 - 2 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * explo [i]->zoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } if (!day) for (i = 0; i < maxlaser; i ++) { if (cannon [i]->draw && cannon [i]->active) { int mx = (int) cannon [i]->tl->x; int mz = (int) cannon [i]->tl->z; float h = cannon [i]->tl->y - getHeight (cannon [i]->tl->x, cannon [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 15) { float intens = 75.0 - 5 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * cannon [i]->zoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } for (i = 0; i < maxmissile; i ++) { if (missile [i]->draw && missile [i]->active) { int mx = (int) missile [i]->tl->x; int mz = (int) missile [i]->tl->z; float h = missile [i]->tl->y - getHeight (missile [i]->tl->x, missile [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 15) { float intens = 150.0 - 10 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * missile [i]->zoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } float flarezoom = 0.2F; for (i = 0; i < maxflare; i ++) { if (flare [i]->draw && flare [i]->active) { int mx = (int) flare [i]->tl->x; int mz = (int) flare [i]->tl->z; float h = flare [i]->tl->y - getHeight (flare [i]->tl->x, flare [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 50) { float intens = 200.0 - 2 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * flarezoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } } void GLLandscape::setMaterial (int n, float r, float g, float b, CTexture *tex) { mat [n] [0] = r; mat [n] [1] = g; mat [n] [2] = b; mat [n] [3] = 1.0; texmap [n] = tex; } GLLandscape::GLLandscape (Space *space2, int type, int *heightmask) { int i, i2; lsticker = 0; space = space2; randptr = 0; // if (!multiplayer || isserver) { if (type == LANDSCAPE_ALPINE || type == LANDSCAPE_ALPINE_NOLAKE || type == LANDSCAPE_LOW_ALPINE) { if (type == 0 || type == 1) { genSurface (60, heightmask); genRocks (30, 40); } else { genSurface (40, heightmask); genRocks (30, 10); } if (type == 0 || type == 2) { int lakes = myrandom (20) + 20; genLake (lakes); genLake (lakes / 3); genLake (lakes / 4); genLake (lakes / 4); genLake (2); genLake (2); genLake (2); genLake (2); genLake (2); } calcWoods (150); } else if (type == LANDSCAPE_ALPINE_EROSION) { genErosionSurface (50, heightmask); genRocks (30, 25); calcWoods (150); } else if (type == LANDSCAPE_ALPINE_SEA) { genSurface (60, heightmask); genRocks (30, 70); int diff = lowestpoint + (highestpoint - lowestpoint) * 3 / 4; for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { if (h [i] [i2] < diff) { hw [i] [i2] = diff; if (diff - h [i] [i2] < 1000) f [i] [i2] = SHALLOWWATER; else f [i] [i2] = DEEPWATER; } } } else if (type == LANDSCAPE_ALPINE_ROCKY) { genSurface (60, heightmask); genRocks (1, 99); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); calcWoods (200); } else if (type == LANDSCAPE_SEA) { for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { f [i] [i2] = DEEPWATER; h [i] [i2] = 10000; hw [i] [i2] = 30000; } } else if (type == LANDSCAPE_MOON) { genMoonSurface (60); for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { f [i] [i2] = MOONSAND; } } else if (type == LANDSCAPE_FLAT_MOON) { genMoonSurface (30); for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { f [i] [i2] = MOONSAND; } } else if (type == LANDSCAPE_CANYON) { genCanyonSurface (120); } else if (type == LANDSCAPE_ARCTIC) { genArcticSurface (60, NULL); } else if (type == LANDSCAPE_CANYON_TRENCH) { genCanyonSurface (10); genTrench (22, 3800); } else if (type == LANDSCAPE_DESERT) { genDesertSurface (20); } } /*#ifdef HAVE_SDL_NET if (isserver) { // Send map data to all clients char buf [10]; for (i = 0; i <= MAXX; i ++) { printf (" %d ", i); server->sendMessage (1, (char *) h [i], (MAXX + 1) * 2); server->sendMessage (1, (char *) hw [i], (MAXX + 1) * 2); server->sendMessage (1, (char *) f [i], (MAXX + 1) * 1); while (!server->getMessage (1, buf)) ; } } if (multiplayer && !isserver) { // for (;;) // { for (i = 0; i <= MAXX; i ++) { // printf (" %d ", i); while (!client->getMessage ((char *) h [i])) ; while (!client->getMessage ((char *) hw [i])) ; while (!client->getMessage ((char *) f [i])) ; client->sendMessage (".", 1); } } #endif*/ lv [0] = 0.0; lv [1] = 1.0; lv [2] = 1.0; for (i = 0; i < MAXMATERIAL; i ++) { if (i == GRASS) { setMaterial (i, 0.4, 0.8, 0.3, texgrass); } else if (i >= CONIFEROUSWOODS1 && i <= MIXEDWOODS3) { setMaterial (i, 0.3, 0.55, 0.2, texgrass); } else if (i == ROCKS) { setMaterial (i, 0.7, 0.7, 0.7, texrocks); } else if (i == GLACIER) { setMaterial (i, 1.0, 1.0, 1.0, NULL); } else if (i >= DWARFPINES1 && i <= BUSHES3) { setMaterial (i, 0.3, 0.55, 0.2, texgrass); } else if (i == WATER) { setMaterial (i, 0.2, 1.0, 0.2, texwater); } else if (i == SHALLOWWATER) { setMaterial (i, 0.25, 1.0, 0.25, texwater); } else if (i == DEEPWATER) { setMaterial (i, 0.1, 0.25, 1.0, texwater); } else if (i == ROCKS2) { setMaterial (i, 0.5, 0.5, 0.5, texrocks); } else if (i == XSHALLOWWATER) { setMaterial (i, 0.3, 1.0, 0.3, texwater); } else if (i == XDEEPWATER) { setMaterial (i, 0.1, 0.15, 1.0, texwater); } else if (i == MOONSAND) { setMaterial (i, 0.8, 0.8, 0.8, texgrass); } else if (i == REDSTONE) { setMaterial (i, 0.95, 0.6, 0.4, texredstone); } else if (i == REDSAND || i == REDTREE0) { setMaterial (i, 0.9, 0.75, 0.55, texgrass); } else if (i == DESERTSAND || i == CACTUS0) { setMaterial (i, 1.0, 0.76, 0.35, texgrass); } else if (i == GREYSAND) { setMaterial (i, 0.7, 0.7, 0.65, texgrass); } else if (i == GRAVEL) { setMaterial (i, 0.75, 0.78, 0.68, texgravel1); } else if (i == TOWN) { setMaterial (i, 0.7, 0.7, 0.7, texgrass); } else { setMaterial (i, 0.4, 0.8, 0.3, texgrass); } } /* texmap [0] = texmap [1] = texmap [10] = texmap [12] = texmap [13] = texgrass; texmap [2] = texmap [7] = texrocks; texmap [4] = texmap [5] = texmap [6] = texmap [8] = texmap [9] = texwater; texmap [11] = texredstone; texmap [13] = texsand; texmap [3] = texmap [14] = texmap [15] = texmap [16] = NULL; if (f [x] [y] == GRASS) return 0; else if (f [x] [y] >= CONIFEROUSWOODS1 && f [x] [y] <= MIXEDWOODS3) return 1; else if (f [x] [y] == ROCKS) return 2; else if (f [x] [y] == GLACIER) return 3; else if (f [x] [y] >= DWARFPINES1 && f [x] [y] <= BUSHES3) return 1; else if (f [x] [y] == WATER) return 5; else if (f [x] [y] == SHALLOWWATER) return 4; else if (f [x] [y] == DEEPWATER) return 6; else if (f [x] [y] == ROCKS2) return 7; else if (f [x] [y] == XSHALLOWWATER) return 8; else if (f [x] [y] == XDEEPWATER) return 9; else if (f [x] [y] == MOONSAND) return 10; else if (f [x] [y] == REDSTONE) return 11; else if (f [x] [y] == REDSAND || f [x] [y] == REDTREE0) return 12; else if (f [x] [y] == DESERTSAND || f [x] [y] == CACTUS0) return 13; else if (f [x] [y] == GREYSAND) return 14; else if (f [x] [y] == GRAVEL) return 15; else if (f [x] [y] == TOWN) return 16; else return 0; mat [0] [0] = 0.4; mat [0] [1] = 0.8; mat [0] [2] = 0.3; mat [0] [3] = 1.0; mat [1] [0] = 0.3; mat [1] [1] = 0.55; mat [1] [2] = 0.2; mat [1] [3] = 1.0; mat [2] [0] = 0.7; mat [2] [1] = 0.7; mat [2] [2] = 0.7; mat [2] [3] = 1.0; mat [3] [0] = 1.0; mat [3] [1] = 1.0; mat [3] [2] = 1.0; mat [3] [3] = 1.0; mat [4] [0] = 0.25; mat [4] [1] = 1.0; mat [4] [2] = 0.25; mat [4] [3] = 1.0; mat [5] [0] = 0.2; mat [5] [1] = 1.0; mat [5] [2] = 0.2; mat [5] [3] = 1.0; mat [6] [0] = 0.1; mat [6] [1] = 0.25; mat [6] [2] = 1.0; mat [6] [3] = 1.0; mat [7] [0] = 0.5; mat [7] [1] = 0.5; mat [7] [2] = 0.5; mat [7] [3] = 1.0; mat [8] [0] = 0.3; mat [8] [1] = 1.0; mat [8] [2] = 0.3; mat [8] [3] = 1.0; mat [9] [0] = 0.1; mat [9] [1] = 0.15; mat [9] [2] = 1.0; mat [9] [3] = 1.0; mat [10] [0] = 0.8; mat [10] [1] = 0.8; mat [10] [2] = 0.8; mat [10] [3] = 1.0; mat [11] [0] = 0.95; mat [11] [1] = 0.6; mat [11] [2] = 0.4; mat [11] [3] = 1.0; mat [12] [0] = 0.9; mat [12] [1] = 0.75; mat [12] [2] = 0.55; mat [12] [3] = 1.0; mat [13] [0] = 1.0; mat [13] [1] = 0.76; mat [13] [2] = 0.35; mat [13] [3] = 1.0; mat [14] [0] = 0.7; mat [14] [1] = 0.7; mat [14] [2] = 0.65; mat [14] [3] = 1.0; mat [15] [0] = 0.75; mat [15] [1] = 0.78; mat [15] [2] = 0.68; mat [15] [3] = 1.0; mat [16] [0] = 0.7; mat [16] [1] = 0.7; mat [16] [2] = 0.7; mat [16] [3] = 1.0;*/ for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) if (hw [i] [i2] == 0) { hw [i] [i2] = h [i] [i2]; } i = 0; while (i < 256) { bool again = false; xtree [i] = -0.48 + 0.001 * myrandom (960); ytree [i] = -0.48 + 0.001 * myrandom (960); for (i2 = i - 1; i2 >= 0 && i2 >= i - 6; i2 --) { if (fabs (xtree [i] - xtree [i2]) + fabs (ytree [i] - ytree [i2]) < 0.08) { again = true; break; } } if (!again) i ++; } if (type >= 0) precalculate (); // do not precalculate anything for custom height maps } #endif gl-117-1.3.2/src/glland.cpp~0000644000175000017500000027364110145416156014643 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a random landscape generator. */ #ifndef IS_GLLAND_H #include "glland.h" #include "main.h" #include "mathtab.h" #include "gl.h" #include "common.h" #include const float zoomz = 1.0/(100.0*MAXX); const float hh = (float) 1 / (float) MAXX; const float zoomz2 = 32768.0 * zoomz; const float hh2 = 2.0*hh; CTexture *texgrass, *texrocks, *texwater, *textree, *textree2, *textree3, *texcactus1, *texredstone; CTexture *textreeu, *textreeu2, *textreeu3, *textreeu4, *textreeu5, *texcactusu1; CTexture *textree4, *textree5, *texearth, *texsand, *texredsand, *texgravel1; CTexture *texglitter1; VertexArray *va; VertexArray vertexarrayquadstrip; VertexArray vertexarrayquad [20]; VertexArray vertexarraytriangle [20]; VertexArray vertexarrayglitter [2]; class IndexCounter { public: int index [100]; int n; IndexCounter () { init (); } ~IndexCounter () { } void init () { n = 0; memset (index, 0, 100 * sizeof (int)); } int get (int index1) { int i; for (i = 0; i < n; i ++) { if (index [i] == index1) return i; } index [n] = index1; n ++; return n - 1; } }; IndexCounter ic; void GLLandscape::norm (float *c) { float n; n = 1.0/sqrt(c[0]*c[0]+c[1]*c[1]+c[2]*c[2]); c[0] *= n; c[1] *= n; c[2] *= n; } void GLLandscape::normalcrossproduct( float* a, float* b, float*c ) { c[0] = a[1]*b[2] - a[2]*b[1]; c[1] = a[2]*b[0] - a[0]*b[2]; c[2] = a[0]*b[1] - a[1]*b[0]; norm (c); } int GLLandscape::selectColor (int x, int y) { return f [x] [y]; /* if (f [x] [y] == GRASS) return 0; else if (f [x] [y] >= CONIFEROUSWOODS1 && f [x] [y] <= MIXEDWOODS3) return 1; else if (f [x] [y] == ROCKS) return 2; else if (f [x] [y] == GLACIER) return 3; else if (f [x] [y] >= DWARFPINES1 && f [x] [y] <= BUSHES3) return 1; else if (f [x] [y] == WATER) return 5; else if (f [x] [y] == SHALLOWWATER) return 4; else if (f [x] [y] == DEEPWATER) return 6; else if (f [x] [y] == ROCKS2) return 7; else if (f [x] [y] == XSHALLOWWATER) return 8; else if (f [x] [y] == XDEEPWATER) return 9; else if (f [x] [y] == MOONSAND) return 10; else if (f [x] [y] == REDSTONE) return 11; else if (f [x] [y] == REDSAND || f [x] [y] == REDTREE0) return 12; else if (f [x] [y] == DESERTSAND || f [x] [y] == CACTUS0) return 13; else if (f [x] [y] == GREYSAND) return 14; else if (f [x] [y] == GRAVEL) return 15; else if (f [x] [y] == TOWN) return 16; else return 0;*/ } void GLLandscape::precalculate () { int i, i2, i3, i4, x, z; float no[3]; float nw[3]; float so[3]; float sw[3]; float a[3]; float c[3]; // initialize dynamic light mask memset (dl, 0, (MAXX + 1) * (MAXX + 1)); norm (lv); // normalize light vector lightfac = (0.002 * contrast + 1.0) * 0.001 / 256.0; // generate greyish material values for night if necessary float matgrey [MAXMATERIAL] [4]; if (!day) { float greyfactor = 0.75; // 0 = grey, 1 = no modification for (i = 0; i < MAXMATERIAL; i ++) { float mid = (mat [i] [0] + mat [i] [1] + mat [i] [2]) / 3.0F; matgrey [i] [0] = mid + (mat [i] [0] - mid) * greyfactor; matgrey [i] [1] = mid + (mat [i] [1] - mid) * greyfactor; matgrey [i] [2] = mid + (mat [i] [2] - mid) * greyfactor; } } // create coarse height map for (x = 0; x <= MAXX - 4; x += 4) for (z = 0; z <= MAXX - 4; z += 4) { unsigned short max = 0, min = 65535; for (i = 0; i <= 3; i ++) for (i2 = 0; i2 <= 3; i2 ++) { if (hw [x + i] [z + i2] > max) max = hw [x + i] [z + i2]; if (hw [x + i] [z + i2] < min) min = hw [x + i] [z + i2]; } hcmax [x / 4] [z / 4] = max; hcmin [x / 4] [z / 4] = min; } // set the colors of the landscape hastowns = false; float mzoom = zoomz; for (x=0; x<=MAXX; x++) for (z=0; z<=MAXX; z++) { int a; a = f [x] [z]; if (type == 2 && a == 4) { a = 11; } else if (type == 4 && a == 4) { a = 2; } else if (a == 16) { hastowns = true; } if (day) { r [x] [z] = (unsigned char) (mat [a] [0] * 255.9); g [x] [z] = (unsigned char) (mat [a] [1] * 255.9); b [x] [z] = (unsigned char) (mat [a] [2] * 255.9); } else { r [x] [z] = (unsigned char) (matgrey [a] [0] * 255.9); g [x] [z] = (unsigned char) (matgrey [a] [1] * 255.9); b [x] [z] = (unsigned char) (matgrey [a] [2] * 255.9); } } long sum; // smooth the colors (obsolete) /* long g3[3][3]={{0,1,0}, {1,4,1}, {0,1,0}}; for (i = 1; i < MAXX; i ++) for (i2 = 1; i2 < MAXX; i2 ++) { sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3[i3][i4] * r[i+i3-1][i2+i4-1]; } sum /= 8; lg[i][i2]=sum; } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { r [i] [i2] = (unsigned char) lg [i] [i2]; } for (i = 1; i < MAXX; i ++) for (i2 = 1; i2 < MAXX; i2 ++) { sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3[i3][i4] * g[i+i3-1][i2+i4-1]; } sum /= 8; lg[i][i2]=sum; } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { g [i] [i2] = (unsigned char) lg [i] [i2]; } for (i = 1; i < MAXX; i ++) for (i2 = 1; i2 < MAXX; i2 ++) { float sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3[i3][i4] * b[i+i3-1][i2+i4-1]; } sum /= 8; lg[i][i2]=sum; } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { b [i] [i2] = (unsigned char) lg [i] [i2]; }*/ // Set the height mask for the lowest sunrays touching the landscape's surface // This is just an approximation presuming the sun is a vertical line float m1 = mzoom / hh; float ih = tan ((sungamma + 5) * PI / 180) / m1; // 0 degree vertical sun radius for (x = 0; x <= MAXX; x ++) { float rayheight = hw [x] [MAXX]; for (z = MAXX; z >= 0; z --) { unsigned short maxheight = (int) rayheight; if (rayheight < hw [x] [z]) { rayheight = hw [x] [z]; maxheight = hw [x] [z]; } rayheight -= ih; hray [x] [z] = maxheight; } } // precalculate water light, always the same angle int nlwater = 1200 - (int) (1000.0 * 2.0 * fabs ((90.0 - sungamma) * PI / 180.0) / PI); // precalculate a height average int midheight = (highestpoint + lowestpoint) / 2; // set minimum ambient light int minambient = (int) (100.0 + sungamma * 4); if (!day) minambient = 100; if (minambient > 350) minambient = 350; // Set the luminance of the landscape for (x = 0; x <= MAXX; x ++) for (z = 0; z <= MAXX; z ++) { int xm1 = GETCOORD(x - 1); int xp1 = GETCOORD(x + 1); int zm1 = GETCOORD(z - 1); int zp1 = GETCOORD(z + 1); // Calculate the normal vectors a[0] = 0; a[1] = (float) (hw[x][zm1] - hw[x][z]) * mzoom; a[2] = -hh; c[0] = -hh; c[1] = (float) (hw[xm1][z] - hw[x][z]) * mzoom; c[2] = 0; normalcrossproduct( a, c, nw ); a[0] = hh; a[1] = (float) (hw[xp1][z] - hw[x][z]) * mzoom; a[2] = 0; c[0] = 0; c[1] = (float) (hw[x][zm1] - hw[x][z]) * mzoom; c[2] = -hh; normalcrossproduct( a, c, no ); a[0] = 0; a[1] = (float) (hw[x][zp1] - hw[x][z]) * mzoom; a[2] = hh; c[0] = hh; c[1] = (float) (hw[xp1][z] - hw[x][z]) * mzoom; c[2] = 0; normalcrossproduct( a, c, so ); a[0] = -hh; a[1] = (float) (hw[xm1][z] - hw[x][z]) * mzoom; a[2] = 0; c[0] = 0; c[1] = (float) (hw[x][zp1] - hw[x][z]) * mzoom; c[2] = hh; normalcrossproduct( a, c, sw ); float normx = (no[0] + nw[0] + so[0] + sw[0]) / 4.0; float normy = (no[1] + nw[1] + so[1] + sw[1]) / 4.0; float normz = (no[2] + nw[2] + so[2] + sw[2]) / 4.0; // Calculate the light hitting the surface float gamma = (float) acos (normx * lv [0] + normy * lv [1] + normz * lv [2]); // angle if (!isWater (f [x] [z])) { nl [x] [z] = 1200 - (int) (900.0 * 2.0 * fabs (gamma) / PI); // calculate light if (type == LAND_CANYON) // in canyons more ambient light in higher regions nl [x] [z] += (h [x] [z] - midheight) / 40; // typical max height diff is 10000 } else { nl [x] [z] = nlwater; // precalculated light (above) } if (nl [x] [z] < minambient) // minimum ambient light nl [x] [z] = minambient; // Check whether this point is in the shadow of some mountain if (hw [x] [z] < hray [x] [z]) { nl [x] [z] /= 2; if (nl [x] [z] < minambient) nl [x] [z] = minambient; // minimum ambient light } } // Smooth the luminance (very important) long g3_1[3][3]={{1,2,1}, {2,4,2}, {1,2,1}}; for (i = 1; i <= MAXX - 1; i ++) { for (i2 = 1; i2 <= MAXX - 1; i2 ++) { sum = 0; for (i3 = 0; i3 < 3; i3 ++) for (i4 = 0; i4 < 3; i4 ++) { sum += g3_1[i3][i4] * nl[i+i3-1][i2+i4-1]; } sum /= 16; lg[i][i2] = (unsigned short) sum; } } for (i = 1; i <= MAXX - 1; i ++) for (i2 = 1; i2 <= MAXX - 1; i2 ++) { nl [i] [i2] = lg [i] [i2]; } // Assign textures: tex1 = quad texture // if tex2 defined: tex1 = upper triangle texture, tex2 = lower triangle texture for (i = 0; i < MAXX; i ++) for (i2 = 0; i2 < MAXX; i2 ++) { drawrule [i] [i2] = 0; int f1 = f [i] [i2], f2 = f [i + 1] [i2], f3 = f [i] [i2 + 1], f4 = f [i + 1] [i2 + 1]; if (isType (f1, GRASS)) { tex1 [i] [i2] = texgrass->textureID; } else if (isWoods (f1) || isType (f1, MOONSAND) || isType (f1, REDSAND) || isType (f1, REDTREE0) || isType (f1, CACTUS0) || isType (f1, GREYSAND)) { tex1 [i] [i2] = texredsand->textureID; } else if (isType (f1, GRAVEL)) { tex1 [i] [i2] = texgravel1->textureID; } else if (isWater (f1)) { if (type == 0 || type == 2) tex1 [i] [i2] = texgrass->textureID; else tex1 [i] [i2] = 0xFF; } else if (isType (f1, ROCKS) || isType (f1, ROCKS2)) { tex1 [i] [i2] = texrocks->textureID; } else if (isType (f1, REDSTONE)) { tex1 [i] [i2] = texredstone->textureID; } else if (isType (f1, DESERTSAND)) { tex1 [i] [i2] = texsand->textureID; } else { tex1 [i] [i2] = 0xFF; } if (!isGlacier (f1) && isGlacier (f2) && isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = 0xFF; } if (isGlacier (f1) && !isGlacier (f2) && !isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (!isGlacier (f1) && !isGlacier (f2) && !isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (isGlacier (f1) && isGlacier (f2) && isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 1; tex1 [i] [i2] = 0xFF; tex2 [i] [i2] = texrocks->textureID; } if (isGlacier (f1) && !isGlacier (f2) && isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = 0xFF; } if (!isGlacier (f1) && isGlacier (f2) && !isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (!isGlacier (f1) && !isGlacier (f2) && isGlacier (f3) && !isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = texrocks->textureID; tex2 [i] [i2] = texrocks->textureID; } if (isGlacier (f1) && isGlacier (f2) && !isGlacier (f3) && isGlacier (f4)) { drawrule [i] [i2] = 2; tex1 [i] [i2] = 0xFF; tex2 [i] [i2] = texrocks->textureID; } } } // Get height over landscape/water, no interpolation (fast) float GLLandscape::getMinHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hcmin[mx/4][mz/4]*zoomz - zoomz2)); } // Get height over landscape/water, no interpolation (fast) float GLLandscape::getMaxHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hcmax[mx/4][mz/4]*zoomz - zoomz2)); } // Get height over landscape/water, no interpolation (fast) float GLLandscape::getHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hw[mx][mz]*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight2 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 1; mz1 -= mz1 & 1; int mx2 = mx1 + 2; int mz2 = mz1 + 2; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2/4*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight3 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 % 3; mz1 -= mz1 % 3; int mx2 = mx1 + 3; int mz2 = mz1 + 3; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2/9*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight4 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 3; mz1 -= mz1 & 3; int mx2 = mx1 + 4; int mz2 = mz1 + 4; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2/16*zoomz - zoomz2)); } // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactHeight (float x, float z) { if (gridstep == 2) return getExactHeight2 (x, z); else if (gridstep == 3) return getExactHeight3 (x, z); else if (gridstep == 4) return getExactHeight4 (x, z); float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); int mx2 = mx1 + 1; int mz2 = mz1 + 1; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2*zoomz - zoomz2)); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight2 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 1; mz1 -= mz1 & 1; int mx2 = mx1 + 2; int mz2 = mz1 + 2; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2/4*zoomz - zoomz2); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight3 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 % 3; mz1 -= mz1 % 3; int mx2 = mx1 + 3; int mz2 = mz1 + 3; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2/9*zoomz - zoomz2); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight4 (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); mx1 -= mx1 & 3; mz1 -= mz1 & 3; int mx2 = mx1 + 4; int mz2 = mz1 + 4; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2/16*zoomz - zoomz2); } // Get height over landscape/water without ZOOM scaling, linear interpolation (slow) // Only used to draw trees // Get height over landscape/water, linear interpolation (slow) float GLLandscape::getExactLSHeight (float x, float z) { if (gridstep == 2) return getExactLSHeight2 (x, z); else if (gridstep == 3) return getExactLSHeight3 (x, z); else if (gridstep == 4) return getExactLSHeight4 (x, z); float mx = x; float mz = z; int mx1 = (int) floor (mx); int mz1 = (int) floor (mz); int mx2 = mx1 + 1; int mz2 = mz1 + 1; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hw[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hw[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hw[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hw[ax2][az2]*(mx-mx1)*(mz-mz1); return (h2*zoomz - zoomz2); } // Get height of lowest sunray, no interpolation float GLLandscape::getRayHeight (float x, float z) { int mx = GETCOORD((int)floor (x)); int mz = GETCOORD((int)floor (z)); return (ZOOM * ((float)hray[mx][mz]*zoomz - zoomz2)); } // Get height of lowest sunray, linear interpolation float GLLandscape::getExactRayHeight (float x, float z) { float mx = x; float mz = z; int mx1 = (int) floor (mx); int mx2 = mx1 + 1; int mz1 = (int) floor (mz); int mz2 = mz1 + 1; int ax1 = GETCOORD(mx1); int ax2 = GETCOORD(mx2); int az1 = GETCOORD(mz1); int az2 = GETCOORD(mz2); float h2 = (float)hray[ax1][az1]*((float)mx2-mx)*((float)mz2-mz) + (float)hray[ax2][az1]*(mx-mx1)*((float)mz2-mz) + (float)hray[ax1][az2]*((float)mx2-mx)*(mz-mz1) + (float)hray[ax2][az2]*(mx-mx1)*(mz-mz1); return (ZOOM * (h2*zoomz - zoomz2)); } // Draw tree using two static quads (high quality, slow) void GLLandscape::drawTree (float x, float y, float htree, float wtree, int phi) { float ht = getExactLSHeight (x, y); phi = 359 - phi; if (phi < 0 || phi > 359) { printf ("Test: maybe a problem in drawTree!"); } // Draw tree using a single rotated quad (low quality, fast) float ex1 = cosi [phi] * wtree, ey1 = sine [phi] * wtree; float ex2 = -ex1, ey2 = -ey1; int myticker; float zy = 0; if (weather == 1) // stormy weather { myticker = (int) (0.05 / htree * lsticker / timestep + 1000 * wtree + (x + y) * 50); if (myticker != 0) myticker %= 360; zy = 0.2 * (2.0 + sine [myticker]); } if (texturetree1 >= 0) { // glBindTexture (GL_TEXTURE_2D, texturetree1); va = &vertexarrayquad [texturetree1 + 1]; va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 1); va->glVertex3f (hh2*(ex1+x), ht + htree, hh2*((ey1+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 1); va->glVertex3f (hh2*(ex2+x), ht + htree, hh2*((ey2+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 0); va->glVertex3f (hh2*(ex2+x), ht, hh2*((ey2+y))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 0); va->glVertex3f (hh2*(ex1+x), ht, hh2*((ey1+y))); } if (quality >= 2 && texturetree2 >= 0) { wtree *= 1.4F; ht += htree * 0.4F; zy *= 0.4F; phi += 45; if (phi >= 360) phi -= 360; ex1 = cosi [phi] * wtree; ey1 = sine [phi] * wtree; ex2 = -ex1; ey2 = -ey1; phi += 90; if (phi >= 360) phi -= 360; float ex3 = cosi [phi] * wtree, ey3 = sine [phi] * wtree; float ex4 = -ex3, ey4 = -ey3; // glBindTexture (GL_TEXTURE_2D, texturetree2); va = &vertexarrayquad [texturetree2 + 1]; va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 1); va->glVertex3f (hh2*(ex1+x), ht, hh2*((ey1+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 1); va->glVertex3f (hh2*(ex3+x), ht, hh2*((ey3+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (1, 0); va->glVertex3f (hh2*(ex2+x), ht, hh2*((ey2+y+zy))); va->glColor3ub (treecolor.c [0], treecolor.c [1], treecolor.c [2]); va->glTexCoord2d (0, 0); va->glVertex3f (hh2*(ex4+x), ht, hh2*((ey4+y+zy))); } } float xtree [256]; float ytree [256]; // Draw tree using two static quads (high quality, slow) void GLLandscape::drawTreeQuad (int x, int y, int phi, bool hq) { int i; int rotval = (x + 2 * y) & 127; int xs = getCoord (x); int ys = getCoord (y); if (f [xs] [ys] >= CONIFEROUSWOODS0 && f [xs] [ys] <= CONIFEROUSWOODS3) { texturetree1 = textree2->textureID; if (hq) texturetree2 = textreeu2->textureID; else texturetree2 = -1; int trees = CONIFEROUSWOODS3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0035 + 0.0002 * ((3 * y + 2 * x) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 70, phi); } } else if (f [xs] [ys] >= DECIDUOUSWOODS0 && f [xs] [ys] <= DECIDUOUSWOODS3) { texturetree1 = textree->textureID; if (hq) texturetree2 = textreeu->textureID; else texturetree2 = -1; int trees = DECIDUOUSWOODS3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0035 + 0.0003 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 60, phi); } } else if (f [xs] [ys] >= MIXEDWOODS0 && f [xs] [ys] <= MIXEDWOODS3) { texturetree1 = textree2->textureID; if (hq) texturetree2 = textreeu2->textureID; else texturetree2 = -1; int trees = MIXEDWOODS3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < 2; i ++) { float htree = 0.0035 + 0.0002 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 70, phi); } texturetree1 = textree5->textureID; if (hq) texturetree2 = textreeu5->textureID; else texturetree2 = -1; for (i = 2; i < 3; i ++) { float htree = 0.0025 + 0.00015 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 60, phi); } texturetree1 = textree->textureID; if (hq) texturetree2 = textreeu->textureID; else texturetree2 = -1; for (i = 3; i < trees; i ++) { float htree = 0.0035 + 0.0003 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 60, phi); } } else if (f [xs] [ys] >= DWARFPINES0 && f [xs] [ys] <= DWARFPINES3) { texturetree1 = textree3->textureID; if (hq) texturetree2 = textreeu3->textureID; else texturetree2 = -1; int trees = DWARFPINES3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0015 + 0.00015 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 150, phi); } } else if (f [xs] [ys] >= BUSHES0 && f [xs] [ys] <= BUSHES3) { texturetree1 = textree5->textureID; if (hq) texturetree2 = textreeu5->textureID; else texturetree2 = -1; int trees = BUSHES3 - f [xs] [ys] + 1; if (hq && quality >= 2) trees += (trees - 1); for (i = 0; i < trees; i ++) { float htree = 0.0025 + 0.00015 * ((3 * y + 2 * x + 4 * i) & 7); drawTree (xtree [i + rotval] + x, ytree [i + rotval] + y, htree, htree * 80, phi); } } else if (f [xs] [ys] == REDTREE0) { texturetree1 = textree4->textureID; if (hq) texturetree2 = textreeu4->textureID; else texturetree2 = -1; drawTree (x, y, 0.004, 0.35, phi); } else if (f [xs] [ys] == CACTUS0) { texturetree1 = texcactus1->textureID; if (hq) texturetree2 = texcactusu1->textureID; else texturetree2 = -1; drawTree (x, y, 0.004, 0.3, phi); } } void GLLandscape::drawTown (int x, int y) { int xs = getCoord (x); int ys = getCoord (y); if (f [xs] [ys] == TOWN) { CVector3 tl; CRotation rot; rot.a = 270; rot.c = 90 * ((xs + ys / 3) & 3); tl.set (x + 0.5, getExactHeight ((float) xs + 0.5, (float) ys + 0.5) + 0.2, y + 0.5); glPushMatrix (); model_house1.draw (&tl, NULL, &rot, 0.3, 1, 0); glPopMatrix (); return; } } int visibility = 0; // Fast landscape rendering without textures void GLLandscape::drawQuadStrip (int x1, int y1, int x2, int y2) { int x, y, xs, ys; float cr, cg, cb; bool water = false; bool last = false; int step = fargridstep; float texred, texgreen, texblue; va = &vertexarrayquadstrip; glDisable (GL_TEXTURE_2D); CTexture *tex; x1 -= x1 % step; y1 -= y1 % step; for (xs = x1; xs < x2;) { x = GETCOORD(xs); for (ys = y1; ys < y2;) { y = GETCOORD(ys); int xstep = GETCOORD(x + step); int y2 = GETCOORD(y + step); if (gl->isSphereInFrustum ((float) xs + 0.5F * step, (float)(hw[x][y]+hw[xstep][y])*0.5, (float) ys, step*8)) { int a = f [x] [y]; if (a >= 40 && a <= 49) water = true; int x2 = xstep; int y0 = GETCOORD(y - step); if (!(h [x] [y] < hw [x] [y] && h [x2] [y] < hw [x2] [y] && h [x] [y2] < hw [x] [y2] && h [x2] [y2] < hw [x2] [y2] && h [x] [y0] < hw [x] [y0] && h [x2] [y0] < hw [x2] [y0])) { if (!last) { last = true; va->glBegin (GL_QUAD_STRIP); } tex = texmap [a]; if (tex == NULL) { texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; } else { texred = tex->texred; texgreen = tex->texgreen; texblue = tex->texblue; } float fac = lightfac * (nl [x] [y] + (short) dl [x] [y] * 16) * sunlight; cr = (float) r [x] [y] * fac * texred; cg = (float) g [x] [y] * fac * texgreen; cb = (float) b [x] [y] * fac * texblue; if (cr >= texred) cr = texred; if (cg >= texgreen) cg = texgreen; if (cb >= texblue) cb = texblue; va->glColor3f (cr, cg, cb); va->glVertex3f (xs, (float)h[x][y], (ys)); fac = lightfac * (nl [xstep] [y] + (short) dl [xstep] [y] * 16) * sunlight; cr = (float) r [x + step] [y] * fac * texred; cg = (float) g [x + step] [y] * fac * texgreen; cb = (float) b [x + step] [y] * fac * texblue; if (cr >= texred) cr = texred; if (cg >= texgreen) cg = texgreen; if (cb >= texblue) cb = texblue; va->glColor3f (cr, cg, cb); va->glVertex3f ((xs+step), (float)h[xstep][y], (ys)); } else { if (last) va->glEnd (); last = false; } } ys += step; } if (last) { va->glEnd (); last = false; } xs += step; } last = false; if (water) { float texlight; float watergreen = 0.00025; if (day) watergreen = 0.0004; for (xs = x1; xs < x2;) { x = GETCOORD(xs); for (ys = y1; ys < y2;) { y = GETCOORD(ys); int xstep = GETCOORD(x + step); int ystep = GETCOORD(y + step); int ymstep = GETCOORD(y - step); if (isWater (f [x] [y]) || isWater (f [xstep] [y]) || isWater (f [xstep] [ystep]) || isWater (f [x] [ystep]) || isWater (f [x] [ymstep]) || isWater (f [xstep] [ymstep])) { float h1 = hw [x] [y]; if (hw [xstep] [ystep] < h1) h1 = hw [xstep] [ystep]; if (hw [xstep] [y] < h1) h1 = hw [xstep] [y]; if (hw [x] [ystep] < h1) h1 = hw [x] [ystep]; if (hw [x] [ymstep] < h1) h1 = hw [x] [ymstep]; if (hw [xstep] [ymstep] < h1) h1 = hw [xstep] [ymstep]; if (gl->isSphereInFrustum ((xs), (float)h1, (ys), step*2)) { if (!last) { last = true; va->glBegin (GL_QUAD_STRIP); } texlight = texwater->texlight; float d = watergreen * (h1 - h [x] [y]); if (d > 0.75) d = 0.75; if (type == LAND_ALPINE) { cr = 0.1 * 256; cg = (0.85 - d) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_CANYON) { cr = (0.55 - d/2) * 256; cg = (0.55 - d/2) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_ARCTIC) { cr = (0.7 - d/2) * 256; cg = (0.7 - d/2) * 256; cb = (0.7 + d / 2) * 256; } else { cr = 0; cg = 0; cb = 0; } float fac = lightfac * (nl [x] [y] + (short) dl [x] [y] * 16) * sunlight * texlight; cr = (float) cr * fac; cg = (float) cg * fac; cb = (float) cb * fac; if (cr > texlight) cr = texlight; if (cg < 0.1 * texlight) cg = 0.1 * texlight; if (cg > texlight) cg = texlight; if (cb > texlight) cb = texlight; va->glColor3f (cr, cg, cb); va->glVertex3f (xs, h1, (ys)); d = watergreen * (h1 - h [xstep] [y]); if (d > 0.75) d = 0.75; if (type == LAND_ALPINE) { cr = 0.1 * 256; cg = (0.85 - d) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_CANYON) { cr = (0.55 - d/2) * 256; cg = (0.55 - d/2) * 256; cb = (0.6 + d) * 256; } else if (type == LAND_ARCTIC) { cr = (0.7 - d/2) * 256; cg = (0.7 - d/2) * 256; cb = (0.7 + d / 2) * 256; } fac = lightfac * (nl [xstep] [y] + (short) dl [xstep] [y] * 16) * sunlight * texlight; cr = (float) cr * fac; cg = (float) cg * fac; cb = (float) cb * fac; if (cr > texlight) cr = texlight; if (cg < 0.1 * texlight) cg = 0.1 * texlight; if (cg > texlight) cg = texlight; if (cb > texlight) cb = texlight; va->glColor3f (cr, cg, cb); va->glVertex3f ((xs+step), h1, (ys)); } else { if (last) va->glEnd (); last = false; } } ys += step; } if (last) { va->glEnd (); last = false; } xs += step; } } } // Draw a single untextured quad void GLLandscape::drawQuad (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { int j; int step = fargridstep; float texred, texgreen, texblue; CTexture *tex = NULL; float col [4] [3]; float pos [4] [3]; float fac; int px [4], py [4]; int xs = x1, ys = y1; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; px [3] = x4; py [3] = y4; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 4; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+xs), midh, (0.5+ys), size * 2)) return; va = &vertexarrayquad [0]; int a = f [x] [y]; tex = texmap [a]; if (tex == NULL) { texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; } else { texred = tex->texred; texgreen = tex->texgreen; texblue = tex->texblue; } // glDisable (GL_TEXTURE_2D); float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac * texred; col [j] [1] = g [mx] [my] * fac * texgreen; col [j] [2] = b [mx] [my] * fac * texblue; if (col [j] [0] >= texred) col [j] [0] = texred; if (col [j] [1] >= texgreen) col [j] [1] = texgreen; if (col [j] [2] >= texblue) col [j] [2] = texblue; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single untextured triangle void GLLandscape::drawTriangle (int x1, int y1, int x2, int y2, int x3, int y3) { int j; int step = fargridstep; float texred, texgreen, texblue; CTexture *tex = NULL; float col [3] [3]; float pos [3] [3]; float fac; int px [3], py [3]; int xs = x1, ys = y1; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 3; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+xs), midh, (0.5+ys), size * 2)) return; va = &vertexarraytriangle [0]; int a = f [x] [y]; tex = texmap [a]; if (tex == NULL) { texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; } else { texred = tex->texred; texgreen = tex->texgreen; texblue = tex->texblue; } // glDisable (GL_TEXTURE_2D); float fac2 = lightfac * sunlight; for (j = 0; j < 3; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac * texred; col [j] [1] = g [mx] [my] * fac * texgreen; col [j] [2] = b [mx] [my] * fac * texblue; if (col [j] [0] >= texred) col [j] [0] = texred; if (col [j] [1] >= texgreen) col [j] [1] = texgreen; if (col [j] [2] >= texblue) col [j] [2] = texblue; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } // glBegin (GL_TRIANGLES); for (j = 0; j < 3; j ++) { va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } // glEnd(); } // Draw a single textured quad void GLLandscape::drawTexturedQuad (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(x2); int y = GETCOORD(y2); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; px [3] = x4; py [3] = y4; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 4; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+x2), midh, (0.5+y2), size * 2)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarrayquad [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarrayquad [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } int texcoord = 0; if (tex1 [x] [y] == texredstone->textureID) { texzoom = 0.5; texcoord = 1; } else if (tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { if (texcoord == 0) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } else { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) h [GETCOORD(px [j])] [GETCOORD(py [j])] * texzoom / 400.0; } } for (j = 0; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single textured triangle void GLLandscape::drawTexturedTriangle (int x1, int y1, int x2, int y2, int x3, int y3) { int j; int step = gridstep; bool texture = false; float col [3] [3]; float pos [3] [3]; float tf [3] [2]; float fac; float texzoom; int px [3], py [3]; int x = GETCOORD(x2); int y = GETCOORD(y2); px [0] = x1; py [0] = y1; px [1] = x2; py [1] = y2; px [2] = x3; py [2] = y3; float minh = h[x][y]; float maxh = minh; for (j = 1; j < 3; j ++) { int h1 = h [GETCOORD(px [j])] [GETCOORD(py [j])]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+x2), midh, (0.5+y2), size * 2)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } int texcoord = 0; if (tex1 [x] [y] == texredstone->textureID) { texzoom = 0.5; texcoord = 1; } else if (tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 3; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 3; j ++) { if (texcoord == 0) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } else { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) h [GETCOORD(px [j])] [GETCOORD(py [j])] * texzoom / 400.0; } } for (j = 0; j < 3; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single textured quad void GLLandscape::drawTexturedQuad (int xs, int ys) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int pcx [4], pcy [4]; px [0] = xs; py [0] = ys; px [1] = xs + step; py [1] = ys; px [2] = xs + step; py [2] = ys + step; px [3] = xs; py [3] = ys + step; for (j = 0; j < 4; j ++) { pcx [j] = GETCOORD(px [j]); pcy [j] = GETCOORD(py [j]); } int x = GETCOORD(pcx [0]); int y = GETCOORD(pcy [0]); float minh = h [x] [y]; float maxh = minh; for (j = 1; j < 4; j ++) { int h1 = h [pcx [j]] [pcy [j]]; if (h1 > maxh) maxh = h1; else if (h1 < minh) minh = h1; } float midh = (minh + maxh) / 2; float size = (maxh - minh) * step; // exakt w�e mal 0.5 if (size < 1.0 / 2 * step) size = 1.0 / 2 * step; if (!gl->isSphereInFrustum ((0.5+xs), midh, (0.5+ys), size * 2)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarrayquad [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarrayquad [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } int texcoord = 0; if (tex1 [x] [y] == texredstone->textureID) { texzoom = 0.5; texcoord = 1; } else if (tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = pcx [j], my = pcy [j]; fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = (float) r [mx] [my] * fac; col [j] [1] = (float) g [mx] [my] * fac; col [j] [2] = (float) b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { if (texcoord == 0) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } else { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) h [pcx [j]] [pcy [j]] * texzoom / 400.0; } } for (j = 0; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw a single textured water quad void GLLandscape::drawWaterTexturedQuad (int xs, int ys) { int i, j; int step = gridstep; bool texture = false; float col [4] [4]; float pos [4] [3]; float tf [4] [2]; float li [4]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(xs); int y = GETCOORD(ys); int xstep = GETCOORD(xs + step); int ystep = GETCOORD(ys + step); px [0] = xs; py [0] = ys; li [0] = (nl [x] [y] + (short) dl [x] [y] * 16); px [1] = xs + step; py [1] = ys; li [1] = (nl [xstep] [y] + (short) dl [xstep] [y] * 16); px [2] = xs + step; py [2] = ys + step; li [2] = (nl [xstep] [ystep] + (short) dl [xstep] [ystep] * 16); px [3] = xs; py [3] = ys + step; li [3] = (nl [x] [ystep] + (short) dl [x] [ystep] * 16); float h1 = hw [x] [y]; for (i = 1; i <= 3; i ++) { int mx = GETCOORD(px [i]); int my = GETCOORD(py [i]); if (hw [mx] [my] < h1) { h1 = hw [mx] [my]; } } if (!gl->isSphereInFrustum ((0.5+xs), (float) h1, (0.5+ys), step)) return; float quadglittering = 0; float glitter [4] = { 1, 1, 1, 1 }; if (specialeffects) if (weather == WEATHER_SUNNY || weather == WEATHER_CLOUDY) { float dz1 = fabs ((float) camx - xs); float dz2 = fabs ((float) camx - xs - step); float dy = fabs (camy - (h1*zoomz - zoomz2) * ZOOM); float dtheta1 = fabs (atan (dy / dz1) * 180.0 / PI - 90); float dtheta2 = fabs (atan (dy / dz2) * 180.0 / PI - 90); dtheta1 /= 4; dtheta2 /= 4; // if (lz1 <= 5 || lz2 <= 5) { float divdy = 1.0F / dy * 200; float dx1 = ((float) -camz + ys); float dx2 = ((float) -camz + ys + step); // float dy = fabs (camy - (h1*zoomz - zoomz2) * ZOOM); float dgamma1 = fabs (atan (dy / dx1) * 180.0 / PI - sungamma); float dgamma2 = fabs (atan (dy / dx2) * 180.0 / PI - sungamma); dgamma1 /= 4; dgamma2 /= 4; float sc = 1.0; float test; if (dx1 < 0) dgamma1 += 90; if (dx2 < 0) dgamma2 += 90; if (h1 >= hray [x] [y]) { test = sc * exp ((-dgamma1 * dgamma1 - dtheta1 * dtheta1) / divdy) + 0.98; if (test > 1.0) { glitter [0] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } if (h1 >= hray [xstep] [y]) { test = sc * exp ((-dgamma1 * dgamma1 - dtheta2 * dtheta2) / divdy) + 0.98; if (test > 1.0) { glitter [1] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } if (h1 >= hray [x] [ystep]) { test = sc * exp ((-dgamma2 * dgamma2 - dtheta1 * dtheta1) / divdy) + 0.98; if (test > 1.0) { glitter [3] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } if (h1 >= hray [xstep] [ystep]) { test = sc * exp ((-dgamma2 * dgamma2 - dtheta2 * dtheta2) / divdy) + 0.98; if (test > 1.0) { glitter [2] = test; if (test > glittering) glittering = test; if (test > quadglittering) quadglittering = test; } } } } texture = true; va = &vertexarrayquad [texwater->textureID + 1]; gl->enableTextures (texwater->textureID); texzoom = 0.5; float watergreen = 0.00025; if (day) watergreen = 0.0004; float fac2 = lightfac * sunlight * 256.0; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); float d = watergreen * (h1 - h [mx] [my]); if (d > 0.75) d = 0.75; fac = fac2 * li [j]; if (type == LAND_ALPINE) { col [j] [0] = 0.1 * fac; col [j] [1] = (0.85 - d) * fac; col [j] [2] = (0.6 + d) * fac; } else if (type == LAND_CANYON) { col [j] [0] = (0.55 - d/2) * fac; col [j] [1] = (0.55 - d/2) * fac; col [j] [2] = (0.6 + d) * fac; } else if (type == LAND_ARCTIC) { col [j] [0] = (0.7 - d/2) * fac; col [j] [1] = (0.7 - d/2) * fac; col [j] [2] = (0.7 + d / 2) * fac; } if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] <= 0.1) col [j] [1] = 0.1; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h1; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { float waterspeed = 0.008; if (weather == 1) waterspeed = 0.016; tf [j] [0] = (float) px [j] * texzoom + waterspeed * lsticker / timestep; tf [j] [1] = (float) py [j] * texzoom; } for (j = 0; j < 4; j ++) { if (texture) { va->glTexCoord2fv (tf [j]); } va->glColor4fv (col [j]); va->glVertex3fv (pos [j]); } va = &vertexarrayglitter [0]; if (specialeffects && quadglittering > 1.2) { glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_ONE, GL_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); gl->enableTextures (texglitter1->textureID); gl->enableLinearTexture (texglitter1->textureID); for (j = 0; j < 4; j ++) { if (texture) { tf [j] [0] = (px [j] * texzoom) + (float) ((lsticker / timestep / 2) & 7) * 0.6; tf [j] [1] = (py [j] * texzoom) + (float) ((lsticker / timestep / 2) & 7) * 0.6; va->glTexCoord2fv (tf [j]); } col [j] [3] = glitter [j] - 1.0; col [j] [0] = 1.0; col [j] [1] = 1.0; col [j] [2] = 1.0; va->glColor4fv (col [j]); va->glVertex3fv (pos [j]); } glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); } va = &vertexarrayglitter [1]; if (specialeffects && quadglittering > 1.02) { glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.02); glDisable (GL_TEXTURE_2D); for (j = 0; j < 4; j ++) { col [j] [3] = glitter [j] - 1.0; col [j] [0] = 1.0; col [j] [1] = 1.0; col [j] [2] = 1.0; va->glColor4fv (col [j]); va->glVertex3fv (pos [j]); } glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); } } // Draw two textured triangles (quad) void GLLandscape::drawTexturedTriangle1 (int xs, int ys) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = xs; py [0] = ys; px [1] = xs + step; py [1] = ys; px [2] = xs + step; py [2] = ys + step; px [3] = xs; py [3] = ys + step; if (!gl->isSphereInFrustum ((0.5+xs), (float)h[x][y], (0.5+ys), 2*step)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } if (tex1 [x] [y] != texgrass->textureID && tex1 [x] [y] != texgrass->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my] * 16); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } for (j = 0; j < 3; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } if (tex2 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; } else { texture = true; va = &vertexarraytriangle [tex2 [x] [y] + 1]; } if (tex2 [x] [y] != texgrass->textureID && tex2 [x] [y] != texredstone->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } if (texture) va->glTexCoord2fv (tf [0]); va->glColor3fv (col [0]); va->glVertex3fv (pos [0]); for (j = 2; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } } // Draw two textured triangles (quad) void GLLandscape::drawTexturedTriangle2 (int xs, int ys) { int j; int step = gridstep; bool texture = false; float col [4] [3]; float pos [4] [3]; float tf [4] [2]; float fac; float texzoom; int px [4], py [4]; int x = GETCOORD(xs); int y = GETCOORD(ys); px [0] = xs; py [0] = ys; px [1] = xs + step; py [1] = ys; px [2] = xs + step; py [2] = ys + step; px [3] = xs; py [3] = ys + step; if (!gl->isSphereInFrustum ((0.5+xs), (float)h[x][y], (0.5+ys), 2*step)) return; if (tex1 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex1 [x] [y] + 1]; // gl->enableTextures (tex1 [x] [y]); } if (tex1 [x] [y] != texgrass->textureID && tex1 [x] [y] != texredstone->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } float fac2 = lightfac * sunlight; for (j = 0; j < 4; j ++) { int mx = GETCOORD(px [j]), my = GETCOORD(py [j]); fac = fac2 * (nl [mx] [my] + (short) dl [mx] [my]); col [j] [0] = r [mx] [my] * fac; col [j] [1] = g [mx] [my] * fac; col [j] [2] = b [mx] [my] * fac; if (col [j] [0] >= 1.0) col [j] [0] = 1.0; if (col [j] [1] >= 1.0) col [j] [1] = 1.0; if (col [j] [2] >= 1.0) col [j] [2] = 1.0; pos [j] [0] = px[j]; pos [j] [1] = (float)h[mx][my]; pos [j] [2] = py[j]; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } // glBegin (GL_TRIANGLES); for (j = 0; j < 2; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } if (texture) va->glTexCoord2fv (tf [3]); va->glColor3fv (col [3]); va->glVertex3fv (pos [3]); // glEnd(); if (tex2 [x] [y] == 0xFF) { texture = false; va = &vertexarraytriangle [0]; // glDisable (GL_TEXTURE_2D); } else { texture = true; va = &vertexarraytriangle [tex2 [x] [y] + 1]; // gl->enableTextures (tex2 [x] [y]); } if (tex2 [x] [y] != texgrass->textureID && tex2 [x] [y] != texredstone->textureID) { texzoom = 0.5; } else { texzoom = 0.25; } for (j = 0; j < 4; j ++) { tf [j] [0] = (float) px [j] * texzoom; tf [j] [1] = (float) py [j] * texzoom; } // glBegin (GL_TRIANGLES); for (j = 1; j < 4; j ++) { if (texture) va->glTexCoord2fv (tf [j]); va->glColor3fv (col [j]); va->glVertex3fv (pos [j]); } // glEnd(); } void GLLandscape::draw (int phi, int gamma) { char buf [STDSIZE]; int i, i2, i3, x, y; int xs, ys; float fac; int fardetail = quality; int middetail = quality; int lineardetail = -1; // until v1.2 (no vertex arrays) /* if (quality == 0) { neargridstep = 3; fargridstep = 3; middetail = -1; fardetail = -1; lineardetail = -1; } else if (quality == 1) { neargridstep = 2; fargridstep = 4; middetail = 2; fardetail = 2; lineardetail = -1; } else if (quality == 2) { neargridstep = 2; fargridstep = 4; middetail = 5; fardetail = 5; lineardetail = -1; } else if (quality == 3) { neargridstep = 2; fargridstep = 4; middetail = 7; fardetail = 7; lineardetail = 0; } else if (quality == 4) { neargridstep = 2; fargridstep = 2; middetail = -1; fardetail = 7; lineardetail = 0; } else { neargridstep = 1; fargridstep = 2; middetail = 3; fardetail = 7; lineardetail = 0; }*/ if (quality == 0) { neargridstep = 3; fargridstep = 3; middetail = -1; fardetail = -1; lineardetail = -1; } else if (quality == 1) { neargridstep = 2; fargridstep = 4; middetail = 3; fardetail = 3; lineardetail = -1; } else if (quality == 2) { neargridstep = 2; fargridstep = 4; middetail = 6; fardetail = 6; lineardetail = -1; } else if (quality == 3) { neargridstep = 2; fargridstep = 2; middetail = -1; fardetail = 7; lineardetail = 0; } else if (quality == 4) { neargridstep = 1; fargridstep = 2; middetail = 3; fardetail = 7; lineardetail = 0; } else { neargridstep = 1; fargridstep = 2; middetail = 5; fardetail = 7; lineardetail = 0; } if (phi < 0) phi += 360; else if (phi >= 360) phi -= 360; if (gamma < 0) gamma += 360; else if (gamma >= 360) gamma -= 360; if (phi < 0 || phi >= 360) { sprintf (buf, "Phi exceeds in file %s, line %d, val %d", __FILE__, __LINE__, phi); display (buf, LOG_ERROR); } if (gamma < 0 || gamma >= 360) { sprintf (buf, "Gamma exceeds in file %s, line %d, val %d", __FILE__, __LINE__, gamma); display (buf, LOG_ERROR); } glPushMatrix (); glScalef (MAXX2, ZOOM, MAXX2); glPushMatrix (); glTranslatef (0, -zoomz2, 0); glScalef (hh2, zoomz, hh2); gl->extractFrustum (); float pseudoview = getView (); float radius = pseudoview / cosi [45]; int minx = (int) (camx - radius); int miny = (int) (camz - radius); int maxx = (int) (minx + radius * 2); int maxy = (int) (miny + radius * 2); space->z1->x = minx - MAXX2; space->z1->y = -MAXX2; space->z1->z = maxy - MAXX2; space->z2->x = maxx - MAXX2; space->z2->y = MAXX2; space->z2->z = miny - MAXX2; if (camera == 50) { minx = 0; maxx = MAXX; miny = 0; maxy = MAXX; } int parts = (int) (view / 13); parts *= 2; parts ++; if (parts >= PARTS) { display ("view exceeds ray casting blocks - not implemented", LOG_FATAL); exit (6); } int mp = parts / 2; for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { float d = dist (mp - i, mp - i2); detail [i] [i2] = (int) (d * 200.0F / view); // do not use pseudoview } float dx = (float) (maxx - minx + 1) / parts; float dy = (float) (maxy - miny + 1) / parts; // Efficient occlusion culling (kind of ray casting technique): // Run from inner grid point (viewer) to outer grid parts and check if grid points are hidden // This is currently not completely correct (needs two comparisons of inner fields), but // it already works very well, so I negligate the second comparison, as it would double the code for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { int ax = minx + (int) (dx * (float) i2); int ay = miny + (int) (dy * (float) i); int zx = minx + (int) (dx * (float) (i2 + 1)); int zy = miny + (int) (dy * (float) (i + 1)); vmin [i] [i2] = 65535; vmax [i] [i2] = 0; for (int i3 = 0; i3 < zy - ay + 1; i3 += 4) for (int i4 = 0; i4 < zx - ax + 1; i4 += 4) { int by = getCoord (ay + i3) / 4; int bx = getCoord (ax + i4) / 4; if (hcmin [bx] [by] < vmin [i] [i2]) vmin [i] [i2] = hcmin [bx] [by]; if (hcmax [bx] [by] > vmax [i] [i2]) vmax [i] [i2] = hcmax [bx] [by]; } } // ray casting bool dosecondtest = false; int count = 0; bool set = true; memset (vis, 0, PARTS * PARTS * sizeof (bool)); int cx = parts / 2, cy = parts / 2; float ch = (unsigned int) ((camy / ZOOM + zoomz2) / zoomz); // - (h1*zoomz - zoomz2) * ZOOM; vh [cy] [cx] = ch; vis [cy] [cx] = set; for (i = cy + 1; i < parts; i ++) for (i2 = parts - i - 1; i2 < i + 1; i2 ++) { int lasty = 1; int lastx = 0; if (i2 < cx) lastx = -1; if (i2 > cx) lastx = 1; // if (i2 == cx - 1 && i2 > parts - i - 1) lastx = 0; // if (i2 == cx + 1 && i2 < i - 1) lastx = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i2 < cx && i2 > parts - i - 1) { lastx = 0; secondtest = true; } if (i2 > cx && i2 < i) { lastx = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } for (i = cy - 1; i >= 0; i --) for (i2 = i; i2 < parts - i; i2 ++) { int lasty = -1; int lastx = 0; if (i2 < cx) lastx = -1; if (i2 > cx) lastx = 1; if (i2 == cx - 1 && i2 > i) lastx = 0; if (i2 == cx + 1 && i2 < parts - 1) lastx = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i2 < cx && i2 > i) { lastx = 0; secondtest = true; } if (i2 > cx && i2 < parts - i - 1) { lastx = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } for (i2 = cx + 1; i2 < parts; i2 ++) for (i = parts - i2; i < i2; i ++) { int lasty = 0; int lastx = 1; if (i < cy) lasty = -1; if (i > cy) lasty = 1; if (i == cy - 1 && i > parts - i2) lasty = 0; if (i == cy + 1 && i < i2) lasty = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i < cy && i > parts - i2) { lasty = 0; secondtest = true; } if (i > cy && i < i2 - 1) { lasty = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } for (i2 = cx - 1; i2 >= 0; i2 --) for (i = i2 + 1; i < parts - i2 - 1; i ++) { int lasty = 0; int lastx = -1; if (i < cy) lasty = -1; if (i > cy) lasty = 1; if (i == cy - 1 && i > i2 - 1) lasty = 0; if (i == cy + 1 && i < parts - i2 - 1) lasty = 0; int vminref = (int) vh [i - lasty] [i2 - lastx]; int deltax = cx - i2 + lastx; int deltay = cy - i + lasty; float dist1 = sqrt ((float) deltax * deltax + deltay * deltay); float dist2 = sqrt ((float) lastx * lastx + lasty * lasty); int dh1 = vminref - (int) ch; int dhp; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h1 = vminref + dhp; if (h1 < vmin [i] [i2]) h1 = vmin [i] [i2]; // also test non-diagonal element if available if (dosecondtest) { bool secondtest = false; if (i < cy && i > i2 + 1) { lasty = 0; secondtest = true; } if (i > cy && i < parts - i2 - 2) { lasty = 0; secondtest = true; } if (secondtest) { vminref = (int) vh [i - lasty] [i2 - lastx]; deltax = cx - i2 + lastx; deltay = cy - i + lasty; dist1 = sqrt ((float) deltax * deltax + deltay * deltay); dist2 = sqrt ((float) lastx * lastx + lasty * lasty); dh1 = vminref - (int) ch; if (dist1 > 1E-4) dhp = (int) (dist2 * dh1 / dist1); else dhp = -30000; int h11 = vminref + dhp; if (h11 < vmin [i] [i2]) h11 = vmin [i] [i2]; if (h11 < h1) h1 = h11; } } vh [i] [i2] = h1; if (vmax [i] [i2] >= h1) vis [i] [i2] = set; else { vis [i] [i2] = !set; count ++; } } // printf ("c=%d ", count); // memset (vis, 0xFF, PARTS * PARTS * sizeof (bool)); for (i = 0; i < 20; i ++) vertexarrayquad [i].glBegin (GL_QUADS); for (i = 0; i < 20; i ++) vertexarraytriangle [i].glBegin (GL_TRIANGLES); vertexarrayglitter [0].glBegin (GL_QUADS); vertexarrayglitter [1].glBegin (GL_QUADS); int zz1 = 0, zz = 0; if (quality <= 0 || camera == 50) { drawQuadStrip (minx, miny, maxx, maxy); } else { if (mode == 0) { for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) if (vis [i] [i2]) { int ax = (minx + (int) (dx * (float) i2)); int ay = (miny + (int) (dy * (float) i)); int zx = (minx + (int) (dx * (float) (i2 + 1))); int zy = (miny + (int) (dy * (float) (i + 1))/* + gridstep*/); if (fargridstep == 2) { ax -= ax & 1; ay -= ay & 1; zx -= zx & 1; zy -= zy & 1; } else if (fargridstep == 3) { ax -= ax % 3; ay -= ay % 3; zx -= zx % 3; zy -= zy % 3; } else if (fargridstep == 4) { ax -= ax & 3; ay -= ay & 3; zx -= zx & 3; zy -= zy & 3; } if (detail [i] [i2] > fardetail) { zy += fargridstep; // if (gl->isSphereInFrustum ((ax+zx)/2, (float)hw[getCoord((ax+zx)/2)][getCoord((ay+zy)/2)], ((float)(ay+zy)/2), (zx-ax)*2.0)) if (gl->isSphereInFrustum (ax, (float)hw[getCoord(ax)][getCoord(ay)], (float)(ay), 0.00001) || gl->isSphereInFrustum (ax, (float)hw[getCoord(ax)][getCoord(zy)], (float)(zy), 0.00001) || gl->isSphereInFrustum (zx, (float)hw[getCoord(zx)][getCoord(ay)], (float)(ay), 0.00001) || gl->isSphereInFrustum (zx, (float)hw[getCoord(zx)][getCoord(zy)], (float)(zy), 0.00001)) { drawQuadStrip (ax, ay, zx, zy); } else { float sl = sunlight; sunlight = 10.0; // drawQuadStrip (ax, ay, zx, zy); sunlight = sl; } } else { if (detail [i] [i2] <= lineardetail) { gl->enableLinearTexture (texgrass->textureID); gl->enableLinearTexture (texgravel1->textureID); gl->enableLinearTexture (texredsand->textureID); gl->enableLinearTexture (texrocks->textureID); gl->enableLinearTexture (texwater->textureID); gl->enableLinearTexture (texredstone->textureID); } else { gl->disableLinearTexture (texgrass->textureID); gl->disableLinearTexture (texgravel1->textureID); gl->disableLinearTexture (texredsand->textureID); gl->disableLinearTexture (texrocks->textureID); gl->disableLinearTexture (texwater->textureID); gl->disableLinearTexture (texredstone->textureID); } if (detail [i] [i2] <= middetail) { if (i > 0) // south { if (detail [i - 1] [i2] > middetail) { if (fargridstep == 3 * neargridstep) { ys = ay; for (xs = ax; xs < zx;) { drawTexturedQuad (xs, ys, xs + 3 * neargridstep, ys, xs + 2 * neargridstep, ys, xs + 1 * neargridstep, ys); xs += fargridstep; } } else if (fargridstep == 2 * neargridstep) { ys = ay; for (xs = ax; xs < zx;) { drawTexturedTriangle (xs, ys, xs + 2 * neargridstep, ys, xs + 1 * neargridstep, ys); xs += fargridstep; } } } } if (i < parts - 1) // north { if (detail [i + 1] [i2] > middetail) { if (fargridstep == 3 * neargridstep) { ys = zy; for (xs = ax; xs < zx;) { drawTexturedQuad (xs, ys, xs + 1 * neargridstep, ys, xs + 2 * neargridstep, ys, xs + 3 * neargridstep, ys); xs += fargridstep; } } else if (fargridstep == 2 * neargridstep) { ys = zy; for (xs = ax; xs < zx;) { drawTexturedTriangle (xs, ys, xs + 1 * neargridstep, ys, xs + 2 * neargridstep, ys); xs += fargridstep; } } } } if (i2 > 0) // east { if (detail [i] [i2 - 1] > middetail) { if (fargridstep == 3 * neargridstep) { xs = ax; for (ys = ay; ys < zy;) { drawTexturedQuad (xs, ys, xs, ys + 1 * neargridstep, xs, ys + 2 * neargridstep, xs, ys + 3 * neargridstep); ys += fargridstep; } } else if (fargridstep == 2 * neargridstep) { xs = ax; for (ys = ay; ys < zy;) { drawTexturedTriangle (xs, ys, xs, ys + 1 * neargridstep, xs, ys + 2 * neargridstep); ys += fargridstep; } } } } if (i2 < parts - 1) // west { if (detail [i] [i2 + 1] > middetail) { if (fargridstep == 3 * neargridstep) { xs = zx; for (ys = ay; ys < zy;) { drawTexturedQuad (xs, ys, xs, ys + 3 * neargridstep, xs, ys + 2 * neargridstep, xs, ys + 1 * neargridstep); ys += fargridstep; } } else if (fargridstep == 2 * neargridstep) { xs = zx; for (ys = ay; ys < zy;) { drawTexturedTriangle (xs, ys, xs, ys + 2 * neargridstep, xs, ys + 1 * neargridstep); ys += fargridstep; } } } } gridstep = neargridstep; } else { gridstep = fargridstep; } for (xs = ax; xs < zx;) { x = GETCOORD(xs); for (ys = ay; ys < zy;) { y = GETCOORD(ys); zz1 ++; int x2 = GETCOORD(xs+gridstep); int y2 = GETCOORD(ys+gridstep); if (h [x] [y] < hw [x] [y] && h [x2] [y] < hw [x2] [y] && h [x] [y2] < hw [x] [y2] && h [x2] [y2] < hw [x2] [y2]) ; // water else { if (drawrule [x] [y] == 0) drawTexturedQuad (xs, ys); else if (drawrule [x] [y] == 2) drawTexturedTriangle1 (xs, ys); else drawTexturedTriangle2 (xs, ys); } ys += gridstep; zz ++; } xs += gridstep; } for (xs = ax; xs < zx;) { x = GETCOORD(xs); for (ys = ay; ys < zy;) { y = GETCOORD(ys); zz1 ++; int xstep = GETCOORD(xs + gridstep); int ystep = GETCOORD(ys + gridstep); if (isWater (f [x] [y]) || isWater (f [xstep] [y]) || isWater (f [xstep] [ystep]) || isWater (f [x] [ystep])) { drawWaterTexturedQuad (xs, ys); } ys += gridstep; zz ++; } xs += gridstep; } } } // for i2 } // if mode } glDisable (GL_TEXTURE_2D); vertexarrayquad [0].glEnd (); vertexarraytriangle [0].glEnd (); for (i = 1; i < 20; i ++) { gl->enableTextures (i - 1); vertexarrayquad [i].glEnd (); vertexarraytriangle [i].glEnd (); } glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_ONE, GL_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); gl->enableTextures (texglitter1->textureID); gl->enableLinearTexture (texglitter1->textureID); vertexarrayglitter [0].glEnd (); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); glEnable (GL_BLEND); glDepthFunc (GL_LEQUAL); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.02); glDisable (GL_TEXTURE_2D); vertexarrayglitter [1].glEnd (); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_ALPHA_TEST); glDisable (GL_BLEND); glPopMatrix (); gl->extractFrustum (); int treestep = 2; if (quality >= 2) treestep = 1; // Draw trees, bushes if (quality >= 1) { glPushMatrix (); glDisable (GL_CULL_FACE); if (quality >= 6) { gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); } else { glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.5); } gl->enableTextures (textree->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree2->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree3->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree4->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (textree5->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableTextures (texcactus1->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); float mydep = 1000; if (quality == 2) mydep = 1800; else if (quality == 3) mydep = 2500; else if (quality == 4) mydep = 3200; else if (quality == 5) mydep = 3800; if (mydep > view * view) mydep = view * view; int cutdep = 800; int lineartree = -1; if (antialiasing) lineartree = 0; float treelightfac = lightfac * 1000.0 * 256.0 * 0.00085; for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { if (detail [i] [i2] > middetail) gridstep = fargridstep; else gridstep = neargridstep; if (detail [i] [i2] <= lineartree) { gl->enableLinearTexture (textree->textureID); gl->enableLinearTexture (textree2->textureID); gl->enableLinearTexture (textree3->textureID); gl->enableLinearTexture (textree4->textureID); gl->enableLinearTexture (textree5->textureID); gl->enableLinearTexture (texcactus1->textureID); gl->enableLinearTexture (textreeu->textureID); gl->enableLinearTexture (textreeu2->textureID); gl->enableLinearTexture (textreeu3->textureID); gl->enableLinearTexture (textreeu4->textureID); gl->enableLinearTexture (textreeu5->textureID); gl->enableLinearTexture (texcactusu1->textureID); } else { gl->disableLinearTexture (textree->textureID); gl->disableLinearTexture (textree2->textureID); gl->disableLinearTexture (textree3->textureID); gl->disableLinearTexture (textree4->textureID); gl->disableLinearTexture (textree5->textureID); gl->disableLinearTexture (texcactus1->textureID); gl->disableLinearTexture (textreeu->textureID); gl->disableLinearTexture (textreeu2->textureID); gl->disableLinearTexture (textreeu3->textureID); gl->disableLinearTexture (textreeu4->textureID); gl->disableLinearTexture (textreeu5->textureID); gl->disableLinearTexture (texcactusu1->textureID); } int ax = minx + (int) (dx * (float) i2); int ay = miny + (int) (dy * (float) i); int ex = minx + (int) (dx * (float) (i2 + 1)); int ey = miny + (int) (dy * (float) (i + 1)) + treestep; float dep; if (treestep == 2) { ax -= ax & 1; ay -= ay & 1; } for (i3 = 1; i3 < 20; i3 ++) vertexarrayquad [i3].glBegin (GL_QUADS); for (i3 = 1; i3 < 20; i3 ++) vertexarraytriangle [i3].glBegin (GL_TRIANGLES); for (xs = ax; xs < ex;) { x = GETCOORD(xs); zz = 0; for (ys = ay; ys <= ey;) { y = GETCOORD(ys); float tdx = camx - xs; float tdy = camz - ys; dep = tdx * tdx + tdy * tdy; if (dep < mydep) if (isWoods (f [x] [y]) || isType (f [x] [y], REDTREE0) || isType (f [x] [y], CACTUS0)) if (gl->isSphereInFrustum (hh2*(xs), (float)h[x][y]*zoomz - zoomz2, hh2*((ys)), hh2*2)) { float cg = g [x] [y]; fac = treelightfac * (nl [x] [y] + (short) dl [x] [y] * 16) * sunlight; cg = (float) cg * fac; if (cg >= 256.0) cg = 255.0; treecolor.c [0] = treecolor.c [1] = treecolor.c [2] = (int) cg; drawTreeQuad (xs, ys, phi, dep < cutdep); } ys += treestep; } // ys for xs += treestep; } // xs for for (i3 = 1; i3 < 20; i3 ++) { glBindTexture (GL_TEXTURE_2D, i3 - 1); vertexarrayquad [i3].glEnd (); vertexarraytriangle [i3].glEnd (); } } glDisable (GL_ALPHA_TEST); glPopMatrix (); gl->disableAlphaBlending (); } glDisable (GL_TEXTURE_2D); glPopMatrix (); if (quality >= 1 && hastowns) { float mydep = 1000; if (quality == 2) mydep = 1800; else if (quality == 3) mydep = 2600; else if (quality == 4) mydep = 3300; else if (quality == 5) mydep = 4000; if (mydep > view * view) mydep = view * view; for (i = 0; i < parts; i ++) for (i2 = 0; i2 < parts; i2 ++) { int ax = minx + (int) (dx * (float) i2); int ay = miny + (int) (dy * (float) i); int ex = minx + (int) (dx * (float) (i2 + 1)); int ey = miny + (int) (dy * (float) (i + 1)); float dep; for (xs = ax; xs < ex;) { x = GETCOORD(xs); zz = 0; for (ys = ay; ys <= ey;) { y = GETCOORD(ys); if (f [x] [y] == TOWN) { float tdx = camx - xs; float tdy = camz - ys; dep = tdx * tdx + tdy * tdy; if (dep < mydep) if (gl->isSphereInFrustum (hh2*(xs), (float)h[x][y]*zoomz - zoomz2, hh2*((ys)), hh2*2)) { drawTown (xs, ys); } } ys += 1; } // ys for xs += 1; } // xs for } } gridstep = neargridstep; // set to finer grid for ground collision detection } void GLLandscape::calcDynamicLight (CExplosion **explo, DynamicObj **cannon, DynamicObj **missile, DynamicObj **flare) { int i, x, y; memset (dl, 0, (MAXX + 1) * (MAXX + 1)); if (!dynamiclighting) return; for (i = 0; i < maxexplosion; i ++) { if (explo [i]->ttl > 0) { int mx = (int) explo [i]->tl->x; int mz = (int) explo [i]->tl->z; float h = explo [i]->tl->y - getHeight (explo [i]->tl->x, explo [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 50) { float intens = 100.0 - 2 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * explo [i]->zoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } if (!day) for (i = 0; i < maxlaser; i ++) { if (cannon [i]->draw && cannon [i]->active) { int mx = (int) cannon [i]->tl->x; int mz = (int) cannon [i]->tl->z; float h = cannon [i]->tl->y - getHeight (cannon [i]->tl->x, cannon [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 15) { float intens = 75.0 - 5 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * cannon [i]->zoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } for (i = 0; i < maxmissile; i ++) { if (missile [i]->draw && missile [i]->active) { int mx = (int) missile [i]->tl->x; int mz = (int) missile [i]->tl->z; float h = missile [i]->tl->y - getHeight (missile [i]->tl->x, missile [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 15) { float intens = 150.0 - 10 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * missile [i]->zoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } float flarezoom = 0.2F; for (i = 0; i < maxflare; i ++) { if (flare [i]->draw && flare [i]->active) { int mx = (int) flare [i]->tl->x; int mz = (int) flare [i]->tl->z; float h = flare [i]->tl->y - getHeight (flare [i]->tl->x, flare [i]->tl->z); if (h < 0) h = 0; float radius = h / 2 + 3; if (h < 50) { float intens = 200.0 - 2 * h; for (x = mx - (int) radius; x <= mx + (int) radius; x ++) for (y = mz - (int) radius; y <= mz + (int) radius; y ++) { int xn = GETCOORD(x); int yn = GETCOORD(y); int dx = x - mx, dy = y - mz; float dist = sqrt (dx*dx + dy*dy); if (dist < radius) { int light = (int) ((radius - dist) * intens / radius * flarezoom) + dl [xn] [yn]; if (light > 255) light = 255; dl [xn] [yn] = light; } } } } } } void GLLandscape::setMaterial (int n, float r, float g, float b, CTexture *tex) { mat [n] [0] = r; mat [n] [1] = g; mat [n] [2] = b; mat [n] [3] = 1.0; texmap [n] = tex; } GLLandscape::GLLandscape (Space *space2, int type, int *heightmask) { int i, i2; lsticker = 0; space = space2; randptr = 0; // if (!multiplayer || isserver) { if (type == LANDSCAPE_ALPINE || type == LANDSCAPE_ALPINE_NOLAKE || type == LANDSCAPE_LOW_ALPINE) { if (type == 0 || type == 1) { genSurface (60, heightmask); genRocks (30, 40); } else { genSurface (40, heightmask); genRocks (30, 10); } if (type == 0 || type == 2) { int lakes = myrandom (20) + 20; genLake (lakes); genLake (lakes / 3); genLake (lakes / 4); genLake (lakes / 4); genLake (2); genLake (2); genLake (2); genLake (2); genLake (2); } calcWoods (150); } else if (type == LANDSCAPE_ALPINE_EROSION) { genErosionSurface (50, heightmask); genRocks (30, 25); calcWoods (150); } else if (type == LANDSCAPE_ALPINE_SEA) { genSurface (60, heightmask); genRocks (30, 70); int diff = lowestpoint + (highestpoint - lowestpoint) * 3 / 4; for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { if (h [i] [i2] < diff) { hw [i] [i2] = diff; if (diff - h [i] [i2] < 1000) f [i] [i2] = SHALLOWWATER; else f [i] [i2] = DEEPWATER; } } } else if (type == LANDSCAPE_ALPINE_ROCKY) { genSurface (60, heightmask); genRocks (1, 99); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); genLake (10); calcWoods (200); } else if (type == LANDSCAPE_SEA) { for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { f [i] [i2] = DEEPWATER; h [i] [i2] = 10000; hw [i] [i2] = 30000; } } else if (type == LANDSCAPE_MOON) { genMoonSurface (60); for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { f [i] [i2] = MOONSAND; } } else if (type == LANDSCAPE_FLAT_MOON) { genMoonSurface (30); for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { f [i] [i2] = MOONSAND; } } else if (type == LANDSCAPE_CANYON) { genCanyonSurface (120); } else if (type == LANDSCAPE_ARCTIC) { genArcticSurface (60, NULL); } else if (type == LANDSCAPE_CANYON_TRENCH) { genCanyonSurface (10); genTrench (22, 3800); } else if (type == LANDSCAPE_DESERT) { genDesertSurface (20); } } /*#ifdef HAVE_SDL_NET if (isserver) { // Send map data to all clients char buf [10]; for (i = 0; i <= MAXX; i ++) { printf (" %d ", i); server->sendMessage (1, (char *) h [i], (MAXX + 1) * 2); server->sendMessage (1, (char *) hw [i], (MAXX + 1) * 2); server->sendMessage (1, (char *) f [i], (MAXX + 1) * 1); while (!server->getMessage (1, buf)) ; } } if (multiplayer && !isserver) { // for (;;) // { for (i = 0; i <= MAXX; i ++) { // printf (" %d ", i); while (!client->getMessage ((char *) h [i])) ; while (!client->getMessage ((char *) hw [i])) ; while (!client->getMessage ((char *) f [i])) ; client->sendMessage (".", 1); } } #endif*/ lv [0] = 0.0; lv [1] = 1.0; lv [2] = 1.0; for (i = 0; i < MAXMATERIAL; i ++) { if (i == GRASS) { setMaterial (i, 0.4, 0.8, 0.3, texgrass); } else if (i >= CONIFEROUSWOODS1 && i <= MIXEDWOODS3) { setMaterial (i, 0.3, 0.55, 0.2, texgrass); } else if (i == ROCKS) { setMaterial (i, 0.7, 0.7, 0.7, texrocks); } else if (i == GLACIER) { setMaterial (i, 1.0, 1.0, 1.0, NULL); } else if (i >= DWARFPINES1 && i <= BUSHES3) { setMaterial (i, 0.3, 0.55, 0.2, texgrass); } else if (i == WATER) { setMaterial (i, 0.2, 1.0, 0.2, texwater); } else if (i == SHALLOWWATER) { setMaterial (i, 0.25, 1.0, 0.25, texwater); } else if (i == DEEPWATER) { setMaterial (i, 0.1, 0.25, 1.0, texwater); } else if (i == ROCKS2) { setMaterial (i, 0.5, 0.5, 0.5, texrocks); } else if (i == XSHALLOWWATER) { setMaterial (i, 0.3, 1.0, 0.3, texwater); } else if (i == XDEEPWATER) { setMaterial (i, 0.1, 0.15, 1.0, texwater); } else if (i == MOONSAND) { setMaterial (i, 0.8, 0.8, 0.8, texgrass); } else if (i == REDSTONE) { setMaterial (i, 0.95, 0.6, 0.4, texredstone); } else if (i == REDSAND || i == REDTREE0) { setMaterial (i, 0.9, 0.75, 0.55, texgrass); } else if (i == DESERTSAND || i == CACTUS0) { setMaterial (i, 1.0, 0.76, 0.35, texgrass); } else if (i == GREYSAND) { setMaterial (i, 0.7, 0.7, 0.65, texgrass); } else if (i == GRAVEL) { setMaterial (i, 0.75, 0.78, 0.68, texgravel1); } else if (i == TOWN) { setMaterial (i, 0.7, 0.7, 0.7, texgrass); } else { setMaterial (i, 0.4, 0.8, 0.3, texgrass); } } /* texmap [0] = texmap [1] = texmap [10] = texmap [12] = texmap [13] = texgrass; texmap [2] = texmap [7] = texrocks; texmap [4] = texmap [5] = texmap [6] = texmap [8] = texmap [9] = texwater; texmap [11] = texredstone; texmap [13] = texsand; texmap [3] = texmap [14] = texmap [15] = texmap [16] = NULL; if (f [x] [y] == GRASS) return 0; else if (f [x] [y] >= CONIFEROUSWOODS1 && f [x] [y] <= MIXEDWOODS3) return 1; else if (f [x] [y] == ROCKS) return 2; else if (f [x] [y] == GLACIER) return 3; else if (f [x] [y] >= DWARFPINES1 && f [x] [y] <= BUSHES3) return 1; else if (f [x] [y] == WATER) return 5; else if (f [x] [y] == SHALLOWWATER) return 4; else if (f [x] [y] == DEEPWATER) return 6; else if (f [x] [y] == ROCKS2) return 7; else if (f [x] [y] == XSHALLOWWATER) return 8; else if (f [x] [y] == XDEEPWATER) return 9; else if (f [x] [y] == MOONSAND) return 10; else if (f [x] [y] == REDSTONE) return 11; else if (f [x] [y] == REDSAND || f [x] [y] == REDTREE0) return 12; else if (f [x] [y] == DESERTSAND || f [x] [y] == CACTUS0) return 13; else if (f [x] [y] == GREYSAND) return 14; else if (f [x] [y] == GRAVEL) return 15; else if (f [x] [y] == TOWN) return 16; else return 0; mat [0] [0] = 0.4; mat [0] [1] = 0.8; mat [0] [2] = 0.3; mat [0] [3] = 1.0; mat [1] [0] = 0.3; mat [1] [1] = 0.55; mat [1] [2] = 0.2; mat [1] [3] = 1.0; mat [2] [0] = 0.7; mat [2] [1] = 0.7; mat [2] [2] = 0.7; mat [2] [3] = 1.0; mat [3] [0] = 1.0; mat [3] [1] = 1.0; mat [3] [2] = 1.0; mat [3] [3] = 1.0; mat [4] [0] = 0.25; mat [4] [1] = 1.0; mat [4] [2] = 0.25; mat [4] [3] = 1.0; mat [5] [0] = 0.2; mat [5] [1] = 1.0; mat [5] [2] = 0.2; mat [5] [3] = 1.0; mat [6] [0] = 0.1; mat [6] [1] = 0.25; mat [6] [2] = 1.0; mat [6] [3] = 1.0; mat [7] [0] = 0.5; mat [7] [1] = 0.5; mat [7] [2] = 0.5; mat [7] [3] = 1.0; mat [8] [0] = 0.3; mat [8] [1] = 1.0; mat [8] [2] = 0.3; mat [8] [3] = 1.0; mat [9] [0] = 0.1; mat [9] [1] = 0.15; mat [9] [2] = 1.0; mat [9] [3] = 1.0; mat [10] [0] = 0.8; mat [10] [1] = 0.8; mat [10] [2] = 0.8; mat [10] [3] = 1.0; mat [11] [0] = 0.95; mat [11] [1] = 0.6; mat [11] [2] = 0.4; mat [11] [3] = 1.0; mat [12] [0] = 0.9; mat [12] [1] = 0.75; mat [12] [2] = 0.55; mat [12] [3] = 1.0; mat [13] [0] = 1.0; mat [13] [1] = 0.76; mat [13] [2] = 0.35; mat [13] [3] = 1.0; mat [14] [0] = 0.7; mat [14] [1] = 0.7; mat [14] [2] = 0.65; mat [14] [3] = 1.0; mat [15] [0] = 0.75; mat [15] [1] = 0.78; mat [15] [2] = 0.68; mat [15] [3] = 1.0; mat [16] [0] = 0.7; mat [16] [1] = 0.7; mat [16] [2] = 0.7; mat [16] [3] = 1.0;*/ for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) if (hw [i] [i2] == 0) { hw [i] [i2] = h [i] [i2]; } i = 0; while (i < 256) { bool again = false; xtree [i] = -0.48 + 0.001 * myrandom (960); ytree [i] = -0.48 + 0.001 * myrandom (960); for (i2 = i - 1; i2 >= 0 && i2 >= i - 6; i2 --) { if (fabs (xtree [i] - xtree [i2]) + fabs (ytree [i] - ytree [i2]) < 0.08) { again = true; break; } } if (!again) i ++; } if (type >= 0) precalculate (); // do not precalculate anything for custom height maps } #endif gl-117-1.3.2/src/glland.h0000644000175000017500000001403710145416156014102 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a wrapper for land.cpp to display the landscape. */ #ifndef IS_GLLAND_H #define IS_GLLAND_H #include #include "model.h" // ok #include "aiobject.h" // ok #include "effects.h" // ok #include "land.h" // ok #define PARTS 24 // maximum LOD parts // exact landscape type #define LANDSCAPE_ALPINE 0 #define LANDSCAPE_ALPINE_NOLAKE 1 #define LANDSCAPE_LOW_ALPINE 2 #define LANDSCAPE_ALPINE_EROSION 5 #define LANDSCAPE_ALPINE_SEA 6 #define LANDSCAPE_ALPINE_ROCKY 7 #define LANDSCAPE_SEA 10 #define LANDSCAPE_MOON 20 #define LANDSCAPE_FLAT_MOON 21 #define LANDSCAPE_CANYON 30 #define LANDSCAPE_CANYON_TRENCH 31 #define LANDSCAPE_DESERT 40 #define LANDSCAPE_ARCTIC 50 // number of materials #define MAXMATERIAL 101 // textures are loaded in main.cpp extern CTexture *texgrass, *texrocks, *texwater, *textree, *textree2, *textree3, *texcactus1, *texredstone; extern CTexture *textreeu, *textreeu2, *textreeu3, *textreeu4, *textreeu5, *texcactusu1; extern CTexture *textree4, *textree5, *texearth, *texsand, *texredsand, *texgravel1; extern CTexture *texglitter1; class GLLandscape : public Landscape { private: int texturetree1, texturetree2; public: short nl [MAXX + 2] [MAXX + 2]; // lighting mask, MAXX+1 x MAXX+1 is sufficient, but VC bug? float lv [3]; unsigned char r [MAXX + 1] [MAXX + 1]; // red unsigned char g [MAXX + 1] [MAXX + 1]; // green unsigned char b [MAXX + 1] [MAXX + 1]; // blue unsigned char drawrule [MAXX] [MAXX]; // draw triangles or quads? unsigned char tex1 [MAXX] [MAXX]; // texture for quad or triangle1 unsigned char tex2 [MAXX] [MAXX]; // texture for triangle2 if needed unsigned char dl [MAXX + 1] [MAXX + 1]; // dynamic light mask (explosions) int lsticker; // a timer increased every time draw() is called int neargridstep; // landscape near grid resolution (1=fine ... 4=coarse) int fargridstep; // landscape far grid resolution (1=fine ... 4=coarse) int gridstep; // landscape raster block grid resolution (1=fine ... 4=coarse) float glittering; // water glittering unsigned short hcmin [MAXX/4 + 1] [MAXX/4 + 1]; // height mask on a coarser grid: max{h[x+-2][y+-2]} unsigned short hcmax [MAXX/4 + 1] [MAXX/4 + 1]; // height mask on a coarser grid: max{h[x+-2][y+-2]} bool hastowns; private: unsigned short hray [MAXX + 1] [MAXX + 1]; // height of lowest sunray float mat [MAXMATERIAL] [4]; // materials=colors of landscape IDs CTexture *texmap [MAXMATERIAL]; // texture for material Space *space; // space of all objects CColor treecolor; int vmin [PARTS] [PARTS]; // LOD int vmax [PARTS] [PARTS]; // LOD float vh [PARTS] [PARTS]; // LOD bool vis [PARTS] [PARTS]; // LOD float lightfac; // light factor to multiply void norm (float *c); void normalcrossproduct (float *a, float *b, float *c); int selectColor (int x, int y); unsigned short lg [MAXX + 1] [MAXX + 1]; // gaussian filter result public: void precalculate (); // precalculate everything (colors, light mask) float getMinHeight (float x, float z); // min height of 4x4 grid at landscape point float getMaxHeight (float x, float z); // min height of 4x4 grid at landscape point float getHeight (float x, float z); // height at landscape point float getExactHeight2 (float x, float z); // linear interpolation, coarse grid float getExactHeight3 (float x, float z); // linear interpolation, coarse grid float getExactHeight4 (float x, float z); // linear interpolation, coarse grid float getExactHeight (float x, float z); // linear interpolation float getExactLSHeight2 (float x, float z); // linear interpolation, coarse grid float getExactLSHeight3 (float x, float z); // linear interpolation, coarse grid float getExactLSHeight4 (float x, float z); // linear interpolation, coarse grid float getExactLSHeight (float x, float z); // linear interpolation float getRayHeight (float x, float z); // height of lowest sun ray float getExactRayHeight (float x, float z); // linear interpolation void drawTree (float x, float y, float htree, float wtree, int phi); // two in one void drawTreeQuad (int x, int y, int phi, bool hq); void drawTown (int x, int y); int detail [PARTS] [PARTS]; // LOD void drawQuadStrip (int x1, int y1, int x2, int y2); // fast quad strip without textures void drawQuad (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); void drawTriangle (int x1, int y1, int x2, int y2, int x3, int y3); void drawTexturedQuad (int x, int y); void drawTexturedTriangle (int x1, int y1, int x2, int y2, int x3, int y3); void drawTexturedQuad (int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); void drawWaterTexturedQuad (int x, int y); void drawTexturedTriangle1 (int x, int y); void drawTexturedTriangle2 (int x, int y); void viewculling (); void draw (int phi, int gamma); // draw ALL void calcDynamicLight (CExplosion **explo, DynamicObj **cannon, DynamicObj **missile, DynamicObj **flare); // explosions light up the surface void setMaterial (int n, float r, float g, float b, CTexture *tex); GLLandscape (Space *space2, int type, int *heightmask); }; extern GLLandscape *l; #endif gl-117-1.3.2/src/land.cpp0000644000175000017500000014311710145416156014114 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a random landscape generator. */ #ifndef IS_LAND_H #include #include #include #include #include "land.h" #include "mathtab.h" /**************************************************************************** COMMON GLOBAL FUNCTIONS ****************************************************************************/ int Landscape::getCoord (int a) { return (a & MAXX_MASK); // return (a>=0)? a%MAXX : MAXX-a%MAXX; // more general version } /**************************************************************************** SMOOTING, CONVOLUTION, EROSION ****************************************************************************/ // fast Gaussian convolution (smoothing terrain) // H := height matrix, K := Gaussian kernel matrix // Let K := u conv v := (u^T)v, then H conv K = H conv (u conv v) = (H conv u) conv v void Landscape::convolveGauss (int radius, int hmin, int hmax) // only convolve height values in [hmin...hmax] { // create u and v vectors and restrict them to the interval [mincore...maxcore] float core_u [MAXCORE], core_v [MAXCORE]; int mincorex = 0, mincorey = 0, maxcorex = 0, maxcorey = 0; if (radius == 1) { core_u [4] = 0.25; core_u [5] = 0.5; core_u [6] = 0.25; core_v [4] = 0.25; core_v [5] = 0.5; core_v [6] = 0.25; mincorex = 4; maxcorex = 6; mincorey = 4; maxcorey = 6; } else if (radius == 2) { core_u [3] = 0.1F; core_u [4] = 0.2F; core_u [5] = 0.4F; core_u [6] = 0.2F; core_u [7] = 0.1F; core_v [3] = 0.1F; core_v [4] = 0.2F; core_v [5] = 0.4F; core_v [6] = 0.2F; core_v [7] = 0.1F; mincorex = 3; maxcorex = 7; mincorey = 3; maxcorey = 7; } else if (radius == 3) { core_u [2] = 0.05F; core_u [3] = 0.1F; core_u [4] = 0.2F; core_u [5] = 0.3F; core_u [6] = 0.2F; core_u [7] = 0.1F; core_u [8] = 0.05F; core_v [2] = 0.05F; core_v [3] = 0.1F; core_v [4] = 0.2F; core_v [5] = 0.3F; core_v [6] = 0.2F; core_v [7] = 0.1F; core_v [8] = 0.05F; mincorex = 2; maxcorex = 8; mincorey = 2; maxcorey = 8; } // do the convolutions int i, x, y, mx, my; float sum; float summe [MAXX + 1]; for (x = 0; x <= MAXX; x ++) summe [x] = 0; for (x = 0; x <= MAXX; x ++) { for (y = 0; y <= MAXX; y ++) // H conv u { summe [y] = 0; for (i = mincorex; i <= maxcorex; i ++) { mx = GETCOORD(x - MAXCORE / 2 + i); my = y; summe [y] += core_u [i] * h [mx] [my]; } } for (y = 0; y <= MAXX; y ++) // H conv v { if (h [x] [y] >= hmin && h [x] [y] <= hmax) // only convolve if current height in [hmin...hmax] { sum = 0; for (i = mincorey; i <= maxcorey; i ++) { my = GETCOORD(y - MAXCORE / 2 + i); sum += core_v [i] * summe [my]; } hg [x] [y] = (int) sum; } else { hg [x] [y] = h [x] [y]; } } } // copy hg back to h memcpy (h, hg, (MAXX+1) * (MAXX+1) * sizeof (unsigned short)); } // 'smooth' the glaciers using an erosion function void Landscape::smoothGlacier () { int i, i2; for (i = 0; i <= MAXX - 1; i ++) for (i2 = 0; i2 <= MAXX - 1; i2 ++) { if (f [i] [i2] == GLACIER) { int min = h[i][i2]; min = min < h[i+1][i2] ? min : h[i+1][i2]; min = min < h[i][i2+1] ? min : h[i][i2+1]; min = min < h[i+1][i2+1] ? min : h[i+1][i2+1]; h[i][i2] = min; } } } // Gaussian convolution for a single raster point (5x5) void Landscape::gauss (int x, int y) { if (x < 5) x = 5; else if (x > MAXX - 5) x = MAXX - 5; if (y < 5) y = 5; else if (y > MAXX - 5) y = MAXX - 5; int i, i2, i3, i4; int hmask [5] [5]; int g5[5][5]={{1,1,2,1,1}, {1,3,4,3,1}, {2,4,5,4,2}, {1,3,4,3,1}, {1,1,2,1,1}}; for (i = x-2; i <= x+2; i ++) for (i2 = y-2; i2 <= y+2; i2 ++) { int sum = 0; for (i3 = 0; i3 < 5; i3 ++) for (i4 = 0; i4 < 5; i4 ++) { sum += g5[i3][i4] * h[i+i3-2][i2+i4-2]; } sum /= 53; hmask [i-x+2] [i2-y+2] = sum; } for (i = x-2; i <= x+2; i ++) for (i2 = y-2; i2 <= y+2; i2 ++) { h[i][i2] = hmask[2][2]; hw[i][i2] = hmask[2][2]; } } // constant height for a single raster point (7x7) void Landscape::flatten (int x, int y, int dx, int dy) { int i, i2; if (x < dx) x = dx; else if (x > MAXX - dx) x = MAXX - dx; if (y < dy) y = dy; else if (y > MAXX - dy) y = MAXX - dy; for (i = x-dx; i <= x+dx; i ++) for (i2 = y-dy; i2 <= y+dy; i2 ++) { h[i][i2] = h[x][y]; hw[i][i2] = h[i][i2]; } } /**************************************************************************** LANDSCAPE TYPE QUERIES ****************************************************************************/ bool Landscape::isType (unsigned char type, unsigned char id) { return ((type & 0xFF) == (id << 0)); } bool Landscape::isWoods (int type) { type &= 0xFF; if (type >= CONIFEROUSWOODS0 && type <= BUSHES3) return true; return false; } bool Landscape::isWater (int type) { type &= 0xFF; if (type >= WATER && type <= XDEEPWATER) return true; return false; } bool Landscape::isGlacier (int type) { type &= 0xFF; if (type == GLACIER) return true; return false; } bool Landscape::isGround (int x, int y) { if (x < 0 || x > maxx || y < 0 || y > maxx) return false; int type = f [y] [x]; if (!isWater (type)) return true; return false; } /**************************************************************************** LANDSCAPE CREATION ****************************************************************************/ void Landscape::init () { int i, i2; for (i = 0; i <= maxx; i ++) for (i2 = 0; i2 <= maxx; i2 ++) { h [i] [i2] = 0; f [i] [i2] = 0; } } // cubic spline interpolation (obsolete -> Gaussian convolution) /* void interpolate (int n) { double s, r, q, a, b, c, d, e, f; int i, i2, i3, i4; long htest, p1, p2, p3, p4; i3 = n; i = 0; while (i <= maxx) { i2 = 0; while (i2 < maxx - (1 << i3)) { a = i2 + 1; b = i2 + (1 << i3) + 1; c = i2 + (1 << (i3 + 1)) + 1; d = h [(int) a - 1] [i]; e = h [(int) b - 1] [i]; f = h [(int) c - 1] [i]; double aq = a * a, bq = b * b, cq = c * c, mba = 1/b - 1/a, mca = 1/c - 1/a; s = ((f/cq-d/aq)/mca-(e/bq-d/aq)/mba)/((1/cq-1/aq)/mca-(1/bq-1/aq)/mba); r = ((e/bq-d/aq)/mba)-(1/bq-1/aq)/mba*s; q = d/aq - r/a - s/aq; for (i4 = (int) a + 1; i4 <= (int) c - 1; i4 ++) { if (i4 != b) { htest = (long) (i4 * i4 * q + i4 * r + s); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [i4 - 1] [i] == 0) { h [i4 - 1] [i] = h [i4 - 1] [i] + (int) (htest / 2); if (i4 - 1 < (1 << i3) || i4 - 1 > maxx - (1 << i3)) h [i4 - 1] [i] = h [i4 - 1] [i] * 2; } else { htest = htest / 2 + (htest - h [i4 - 1] [i] * 2) * (long) ((i4 - a) / (b - a) - 0.5); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; h [i4 - 1] [i] = h [i4 - 1] [i] + (int) htest; } } } i2 = i2 + (1 << i3); } i = i + (1 << i3); } i2 = 0; while (i2 <= maxx) { i = 0; while (i < maxx - (1 << i3)) { a = i + 1; b = i + (1 << i3) + 1; c = i + (1 << (i3 + 1)) + 1; d = h [i2] [(int) a - 1]; e = h [i2] [(int) b - 1]; f = h [i2] [(int) c - 1]; double aq = a * a, bq = b * b, cq = c * c, mba = 1/b - 1/a, mca = 1/c - 1/a; s = ((f/cq-d/aq)/mca-(e/bq-d/aq)/mba)/((1/cq-1/aq)/mca-(1/bq-1/aq)/mba); r = ((e/bq-d/aq)/mba)-(1/bq-1/aq)/mba*s; q = d/aq - r/a - s/aq; for (i4 = (int) a + 1; i4 <= (int) c - 1; i4 ++) { if (i4 != b) { htest = (long) (i4 * i4 * q + i4 * r + s); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [i2] [i4 - 1] == 0) { h [i2] [i4 - 1] = h [i2] [i4 - 1] + (int) (htest / 2); if (i4 - 1 < (1 << i3) || i4 - 1 > maxx - (1 << i3)) h [i2] [i4 - 1] = h [i2] [i4 - 1] * 2; } else { htest = htest / 2 + (htest - h [i2] [i4 - 1] * 2) * (long) ((i4 - a) / (b - a) - 0.5); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; h [i2] [i4 - 1] = h [i2] [i4 - 1] + (int) htest; } } } i = i + (1 << i3); } i2 ++; } }*/ void Landscape::genSurface (int hoehepc, int *heightmap) { int i, i2, x, y; int htest, h1, h2, step; type = LAND_ALPINE; hoehe = hoehepc * 512; init (); step = maxx / 4; if (heightmap == NULL) { for (i = 0; i < 4; i ++) for (i2 = 0; i2 < 4; i2 ++) if (h [i * step] [i2 * step] == 0) h [i * step] [i2 * step] = 127 * 256 - 64 * hoehe / 1024 + extremerandom (64 * hoehe / 512); for (i = 0; i < 5; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } } else { step /= 2; n --; for (i = 0; i < 8; i ++) for (i2 = 0; i2 < 8; i2 ++) h [i * step] [i2 * step] = heightmap [i * 8 + i2]; for (i = 0; i < 9; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } } for (i = 2; i < n; i ++) { step = step / 2; y = 0; do { x = step; do { h1 = h [x - step] [y]; h2 = h [x + step] [y]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; x = x + 2 * step; } while (x != maxx + step); y = y + 2 * step; } while (y < maxx); for (x = step; x <= maxx - step; x += 2 * step) h [x] [maxx] = h [x] [0]; x = 0; do { y = step; do { h1 = h [x] [y - step]; h2 = h [x] [y + step]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; y = y + 2 * step; } while (y <= maxx); x = x + step; } while (x < maxx); for (y = step; y <= maxx - step; y += 2 * step) h [maxx] [y] = h [0] [y]; hoehe = (int) (hoehe / 1.1); } convolveGauss (2, 0, 35000); convolveGauss (1, 35001, 65535); highestpoint = 0; lowestpoint = 65535; for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) { if (h [i] [i2] > highestpoint) highestpoint = h [i] [i2]; if (h [i] [i2] < lowestpoint) lowestpoint = h [i] [i2]; } } void Landscape::genErosionSurface (int hoehepc, int *heightmap) { int i, i2, x, y; int htest, h1, h2, step; type = LAND_ALPINE; hoehe = hoehepc * 512; init (); step = maxx / 4; if (heightmap == NULL) { for (i = 0; i < 4; i ++) for (i2 = 0; i2 < 4; i2 ++) if (h [i * step] [i2 * step] == 0) h [i * step] [i2 * step] = 127 * 256 - 64 * hoehe / 1024 + extremerandom (64 * hoehe / 512); for (i = 0; i < 5; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } } else { step /= 2; n --; for (i = 0; i < 8; i ++) for (i2 = 0; i2 < 8; i2 ++) h [i * step] [i2 * step] = heightmap [i * 8 + i2]; for (i = 0; i < 9; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } } for (i = 2; i < n; i ++) { step = step / 2; y = 0; do { x = step; do { h1 = h [x - step] [y]; h2 = h [x + step] [y]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; x = x + 2 * step; } while (x != maxx + step); y = y + 2 * step; } while (y < maxx); for (x = step; x <= maxx - step; x += 2 * step) h [x] [maxx] = h [x] [0]; x = 0; do { y = step; do { h1 = h [x] [y - step]; h2 = h [x] [y + step]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; y = y + 2 * step; } while (y <= maxx); x = x + step; } while (x < maxx); for (y = step; y <= maxx - step; y += 2 * step) h [maxx] [y] = h [0] [y]; hoehe = (int) (hoehe / 1.1); } highestpoint = 0; lowestpoint = 65535; for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) { if (h [i] [i2] > highestpoint) highestpoint = h [i] [i2]; if (h [i] [i2] < lowestpoint) lowestpoint = h [i] [i2]; } int erosion = (highestpoint - lowestpoint) / 5 + lowestpoint; for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) if (h [i] [i2] < erosion) h [i] [i2] = erosion - 30 + myrandom (60, i, i2); convolveGauss (2, 0, 35000); convolveGauss (1, 35001, 65535); } void Landscape::genArcticSurface (int hoehepc, int *heightmap) { int i, i2, x, y; int htest, h1, h2, step; type = LAND_ARCTIC; hoehe = hoehepc * 512; init (); step = maxx / 4; if (heightmap == NULL) { for (i = 0; i < 4; i ++) for (i2 = 0; i2 < 4; i2 ++) if (h [i * step] [i2 * step] == 0) h [i * step] [i2 * step] = 127 * 256 - 64 * hoehe / 1024 + extremerandom (64 * hoehe / 512); for (i = 0; i < 5; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } } else { step /= 2; n --; for (i = 0; i < 8; i ++) for (i2 = 0; i2 < 8; i2 ++) h [i * step] [i2 * step] = heightmap [i * 8 + i2]; for (i = 0; i < 9; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } } for (i = 2; i < n; i ++) { step = step / 2; y = 0; do { x = step; do { h1 = h [x - step] [y]; h2 = h [x + step] [y]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; x = x + 2 * step; } while (x != maxx + step); y = y + 2 * step; } while (y < maxx); for (x = step; x <= maxx - step; x += 2 * step) h [x] [maxx] = h [x] [0]; x = 0; do { y = step; do { h1 = h [x] [y - step]; h2 = h [x] [y + step]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; y = y + 2 * step; } while (y <= maxx); x = x + step; } while (x < maxx); for (y = step; y <= maxx - step; y += 2 * step) h [maxx] [y] = h [0] [y]; hoehe = (int) (hoehe / 1.1); } convolveGauss (2, 0, 35000); highestpoint = 0; lowestpoint = 65535; for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) { if (h [i] [i2] > highestpoint) highestpoint = h [i] [i2]; if (h [i] [i2] < lowestpoint) lowestpoint = h [i] [i2]; f [i] [i2] = GLACIER; if (abs (h [i] [i2] - h [i + 1] [i2]) > 300) f [i] [i2] = ROCKS; if (abs (h [i] [i2] - h [i] [i2 + 1]) > 300) f [i] [i2] = ROCKS; if (h [i] [i2] < 32836 - hoehepc * 3) { int dh = 32836 - hoehepc * 3 - h [i] [i2]; if (dh < 2000) f [i] [i2] = SHALLOWWATER; else f [i] [i2] = DEEPWATER; hw [i] [i2] = 32836 - hoehepc * 3; } } } void Landscape::genMoonSurface (int height) { int i, i2, i3, x, y; int radius, rad, depth, depth2; double pi = 3.14; type = LAND_MOON; for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) h [i] [i2] = 30000 + myrandom (300, i, i2); int maxholes = 1; for (i = 0; i < maxholes; i ++) { x = myrandom (MAXX + 1); y = myrandom (MAXX + 1); radius = myrandom (50) + 200; depth = radius * height / 2; for (i2 = x - radius; i2 < x+radius; i2++) for (i3 = y - radius; i3 < y+radius; i3++) { rad = (int) sqrt ((x-i2)*(x-i2)+(y-i3)*(y-i3)); if (rad < radius) { if (rad < 0.67 * radius) { depth2 = (int) (cos ((float)rad / (2*radius/3) * pi/2) * depth); } else { depth2 = (int) (0.3 * sin ((float)(radius - rad) / (radius / 3) * pi) * depth * (-1)); } h[getCoord(i2)][getCoord(i3)] -= depth2; } } } maxholes = myrandom (4) + 8 ; for (i = 0; i < maxholes; i++) { x = myrandom (MAXX + 1); y = myrandom (MAXX + 1); radius = myrandom (50) + 50; depth = radius * height / 2; for (i2 = x - radius; i2 < x+radius; i2++) for (i3 = y - radius; i3 < y+radius; i3++) { rad = (int) sqrt ((x-i2)*(x-i2)+(y-i3)*(y-i3)); if (rad < radius) { if (rad < 0.67 * radius) { depth2 = (int) (cos ((float)rad / (2*radius/3) * pi/2) * depth); } else { depth2 = (int) (0.3 * sin ((float)(radius - rad) / (radius / 3) * pi) * depth * (-1)); } h[getCoord(i2)][getCoord(i3)] -= depth2; } } } maxholes = myrandom (10) + 20 ; for (i = 0; i < maxholes; i++) { x = myrandom (MAXX + 1); y = myrandom (MAXX + 1); radius = myrandom (20) + 20; depth = radius * height / 2; for (i2 = x - radius; i2 < x+radius; i2++) for (i3 = y - radius; i3 < y+radius; i3++) { rad = (int) sqrt ((x-i2)*(x-i2)+(y-i3)*(y-i3)); if (rad < radius) { if (rad < 0.67 * radius) { depth2 = (int) (cos ((float)rad / (2*radius/3) * pi/2) * depth); } else { depth2 = (int) (0.6 * sin ((float)(radius - rad) / (radius / 3) * pi) * depth * (-1)); } h[getCoord(i2)][getCoord(i3)] -= depth2; } } } maxholes = myrandom (50) + 400; for (i = 0; i < maxholes; i++) { x = myrandom (MAXX + 1); y = myrandom (MAXX + 1); radius = myrandom (10) + 5; depth = radius * height / 3; for (i2 = x - radius; i2 < x+radius; i2++) for (i3 = y - radius; i3 < y+radius; i3++) { rad = (int) sqrt ((x-i2)*(x-i2)+(y-i3)*(y-i3)); if (rad < radius) { if (rad < 0.67 * radius) depth2 = (int) (cos ((float)rad / (2*radius/3) * pi/2) * depth); else depth2 = (int) (sin ((float)(radius - rad) / (radius / 3) * pi) * depth * (-1)); h[getCoord(i2)][getCoord(i3)] -= depth2; } } } convolveGauss (2, 0, 65535); } void Landscape::genCanyonSurface (int hoehepc) { int i, i2, x, y; int htest, h1, h2, step; type = LAND_CANYON; hoehe = hoehepc * 512; init (); step = maxx / 16; int minh = 0; int maxh = 127 * 256 + 64 * hoehe / 1024; for (i = 0; i < 16; i ++) for (i2 = 0; i2 < 16; i2 ++) if (h [i * step] [i2 * step] == 0) if (myrandom (2, i, i2)) h [i * step] [i2 * step] = 127 * 256 - 64 * hoehe / 1024; else h [i * step] [i2 * step] = 127 * 256 + 64 * hoehe / 1024; for (i = 0; i < 17; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } for (i = 4; i < n; i ++) { step = step / 2; y = 0; do { x = step; do { h1 = h [x - step] [y]; h2 = h [x + step] [y]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < minh) htest = minh; if (htest > maxh) htest = maxh; if (h [x] [y] == 0) h [x] [y] = htest; x = x + 2 * step; } while (x != maxx + step); y = y + 2 * step; } while (y < maxx); for (x = step; x <= maxx - step; x += 2 * step) h [x] [maxx] = h [x] [0]; x = 0; do { y = step; do { h1 = h [x] [y - step]; h2 = h [x] [y + step]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < minh) htest = minh; if (htest > maxh) htest = maxh; if (h [x] [y] == 0) h [x] [y] = htest; y = y + 2 * step; } while (y <= maxx); x = x + step; } while (x < maxx); for (y = step; y <= maxx - step; y += 2 * step) h [maxx] [y] = h [0] [y]; hoehe = (int) (hoehe / 1.1); } for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) if (h [i] [i2] > 32836 - hoehepc * 30) h [i] [i2] -= h [i] [i2] % 2600; for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) f [i] [i2] = REDSTONE; convolveGauss (3, 0, 35000); convolveGauss (2, 35001, 65535); for (i = 0; i < MAXX; i ++) for (i2 = 0; i2 < MAXX; i2 ++) { if (abs (h [i] [i2] - h [i + 1] [i2]) < 200 && abs (h [i] [i2] - h [i] [i2 + 1]) < 200) { f [i] [i2] = REDSAND; if (h [i] [i2] > 30000 && !myrandom (80) && hoehepc > 20) f [i] [i2] = REDTREE0; } if (hoehepc > 20) { if (h [i] [i2] < 32836 - hoehepc * 40) { int dh = 32836 - hoehepc * 40 - h [i] [i2]; if (dh < 1500) f [i] [i2] = SHALLOWWATER; else f [i] [i2] = DEEPWATER; hw [i] [i2] = 32836 - hoehepc * 40; } } } highestpoint = 0; lowestpoint = 65535; for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) { if (h [i] [i2] > highestpoint) highestpoint = h [i] [i2]; if (h [i] [i2] < lowestpoint) lowestpoint = h [i] [i2]; } } void Landscape::genDesertSurface (int hoehepc) { int i, i2, x, y; int htest, h1, h2, step; type = LAND_DESERT; hoehe = hoehepc * 512; init (); step = maxx / 16; for (i = 0; i < 16; i ++) for (i2 = 0; i2 < 16; i2 ++) if (h [i * step] [i2 * step] == 0) h [i * step] [i2 * step] = 127 * 256 - 64 * hoehe / 1024 + extremerandom (64 * hoehe / 512); for (i = 0; i < 17; i ++) { h [maxx] [i * step] = h [0] [i * step]; h [i * step] [maxx] = h [i * step] [0]; } for (i = 4; i < n; i ++) { step = step / 2; y = 0; do { x = step; do { h1 = h [x - step] [y]; h2 = h [x + step] [y]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; x = x + 2 * step; } while (x != maxx + step); y = y + 2 * step; } while (y < maxx); for (x = step; x <= maxx - step; x += 2 * step) h [x] [maxx] = h [x] [0]; x = 0; do { y = step; do { h1 = h [x] [y - step]; h2 = h [x] [y + step]; htest = ((h1 + h2) >> 1) - (128 >> i) * hoehe / 128 + myrandom ((128 >> i) * hoehe / 64, x, y); if (htest < 0) htest = 0; if (htest > 65535) htest = 65535; if (h [x] [y] == 0) h [x] [y] = htest; y = y + 2 * step; } while (y <= maxx); x = x + step; } while (x < maxx); for (y = step; y <= maxx - step; y += 2 * step) h [maxx] [y] = h [0] [y]; hoehe = (int) (hoehe / 1.5); } convolveGauss (2, 0, 65535); int i3; for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { const int range = 11; int ha [range]; for (i3 = 0; i3 < range; i3 ++) ha [i3] = h [i] [GETCOORD(i2 + i3 - range / 2)]; int hmin = 65000, hmax = 0; for (i3 = 0; i3 < range; i3 ++) { if (ha [i3] < hmin) hmin = ha [i3]; if (ha [i3] > hmax) hmax = ha [i3]; } if (ha [range / 2 + 1] < ha [range / 2 - 1]) { hg [i] [i2] = hmin; } else { hg [i] [i2] = hmax; } } convolveGauss (2, 0, 65535); for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) h [i] [i2] = hg [i] [i2]; for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) f [i] [i2] = DESERTSAND; for (i = 0; i < MAXX; i += 4) for (i2 = 0; i2 < MAXX; i2 += 4) { if (!myrandom (50)) f [i] [i2] = CACTUS0; } highestpoint = 0; lowestpoint = 65535; for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) { if (h [i] [i2] > highestpoint) highestpoint = h [i] [i2]; if (h [i] [i2] < lowestpoint) lowestpoint = h [i] [i2]; } } void Landscape::genTrench (int width, int height) { int i, i2; int midleft = MAXX / 2 - width / 2, midright = MAXX / 2 + width / 2; int left = 0, right = 0; for (i = 0; i <= MAXX; i ++) { if (i != 148 && i != 52) { for (i2 = midleft + left; i2 < midright + right; i2 ++) { int height1 = height; if (i2 - midleft - left < 4) { height1 = height1 * (i2 - midleft - left) / 4; f [i] [i2] = REDSTONE; } if (i2 > midright + right - 4) { height1 = height1 * (midright + right - i2) / 4; f [i] [i2] = REDSTONE; } h [i] [i2] -= height1; } if (i & 1) { left += myrandom (5) - 2; right += myrandom (5) - 2; if (left < -5) left = -5; if (left > 5) left = 5; if (right < -5) right = -5; if (right > 5) right = 5; } } else { h [i] [MAXX / 2] -= height; } } lowestpoint -= height; } /**************************************************************************** CREATE ROCKS ****************************************************************************/ void Landscape::genRocks (int diffmin, int percent) { int i, i2, i3, i4, i5, d = 150; long hmin, hmax; long htest; double r, rd; rockborder = 65535; hmax = highestpoint; hmin = lowestpoint; if (hmax - hmin >= (long) diffmin * 256) // Generation for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) { r = (hmax - hmin) / 100 * percent; rd = h [i] [i2]; rd = rd - h [i + 1] [i2] / 3 - h [i] [i2 + 1] / 3 - h [i + 1] [i2 + 1] / 3; rd = fabs (rd); int minrock = 0; if (percent > 50) minrock = (percent - 50) * 8; if (h [i] [i2] > hmax - r) { if (rd + minrock >= 800 - 800 * (h [i] [i2] - r) / (hmax - r)) { f [i] [i2] = ROCKS + myrandom (2); htest = h [i] [i2] - d + myrandom (d * 2); if (htest > 65535) htest = 65535; h [i] [i2] = (unsigned short) htest; if (h [i] [i2] < rockborder) rockborder = h [i] [i2]; } else if (rd + minrock >= 500 - 500 * (h [i] [i2] - r) / (hmax - r)) { f [i] [i2] = GRAVEL; } } if (abs (h [i] [i2] - h [i + 1] [i2]) >= 600 || abs (h [i] [i2] - h [i] [i2 + 1]) >= 600) { f [i] [i2] = ROCKS + myrandom (2); htest = h [i] [i2] - d + myrandom (d * 2); if (htest > 65535) htest = 65535; h [i] [i2] = (unsigned short) htest; } if (h [i] [i2] > hmax - r / 2) if (rd < 200 * (h [i] [i2] - r / 2) / (hmax - r / 2)) f [i] [i2] = GLACIER; } for (i = 1; i < maxx; i ++) // Lcken schlieen for (i2 = 1; i2 < maxx; i2 ++) { if (f [i] [i2] != ROCKS) if (f [i - 1] [i2] == ROCKS && f [i + 1] [i2] == ROCKS || f [i] [i2 - 1] == ROCKS && f [i] [i2 + 1] == ROCKS) f [i] [i2] = ROCKS; if (f [i] [i2] != ROCKS) if (f [i - 1] [i2] == GLACIER && f [i + 1] [i2] == GLACIER || f [i] [i2 - 1] == GLACIER && f [i] [i2 + 1] == GLACIER) f [i] [i2] = GLACIER; } for (i = 1; i < maxx; i ++) // Felsengebiet uneben for (i2 = 1; i2 < maxx; i2 ++) if (f [i] [i2] == ROCKS) { i5 = 0; for (i3 = -1; i3 <= 1; i3 ++) for (i4 = -1; i4 <= 1; i4 ++) if (f [i + i3] [i2 + i4] == ROCKS) i5 ++; htest = (long) h [i] [i2] + (long) i5 * 50; if (htest > 65535) htest = 65535; h [i] [i2] = (unsigned short) htest; } smoothGlacier (); } /**************************************************************************** CREATE LAKES ****************************************************************************/ int Landscape::calcLake (int ys, int xs, unsigned short level, int num, int maxextent) { int i, i2, n, w, timeout = 0; bool hits; unsigned char sn = (unsigned char) num; int extent = 0; // h [xs] [ys] = level; w = 5; if (xs <= 0) xs = 1; if (ys <= 0) ys = 1; if (xs >= maxx) xs = maxx - 1; if (ys >= maxx) ys = maxx - 1; ftry [xs] [ys] = sn; do { timeout ++; i2 = 0; hits = false; while (i2 < maxx * 2) { i2 ++; n = i2; if (n > maxx) n = n - maxx * 2 + 1; for (i = xs; i < maxx; i ++) { if (ys - n >= 0 && ys - n < maxx) if (h [i] [ys - n] < level && ftry [i] [ys - n] != sn) if ((ftry [i - 1] [ys - n] == sn) || (ftry [i] [ys - n + 1] == sn) || (ftry [i + 1] [ys - n + 1] == sn) || (ftry [i - 1] [ys - n + 1] == sn)) { ftry [i] [ys - n] = sn; extent ++; hits = true; } if (ys + n > 0 && ys + n <= maxx) if (h [i] [ys + n] < level && ftry [i] [ys + n] != sn) if ((ftry [i - 1] [ys + n] == sn) || (ftry [i] [ys + n - 1] == sn) || (ftry [i + 1] [ys + n - 1] == sn) || (ftry [i - 1] [ys + n - 1] == sn)) { ftry [i] [ys + n] = sn; extent ++; hits = true; } } for (i = xs; i > 0; i --) { if (ys - n >= 0 && ys - n < maxx) if (h [i] [ys - n] < level && ftry [i] [ys - n] != sn) if ((ftry [i + 1] [ys - n] == sn) || (ftry [i] [ys - n + 1] == sn) || (ftry [i + 1] [ys - n + 1] == sn) || (ftry [i - 1] [ys - n + 1] == sn)) { ftry [i] [ys - n] = sn; extent ++; hits = true; } if (ys + n > 0 && ys + n <= maxx) if (h [i] [ys + n] < level && ftry [i] [ys + n] != sn) if ((ftry [i + 1] [ys + n] == sn) || (ftry [i] [ys + n - 1] == sn) || (ftry [i + 1] [ys + n - 1] == sn) || (ftry [i - 1] [ys + n - 1] == sn)) { ftry [i] [ys + n] = sn; extent ++; hits = true; } } for (i = ys; i < maxx; i ++) { if (xs - n >= 0 && xs - n < maxx) if (h [xs - n] [i] < level && ftry [xs - n] [i] != sn) if ((ftry [xs - n] [i - 1] == sn) || (ftry [xs - n + 1] [i] == sn) || (ftry [xs - n + 1] [i + 1] == sn) || (ftry [xs - n + 1] [i - 1] == sn)) { ftry [xs - n] [i] = sn; extent ++; hits = true; } if (xs + n > 0 && xs + n <= maxx) if (h [xs + n] [i] < level && ftry [xs + n] [i] != sn) if ((ftry [xs + n] [i - 1] == sn) || (ftry [xs + n - 1] [i] == sn) || (ftry [xs + n - 1] [i + 1] == sn) || (ftry [xs + n - 1] [i - 1] == sn)) { ftry [xs + n] [i] = sn; extent ++; hits = true; } } for (i = ys; i > 0; i --) { if (xs - n >= 0 && xs - n < maxx) if (h [xs - n] [i] < level && ftry [xs - n] [i] != sn) if ((ftry [xs - n] [i + 1] == sn) || (ftry [xs - n + 1] [i] == sn) || (ftry [xs - n + 1] [i + 1] == sn) || (ftry [xs - n + 1] [i - 1] == sn)) { ftry [xs - n] [i] = sn; extent ++; hits = true; } if (xs + n > 0 && xs + n <= maxx) if (h [xs + n] [i] < level && ftry [xs + n] [i] != sn) if ((ftry [xs + n] [i - 1] == sn) || (ftry [xs + n - 1] [i] == sn) || (ftry [xs + n - 1] [i + 1] == sn) || (ftry [xs + n - 1] [i - 1] == sn)) { ftry [xs + n] [i] = sn; extent ++; hits = true; } } } if (extent > maxextent) return -1; } while (hits && timeout < 10); if (timeout >= 10) return -1; return extent; } void Landscape::genLake (int depthpc) { for (int j = 0; j < 5; j ++) { int a1, i, i2; unsigned short level, zmin; int xs = 0, ys = 0; unsigned short depth = (highestpoint - lowestpoint) * depthpc / 100; zmin = 65535; int radius = MAXX * 2 * depthpc / 100; a1 = maxx / 8; for (i = 0; i < 20; i ++) { xs = myrandom (MAXX - 2 * a1) + a1; ys = myrandom (MAXX - 2 * a1) + a1; if (hw [ys] [xs] == 0) break; } if (i == 20) return; int minx = xs - radius, miny = ys - radius; int maxx = xs + radius, maxy = ys + radius; if (minx < 1) minx = 1; if (maxx > MAXX - 1) maxx = MAXX - 1; if (miny < 1) miny = 1; if (maxy > MAXX - 1) maxy = MAXX - 1; xs = -1; ys = -1; for (i = miny; i < maxy; i += 2) for (i2 = minx; i2 < maxx; i2 += 2) if (h [i] [i2] < zmin && hw [i] [i2] == 0) { zmin = h [i] [i2]; xs = i2; ys = i; } int extent = 0; if (xs >= 0) { level = zmin + depth; for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) { ftry [i] [i2] = GRASS; } extent = calcLake (xs, ys, level, TRYLAKE, radius * radius / 2); if (extent <= 0) break; for (i = 0; i <= MAXX; i ++) { if (ftry [i] [0] != ftry [i] [MAXX]) { if (ftry [i] [0] == TRYLAKE) extent += calcLake (MAXX, i, level, TRYLAKE, radius * radius / 2); else extent += calcLake (0, i, level, TRYLAKE, radius * radius / 2); if (extent <= 0) break; } } if (extent > 0) for (i = 0; i <= MAXX; i ++) { if (ftry [0] [i] != ftry [MAXX] [i]) { if (ftry [0] [i] == TRYLAKE) extent += calcLake (i, MAXX, level, TRYLAKE, radius * radius / 2); else extent += calcLake (i, 0, level, TRYLAKE, radius * radius / 2); if (extent <= 0) break; } } int waterlevel1 = 300; int waterlevel2 = 600; int waterlevel3 = 1400; int waterlevel4 = 2000; if (type == LAND_CANYON) { waterlevel1 = 400; waterlevel2 = 800; waterlevel3 = 1500; waterlevel4 = 2000; } for (i = 0; i <= MAXX; i ++) for (i2 = 0; i2 <= MAXX; i2 ++) if (ftry [i] [i2] == TRYLAKE) { ftry [i] [i2] = GRASS; if (level - h [i] [i2] < waterlevel1) f [i] [i2] = XSHALLOWWATER; else if (level - h [i] [i2] < waterlevel2) f [i] [i2] = SHALLOWWATER; else if (level - h [i] [i2] < waterlevel3) f [i] [i2] = WATER; else if (level - h [i] [i2] < waterlevel4) f [i] [i2] = DEEPWATER; else f [i] [i2] = XDEEPWATER; hw [i] [i2] = level; // + myrandom (w); } int barrage = ROCKS; for (i = 0; i <= MAXX; i ++) { if (hw [i] [0] != hw [i] [MAXX]) // error: water and landscape at different heights => make a barrage { if (hw [i] [0] == 0) { h [i] [MAXX - 2] = hw [i] [MAXX] + 100; h [i] [MAXX - 1] = hw [i] [MAXX] + 100; h [i] [MAXX] = h [i] [MAXX - 1]; h [i] [0] = h [i] [MAXX]; for (i2 = 1; i2 < 5; i2 ++) if (h [i] [i2] < h [i] [0] - i2 * 1000) { h [i] [i2] = h [i] [0] - i2 * 1000; f [i] [i2] = barrage; f [i] [i2 + 1] = barrage; } f [i] [MAXX - 2] = barrage; f [i] [MAXX - 1] = barrage; f [i] [MAXX] = barrage; f [i] [0] = barrage; f [i] [1] = barrage; } else if (hw [i] [MAXX] == 0) { h [i] [2] = hw [i] [0] + 100; h [i] [1] = hw [i] [0] + 100; h [i] [0] = h [i] [1]; h [i] [MAXX] = h [i] [0]; for (i2 = 1; i2 < 5; i2 ++) if (h [i] [MAXX - i2] < h [i] [MAXX] - i2 * 1000) { h [i] [MAXX - i2] = h [i] [MAXX] - i2 * 1000; f [i] [MAXX - i2] = barrage; f [i] [MAXX - i2 - 1] = barrage; } f [i] [2] = barrage; f [i] [1] = barrage; f [i] [0] = barrage; f [i] [MAXX] = barrage; f [i] [MAXX - 1] = barrage; } } if (hw [0] [i] != hw [MAXX] [i]) // error: water and landscape at different heights => make a barrage { if (hw [0] [i] == 0) { h [MAXX - 2] [i] = hw [MAXX] [i] + 100; h [MAXX - 1] [i] = hw [MAXX] [i] + 100; h [MAXX] [i] = h [MAXX - 1] [i]; h [0] [i] = h [MAXX] [i]; for (i2 = 1; i2 < 5; i2 ++) if (h [i2] [i] < h [0] [i] - i2 * 1000) { h [i2] [i] = h [0] [i] - i2 * 1000; f [i2] [i] = barrage; f [i2 + 1] [i] = barrage; } f [MAXX - 2] [i] = barrage; f [MAXX - 1] [i] = barrage; f [MAXX] [i] = barrage; f [0] [i] = barrage; f [1] [i] = barrage; } else if (hw [MAXX] [i] == 0) { h [2] [i] = hw [0] [i] + 100; h [1] [i] = hw [0] [i] + 100; h [0] [i] = h [1] [i]; h [MAXX] [i] = h [0] [i]; for (i2 = 1; i2 < 5; i2 ++) if (h [MAXX - i2] [i] < h [MAXX] [i] - i2 * 1000) { h [MAXX - i2] [i] = h [MAXX] [i] - i2 * 1000; f [MAXX - i2] [i] = barrage; f [MAXX - i2 - 1] [i] = barrage; } f [2] [i] = barrage; f [1] [i] = barrage; f [0] [i] = barrage; f [MAXX] [i] = barrage; f [MAXX - 1] [i] = barrage; } } } return; } } } /**************************************************************************** CREATE WOODS ****************************************************************************/ void Landscape::calcWoods (int dy) { int i, i2; int var = 2000; for (i = 0; i < maxx; i ++) for (i2 = 0; i2 < maxx; i2 ++) { if (fabs (h [i] [i2] - h [i + 1] [i2]) > dy) if (f [i] [i2] == 0) { int ra = myrandom (3); if (h [i] [i2] >= rockborder + 3000 + myrandom (var)) f [i] [i2] = (DWARFPINES1 + ra); else if (h [i] [i2] >= 15000 + myrandom (var) && h [i] [i2] < rockborder - 10000 + myrandom (var)) f [i] [i2] = (MIXEDWOODS1 + ra); else if (h [i] [i2] < 15000 + var) f [i] [i2] = (CONIFEROUSWOODS1 + ra); else f [i] [i2] = (DECIDUOUSWOODS1 + ra); } } for (i = 1; i < maxx; i ++) for (i2 = 1; i2 < maxx; i2 ++) if (f [i] [i2] == 0) if (isWoods (f [i - 1] [i2]) && isWoods (f [i + 1] [i2]) || isWoods (f [i] [i2 - 1]) && isWoods (f [i] [i2 + 1])) { int ra = myrandom (3); if (h [i] [i2] >= rockborder + 3000 + myrandom (var)) f [i] [i2] = (DWARFPINES1 + ra); else if (h [i] [i2] >= 15000 + myrandom (var) && h [i] [i2] < rockborder - 10000 + myrandom (var)) f [i] [i2] = (BUSHES1 + ra); else if (h [i] [i2] < 15000 + var) f [i] [i2] = (BUSHES1 + ra); else f [i] [i2] = (BUSHES1 + ra); } for (i = 4; i < maxx - 4; i ++) for (i2 = 4; i2 < maxx - 4; i2 ++) if (isWoods (f [i - 4] [i2]) && isWoods (f [i + 4] [i2]) && isWoods (f [i] [i2 - 4]) && isWoods (f [i] [i2 + 4]) && isWoods (f [i] [i2])) { f [i] [i2] --; } for (i = 1; i < maxx; i ++) for (i2 = 1; i2 < maxx; i2 ++) if (f [i] [i2] == f [i + 1] [i2] && f [i] [i2] == f [i - 1] [i2] && f [i] [i2] == f [i] [i2 + 1] && f [i] [i2] == f [i] [i2 - 1]) { if ((f [i] [i2] & 4) == 1) f [i] [i2] ++; else if ((f [i] [i2] & 4) == 2) f [i] [i2] --; } for (i = 1; i < maxx; i += 3) for (i2 = 1; i2 < maxx; i2 += 3) if (isWater (f [i] [i2])) { if (f [i + 1] [i2] == GRASS) f [i + 1] [i2] = BUSHES1 + myrandom (3); if (f [i - 1] [i2] == GRASS) f [i - 1] [i2] = BUSHES1 + myrandom (3); if (f [i] [i2 + 1] == GRASS) f [i] [i2 + 1] = BUSHES1 + myrandom (3); if (f [i] [i2 - 1] == GRASS) f [i] [i2 - 1] = BUSHES1 + myrandom (3); } } /**************************************************************************** CREATE RIVERS ****************************************************************************/ bool Landscape::riverCheck (int x, int y, int *fl, int z, int z2) { if (x <= 0 || x >= maxx || y <= 0 || y >= maxx) return false; if (isType (f [x] [y], GRASS) || isWoods (f [x] [y])) { int bad = 0; for (int i = z; i <= z2; i ++) if (abs (fl [i * 2] - x) + abs (fl [i * 2 + 1] - y) <= 1) bad ++; if (bad <= 2) return true; } return false; } void Landscape::genRiver () { bool ok, ok2; int lang; int i, i2, i3; int fl1 = 0, fl2 = 0, fl3 = 0, fl4 = 0, z, z2, xf, yf, xf2, yf2, h1, h2; int fl [400] [2]; int abbruch; abbruch = 0; lang = 30; do { abbruch ++; do { xf = myrandom (maxx - 19) + 10; yf = myrandom (maxx - 19) + 10; } while (!isGround (yf, xf)); fl [200] [0] = xf; fl [200] [1] = yf; xf2 = xf; yf2 = yf; z = 0; z2 = 0; do { h1 = 65535; ok = true; for (i = -1; i <= 1; i ++) for (i2 = -1; i2 <= 1; i2 ++) if (xf + i >= 0 && xf + i <= maxx && yf + i2 >= 0 && yf + i2 <= maxx) if (riverCheck (xf + i, yf + i2, &fl [0] [0], 200 - z, 200 + z2)) if (h [xf + i] [yf + i2] < h [xf] [yf]) if (h [xf] [yf] - h [xf + i] [yf + i2] < h1) { h1 = h [xf] [yf] - h [xf + i] [yf + i2]; fl1 = xf + i; fl2 = yf + i2; ok = false; } h2 = 65535; ok2 = true; for (i = -1; i <= 1; i ++) for (i2 = -1; i2 <= 1; i2 ++) if (xf2 + i >= 0 && xf2 + i <= maxx && yf2 + i2 >= 0 && yf2 + i2 <= maxx) if (riverCheck (xf2 + i, yf2 + i2, &fl [0] [0], 200 - z, 200 + z2)) if (h [xf2 + i] [yf2 + i2] > h [xf2] [yf2]) if (h [xf2 + i] [yf2 + i2] - h [xf2] [yf2] < h2) { h2 = h [xf2 + i] [yf2 + i2] - h [xf2] [yf2]; fl3 = xf2 + i; fl4 = yf2 + i2; ok2 = false; } if (!ok) { z ++; fl [200 - z] [0] = fl1; fl [200 - z] [1] = fl2; xf = fl1; yf = fl2; } if (!ok2) { z2 ++; fl [200 + z2] [0] = fl3; fl [200 + z2] [1] = fl4; xf2 = fl3; yf2 = fl4; } } while ((!ok || !ok2) && (z < 200) && (z2 < 200)); //ok and ok2 or (z >= 200) or (z2 >= 200); } while (z + z2 <= lang && abbruch <= 10); //until (z + z2 > lang) or (abbruch > 2000); if (abbruch <= 10) { if (z > 200) z = 200; if (z2 > 200) z2 = 200; for (i = 200 - z; i <= 200 + z2; i ++) { xf = fl [i] [0]; yf = fl [i] [1]; f [xf] [yf] = SHALLOWWATER; if (isWater (f [xf] [yf])) { int hf = h [xf] [yf]; for (i2 = -1; i2 <= 1; i2 ++) for (i3 = -1; i3 <= 1; i3 ++) if (xf + i2 >= 0 && xf + i2 <= maxx && yf + i3 >= 0 && yf + i3 < maxx) if (hf - h [xf + i2] [yf + i3] > 0 && !isWater (f [xf + i2] [yf + i3])) { hf = h [xf + i2] [yf + i3]; } hf -= 200; if (hf < 0) hf = 0; if (h [xf] [yf] - hf < 350) { f [xf] [yf] = SHALLOWWATER; } hw [xf] [yf] = h [xf] [yf]; h [xf] [yf] = hf; } } } } /**************************************************************************** SEARCH PLANE TERRAIN STRUCTURE ****************************************************************************/ // divide map into 4x4 divisions and search plain in (divx,divy); (-1,-1) performs a global plain search void Landscape::searchPlain (int divx, int divy, int *x, int *y) { int i, i2; if (divx == -1 || divy == -1) { int val [MAXX_8] [MAXX_8]; for (i = 8; i <= MAXX - 8; i += 8) for (i2 = 8; i2 <= MAXX - 8; i2 += 8) { if ((type != LAND_CANYON && f [i] [i2] == GRASS && f [i-4] [i2] == GRASS && f [i+4] [i2] == GRASS && f [i] [i2-4] == GRASS && f [i] [i2+4] == GRASS) || (type == LAND_CANYON && f [i] [i2] == REDSAND && f [i-4] [i2] == REDSAND && f [i+4] [i2] == REDSAND && f [i] [i2-4] == REDSAND && f [i] [i2+4] == REDSAND)) { if (type != 2) val [i >> 3] [i2 >> 3] = h [i] [i2] / 4; else val [i >> 3] [i2 >> 3] = 32000 - h [i] [i2] / 4; val [i >> 3] [i2 >> 3] += abs (h [i] [i2] - h [i-4] [i2]); val [i >> 3] [i2 >> 3] += abs (h [i] [i2] - h [i+4] [i2]); val [i >> 3] [i2 >> 3] += abs (h [i] [i2] - h [i] [i2-4]); val [i >> 3] [i2 >> 3] += abs (h [i] [i2] - h [i] [i2+4]); } else { val [i >> 3] [i2 >> 3] = 100000; } } int min = 100000; for (i = 1; i < MAXX_8; i ++) for (i2 = 1; i2 < MAXX_8; i2 ++) { if (val [i] [i2] < min) { min = val [i] [i2]; *x = 8 * i; *y = 8 * i2; } } } else if (divx < DIVISIONS && divy < DIVISIONS) { int val [DIVX_8] [DIVX_8]; for (i = 8 + divx * DIVX; i <= (divx + 1) * DIVX - 8; i += 8) for (i2 = 8 + divy * DIVX; i2 <= (divy + 1) * DIVX - 8; i2 += 8) { int ix = (i - 8 - divx * DIVX) >> 3; int iy = (i2 - 8 - divy * DIVX) >> 3; if (f [i] [i2] == GRASS && f [i-4] [i2] == GRASS && f [i+4] [i2] == GRASS && f [i] [i2-4] == GRASS && f [i] [i2+4] == GRASS) { val [ix] [iy] = abs (h [i] [i2] - h [i-4] [i2]); val [ix] [iy] += abs (h [i] [i2] - h [i+4] [i2]); val [ix] [iy] += abs (h [i] [i2] - h [i] [i2-4]); val [ix] [iy] += abs (h [i] [i2] - h [i] [i2+4]); val [ix] [iy] += h [i] [i2] / 250; } else { val [ix] [iy] = 100000; } } int min = 100000; for (i = 0; i < DIVX_8 - 1; i ++) for (i2 = 0; i2 < DIVX_8 - 1; i2 ++) { if (val [i] [i2] < min) { min = val [i] [i2]; *x = 8 + 8 * i + divx * DIVX; *y = 8 + 8 * i2 + divy * DIVX; } } } } /**************************************************************************** CONSTRUCTOR ****************************************************************************/ Landscape::Landscape () { maxx = MAXX; n = LOG2SPLINE; maxn = LOG2MAXX; hoehe = HEIGHT * 256; for (int i = 0; i <= MAXX; i ++) for (int i2 = 0; i2 <= MAXX; i2 ++) { hw [i] [i2] = 0; h [i] [i2] = 0; f [i] [i2] = GRASS; } } Landscape::~Landscape () { } #endif gl-117-1.3.2/src/land.h0000644000175000017500000001062110145416156013552 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a random landscape generator. */ #ifndef IS_LAND_H #define IS_LAND_H // surface extents #define MAXX 512 #define MAXX2 256 #define MAXX_MASK 0x000001ff #define MAXX_8 64 #define DIVISIONS 4 #define DIVX 128 #define DIVX_8 16 #define LOG2MAXX 9 // number of iterations #define LOG2SPLINE 9 // number of iterations until spline interpolation #define HEIGHT 120 // landscapes #define LAND_ALPINE 0 #define LAND_MOON 1 #define LAND_CANYON 2 #define LAND_DESERT 3 #define LAND_ARCTIC 4 // maximum Gaussian convolution kernel extent #define MAXCORE 10 // fast coordinate cycle #define GETCOORD(x) (x & MAXX_MASK) // static ID values for the landscape type (array "f") #define GRASS 0 #define CONIFEROUSWOODS0 1 #define CONIFEROUSWOODS1 2 #define CONIFEROUSWOODS2 3 #define CONIFEROUSWOODS3 4 #define DECIDUOUSWOODS0 5 #define DECIDUOUSWOODS1 6 #define DECIDUOUSWOODS2 7 #define DECIDUOUSWOODS3 8 #define MIXEDWOODS0 9 #define MIXEDWOODS1 10 #define MIXEDWOODS2 11 #define MIXEDWOODS3 12 #define DWARFPINES0 13 #define DWARFPINES1 14 #define DWARFPINES2 15 #define DWARFPINES3 16 #define BUSHES0 17 #define BUSHES1 18 #define BUSHES2 19 #define BUSHES3 20 #define CACTUS0 25 #define ROCKS 30 #define ROCKS2 31 #define GLACIER 32 #define GREYSAND 33 #define GRAVEL 34 #define REDSTONE 35 #define REDSAND 36 #define REDTREE0 37 #define WATER 40 #define SHALLOWWATER 41 #define DEEPWATER 42 #define XSHALLOWWATER 43 #define XDEEPWATER 44 // Water until 49 #define MOONSAND 50 #define DESERTSAND 60 #define TOWN 90 #define TRYLAKE 100 class Landscape { public: // height values without fluids unsigned short h [MAXX + 1] [MAXX + 1]; // height values including fluids unsigned short hw [MAXX + 1] [MAXX + 1]; // landscape type (ID values) unsigned char f [MAXX + 1] [MAXX + 1]; // landscape type (0=alpine, 1=moon, 2=canyon) int type; private: unsigned char ftry [MAXX + 1] [MAXX + 1]; // dummy data field unsigned short hg [MAXX + 1] [MAXX + 1]; // dummy data field to apply convolution kernels int rockborder; int maxx; // same as MAXX, 512 is ideal int hoehe, maxn, n; // surface extents public: int highestpoint, lowestpoint; int getCoord (int a); // modulo MAXX void convolveGauss (int radius, int hmin, int hmax); // fast convolution function (isotropic) void gauss (int x, int y); // convolution for only one raster point void flatten (int x, int y, int dx, int dy); // constant height for 2*dx x 2*dy fields void smoothGlacier (); // special erosion function bool isType (unsigned char type, unsigned char id); bool isWoods (int type); bool isWater (int type); bool isGlacier (int type); void init (); // reset data fields void genSurface (int hoehepc, int *heightmap); // alpine void genErosionSurface (int hoehepc, int *heightmap); // alpine and erosion void genArcticSurface (int hoehepc, int *heightmap); // alpine void genCanyonSurface (int hoehepc); // canyon void genMoonSurface (int height); // moon void genDesertSurface (int hoehepc); // desert void genTrench (int width, int height); void genRocks (int diffmin, int percent); int calcLake (int ys, int xs, unsigned short level, int num, int maxextent); void genLake (int depthpc); void calcWoods (int dy); // calculate woods on steep grass terrain bool isGround (int x, int y); bool riverCheck (int x, int y, int *fl, int z, int z2); void genRiver (); void searchPlain (int divx, int divy, int *x, int *y); // search a plain Landscape (); ~Landscape (); }; #endif gl-117-1.3.2/src/loader_tga.cpp0000644000175000017500000002412710214470204015265 0ustar cedriccedric/* * loader_tga.c - Loader for Truevision Targa images * * by Dan Maas May 15, 2000 * * Modified for GL-117 by Piotr Pawlow * * based on TGA specifications available at: * http://www.wotsit.org/cgi-bin/search.cgi?TGA * * header/footer structures courtesy of the GIMP Targa plugin */ #ifndef LOADER_TGA_H #include #include #include #include #include "loader_tga.h" #include "common.h" //#define DATA8 unsigned char //#define DATA32 unsigned int typedef unsigned int DATA32; typedef unsigned char DATA8; static inline void WRITE_RGBA(DATA32 *p, DATA8 r, DATA8 g, DATA8 b, DATA8 a) { DATA8 *dp = (DATA8 *)p; dp[0] = r; dp[1] = g; dp[2] = b; dp[3] = a; //#define A_VAL(p) ((DATA8 *)(p))[3] //#define R_VAL(p) ((DATA8 *)(p))[0] //#define G_VAL(p) ((DATA8 *)(p))[1] //#define B_VAL(p) ((DATA8 *)(p))[2] //#define WRITE_RGBA(p, r, g, b, a) \ // R_VAL(p) = (r); \ // G_VAL(p) = (g); \ // B_VAL(p) = (b); \ // A_VAL(p) = (a); } /* flip an inverted image - see RLE reading below */ static DATA32* flip(DATA32* in, int w, int h); /* TGA pixel formats */ #define TGA_TYPE_MAPPED 1 #define TGA_TYPE_COLOR 2 #define TGA_TYPE_GRAY 3 #define TGA_TYPE_MAPPED_RLE 9 #define TGA_TYPE_COLOR_RLE 10 #define TGA_TYPE_GRAY_RLE 11 /* TGA header flags */ #define TGA_DESC_ABITS 0x0f #define TGA_DESC_HORIZONTAL 0x10 #define TGA_DESC_VERTICAL 0x20 #define TGA_SIGNATURE "TRUEVISION-XFILE" #define TGA_FOOTER_LEN 26 typedef struct { unsigned char idLength; unsigned char colorMapType; unsigned char imageType; unsigned char colorMapIndexLo, colorMapIndexHi; unsigned char colorMapLengthLo, colorMapLengthHi; unsigned char colorMapSize; unsigned char xOriginLo, xOriginHi; unsigned char yOriginLo, yOriginHi; unsigned char widthLo, widthHi; unsigned char heightLo, heightHi; unsigned char bpp; unsigned char descriptor; } tga_header; typedef struct { unsigned int extensionAreaOffset; unsigned int developerDirectoryOffset; char signature[16]; char dot; char null; } tga_footer; /* Load up a TGA file * * As written this function only recognizes the following types of Targas: * Type 02 - Uncompressed RGB, 24 or 32 bits * Type 03 - Uncompressed grayscale, 8 bits * Type 10 - RLE-compressed RGB, 24 or 32 bits * Type 11 - RLE-compressed grayscale, 8 bits * There are several other (uncommon) Targa formats which this function can't currently handle */ unsigned char* tga_load (char* im_file,int* w,int* h) { FILE *fp; int bpp, vinverted = 0; int rle = 0, footer_present = 0; DATA32 *im_data; int im_w,im_h; tga_header header; tga_footer footer; fp = fopen(im_file, "rb"); if(!fp) return 0; /* read the footer first */ fseek (fp, 0L - TGA_FOOTER_LEN, SEEK_END); if (fread (&footer, TGA_FOOTER_LEN, 1, fp) != 1) { fclose(fp); return 0; } /* check the footer to see if we have a v2.0 TGA file */ if (memcmp(footer.signature, TGA_SIGNATURE, sizeof (footer.signature)) == 0) footer_present = 1; /* now read the header */ if (fseek (fp, 0, SEEK_SET) || fread (&header, sizeof (header), 1, fp) != 1) { fclose(fp); return 0; } /* skip over alphanumeric ID field */ if (header.idLength && fseek (fp, header.idLength, SEEK_CUR)) { fclose(fp); return 0; } /* now parse the header */ /* this flag indicated bottom-up pixel storage */ vinverted = header.descriptor ^ TGA_DESC_VERTICAL; switch (header.imageType) { case TGA_TYPE_COLOR_RLE: case TGA_TYPE_GRAY_RLE: rle = 1; break; case TGA_TYPE_COLOR: case TGA_TYPE_GRAY: rle = 0; break; default: fclose(fp); return 0; } /* bits per pixel */ bpp = header.bpp; if( ! ((bpp == 32) || (bpp == 24) || (bpp == 8)) ) { fclose(fp); return 0; } /* endian-safe loading of 16-bit sizes */ im_w = (header.widthHi << 8) | header.widthLo; im_h = (header.heightHi << 8) | header.heightLo; if ((im_w > 32767) || (im_w < 1) || (im_h > 32767) || (im_h < 1)) { im_w = 0; fclose(fp); return 0; } { unsigned long datasize; struct stat ss; unsigned char *buf, *bufptr; DATA32 *dataptr; int y; /* allocate the destination buffer */ im_data = (DATA32*)malloc(im_w * im_h * sizeof(DATA32)); if(!im_data) { im_w = 0; fclose(fp); display ("Out of memory", LOG_FATAL); return 0; } /* first we read the file data into a buffer for parsing */ /* then we decode from RAM */ /* find out how much data must be read from the file */ /* (this is NOT simply width*height*4, due to compression) */ stat(im_file, &ss); datasize = ss.st_size - sizeof(tga_header) - header.idLength - (footer_present ? TGA_FOOTER_LEN : 0); buf = (unsigned char*)malloc(datasize); if(!buf) { im_w = 0; fclose(fp); display ("Out of memory", LOG_FATAL); return 0; } /* read in the pixel data */ if( fread(buf, 1, datasize, fp) != datasize) { fclose(fp); return 0; } /* buffer is ready for parsing */ /* bufptr is the next byte to be read from the buffer */ bufptr = buf; /* dataptr is the next 32-bit pixel to be filled in */ dataptr = im_data; /* decode uncompressed BGRA data */ if(!rle) { for(y = 0; y < im_h; y++) /* for each row */ { int x; /* point dataptr at the beginning of the row */ if(!vinverted) /* some TGA's are stored upside-down! */ dataptr = im_data + (im_h - (y+1)) * im_w; else dataptr = im_data + y * im_w; for(x = 0; x < im_w; x++) /* for each pixel in the row */ { switch(bpp) { /* 32-bit BGRA pixels */ case 32: WRITE_RGBA(dataptr, *(bufptr + 2), /* R */ *(bufptr + 1), /* G */ *(bufptr + 0), /* B */ *(bufptr + 3) /* A */ ); dataptr++; bufptr += 4; break; /* 24-bit BGR pixels */ case 24: WRITE_RGBA(dataptr, *(bufptr + 2), /* R */ *(bufptr + 1), /* G */ *(bufptr + 0), /* B */ (char) 0xff /* A */ ); dataptr++; bufptr += 3; break; /* 8-bit grayscale */ case 8: WRITE_RGBA(dataptr, *bufptr, /* grayscale */ *bufptr, *bufptr, (char) 0xff ); dataptr++; bufptr += 1; break; } } /* end for (each pixel) */ } /* end for (each row) */ } /* end if (RLE) */ /* decode RLE compressed data */ else { unsigned char curbyte, red, green, blue, alpha; DATA32 *final_pixel = dataptr + im_w * im_h; /* loop until we've got all the pixels */ while(dataptr < final_pixel) { int count; curbyte = *bufptr++; count = (curbyte & 0x7F) + 1; if(curbyte & 0x80) /* RLE packet */ { int i; switch(bpp) { case 32: blue = *bufptr++; green = *bufptr++; red = *bufptr++; alpha = *bufptr++; for(i = 0; i < count; i++) { WRITE_RGBA(dataptr, red, green, blue, alpha); dataptr++; } break; case 24: blue = *bufptr++; green = *bufptr++; red = *bufptr++; for(i = 0; i < count; i++) { WRITE_RGBA(dataptr, red, green, blue, (char) 0xff); dataptr++; } break; case 8: alpha = *bufptr++; for(i = 0; i < count; i++) { WRITE_RGBA(dataptr, alpha, alpha, alpha, (char) 0xff); dataptr++; } break; } } /* end if (RLE packet) */ else /* raw packet */ { int i; for(i = 0; i < count; i++) { switch(bpp) { /* 32-bit BGRA pixels */ case 32: WRITE_RGBA(dataptr, *(bufptr + 2), /* R */ *(bufptr + 1), /* G */ *(bufptr + 0), /* B */ *(bufptr + 3) /* A */ ); dataptr++; bufptr += 4; break; /* 24-bit BGR pixels */ case 24: WRITE_RGBA(dataptr, *(bufptr + 2), /* R */ *(bufptr + 1), /* G */ *(bufptr + 0), /* B */ (char) 0xff /* A */ ); dataptr++; bufptr += 3; break; /* 8-bit grayscale */ case 8: WRITE_RGBA(dataptr, *bufptr, /* pseudo-grayscale */ *bufptr, *bufptr, (char) 0xff ); dataptr++; bufptr += 1; break; } } } /* end if (raw packet) */ } /* end for (each packet) */ /* must now flip a bottom-up image */ /* This is the best of several ugly implementations * I considered. It's not very good since the image * will be upside-down throughout the loading process. * This could be done in-line with the de-RLE code * above, but that would be messy to code. There's * probably a better way... */ if(!vinverted) { im_data = flip(im_data, im_w, im_h); if(!im_data) { fclose(fp); free(buf); return 0; } } } /* end if (image is RLE) */ free(buf); } // fclose(fp); *w=im_w; *h=im_h; return (unsigned char*)im_data; } /**********************/ /* flip a DATA32 image block vertically * by allocating a new block, then copying * the rows in reverse order */ static DATA32* flip(DATA32* in, int w, int h) { int adv, adv2, i; DATA32* out; out = (DATA32*)malloc(w * h * sizeof(DATA32)); if(!out) { display ("Out of memory", LOG_FATAL); return NULL; } adv = 0; adv2 = w * h; for(i = 0; i < h; i++) { adv2 -= w; memmove(out + adv, in + adv2, w * sizeof(DATA32)); adv += w; } free(in); return out; } #endif gl-117-1.3.2/src/loader_tga.h0000644000175000017500000000017710145416156014742 0ustar cedriccedric#ifndef LOADER_TGA_H #define LOADER_TGA_H extern unsigned char* tga_load (char* im_file,int* im_w,int* im_h); #endif gl-117-1.3.2/src/main.cpp0000644000175000017500000064254510145416156014133 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes the main program. */ /* To fully understand the GL-117 code, please read the methods from bottom to top! */ /* TODO: - options => video => resolution and fullscreen (both with restart) - correct transport2 (left side corrupt in VRML) and add mission with transport2 - southern seashore landscape (additional missions) - alpine snow landscape (additional missions) - tree colors (fall, spring), draw more tree textures - particle systems: rain, clouds to fly through */ #ifndef IS_MAIN_H #include "main.h" #include "menu.h" #include "maploader.h" #include "dirs.h" #include "gl.h" #include "land.h" #include "net.h" #include "mathtab.h" #include "cockpit.h" #include "conf.h" #include "mission.h" #include "glland.h" #include "common.h" #include int mousex, mousey; int debug = 1; bool multiplayer = false, isserver = false; int day = 1; int weather = WEATHER_SUNNY; float sungamma = 45.0; int camera = 0; float camx = 0, camy = 0, camz = 0, camphi = 0, camgamma = 0, camtheta = 0; float view_x = 0, view_y = 0; float sunlight = 1.0, sunlight_dest = 1.0; float blackout = 0, redout = 0; int lighting = 1; int mode = 0; // pre-defined screen resolutions (x, y, bpp, fullscreen) int resolution [4] [4] = { { 1024, 768, 32, 1 }, { 800, 600, 32, 1 }, { 640, 480, 32, 1 }, { 640, 480, 32, 0 } }; float nearclippingplane = 0.25; // do NOT lower this! bool sunblinding = false; Dirs *dirs; Server *server = NULL; Client *client = NULL; /*#ifdef HAVE_SDL SDL_Thread *threadnet = NULL; #endif*/ int game = GAME_INIT; int debuglevel = LOG_MOST; int showcollision = 0; int brightness = 0; int contrast = 10; SoundSystem *sound = NULL; GL *gl; float getView () { if (weather == WEATHER_THUNDERSTORM && view > 40.0) return 40.0; return view; } int clouds = 0; CTexture *texradar1, *texradar2, *texarrow;//, *texcounter; MapLoader *maploader; float visibleangle = 80.0F; CTexture *texsun, *texflare1, *texflare2, *texflare3, *texflare4, *texmoon = NULL, *texcross, *texcross2, *texranks, *texmedals; CTexture *texclouds1, *texclouds2, *texclouds3; PilotList *pilots; CExplosion *explosion [maxexplosion]; CBlackSmoke *blacksmoke [maxblacksmoke]; GLLandscape *l = NULL; Font *font1, *font2; CTexture *textitle; Uint32 lasttime = 0; CLoad3DS g_Load3ds; CModel model_fig; CModel model_figa; CModel model_figb; CModel model_figc; CModel model_figd; CModel model_fige; CModel model_figf; CModel model_figg; CModel model_figh; CModel model_figi; CModel model_figt; CModel model_figu; CModel model_cannon1; CModel model_cannon2; CModel model_cannon1b; CModel model_cannon2b; CModel model_flare1; CModel model_chaff1; CModel model_missile1; CModel model_missile2; CModel model_missile3; CModel model_missile4; CModel model_missile5; CModel model_missile6; CModel model_missile7; CModel model_missile8; CModel model_flak1; CModel model_flarak1; CModel model_tent1; CModel model_ship1; CModel model_ship2; CModel model_gl117; CModel model_tank1; CModel model_container1; CModel model_truck1; CModel model_truck2; CModel model_trsam; CModel model_pickup1; CModel model_pickup2; CModel model_tank2; CModel model_tent4; CModel model_hall1; CModel model_hall2; CModel model_oilrig; CModel model_egg; CModel model_radar; CModel model_mine1; CModel model_aster1; CModel model_base1; CModel model_barrier1; CModel model_rubble1; CModel model_depot1; CModel model_house1; DynamicObj *flare [maxflare]; DynamicObj *chaff [maxchaff]; AIObj *missile [maxmissile]; DynamicObj *laser [maxlaser]; AIObj *fighter [maxfighter]; Star *star [maxstar]; DynamicObj *groundobj [maxgroundobj]; Flash *flash1; Space *space; AIObj *fplayer; CSpaceObj *sphere; CSphere *objsphere; HighClouds *highclouds; HighClouds *highclouds2; CModel *obj, *objlaser, *objmissile; CVector3 *clip1, *clip2, *tlnull, *tlinf, *tlminf; CRotation *rotnull, *rotmissile; GLenum polygonMode = GL_FILL; GLfloat light_position0[] = { 0.0, 0.5, -1.0, 0 }; #define max(x,y) ((x)>(y)?(x):(y)) int NX, NY; int joysticks; Mission *mission = NULL; Mission *missionnew = NULL; int keyb_elev = 0, keyb_roll = 0, keyb_rudder = 0; int keyb_lshift = 0; Container allmenus; Container famemenu; Container fightermenu; Container missionmenu; Container quitmenu; Container statsmenu; Component *currentsubmenu = NULL; Component *currentoptmenu = NULL; Container *mainmenu, *submenu [10], *optmenu [5], *controlsmenu [5]; Button *mainbutton [10]; Button *optbutton [10]; bool firststart = false; bool missionactive = false; CColor colorwhite (255, 255, 255, 255); CColor colorblue (50, 50, 255, 255); CColor colorgreen (100, 255, 100, 255); CColor colororange (255, 150, 100, 255); CColor colorred (255, 0, 0, 255); CColor coloryellow (255, 255, 0, 200); CColor colorgrey (150, 150, 150, 200); CColor colorlightgrey (210, 210, 210, 255); void drawRank (float xp, float yp, float zp, int rank, float zoom) { rank --; if (rank < 0) return; float x = xp / 10.0, y = yp / 10.0, z = zp; float tx1 = 0.5 * (rank % 2); float tx2 = tx1 + 0.5; float ty1 = 0.755 - 0.25 * (rank / 2); float ty2 = ty1 + 0.24; zoom /= 10; gl->enableTextures (texranks->textureID); if (antialiasing) gl->enableLinearTexture (texranks->textureID); else gl->disableLinearTexture (texranks->textureID); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.35); // Example how to pass the glBegin()...glEnd() code using vertex lists /* float vertex [sizeof (float) * 9]; glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer (3, GL_FLOAT, sizeof (float) * 9, &vertex [0]); glColorPointer (4, GL_FLOAT, sizeof (float) * 9, &vertex [3]); glTexCoordPointer (2, GL_FLOAT, sizeof (float) * 9, &vertex [7]); int mz = 0; vertex [mz ++] = x; vertex [mz ++] = y; vertex [mz ++] = z; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 200.0F/255.0F; vertex [mz ++] = tx1; vertex [mz ++] = ty1; vertex [mz ++] = x + zoom * 2; vertex [mz ++] = y; vertex [mz ++] = z; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 200.0F/255.0F; vertex [mz ++] = tx2; vertex [mz ++] = ty1; vertex [mz ++] = x + zoom * 2; vertex [mz ++] = y + zoom; vertex [mz ++] = z; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 200.0F/255.0F; vertex [mz ++] = tx2; vertex [mz ++] = ty2; vertex [mz ++] = x; vertex [mz ++] = y + zoom; vertex [mz ++] = z; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 1; vertex [mz ++] = 200.0F/255.0F; vertex [mz ++] = tx1; vertex [mz ++] = ty2; glDrawArrays (GL_QUADS, 0, 4);*/ glBegin (GL_QUADS); glColor4ub (255, 255, 255, 200); glTexCoord2f (tx1, ty1); glVertex3f (x, y, z); glTexCoord2f (tx2, ty1); glVertex3f (x + zoom * 2, y, z); glTexCoord2f (tx2, ty2); glVertex3f (x + zoom * 2, y + zoom, z); glTexCoord2f (tx1, ty2); glVertex3f (x, y + zoom, z); glEnd (); glDisable (GL_ALPHA_TEST); gl->disableAlphaBlending (); glDisable (GL_TEXTURE_2D); } void drawMedal (float xp, float yp, float zp, int medal, float zoom, int missionid) { if (medal < 0) return; if (missionid < MISSION_CAMPAIGN1 || missionid > MISSION_CAMPAIGN2) return; float x = xp / 10.0 - zoom / 20, y = yp / 10.0 - zoom / 20, z = zp; float tx1 = 0.5 * (medal % 2); float tx2 = tx1 + 0.5; float ty1 = 0.5 * (medal / 2); float ty2 = ty1 + 0.5; zoom /= 10; gl->enableTextures (texmedals->textureID); if (antialiasing) gl->enableLinearTexture (texmedals->textureID); else gl->disableLinearTexture (texmedals->textureID); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); glBegin (GL_QUADS); glColor4ub (255, 255, 255, 200); glTexCoord2f (tx1, ty1); glVertex3f (x, y, z); glTexCoord2f (tx2, ty1); glVertex3f (x + zoom, y, z); glTexCoord2f (tx2, ty2); glVertex3f (x + zoom, y + zoom, z); glTexCoord2f (tx1, ty2); glVertex3f (x, y + zoom, z); glEnd (); glDisable (GL_ALPHA_TEST); gl->disableAlphaBlending (); glDisable (GL_TEXTURE_2D); } void drawMouseCursor () { glPushMatrix (); glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); gluOrtho2D (0, width, 0, height); glScalef (1, -1, 1); glTranslatef (0, -height, 0); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.1); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); gl->enableTextures (texcross2->textureID); int crossradius = width / 35; glTranslatef (mousex, mousey, 0); glBegin (GL_QUADS); glColor4ub (255, 255, 255, 255); glTexCoord2i (0, 0); glVertex2d (-crossradius, -crossradius); glTexCoord2i (0, 1); glVertex2d (-crossradius, crossradius); glTexCoord2i (1, 1); glVertex2d (crossradius, crossradius); glTexCoord2i (1, 0); glVertex2d (crossradius, -crossradius); glEnd (); glDisable (GL_ALPHA_TEST); glDisable (GL_TEXTURE_2D); gl->disableAlphaBlending (); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glMatrixMode (GL_PROJECTION); glPopMatrix (); glMatrixMode (GL_MODELVIEW); glPopMatrix (); glPopMatrix (); } int getMedal (int score) { if (score >= 350) return 1; else if (score >= 300) return 0; else if (score >= 250) return 3; else if (score >= 200) return 2; return -1; } void gl117_rotateColors (int inittimer_gl117) { int i; for (i = 0; i < model_gl117.numObjects; i ++) { for (int i2 = 0; i2 < model_gl117.object [i]->numVertices; i2 ++) { model_gl117.object [i]->vertex [i2].color.c [0] = (int) (75.0F * SIN(i2 * 100 + inittimer_gl117 / 2) + 155.0F); model_gl117.object [i]->vertex [i2].color.c [1] = model_gl117.object [i]->vertex [i2].color.c [0]; model_gl117.object [i]->vertex [i2].color.c [2] = 100; } } } void adjustBrightness () { // adjust brightness setting (blending) if (brightness < 0) { glColor4ub (0, 0, 0, -brightness); float xf = 2.0, yf = 1.5, zf = 1.0; glDisable (GL_DEPTH_TEST); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); glVertex3f (-xf, -yf, -zf); glVertex3f (-xf, yf, -zf); glVertex3f (xf, yf, -zf); glVertex3f (xf, -yf, -zf); glEnd (); glDisable (GL_BLEND); // glEnable (GL_DEPTH_TEST); } else if (brightness > 0) { glColor4ub (255, 255, 255, brightness); float xf = 2.0, yf = 1.5, zf = 1.0; glDisable (GL_DEPTH_TEST); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); glVertex3f (-xf, -yf, -zf); glVertex3f (-xf, yf, -zf); glVertex3f (xf, yf, -zf); glVertex3f (xf, -yf, -zf); glEnd (); glDisable (GL_BLEND); // glEnable (GL_DEPTH_TEST); } } #ifndef USE_GLUT SDL_Joystick *sdljoystick [maxjoysticks]; int sdljoystickaxes [maxjoysticks]; #endif int sdldisplay = true; int sdlreshape = true; Cockpit *cockpit; float fps = 30; int glutwindow; bool initing = true; int flash = 0; int lastshield = 0; int getTrainingIdFromValue (int n) { int z = 0; if (n == z ++) return MISSION_TUTORIAL; else if (n == z ++) return MISSION_TUTORIAL2; else if (n == z ++) return MISSION_DOGFIGHT; else if (n == z ++) return MISSION_TUTORIAL3; else if (n == z ++) return MISSION_FREEFLIGHT1; else if (n == z ++) return MISSION_DEATHMATCH1; else if (n == z ++) return MISSION_DEATHMATCH2; else if (n == z ++) return MISSION_DEATHMATCH3; else if (n == z ++) return MISSION_TEAMBASE1; else if (n == z ++) return MISSION_WAVES1; else { return MISSION_CUSTOM1 + n - 10; } return 0; } int getCampaignIdFromValue (int n) { int z = 0; if (n == z ++) return MISSION_TEST1; else if (n == z ++) return MISSION_TEST2; else if (n == z ++) return MISSION_TRANSPORT; else if (n == z ++) return MISSION_CONVOY; else if (n == z ++) return MISSION_DOGFIGHT2; else if (n == z ++) return MISSION_AIRBATTLE; else if (n == z ++) return MISSION_SADEFENSE; else if (n == z ++) return MISSION_SCOUT; else if (n == z ++) return MISSION_BASE; else if (n == z ++) return MISSION_DEPOT; else if (n == z ++) return MISSION_DEFEND1; else if (n == z ++) return MISSION_DOGFIGHT3; else if (n == z ++) return MISSION_TANK1; else if (n == z ++) return MISSION_CONVOY2; else if (n == z ++) return MISSION_SHIP1; else if (n == z ++) return MISSION_SHIP2; else if (n == z ++) return MISSION_SHIP3; else if (n == z ++) return MISSION_CANYON1; else if (n == z ++) return MISSION_CANYON2; else if (n == z ++) return MISSION_TUNNEL1; else if (n == z ++) return MISSION_CANYON3; else if (n == z ++) return MISSION_MOON1; else if (n == z ++) return MISSION_MOONBATTLE; else if (n == z ++) return MISSION_MOON2; else if (n == z ++) return MISSION_MOON3; return 0; } int getCampaignValueFromId (int n) { int z = 0; if (n == MISSION_TEST1) z = 0; else if (n == MISSION_TEST2) z = 1; else if (n == MISSION_TRANSPORT) z = 2; else if (n == MISSION_CONVOY) z = 3; else if (n == MISSION_DOGFIGHT2) z = 4; else if (n == MISSION_AIRBATTLE) z = 5; else if (n == MISSION_SADEFENSE) z = 6; else if (n == MISSION_SCOUT) z = 7; else if (n == MISSION_BASE) z = 8; else if (n == MISSION_DEPOT) z = 9; else if (n == MISSION_DEFEND1) z = 10; else if (n == MISSION_DOGFIGHT3) z = 11; else if (n == MISSION_TANK1) z = 12; else if (n == MISSION_CONVOY2) z = 13; else if (n == MISSION_SHIP1) z = 14; else if (n == MISSION_SHIP2) z = 15; else if (n == MISSION_SHIP3) z = 16; else if (n == MISSION_CANYON1) z = 17; else if (n == MISSION_CANYON2) z = 18; else if (n == MISSION_TUNNEL1) z = 19; else if (n == MISSION_CANYON3) z = 20; else if (n == MISSION_MOON1) z = 21; else if (n == MISSION_MOONBATTLE) z = 22; else if (n == MISSION_MOON2) z = 23; else if (n == MISSION_MOON3) z = 24; return z; } void setPlaneVolume () { if (game == GAME_PLAY) { int lev = (int) ((float) 128 * fplayer->thrust / fplayer->maxthrust) - 32; sound->stop (SOUND_PLANE1); sound->engine = (int) (fplayer->thrust / fplayer->maxthrust * 20) - 10; sound->setVolume (SOUND_PLANE1, lev); sound->playLoop (SOUND_PLANE1); } else { sound->setVolume (SOUND_PLANE1, 0); } } void setLightSource (int gamma) { light_position0 [0] = -cosi [gamma]; light_position0 [1] = sine [gamma]; light_position0 [2] = 0; glLightfv (GL_LIGHT0, GL_POSITION, light_position0); } CModel *getModel (int id) { if (id == FIGHTER_FALCON) return &model_fig; else if (id == FIGHTER_SWALLOW) return &model_figa; else if (id == FIGHTER_HAWK) return &model_figb; else if (id == FIGHTER_HAWK2) return &model_figc; else if (id == FIGHTER_BUZZARD) return &model_figd; else if (id == FIGHTER_CROW) return &model_fige; else if (id == FIGHTER_PHOENIX) return &model_figf; else if (id == FIGHTER_REDARROW) return &model_figg; else if (id == FIGHTER_BLACKBIRD) return &model_figh; else if (id == FIGHTER_STORM) return &model_figi; else if (id == FIGHTER_TRANSPORT) return &model_figt; else if (id == FIGHTER_TRANSPORT2) return &model_figu; else if (id == MISSILE_AIR1) return &model_missile1; else if (id == MISSILE_AIR2) return &model_missile2; else if (id == MISSILE_AIR3) return &model_missile3; else if (id == MISSILE_GROUND1) return &model_missile4; else if (id == MISSILE_GROUND2) return &model_missile5; else if (id == MISSILE_DF1) return &model_missile6; else if (id == MISSILE_FF1) return &model_missile7; else if (id == MISSILE_FF2) return &model_missile8; else if (id == TANK_AIR1) return &model_tank1; else if (id == TANK_GROUND1) return &model_tank2; else if (id == TANK_TRSAM1) return &model_trsam; else if (id == TANK_PICKUP1) return &model_pickup1; else if (id == TANK_TRUCK1) return &model_truck1; else if (id == TANK_TRUCK2) return &model_truck2; else if (id == SHIP_CRUISER) return &model_ship1; else if (id == SHIP_DESTROYER1) return &model_ship2; else if (id == FLAK_AIR1) return &model_flak1; else if (id == FLARAK_AIR1) return &model_flarak1; else if (id == STATIC_TENT1) return &model_tent1; else if (id == STATIC_TENT4) return &model_tent4; else if (id == STATIC_CONTAINER1) return &model_container1; else if (id == STATIC_HALL1) return &model_hall1; else if (id == STATIC_HALL2) return &model_hall2; else if (id == STATIC_OILRIG1) return &model_oilrig; else if (id == STATIC_COMPLEX1) return &model_egg; else if (id == STATIC_RADAR1) return &model_radar; else if (id == STATIC_BASE1) return &model_base1; else if (id == STATIC_DEPOT1) return &model_depot1; else if (id == STATIC_BARRIER1) return &model_barrier1; else if (id == ASTEROID) return &model_aster1; return &model_fig; } int game_levelInit () { int i, i2; // init all objects for (i = 0; i < maxfighter; i ++) { fighter [i]->dinit (); fighter [i]->aiinit (); // fighter [i]->fighterinit (); fighter [i]->explode = 0; fighter [i]->tl->x = 0; fighter [i]->tl->z = -i * 10; fighter [i]->party = 0; fighter [i]->zoom = 0.35; fighter [i]->deactivate (); fighter [i]->recheight = 15; fighter [i]->recthrust = 0.2; fighter [i]->rectheta = 0; fighter [i]->o = &model_fig; } for (i = 0; i < maxgroundobj; i ++) { groundobj [i]->dinit (); groundobj [i]->zoom = 1; groundobj [i]->id = STATIC_PASSIVE; groundobj [i]->deactivate (); } // if (l != NULL) delete l; if (!multiplayer || isserver || !isserver) // clients do not need the mission { Mission *missionold = mission; mission = missionnew; missionnew = NULL; mission->difficulty = difficulty; mission->start (); if (mission->id >= MISSION_CUSTOM1 && mission->id <= MISSION_CUSTOM2) { if (((MissionCustom *) mission)->reterror) { display ("Could not startup mission", LOG_ERROR); delete mission; mission = missionold; return 0; } } if (missionold != NULL) { delete missionold; missionold = NULL; } } initing = true; flash = 0; if (clouds == 0) highclouds->setTexture (NULL); else if (clouds == 1) highclouds->setTexture (texclouds1); else if (clouds == 2) highclouds->setTexture (texclouds2); else if (clouds == 3) highclouds->setTexture (texclouds3); if (clouds == 0) highclouds2->setTexture (NULL); else if (clouds == 1) highclouds2->setTexture (texclouds2); else if (clouds == 2) highclouds2->setTexture (NULL); else if (clouds == 3) highclouds2->setTexture (NULL); // place missiles to racks for (i = 0; i < maxfighter; i ++) { if (fighter [i]->id >= FIGHTER1 && fighter [i]->id <= FIGHTER2) for (i2 = 0; i2 < 4; i2 ++) { int type = fighter [i]->missilerack [i2]; CModel *rm = getModel (MISSILE1 + type); fighter [i]->refmodel [i2 * 3] = rm; fighter [i]->refmodel [i2 * 3 + 1] = rm; fighter [i]->refmodel [i2 * 3 + 2] = rm; fighter [i]->reftl [i2 * 3 + 1].z = fighter [i]->reftl [i2 * 3].z - 0.04; fighter [i]->reftl [i2 * 3 + 2].z = fighter [i]->reftl [i2 * 3].z + 0.04; fighter [i]->reftl [i2 * 3].y = fighter [i]->reftl [i2 * 3 + 1].y - 0.04; int tmp = fighter [i]->missilerackn [i2]; fighter [i]->refscale [i2 * 3] = 0.25; fighter [i]->refscale [i2 * 3 + 1] = 0.25; fighter [i]->refscale [i2 * 3 + 2] = 0.25; if (tmp < 3) fighter [i]->refscale [i2 * 3] = 0; if (tmp < 2) fighter [i]->refscale [i2 * 3 + 1] = 0; } } // initialize object's height over the surface for (i = 0; i < maxfighter; i ++) { if (fighter [i]->id >= FLAK1 && fighter [i]->id <= FLAK2) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom; } else if (fighter [i]->id == SHIP_DESTROYER1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom / 4; } else if (fighter [i]->id == SHIP_CRUISER) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom / 4; } else if (fighter [i]->id >= TANK1 && fighter [i]->id <= TANK2) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom * 0.55; } else if (fighter [i]->id == STATIC_TENT1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z); } else if (fighter [i]->id == STATIC_CONTAINER1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom / 2; } else if (fighter [i]->id == STATIC_HALL1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom / 3; } else if (fighter [i]->id == STATIC_HALL2) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom / 3; } else if (fighter [i]->id == STATIC_TENT4) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom / 3; } else if (fighter [i]->id == STATIC_OILRIG1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + fighter [i]->zoom / 5; } else if (fighter [i]->id == STATIC_COMPLEX1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 0.55 * fighter [i]->zoom; } else if (fighter [i]->id == STATIC_RADAR1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 0.7 * fighter [i]->zoom; } else if (fighter [i]->id == STATIC_BASE1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 0.5 * fighter [i]->zoom; } else if (fighter [i]->id == STATIC_DEPOT1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 0.5 * fighter [i]->zoom; } else if (fighter [i]->id == STATIC_BARRIER1) { fighter [i]->tl->y = l->getExactHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 0.3 * fighter [i]->zoom; } else if (fighter [i]->id == MISSILE_MINE1) { fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 5 + myrandom (20); } else if (fighter [i]->id == ASTEROID) { ; } else { fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 20; } } for (i = 0; i < maxlaser; i ++) { laser [i]->deactivate (); if (day) { laser [i]->o = &model_cannon1; laser [i]->zoom = 0.08; laser [i]->drawlight = false; } else { laser [i]->o = &model_cannon2; laser [i]->zoom = 0.1; } } for (i = 0; i < maxmissile; i ++) { missile [i]->aiinit (); missile [i]->deactivate (); } for (i = 0; i < maxflare; i ++) { flare [i]->dinit (); flare [i]->deactivate (); } for (i = 0; i < maxchaff; i ++) { chaff [i]->dinit (); chaff [i]->deactivate (); } for (i = 0; i < maxstar; i ++) { star [i]->phi = myrandom (360); star [i]->gamma = myrandom (85); star [i]->size = 0.6 + 0.15 * myrandom (8); } CColor skycolor; if (day && weather == WEATHER_SUNNY) { if (sungamma < 35) { skycolor.setColor ((unsigned short) (127 + 70 - 2 * sungamma), 127, 127); objsphere->setColor (&skycolor); } else { skycolor.setColor (127, 127, 127 + 5); objsphere->setColor (&skycolor); } if (sungamma < 35) { gl->fogcolor [0] = (float) (127 + 70 - 2 * sungamma) / 256.0; gl->fogcolor [1] = 0.5; gl->fogcolor [2] = 0.5; } else { gl->fogcolor [0] = 0.5; gl->fogcolor [1] = 0.5; gl->fogcolor [2] = 0.52; } skycolor.setColor (50, 200, 255); objsphere->setNorthPoleColor (&skycolor, 1.8); if (sungamma < 35) { skycolor.setColor ((unsigned short) (180 + 70 - 2 * sungamma), 180, 180); objsphere->setPoleColor (270, (int) (90 - sungamma), &skycolor, 0.3); } else { skycolor.setColor (200, 200, 200); objsphere->setPoleColor (270, (int) (90 - sungamma), &skycolor, 0.3); } } else if (!day && weather == WEATHER_SUNNY) { skycolor.setColor (64, 64, 64); objsphere->setColor (&skycolor); gl->fogcolor [0] = 0.25; gl->fogcolor [1] = 0.25; gl->fogcolor [2] = 0.25; if (l->type != LAND_MOON) { skycolor.setColor (0, 0, 170); objsphere->setNorthPoleColor (&skycolor, 1.8); skycolor.setColor (64, 64, 64); objsphere->setPoleColor (270, (int) (90 - sungamma), &skycolor, 0.3); } else { skycolor.setColor (0, 0, 0); objsphere->setNorthPoleColor (&skycolor, 1.8); } } else if (day && weather == WEATHER_THUNDERSTORM) { skycolor.setColor (102, 102, 102); objsphere->setColor (&skycolor); gl->fogcolor [0] = 0.4; gl->fogcolor [1] = 0.4; gl->fogcolor [2] = 0.4; skycolor.setColor (102, 102, 102); objsphere->setNorthPoleColor (&skycolor, 1.8); } else if (!day && weather == WEATHER_THUNDERSTORM) { skycolor.setColor (40, 40, 40); objsphere->setColor (&skycolor); gl->fogcolor [0] = 0.16; gl->fogcolor [1] = 0.16; gl->fogcolor [2] = 0.16; skycolor.setColor (40, 40, 40); objsphere->setNorthPoleColor (&skycolor, 1.8); } else if (weather == WEATHER_CLOUDY) { skycolor.setColor (20, 20, 20); objsphere->setColor (&skycolor); gl->fogcolor [0] = 0.08; gl->fogcolor [1] = 0.08; gl->fogcolor [2] = 0.08; } glDeleteLists (objsphere->list1, 1); glDeleteLists (objsphere->list2, 1); glDeleteLists (objsphere->list3, 1); objsphere->list1 = -1; objsphere->list2 = -1; objsphere->list3 = -1; // glLightfv( GL_LIGHT0, GL_AMBIENT, light_ambient ); /* float light_specular [3] = {0.5, 0.5, 0.5}; glLightfv( GL_LIGHT0, GL_SPECULAR, light_specular );*/ setLightSource ((int) sungamma); glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); // glLightModeli (GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); glEnable (GL_LIGHT0); // Turn on a light with defaults set float light_ambient [4] = {0.2, 0.2, 0.2, 1.0}; float light_diffuse [4] = {1.0, 1.0, 1.0, 1.0}; float light_specular [4] = {1.0, 1.0, 1.0, 1.0}; glLightfv (GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv (GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv (GL_LIGHT0, GL_SPECULAR, light_specular); glEnable (GL_LIGHTING); // Turn on lighting glEnable (GL_COLOR_MATERIAL); // Allow color glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); // glDisable (GL_DITHER); fplayer->missiletype = fplayer->firstMissile (); initing = false; lastshield = (int) fplayer->shield; fps = 30; redout = 0; blackout = 0; if (!fplayer->ai) fplayer->realism = physics; /*#ifdef HAVE_SDL_NET if (multiplayer) { if (threadnet != NULL) SDL_KillThread (threadnet); threadnet = SDL_CreateThread (net_thread_main, NULL); } #endif*/ return 1; } void game_reshape () { glViewport(0, 0, (GLint) width, (GLint) height); glMatrixMode (GL_PROJECTION); glLoadIdentity (); float v = getView (); if (camera == 50) v = 100000.0; gluPerspective (visibleangle, (float) width / height, nearclippingplane * GLOBALSCALE, v * GLOBALSCALE); glPolygonMode (GL_FRONT_AND_BACK, polygonMode); #ifndef USE_GLUT /* if (controls == 1) SDL_ShowCursor (1); else*/ SDL_ShowCursor (0); #endif } void menu_reshape () { glViewport(0, 0, (GLint) width, (GLint) height); glMatrixMode (GL_PROJECTION); glLoadIdentity (); float v = getView (); if (camera == 50) v = 100000.0; gluPerspective (visibleangle, 1.0, nearclippingplane * GLOBALSCALE, v * GLOBALSCALE); glPolygonMode (GL_FRONT_AND_BACK, polygonMode); #ifndef USE_GLUT SDL_ShowCursor (0); #endif } void credits_reshape () { glViewport(0, 0, (GLint) width, (GLint) height); glMatrixMode (GL_PROJECTION); glLoadIdentity (); float v = getView (); if (camera == 50) v = 100000.0; gluPerspective (visibleangle, 1.0, nearclippingplane * GLOBALSCALE, v * GLOBALSCALE); glPolygonMode (GL_FRONT_AND_BACK, polygonMode); #ifndef USE_GLUT SDL_ShowCursor (0); #endif } void stats_reshape () { glViewport(0, 0, (GLint) width, (GLint) height); glMatrixMode (GL_PROJECTION); glLoadIdentity (); float v = getView (); if (camera == 50) v = 100000.0; gluPerspective (visibleangle, 1.0, nearclippingplane * GLOBALSCALE, v * GLOBALSCALE); glPolygonMode (GL_FRONT_AND_BACK, polygonMode); #ifndef USE_GLUT SDL_ShowCursor (0); #endif } void playRandomMusic () { int r = myrandom (6); if (r == 0) sound->loadMusic (MUSIC_DARK1); else if (r == 1) sound->loadMusic (MUSIC_STANDBY1); else if (r == 2) sound->loadMusic (MUSIC_ELECTRO1); else if (r == 3) sound->loadMusic (MUSIC_STARS1); else if (r == 4) sound->loadMusic (MUSIC_SOFTTEC1); else sound->loadMusic (MUSIC_AMBIENT1); sound->playMusic (1); #ifdef HAVE_SDL_MIXER Mix_HookMusicFinished (playRandomMusic); #endif } void switch_menu () { lasttime = 0; setLightSource ((int) sungamma); game = GAME_MENU; menu_reshape (); sound->stop (SOUND_PLANE1); if (!sound->musicplaying) playRandomMusic (); allmenus.visible = true; allmenus.components [0]->setVisible (true); if (currentsubmenu) { currentsubmenu->setVisible (true); } if (missionactive) mainbutton [6]->setVisible (true); else mainbutton [6]->setVisible (false); #ifdef HAVE_SDL SDL_WM_GrabInput (SDL_GRAB_OFF); #endif } bool ispromoted; int statsitemselected = 0; void switch_stats () { lasttime = 0; setLightSource ((int) sungamma); game = GAME_STATS; statsitemselected = 0; int lastrank = pilots->pilot [pilots->aktpilot]->ranking; (void) pilots->pilot [pilots->aktpilot]->getRank (); ispromoted = false; if (lastrank < pilots->pilot [pilots->aktpilot]->ranking) ispromoted = true; stats_reshape (); sound->stop (SOUND_PLANE1); if (!sound->musicplaying) { int missionstate = mission->processtimer (1); if (missionstate == 1) sound->loadMusic (MUSIC_WINNER1); else sound->loadMusic (MUSIC_LOSER1); sound->playMusic (); } } void createMission (int missionid) { if (missionid >= MISSION_MULTIPLAYER) { multiplayer = true; } else { multiplayer = false; isserver = false; } if (missionnew != NULL) delete missionnew; if (missionid == MISSION_DEMO) missionnew = new MissionDemo1 (); else if (missionid == MISSION_TEST1) missionnew = new MissionTest1 (); else if (missionid == MISSION_TEST2) missionnew = new MissionTest2 (); else if (missionid == MISSION_TRANSPORT) missionnew = new MissionTransport (); else if (missionid == MISSION_CONVOY) missionnew = new MissionConvoy (); else if (missionid == MISSION_DOGFIGHT2) missionnew = new MissionDogfight2 (); else if (missionid == MISSION_AIRBATTLE) missionnew = new MissionAirBattle (); else if (missionid == MISSION_SADEFENSE) missionnew = new MissionGround1 (); else if (missionid == MISSION_SCOUT) missionnew = new MissionScout (); else if (missionid == MISSION_BASE) missionnew = new MissionBase (); else if (missionid == MISSION_DEPOT) missionnew = new MissionDepot (); else if (missionid == MISSION_DEFEND1) missionnew = new MissionDefend1 (); else if (missionid == MISSION_DOGFIGHT3) missionnew = new MissionDogfight3 (); else if (missionid == MISSION_TANK1) missionnew = new MissionTank1 (); else if (missionid == MISSION_CONVOY2) missionnew = new MissionConvoy2 (); else if (missionid == MISSION_SHIP1) missionnew = new MissionShip1 (); else if (missionid == MISSION_SHIP2) missionnew = new MissionShip2 (); else if (missionid == MISSION_SHIP3) missionnew = new MissionShip3 (); else if (missionid == MISSION_CANYON1) missionnew = new MissionCanyon1 (); else if (missionid == MISSION_CANYON2) missionnew = new MissionCanyon2 (); else if (missionid == MISSION_CANYON3) missionnew = new MissionCanyon3 (); else if (missionid == MISSION_TUNNEL1) missionnew = new MissionTunnel1 (); else if (missionid == MISSION_MOON1) missionnew = new MissionMoonDefense1 (); else if (missionid == MISSION_MOONBATTLE) missionnew = new MissionMoonBattle (); else if (missionid == MISSION_MOON2) missionnew = new MissionMoonDogfight1 (); else if (missionid == MISSION_MOON3) missionnew = new MissionMoonBase1 (); else if (missionid == MISSION_TUTORIAL) missionnew = new MissionTutorial1 (); else if (missionid == MISSION_TUTORIAL2) missionnew = new MissionTutorial2 (); else if (missionid == MISSION_DOGFIGHT) missionnew = new MissionDogfight1 (); else if (missionid == MISSION_TUTORIAL3) missionnew = new MissionTutorial3 (); else if (missionid == MISSION_FREEFLIGHT1) missionnew = new MissionFreeFlight1 (); else if (missionid == MISSION_DEATHMATCH1) missionnew = new MissionDeathmatch1 (); else if (missionid == MISSION_DEATHMATCH2) missionnew = new MissionDeathmatch2 (); else if (missionid == MISSION_DEATHMATCH3) missionnew = new MissionDeathmatch3 (); else if (missionid == MISSION_TEAMBASE1) missionnew = new MissionTeamBase1 (); else if (missionid == MISSION_WAVES1) missionnew = new MissionWaves1 (); else if (missionid == MISSION_MULTIPLAYER_DOGFIGHT) missionnew = new MissionMultiDogfight1 (); else if (missionid >= MISSION_CUSTOM1 && missionid <= MISSION_CUSTOM2) { missionnew = new MissionCustom (); missionnew->id = missionid; ((MissionCustom *) missionnew)->init (); } if (mission != NULL) { if (mission->id == missionnew->id) { missionnew->wantfighter = mission->wantfighter; missionnew->wantweapon = mission->wantweapon; } } } void switch_mission (int missionid) { lasttime = 0; setLightSource (60); game = GAME_MISSION; createMission (missionid); if (missionid >= MISSION_CUSTOM1 && missionid <= MISSION_CUSTOM2) { if (((MissionCustom *) missionnew)->reterror) { display ("Could not init mission", LOG_ERROR); // play error sound switch_menu (); return; } } menu_reshape (); sound->stop (SOUND_PLANE1); if (!sound->musicplaying) playRandomMusic (); } void switch_fame () { lasttime = 0; setLightSource (60); game = GAME_FAME; menu_reshape (); sound->stop (SOUND_PLANE1); if (!sound->musicplaying) playRandomMusic (); } void switch_fighter () { lasttime = 0; setLightSource (60); game = GAME_FIGHTER; menu_reshape (); sound->stop (SOUND_PLANE1); if (!sound->musicplaying) playRandomMusic (); } void switch_create () { lasttime = 0; setLightSource (60); game = GAME_CREATE; isserver = true; if (server != NULL) delete server; server = new Server (); menu_reshape (); sound->stop (SOUND_PLANE1); if (!sound->musicplaying) playRandomMusic (); } void switch_join () { lasttime = 0; setLightSource (60); game = GAME_JOIN; isserver = false; if (client != NULL) delete client; client = new Client (); menu_reshape (); sound->stop (SOUND_PLANE1); if (!sound->musicplaying) playRandomMusic (); } int creditstimer, finishtimer; void switch_credits () { lasttime = 0; game = GAME_CREDITS; creditstimer = 50 * timestep; credits_reshape (); sound->stop (SOUND_PLANE1); sound->stop (SOUND_CANNON1); } void switch_finish () { lasttime = 0; game = GAME_FINISH; creditstimer = 50 * timestep; credits_reshape (); if (sound->musicplaying) sound->haltMusic (); sound->loadMusic (MUSIC_ELECTRO1); sound->playMusic (); sound->stop (SOUND_PLANE1); sound->stop (SOUND_CANNON1); } void switch_quit () { lasttime = 0; game = GAME_QUIT; save_saveconfig (); // this configuration seems to work => save it } void switch_game () { lasttime = 0; setLightSource ((int) sungamma); game = GAME_PLAY; game_reshape (); if (sound->musicplaying) sound->haltMusic (); sound->playLoop (SOUND_PLANE1); setPlaneVolume (); #ifdef HAVE_SDL SDL_WM_GrabInput (SDL_GRAB_ON); #endif } bool startcannon = false; void event_setAntialiasing () { if (antialiasing) { gl->enableLinearTexture (font1->texture->textureID); gl->enableLinearTexture (font2->texture->textureID); if (texmoon != NULL) { gl->enableLinearTexture (texmoon->textureID); gl->enableLinearTexture (texsun->textureID); gl->enableLinearTexture (texearth->textureID); } } else { gl->disableLinearTexture (font1->texture->textureID); gl->disableLinearTexture (font2->texture->textureID); if (texmoon != NULL) { gl->disableLinearTexture (texmoon->textureID); gl->disableLinearTexture (texsun->textureID); gl->disableLinearTexture (texearth->textureID); } } } void event_fireCannon () { if (!fplayer->active) return; if (fplayer->firecannonttl > 0) return; if (fplayer->ammo == 0) return; #ifdef USE_GLUT fplayer->fireCannon (laser); #else fplayer->autofire = true; #endif } void event_stopCannon () { fplayer->autofire = false; } void event_fireMissile () { if (!fplayer->active) return; if (fplayer->firemissilettl > 0) return; if (fplayer->fireMissile (fplayer->missiletype + MISSILE1, missile)) sound->play (SOUND_MISSILE1, false); } void event_fireChaff () { if (!fplayer->active) return; if (fplayer->firechaffttl > 0) return; if (fplayer->fireChaff (chaff, missile)) sound->play (SOUND_CHAFF1, false); } void event_fireFlare () { if (!fplayer->active) return; if (fplayer->fireflarettl > 0) return; if (fplayer->fireFlare (flare, missile)) sound->play (SOUND_CHAFF1, false); } void event_selectMissile () { if (!fplayer->active) return; fplayer->missiletype = fplayer->nextMissile (fplayer->missiletype); } void event_targetNearest () { if (!fplayer->active) return; fplayer->targetNearestEnemy ((AIObj **) fighter); sound->play (SOUND_CLICK1, false); } void event_targetNext () { if (!fplayer->active) return; fplayer->targetNext ((AIObj **) fighter); sound->play (SOUND_CLICK1, false); } void event_targetPrevious () { if (!fplayer->active) return; fplayer->targetPrevious ((AIObj **) fighter); sound->play (SOUND_CLICK1, false); } void event_targetLocking () { if (!fplayer->active) return; fplayer->targetLockingEnemy ((AIObj **) fighter); sound->play (SOUND_CLICK1, false); } void event_thrustUp () { if (!fplayer->active) return; fplayer->thrustUp (); fplayer->thrustUp (); } void event_thrustDown () { if (!fplayer->active) return; fplayer->thrustDown (); fplayer->thrustDown (); } void game_key (int key, int x, int y) { unsigned int hikey = key; unsigned int lokey = key; if (camera == 50 && game == GAME_PAUSE) { camera = 0; game = GAME_PLAY; return; } else if (key == 27) { switch_menu (); } else if (hikey == key_firemissile || lokey == key_firemissile) { event_fireMissile (); } else if (hikey == key_dropflare || lokey == key_dropflare) { event_fireFlare (); } else if (hikey == key_dropchaff || lokey == key_dropchaff) { event_fireChaff (); } else if (hikey == key_firecannon || lokey == key_firecannon) { event_fireCannon (); } else if (hikey == key_selectmissile || lokey == key_selectmissile) { event_selectMissile (); } else if (hikey == key_thrustup || lokey == key_thrustup) { event_thrustUp (); } else if (hikey == key_thrustdown || lokey == key_thrustdown) { event_thrustDown (); } else if (key >= '1' && key <= '9') { fplayer->recthrust = fplayer->maxthrust * (1.0 / 18.0 * (key - '0') + 0.5); sound->play (SOUND_CLICK1, false); } else if (hikey == key_targetnearest || lokey == key_targetnearest) { event_targetNearest (); } else if (hikey == key_targetnext || lokey == key_targetnext) { event_targetNext (); } else if (hikey == key_targetprevious || lokey == key_targetprevious) { event_targetPrevious (); } else if (hikey == key_targetlocking || lokey == key_targetlocking) { event_targetLocking (); } /* else if (key == 'K') { if (fplayer->target != NULL) fplayer->target->shield = -1; } else if (key == 'V') { visibleangle += 10.0; if (visibleangle > 120.0) visibleangle = 50.0; }*/ else if (hikey == key_firecannon || lokey == key_firecannon) { fplayer->autofire = false; } switch (key - 256) // standard special keys { case KEY_LSHIFT: keyb_lshift = 1; break; case KEY_UP: keyb_elev = -1; break; case KEY_DOWN: keyb_elev = 1; break; case KEY_LEFT: if (keyb_lshift) keyb_rudder = -1; else keyb_roll = 1; break; case KEY_RIGHT: if (keyb_lshift) keyb_rudder = 1; else keyb_roll = -1; break; case KEY_F1: camera = 0; game_reshape (); break; case KEY_F2: camera = 1; game_reshape (); break; case KEY_F3: camera = 2; game_reshape (); break; case KEY_F4: camera = 6; game_reshape (); break; case KEY_F5: camera = 7; game_reshape (); break; case KEY_F6: camera = 9; game_reshape (); break; case KEY_F7: camera = 8; game_reshape (); break; case KEY_F8: camera = 5; game_reshape (); break; default: return; } #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } void game_keyup (int key, int x, int y) { unsigned int hikey = (unsigned int) key; unsigned int lokey = (unsigned int) key; if (hikey == key_firecannon || lokey == key_firecannon) { event_stopCannon (); } switch (key - 256) // standard special keys { case KEY_LSHIFT: keyb_lshift = 0; break; case KEY_UP: keyb_elev = 0; break; case KEY_DOWN: keyb_elev = 0; break; case KEY_LEFT: keyb_roll = 0; keyb_rudder = 0; break; case KEY_RIGHT: keyb_roll = 0; keyb_rudder = 0; break; case KEY_LALT: keyb_rudder = 0; break; case KEY_LCTRL: keyb_rudder = 0; break; } #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } int aktcam = 0; void game_mouse (int button, int state, int x, int y) { if (state == MOUSE_DOWN && fplayer->active) { if (button == mouse_firecannon) { fplayer->autofire = !fplayer->autofire; } else if (button == mouse_firemissile) { event_fireMissile (); } else if (button == mouse_selectmissile) { event_selectMissile (); } } } float dtheta = 0, dgamma = 0; int lastmousex = 0; int lastmx = 0, lastmy = 0; void game_mouserelmotion (int xrel, int yrel) { if (controls != CONTROLS_MOUSE || !mouse_relative) return; float xr = (float) xrel / width, yr = (float) yrel / height; float roll = (float) -xr * 20; if (roll > 1.0F) roll = 1.0F; else if (roll < -1.0F) roll = -1.0F; fplayer->rolleffect = roll; if (roll < 1E-3) fplayer->ruddereffect = (float) xr * 200; else fplayer->ruddereffect = 0.0f; if (fplayer->ruddereffect > 1.0) fplayer->ruddereffect = 1.0; else if (fplayer->ruddereffect < -1.0) fplayer->ruddereffect = -1.0; fplayer->elevatoreffect = (float) yr * fabs (yr) * 20000; if (!mouse_reverse) fplayer->elevatoreffect *= -1; if (fplayer->elevatoreffect > 1.0f) fplayer->elevatoreffect = 1.0f; else if (fplayer->elevatoreffect < -0.5f) fplayer->elevatoreffect = -0.5f; } void game_mousemotion (int x, int y) { if (controls != CONTROLS_MOUSE || mouse_relative) return; float mx = width / 2, my = height / 2; float dx = x - mx, dy = my - y; dx *= mouse_sensitivity / 70.0F; dy *= mouse_sensitivity / 70.0F; if (mouse_reverse) dy *= -1; // mouse interface code added by Lourens Veen float nx = dx / width; // normalised x-coordinate, -1 at lefthand // side of the screen, 1 at righthand side if (mouse_autorudder) { if (fabs(nx) < (1.0f/3.0f)) if (nx < 0.0f) fplayer->ruddereffect = 729.0f*nx*(nx+1.0f/3.0f)*(nx+1.0f/3.0f)/4.0f; else fplayer->ruddereffect = 729.0f*nx*(nx-1.0f/3.0f)*(nx-1.0f/3.0f)/4.0f; else fplayer->ruddereffect = 0.0f; } else { fplayer->ruddereffect = 0; } const float roll_deadarea = (float) mouse_autorudder / 1000.0F; //(1.0f/30.0f); if (fabs(nx) > roll_deadarea) { if (nx > 0.0f) nx -= roll_deadarea; else nx += roll_deadarea; if (nx > 0) fplayer->rolleffect = -(exp(log(nx) * 1.3f)) * 3.0f; else fplayer->rolleffect = (exp(log(-nx) * 1.3f)) * 3.0f; if (fplayer->rolleffect < -1.0F) fplayer->rolleffect = -1.0F; if (fplayer->rolleffect > 1.0F) fplayer->rolleffect = 1.0F; } else fplayer->rolleffect = 0.0f; fplayer->elevatoreffect = dy / height * 2.5; if (fplayer->elevatoreffect > 1.0f) fplayer->elevatoreffect = 1.0f; else if (fplayer->elevatoreffect < -0.5f) fplayer->elevatoreffect = -0.5f; #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } int jaxis [maxjaxis * maxjoysticks]; int getJoystickAxisIndex (int n) { int idx = (n / 1000) * 10 + (n % 1000); if (idx < 0) idx = 0; if (idx >= maxjaxis) idx = 0; return idx; } void game_joystickaxis (int x, int y, int rudder, int throttle) { if (fplayer->ai) return; float xx = x / 32768.0; xx *= fabs (xx); fplayer->rolleffect = (float) -xx; fplayer->elevatoreffect = (float) y / 30000; if (fplayer->elevatoreffect > 1.0) fplayer->elevatoreffect = 1.0; else if (fplayer->elevatoreffect < -1.0) fplayer->elevatoreffect = -1.0; if (fplayer->elevatoreffect < -0.5) fplayer->elevatoreffect = -0.5; fplayer->ruddereffect = (float) rudder / 30000; if (fplayer->ruddereffect > 1.0) fplayer->ruddereffect = 1.0; else if (fplayer->ruddereffect < -1.0) fplayer->ruddereffect = -1.0; fplayer->recthrust = fplayer->maxthrust * 0.75 - fplayer->maxthrust / 4 * throttle / 32638; } void game_joystickbutton (int button) { if (!fplayer->active) return; if (button == joystick_firecannon) { fplayer->fireCannon (laser); #ifdef HAVE_SDL_MIXER if (!startcannon) { sound->playLoop (SOUND_CANNON1); startcannon = true; } #else sound->play (SOUND_CANNON1, 1); #endif } if (button == joystick_firemissile) { event_fireMissile (); } if (button == joystick_dropflare) { event_fireFlare (); } if (button == joystick_dropchaff) { event_fireChaff (); } if (button == joystick_selectmissile) { event_selectMissile (); } if (button == joystick_targetnearest) { event_targetNearest (); } if (button == joystick_targetlocking) { event_targetLocking (); } if (button == joystick_targetnext) { event_targetNext (); } if (button == joystick_targetprevious) { event_targetPrevious (); } if (button == joystick_thrustup) { event_thrustUp (); } if (button == joystick_thrustdown) { event_thrustDown (); } } void game_joystickhat (int normhat) { #ifndef USE_GLUT game_joystickbutton (normhat); #endif } int frames = 0, time2 = 0, time1 = 0; void frame () { frames ++; #ifndef USE_GLUT time2 = SDL_GetTicks (); #else time2 = glutGet (GLUT_ELAPSED_TIME); #endif if (time2 - time1 > 1000) { if (time2 - time1 < 1500) fps = (float) frames * 1000.0 / (time2 - time1); time1 = time2; frames = 0; } } void game_view () { frame (); #ifdef USE_GLUT glutSwapBuffers(); #else SDL_GL_SwapBuffers (); #endif } int missionending = 0; int missionstate = 0; int menuitem = 0, menutimer = 0, menuitemselected = -1, missionmenutimer; int missionmenuitemselected = 0, missionmenufighterselected = -1, missionmenuweaponselected = -1; void drawCircles (CColor *colorstd) { int i; float zf = -3, yf, xf; int t = 360 - (missionmenutimer * 10 / timestep) % 360; for (i = 0; i < 20; i ++) { yf = -3 + 0.3 * i; // - (float) (missionmenutimer & 63) / 64.0; glBegin (GL_QUAD_STRIP); for (int i2 = 0; i2 < 20; i2 ++) { xf = -3 + 0.3 * i2; yf = -3 + 0.3 * i; float cola = sine [(int) (sqrt (xf * xf + yf * yf) * 200 + t) % 360] / 10 + 0.2; if (colorstd == &colorblue) glColor3f (0, 0, cola); else glColor3f (cola, 0, 0); glVertex3f (xf, yf, zf); yf = -3 + 0.3 * (i + 1); cola = sine [(int) (sqrt (xf * xf + yf * yf) * 200 + t) % 360] / 10 + 0.2; if (colorstd == &colorblue) glColor3f (0, 0, cola); else glColor3f (cola, 0, 0); glVertex3f (xf, yf, zf); } glEnd (); } } void drawQuads (CColor *colorstd) { int i; float zf = -3, yf; for (i = 0; i < 14; i ++) { yf = -3 + 0.5 * i - (float) (missionmenutimer / timestep & 63) / 64.0; glBegin (GL_QUAD_STRIP); for (int i2 = 0; i2 < 14; i2 ++) { float cola = sine [(i * 100+missionmenutimer*4 / timestep) % 360] / 10 + sine [(i2 * 100) % 360] / 10 + 0.2; if (colorstd == &colorblue) glColor3f (0, 0, cola); else glColor3f (cola, 0, 0); glVertex3f (-3 + 0.5 * i2, -3 + 0.5 * i, zf + sine [(i * 100) % 360] / 2); cola = sine [((i+1) * 100+missionmenutimer*4 / timestep) % 360] / 10 + sine [(i2 * 100) % 360] / 10 + 0.2; if (colorstd == &colorblue) glColor3f (0, 0, cola); else glColor3f (cola, 0, 0); glVertex3f (-3 + 0.5 * i2, -2.5 + 0.5 * i, zf + sine [((i+1) * 100) % 360] / 2); } glEnd (); } } void drawPlasma (CColor *colorstd) { int i; float yf; float zf1 = -2.98; float yind = 200.0 * sin (0.003 * missionmenutimer / timestep) + 200.0; float xind = 200.0 * cos (0.003 * missionmenutimer / timestep) + 200.0; float yind2 = -200.0 * sin (0.003 * missionmenutimer / timestep) + 200.0; float xind2 = -200.0 * cos (0.003 * missionmenutimer / timestep) + 200.0; for (i = 0; i < 21; i ++) { yf = -2.5 + 0.25 * i; float yif = yind + i * 5; int yi = (int) yif; float yr = yif - yi; float yif2 = yind2 + i * 5; int yi2 = (int) yif2; float yr2 = yif2 - yi2; glBegin (GL_QUAD_STRIP); for (int i2 = 0; i2 < 21; i2 ++) { float xf = -2.5 + 0.25 * i2; float xif = xind + i2 * 5; int xi = (int) xif; float xr = xif - xi; float xif2 = xind2 + i2 * 5; int xi2 = (int) xif2; float xr2 = xif2 - xi2; float h1 = xr * yr * l->h [yi + 1] [xi + 1] + (1.0 - xr) * (1.0 - yr) * l->h [yi] [xi] + xr * (1.0 - yr) * l->h [yi] [xi + 1] + (1.0 - xr) * yr * l->h [yi + 1] [xi]; float h2 = xr * yr * l->h [yi + 1 + 5] [xi + 1] + (1.0 - xr) * (1.0 - yr) * l->h [yi + 5] [xi] + xr * (1.0 - yr) * l->h [yi + 5] [xi + 1] + (1.0 - xr) * yr * l->h [yi + 1 + 5] [xi]; float h3 = xr2 * yr2 * l->h [yi2 + 1] [xi2 + 1] + (1.0 - xr2) * (1.0 - yr2) * l->h [yi2] [xi2] + xr2 * (1.0 - yr2) * l->h [yi2] [xi2 + 1] + (1.0 - xr2) * yr2 * l->h [yi2 + 1] [xi2]; float h4 = xr2 * yr2 * l->h [yi2 + 1 + 5] [xi2 + 1] + (1.0 - xr2) * (1.0 - yr2) * l->h [yi2 + 5] [xi2] + xr2 * (1.0 - yr2) * l->h [yi2 + 5] [xi2 + 1] + (1.0 - xr2) * yr2 * l->h [yi2 + 1 + 5] [xi2]; float intens = sin (0.15 * (h1 / 256 + 0.5 * missionmenutimer / timestep)) * 0.14 + 0.14; float intens2 = sin (0.15 * (h3 / 256 + 0.5 * missionmenutimer / timestep)) * 0.06 + 0.06; if (colorstd == &colorblue) glColor3f (intens2, 0, intens); else glColor3f (intens, 0, intens2); glVertex3f (xf, yf, zf1); intens = sin (0.15 * (h2 / 256 + 0.5 * missionmenutimer / timestep)) * 0.16 + 0.16; intens2 = sin (0.15 * (h4 / 256 + 0.5 * missionmenutimer / timestep)) * 0.08 + 0.08; if (colorstd == &colorblue) glColor3f (intens2, 0, intens); else glColor3f (intens, 0, intens2); glVertex3f (xf, yf + 0.25, zf1); } glEnd (); } } void menu_key (unsigned char key, int x, int y) { if (key == 27) { if (missionactive) { switch_game (); } else { switch_quit (); } } } void pleaseWait () { float xf = 1.0, yf = 0.2, zf = -2.5; int c1 = 100, c2 = 10, c3 = 180; glBegin (GL_QUADS); glColor4ub (c2, c2, c2, 255); glVertex3f (-xf, -yf, zf); glColor4ub (c1, c1, c1, 255); glVertex3f (xf, -yf, zf); glColor4ub (c2, c2, c2, 255); glVertex3f (xf, yf, zf); glColor4ub (c1, c1, c1, 255); glVertex3f (-xf, yf, zf); glEnd (); glLineWidth (LINEWIDTH(1)); glBegin (GL_LINE_STRIP); glColor4ub (c3, c3, c3, 255); glVertex3f (-xf, -yf, zf); glVertex3f (xf, -yf, zf); glVertex3f (xf, yf, zf); glVertex3f (-xf, yf, zf); glVertex3f (-xf, -yf, zf); glEnd (); font1->drawTextCentered (0, -0.5, -1.5, "PLEASE WAIT...", &colorwhite); game_view (); } void stats_key (unsigned char key, int x, int y) { if (key == 27) { pleaseWait (); display ("Initing new mission", LOG_MOST); missionactive = false; createMission (MISSION_DEMO); game_levelInit (); sound->haltMusic (); switch_menu (); } } void credits_key (unsigned char key, int x, int y) { if (key) { // sound->haltMusic (); switch_menu (); } } void finish_key (unsigned char key, int x, int y) { if (key) { // sound->haltMusic (); switch_menu (); } } void mission_key (unsigned char key, int x, int y) { if (key == 27) { switch_menu (); } else if (key == 13) { pleaseWait (); if (!game_levelInit ()) { switch_menu (); return; } switch_game (); missionactive = true; } } void fame_key (unsigned char key, int x, int y) { if (key == 27) { switch_menu (); } } void create_key (unsigned char key, int x, int y) { if (key == 's') { // server->sendMessage (0, "s", 1); if (server->checkStart()) { printf ("Starting.."); createMission (MISSION_MULTIPLAYER_DOGFIGHT); game_levelInit (); switch_game (); missionactive = true; } } if (key == 27) { switch_menu (); } } void join_key (unsigned char key, int x, int y) { if (key == 's') { createMission (MISSION_MULTIPLAYER_DOGFIGHT); game_levelInit (); switch_game (); missionactive = true; } if (key == 27) { switch_menu (); } } void fighter_key (unsigned char key, int x, int y) { if (key == 27) { switch_menu (); } } char *getModelText (int id) { if (id == FIGHTER_FALCON) return "THE FALCON IS A NIMBLE AND\nFAST FIGHTER PROVIDING\nBOTH AIR-AIR AND\nAIR-GROUND-MISSILES."; else if (id == FIGHTER_HAWK) return "THE HAWK IS A TYPICAL\nALLROUNDER AND DESIGNED\nFOR GROUND ATTACKS."; else if (id == FIGHTER_HAWK2) return "THE HAWK II IS A ..."; return "NO INFO"; } char *getModelName (int id) { if (id == FIGHTER_FALCON) return "GL-16 FALCON"; else if (id == FIGHTER_HAWK) return "GL-22 HAWK"; else if (id == FIGHTER_HAWK2) return "GL-23 HAWK II"; else if (id == FIGHTER_REDARROW) return "GL-15 REDARROW"; else if (id == FIGHTER_PHOENIX) return "GL-117 PHOENIX"; else if (id == FIGHTER_STORM) return "GL-50 STORM"; else if (id == FIGHTER_CROW) return "CROW"; else if (id == FIGHTER_BUZZARD) return "BUZZARD"; else if (id == FIGHTER_SWALLOW) return "SWALLOW"; else if (id == FIGHTER_BLACKBIRD) return "BLACKBIRD"; else if (id == MISSILE_AIR1) return "AIR-AIR MISSILE PACK"; else if (id == MISSILE_GROUND1) return "AIR-GROUND MISSILE PACK"; else if (id == MISSILE_DF1) return "DUMB FIRE MISSILE PACK"; return "NO INFO"; } void mission_mouse (int button, int state, int x, int y) { float rx = (float) x / width; float ry = (float) y / height; missionmenuitemselected = -1; missionmenufighterselected = -1; if (ry >= 0.53 && ry <= 0.65) { if (rx >= 0.18 && rx < 0.28) { missionmenufighterselected = 0; if (state == MOUSE_DOWN) missionnew->wantfighter = 0; } if (rx >= 0.28 && rx < 0.38 && missionnew->selfighters >= 2) { missionmenufighterselected = 1; if (state == MOUSE_DOWN) missionnew->wantfighter = 1; } if (rx >= 0.38 && rx < 0.48 && missionnew->selfighters >= 3) { missionmenufighterselected = 2; if (state == MOUSE_DOWN) missionnew->wantfighter = 2; } } missionmenuweaponselected = -1; if (ry >= 0.53 && ry <= 0.65) { if (rx >= 0.54 && rx < 0.64) { missionmenuweaponselected = 0; if (state == MOUSE_DOWN) missionnew->wantweapon = 0; } if (rx >= 0.64 && rx < 0.74 && missionnew->selweapons >= 2) { missionmenuweaponselected = 1; if (state == MOUSE_DOWN) missionnew->wantweapon = 1; } if (rx >= 0.74 && rx < 0.84 && missionnew->selweapons >= 3) { missionmenuweaponselected = 2; if (state == MOUSE_DOWN) missionnew->wantweapon = 2; } } } void drawArrow (float x, float y, float w, float h) { float zf = -3; gl->enableTextures (texarrow->textureID); gl->enableAlphaBlending (); glBegin (GL_QUADS); glColor3ub (180, 180, 180); if (w > h) { glTexCoord2f (0, 1); glVertex3f (x, y, zf); glTexCoord2f (0, 0); glVertex3f (x + w, y, zf); glTexCoord2f (1, 0); glVertex3f (x + w, y + h, zf); glTexCoord2f (1, 1); glVertex3f (x, y + h, zf); } else { glTexCoord2f (1, 0); glVertex3f (x, y - h, zf); glTexCoord2f (1, 1); glVertex3f (x, y, zf); glTexCoord2f (0, 1); glVertex3f (x + w, y, zf); glTexCoord2f (0, 0); glVertex3f (x + w, y - h, zf); } glEnd (); glDisable (GL_BLEND); glDisable (GL_TEXTURE_2D); } void mission_display () { allmenus.setVisible (false); missionmenu.setVisible (true); missionmenu.draw (); char buf [256]; int i; float piloty = 5; Pilot *p = pilots->pilot [pilots->aktpilot]; CColor *colorstd = &colorred; if (p->mission_state [missionnew->id] == 1) colorstd = &colorblue; CColor *col = &menu_colwhite; Font *font2 = font1; CVector3 vec; CVector3 tl (-4.5, 5.5, -8.0); CRotation rot; rot.a = 270; rot.b = (270 - missionmenutimer * 4 / timestep) % 360; rot.c = 90; // Draw dummy missile glEnable (GL_LIGHTING); model_missile1.draw (&vec, &tl, &rot, 0.05, 1.0, 0); glDisable (GL_LIGHTING); glEnable (GL_LIGHTING); glEnable (GL_DEPTH_TEST); tl.x = -0.24; tl.y = -0.075; tl.z = -0.5; rot.a = 300; rot.b = 0; for (i = 0; i < missionnew->selfighters; i ++) { tl.x = -0.24 + (float) i * 0.085; if (missionnew->wantfighter == i) rot.c = (5 + missionmenutimer * 4 / timestep) % 360; else rot.c = 5; getModel (missionnew->selfighter [i])->draw (&vec, &tl, &rot, 0.04, 0.1, 0); } tl.x = 0; tl.y = -0.075; tl.z = -0.5; rot.a = 300; rot.b = 0; for (i = 0; i < missionnew->selweapons; i ++) { tl.x = 0.08 + (float) i * 0.07; if (missionnew->wantweapon == i) rot.c = (5 + missionmenutimer * 4 / timestep) % 360; else rot.c = 5; getModel (missionnew->selweapon [i])->draw (&vec, &tl, &rot, 0.04, 0.1, 0); } glDisable (GL_DEPTH_TEST); glDisable (GL_LIGHTING); float textx = -12, texty = 9.8; font1->zoom = 0.105; font2->zoom = 0.105; float fontscale = 1.05; font1->drawTextCentered (0, texty / fontscale, -2, missionnew->name, col); texty -= 1.1; font1->zoom = 0.05; font2->zoom = 0.05; fontscale = 0.5; font1->drawText (textx / fontscale, texty / fontscale, -2, "BRIEFING:", col); texty -= 1; font1->drawText (textx / fontscale, texty / fontscale, -2, missionnew->briefing, col); float xstats = 0.8, ystats = 5; float xstatstab = 5; font1->drawText (xstats / fontscale, ystats / fontscale, -2, "STATUS:", col); if (p->mission_state [missionnew->id] == 1) font1->drawText (xstatstab / fontscale, ystats / fontscale, -2, "SUCCESS", colorstd); else if (p->mission_state [missionnew->id] == 2) font1->drawText (xstatstab / fontscale, ystats / fontscale, -2, "FAILED", colorstd); else font1->drawText (xstatstab / fontscale, ystats / fontscale, -2, "EMPTY", colorstd); if (missionnew->id >= MISSION_CAMPAIGN1 && missionnew->id <= MISSION_CAMPAIGN2) { texty = ystats - 0.7; font1->drawText (xstats / fontscale, texty / fontscale, -2, "SCORE:", col); int score = p->mission_score [missionnew->id]; if (score < -10000 || score > 100000) score = 0; sprintf (buf, "%d", score); font1->drawText (xstatstab / fontscale, texty / fontscale, -2, buf, colorstd); texty -= 0.7; font1->drawText (xstats / fontscale, texty / fontscale, -2, "KILLS:", col); sprintf (buf, "%d AIRCRAFTS", p->mission_fighterkills [missionnew->id]); font1->drawText (xstatstab / fontscale, texty / fontscale, -2, buf, colorstd); // drawMedal (xstatstab + 2, ystats - 3, -2, getMedal (p->mission_score [missionnew->id]), 2, mission->id); } else { texty = ystats - 0.7; font1->drawText (xstats / fontscale, texty / fontscale, -2, "SCORE:", col); font1->drawText (xstatstab / fontscale, texty / fontscale, -2, "TRAINING", col); } font1->drawText (textx / fontscale, piloty / fontscale, -2, "PILOTS:", col); strcpy (buf, pilots->pilot [pilots->aktpilot]->getShortRank ()); strcat (buf, " "); strcat (buf, pilots->pilot [pilots->aktpilot]->name); font2->drawText ((textx + 1.5) / fontscale, (piloty - 0.8) / fontscale, -2, buf, col); drawRank (textx, piloty - 0.8, -2, pilots->pilot [pilots->aktpilot]->ranking, 0.5); for (i = 1; i < missionnew->alliedfighters; i ++) if (missionnew->alliedpilot [i - 1] >= 0 && missionnew->alliedpilot [i - 1] < 100) { drawRank (textx, piloty - 1 - 0.6 * i, -2, pilots->pilot [pilots->aktpilot]->tp [missionnew->alliedpilot [i - 1]]->ranking, 0.5); font2->drawText ((textx + 1.5) / fontscale, (piloty - 1 - 0.6 * i) / fontscale, -2, pilots->pilot [pilots->aktpilot]->tp [missionnew->alliedpilot [i - 1]]->getShortName (), col); } font1->drawText (textx / fontscale, -1 / fontscale, -2, "CHOOSE FIGHTER:", col); font1->drawText (xstats / fontscale, -1 / fontscale, -2, "CHOOSE WEAPON PACK:", col); font2->drawText (textx / fontscale, -6 / fontscale, -2, getModelName (missionnew->selfighter [missionnew->wantfighter]), col); font2->drawText (xstats / fontscale, -6 / fontscale, -2, getModelName (missionnew->selweapon [missionnew->wantweapon]), col); font1->zoom = 0.1; font2->zoom = 0.1; drawMouseCursor (); } void fame_mouse (int button, int state, int x, int y) { missionmenuitemselected = -1; } void create_mouse (int button, int state, int x, int y) { float rx = (float) x / width; float ry = (float) y / height; missionmenuitemselected = -1; if (ry >= 0.8 && ry <= 0.9) { if (rx >= 0.4 && rx <= 0.6) { missionmenuitemselected = 0; if (state == MOUSE_DOWN) { create_key (27, 0, 0); } } } } void create_display () { CColor *colorstd = &colorblue; glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glPushMatrix (); drawQuads (colorstd); #ifdef HAVE_SDL_NET float my = 0; int i; for (i = 0; i < server->num_clients; i ++) { font1->drawTextCentered (0, my, -2.5, server->clients [i].name); my -= 2; } #endif font1->drawTextCentered (0, 9, -1.5, "CREATE GAME"); if (missionmenuitemselected == 0) font1->drawTextScaled (-2, -12, -2, "BACK", colorstd, -missionmenutimer * 5); else font1->drawText (-2, -12, -2, "BACK"); glPopMatrix (); adjustBrightness (); drawMouseCursor (); } void join_mouse (int button, int state, int x, int y) { float rx = (float) x / width; float ry = (float) y / height; missionmenuitemselected = -1; if (ry >= 0.8 && ry <= 0.9) { if (rx >= 0.4 && rx <= 0.6) { missionmenuitemselected = 0; if (state == MOUSE_DOWN) { create_key (27, 0, 0); } } } } void join_display () { CColor *colorstd = &colorblue; glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glPushMatrix (); drawQuads (colorstd); font1->drawTextCentered (0, 9, -1.5, "JOIN GAME"); if (missionmenuitemselected == 0) font1->drawTextScaled (-2, -12, -2, "BACK", colorstd, -missionmenutimer * 5); else font1->drawText (-2, -12, -2, "BACK"); glPopMatrix (); adjustBrightness (); drawMouseCursor (); } int aktfighter = 0; void fighter_mouse (int button, int state, int x, int y) { } void fighter_display () { allmenus.setVisible (false); fightermenu.setVisible (true); fightermenu.draw (); AIObj ffighter; char buf [256]; int i; CVector3 vec; CVector3 tl; tl.y = -0.04; tl.z = -0.4; CRotation rot; rot.a = 300; rot.b = 0; rot.c = (5 + missionmenutimer * 4 / timestep) % 360; CModel *model = NULL; int id = 0; if (aktfighter == 0) { model = &model_fig; id = FIGHTER_FALCON; } else if (aktfighter == 1) { model = &model_fige; id = FIGHTER_CROW; } else if (aktfighter == 2) { model = &model_figb; id = FIGHTER_HAWK; } else if (aktfighter == 3) { model = &model_figi; id = FIGHTER_STORM; } else if (aktfighter == 4) { model = &model_figa; id = FIGHTER_SWALLOW; } else if (aktfighter == 5) { model = &model_figd; id = FIGHTER_BUZZARD; } else if (aktfighter == 6) { model = &model_figc; id = FIGHTER_HAWK2; } else if (aktfighter == 7) { model = &model_figg; id = FIGHTER_REDARROW; } else if (aktfighter == 8) { model = &model_figf; id = FIGHTER_PHOENIX; } else if (aktfighter == 9) { model = &model_figh; id = FIGHTER_BLACKBIRD; } glEnable (GL_DEPTH_TEST); glEnable (GL_LIGHTING); model->draw (&vec, &tl, &rot, 0.11, 0.5, 0); glDisable (GL_LIGHTING); glDisable (GL_DEPTH_TEST); ffighter.o = model; ffighter.newinit (id, 1, 0); float fontzoom = 0.7; float textx = -9.5; font1->zoom = 0.07; font1->drawText (textx / fontzoom, 9.7 / fontzoom, -2, getModelName (id), &menu_colwhite); float yf = 9.6 - 1.35; strcpy (buf, "TYPE: "); if (ffighter.id == FIGHTER_FALCON || ffighter.id == FIGHTER_CROW || ffighter.id == FIGHTER_BUZZARD || ffighter.id == FIGHTER_REDARROW || ffighter.id == FIGHTER_BLACKBIRD) strcat (buf, "FIGHTER"); else if (ffighter.id == FIGHTER_HAWK || ffighter.id == FIGHTER_HAWK2) strcat (buf, "FIGHTER-BOMBER"); else strcat (buf, "BOMBER"); font1->drawText (textx / fontzoom, yf / fontzoom, -2, buf, &menu_colwhite); yf -= 1; strcpy (buf, "SPEED: "); int stars = (int) ((ffighter.maxthrust - 0.2) * 40); font1->drawText (textx / fontzoom, yf / fontzoom, -2, buf, &menu_colwhite); for (i = 0; i < stars; i ++) drawMedal (4 + i * 1.1, yf + 0.7, -2, 0, 1, MISSION_CAMPAIGN1); yf -= 1; strcpy (buf, "NIMBILITY: "); stars = (int) ((ffighter.manoeverability - 0.3) * 20 + 1); font1->drawText (textx / fontzoom, yf / fontzoom, -2, buf, &menu_colwhite); for (i = 0; i < stars; i ++) drawMedal (4 + i * 1.1, yf + 0.7, -2, 0, 1, MISSION_CAMPAIGN1); yf -= 1; strcpy (buf, "SHIELD: "); stars = (int) ((ffighter.maxshield - 30) / 30); font1->drawText (textx / fontzoom, yf / fontzoom, -2, buf, &menu_colwhite); for (i = 0; i < stars; i ++) drawMedal (4 + i * 1.1, yf + 0.7, -2, 0, 1, MISSION_CAMPAIGN1); yf -= 1; strcpy (buf, "FIREPOWER: "); stars = ffighter.statfirepower; font1->drawText (textx / fontzoom, yf / fontzoom, -2, buf, &menu_colwhite); for (i = 0; i < stars; i ++) drawMedal (4 + i * 1.1, yf + 0.7, -2, 0, 1, MISSION_CAMPAIGN1); font1->zoom = 0.1; drawMouseCursor (); } void fame_display () { allmenus.setVisible (false); famemenu.setVisible (true); famemenu.draw (); char buf [256]; int i, i2; Pilot *p = pilots->pilot [pilots->aktpilot]; float textx = -10; int sum = 0; for (i = MISSION_CAMPAIGN1; i < MISSION_CAMPAIGN2; i ++) sum += p->mission_fighterkills [i]; p->tp [10]->fighterkills = sum; strcpy (p->tp [10]->name, p->name); p->tp [10]->ranking = p->ranking; int index [11]; for (i = 0; i < 11; i ++) index [i] = i; for (i = 0; i < 11; i ++) for (i2 = 0; i2 < i; i2 ++) { if (p->tp [index [i]]->fighterkills < p->tp [index [i2]]->fighterkills) { int temp = index [i]; index [i] = index [i2]; index [i2] = temp; } } for (i = 0; i < 11; i ++) { font1->zoom = 0.07; drawRank (textx + 0.2, i - 3.7, -2, p->tp [index [i]]->ranking, 0.7); sprintf (buf, "%s %s", p->tp [index [i]]->getRank (), p->tp [index [i]]->name); font1->drawText ((textx + 2) / 0.7, (i - 3.7) / 0.7, -2, buf, &menu_colwhite); sprintf (buf, "%d", p->tp [index [i]]->fighterkills); font1->drawText ((textx + 18) / 0.7, (i - 3.7) / 0.7, -2, buf, &menu_colwhite); font1->zoom = 0.1; } drawMouseCursor (); } CModel *explsphere; CSphere *mysphere; void game_quit () { int i; volumesound = sound->volumesound; volumemusic = sound->volumemusic; save_config (); save_configInterface (); pilots->save (dirs->getSaves ("pilots")); display ("Pilots saved", LOG_MOST); for (i = 0; i < maxlaser; i ++) delete (laser [i]); for (i = 0; i < maxmissile; i ++) delete (missile [i]); for (i = 0; i < maxflare; i ++) delete (flare [i]); for (i = 0; i < maxchaff; i ++) delete (chaff [i]); for (i = 0; i < maxexplosion; i ++) delete (explosion [i]); for (i = 0; i < maxstar; i ++) delete (star [i]); for (i = 0; i < maxgroundobj; i ++) delete (groundobj [i]); for (i = 0; i < maxblacksmoke; i ++) delete (blacksmoke [i]); delete pilots; delete tlinf; delete tlminf; delete tlnull; delete explsphere; delete objsphere; delete sphere; delete flash1; delete cockpit; delete font1; delete font2; delete space; delete dirs; delete gl; #ifndef USE_GLUT // SDL_CloseAudio(); // SDL_FreeWAV(wave.sound); // SDL_Quit (); // done atexit() delete sound; #endif exit (EXIT_NORMAL); } void quit_key (unsigned char key, int x, int y) { if (key == 'y' || key == 'Y') game_quit (); else switch_menu (); } void quit_mouse (int button, int state, int x, int y) { float rx = (float) x / width; float ry = (float) y / height; missionmenuitemselected = -1; if (ry >= 0.5 && ry <= 0.55) { if (rx >= 0.35 && rx <= 0.45) { missionmenuitemselected = 0; if (state == MOUSE_DOWN) { quit_key ('y', 0, 0); } } if (rx >= 0.55 && rx <= 0.65) { missionmenuitemselected = 1; if (state == MOUSE_DOWN) { quit_key (27, 0, 0); } } } } void menu_mouse (int button, int state, int x, int y) { } void stats_mouse (int button, int state, int x, int y) { } /**************************************************************************** DISPLAY EVENTS ****************************************************************************/ void drawMissionElement (float x, float y, float z, int thismissionid, int missionid, int selected, char *string) { Pilot *p = pilots->pilot [pilots->aktpilot]; drawMedal (x - 0.8, y + 0.6, z, getMedal (p->mission_score [thismissionid]), 1.0, thismissionid); } void stats_display () { allmenus.setVisible (false); statsmenu.setVisible (true); statsmenu.draw (); float yf = 1.4, zf = -2.5; drawMedal (-5.5, 5.8, -1.5, getMedal (fplayer->score), 1.6, mission->id); drawMedal (5.5, 5.8, -1.5, getMedal (fplayer->score), 1.6, mission->id); char buf [100]; float xf1 = -12, xf2 = 0, xf3 = 8; float linedist = 1.3, linedist2 = 1.1; yf = 6.5; zf = -2.5; CColor *color; Pilot *p = pilots->pilot [pilots->aktpilot]; color = &menu_colwhite; if (missionstate == 1) { font1->drawTextCentered (0, 7, -2, "SUCCESS", &colorblue); } else { font1->drawTextCentered (0, 7, -2, "FAILED", &colorred); } font1->drawText (xf1, yf, zf, "SCORE:", color); sprintf (buf, "%d", fplayer->score); font1->drawText (xf3, yf, zf, buf, color); yf -= linedist * 1.2; font1->drawText (xf1, yf, zf, "DIFFICULTY:", color); if (mission->difficulty == 0) font1->drawText (xf2, yf, zf, "EASY", color); else if (mission->difficulty == 1) font1->drawText (xf2, yf, zf, "NORMAL", color); else if (mission->difficulty == 2) font1->drawText (xf2, yf, zf, "HARD", color); if (mission->difficulty == 0) font1->drawText (xf3, yf, zf, "-25", color); else if (mission->difficulty == 1) font1->drawText (xf3, yf, zf, "+25", color); else if (mission->difficulty == 2) font1->drawText (xf3, yf, zf, "+75", color); yf -= linedist; font1->drawText (xf1, yf, zf, "FLIGHT MODEL:", color); if (!fplayer->realism) font1->drawText (xf2, yf, zf, "ACTION", color); else font1->drawText (xf2, yf, zf, "SIM", color); if (!fplayer->realism) font1->drawText (xf3, yf, zf, "-25", color); else font1->drawText (xf3, yf, zf, "+25", color); int timebonus = 0; if (mission->timer < mission->maxtime) timebonus = (mission->maxtime - mission->timer) * 100 / mission->maxtime; yf -= linedist; font1->drawText (xf1, yf, zf, "TIME BONUS:", color); sprintf (buf, "%d%%", timebonus); font1->drawText (xf2, yf, zf, buf, color); sprintf (buf, "+%d", timebonus); font1->drawText (xf3, yf, zf, buf, color); int shieldbonus = (int) (fplayer->shield * 100 / fplayer->maxshield); yf -= linedist; font1->drawText (xf1, yf, zf, "SHIELD BONUS:", color); sprintf (buf, "%d%%", shieldbonus); font1->drawText (xf2, yf, zf, buf, color); sprintf (buf, "+%d", shieldbonus); font1->drawText (xf3, yf, zf, buf, color); yf -= linedist; font1->drawText (xf1, yf, zf, "KILLS:", color); if (fplayer->fighterkills > 0) { sprintf (buf, "%d AIR", fplayer->fighterkills); font1->drawText (xf2, yf, zf, buf, color); sprintf (buf, "+%d", fplayer->fighterkills * 20); font1->drawText (xf3, yf, zf, buf, color); yf -= linedist2; } if (fplayer->tankkills > 0) { sprintf (buf, "%d TANKS", fplayer->tankkills); font1->drawText (xf2, yf, zf, buf, color); sprintf (buf, "+%d", fplayer->tankkills * 10); font1->drawText (xf3, yf, zf, buf, color); yf -= linedist2; } if (fplayer->shipkills > 0) { sprintf (buf, "%d SHIPS", fplayer->shipkills); font1->drawText (xf2, yf, zf, buf, color); sprintf (buf, "+%d", fplayer->shipkills * 12); font1->drawText (xf3, yf, zf, buf, color); yf -= linedist2; } if (fplayer->otherkills > 0) { sprintf (buf, "%d OTHERS", fplayer->otherkills); font1->drawText (xf2, yf, zf, buf, color); sprintf (buf, "+%d", fplayer->otherkills * 5); font1->drawText (xf3, yf, zf, buf, color); yf -= linedist2; } yf -= (linedist - linedist2); if (ispromoted) { yf = -6; font1->drawTextCentered (0, yf, zf, "PROMOTED TO", color); yf -= 1.5; sprintf (buf, "%s", p->getRank ()); font1->drawTextCentered (0, yf, zf, buf, color); drawRank (-11, yf + 0.2, zf, pilots->pilot [pilots->aktpilot]->ranking, 2); drawRank (7, yf + 0.2, zf, pilots->pilot [pilots->aktpilot]->ranking, 2); } yf = -9; drawMouseCursor (); } void test () { view ++; if (view > VIEW_MAX) view = VIEW_MIN; } void menu_display () { int i; glInitNames (); glPushName (0); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); int menutimernorm = menutimer * 5 / timestep; if (menutimernorm != 0) menutimernorm %= 360; if (menutimernorm < 0) menutimernorm *= -1; CColor color2 (255, 255, (int) (255.0 * cosi [menutimernorm]), 255); Pilot *p = pilots->pilot [pilots->aktpilot]; if (allmenus.components [3]->isVisible ()) { ((Container *) allmenus.components [3])->components [0]->setVisible (true); for (i = 1; i < 25; i ++) { if (p->mission_state [getCampaignIdFromValue (i - 1)] == 1) ((Container *) allmenus.components [3])->components [i]->setVisible (true); else ((Container *) allmenus.components [3])->components [i]->setVisible (false); } } allmenus.draw (); if (allmenus.components [1]->isVisible ()) { float textx2 = -0.7, yf = 10.15, zf = -2, ydiff = 1; drawRank (textx2, yf, zf, pilots->pilot [pilots->aktpilot]->ranking, 0.8); yf -= 2; for (i = 0; i < pilots->aktpilots; i ++) { drawRank (textx2, yf, zf, pilots->pilot [i]->ranking, 0.8); yf -= ydiff; } } if (allmenus.components [3]->isVisible ()) { float textx2 = 11, yf = 9.05, zf = -2, ydiff = 0.8; for (i = 0; i < 24; i ++) { drawMedal (textx2 - 0.8, yf + 0.6, zf, getMedal (p->mission_score [getCampaignIdFromValue (i)]), 0.8, getCampaignIdFromValue (i)); yf -= ydiff; } } drawMouseCursor (); } int selectMouse (int x, int y, int motionx, int motiony, int mode, bool shift) { // glutSwapBuffers (); GLuint selectBuff [20 * 4]; GLint hits, viewport [4]; // Select buffer parameters glSelectBuffer (20 * 4, selectBuff); glGetIntegerv (GL_VIEWPORT, viewport); // Enter to selection mode glEnable (GL_DEPTH_TEST); glDisable (GL_LIGHTING); glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); // Set-up pick matrix gluPickMatrix (x, viewport [3] - y, 5, 5, viewport); // Set our perpective transformation matrix gluPerspective (visibleangle, 1.0, nearclippingplane * GLOBALSCALE, view * GLOBALSCALE); // gluPerspective (60.0, 1.0, 0.2, 200.0); glMatrixMode (GL_MODELVIEW); // Render all scene and fill selection buffer glRenderMode (GL_SELECT); menu_display (); // Get hits and go back to normal rendering hits = glRenderMode (GL_RENDER); // Get first model in selection buffer stack GLuint *ptr = selectBuff; int mypicks = 0; int pickz2 = -1; int pick [100]; if (hits > 0) { int i; GLuint z = 0xFFFFFFFF; for (i = 0; i < hits; i ++) { int names = *ptr; ptr ++; GLuint z1 = *ptr; ptr ++; ptr ++; if (motionx < 0 && motiony < 0) { if (z1 < z) { z = z1; pickz2 = *ptr; mypicks = 1; } } else { pick [mypicks] = *ptr; mypicks ++; } ptr += names; if (mypicks >= 20) break; } } glMatrixMode (GL_PROJECTION); glPopMatrix (); glMatrixMode (GL_MODELVIEW); char buf [STDSIZE]; sprintf (buf, "selectMouse: picks=%d, pickz=%d, shift=%d", mypicks, pickz2, shift); display (buf, LOG_ALL); return pickz2; } void pause_display () { glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glPushMatrix (); font1->drawText (-3, -1, -1, "PAUSED", &colorwhite); glPopMatrix (); } void credits_mouse (int button, int state, int x, int y) { switch_menu (); } void credits_display () { #ifdef SHOW_SOFTWARE_PATENTS float xt = -22, yt = 12, zf = -2.4, ydist = 0.7; glPushMatrix (); // glTranslatef (0, -3.5 + 0.014 * (float) creditstimer / timestep, 0); glTranslatef (0, -3.4 + 0.004 * (float) creditstimer / timestep, 0); CColor *col = &colorwhite; CColor *col2 = &coloryellow; float fontzoom = 1.0; font1->zoom = 0.1; font2->zoom = 0.1; font1->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "MONEY VERSUS DEMOCRACY", col2); font1->drawTextCentered (0, (yt -= 3 * ydist) / fontzoom, zf, "PATENTS ON SOFTWARE", col2); fontzoom = 0.8; font1->zoom = 0.08; font2->zoom = 0.08; font1->drawText (xt, (yt -= 5 * ydist) / fontzoom, zf, "WHAT ARE PATENTS?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "PATENTS IN EUROPE COST ABOUT 30000-50000 EURO (= US$).", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "THEY GRANT PROPERTY FOR SOMETHING, THAT NOONE CAN PUBLISH", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "EXCEPT THE PATENT OWNER.", col); font1->drawText (xt, (yt -= 4 * ydist) / fontzoom, zf, "WHO CAN AFFORD PATENTS?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "ONLY HUGE COMPANIES.", col); font1->drawText (xt, (yt -= 4 * ydist) / fontzoom, zf, "WHAT CAN BE PATENTED?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "CURRENTLY EVERYTHING. AMAZON HAS A PATENT TO SELL PRODUCTS", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "WITH ONE MOUSE CLICK. THERE ARE EUROPEAN PATENTS ON THE", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "PROGRESS BAR, ON THE UNDO FUNCTION, ETC.", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "CURRENTLY EURO SOFTWARE PATENTS ARE STOPPED UNTIL THE END", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "OF SUMMER 2004.", col); font1->drawText (xt, (yt -= 4 * ydist) / fontzoom, zf, "AN EXAMPLE FOR PATENTS ON COURT?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "IN 2001 MICROSOFT HAD TO PAY 500000000 US$, BECAUSE ANOTHER", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "COMPANY HAD A PATENT ON BROWSER PLUGINS (US).", col); font1->drawText (xt, (yt -= 4 * ydist) / fontzoom, zf, "WHAT IS SOFTWARE?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "SOFTWARE IS BASED ON ABSTRACT DESCRIPTIONS, WHICH EVERYONE", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "CAN FORMULATE IN PROSE LANGUAGE. CODE IS JUST A MIRROR", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "IMAGE OF THE DESCRIPTION.", col); font1->drawText (xt, (yt -= 4 * ydist) / fontzoom, zf, "WHY DOES MICROSOFT WANT PATENTS?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "TO PATENT CONCEPTS, AND DICTATE WHICH SYSTEMS MAY USE THEM.", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "EVENTUALLY TO ELIMINATE LINUX AND OPEN SOURCE.", col); font1->drawText (xt, (yt -= 4 * ydist) / fontzoom, zf, "WHY CAN EVERYTHING BE PATENTED?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "HUGE COMPANIES ARE PUSHING FOR EXECUTIVE POWERS.", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "PATENT LAWYERS ARE TAKING THE MONEY.", col); font1->drawText (xt, (yt -= 4 * ydist) / fontzoom, zf, "WHAT IS DEMOCRACY?", col2); font2->drawText (xt, (yt -= 2 * ydist) / fontzoom, zf, "YOUR POWER TO STOP THIS ABUSE.", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "VOTE AGAINST SOFTWARE PATENTS ON HTTP://PETITION.EUROLINUX.ORG.", col); font2->drawText (xt, (yt -= 1.5 * ydist) / fontzoom, zf, "TELL YOUR FRIENDS AND SEARCH THE INTERNET FOR MORE INSANITY.", col); #else float yt = 12, zf = -2.4, ydist = 0.7; glPushMatrix (); glTranslatef (0, -3.5 + 0.014 * (float) creditstimer / timestep, 0); CColor *col = &colorwhite; CColor *col2 = &coloryellow; float fontzoom = 1; font2->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "GAME PROGRAMMING,", col); font2->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "GRAPHICS, MODELS, SOUND & MUSIC", col); font1->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "THOMAS A. DREXL", col2); font1->zoom = 0.08; font2->zoom = 0.08; fontzoom = 0.8; font2->drawTextCentered (0, (yt -= 4 * ydist) / fontzoom, zf, "SPECIAL THANKS TO...", col); font2->drawTextCentered (0, (yt -= 4 * ydist) / fontzoom, zf, "LENS FLARES & FURTHER DEBUGGING", col); font1->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "PIOTR PAWLOW", col2); font2->drawTextCentered (0, (yt -= 4 * ydist) / fontzoom, zf, "MOUSE INTERFACE & LANDSCAPE IMPROVEMENTS", col); font1->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "LOURENS VEEN", col2); font2->drawTextCentered (0, (yt -= 4 * ydist) / fontzoom, zf, "PUBLISHING & FURTHER GAME IDEAS", col); font1->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "BERNHARD KAINDL", col2); font2->drawTextCentered (0, (yt -= 4 * ydist) / fontzoom, zf, "MOON TERRAIN", col); font1->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "NORBERT DREXL", col2); font2->drawTextCentered (0, (yt -= 4 * ydist) / fontzoom, zf, "PHYSICAL MODEL (ACTION) & COCKPIT IMPROVEMENTS", col); font1->drawTextCentered (0, (yt -= 2 * ydist) / fontzoom, zf, "ARNE REINERS", col2); font2->drawTextCentered (0, (yt -= 4 * ydist) / fontzoom, zf, "...AND THANKS TO ALL PEOPLE GIVING FEEDBACK AND ADVICE", col); float xf = -10; font1->zoom = 0.1; font2->zoom = 0.1; fontzoom = 1; font1->drawTextCentered (0, (yt -= 10 * ydist) / fontzoom, zf, "***********************", col); font1->drawTextCentered (0, (yt -= 10 * ydist) / fontzoom, zf, "DO YOU WANT TO CONTRIBUTE?", col); font1->zoom = 0.08; font2->zoom = 0.08; fontzoom = 0.8; font2->drawText (xf / fontzoom, (yt -= 4 * ydist) / fontzoom, zf, "LOTS OF THINGS ARE STILL NEEDED:", col); font2->drawText (xf / fontzoom, (yt -= 2 * ydist) / fontzoom, zf, "- DRAW TEXTURES OF TREES, BUILDINGS, ETC", col); font2->drawText (xf / fontzoom, (yt -= 2 * ydist) / fontzoom, zf, "- DESIGN 3D MODELS", col); font2->drawText (xf / fontzoom, (yt -= 2 * ydist) / fontzoom, zf, "- CREATE SOUNDTRACKS", col); font2->drawText (xf / fontzoom, (yt -= 2 * ydist) / fontzoom, zf, "- MAKE MISSION SUGGESTIONS", col); font2->drawText (xf / fontzoom, (yt -= 2 * ydist) / fontzoom, zf, "- GIVE FEEDBACK AND ADVICE", col); font1->zoom = 0.1; font2->zoom = 0.1; glPopMatrix (); #endif } void finish_display () { glTranslatef (0, -3.5 + 0.01 * (float) finishtimer / timestep, 0); CColor *col = &colorwhite; font1->drawTextCentered (0, 12, -3, "CONGRATULATIONS!", col); font1->drawTextCentered (0, 10, -3, "THE WORLD HAS BEEN SAVED YET AGAIN.", col); font1->drawTextCentered (0, 6, -3, "HOPE YOU HAD FUN PLAYING GL-117!", col); font1->drawTextCentered (0, 4, -3, "THIS GAME HAS ORIGINALLY BEEN DEVELOPED AS PART", col); font1->drawTextCentered (0, 2, -3, "OF THE COURSE \"APPLICATIONS OF COMPUTER GRAPHICS\"", col); font1->drawTextCentered (0, 0, -3, "AT THE TECHNICAL UNIVERSITY OF MUNICH, GERMANY.", col); font1->drawTextCentered (0, -2, -3, "IN FEBRUARY 2002 THE WORK WAS DONE AND I", col); font1->drawTextCentered (0, -4, -3, "PRESENTED THE PROTOTYPE OF A FLIGHT SIM,", col); font1->drawTextCentered (0, -6, -3, "YET WITHOUT TEXTURES, JOYSTICK, SOUNDS, MUSIC,", col); font1->drawTextCentered (0, -8, -3, "NO CAMPAIGN!", col); font1->drawTextCentered (0, -10, -3, "TWO MONTHS LATER THE FIRST RELEASE OF GL-117 WAS READY.", col); font1->drawTextCentered (0, -12, -3, "FURTHER RELEASES FOLLOWED, FEEDBACK ARRIVED, AND", col); font1->drawTextCentered (0, -14, -3, "PROGRAMMERS JOINED (LISTED IN THE CREDITS SECTION).", col); font1->drawTextCentered (0, -16, -3, "SPECIAL THANKS TO JOSEF DREXL FOR THE MODELING IDEAS,", col); font1->drawTextCentered (0, -18, -3, "AND THE UNIX AWARD GOES TO WOLFGANG HOMMEL ;-)", col); } void quit_display () { allmenus.setVisible (false); quitmenu.setVisible (true); quitmenu.draw (); font1->drawTextCentered (0, 0, -2, "REALLY QUIT?", &menu_colwhite); drawMouseCursor (); } /**************************************************************************** IN-GAME DISPLAY EVENT ****************************************************************************/ int vibration = 0; int starttime; void game_display () { int i; double sunx = 0, suny = 0, sunz; if (dithering) glEnable (GL_DITHER); else glDisable (GL_DITHER); bool sunvisible = false; float pseudoview = getView (); float mycamtheta = camtheta, mycamphi = camphi + view_x , mycamgamma = camgamma + view_y; if (vibration > 0) { if (camera == 0) { float sinvib = sin ((float) vibration / timestep); mycamphi += 0.2 * vibration * sinvib / timestep; mycamgamma += 0.2 * vibration * sinvib / timestep; } } // calculate light factor if (camera == 0 && sunblinding && day && weather == WEATHER_SUNNY) { float np = fplayer->phi - 180; if (np >= 180) np -= 360; float sunfactor = fabs (np) + fabs (fplayer->gamma - 180 - sungamma); if (sunfactor < 50) { sunfactor = (50 - sunfactor) / 10; if (sunfactor < 1.0) sunfactor = 1.0; } else sunfactor = 1.0; sunlight_dest = sunfactor; if (game == GAME_PLAY) pseudoview /= sunfactor; } else { if (day) sunlight_dest = 1.0; else sunlight_dest = 0.75; if (flash > 0) { sunlight_dest = (float) flash / timestep; } } // show a short flash when an object explodes if (dynamiclighting) { for (i = 0; i < maxfighter; i ++) { if (fighter [i]->draw) if (fighter [i]->explode > 0) if (fighter [i] != fplayer) { float dgamma = fabs (fplayer->getAngleH (fighter [i])); float dphi = fabs (fplayer->getAngle (fighter [i])); if (dphi < 45 && dgamma < 45) { float ddist = fplayer->distance (fighter [i]); if (ddist < 40) { ddist /= 15; ddist ++; dphi /= 25; dphi ++; dgamma /= 25; dgamma ++; if (fighter [i]->explode < 8 * timestep) sunlight_dest = (float) fighter [i]->explode / timestep * 4 / ddist / dphi / dgamma; else if (fighter [i]->explode < 16 * timestep) sunlight_dest = (16.0 - fighter [i]->explode / timestep) * 4 / ddist / dphi / dgamma; } } } } } // sunlight for glittering does not look good /* if (camera == 0 && l->glittering > 1.0F) { sunlight += l->glittering * 1.0F - 1.0F; }*/ l->glittering = 0; // turn down global sunlight when menu is showing if (game != GAME_PLAY && sunlight > 0.9F) sunlight = 0.9F; // start rendering glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glScalef (GLOBALSCALE, GLOBALSCALE, GLOBALSCALE); glShadeModel (GL_SMOOTH); glPushMatrix (); if (camera != 1 && camera != 5) glRotatef (-mycamtheta, 0.0, 0.0, 1.0); glRotatef (mycamgamma, 1.0, 0.0, 0.0); glRotatef (-mycamphi, 0.0, 1.0, 0.0); // draw sky glDisable (GL_FOG); glDisable (GL_DEPTH_TEST); float mylight = sunlight; if (!day) mylight /= 0.75; if (mylight > 1.0 && day) mylight = mylight / 5.0 + 0.8; else if (mylight > 1.0 && !day) mylight = mylight / 5.0 + 0.8; gl->foglum = mylight; sphere->drawGL (tlminf, tlinf, tlnull, space->alpha, mylight, true, false); if (weather == WEATHER_SUNNY || weather == WEATHER_CLOUDY) { if (!day) { glPointSize (LINEWIDTH(1.0F)); int stars = maxstar; if (weather != WEATHER_CLOUDY) stars = maxstar / 2; for (i = 0; i < stars; i ++) { glPushMatrix (); glRotatef (star [i]->phi, 0.0, 1.0, 0.0); glRotatef (star [i]->gamma, 1.0, 0.0, 0.0); glTranslatef (0, 0, -10); star [i]->draw (); glPopMatrix (); } } } glEnable (GL_DEPTH_TEST); glEnable (GL_FOG); if (quality >= 1 && clouds > 0) { float cloudfog = pseudoview; if (cloudfog > 110) cloudfog = 110; gl->enableFog (cloudfog); highclouds->zoom = 400; float ch2 = -382 - fplayer->tl->y / 10.0; CVector3 tlsphere2 (0, ch2, 0); highclouds->drawGL (&tlsphere2, fplayer->tl); glDisable (GL_FOG); } // draw sun or moon (or earth) float fac = view, zfac = view * 0.2; if (weather == WEATHER_SUNNY || weather == WEATHER_CLOUDY) { glRotatef (180, 0.0, 1.0, 0.0); if (camera == 0) glRotatef (sungamma, 1.0, 0.0, 0.0); else glRotatef (mycamgamma + sungamma, 1.0, 0.0, 0.0); float zf = -11; if (day) zf = -10; if (l->type == LAND_MOON && !day) zf = -8; // diplay bigger earth glTranslatef (0, 0, zf); gl->extractFrustum (); if (gl->isPointInFrustum (-1, 1, 0) || gl->isPointInFrustum (-1, -1, 0) || gl->isPointInFrustum (1, -1, 0) || gl->isPointInFrustum (1, 1, 0)) { glDisable (GL_DEPTH_TEST); if (day) gl->enableTextures (texsun->textureID); else if (l->type != LAND_MOON) gl->enableTextures (texmoon->textureID); else gl->enableTextures (texearth->textureID); if (day && l->type != 1) glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gl->enableAlphaBlending (); glEnable (GL_ALPHA_TEST); float alphamax = 0.1; if (day) alphamax = 0.1; glAlphaFunc (GL_GEQUAL, alphamax); glBegin (GL_QUADS); fac = view; zfac = view * 3.5; if (day && l->type != LAND_MOON) { float gm = (40.0 - sungamma) / 80.0; if (gm < 0) gm = 0; if (gm > 0.5) gm = 0.5; glColor4f (1.0, 1.0 - gm, 0.8 - gm, 1.0); } else glColor4f (1.0, 1.0, 1.0, 1.0); glTexCoord2d (0, 1); glVertex3f (-1, 1, 0); glTexCoord2d (1, 1); glVertex3f (1, 1, 0); glTexCoord2d (1, 0); glVertex3f (1, -1, 0); glTexCoord2d (0, 0); glVertex3f (-1, -1, 0); glEnd (); // Where is the sun? double proj[16]; double modl[16]; int vp[4]; glGetDoublev( GL_PROJECTION_MATRIX, proj ); glGetDoublev( GL_MODELVIEW_MATRIX, modl ); glGetIntegerv( GL_VIEWPORT, vp ); gluProject (0, 0, 0, modl, proj, vp, &sunx, &suny, &sunz); if ((sunx>=vp[0])&&(suny>=vp[1])&&(sunx<(vp[0]+vp[2]))&&(suny<(vp[1]+vp[3]))) sunvisible = true; glDisable (GL_ALPHA_TEST); glEnable (GL_DEPTH_TEST); glDisable (GL_TEXTURE_2D); gl->disableAlphaBlending (); } } glPopMatrix (); glPushMatrix (); if (camera != 1 && camera != 5) glRotatef (-mycamtheta, 0.0, 0.0, 1.0); glRotatef (mycamgamma, 1.0, 0.0, 0.0); glDisable (GL_FOG); glRotatef (-mycamphi, 0.0, 1.0, 0.0); glScalef (1, 1, 1); glTranslatef (-camx, -camy, -camz); if (camera != 50) { gl->enableFog (pseudoview); } // draw terrain l->calcDynamicLight (explosion, laser, (DynamicObj **) missile, flare); glEnable (GL_CULL_FACE); glCullFace (GL_FRONT); l->draw ((int) mycamphi, (int) (-mycamgamma + 180.0)); glDisable (GL_CULL_FACE); // draw objects gl->extractFrustum (); if (camera != 50) { space->lum = sunlight; float dayfac = 1.0; if (!day) dayfac = 0.5; if (weather == WEATHER_SUNNY || weather == WEATHER_CLOUDY) { for (i = 0; i < space->no; i ++) { if (space->o [i]->tl->y < l->getExactRayHeight (space->o [i]->tl->x, space->o [i]->tl->z)) space->o [i]->lum = 0.5 * dayfac; else space->o [i]->lum = 1.0 * dayfac; } } else { for (i = 0; i < space->no; i ++) space->o [i]->lum = dayfac; } // printf ("%2.1f*%2.1f ", fplayer->lum, sunlight); if (flash > 7 * timestep) { if (antialiasing) flash1->draw (); else flash1->drawHQ (); } if (lighting) { glEnable( GL_LIGHTING); glEnable( GL_LIGHT0 ); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); space->drawGL (); // draw all objects glDisable (GL_LIGHTING); glDepthMask (GL_FALSE); for (i = 0; i < space->no; i ++) { AIObj *dobj = (AIObj *) space->o [i]; if (dobj->id >= MISSILE1) if (dobj->draw && dobj->drawlight && dobj->active) { if (dobj->smoke) if ((dobj->id >= MISSILE1 && dobj->id <= MISSILE2) || (dobj->id >= FIGHTER1 && dobj->id <= FIGHTER2)) if (!(dobj->ttl == 0 && dobj->id >= MISSILE1 && dobj->id <= MISSILE2)) { dobj->smoke->draw (); } } } glDepthMask (GL_TRUE); } else { space->drawGL (); } } glDisable (GL_TEXTURE_2D); glDisable (GL_LIGHTING); if (camera == 0) { glDisable (GL_DEPTH_TEST); if (antialiasing) glEnable (GL_LINE_SMOOTH); cockpit->drawTargeter (); if (antialiasing) glDisable (GL_LINE_SMOOTH); glEnable (GL_DEPTH_TEST); } glPopMatrix (); // draw flares if (specialeffects) if (sunvisible && /*camera == 0 &&*/ sunblinding && day) { CTexture* fl_texture[]= {texflare1,texflare3,texflare2,texflare4,texflare2,texflare4,texflare3,0}; double fl_position[]= {0.2, 1.6, 3.2, 8.1, -1.4, -2.2, -3.5, 0}; double fl_size[]= {0.8, 0.6, 0.5, 0.4, 0.8, 0.4, 0.5, 0}; double proj[16]; double modl[16]; double dr[2]; int vp[4]; double objx,objy,objz; glGetDoublev( GL_PROJECTION_MATRIX, proj ); glGetDoublev( GL_MODELVIEW_MATRIX, modl ); glGetIntegerv( GL_VIEWPORT, vp ); glGetDoublev( GL_DEPTH_RANGE, dr ); double cx=vp[2]/2+vp[0]; double cy=vp[3]/2+vp[1]; glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); int i=0; double flarez_eye=4; double flarez_win=(-proj[10]+proj[14]/flarez_eye)*(dr[1]-dr[0])/2+(dr[1]+dr[0])/2; while (CTexture *tex=fl_texture[i]) { double position=fl_position[i]; double flarex,flarey,size=fl_size[i]/GLOBALSCALE; i++; flarex=(cx-sunx)*position+sunx; flarey=(cy-suny)*position+suny; if (gluUnProject (flarex, flarey, flarez_win, modl, proj, vp, &objx, &objy, &objz)==GL_TRUE) { gl->enableTextures (tex->textureID); gl->enableAlphaBlending (); glDisable (GL_ALPHA_TEST); glDisable (GL_DEPTH_TEST); glDisable (GL_FOG); glBegin (GL_QUADS); glColor4f (1.0, 1.0, 1.0, 1.0); glTexCoord2d (0, 1); glVertex3f (-size+objx, size+objy, objz); glTexCoord2d (1, 1); glVertex3f (size+objx, size+objy, objz); glTexCoord2d (1, 0); glVertex3f (size+objx, -size+objy, objz); glTexCoord2d (0, 0); glVertex3f (-size+objx, -size+objy, objz); glEnd (); } } glEnable (GL_DEPTH_TEST); glDisable (GL_TEXTURE_2D); gl->disableAlphaBlending (); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); } // sunblinding test if (sunvisible) { GLfloat zbuf[1]; glReadPixels((int)sunx,(int)suny,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,zbuf); sunblinding=(zbuf[0]<1)?false:true; } else { sunblinding=false; } // draw cockpit if (camera == 0) { if (antialiasing) glEnable (GL_LINE_SMOOTH); glPushMatrix (); glRotatef (view_y, 1, 0, 0); glRotatef (-view_x, 0, 1, 0); cockpit->drawCross (); cockpit->drawHeading (); glPopMatrix (); if (antialiasing) glDisable (GL_LINE_SMOOTH); cockpit->drawRadar (); cockpit->drawTargetedElement (); cockpit->drawWeapon (); cockpit->drawCounter (); cockpit->drawThrustBar (); cockpit->drawRelativeHeightBar (); } // draw blackout/redout (blending) if (camera == 0) { int black = (int) blackout; if (black > 255) black = 255; int red = (int) redout; if (red > 255) red = 255; float xf = 2.0, yf = 1.5, zf = 1.0; if (black > 0) { glColor4ub (0, 0, 0, black); } else if (red > 0) { glColor4ub (255, 0, 0, red); } if (black > 0 || red > 0) { glDisable (GL_DEPTH_TEST); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); glVertex3f (-xf, -yf, -zf); glVertex3f (-xf, yf, -zf); glVertex3f (xf, yf, -zf); glVertex3f (xf, -yf, -zf); glEnd (); gl->disableAlphaBlending (); glDisable (GL_BLEND); glEnable (GL_DEPTH_TEST); } } if (brightness) { adjustBrightness (); glEnable (GL_DEPTH_TEST); } // draw mission dependant informations mission->draw (); glPushMatrix (); glDisable (GL_DEPTH_TEST); glPopMatrix (); char buf [25]; sprintf (buf, "FPS: %d", (int) fps); font1->drawText (-25, 25, -3.5, buf, &colorwhite); bool write = false; if (firststart) { int akttime; #ifndef USE_GLUT akttime = SDL_GetTicks (); #else akttime = glutGet (GLUT_ELAPSED_TIME); #endif if (akttime - starttime < 20000) if ((akttime - starttime) / 300 % 3) { font1->drawTextCentered (0, 0, -1.8, "PLEASE WAIT WHILE", &colorred); font1->drawTextCentered (0, -1, -1.8, "ADJUSTING QUALITY", &colorred); write = true; } } if (fps >= 5 && fps <= 20 && !write) { font1->drawTextCentered (0, -8, -2, "FPS TOO LOW", &colorred); font1->drawTextCentered (0, -9, -2, "TURN DOWN VIEW OR QUALITY", &colorred); } if (fps < 5 && !write) { font1->drawTextCentered (0, -8, -2, "FPS FAR TOO LOW", &colorred); font1->drawTextCentered (0, -9, -2, "SEE \"README\" OR \"FAQ\" FILES", &colorred); font1->drawTextCentered (0, -10, -2, "HIT \"ESC\" AND 'Y' TO EXIT THE GAME", &colorred); } if (controls == CONTROLS_MOUSE && !mouse_relative) drawMouseCursor (); } /**************************************************************************** TIMER EVENTS ****************************************************************************/ float lastthrust; int gametimer; void game_timer (int dt) { // if (multiplayer) return; int i, i2; sunlight += (sunlight_dest - sunlight) / 10 * dt / timestep; gametimer += dt; cockpit->dt = dt; l->lsticker += dt; if (l->lsticker >= 36000000) l->lsticker = 0; if (vibration > 0) { vibration -= dt; } if (fplayer->autofire && fplayer->active) { if (fplayer->ammo != 0) { fplayer->fireCannon (laser); #ifdef HAVE_SDL_MIXER if (!startcannon) { sound->playLoop (SOUND_CANNON1); startcannon = true; } #else sound->play (SOUND_CANNON1, 1); #endif } } #ifdef HAVE_SDL_MIXER else { if (startcannon) { startcannon = false; sound->stop (SOUND_CANNON1); } } #endif if (lastshield > fplayer->shield && !fplayer->ai) { sound->play (SOUND_HIT1, false); lastshield = (int) fplayer->shield; vibration = 25 * timestep; } // create flash during thunderstorm if (weather == WEATHER_THUNDERSTORM && flash <= 0 && !myrandom (2000 / dt)) { flash = 18 * timestep; int fphi = (int) camphi + myrandom (50) - 25; if (fphi < 0) fphi += 360; else if (fphi >= 360) fphi -= 360; float pseudoview = getView (); float fdist = myrandom ((int) pseudoview - 20) + 10; float fx = fplayer->tl->x - sine [fphi] * fdist; float fz = fplayer->tl->z - cosi [fphi] * fdist; flash1->set (fx, l->getHeight (fx, fz), fz, (int) camphi); int lev = (int) (128.0 - 80.0 * fdist / (pseudoview - 10)); sound->setVolume (SOUND_THUNDER1, lev); sound->play (SOUND_THUNDER1, false); } if (initing) return; if (flash > 0) flash -= dt; if (flash <= 7 * timestep && flash > 0) flash -= dt; if (!fplayer->ai) if (sound->engine != (int) ((fplayer->thrust / fplayer->maxthrust * 20) - 10)) { setPlaneVolume (); lastthrust = fplayer->thrust; } // collision tests for (i = 0; i < maxfighter; i ++) { for (i2 = 0; i2 < maxlaser; i2 ++) if (laser [i2]->active) fighter [i]->collide (laser [i2], dt); for (i2 = 0; i2 < maxmissile; i2 ++) if (missile [i2]->active) fighter [i]->collide (missile [i2], dt); for (i2 = 0; i2 < i; i2 ++) if (fighter [i2]->active) if (i != i2) fighter [i]->collide (fighter [i2], dt); } for (i = 0; i < maxflare; i ++) { for (i2 = 0; i2 < maxmissile; i2 ++) if (missile [i2]->active) flare [i]->collide (missile [i2], dt); } for (i = 0; i < maxchaff; i ++) { for (i2 = 0; i2 < maxmissile; i2 ++) if (missile [i2]->active) chaff [i]->collide (missile [i2], dt); } // move objects for (i = 0; i < maxfighter; i ++) { fighter [i]->aiAction (dt, (AIObj **) fighter, missile, laser, flare, chaff); float lev; if (fighter [i]->explode == 1 && (lev = fplayer->distance (fighter [i])) < 32) { sound->setVolume (SOUND_EXPLOSION1, 128); float angle = fplayer->getAngle (fighter [i]); angle = 180 - angle; sound->setPosition (SOUND_EXPLOSION1, (int) angle, (int) (lev * 4.0)); sound->play (SOUND_EXPLOSION1, false); } } for (i = 0; i < maxlaser; i ++) { laser [i]->move (dt); } for (i = 0; i < maxmissile; i ++) { missile [i]->aiAction (dt, (AIObj **) fighter, missile, laser, flare, chaff); } for (i = 0; i < maxflare; i ++) { flare [i]->move (dt); } for (i = 0; i < maxchaff; i ++) { chaff [i]->move (dt); } for (i = 0; i < maxexplosion; i ++) explosion [i]->move (dt); for (i = 0; i < maxblacksmoke; i ++) blacksmoke [i]->move (dt); // show blackout/redout if (blackout > 0) blackout -= 3.0F * dt / timestep; if (blackout < 0) blackout = 0; if (redout > 0) redout -= 3.0F * dt / timestep; if (redout < 0) redout = 0; if (blackout > 400) blackout = 400; if (redout > 400) redout = 400; float testout; if (redout < 1) { testout = (fplayer->realspeed * fplayer->elevatoreffect - 0.13F) * 40.0F; if (testout > 0) blackout += testout * dt / timestep; } if (blackout < 1) { testout = (fplayer->realspeed * fplayer->elevatoreffect + 0.065F) * 80.0F; if (testout < 0) redout -= testout * dt / timestep; } // show own explosion from chase cam if (fplayer->shield <= 0) camera = 1; float cf = -fplayer->zoom / 2; camtheta = fplayer->theta; if (camera == 0) // cockpit { float cgamma = fplayer->gamma + 25.0F * COS(fplayer->theta); float cphi = fplayer->phi + 25.0F * SIN(fplayer->theta); float fac = fplayer->zoom / 2; camx = fplayer->tl->x + COS(cgamma) * SIN(cphi) * fac; camy = fplayer->tl->y - SIN(cgamma) * fac; camz = fplayer->tl->z + COS(cgamma) * COS(cphi) * fac; camphi = fplayer->phi; camgamma = -fplayer->gamma + 180; fplayer->draw = 0; } if (camera == 1) // chase { cf = fplayer->zoom * 3; camx = fplayer->tl->x + cf * SIN(fplayer->phi); camy = fplayer->tl->y + fplayer->zoom; camz = fplayer->tl->z + cf * COS(fplayer->phi); camphi = fplayer->phi; fplayer->draw = 1; camgamma = 20; } else if (camera == 2) // backwards { cf = -fplayer->zoom * 3; camx = fplayer->tl->x + cf * SIN(fplayer->phi); camy = fplayer->tl->y + fplayer->zoom; camz = fplayer->tl->z + cf * COS(fplayer->phi); camphi = fplayer->phi + 180.0; fplayer->draw = 1; camgamma = 20; } else if (camera == 3) // other players { cf = fighter [aktcam]->zoom * 3; camx = fighter [aktcam]->tl->x + cf * SIN(fighter [aktcam]->phi); camy = fighter [aktcam]->tl->y + fighter [aktcam]->zoom; camz = fighter [aktcam]->tl->z + cf * COS(fighter [aktcam]->phi); camphi = fighter [aktcam]->phi; camgamma = 20; camtheta = fighter [aktcam]->theta; fplayer->draw = 1; } else if (camera == 4) // missile { cf = missile [0]->zoom * 10; camx = missile [0]->tl->x + cf * SIN(missile [0]->phi); camy = missile [0]->tl->y + fplayer->zoom * 2; camz = missile [0]->tl->z + cf * COS(missile [0]->phi); camphi = missile [0]->phi; fplayer->draw = 1; } else if (camera == 5) // top { cf = fplayer->zoom * 15; camx = fplayer->tl->x + cf * SIN(fplayer->phi); camy = fplayer->tl->y + 5.5; camz = fplayer->tl->z + cf * COS(fplayer->phi); camphi = fplayer->phi; fplayer->draw = 1; camgamma = 50; } else if (camera == 6) // left { cf = fplayer->zoom * 2; camphi = fplayer->phi + 90.0; if (camphi >= 360) camphi -= 360; else if (camphi < 0) camphi += 360; camx = fplayer->tl->x + cf * SIN(camphi); camy = fplayer->tl->y + fplayer->zoom; camz = fplayer->tl->z + cf * COS(camphi); fplayer->draw = 1; camgamma = 20; } else if (camera == 7) // right { cf = fplayer->zoom * 2; camphi = fplayer->phi + 270.0; if (camphi >= 360) camphi -= 360; else if (camphi < 0) camphi += 360; camx = fplayer->tl->x + cf * SIN(camphi); camy = fplayer->tl->y + fplayer->zoom; camz = fplayer->tl->z + cf * COS(camphi); fplayer->draw = 1; camgamma = 20; } else if (camera == 8) // top near { cf = fplayer->zoom * 5; camx = fplayer->tl->x + cf * SIN(fplayer->phi); camy = fplayer->tl->y + 2.5; camz = fplayer->tl->z + cf * COS(fplayer->phi); camphi = fplayer->phi; fplayer->draw = 1; camgamma = 50; } else if (camera == 9) // top very near { cf = fplayer->zoom * 2; camx = fplayer->tl->x + cf * SIN(fplayer->phi); camy = fplayer->tl->y + 1.0; camz = fplayer->tl->z + cf * COS(fplayer->phi); camphi = fplayer->phi; fplayer->draw = 1; camgamma = 50; } else if (camera == 50) { camx = 20; camz = 80; camy = 250; camphi = 20; camgamma = 75; game = GAME_PAUSE; } if (camphi >= 360.0) camphi -= 360.0; #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif fplayer->rectheta -= dtheta; fplayer->recgamma += dgamma; missionstate = mission->processtimer (dt); if (missionstate == 2) { missionending ++; if (missionending >= 25) { missionending = 0; fplayer->score = mission->getScore (missionstate); if (!mission->id == MISSION_DEMO) { switch_stats (); } else { pleaseWait (); createMission (MISSION_DEMO); game_levelInit (); } } } if (missionstate == 1) { missionending ++; if (missionending >= 25) { missionending = 0; fplayer->score = mission->getScore (missionstate); if (mission->id != MISSION_DEMO) { if (mission->id != MISSION_MOON3) switch_stats (); else switch_finish (); } else { pleaseWait (); createMission (MISSION_DEMO); game_levelInit (); } } } if (controls == CONTROLS_KEYBOARD) { float fac = 0.005; if (keyb_elev == 0) fplayer->elevatoreffect = 0; else fplayer->elevatoreffect += (float) dt * keyb_elev * fac; if (keyb_roll == 0) fplayer->rolleffect = 0; else fplayer->rolleffect += (float) dt * keyb_roll * fac; if (keyb_rudder == 0) fplayer->ruddereffect = 0; else fplayer->ruddereffect += (float) dt * keyb_rudder * fac; if (fplayer->elevatoreffect > 1.0) fplayer->elevatoreffect = 1.0; if (fplayer->elevatoreffect < -0.5) fplayer->elevatoreffect = -0.5; if (fplayer->rolleffect > 1.0) fplayer->rolleffect = 1.0; if (fplayer->rolleffect < -1.0) fplayer->rolleffect = -1.0; if (fplayer->ruddereffect > 1.0) fplayer->ruddereffect = 1.0; if (fplayer->ruddereffect < -1.0) fplayer->ruddereffect = -1.0; } } float lastfps = -1; int newcamera = 0; void menu_timer (Uint32 dt) { char buf [256]; menutimer += dt; int cycle = (menutimer / timestep) % 256; if (cycle == 0) { newcamera = 0; } if (cycle == 200 && !newcamera) { newcamera = 1; if (camera == 5) { camera = 1; if (missile [0]->active) camera = 4; } else if (camera == 1 || camera == 4) camera = 2; else if (camera == 2) camera = 5; } int akttime; #ifndef USE_GLUT akttime = SDL_GetTicks (); #else akttime = glutGet (GLUT_ELAPSED_TIME); #endif if (firststart) if (akttime - starttime < 20000) { if (lastfps != fps) { lastfps = fps; if (fps > 40) { if (view < quality * 20 + 60 && view < 100) view += 20; else if (quality < 5) { quality ++; view = quality * 20 + 30; if (quality >= 1) { antialiasing = 1; specialeffects = 1; dithering = 1; dynamiclighting = 0; } } sprintf (buf, "%d", (int) quality); ((Label *) optmenu [0]->components [1])->setText (buf); sprintf (buf, "%d", (int) view); ((Label *) optmenu [0]->components [3])->setText (buf); } else if (fps < 30) { if (view > quality * 20 + 30 && view > 20) view -= 20; else if (quality > 0) { quality --; view = quality * 20 + 60; if (quality < 1) { antialiasing = 0; specialeffects = 0; dithering = 0; dynamiclighting = 0; } } sprintf (buf, "%d", (int) quality); ((Label *) optmenu [0]->components [1])->setText (buf); sprintf (buf, "%d", (int) view); ((Label *) optmenu [0]->components [3])->setText (buf); } menu_reshape (); } } #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } void stats_timer (Uint32 dt) { menutimer += dt; #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } void mission_timer (Uint32 dt) { missionmenutimer += dt; #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } void credits_timer (Uint32 dt) { creditstimer += dt; #ifdef SHOW_SOFTWARE_PATENTS if (creditstimer > 2500 * timestep) creditstimer = 0; #else if (creditstimer > 700 * timestep) creditstimer = 0; #endif #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } void finish_timer (Uint32 dt) { finishtimer += dt; if (finishtimer > 800 * timestep) finishtimer = 0; #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } void create_timer (Uint32 dt) { #ifndef USE_GLUT // server->createSocketSet (); server->getClient (); SDL_Delay (100); mission_timer (dt); #endif } void join_timer (Uint32 dt) { #ifdef HAVE_SDL_NET #ifndef USE_GLUT char buf [STDSIZE]; if (client->sock == NULL) client->getServer ("127.0.0.1", "client1"); else { SDL_Delay (100); mission_timer (dt); client->getMessage (buf); if (buf [0] == 's') { createMission (MISSION_MULTIPLAYER_DOGFIGHT); game_levelInit (); switch_game (); missionactive = true; } } #endif #endif } /**************************************************************************** GAME DATA INITIALIZATION ****************************************************************************/ // calculate missile rack positions for a fighter void setMissiles (CModel *model) { int i; CVector3 tlmissile (0, 0.3, 0.3); for (i = 0; i < model->numObjects; i ++) { if (model->object [i]->numVertices == 4) { CObject *o = model->object [i]; float sumx = 0, sumz = 0; float maxy = 2; int i2; for (i2 = 0; i2 < o->numVertices; i2 ++) { sumx += o->vertex [i2].vector.x; if (o->vertex [i2].vector.y < maxy) maxy = o->vertex [i2].vector.y; sumz += o->vertex [i2].vector.z; } tlmissile.x = sumx / 4.0F; tlmissile.y = maxy; tlmissile.z = sumz / 4.0F; tlmissile.y = maxy; model->addRefPoint (&tlmissile); } } } // initialize game data void myInit () { int i, i2; // useful global variables/constants tlinf = new CVector3 (1E10, 1E10, 1E10); tlminf = new CVector3 (-1E10, -1E10, -1E10); tlnull = new CVector3 (0, 0, 0); rotnull = new CRotation (); rotmissile = new CRotation (); rotmissile->a = 90; rotmissile->c = 270; // initialize all global variables for (i = 0; i < maxgroundobj; i ++) { groundobj [i] = new DynamicObj (space, &model_tent1, 3); } explsphere = new CSphere (); ((CSphere *) explsphere)->init (1, 9); CColor explcolor (255, 255, 1); explsphere->setColor (&explcolor); explsphere->alpha = true; for (i = 0; i < explsphere->object [0]->numVertices; i ++) { explsphere->object [0]->vertex [i].color.setColor (myrandom (100) + 155, myrandom (100) + 100, 0, myrandom (3) / 2 * 255); } for (i = 0; i < maxexplosion; i ++) { explosion [i] = new CExplosion (space, explsphere); } for (i = 0; i < maxblacksmoke; i ++) { blacksmoke [i] = new CBlackSmoke (space); } for (i = 0; i < maxfighter; i ++) { fighter [i] = new AIObj (space, &model_fig, 0.4); for (i2 = 0; i2 < 12; i2 ++) fighter [i]->addRefModel (&model_missile1, tlnull, rotmissile, 0.2); } highclouds = new HighClouds (25); highclouds->setTexture (texclouds3); highclouds2 = new HighClouds (25); highclouds2->setTexture (texclouds3); objsphere = new CSphere (1, 9, 1, 1, 1); sphere = new CSpaceObj (objsphere, 10.0); sphere->rot->a = 90; sphere->rot->b = 90; sphere->rot->c = 270; sphere->draw = 2; sphere->drawlight = false; flash1 = new Flash (); for (i = 0; i < maxlaser; i ++) { laser [i] = new DynamicObj (space, &model_cannon1, 0.07); } for (i = 0; i < maxmissile; i ++) { missile [i] = new AIObj (space, &model_missile1, 0.1); } for (i = 0; i < maxflare; i ++) { flare [i] = new DynamicObj (space, &model_flare1, 0.1); } for (i = 0; i < maxchaff; i ++) { chaff [i] = new DynamicObj (space, &model_chaff1, 0.1); } for (i = 0; i < maxstar; i ++) { star [i] = new Star (myrandom (360), myrandom (85), 0.4 + 0.1 * myrandom (8)); } cockpit = new Cockpit (); pleaseWait (); createMission (MISSION_DEMO); game_levelInit (); menu_reshape (); } /**************************************************************************** INTRO ****************************************************************************/ CRotation rot; CRotation rot2; CVector3 tl; CVector3 tl2; int initexplode = 0; int initexplode1 = 0; int i; int inittimer = 0; int inittimer_gl117 = 0; void init_reshape () { // use whole window glViewport (0, 0, (GLint) width, (GLint) height); glMatrixMode (GL_PROJECTION); glLoadIdentity (); // angle, aspectratio, nearclip, farclip gluPerspective (visibleangle, 1.0, nearclippingplane, 80); glPolygonMode (GL_FRONT_AND_BACK, polygonMode); } // load game data (this method does not really belong to the intro itself) void myFirstInit () { display ("Creating calculation tables", LOG_ALL); mathtab_init (); display ("Creating advanced OpenGL methods", LOG_ALL); gl = new GL (); // create textures (OpenGL) display ("Loading textures", LOG_ALL); texgrass = gl->genTextureTGA (dirs->getTextures ("grass1.tga"), 0, 0, 1, false); texrocks = gl->genTextureTGA (dirs->getTextures ("rocks1.tga"), 0, 0, 1, false); texwater = gl->genTextureTGA (dirs->getTextures ("water1.tga"), 0, 0, 1, false); texsand = gl->genTextureTGA (dirs->getTextures ("sand1.tga"), 0, 0, 1, false); texredsand = gl->genTextureTGA (dirs->getTextures ("redsand1.tga"), 0, 0, 1, false); texredstone = gl->genTextureTGA (dirs->getTextures ("redstone2.tga"), 0, 0, 1, false); texgravel1 = gl->genTextureTGA (dirs->getTextures ("gravel1.tga"), 0, 0, 1, false); texglitter1 = gl->genTextureTGA (dirs->getTextures ("glitter.tga"), 0, -1, 0, true); textree = gl->genTextureTGA (dirs->getTextures ("tree1.tga"), 0, -1, 1, true); textreeu = gl->genTextureTGA (dirs->getTextures ("treeu1.tga"), 0, -1, 1, true); textree2 = gl->genTextureTGA (dirs->getTextures ("tree2.tga"), 0, -1, 1, true); textreeu2 = gl->genTextureTGA (dirs->getTextures ("treeu2.tga"), 0, -1, 1, true); textree3 = gl->genTextureTGA (dirs->getTextures ("tree3.tga"), 0, 3, 1, true); textreeu3 = gl->genTextureTGA (dirs->getTextures ("treeu3.tga"), 0, 3, 1, true); textree4 = gl->genTextureTGA (dirs->getTextures ("tree4.tga"), 0, 3, 1, true); textreeu4 = gl->genTextureTGA (dirs->getTextures ("treeu4.tga"), 0, 3, 1, true); textree5 = gl->genTextureTGA (dirs->getTextures ("tree5.tga"), 0, -1, 1, true); textreeu5 = gl->genTextureTGA (dirs->getTextures ("treeu5.tga"), 0, -1, 1, true); texcactus1 = gl->genTextureTGA (dirs->getTextures ("cactus1.tga"), 0, 3, 1, true); texcactusu1 = gl->genTextureTGA (dirs->getTextures ("cactusu1.tga"), 0, 3, 1, true); texsmoke = gl->genTextureTGA (dirs->getTextures ("smoke1.tga"), 0, -1, 1, true); texsmoke2 = gl->genTextureTGA (dirs->getTextures ("smoke2.tga"), 0, -1, 1, true); texsmoke3 = gl->genTextureTGA (dirs->getTextures ("smoke3.tga"), 0, 5, 1, true); texsun = gl->genTextureTGA (dirs->getTextures ("sun2.tga"), 1, -1, 0, true); texmoon = gl->genTextureTGA (dirs->getTextures ("moon1.tga"), 1, 2, 0, true); texearth = gl->genTextureTGA (dirs->getTextures ("earth.tga"), 1, 0, 0, true); texflare1 = gl->genTextureTGA (dirs->getTextures ("flare1.tga"), 1, -1, 0, true); texflare2 = gl->genTextureTGA (dirs->getTextures ("flare2.tga"), 1, -1, 0, true); texflare3 = gl->genTextureTGA (dirs->getTextures ("flare3.tga"), 1, -1, 0, true); texflare4 = gl->genTextureTGA (dirs->getTextures ("flare4.tga"), 1, -1, 0, true); texcross = gl->genTextureTGA (dirs->getTextures ("cross.tga"), 0, -1, 1, true); texcross2 = gl->genTextureTGA (dirs->getTextures ("cross2.tga"), 0, -1, 1, true); texranks = gl->genTextureTGA (dirs->getTextures ("ranks.tga"), 0, 0, 0, true); texmedals = gl->genTextureTGA (dirs->getTextures ("medals.tga"), 0, 0, 0, true); texclouds1 = gl->genTextureTGA (dirs->getTextures ("clouds1.tga"), 0, -1, 1, true); texclouds2 = gl->genTextureTGA (dirs->getTextures ("clouds2.tga"), 0, 4, 1, true); texclouds3 = gl->genTextureTGA (dirs->getTextures ("clouds3.tga"), 0, 6, 1, true); texradar1 = gl->genTextureTGA (dirs->getTextures ("radar2.tga"), 0, -1, 0, true); texradar2 = gl->genTextureTGA (dirs->getTextures ("radar1.tga"), 0, -1, 0, true); texarrow = gl->genTextureTGA (dirs->getTextures ("arrow.tga"), 0, -1, 0, true); display ("Loading Fonts", LOG_ALL); font1 = new Font (dirs->getTextures ("font1.tga"), 32, '!', 64); // font1 = new Font (dirs->getTextures ("font3.tga"), 37, '!', 100); font2 = new Font (dirs->getTextures ("font2.tga"), 32, '!', 64); display ("Loading 3ds models:", LOG_ALL); display (" * gl-16.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_fig, dirs->getModels ("gl-16.3ds")); model_fig.setName ("FALCON"); display (" * gl-15.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figa, dirs->getModels ("gl-15.3ds")); model_figa.setName ("SWALLOW"); display (" * gl-14c.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figb, dirs->getModels ("gl-14c.3ds")); model_figb.setName ("HAWK"); display (" * gl-14d.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figc, dirs->getModels ("gl-14d.3ds")); model_figc.setName ("HAWK II"); display (" * gl-21b.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figd, dirs->getModels ("gl-21b.3ds")); model_figd.setName ("BUZZARD"); display (" * gl-21.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_fige, dirs->getModels ("gl-21.3ds")); model_fige.setName ("CROW"); display (" * gl-14b.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figf, dirs->getModels ("gl-14b.3ds")); model_figf.setName ("PHOENIX"); display (" * gl-14.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figg, dirs->getModels ("gl-14.3ds")); model_figg.setName ("RED ARROW"); display (" * gl-29.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figh, dirs->getModels ("gl-29.3ds")); model_figh.setName ("BLACKBIRD"); model_figh.scaleTexture (0.3, 0.3); display (" * gl-50.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figi, dirs->getModels ("gl-50.3ds")); model_figi.setName ("STORM"); display (" * transp2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figt, dirs->getModels ("transp2.3ds")); model_figt.setName ("TRANSPORT"); display (" * transp4.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_figu, dirs->getModels ("transp4.3ds")); model_figu.setName ("TRANSPORT"); // cannon at daylight float cannoncube = 0.025; display (" * cannon1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_cannon1, dirs->getModels ("cannon1.3ds")); model_cannon1.cubex = cannoncube; model_cannon1.cubey = cannoncube; model_cannon1.cubez = cannoncube; display (" * cannon1b.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_cannon1b, dirs->getModels ("cannon1b.3ds")); model_cannon1b.cubex = cannoncube; model_cannon1b.cubey = cannoncube; model_cannon1b.cubez = cannoncube; // cannon at night display (" * cannon2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_cannon2, dirs->getModels ("cannon2.3ds")); model_cannon2.nolight = true; model_cannon2.alpha = true; for (i = 0; i < 4; i ++) { model_cannon2.object [0]->vertex [i].color.c [0] = 255; model_cannon2.object [0]->vertex [i].color.c [1] = 255; model_cannon2.object [0]->vertex [i].color.c [2] = 0; model_cannon2.object [0]->vertex [i].color.c [3] = 255; } model_cannon2.object [0]->vertex [1].color.c [3] = 50; model_cannon2.object [0]->vertex [2].color.c [3] = 50; model_cannon2.cubex = cannoncube; model_cannon2.cubey = cannoncube; model_cannon2.cubez = cannoncube; display (" * cannon2b.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_cannon2b, dirs->getModels ("cannon2b.3ds")); model_cannon2b.nolight = true; model_cannon2b.alpha = true; for (int i2 = 0; i2 < 2; i2 ++) { for (i = 0; i < 4; i ++) { model_cannon2b.object [i2]->vertex [i].color.c [0] = 255; model_cannon2b.object [i2]->vertex [i].color.c [1] = 255; model_cannon2b.object [i2]->vertex [i].color.c [2] = 0; model_cannon2b.object [i2]->vertex [i].color.c [3] = 255; } model_cannon2b.object [i2]->vertex [1].color.c [3] = 50; model_cannon2b.object [i2]->vertex [2].color.c [3] = 50; } model_cannon2b.cubex = cannoncube; model_cannon2b.cubey = cannoncube; model_cannon2b.cubez = cannoncube; display (" * flare1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_flare1, dirs->getModels ("flare1.3ds")); model_flare1.setName ("FLARE"); model_flare1.alpha = true; model_flare1.nolight = true; display (" * chaff1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_chaff1, dirs->getModels ("chaff1.3ds")); model_chaff1.setName ("CHAFF"); model_chaff1.alpha = true; model_chaff1.nolight = true; display (" * missile1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile1, dirs->getModels ("missile1.3ds")); model_missile1.setName ("AAM HS MK1"); display (" * missile2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile2, dirs->getModels ("missile2.3ds")); model_missile2.setName ("AAM HS MK2"); display (" * missile3.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile3, dirs->getModels ("missile3.3ds")); model_missile3.setName ("AAM HS MK3"); display (" * missile4.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile4, dirs->getModels ("missile4.3ds")); model_missile4.setName ("AGM MK1"); display (" * missile5.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile5, dirs->getModels ("missile5.3ds")); model_missile5.setName ("AGM MK2"); display (" * missile6.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile6, dirs->getModels ("missile6.3ds")); model_missile6.setName ("DFM"); display (" * missile7.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile7, dirs->getModels ("missile7.3ds")); model_missile7.setName ("AAM FF MK1"); display (" * missile8.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_missile8, dirs->getModels ("missile8.3ds")); model_missile8.setName ("AAM FF MK2"); display (" * flak2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_flak1, dirs->getModels ("flak2.3ds")); model_flak1.setName ("SA CANNON"); display (" * flarak1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_flarak1, dirs->getModels ("flarak1.3ds")); model_flarak1.setName ("SAM"); display (" * ship1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_ship1, dirs->getModels ("ship1.3ds")); model_ship1.setName ("CRUISER"); display (" * tent1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_tent1, dirs->getModels ("tent1.3ds")); model_tent1.setName ("TENT"); display (" * gl-117.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_gl117, dirs->getModels ("gl-117.3ds")); model_gl117.displaylist = false; display (" * tank1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_tank1, dirs->getModels ("tank1.3ds")); model_tank1.setName ("WIESEL"); model_tank1.scaleTexture (0.5, 0.5); display (" * container1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_container1, dirs->getModels ("container1.3ds")); model_container1.setName ("CONTAINER"); display (" * ship2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_ship2, dirs->getModels ("ship2.3ds")); model_ship2.setName ("LIGHT DESTROYER"); display (" * truck1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_truck1, dirs->getModels ("truck1.3ds")); model_truck1.setName ("TRUCK"); display (" * truck2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_truck2, dirs->getModels ("truck2.3ds")); model_truck2.setName ("TRUCK"); display (" * trsam.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_trsam, dirs->getModels ("trsam.3ds")); model_trsam.setName ("MOBILE SAM"); display (" * pickup1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_pickup1, dirs->getModels ("pickup1.3ds")); model_pickup1.setName ("PICKUP"); display (" * pickup2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_pickup2, dirs->getModels ("pickup2.3ds")); model_pickup2.setName ("PICKUP"); display (" * tank2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_tank2, dirs->getModels ("tank2.3ds")); model_tank2.setName ("PANTHER"); model_tank2.scaleTexture (0.5, 0.5); display (" * tent4.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_tent4, dirs->getModels ("tent4.3ds")); model_tent4.setName ("BIG TENT"); display (" * hall1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_hall1, dirs->getModels ("hall1.3ds")); model_hall1.setName ("HALL"); display (" * hall2.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_hall2, dirs->getModels ("hall2.3ds")); model_hall2.setName ("HALL"); display (" * oilrig.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_oilrig, dirs->getModels ("oilrig.3ds")); model_oilrig.setName ("OILRIG"); model_oilrig.alpha = true; display (" * egg.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_egg, dirs->getModels ("egg.3ds")); model_egg.scaleTexture (0.08, 0.08); model_egg.setName ("COMPLEX"); display (" * radar.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_radar, dirs->getModels ("radar.3ds")); model_radar.setName ("RADAR"); display (" * mine1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_mine1, dirs->getModels ("mine1.3ds")); model_mine1.setName ("MINE"); display (" * aster1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_aster1, dirs->getModels ("aster1.3ds")); model_aster1.setName ("ASTEROID"); display (" * base1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_base1, dirs->getModels ("base1.3ds")); model_base1.setName ("MOON BASE"); display (" * barrier.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_barrier1, dirs->getModels ("barrier.3ds")); model_barrier1.setName ("MOON BASE"); model_barrier1.scaleTexture (10, 10); model_barrier1.alpha = true; display (" * rubble.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_rubble1, dirs->getModels ("rubble.3ds")); model_base1.setName ("RUBBLE"); display (" * depot1.3ds", LOG_ALL); g_Load3ds.Import3DS (&model_depot1, dirs->getModels ("depot1.3ds")); model_depot1.setName ("DEPOT"); model_depot1.scaleTexture (2, 2); g_Load3ds.Import3DS (&model_house1, dirs->getModels ("house1.3ds")); model_house1.setName ("HOUSE"); setMissiles (&model_fig); setMissiles (&model_figa); setMissiles (&model_figb); setMissiles (&model_figc); setMissiles (&model_figd); setMissiles (&model_fige); setMissiles (&model_figf); setMissiles (&model_figg); setMissiles (&model_figh); setMissiles (&model_figi); // enable Z-Buffer glEnable (GL_DEPTH_TEST); // fill polygons (GL_LINE for wireframe models) glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); display ("Setting up world geometry", LOG_ALL); space = new Space (); space->drawlight = true; clip1 = space->z1; clip2 = space->z2; clip1->x = -ZOOM; clip1->y = -ZOOM; clip1->z = -ZOOM; clip2->x = ZOOM; clip2->y = ZOOM; clip2->z = ZOOM; // prepare intro init_reshape (); tl.x = 0.0; tl.y = 0.0; tl.z = -5.0; tl2.x = 0.0; tl2.y = 0.0; tl2.z = -5.0; rot.a = 270; rot2.c = 90; rot2.a = 270; rot2.b = 270; initexplode = 0; initexplode1 = 0; textitle = new CTexture (); textitle = gl->genTextureTGA (dirs->getTextures ("patents.tga"), 0, 0, 0, true); sungamma = 60; setLightSource (60); event_setAntialiasing (); glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); // glLightModeli (GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); glEnable (GL_LIGHT0); glEnable (GL_LIGHTING); glEnable (GL_COLOR_MATERIAL); glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); } void init_key (int key, int x, int y) { gl->clearScreen (); // exit intro myInit (); switch_menu (); fplayer->ai = true; camera = 5; #ifndef USE_GLUT starttime = SDL_GetTicks (); #else starttime = glutGet (GLUT_ELAPSED_TIME); #endif } void init_mouse (int button, int state, int x, int y) { init_key (32, x, y); } const int maxfx = 256; const int maxfy = 64; int heat [maxfy] [maxfx]; int heat2 [maxfy] [maxfx]; void init_display () { CVector3 vec; CColor color (200, 200, 200, 255); glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glPushMatrix (); glEnable (GL_DEPTH_TEST); glEnable (GL_LIGHTING); // draw fighter glPushMatrix (); glTranslatef (0, 0, -5); model_fig.draw (&vec, &tl, &rot, 1.0, 2.0, initexplode1); glPopMatrix (); glDisable (GL_DEPTH_TEST); glEnable (GL_BLEND); if (inittimer_gl117 > 2000) { float xf = 1.3F, yf = 0.65F, zf = 2.0F; int col = (inittimer_gl117 - 2000) / 2; if (col < 0 || col > 255) col = 255; glColor3ub (col, col, col); glPushMatrix (); glTranslatef (0, 0.5F, 0); gl->enableTextures (textitle->textureID); if (antialiasing) gl->enableLinearTexture (textitle->textureID); else gl->disableLinearTexture (textitle->textureID); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBegin (GL_QUADS); glTexCoord2d (0, 1); glVertex3f (-xf, yf, -zf); glTexCoord2d (1, 1); glVertex3f (xf, yf, -zf); glTexCoord2d (1, 0); glVertex3f (xf, -yf, -zf); glTexCoord2d (0, 0); glVertex3f (-xf, -yf, -zf); glEnd (); glPopMatrix (); glDisable (GL_BLEND); } glDisable (GL_LIGHTING); glPopMatrix (); // draw fire (heat array) glDisable (GL_DEPTH_TEST); glEnable (GL_BLEND); float xf = 1.75F, yf = 1.78F, zf = 2.0F; glPushMatrix (); gl->enableTextures (5000); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBegin (GL_QUADS); glTexCoord2d (0, 1); glVertex3f (-xf, -yf, -zf); glTexCoord2d (1, 1); glVertex3f (xf, -yf, -zf); glTexCoord2d (1, 0); glVertex3f (xf, yf, -zf); glTexCoord2d (0, 0); glVertex3f (-xf, yf, -zf); glEnd (); glPopMatrix (); glDisable (GL_BLEND); font2->drawText (20, -20, -3, VERSIONSTRING, &color); } void genFireLine () { int i, i2; for (i = 0; i < maxfx; i ++) { heat [maxfy - 1] [i] = myrandom (400); } for (i = 0; i < 5; i ++) { int r = myrandom (maxfx - 7) + 3; for (i2 = -3; i2 <= 3; i2 ++) { heat [maxfy - 1] [r + i2] = 1200; // insert hot spots at the bottom line } } } unsigned char firetex [maxfx * maxfy * 4]; void proceedFire () { int i, i2; for (i = maxfy - 2; i >= 1; i --) for (i2 = 2; i2 < maxfx - 2; i2 ++) { heat2 [i] [i2] = 0 * heat [i + 1] [i2 - 2] + 4 * heat [i + 1] [i2 - 1] + 16 * heat [i + 1] [i2] + 4 * heat [i + 1] [i2 + 1] + 0 * heat [i + 1] [i2 + 2]; // heat diffusion heat2 [i] [i2] += 0 * heat [i] [i2 - 2] + 4 * heat [i] [i2 - 1] + 16 * heat [i] [i2] + 4 * heat [i] [i2 + 1] + 0 * heat [i] [i2 + 2]; // heat diffusion heat2 [i] [i2] /= 48; heat2 [i] [i2] -= (int) (300.0F / maxfy); // heat sink if (heat2 [i] [i2] < 0) heat2 [i] [i2] = 0; } memcpy (heat, heat2, maxfx * maxfy * sizeof (int)); // copy back buffer to heat array for (i = 0; i < maxfy; i ++) { for (i2 = 0; i2 < maxfx + 1; i2 ++) { // rotate through fire colors (white-yellow-red-black-blue-black) // col in [0...512] int yind = i; int h = heat [yind] [i2]; int b = h * 5; if (h > 30) b = (60 - h) * 5; if (h >= 60) b = 0; h -= 50; int r = h * 2; // blend out late for red->black if (r > 255) r = 255; else if (r < 0) r = 0; h -= 127; int g = h * 2; // blend out for yellow->red if (g > 255) g = 255; else if (g < 0) g = 0; h -= 127; if (h > 0) { b = h - 256; // blend out early to get white->yellow if (b > 255) b = 255; } else if (b < 0) b = 0; int a = r >= b ? r : b; // alpha value: transparent after yellow-red phase glColor4ub (r, g, b, a); firetex [(i * maxfx + i2) * 4] = r; firetex [(i * maxfx + i2) * 4 + 1] = g; firetex [(i * maxfx + i2) * 4 + 2] = b; firetex [(i * maxfx + i2) * 4 + 3] = a; } glEnd (); } glPopMatrix (); glBindTexture (GL_TEXTURE_2D, 5000); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage2D (GL_TEXTURE_2D, 0, 4, maxfx, maxfy, 0, GL_RGBA, GL_UNSIGNED_BYTE, firetex); } int initsynchrotimer = 0; void init_timer (Uint32 dt) { inittimer_gl117 += dt; initsynchrotimer += dt; if (initsynchrotimer > 20) { initsynchrotimer -= 20; dt = 20; } else return; int r = myrandom (100); if (r == 50) r = myrandom (100); // do not optimize this: random number generator initialization tl.x = 6.0 * pow (1.5, -(5 + tl.z)); tl.y = (tl.z + 3) * (tl.z + 3) * 0.02 - 0.8; //0.9 * tl.x; tl.z += 0.14; tl2.y = 0.3F; if (initexplode1 == -1 && tl2.z < 3) { tl2.z += 0.25; } if (tl2.z < 3) { rot2.b -= 20; if (rot2.b < 0) rot2.b += 360; } if (tl.z > -4.0) { rot.b ++; } if (inittimer == 0) { memset (heat, 0, maxfx * maxfy * sizeof (int)); memset (heat2, 0, maxfx * maxfy * sizeof (int)); } genFireLine (); proceedFire (); if (inittimer >= 75) { initexplode1 = -1; } if (inittimer >= 350) { initexplode += dt; } if (inittimer >= 400) { init_key (27, 0, 0); // switch to menu } inittimer ++; #ifdef USE_GLUT glutPostRedisplay(); #else sdldisplay = true; #endif } /**************************************************************************** ABSTRACT EVENT BRANCHES ****************************************************************************/ static void myKeyboardFunc (unsigned char uckey, int x, int y) { int key = (int) uckey; if (key >= 'a' && key <= 'z') key = toupper (key); if (game == GAME_PLAY || game == GAME_PAUSE) game_key (key, x, y); else if (game == GAME_INIT) init_key (key, x, y); else if (game == GAME_MENU) { allmenus.eventKey (key); menu_key (key, x, y); } else if (game == GAME_CREDITS) credits_key (key, x, y); else if (game == GAME_CREATE) create_key (key, x, y); else if (game == GAME_JOIN) join_key (key, x, y); else if (game == GAME_MISSION) mission_key (key, x, y); else if (game == GAME_STATS) stats_key (key, x, y); else if (game == GAME_FAME) fame_key (key, x, y); else if (game == GAME_FIGHTER) fighter_key (key, x, y); else if (game == GAME_FINISH) finish_key (key, x, y); else if (game == GAME_QUIT) quit_key (key, x, y); } static void myKeyboardFuncUp (unsigned char key, int x, int y) { if (game == GAME_PLAY || game == GAME_PAUSE) game_keyup ((int) key, x, y); } static void mySpecialFunc (int key, int x, int y) { if (game == GAME_PLAY || game == GAME_PAUSE) game_key (key + 256, x, y); else if (game == GAME_MENU) { allmenus.eventSpecial (key); } } static void mySpecialFuncUp (int key, int x, int y) { if (game == GAME_PLAY || game == GAME_PAUSE) game_keyup (key + 256, x, y); } static void myPassiveRelMotionFunc (int xrel, int yrel) { if (game == GAME_PLAY) if (controls == CONTROLS_MOUSE) game_mouserelmotion (xrel, yrel); } static void myPassiveMotionFunc (int x, int y) { mousex = x; mousey = y; if (game == GAME_PLAY) game_mousemotion (x, y); else if (game == GAME_MENU) { allmenus.eventMouse (x, y, 0); menu_mouse (-1, -1, x, y); } else if (game == GAME_STATS) { statsmenu.eventMouse (x, y, 0); stats_mouse (-1, -1, x, y); } else if (game == GAME_MISSION) { missionmenu.eventMouse (x, y, 0); mission_mouse (-1, -1, x, y); } else if (game == GAME_FAME) { famemenu.eventMouse (x, y, 0); fame_mouse (-1, -1, x, y); } else if (game == GAME_FIGHTER) { fightermenu.eventMouse (x, y, 0); fighter_mouse (-1, -1, x, y); } else if (game == GAME_CREATE) create_mouse (-1, -1, x, y); else if (game == GAME_JOIN) join_mouse (-1, -1, x, y); else if (game == GAME_QUIT) { quitmenu.eventMouse (x, y, 0); quit_mouse (-1, -1, x, y); } } static void myMouseFunc (int button, int state, int x, int y) { #ifdef USE_GLUT button ++; #endif if (game == GAME_PLAY) { if (controls == CONTROLS_MOUSE) game_mouse (button, state, x, y); } else if (game == GAME_INIT) { init_mouse (button, state, x, y); } else if (game == GAME_MENU) { #ifdef USE_GLUT if (state == 0) #endif allmenus.eventMouse (x, y, button); menu_mouse (button, state, x, y); } else if (game == GAME_MISSION) { #ifdef USE_GLUT if (state == 0) #endif missionmenu.eventMouse (x, y, button); mission_mouse (button, state, x, y); } else if (game == GAME_STATS) { #ifdef USE_GLUT if (state == 0) #endif statsmenu.eventMouse (x, y, button); stats_mouse (button, state, x, y); } else if (game == GAME_FAME) { #ifdef USE_GLUT if (state == 0) #endif famemenu.eventMouse (x, y, button); fame_mouse (button, state, x, y); } else if (game == GAME_FIGHTER) { #ifdef USE_GLUT if (state == 0) #endif fightermenu.eventMouse (x, y, button); fighter_mouse (button, state, x, y); } else if (game == GAME_CREATE) { create_mouse (button, state, x, y); } else if (game == GAME_JOIN) { join_mouse (button, state, x, y); } else if (game == GAME_QUIT) { #ifdef USE_GLUT if (state == 0) #endif quitmenu.eventMouse (x, y, button); quit_mouse (button, state, x, y); } else if (game == GAME_CREDITS) { #ifdef USE_GLUT if (state == 0) #endif credits_mouse (button, state, x, y); } } static void myReshapeFunc (int width, int height) { ::width = width; ::height = height; ::wantwidth = width; ::wantheight = height; if (game == GAME_PLAY || game == GAME_PAUSE) game_reshape (); else if (game == GAME_MENU || game == GAME_MISSION || game == GAME_QUIT) menu_reshape (); else if (game == GAME_INIT) init_reshape (); else if (game == GAME_CREDITS || game == GAME_FINISH) credits_reshape (); else if (game == GAME_STATS) stats_reshape (); } static void myDisplayFunc () { if (game == GAME_INIT) { init_display (); game_view (); } else if (game == GAME_PLAY) { game_display (); game_view (); } else if (game == GAME_PAUSE) { game_display (); pause_display (); game_view (); } else if (game == GAME_MENU) { if (camera == 50) camera = 0; game_display (); menu_display (); game_view (); } else if (game == GAME_CREDITS) { if (camera == 50) camera = 0; game_display (); credits_display (); game_view (); } else if (game == GAME_MISSION) { if (camera == 50) camera = 0; game_display (); mission_display (); game_view (); } else if (game == GAME_STATS) { if (camera == 50) camera = 0; game_display (); stats_display (); game_view (); } else if (game == GAME_FAME) { game_display (); fame_display (); game_view (); } else if (game == GAME_FIGHTER) { game_display (); fighter_display (); game_view (); } else if (game == GAME_CREATE) { create_display (); game_view (); } else if (game == GAME_JOIN) { join_display (); game_view (); } else if (game == GAME_FINISH) { if (camera == 50) camera = 0; game_display (); finish_display (); game_view (); } else if (game == GAME_QUIT) { game_display (); quit_display (); game_view (); } } static void myIdleFunc () { #ifdef USE_GLUT glutPostRedisplay (); #endif } static void myJoystickAxisFunc (int x, int y, int t, int r) { if (game == GAME_PLAY) { if (controls == CONTROLS_JOYSTICK) game_joystickaxis (x, y, t, r); } } static void myJoystickButtonFunc (int button) { if (game == GAME_PLAY) { if (controls == CONTROLS_JOYSTICK) game_joystickbutton (button); } else if (game == GAME_MENU) { allmenus.eventJoystick (button); } } static void myJoystickHatFunc (int hat) { int normhat = hat; #ifndef USE_GLUT if (hat % 1000 == SDL_HAT_RIGHT) normhat = 100; if (hat % 1000 == SDL_HAT_UP) normhat = 101; if (hat % 1000 == SDL_HAT_LEFT) normhat = 102; if (hat % 1000 == SDL_HAT_DOWN) normhat = 103; normhat += (hat / 1000) * 1000; #endif if (game == GAME_PLAY) { if (controls == CONTROLS_JOYSTICK) game_joystickhat (normhat); } else if (game == GAME_MENU) { allmenus.eventJoystick (normhat); } } static void myTimerFunc (int value) { Uint32 akttime, dt; #ifndef USE_GLUT akttime = SDL_GetTicks (); #else akttime = glutGet (GLUT_ELAPSED_TIME); #endif if (lasttime == 0) dt = 1; else dt = akttime - lasttime; lasttime = akttime; if (dt > 1000) { dt = 1; if (game == GAME_PLAY && multiplayer) { display ("Out of sync", LOG_ERROR); switch_menu (); } } if (game == GAME_PLAY) game_timer (dt); else if (game == GAME_INIT) init_timer (dt); else if (game == GAME_MENU) { if (!missionactive) game_timer (dt); menu_timer (dt); } else if (game == GAME_CREDITS) { if (!missionactive) game_timer (dt); credits_timer (dt); } else if (game == GAME_CREATE) create_timer (dt); else if (game == GAME_JOIN) join_timer (dt); else if (game == GAME_MISSION) { if (!missionactive) game_timer (dt); mission_timer (dt); } else if (game == GAME_STATS) stats_timer (dt); else if (game == GAME_FAME) { if (!missionactive) game_timer (dt); mission_timer (dt); } else if (game == GAME_FIGHTER) { if (!missionactive) game_timer (dt); mission_timer (dt); } else if (game == GAME_FINISH) finish_timer (dt); else if (game == GAME_QUIT) { if (!missionactive) game_timer (dt); mission_timer (dt); } #ifdef USE_GLUT glutTimerFunc (1, myTimerFunc, 0); // do as many timer calls as possible #endif } #ifndef USE_GLUT Uint32 nexttime = 0; int joystickbutton = -1; bool joystickfirebutton = false; // This loop emulates the glutMainLoop() of GLUT using SDL!!! void sdlMainLoop () { int sym = 0; SDL_Event event; while (true) { while (SDL_PollEvent (&event)) // process events { switch (event.type) { case SDL_MOUSEMOTION: myPassiveMotionFunc (event.motion.x, event.motion.y); if (game == GAME_PLAY && controls == CONTROLS_MOUSE && mouse_relative) { fplayer->rolleffect = 0; fplayer->elevatoreffect = 0; fplayer->ruddereffect = 0; } myPassiveRelMotionFunc (event.motion.xrel, event.motion.yrel); break; case SDL_MOUSEBUTTONDOWN: myMouseFunc (event.button.button, event.button.state, event.button.x, event.button.y); break; case SDL_KEYDOWN: if (!event.key.keysym.unicode) mySpecialFunc (event.key.keysym.sym, 0, 0); else myKeyboardFunc (event.key.keysym.sym, 0, 0); break; case SDL_KEYUP: sym = event.key.keysym.sym; if (sym == 8 || sym == 9 || sym == 13 || (sym >= 32 && sym <= 'z')) myKeyboardFuncUp (event.key.keysym.sym, 0, 0); else mySpecialFuncUp (event.key.keysym.sym, 0, 0); break; case SDL_JOYAXISMOTION: if (abs (event.jaxis.value) < 2000) { jaxis [event.jaxis.axis + event.jaxis.which * 10] = 0; } else { if (event.jaxis.value < 0) event.jaxis.value += 2500; else event.jaxis.value -= 2500; jaxis [event.jaxis.axis + event.jaxis.which * 10] = (int) event.jaxis.value * 32768 / 30268; } break; case SDL_JOYBUTTONDOWN: joystickbutton = event.jbutton.button + event.jbutton.which * 1000; if (joystickbutton == (int) joystick_firecannon) joystickfirebutton = true; myJoystickButtonFunc (joystickbutton); joystickbutton = -1; break; case SDL_JOYBUTTONUP: joystickbutton = event.jbutton.button + event.jbutton.which * 1000; if (joystickbutton == (int) joystick_firecannon) joystickfirebutton = false; joystickbutton = -1; break; case SDL_JOYHATMOTION: myJoystickHatFunc (event.jhat.value + event.jhat.which * 1000); break; case SDL_ACTIVEEVENT: sdlreshape = true; sdldisplay = true; break; } } if (controls == CONTROLS_JOYSTICK) { int x = jaxis [getJoystickAxisIndex (joystick_aileron)]; int y = jaxis [getJoystickAxisIndex (joystick_elevator)]; int rudder = jaxis [getJoystickAxisIndex (joystick_rudder)]; int throttle = jaxis [getJoystickAxisIndex (joystick_throttle)]; myJoystickAxisFunc (x, y, rudder, throttle); view_x = (float) jaxis [getJoystickAxisIndex (joystick_view_x)]/(-328.0); view_y = (float) jaxis [getJoystickAxisIndex (joystick_view_y)]/(-328.0); if (joystickfirebutton) myJoystickButtonFunc (joystick_firecannon); } if (sdldisplay) myDisplayFunc (); sdldisplay = false; if (sdlreshape) myReshapeFunc (width, height); sdlreshape = false; myTimerFunc (1); // dummy value } } #endif /**************************************************************************** STARTUP METHODS ****************************************************************************/ // common GLUT screen init code, return 0 on error int setGlutScreen (int w, int h, int b, int f) { char gamestr [256]; sprintf (gamestr, "%dx%d:%d", w, h, b); glutGameModeString (gamestr); if (f) { if (glutGameModeGet (GLUT_GAME_MODE_POSSIBLE)) { glutEnterGameMode (); } else { return 0; } } else { glutInitWindowPosition (0, 0); glutInitWindowSize (w, h); glutwindow = glutCreateWindow ("GL-117"); if (glutwindow == GL_FALSE) return 0; } return 1; } // set screen to (width, height, bpp, fullscreen), return 0 on error int setScreen (int w, int h, int b, int f) { #ifdef USE_GLUT if (!setGlutScreen (w, h, b, f)) { b = 16; if (!setGlutScreen (w, h, b, f)) { b = 8; if (!setGlutScreen (w, h, b, f)) { b = 2; if (!setGlutScreen (w, h, b, f)) { return 0; } } } } #else Uint32 video_flags; if (f) { video_flags = SDL_OPENGL | SDL_FULLSCREEN; } else { video_flags = SDL_OPENGL; } int rgb_size [3]; switch (b) { case 8: rgb_size [0] = 2; rgb_size [1] = 3; rgb_size [2] = 3; break; case 15: case 16: rgb_size [0] = 5; rgb_size [1] = 5; rgb_size [2] = 5; break; default: rgb_size [0] = 8; rgb_size [1] = 8; rgb_size [2] = 8; break; } SDL_GL_SetAttribute (SDL_GL_RED_SIZE, rgb_size [0]); SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, rgb_size [1]); SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, rgb_size [2]); SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); if (SDL_SetVideoMode (w, h, b, video_flags) == NULL) { if ((b = SDL_VideoModeOK (w, h, b, video_flags)) != 0) { b = 16; SDL_GL_SetAttribute (SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 5); SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 5); if (SDL_SetVideoMode (w, h, b, video_flags) == NULL) { b = 8; SDL_GL_SetAttribute (SDL_GL_RED_SIZE, 2); SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 3); SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 3); if (SDL_SetVideoMode (w, h, b, video_flags) == NULL) { return 0; } } } } #endif glViewport (0, 0, (GLint) w, (GLint) h); // take over results in global variables width = w; height = h; bpp = b; fullscreen = f; wantwidth = w; // requested values for next restart wantheight = h; wantfullscreen = f; return 1; } // get approximate speed by drawing polygons (obsolete) int speedTest () { int frames = 0, time2 = 0, time1 = 0; glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (visibleangle, 1.0, nearclippingplane, 20.0); // should be sqrt(2) or 1.5 glPolygonMode (GL_FRONT_AND_BACK, polygonMode); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); #ifndef USE_GLUT time1 = SDL_GetTicks (); #else time1 = glutGet (GLUT_ELAPSED_TIME); #endif while (time2 - time1 < 1000) { frames ++; #ifndef USE_GLUT time2 = SDL_GetTicks (); #else time2 = glutGet (GLUT_ELAPSED_TIME); #endif glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glRotatef (1, 0, 0, 1); for (float zf = -13; zf <= -3; zf += 0.05) { glBegin (GL_QUADS); glColor4d (255, 0, 0, 255); glVertex3f (-1, -1, zf); glVertex3f (-1, 1, zf); glVertex3f (1, 1, zf); glVertex3f (1, -1, zf); glEnd (); } #ifdef USE_GLUT glutSwapBuffers(); #else SDL_GL_SwapBuffers (); #endif } return frames; } bool configinit = false; // has GLUT/SDL already been inited? // test screen settings automatically void config_test (int argc, char **argv) { display ("No configuration file found. Testing...", LOG_MOST); int bppi [4]; #ifdef USE_GLUT // GLUT ONLY display ("Using GLUT only", LOG_MOST); glutInit (&argc, argv); glutInitDisplayMode (GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE); configinit = true; #else // SDL char buf [STDSIZE]; display ("Using SDL and GLUT", LOG_MOST); if (SDL_Init (SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { sprintf (buf, "Couldn't initialize SDL: %s", SDL_GetError ()); display (buf, LOG_FATAL); exit (EXIT_INIT); } configinit = true; #endif int valids = -1; // valid screen mode? (-1 = no mode) int n = 0; while (n < 4) { if (setScreen (resolution [n] [0], resolution [n] [1], resolution [n] [2], resolution [n] [3])) { bppi [n] = bpp; // store bpp setting valids = n; break; // first mode found => exit loop } else { bppi [n] = -1; } n ++; } if (valids == -1) { display ("No working display modes found! Try editing the file conf yourself. You may not be able to play this game.", LOG_FATAL); exit (EXIT_INIT); } // start with lowest quality/view settings quality = 0; view = 20; width = resolution [valids] [0]; height = resolution [valids] [1]; bpp = bppi [valids]; fullscreen = resolution [valids] [3]; wantwidth = width; // requested values for next restart wantheight = height; wantfullscreen = fullscreen; } // get startup help screen void viewParameters () { display (" ", LOG_NONE); display ("Usage: gl-117 [-h -v -dLEVEL]", LOG_NONE); display (" ", LOG_NONE); display ("-h: Display this help screen and quit", LOG_NONE); display ("-v: Display version string and quit", LOG_NONE); display ("-dLEVEL: Set debug LEVEL to 0=silent...5=log all", LOG_NONE); display (" ", LOG_NONE); } void checkargs (int argc, char **argv) { char buf [STDSIZE]; // temp buffer int i; // temp counter for (i = 1; i < argc; i ++) // for each arg (argument/parameter) { if (argv [i] [1] == 'd') // change log/debug level { char *ptr = &argv [i] [2]; debuglevel = atoi (ptr); if (debuglevel < LOG_NONE || debuglevel > LOG_ALL) // look at common.h for the constants { display ("Invalid debug level", LOG_FATAL); viewParameters (); exit (EXIT_COMMAND); } else { sprintf (buf, "Entering debug level %d", debuglevel); display (buf, LOG_MOST); } } else if (argv [i] [1] == 'v') // display version string { display (VERSIONSTRING, LOG_NONE); exit (EXIT_NORMAL); } else if (argv [i] [1] == 'h') // display startup help screen { viewParameters (); exit (EXIT_NORMAL); } else { display ("Invalid command line parameter", LOG_FATAL); viewParameters (); exit (EXIT_COMMAND); } } } void textMouseButton (char *buf, int button) { if (button == 0) strcpy (buf, "NONE"); else sprintf (buf, "BUTTON%d", button); } int campaignstartid; int trainingstartid; void callbackReturn (Component *comp, int key) { switch_game (); } void callbackStats (Component *comp, int key) { stats_key (27, 0, 0); } void callbackQuitNow (Component *comp, int key) { game_quit (); } void callbackSwitchMainMenu (Component *comp, int key) { switch_menu (); } void callbackQuit (Component *comp, int key) { switch_quit (); } void callbackCredits (Component *comp, int key) { switch_credits (); } void callbackPilots (Component *comp, int key) { switch_fame (); } int currentaxis = 0; #ifndef USE_GLUT void callbackJoystickAxis (Component *comp, int key) { int i; int buttonnum = -1; // get clicked button's number for (i = 0; i < 12; i ++) { if (comp == controlsmenu [2]->components [i]) { buttonnum = i; } } if (buttonnum == -1) return; // read text from label of button Label *la = (Label *) controlsmenu [2]->components [buttonnum + 1]; int joynum = 0; int joyaxis = 0; if (la->text [1] == '/') joynum = -1; else { joynum = la->text [0] - 'A'; joyaxis = la->text [2] - '0'; } if (key == MOUSE_BUTTON_LEFT) { if (joynum == -1) { joynum = 0; joyaxis = 0; } else if (joynum >= joysticks) joynum = -1; else { joyaxis ++; if (joyaxis >= sdljoystickaxes [joynum]) { joyaxis = 0; joynum ++; if (joynum >= joysticks) joynum = -1; } } } else { if (joynum == -1) { joynum = joysticks - 1; joyaxis = sdljoystickaxes [joynum] - 1; } else if (joynum >= joysticks) joynum = -1; else { joyaxis --; if (joyaxis < 0) { joynum --; if (joynum < 0) { joynum = -1; joyaxis = 0; } else joyaxis = sdljoystickaxes [joynum] - 1; } } } int *joysetting = NULL; if (buttonnum == 0) joysetting = &joystick_aileron; else if (buttonnum == 2) joysetting = &joystick_elevator; else if (buttonnum == 4) joysetting = &joystick_throttle; else if (buttonnum == 6) joysetting = &joystick_rudder; else if (buttonnum == 8) joysetting = &joystick_view_x; else if (buttonnum == 10) joysetting = &joystick_view_y; *joysetting = joynum * 1000 + joyaxis; char latext [4]; if (joynum >= 0) { latext [0] = 'A' + joynum; latext [1] = 32; latext [2] = '0' + joyaxis; latext [3] = 0; la->setText (latext); } else { la->setText ("N/A"); } } #endif void callbackSwitchStartMission (Component *comp, int key) { pleaseWait (); if (!game_levelInit ()) { switch_menu (); return; } switch_game (); missionactive = true; } void callbackFighterPrev (Component *comp, int key) { int maxfighter = 6; Pilot *p = pilots->pilot [pilots->aktpilot]; if (p->mission_state [MISSION_DEPOT] == 1) maxfighter ++; if (p->mission_state [MISSION_SHIP1] == 1) maxfighter ++; if (p->mission_state [MISSION_CANYON3] == 1) maxfighter ++; if (p->mission_state [MISSION_MOON1] == 1) maxfighter ++; if (key == MOUSE_BUTTON_LEFT) { aktfighter --; if (aktfighter < 0) aktfighter = maxfighter - 1; } } void callbackFighterNext (Component *comp, int key) { int maxfighter = 6; Pilot *p = pilots->pilot [pilots->aktpilot]; if (p->mission_state [MISSION_DEPOT] == 1) maxfighter ++; if (p->mission_state [MISSION_SHIP1] == 1) maxfighter ++; if (p->mission_state [MISSION_CANYON3] == 1) maxfighter ++; if (p->mission_state [MISSION_MOON1] == 1) maxfighter ++; if (key == MOUSE_BUTTON_LEFT) { aktfighter ++; if (aktfighter >= maxfighter) aktfighter = 0; } } void callbackFighter (Component *comp, int key) { switch_fighter (); } void setpilotstext () { char buf [64]; int i; sprintf (buf, " %s %s", pilots->pilot [pilots->aktpilot]->getShortRank (), pilots->pilot [pilots->aktpilot]->name); ((Label *) submenu [0]->components [1])->setText (buf); for (i = 0; i < pilots->aktpilots; i ++) { sprintf (buf, " %s %s", pilots->pilot [i]->getShortRank (), pilots->pilot [i]->name); ((Label *) submenu [0]->components [i + 2])->setText (buf); } for (; i < 5; i ++) { ((Label *) submenu [0]->components [i + 2])->setText ("N/A"); } } void callbackPilotsAdd (Component *comp, int key) { char buf [64]; if (key == MOUSE_BUTTON_LEFT) { strcpy (buf, ((EditField *) submenu [0]->components [9])->text); if (strlen (buf) > 0 && pilots->aktpilots < 5) { pilots->add (buf); ((EditField *) submenu [0]->components [9])->setText (""); setpilotstext (); } } } void callbackPilotsDelete (Component *comp, int key) { if (key == MOUSE_BUTTON_RIGHT) { pilots->rm (); setpilotstext (); } } void callbackPilotsList (Component *comp, int key) { int i; for (i = 0; i < 5; i ++) { if (comp == submenu [0]->components [i + 2]) { if (i < pilots->aktpilots) { pilots->aktpilot = i; setpilotstext (); } } } } void callbackJoystick (Component *comp, int key) { int i; for (i = 12; i < 23; i ++) if (comp == controlsmenu [0]->components [i]) { int z = 12; if (i == z ++) joystick_firecannon = key; else if (i == z ++) joystick_firemissile = key; else if (i == z ++) joystick_dropflare = key; else if (i == z ++) joystick_dropchaff = key; else if (i == z ++) joystick_selectmissile = key; else if (i == z ++) joystick_targetnearest = key; else if (i == z ++) joystick_targetlocking = key; else if (i == z ++) joystick_targetnext = key; else if (i == z ++) joystick_targetprevious = key; else if (i == z ++) joystick_thrustup = key; else if (i == z ++) joystick_thrustdown = key; } } void callbackMouseDefaults (Component *comp, int key) { char buf [256]; mouse_sensitivity = 100; mouse_reverse = false; mouse_relative = false; mouse_autorudder = 30; sprintf (buf, "%d%%", mouse_autorudder); ((Label *) controlsmenu [1]->components [7])->setText (buf); if (mouse_relative) sprintf (buf, "ON"); else sprintf (buf, "OFF"); ((Label *) controlsmenu [1]->components [5])->setText (buf); if (mouse_reverse) sprintf (buf, "ON"); else sprintf (buf, "OFF"); ((Label *) controlsmenu [1]->components [3])->setText (buf); sprintf (buf, "%d%%", mouse_sensitivity); ((Label *) controlsmenu [1]->components [1])->setText (buf); } void callbackMouseAutorudder (Component *comp, int key) { char buf [256]; if (key == MOUSE_BUTTON_LEFT) { mouse_autorudder += 10; if (mouse_autorudder > 100) mouse_autorudder = 0; } else { mouse_autorudder -= 10; if (mouse_autorudder < 0) mouse_autorudder = 100; } sprintf (buf, "%d%%", mouse_autorudder); ((Label *) controlsmenu [1]->components [7])->setText (buf); } void callbackMouseRelative (Component *comp, int key) { char buf [256]; mouse_relative = !mouse_relative; if (mouse_relative) sprintf (buf, "ON"); else sprintf (buf, "OFF"); ((Label *) controlsmenu [1]->components [5])->setText (buf); } void callbackMouseReverse (Component *comp, int key) { char buf [256]; mouse_reverse = !mouse_reverse; if (mouse_reverse) sprintf (buf, "ON"); else sprintf (buf, "OFF"); ((Label *) controlsmenu [1]->components [3])->setText (buf); } void callbackMouseSensitivity (Component *comp, int key) { char buf [256]; if (key == MOUSE_BUTTON_LEFT) { mouse_sensitivity += 10; if (mouse_sensitivity > 200) mouse_sensitivity = 70; } else { mouse_sensitivity -= 10; if (mouse_sensitivity < 70) mouse_sensitivity = 200; } sprintf (buf, "%d%%", mouse_sensitivity); ((Label *) controlsmenu [1]->components [1])->setText (buf); } void callbackDefaultsJoystick (Component *comp, int key) { joystick_aileron = 0; joystick_elevator = 1; joystick_throttle = 2; joystick_rudder = 3; joystick_view_x = 4; joystick_view_y = 5; int z = 1; ((Label *) controlsmenu [2]->components [z])->setText ("A 0"); z += 2; ((Label *) controlsmenu [2]->components [z])->setText ("A 1"); z += 2; ((Label *) controlsmenu [2]->components [z])->setText ("A 2"); z += 2; ((Label *) controlsmenu [2]->components [z])->setText ("A 3"); z += 2; ((Label *) controlsmenu [2]->components [z])->setText ("A 4"); z += 2; ((Label *) controlsmenu [2]->components [z])->setText ("A 5"); joystick_firecannon = 0; joystick_firemissile = 2; joystick_dropflare = 3; joystick_dropchaff = 3; joystick_selectmissile = 1; joystick_targetnearest = 101; joystick_targetlocking = 103; joystick_targetnext = 100; joystick_targetprevious = 102; joystick_thrustup = 4; joystick_thrustdown = 5; z = 12; ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_firecannon); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_firemissile); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_dropflare); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_dropchaff); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_selectmissile); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_targetnearest); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_targetlocking); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_targetnext); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_targetprevious); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_thrustup); ((EditJoystick *) controlsmenu [2]->components [z ++])->setButton (joystick_thrustdown); } void callbackDefaults (Component *comp, int key) { key_firecannon = 32; key_firemissile = 13; key_dropflare = 'F'; key_dropchaff = 'C'; key_selectmissile = 'M'; key_targetnearest = 'E'; key_targetlocking = 'L'; key_targetnext = 'N'; key_targetprevious = 'P'; key_thrustup = 'S'; key_thrustdown = 'X'; int z = 5; ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_firecannon); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_firemissile); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_dropflare); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_dropchaff); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_selectmissile); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_targetnearest); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_targetlocking); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_targetnext); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_targetprevious); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_thrustup); ((EditKey *) controlsmenu [0]->components [z ++])->setKey (key_thrustdown); } void callbackKeyboard (Component *comp, int key) { int i; for (i = 5; i < 16; i ++) if (comp == controlsmenu [0]->components [i]) { int z = 5; if (i == z ++) key_firecannon = key; else if (i == z ++) key_firemissile = key; else if (i == z ++) key_dropflare = key; else if (i == z ++) key_dropchaff = key; else if (i == z ++) key_selectmissile = key; else if (i == z ++) key_targetnearest = key; else if (i == z ++) key_targetlocking = key; else if (i == z ++) key_targetnext = key; else if (i == z ++) key_targetprevious = key; else if (i == z ++) key_thrustup = key; else if (i == z ++) key_thrustdown = key; } } void textControls (char *buf) { if (controls == CONTROLS_KEYBOARD) sprintf (buf, "%s", "KEYBOARD"); else if (controls == CONTROLS_MOUSE) sprintf (buf, "%s", "MOUSE"); else if (controls == CONTROLS_JOYSTICK) sprintf (buf, "%s", "JOYSTICK"); } void callbackControls (Component *comp, int key) { char buf [256]; if (key == MOUSE_BUTTON_LEFT) { fplayer->rolleffect = 0; fplayer->ruddereffect = 0; fplayer->elevatoreffect = 0; keyb_elev = 0; keyb_roll = 0; keyb_rudder = 0; controls ++; if (controls > 2) controls = 0; if (controls == CONTROLS_JOYSTICK && !joysticks) controls = CONTROLS_KEYBOARD; #ifdef USE_GLUT if (controls == CONTROLS_KEYBOARD) controls = CONTROLS_MOUSE; #endif } textControls (buf); ((Label *) optmenu [2]->components [5])->setText (buf); allmenus.components [11]->setVisible (false); allmenus.components [12]->setVisible (false); allmenus.components [13]->setVisible (false); if (controls == CONTROLS_KEYBOARD) allmenus.components [11]->setVisible (true); else if (controls == CONTROLS_JOYSTICK) allmenus.components [13]->setVisible (true); else allmenus.components [12]->setVisible (true); } void callbackPhysics (Component *comp, int key) { char buf [256]; physics = !physics; if (!physics) sprintf (buf, "%s", "ACTION"); else sprintf (buf, "%s", "SIMULATION"); ((Label *) optmenu [2]->components [3])->setText (buf); } void callbackDifficulty (Component *comp, int key) { char buf [256]; if (key == MOUSE_BUTTON_LEFT) { difficulty ++; if (difficulty > 2) difficulty = 0; } else { difficulty --; if (difficulty < 0) difficulty = 2; } if (difficulty == 0) sprintf (buf, "%s", "EASY"); else if (difficulty == 1) sprintf (buf, "%s", "NORMAL"); else if (difficulty == 2) sprintf (buf, "%s", "HARD"); ((Label *) optmenu [2]->components [1])->setText (buf); } void callbackSound (Component *comp, int key) { char buf [256]; if (sound->audio) { if (key == MOUSE_BUTTON_LEFT) { sound->volumesound += 10; if (sound->volumesound > 100) sound->volumesound = 0; volumesound = sound->volumesound; sound->setVolume (); setPlaneVolume (); sound->play (SOUND_CLICK1, false); menu_reshape (); } else { sound->volumesound -= 10; if (sound->volumesound < 0) sound->volumesound = 100; volumesound = sound->volumesound; sound->setVolume (); setPlaneVolume (); sound->play (SOUND_CLICK1, false); menu_reshape (); } sprintf (buf, "%d%%", volumesound); ((Label *) optmenu [1]->components [1])->setText (buf); } } void callbackMusic (Component *comp, int key) { char buf [256]; if (sound->audio) { if (key == MOUSE_BUTTON_LEFT) { sound->volumemusic += 10; if (sound->volumemusic > 100) { sound->volumemusic = 0; sound->haltMusic (); } volumemusic = sound->volumemusic; sound->setVolumeMusic (); menu_reshape (); } else { sound->volumemusic -= 10; if (sound->volumemusic < 0) sound->volumemusic = 100; volumemusic = sound->volumemusic; sound->setVolumeMusic (); menu_reshape (); } if (sound->volumemusic != 0 && !sound->musicplaying) playRandomMusic (); sprintf (buf, "%d%%", volumemusic); ((Label *) optmenu [1]->components [3])->setText (buf); } } void callbackBrightness (Component *comp, int key) { char buf [256]; if (key == MOUSE_BUTTON_LEFT) { brightness += 10; if (brightness > 50) brightness = -50; } else { brightness -= 10; if (brightness < -50) brightness = 50; } sprintf (buf, "%d%%", brightness); ((Label *) optmenu [0]->components [13])->setText (buf); } void callbackResolution (Component *comp, int key) { const int numres = 4; int resx [numres] = { 640, 800, 1024, 1280 }; int resy [numres] = { 480, 600, 800, 1024 }; int found = 0; char buf [256]; if (key == MOUSE_BUTTON_LEFT) { for (int i = 0; i < numres; i ++) if (wantwidth == resx [i]) { found = i + 1; } } else { for (int i = 0; i < numres; i ++) if (wantwidth == resx [i]) { found = i - 1; } } if (found < 0) found = numres - 1; else if (found >= numres) found = 0; wantwidth = resx [found]; wantheight = resy [found]; sprintf (buf, "%d*%d", wantwidth, wantheight); ((Label *) optmenu [0]->components [16])->setText (buf); } void callbackFullscreen (Component *comp, int key) { if (wantfullscreen) wantfullscreen = 0; else wantfullscreen = 1; if (wantfullscreen) ((Label *) optmenu [0]->components [18])->setText ("YES"); else ((Label *) optmenu [0]->components [18])->setText ("NO"); } void callbackDynamicLighting (Component *comp, int key) { char buf [256]; dynamiclighting = (dynamiclighting == 0 ? 1 : 0); if (dynamiclighting) strcpy (buf, "ON"); else strcpy (buf, "OFF"); ((Label *) optmenu [0]->components [11])->setText (buf); } void callbackSpecialEffects (Component *comp, int key) { char buf [256]; specialeffects = (specialeffects == 0 ? 1 : 0); if (specialeffects) strcpy (buf, "ON"); else strcpy (buf, "OFF"); ((Label *) optmenu [0]->components [9])->setText (buf); } void callbackAntialiasing (Component *comp, int key) { char buf [256]; antialiasing = (antialiasing == 0 ? 1 : 0); if (antialiasing) strcpy (buf, "ON"); else strcpy (buf, "OFF"); ((Label *) optmenu [0]->components [7])->setText (buf); event_setAntialiasing (); } void callbackDithering (Component *comp, int key) { char buf [256]; dithering = (dithering == 0 ? 1 : 0); if (dithering) strcpy (buf, "ON"); else strcpy (buf, "OFF"); ((Label *) optmenu [0]->components [5])->setText (buf); } void callbackView (Component *comp, int key) { char buf [256]; if (key == MOUSE_BUTTON_LEFT) { view += 10; if (view > VIEW_MAX) view = VIEW_MIN; menu_reshape (); } else { view -= 10; if (view < VIEW_MIN) view = VIEW_MAX; menu_reshape (); } sprintf (buf, "%d", (int) view); ((Label *) optmenu [0]->components [3])->setText (buf); // this is also set by autoconfig in menu_timer } void callbackQuality (Component *comp, int key) { char buf [256]; if (key == MOUSE_BUTTON_LEFT) { quality ++; if (quality > 5) quality = 0; } else { quality --; if (quality < 0) quality = 5; } sprintf (buf, "%d", quality); ((Label *) optmenu [0]->components [1])->setText (buf); // this is also set by autoconfig in menu_timer } void callbackTraining (Component *comp, int key) { allmenus.setVisible (false); switch_mission (getTrainingIdFromValue (comp->id - trainingstartid)); } void callbackCampaign (Component *comp, int key) { allmenus.setVisible (false); switch_mission (getCampaignIdFromValue (comp->id - campaignstartid)); } void callbackMainMenu (Component *comp, int key) { for (i = 0; i < 6; i ++) if (comp == mainbutton [i]) { allmenus.setVisible (false); allmenus.visible = true; allmenus.components [0]->setVisible (true); allmenus.components [i + 1]->setVisible (true); currentsubmenu = allmenus.components [i + 1]; if (missionactive) mainbutton [6]->setVisible (true); else mainbutton [6]->setVisible (false); if (i == 3) { if (currentoptmenu) currentoptmenu->setVisible (true); if (currentoptmenu == allmenus.components [10]) { if (controls == CONTROLS_KEYBOARD) allmenus.components [11]->setVisible (true); else if (controls == CONTROLS_JOYSTICK) allmenus.components [13]->setVisible (true); else allmenus.components [12]->setVisible (true); } } return; } for (i = 0; i < 3; i ++) if (comp == optbutton [i]) { allmenus.components [8]->setVisible (false); allmenus.components [9]->setVisible (false); allmenus.components [10]->setVisible (false); allmenus.components [i + 1 + 7]->setVisible (true); if (i + 1 + 7 == 10) { if (controls == CONTROLS_KEYBOARD) allmenus.components [11]->setVisible (true); else if (controls == CONTROLS_JOYSTICK) allmenus.components [13]->setVisible (true); else allmenus.components [12]->setVisible (true); } else { allmenus.components [11]->setVisible (false); allmenus.components [12]->setVisible (false); allmenus.components [13]->setVisible (false); } currentoptmenu = allmenus.components [i + 1 + 7]; return; } } void setJoystickAxisString (int joysetting, char *joystr) { joystr [3] = 0; if (joysetting < 0) { strcpy (joystr, "N/A"); } else { joystr [0] = 'A' + (joysetting / 1000); joystr [1] = 32; joystr [2] = '0' + (joysetting % 1000); } } char mainmenunames [10] [25]; char submenu1names [20] [25]; char submenu2names [30] [25]; char optmenunames [5] [25]; char controlsmenu0names [15] [25]; void createMenu () { char buf [256]; char buf2 [256]; int i; int z = 0; float xf = -2; float xfstep = 4; float yf = 12; float yfstep = 1.0; float xsubmenu = -1; float ysubmenu = 12; Button *button; Label *label; TextField *textfield; EditKey *editkey; EditField *editfield; #ifndef USE_GLUT EditJoystick *editjoystick; #endif /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register main menu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ strcpy (mainmenunames [0], "PILOTS"); strcpy (mainmenunames [1], "TRAINING"); strcpy (mainmenunames [2], "CAMPAIGN"); strcpy (mainmenunames [3], "OPTIONS"); #ifdef SHOW_SOFTWARE_PATENTS strcpy (mainmenunames [4], "SOFTWARE PATENTS"); #else strcpy (mainmenunames [4], "CREDITS"); #endif strcpy (mainmenunames [5], "QUIT"); strcpy (mainmenunames [6], "RETURN"); mainmenu = new Container (); // mainmenu->setBounds (-14.3, 12.2, 10.6, 7.4); allmenus.add (mainmenu); for (i = 0; i < 7; i ++) { submenu [i] = new Container (); allmenus.add (submenu [i]); } /* submenu [0]->setBounds (-1.3, 12.2, 14.1, 12.4); submenu [1]->setBounds (-1.3, 12.2, 12.6, 7.4); submenu [2]->setBounds (-1.3, 12.2, 12.6, 1.4); submenu [3]->setBounds (-1.3, 12.2, 14.1, 1.4);*/ for (i = 0; i < 7; i ++) { mainbutton [i] = new Button (mainmenunames [i]); mainbutton [i]->setBounds (-14, yf, 10, yfstep - 0.1); yf -= yfstep; mainbutton [i]->setFunction (callbackMainMenu); mainmenu->add (mainbutton [i]); } currentsubmenu = submenu [0]; mainbutton [4]->setFunction (callbackCredits); mainbutton [5]->setFunction (callbackQuit); mainbutton [6]->setVisible (false); mainbutton [6]->setFunction (callbackReturn); /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register pilots submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = xsubmenu; yf = ysubmenu; xfstep = 13.5; yfstep = 1; sprintf (buf, "ACTIVE:"); label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); submenu [0]->add (label); yf -= yfstep; sprintf (buf, " %s %s", pilots->pilot [pilots->aktpilot]->getShortRank (), pilots->pilot [pilots->aktpilot]->name); label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); submenu [0]->add (label); yf -= 2; for (i = 0; i < 5; i ++) { if (i < pilots->aktpilots) sprintf (buf, " %s %s", pilots->pilot [i]->getShortRank (), pilots->pilot [i]->name); else sprintf (buf, "N/A"); button = new Button (buf); button->setFunction (callbackPilotsList); button->setBounds (xf, yf, xfstep, yfstep - 0.1); submenu [0]->add (button); yf -= yfstep; } yf -= 0.5; button = new Button ("DELETE (RIGHT MB)"); button->setFunction (callbackPilotsDelete); button->setBounds (xf, yf, xfstep, yfstep - 0.1); submenu [0]->add (button); yf -= yfstep; yf -= 0.5; button = new Button ("ADD"); button->setFunction (callbackPilotsAdd); button->setBounds (xf, yf, xfstep, yfstep - 0.1); submenu [0]->add (button); yf -= yfstep; editfield = new EditField (15); editfield->setBounds (xf, yf, xfstep, yfstep - 0.1); submenu [0]->add (editfield); yf -= yfstep; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register training submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ z = 0; strcpy (submenu1names [z ++], "TUTORIAL: PILOTING"); strcpy (submenu1names [z ++], "TUTORIAL: BOMBER"); strcpy (submenu1names [z ++], "TUTORIAL: FIGHTER"); strcpy (submenu1names [z ++], "TUTORIAL: AERODYNAMICS"); strcpy (submenu1names [z ++], "FREE FLIGHT"); strcpy (submenu1names [z ++], "DEATHMATCH"); strcpy (submenu1names [z ++], "TEAM DEATHMATCH"); strcpy (submenu1names [z ++], "CANNON DEATHMATCH"); strcpy (submenu1names [z ++], "TEAM BASE"); strcpy (submenu1names [z ++], "WAVES"); xf = xsubmenu; yf = ysubmenu - 2; xfstep = 12; yfstep = 0.8; for (i = 0; i < 10; i ++) { button = new Button (submenu1names [i]); button->setBounds (xf, yf, xfstep, yfstep - 0.1); button->setFunction (callbackTraining); yf -= yfstep; if (i == 3) yf -= yfstep; submenu [1]->add (button); } trainingstartid = submenu [1]->components [0]->id; yf -= yfstep; for (i = 0; i < maploader->getMapNumber (); i ++) { char str [256]; strcpy (str, maploader->getNextMap ()); maploader->toUpper (str); button = new Button (str); button->setBounds (xf, yf, xfstep, yfstep - 0.1); button->setFunction (callbackTraining); yf -= yfstep; submenu [1]->add (button); } xf = xsubmenu; yf = ysubmenu; yfstep = 1; button = new Button ("FIGHTER INFO"); button->setFunction (callbackFighter); button->setBounds (xf, yf, xfstep - 0.2, yfstep - 0.1); submenu [1]->add (button); xf += xfstep; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register campaign submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ z = 0; strcpy (submenu2names [z ++], "FIRST TEST"); strcpy (submenu2names [z ++], "SECOND TEST"); strcpy (submenu2names [z ++], "TRANSPORT"); strcpy (submenu2names [z ++], "CONVOY"); strcpy (submenu2names [z ++], "DOGFIGHT"); strcpy (submenu2names [z ++], "AIR BATTLE"); strcpy (submenu2names [z ++], "SURFACE-AIR DEFENSE"); strcpy (submenu2names [z ++], "VETERAN DOGFIGHT"); strcpy (submenu2names [z ++], "BASE ATTACK"); strcpy (submenu2names [z ++], "DEPOTS"); strcpy (submenu2names [z ++], "DEFEND SAM"); strcpy (submenu2names [z ++], "DESERT DOGFIGHT"); strcpy (submenu2names [z ++], "TANK ASSAUT"); strcpy (submenu2names [z ++], "SAM CONVOY"); strcpy (submenu2names [z ++], "DESTROYERS"); strcpy (submenu2names [z ++], "OILRIG"); strcpy (submenu2names [z ++], "CRUISER"); strcpy (submenu2names [z ++], "RADAR BASE"); strcpy (submenu2names [z ++], "CANYON BATTLE"); strcpy (submenu2names [z ++], "TUNNEL"); strcpy (submenu2names [z ++], "MAIN BASE"); strcpy (submenu2names [z ++], "TURRETS"); strcpy (submenu2names [z ++], "MOON BATTLE"); strcpy (submenu2names [z ++], "ELITE DOGFIGHT"); strcpy (submenu2names [z ++], "SNEAKING"); xf = xsubmenu; yf = ysubmenu - 2; xfstep = 12; yfstep = 0.8; for (i = 0; i < z; i ++) { button = new Button (submenu2names [i]); button->setFunction (callbackCampaign); button->setBounds (xf, yf, xfstep, yfstep - 0.1); yf -= yfstep; submenu [2]->add (button); } campaignstartid = submenu [2]->components [0]->id; xf = xsubmenu; yf = ysubmenu; yfstep = 1; button = new Button ("PILOTS RANKING"); button->setFunction (callbackPilots); button->setBounds (xf, yf, xfstep - 0.2, yfstep - 0.1); submenu [2]->add (button); xf += xfstep; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register options submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = xsubmenu; yf = 12; xfstep = 4.6; strcpy (optmenunames [0], "VIDEO"); strcpy (optmenunames [1], "AUDIO"); strcpy (optmenunames [2], "GAME"); for (i = 0; i < 3; i ++) { optmenu [i] = new Container (); allmenus.add (optmenu [i]); } for (i = 0; i < 3; i ++) { optbutton [i] = new Button (optmenunames [i]); optbutton [i]->setBounds (xf, yf, xfstep - 0.2, 1); xf += xfstep; optbutton [i]->setFunction (callbackMainMenu); submenu [3]->add (optbutton [i]); } currentoptmenu = optmenu [0]; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register video options submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ float xftab = 3; xf = xsubmenu; yf = 10; xfstep = 13.6; yfstep = 1; button = new Button ("QUALITY"); button->setFunction (callbackQuality); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); sprintf (buf, "%d", quality); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; button = new Button ("VIEW"); button->setFunction (callbackView); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); sprintf (buf, "%d", (int) view); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; button = new Button ("DITHERING"); button->setFunction (callbackDithering); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); if (dithering) strcpy (buf, "ON"); else strcpy (buf, "OFF"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; button = new Button ("ANTIALIASING"); button->setFunction (callbackAntialiasing); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); if (antialiasing) strcpy (buf, "ON"); else strcpy (buf, "OFF"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; button = new Button ("SPECIAL EFFECTS"); button->setFunction (callbackSpecialEffects); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); if (specialeffects) strcpy (buf, "ON"); else strcpy (buf, "OFF"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; button = new Button ("DYN LIGHTING"); button->setFunction (callbackDynamicLighting); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); if (dynamiclighting) strcpy (buf, "ON"); else strcpy (buf, "OFF"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; button = new Button ("BRIGHTNESS"); button->setFunction (callbackBrightness); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); sprintf (buf, "%d%%", brightness); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; yf -= yfstep / 2; sprintf (buf, "NEED RESTART:"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf, yf, 2, yfstep - 0.3); optmenu [0]->add (label); yf -= yfstep; button = new Button ("RESOLUTION"); button->setFunction (callbackResolution); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); sprintf (buf, "%d*%d", wantwidth, wantheight); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab * 2, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; button = new Button ("FULLSCREEN"); button->setFunction (callbackFullscreen); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [0]->add (button); if (wantfullscreen) sprintf (buf, "YES"); else sprintf (buf, "NO"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [0]->add (label); yf -= yfstep; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register sound options submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ yf = 10; xfstep = 13.6; yfstep = 1; #ifdef USE_GLUT textfield = new TextField ("PLEASE INSTALL SDL AND\nSDLMIXER AND RECOMIPLE\nGL-117 TO ENABLE SOUND\nAND MUSIC", 0.6); textfield->setBounds (xf, yf, xfstep, 0.6 * 4); optmenu [1]->add (textfield); yf -= 0.6 * 4; #else button = new Button ("SOUND VOLUME"); button->setFunction (callbackSound); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [1]->add (button); if (sound->audio) sprintf (buf, "%d%%", volumesound); else sprintf (buf, "N/A"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [1]->add (label); yf -= yfstep; button = new Button ("MUSIC VOLUME"); button->setFunction (callbackMusic); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [1]->add (button); if (sound->audio) sprintf (buf, "%d%%", volumemusic); else sprintf (buf, "N/A"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [1]->add (label); yf -= yfstep; if (!sound->audio) { optmenu [1]->components [0]->setActive (false); optmenu [1]->components [1]->setActive (false); optmenu [1]->components [2]->setActive (false); optmenu [1]->components [3]->setActive (false); } #endif /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register controls options submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xftab = 6.8; xf = xsubmenu; yf = 10; xfstep = 13.5; yfstep = 1; button = new Button ("DIFFICULTY"); button->setFunction (callbackDifficulty); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [2]->add (button); if (difficulty == 0) sprintf (buf, "%s", "EASY"); else if (difficulty == 1) sprintf (buf, "%s", "NORMAL"); else if (difficulty == 2) sprintf (buf, "%s", "HARD"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [2]->add (label); yf -= yfstep; button = new Button ("PHYSICS"); button->setFunction (callbackPhysics); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [2]->add (button); if (!physics) sprintf (buf, "%s", "ACTION"); else sprintf (buf, "%s", "SIMULATION"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [2]->add (label); yf -= yfstep; button = new Button ("CONTROLS"); button->setFunction (callbackControls); button->setBounds (xf, yf, xfstep, yfstep - 0.1); optmenu [2]->add (button); textControls (buf); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); optmenu [2]->add (label); yf -= yfstep; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register keyboard control submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = xsubmenu + 1; yf = ysubmenu - 6; xfstep = 12.5; yfstep = 0.8; for (i = 0; i < 3; i ++) { controlsmenu [i] = new Container (); allmenus.add (controlsmenu [i]); } label = new Label ("ROLL: \t LEFT, RIGHT"); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [0]->add (label); yf -= yfstep; label = new Label ("ELEVATOR: \t UP, DOWN"); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [0]->add (label); yf -= yfstep; label = new Label ("RUDDER: \t LSHIFT+ROLL"); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [0]->add (label); yf -= yfstep; label = new Label ("THROTTLE: \t 1...9"); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [0]->add (label); yf -= yfstep; label = new Label ("CAMERA: \t F1...F8"); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [0]->add (label); yf -= yfstep; z = 0; strcpy (controlsmenu0names [z ++], "FIRE CANNON"); strcpy (controlsmenu0names [z ++], "FIRE MISSILE"); strcpy (controlsmenu0names [z ++], "DROP FLARE"); strcpy (controlsmenu0names [z ++], "DROP CHAFF"); strcpy (controlsmenu0names [z ++], "SELECT MISSILE"); strcpy (controlsmenu0names [z ++], "TARGET NEAREST"); strcpy (controlsmenu0names [z ++], "TARGET LOCKING"); strcpy (controlsmenu0names [z ++], "TARGET NEXT"); strcpy (controlsmenu0names [z ++], "TARGET PREVIOUS"); strcpy (controlsmenu0names [z ++], "INC THRUST"); strcpy (controlsmenu0names [z ++], "DEC THRUST"); int keys [11]; keys [0] = key_firecannon; keys [1] = key_firemissile; keys [2] = key_dropflare; keys [3] = key_dropchaff; keys [4] = key_selectmissile; keys [5] = key_targetnearest; keys [6] = key_targetlocking; keys [7] = key_targetnext; keys [8] = key_targetprevious; keys [9] = key_thrustup; keys [10] = key_thrustdown; yf -= 0.5; for (i = 0; i < 11; i ++) { editkey = new EditKey (controlsmenu0names [i]); editkey->setKey (keys [i]); editkey->setFunction (callbackKeyboard); editkey->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [0]->add (editkey); yf -= yfstep; } yf -= 1; yfstep = 1.0; button = new Button ("LOAD DEFAULTS"); button->setFunction (callbackDefaults); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [0]->add (button); /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register mouse control submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xftab = 3.5; xf = xsubmenu + 1; yf = ysubmenu - 6; xfstep = 12.5; yfstep = 0.8; button = new Button ("SENSITIVITY"); button->setFunction (callbackMouseSensitivity); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (button); sprintf (buf, "%d%%", (int) mouse_sensitivity); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); controlsmenu [1]->add (label); yf -= yfstep; button = new Button ("REVERSE"); button->setFunction (callbackMouseReverse); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (button); if (mouse_reverse) sprintf (buf, "ON"); else sprintf (buf, "OFF"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); controlsmenu [1]->add (label); yf -= yfstep; button = new Button ("RELATIVE"); button->setFunction (callbackMouseRelative); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (button); if (mouse_relative) sprintf (buf, "ON"); else sprintf (buf, "OFF"); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); controlsmenu [1]->add (label); yf -= yfstep; button = new Button ("AUTORUDDER"); button->setFunction (callbackMouseAutorudder); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (button); sprintf (buf, "%d%%", mouse_autorudder); label = new Label (buf); label->setTransparent (true); label->setBounds (xf + xfstep - xftab, yf, 2, yfstep - 0.1); controlsmenu [1]->add (label); yf -= yfstep; yf -= 0.5; textMouseButton (buf2, mouse_firecannon); sprintf (buf, "FIRE CANNON: \t %s", buf2); label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (label); yf -= yfstep; textMouseButton (buf2, mouse_firemissile); sprintf (buf, "FIRE MISSILE: \t %s", buf2); label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (label); yf -= yfstep; textMouseButton (buf2, mouse_selectmissile); sprintf (buf, "SELECT MISSILE: \t %s", buf2); label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (label); yf -= yfstep; yf -= 1; yfstep = 1.0; button = new Button ("LOAD DEFAULTS"); button->setFunction (callbackMouseDefaults); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [1]->add (button); /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register joystick control submenu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ #ifndef USE_GLUT char joystr [4]; xf = xsubmenu + 1; yf = ysubmenu - 6; xfstep = 12.5; yfstep = 0.8; button = new Button ("AILERON"); button->setFunction (callbackJoystickAxis); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (button); setJoystickAxisString (joystick_aileron, joystr); label = new Label (joystr); label->setBounds (xf + xfstep - xftab, yf, xftab, yfstep - 0.1); label->setTransparent (true); controlsmenu [2]->add (label); yf -= yfstep; button = new Button ("ELEVATOR"); button->setFunction (callbackJoystickAxis); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (button); setJoystickAxisString (joystick_elevator, joystr); label = new Label (joystr); label->setBounds (xf + xfstep - xftab, yf, xftab, yfstep - 0.1); label->setTransparent (true); controlsmenu [2]->add (label); yf -= yfstep; button = new Button ("THROTTLE"); button->setFunction (callbackJoystickAxis); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (button); setJoystickAxisString (joystick_throttle, joystr); label = new Label (joystr); label->setBounds (xf + xfstep - xftab, yf, xftab, yfstep - 0.1); label->setTransparent (true); controlsmenu [2]->add (label); yf -= yfstep; button = new Button ("RUDDER"); button->setFunction (callbackJoystickAxis); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (button); setJoystickAxisString (joystick_rudder, joystr); label = new Label (joystr); label->setBounds (xf + xfstep - xftab, yf, xftab, yfstep - 0.1); label->setTransparent (true); controlsmenu [2]->add (label); yf -= yfstep; button = new Button ("VIEW X"); button->setFunction (callbackJoystickAxis); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (button); setJoystickAxisString (joystick_view_x, joystr); label = new Label (joystr); label->setBounds (xf + xfstep - xftab, yf, xftab, yfstep - 0.1); label->setTransparent (true); controlsmenu [2]->add (label); yf -= yfstep; button = new Button ("VIEW Y"); button->setFunction (callbackJoystickAxis); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (button); setJoystickAxisString (joystick_view_y, joystr); label = new Label (joystr); label->setBounds (xf + xfstep - xftab, yf, xftab, yfstep - 0.1); label->setTransparent (true); controlsmenu [2]->add (label); yf -= yfstep; int buttons [11]; buttons [0] = joystick_firecannon; buttons [1] = joystick_firemissile; buttons [2] = joystick_dropflare; buttons [3] = joystick_dropchaff; buttons [4] = joystick_selectmissile; buttons [5] = joystick_targetnearest; buttons [6] = joystick_targetlocking; buttons [7] = joystick_targetnext; buttons [8] = joystick_targetprevious; buttons [9] = joystick_thrustup; buttons [10] = joystick_thrustdown; yf -= 0.5; for (i = 0; i < 11; i ++) { editjoystick = new EditJoystick (controlsmenu0names [i]); editjoystick->setButton (buttons [i]); editjoystick->setFunction (callbackJoystick); editjoystick->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (editjoystick); yf -= yfstep; } yf -= 1; yfstep = 1.0; button = new Button ("LOAD DEFAULTS"); button->setFunction (callbackDefaultsJoystick); button->setBounds (xf, yf, xfstep, yfstep - 0.1); controlsmenu [2]->add (button); #endif /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register top pilots menu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = -10; yf = 9; xfstep = 20; yfstep = 1.2; sprintf (buf, " PILOTS RANKING"); label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); famemenu.add (label); yf -= yfstep + 0.25; yfstep = 1.0; textfield = new TextField ("", yfstep - 0.1); textfield->setBounds (xf, yf, xfstep, (yfstep - 0.1) * 13); famemenu.add (textfield); yf -= yfstep * 13; yfstep = 1.1; sprintf (buf, " BACK TO MAIN MENU"); button = new Button (buf); button->setBounds (xf, yf, xfstep, yfstep - 0.1); button->setFunction (callbackSwitchMainMenu); famemenu.add (button); yf -= yfstep + 0.25; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register fighter menu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = -10; yf = 12; xfstep = 20; yfstep = 1.2; sprintf (buf, " FIGHTER INFO"); label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); fightermenu.add (label); yf -= yfstep + 0.25; yfstep = 1.0; buf [0] = 0; label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); fightermenu.add (label); yf -= yfstep + 0.25; yfstep = 1.1; textfield = new TextField ("", yfstep - 0.1); textfield->setBounds (xf, yf, xfstep, (yfstep - 0.1) * 5 + 0.15); fightermenu.add (textfield); yf -= yfstep * 5 + 0.05; button = new Button ("<"); button->setBounds (xf, yf, 1.5, 1.5); button->setFunction (callbackFighterPrev); fightermenu.add (button); button = new Button (">"); button->setBounds (-xf -1.5, yf, 1.5, 1.5); button->setFunction (callbackFighterNext); fightermenu.add (button); textfield = new TextField ("", yfstep - 0.1); textfield->setBounds (xf + 1.5, yf, 17, 12.5); fightermenu.add (textfield); yf -= 13; sprintf (buf, " BACK TO MAIN MENU"); button = new Button (buf); button->setBounds (xf, yf, xfstep, yfstep - 0.1); button->setFunction (callbackSwitchMainMenu); fightermenu.add (button); yf -= yfstep + 0.25; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register mission menu +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = -12.5; yf = 11; xfstep = 25; yfstep = 1.3; buf [0] = 0; label = new Label (buf); label->setBounds (xf, yf, xfstep, yfstep - 0.1); missionmenu.add (label); yf -= yfstep + 0.15; yfstep = 1.0; buf [0] = 0; label = new Label (buf); label->setBounds (xf, yf, xfstep, 3.5); missionmenu.add (label); yf -= 3.75; buf [0] = 0; label = new Label (buf); label->setBounds (xf, yf, xfstep / 2 - 0.1, 5.7); missionmenu.add (label); buf [0] = 0; label = new Label (buf); label->setBounds (xf + xfstep / 2 + 0.1, yf, xfstep / 2 - 0.1, 5.7); missionmenu.add (label); yf -= 5.95; buf [0] = 0; label = new Label (buf); label->setBounds (xf, yf, xfstep / 2 - 0.1, 6.8); missionmenu.add (label); buf [0] = 0; label = new Label (buf); label->setBounds (xf + xfstep / 2 + 0.1, yf, xfstep / 2 - 0.1, 6.8); missionmenu.add (label); yf -= 7.15; yfstep = 1.0; button = new Button (" BACK TO MAIN MENU"); button->setBounds (xf, yf, xfstep / 2 - 0.1, yfstep - 0.1); button->setFunction (callbackSwitchMainMenu); missionmenu.add (button); button = new Button (" START MISSION"); button->setBounds (xf + xfstep / 2 + 0.1, yf, xfstep / 2 - 0.1, yfstep - 0.1); button->setFunction (callbackSwitchStartMission); missionmenu.add (button); /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register quit dialog +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = -6; yf = 2; xfstep = 12; yfstep = 1.2; buf [0] = 0; label = new Label (buf); label->setBounds (xf, yf, xfstep, 3); quitmenu.add (label); yf -= 3.25; yfstep = 1.0; xfstep = 12; button = new Button (" YES"); button->setBounds (xf, yf, xfstep / 2 - 0.1, yfstep - 0.1); button->setFunction (callbackQuitNow); quitmenu.add (button); button = new Button (" NO"); button->setBounds (xf + xfstep / 2 + 0.1, yf, xfstep / 2 - 0.1, yfstep - 0.1); button->setFunction (callbackSwitchMainMenu); quitmenu.add (button); /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Register stats dialog +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ xf = -10; yf = 9; xfstep = 20; yfstep = 1.2; buf [0] = 0; textfield = new TextField (buf, 1); textfield->setBounds (xf, yf, xfstep, 15.8); statsmenu.add (textfield); yf -= 16; yfstep = 1.0; xfstep = 20; button = new Button (" CONTINUE"); button->setBounds (xf, yf, xfstep, yfstep - 0.1); button->setFunction (callbackStats); statsmenu.add (button); famemenu.setVisible (false); fightermenu.setVisible (false); missionmenu.setVisible (false); quitmenu.setVisible (false); statsmenu.setVisible (false); allmenus.setVisible (false); allmenus.visible = true; allmenus.components [0]->setVisible (true); } /**************************************************************************** GL-117 ENTRY POINT ****************************************************************************/ int main (int argc, char **argv) { char buf [STDSIZE]; // temp buffer checkargs (argc, argv); // process command line parameters dirs = new Dirs (argv [0]); // get data directory (DATADIR, defined via autoconf) sprintf (buf, "Startup %s, %s ... ", argv [0], VERSIONSTRING); display (buf, LOG_MOST); #ifdef _MSC_VER display ("Windows detected ", LOG_MOST); #endif display ("Getting directory locations", LOG_ALL); if (!load_config ()) // try to load conf file (conf.cpp) and validate settings { // no conf file found => create new one display ("Creating new configuration", LOG_ALL); config_test (argc, argv); // do screen test firststart = true; // enable adjusting quality/view/graphics automatically by the game } save_config (); // save conf file (validated) load_configInterface (); // load interface settings from conf.interface and validate save_configInterface (); // save interface settings maploader = new MapLoader (); // here srand should be called to initialize the random number generator // this is currently done by grabbing random numbers via the init methods (not very elegant) server = NULL; client = NULL; display ("Creating/Loading pilots list", LOG_ALL); pilots = new PilotList (dirs->getSaves ("pilots")); // look at pilots.h // NO SDL FOUND => USE GLUT ONLY #ifdef USE_GLUT display ("Using GLUT only", LOG_MOST); if (!configinit) { glutInit (&argc, argv); glutInitDisplayMode (GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE); if (!setScreen (width, height, bpp, fullscreen)) { load_saveconfig (); if (!setScreen (width, height, bpp, fullscreen)) { sprintf (buf, "No working display mode %dx%d found", width, height); display (buf, LOG_FATAL); exit (EXIT_INIT); } } } display ("Calling main initialization method", LOG_ALL); myFirstInit (); display ("Creating dummy sound system, install SDL to enable sound", LOG_ALL); sound = new SoundSystem (); createMenu (); display ("Registering GLUT callbacks", LOG_ALL); glutReshapeFunc (myReshapeFunc); glutDisplayFunc (myDisplayFunc); glutKeyboardFunc (myKeyboardFunc); glutSpecialFunc (mySpecialFunc); glutPassiveMotionFunc (myPassiveMotionFunc); glutMouseFunc (myMouseFunc); glutIdleFunc (myIdleFunc); glutTimerFunc (20, myTimerFunc, 0); // parameters: visible angle, aspectracio, z-nearclip, z-farclip gluPerspective (visibleangle, (float) width / height, nearclippingplane * GLOBALSCALE, 50.0 * GLOBALSCALE); // no keyboard available with GLUT, as there are no KEY_DOWN/UP events if (controls <= 0) controls = CONTROLS_MOUSE; display ("Entering GLUT main loop", LOG_ALL); glutMainLoop(); // give controls to GLUT // SDL FOUND #else display ("Using SDL and GLUT", LOG_MOST); if (!configinit) if (SDL_Init (SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) { sprintf (buf, "Couldn't initialize SDL: %s", SDL_GetError ()); display (buf, LOG_FATAL); exit (EXIT_INIT); } atexit (SDL_Quit); // SDL_NET INSTALLED? #ifdef HAVE_SDL_NET if (SDLNet_Init () == -1) // initialize SDL_net { sprintf (buf, "SDLNet_Init: %s", SDLNet_GetError ()); display (buf, LOG_FATAL); exit (EXIT_INIT); } display ("Using SDL_net", LOG_MOST); #endif if (!configinit) { if (!setScreen (width, height, bpp, fullscreen)) { load_saveconfig (); if (!setScreen (width, height, bpp, fullscreen)) { sprintf (buf, "No working display mode %dx%d found.", width, height); display (buf, LOG_FATAL); exit (EXIT_INIT); } } } display ("Setting SDL caption", LOG_ALL); SDL_WM_SetCaption ("GL-117", "GL-117"); // window name SDL_ShowCursor (0); display ("Creating sound system", LOG_ALL); sound = new SoundSystem (); // look at audio.cpp sound->volumesound = volumesound; sound->volumemusic = volumemusic; sound->setVolume (); // set all sound volumes sound->setVolumeMusic (); // set all music volumes display ("Playing startup music", LOG_ALL); sound->playMusic (1); #ifdef HAVE_SDL_MIXER Mix_HookMusicFinished (playRandomMusic); #endif display ("Calling main initialization method", LOG_ALL); myFirstInit (); myReshapeFunc (width, height); display ("Querying joystick", LOG_ALL); joysticks = SDL_NumJoysticks (); memset (jaxis, 0, maxjaxis * maxjoysticks * sizeof (int)); if (joysticks > 0) { for (i = 0; i < joysticks; i ++) { SDL_JoystickEventState (SDL_ENABLE); sdljoystick [i] = SDL_JoystickOpen (i); sdljoystickaxes [i] = SDL_JoystickNumAxes (sdljoystick [i]); sprintf (buf, "Joystick \"%s\" detected", SDL_JoystickName (i)); display (buf, LOG_MOST); } } else { display ("No joystick found", LOG_MOST); // sdljoystick [0] = NULL; if (controls == CONTROLS_JOYSTICK) // no joystick available, so switch to mouse controls controls = CONTROLS_MOUSE; } // disable joystick manually // joysticks = 0; /* joysticks = 2; sdljoystickaxes [0] = 4; sdljoystickaxes [1] = 2;*/ SDL_EnableUNICODE (1); SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); // Restrict mouse to SDL window // SDL_WM_GrabInput (SDL_GRAB_ON); createMenu (); display ("Entering SDL main loop (GLUT emulation)", LOG_ALL); sdlMainLoop (); // simulate GLUT's main loop (above) #endif return 0; // exit without signaling errors } #endif gl-117-1.3.2/src/main.h0000644000175000017500000000764310145416156013572 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes the main program. */ #ifndef IS_MAIN_H #define IS_MAIN_H // dummy debug definitions //#define HAVE_SDL_MIXER //#define USE_GLUT #include #include #include /* Load definitions of GNU autoconf: USE_GLUT: no SDL HAVE_SDL: SDL installed HAVE_SDL_MIXER: SDL_mixer installed HAVE_SDL_NET: SDL_net installed */ #include "aiobject.h" // ok #include "model.h" // ok #include "3ds.h" // ok #include "effects.h" // ok #include "audio.h" // ok #include "pilots.h" // ok extern Font *font1, *font2; extern CTexture *texsun, *texflare1, *texflare2, *texflare3, *texflare4, *texmoon, *texcross, *texcross2, *texranks, *texmedals; extern CTexture *texradar1, *texradar2, *texarrow; extern PilotList *pilots; // other pilots of the Eagle Squad extern CExplosion *explosion [maxexplosion]; extern CBlackSmoke *blacksmoke [maxblacksmoke]; extern CLoad3DS g_Load3ds; extern CModel model_fig; // fighter models extern CModel model_figa; extern CModel model_figb; extern CModel model_figc; extern CModel model_figd; extern CModel model_fige; extern CModel model_figf; extern CModel model_figg; extern CModel model_figh; extern CModel model_figi; extern CModel model_figt; extern CModel model_cannon1; extern CModel model_cannon2; extern CModel model_cannon1b; extern CModel model_cannon2b; extern CModel model_flare1; extern CModel model_chaff1; extern CModel model_missile1; extern CModel model_missile2; extern CModel model_missile3; extern CModel model_missile4; extern CModel model_missile5; extern CModel model_missile6; extern CModel model_missile7; extern CModel model_missile8; extern CModel model_flak1; extern CModel model_flarak1; extern CModel model_tent1; extern CModel model_ship1; extern CModel model_ship2; extern CModel model_gl117; extern CModel model_tank1; extern CModel model_container1; extern CModel model_truck1; extern CModel model_truck2; extern CModel model_trsam; extern CModel model_pickup1; extern CModel model_pickup2; extern CModel model_tank2; extern CModel model_tent4; extern CModel model_hall1; extern CModel model_hall2; extern CModel model_oilrig; extern CModel model_egg; extern CModel model_radar; extern CModel model_mine1; extern CModel model_aster1; extern CModel model_base1; extern CModel model_barrier1; extern CModel model_rubble1; extern CModel model_depot1; extern CModel model_house1; extern DynamicObj *flare [maxflare]; extern DynamicObj *chaff [maxchaff]; extern AIObj *missile [maxmissile]; extern DynamicObj *laser [maxlaser]; extern AIObj *fighter [maxfighter]; extern Star *star [maxstar]; // the stars at night extern DynamicObj *groundobj [maxgroundobj]; extern Flash *flash1; // the thunderstorm flash extern Space *space; // the scene (everything) without the landscape extern AIObj *fplayer; // the player itself extern SoundSystem *sound; // get name of a keyboard's key (ENTER, SPACE) extern char *getKeyString (int key, char *str); // own export: main.h may be included in the cpp files extern CModel *getModel (int id); #endif gl-117-1.3.2/src/Makefile.am0000644000175000017500000000055310145416156014522 0ustar cedriccedricAUTOMAKE_OPTIONS = gnu bin_PROGRAMS = gl-117 gl_117_SOURCES = main.cpp gl.cpp model.cpp 3ds.cpp audio.cpp land.cpp glland.cpp aiobject.cpp effects.cpp vertexarray.cpp net.cpp mathtab.cpp dirs.cpp objload.cpp pilots.cpp loader_tga.cpp object.cpp conf.cpp mission.cpp cockpit.cpp common.cpp menu.cpp fileloader.cpp maploader.cpp noinst_HEADERS = DEFS=-I. -I.. gl-117-1.3.2/src/Makefile.in0000644000175000017500000003650010145416202014524 0ustar cedriccedric# Makefile.in generated by automake 1.8.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ SOURCES = $(gl_117_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : bin_PROGRAMS = gl-117$(EXEEXT) subdir = src DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_gl_117_OBJECTS = main.$(OBJEXT) gl.$(OBJEXT) model.$(OBJEXT) \ 3ds.$(OBJEXT) audio.$(OBJEXT) land.$(OBJEXT) glland.$(OBJEXT) \ aiobject.$(OBJEXT) effects.$(OBJEXT) vertexarray.$(OBJEXT) \ net.$(OBJEXT) mathtab.$(OBJEXT) dirs.$(OBJEXT) \ objload.$(OBJEXT) pilots.$(OBJEXT) loader_tga.$(OBJEXT) \ object.$(OBJEXT) conf.$(OBJEXT) mission.$(OBJEXT) \ cockpit.$(OBJEXT) common.$(OBJEXT) menu.$(OBJEXT) \ fileloader.$(OBJEXT) maploader.$(OBJEXT) gl_117_OBJECTS = $(am_gl_117_OBJECTS) gl_117_LDADD = $(LDADD) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/3ds.Po ./$(DEPDIR)/aiobject.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/audio.Po ./$(DEPDIR)/cockpit.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/common.Po ./$(DEPDIR)/conf.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/dirs.Po ./$(DEPDIR)/effects.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/fileloader.Po ./$(DEPDIR)/gl.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/glland.Po ./$(DEPDIR)/land.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/loader_tga.Po ./$(DEPDIR)/main.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/maploader.Po ./$(DEPDIR)/mathtab.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/menu.Po ./$(DEPDIR)/mission.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/model.Po ./$(DEPDIR)/net.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/object.Po ./$(DEPDIR)/objload.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/pilots.Po ./$(DEPDIR)/vertexarray.Po CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ SOURCES = $(gl_117_SOURCES) DIST_SOURCES = $(gl_117_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = -I. -I.. DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ bindir = @bindir@ build_alias = @build_alias@ datadir = @datadir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = gnu gl_117_SOURCES = main.cpp gl.cpp model.cpp 3ds.cpp audio.cpp land.cpp glland.cpp aiobject.cpp effects.cpp vertexarray.cpp net.cpp mathtab.cpp dirs.cpp objload.cpp pilots.cpp loader_tga.cpp object.cpp conf.cpp mission.cpp cockpit.cpp common.cpp menu.cpp fileloader.cpp maploader.cpp noinst_HEADERS = all: all-am .SUFFIXES: .SUFFIXES: .cpp .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 \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: 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 install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) gl-117$(EXEEXT): $(gl_117_OBJECTS) $(gl_117_DEPENDENCIES) @rm -f gl-117$(EXEEXT) $(CXXLINK) $(gl_117_LDFLAGS) $(gl_117_OBJECTS) $(gl_117_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/3ds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aiobject.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cockpit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/effects.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileloader.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glland.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/land.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loader_tga.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maploader.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mathtab.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mission.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/model.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objload.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pilots.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vertexarray.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$tags$$unique" \ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here 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)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$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) $(HEADERS) installdirs: for dir in "$(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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -rm -f $(CONFIG_CLEAN_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 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 info: info-am info-am: install-data-am: install-exec-am: install-binPROGRAMS install-info: install-info-am install-man: 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 pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-info-am # 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: gl-117-1.3.2/src/maploader.cpp0000644000175000017500000007156010145416156015144 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file contains a map loader. */ #ifndef IS_MAPLOADER_H #include #include #include #include #include "maploader.h" #include "main.h" #include "loader_tga.h" #include "fileloader.h" #include "dirs.h" #include "glland.h" int mapPilotname2Num (char *str) { if (!strcmp (str, "PRIMETIME")) return PILOT_PRIMETIME; else if (!strcmp (str, "HEPTARGON")) return PILOT_HEPTARGON; else if (!strcmp (str, "LARA")) return PILOT_LARA; else if (!strcmp (str, "SHARK")) return PILOT_SHARK; else if (!strcmp (str, "BOSS")) return PILOT_BOSS; else if (!strcmp (str, "DRDOOM")) return PILOT_DRDOOM; else if (!strcmp (str, "SHADOW")) return PILOT_SHADOW; else if (!strcmp (str, "MATRIX")) return PILOT_MATRIX; else if (!strcmp (str, "FIREBIRD")) return PILOT_FIREBIRD; else if (!strcmp (str, "THUNDER")) return PILOT_THUNDER; return -1; } void MapLoader::readMapFile () { char token [TOKENLEN]; mapcount = 0; if (!file_open (dirs->getMaps ("maps.txt"))) return; while (file_nextToken (token, TOKENLEN)) { strcpy (mapfile [mapcount], token); mapcount ++; if (mapcount >= MAXMAPS) break; } file_close (); } MapLoader::MapLoader () { // initialize map file loader file_setWhitespace (" \t\r\n"); file_addComment ("#", "\n"); file_setQuotes ("\"'`"); readMapFile (); mapptr = 0; } int MapLoader::getMapNumber () { return mapcount; } char *MapLoader::getNextMap () { return mapfile [mapptr ++]; } void MapLoader::toUpper (char *str) { if (str == NULL) return; int i; for (i = 0; i < (int) strlen (str); i ++) if (str [i] >= 'a' && str [i] <= 'z') str [i] -= 32; } Mission *MapLoader::getMission () { Mission *m = new MissionCustom (); m->id = mapptr; m->init (); return m; } MissionCustom::MissionCustom () { reterror = 0; numobjects = 0; numtext = 0; } void MissionCustom::error (char *msg) { char buf [TOKENLEN]; reterror = 1; sprintf (buf, "Line %d: %s", file_getLine (), msg); display (buf, LOG_ERROR); } void MissionCustom::toUpper (char *str) { if (str == NULL) return; int i; for (i = 0; i < (int) strlen (str); i ++) if (str [i] >= 'a' && str [i] <= 'z') str [i] -= 32; } int MissionCustom::readAttribute (char *attribute, char *value, char *casevalue) { if (!file_nextToken (token, TOKENLEN)) return 0; toUpper (token); if (isGlobal (token)) return 0; strcpy (attribute, token); if (!file_nextToken (token, TOKENLEN)) return 0; if (strcmp (token, "=")) { error ("Assignment symbol '=' is missing"); if (!synchronize ()) return 0; return -1; } if (!file_nextToken (token, TOKENLEN)) { error ("Unexpected end of file"); return 0; } strcpy (casevalue, token); toUpper (token); strcpy (value, token); return 1; } int MissionCustom::synchronize () { if (!file_find ("\n")) return 0; return 1; } int MissionCustom::isInteger (char *str) { int i; if (str [0] == 0) return 0; for (i = 0; i < (int) strlen (str); i ++) if (str [i] < '0' || str [i] > '9') return 0; return 1; } int MissionCustom::isDouble (char *str) { if (str [0] == 0) return 0; char *ptr; (void) strtod (str, &ptr); if ((int) (ptr - str) != (int) strlen (str)) return 0; return 1; } double MissionCustom::toDouble (char *str) { if (str [0] == 0) return 0; char *ptr; return strtod (str, &ptr); } int MissionCustom::parseMapData () { char attr [TOKENLEN], value [TOKENLEN], casevalue [TOKENLEN]; char buf [TOKENLEN]; int ret; map_type = LANDSCAPE_ALPINE; save_map_type = map_type; heading = 0; weather = WEATHER_SUNNY; clouds = 0; while (true) { while ((ret = readAttribute (attr, value, casevalue)) == -1); if (!ret) return 0; if (!strcmp (attr, "TYPE")) { if (!strcmp (value, "ALPINE")) map_type = LANDSCAPE_ALPINE; else if (!strcmp (value, "ALPINE_NOLAKE")) map_type = LANDSCAPE_ALPINE_NOLAKE; else if (!strcmp (value, "ALPINE_LOW")) map_type = LANDSCAPE_LOW_ALPINE; else if (!strcmp (value, "ALPINE_EROSION")) map_type = LANDSCAPE_ALPINE_EROSION; else if (!strcmp (value, "ALPINE_SEA")) map_type = LANDSCAPE_ALPINE_SEA; else if (!strcmp (value, "ALPINE_ROCKY")) map_type = LANDSCAPE_ALPINE_ROCKY; else if (!strcmp (value, "SEA")) map_type = LANDSCAPE_SEA; else if (!strcmp (value, "MOON")) map_type = LANDSCAPE_MOON; else if (!strcmp (value, "MOON_FLAT")) map_type = LANDSCAPE_FLAT_MOON; else if (!strcmp (value, "CANYON")) map_type = LANDSCAPE_CANYON; else if (!strcmp (value, "DESERT")) map_type = LANDSCAPE_DESERT; else { sprintf (buf, "Invalid attribute %s", attr); error (buf); } save_map_type = map_type; } else if (!strcmp (attr, "HEADING")) { if (!isInteger (value)) { error ("Heading value must be an integer"); } else { heading = atoi (value); } } else if (!strcmp (attr, "WEATHER")) { if (!strcmp (value, "SUNNY")) { weather = WEATHER_SUNNY; clouds = 0; } else if (!strcmp (value, "CLEAR")) { weather = WEATHER_SUNNY; clouds = 2; } else if (!strcmp (value, "CLOUDY")) { weather = WEATHER_SUNNY; clouds = 1; } else if (!strcmp (value, "DULL")) { weather = WEATHER_CLOUDY; clouds = 1; } else if (!strcmp (value, "THUNDERSTORM")) { weather = WEATHER_THUNDERSTORM; clouds = 3; } else { sprintf (buf, "Invalid attribute %s", attr); error (buf); } } else if (!strcmp (attr, "TIME")) { if (!isInteger (value)) { error ("Time value must be an integer in [0...24]"); } else { int time = atoi (value); if (time < 0 || time > 24) { error ("Time value must be an integer in [0...24]"); } else { if (time < 6 || time > 18) { day = 0; if (time > 18) time = 24 - time; sungamma = (6 - time) * 10; } else { day = 1; time = abs (12 - time); sungamma = (6 - time) * 10; } } } } else if (!strcmp (attr, "FILE")) { FILE *in = fopen (dirs->getMaps (casevalue), "rb"); if (in == NULL) { sprintf (buf, "Cannot open file %s", dirs->getMaps (casevalue)); error (buf); } else { fseek (in, 16, SEEK_SET); char bpp = fgetc (in); fclose (in); if (bpp != 32) { error ("Only 32 bpp TGA files are valid"); } else { map_type = -1; strcpy (mapfile, casevalue); } } } else if (!strcmp (attr, "SCALEHEIGHT")) { if (!isDouble (value)) { error ("Scaleheight value must be a float number in [0...1]"); } else { float test = toDouble (value); if (test < 0 || test > 1) { error ("Scaleheight value must be a float number in [0...1]"); } else { scaleheight = test; } } } else if (strstr (attr, "TREE")) { int num = atoi (&attr [4]); if (num < 1 || num > 3) { error ("Tree needs a number suffix like \"Tree2\" with number in [1...3]"); } else { if (!isInteger (value)) { error ("Tree value must be an integer in [0...100]"); } else { int test = atoi (value); if (test < 0 || test > 100) error ("Tree value must be an integer in [0...100]"); else tree [num - 1] = test; } } } else { if (isGlobal (attr)) break; } } return 1; } int MissionCustom::parseObjectData () { char attr [TOKENLEN], value [TOKENLEN], casevalue [TOKENLEN]; char buf [TOKENLEN]; int ret; AIObj *aiobj = &obj [numobjects]; if (numobjects >= maxfighter) { error ("Too many objects defined"); return 0; } while (true) { while ((ret = readAttribute (attr, value, casevalue)) == -1); if (!ret) { numobjects ++; return 0; } if (!strcmp (attr, "TYPE")) { if (!strcmp (value, "FALCON")) aiobj->id = FIGHTER_FALCON; else if (!strcmp (value, "SWALLOW")) aiobj->id = FIGHTER_SWALLOW; else if (!strcmp (value, "HAWK")) aiobj->id = FIGHTER_HAWK; else if (!strcmp (value, "HAWK2")) aiobj->id = FIGHTER_HAWK2; else if (!strcmp (value, "BUZZARD")) aiobj->id = FIGHTER_BUZZARD; else if (!strcmp (value, "CROW")) aiobj->id = FIGHTER_CROW; else if (!strcmp (value, "PHOENIX")) aiobj->id = FIGHTER_PHOENIX; else if (!strcmp (value, "REDARROW")) aiobj->id = FIGHTER_REDARROW; else if (!strcmp (value, "BLACKBIRD")) aiobj->id = FIGHTER_BLACKBIRD; else if (!strcmp (value, "STORM")) aiobj->id = FIGHTER_STORM; else if (!strcmp (value, "TRANSPORT")) aiobj->id = FIGHTER_TRANSPORT; else if (!strcmp (value, "WIESEL")) aiobj->id = TANK_AIR1; else if (!strcmp (value, "PANTHER")) aiobj->id = TANK_GROUND1; else if (!strcmp (value, "SAMTRUCK")) aiobj->id = TANK_TRSAM1; else if (!strcmp (value, "PICKUP")) aiobj->id = TANK_PICKUP1; else if (!strcmp (value, "TRUCK")) aiobj->id = TANK_TRUCK1; else if (!strcmp (value, "TRUCK2")) aiobj->id = TANK_TRUCK2; else if (!strcmp (value, "CRUISER")) aiobj->id = SHIP_CRUISER; else if (!strcmp (value, "DESTROYER")) aiobj->id = SHIP_DESTROYER1; else if (!strcmp (value, "SAC")) aiobj->id = FLAK_AIR1; else if (!strcmp (value, "SAM")) aiobj->id = FLARAK_AIR1; else if (!strcmp (value, "TENT")) aiobj->id = STATIC_TENT1; else if (!strcmp (value, "BIGTENT")) aiobj->id = STATIC_TENT4; else if (!strcmp (value, "CONTAINER")) aiobj->id = STATIC_CONTAINER1; else if (!strcmp (value, "HALL")) aiobj->id = STATIC_HALL1; else if (!strcmp (value, "HALL2")) aiobj->id = STATIC_HALL2; else if (!strcmp (value, "OILRIG")) aiobj->id = STATIC_OILRIG1; else if (!strcmp (value, "COMPLEX")) aiobj->id = STATIC_COMPLEX1; else if (!strcmp (value, "RADAR")) aiobj->id = STATIC_RADAR1; else if (!strcmp (value, "MOONBASE")) aiobj->id = STATIC_BASE1; else if (!strcmp (value, "DEPOT")) aiobj->id = STATIC_DEPOT1; else if (!strcmp (value, "LASERBARRIER")) aiobj->id = STATIC_BARRIER1; else if (!strcmp (value, "ASTEROID")) aiobj->id = ASTEROID; else { sprintf (buf, "Invalid attribute %s", attr); error (buf); } } else if (!strcmp (attr, "PARTY")) { if (!isInteger (value)) { error ("Party value must be an integer"); } else { aiobj->party = atoi (value); } } else if (!strcmp (attr, "LEVEL")) { if (!isInteger (value)) { error ("Level value must be an integer in [0...10]"); } else { int level = atoi (value); if (level < 0 || level > 10) error ("Level value must be an integer in [0...10]"); aiobj->intelligence = 400 - level * 40; } } else if (!strcmp (attr, "X")) { if (!isDouble (value)) { error ("X value must be a float number"); } else { aiobj->tl->x = -toDouble (value); } } else if (!strcmp (attr, "Y")) { if (!isDouble (value)) { error ("Y value must be a float number"); } else { aiobj->tl->z = -toDouble (value); } } else if (!strcmp (attr, "INITTIME")) { if (!isDouble (value)) { error ("Inittime value must be a float number"); } else { float z = toDouble (value); aiobj->ttl = (int) (z * 1000 * timestep / 34); } } else if (!strcmp (attr, "CRITICAL")) { if (!isInteger (value)) { error ("Critical value must be an integer"); } else { int b = atoi (value); if (b) aiobj->explode = 1; else aiobj->explode = -1; } } else { if (isGlobal (attr)) break; } } numobjects ++; return 1; } int MissionCustom::parseTextData () { char attr [TOKENLEN], value [TOKENLEN], casevalue [TOKENLEN]; int ret; if (numtext >= maxtext) { error ("Too many text blocks"); } while (true) { while ((ret = readAttribute (attr, value, casevalue)) == -1); if (!ret) { numtext ++; return 0; } if (!strcmp (attr, "MESSAGE")) { strcpy (text [numtext], value); } else if (!strcmp (attr, "STARTTIME")) { if (!isDouble (value)) { error ("Starttime value must be a float number"); } else { float z = toDouble (value); textstart [numtext] = (int) (z * 1000 * timestep / 34); } } else if (!strcmp (attr, "DELAY")) { if (!isDouble (value)) { error ("Delay value must be a float number"); } else { float z = toDouble (value); textdelay [numtext] = (int) (z * 1000 * timestep / 34); } } else { if (isGlobal (attr)) break; } } numtext ++; return 1; } int MissionCustom::parseRelCoords () { char attr [TOKENLEN], value [TOKENLEN], casevalue [TOKENLEN]; char buf [TOKENLEN]; int ret; while (true) { while ((ret = readAttribute (attr, value, casevalue)) == -1); if (!ret) return 0; if (!strcmp (attr, "FIND")) { if (!strcmp (value, "LASTOBJECT")) { if (numobjects <= 0) { error ("No object defined yet: coords origin could not be set"); } else { obj [numobjects].idle = 1; } } else if (!strcmp (value, "PLAYER")) { if (numobjects <= 0) { error ("No object defined yet: coords origin could not be set"); } else { obj [numobjects].idle = 2; } } else if (!strcmp (value, "FLATTERRAIN")) { obj [numobjects].idle = 100; } else { sprintf (buf, "Invalid attribute %s", attr); error (buf); } } else if (!strcmp (attr, "QUADRANT")) { if (!isInteger (value)) { error ("Quadrant value must be an integer in [1...16]"); } else { int quad = atoi (value); if (quad < 1 || quad > 16) error ("Quadrant value must be an integer in [1...16]"); else obj [numobjects].idle += quad; } } else { if (isGlobal (attr)) break; } } return 1; } int MissionCustom::isGlobal (char *token) { bool b = !strcmp (token, "INFO") || !strcmp (token, "TERRAIN") || !strcmp (token, "OBJECT") || !strcmp (token, "RELCOORDS") || !strcmp (token, "TEXT"); return b; } int MissionCustom::parseInfoData () { char attr [TOKENLEN], value [TOKENLEN], casevalue [TOKENLEN]; char buf [TOKENLEN]; int ret; while (true) { while ((ret = readAttribute (attr, value, casevalue)) == -1); if (!ret) return 0; if (!strcmp (attr, "NAME")) { strcpy (name, value); } else if (!strcmp (attr, "BRIEFING")) { strcpy (briefing, value); } else if (strstr (attr, "PILOT")) { int num = atoi (&attr [5]); if (num < 1 || num > maxpilots) { error ("Pilot needs a number suffix like \"Pilot5\" with number in [1...maxpilots]"); } else { int test = mapPilotname2Num (value); if (test == -1) { error ("Invalid pilot name"); } else { alliedpilot [num - 1] = test; } } } else if (strstr (attr, "FIGHTER")) { int num = atoi (&attr [7]); if (num < 1 || num > maxpilots) { error ("Fighter needs a number suffix like \"Fighter1\" with number in [1...3]"); } else { if (!strcmp (value, "FALCON")) selfighter [num - 1] = FIGHTER_FALCON; else if (!strcmp (value, "HAWK")) selfighter [num - 1] = FIGHTER_HAWK; else if (!strcmp (value, "HAWK2")) selfighter [num - 1] = FIGHTER_HAWK2; else if (!strcmp (value, "STORM")) selfighter [num - 1] = FIGHTER_STORM; else if (!strcmp (value, "REDARROW")) selfighter [num - 1] = FIGHTER_REDARROW; else if (!strcmp (value, "PHOENIX")) selfighter [num - 1] = FIGHTER_PHOENIX; else { error ("Invalid fighter type"); } } } else if (strstr (attr, "WEAPON")) { int num = atoi (&attr [6]); if (num < 1 || num > maxpilots) { error ("Weapon needs a number suffix like \"Weapon\" with number in [1...3]"); } else { if (!strcmp (value, "AAMPACK")) selweapon [num - 1] = MISSILE_AIR1; else if (!strcmp (value, "AGMPACK")) selweapon [num - 1] = MISSILE_GROUND1; else if (!strcmp (value, "DFPACK")) selweapon [num - 1] = MISSILE_DF1; else { error ("Invalid weapon type"); } } } else if (strstr (attr, "MAXTIME")) { if (!isDouble (value)) { error ("Maxtime value must be a float number"); } else { float z = toDouble (value); maxtime = (int) (z * 1000 * timestep / 34); } } else { sprintf (buf, "Invalid attribute %s", attr); error (buf); } } return 1; } void MissionCustom::init () { int i; char buf [TOKENLEN]; bool readtoken = true; reterror = 0; if (!file_open (dirs->getMaps (maploader->mapfile [id - MISSION_CUSTOM1]))) { error ("Could not open map file"); return; } for (i = 0; i < maxfighter; i ++) { obj [i].dinit (); obj [i].aiinit (); } for (i = 0; i < maxtext; i ++) { text [i] [0] = 0; textstart [i] = -1; textdelay [i] = 0; } for (i = 0; i < maxpilots; i ++) alliedpilot [i] = i; maxtime = 2500 * timestep; tree [0] = 20; tree [1] = 20; tree [2] = 50; scaleheight = 1; memset (token, 0, TOKENLEN); strcpy (name, ""); strcpy (briefing, ""); strcpy (mapfile, ""); while (true) { if (readtoken) { if (!file_nextToken (token, TOKENLEN)) break; } readtoken = true; toUpper (token); if (!strcmp (token, "INFO")) { strcpy (token, ""); parseInfoData (); readtoken = false; } else if (!strcmp (token, "TERRAIN")) { strcpy (token, ""); parseMapData (); readtoken = false; } else if (!strcmp (token, "OBJECT")) { strcpy (token, ""); parseObjectData (); readtoken = false; } else if (!strcmp (token, "RELCOORDS")) { strcpy (token, ""); parseRelCoords (); readtoken = false; } else if (!strcmp (token, "TEXT")) { strcpy (token, ""); parseTextData (); readtoken = false; } else { if (strlen (token)) { sprintf (buf, "Unknown token %s", token); error (buf); } // error in map file, must be closed, mission freed } } file_close (); autoLFBriefing (); alliedfighters = 1; for (i = 1; i < numobjects; i ++) if (obj [i].party == fighter [0]->party) alliedfighters ++; } void MissionCustom::getLakeMin (short x, short y) { if (x <= 0 || y <= 0 || x >= MAXX || y >= MAXX) return; l->f [x] [y] = DEEPWATER; if (l->h [x] [y] < minh) minh = l->h [x] [y]; if (l->f [x-1] [y] == WATER) getLakeMin (x-1, y); if (l->f [x+1] [y] == WATER) getLakeMin (x+1, y); if (l->f [x] [y-1] == WATER) getLakeMin (x, y-1); if (l->f [x] [y+1] == WATER) getLakeMin (x, y+1); } void MissionCustom::setLakeMin (short x, short y) { if (x <= 0 || y <= 0 || x >= MAXX || y >= MAXX) return; l->hw [x] [y] = minh; l->f [x] [y] = SHALLOWWATER; if (l->h [x] [y] >= minh) l->h [x] [y] = minh - 50; if (l->f [x-1] [y] == DEEPWATER) setLakeMin (x-1, y); if (l->f [x+1] [y] == DEEPWATER) setLakeMin (x+1, y); if (l->f [x] [y-1] == DEEPWATER) setLakeMin (x, y-1); if (l->f [x] [y+1] == DEEPWATER) setLakeMin (x, y+1); } void MissionCustom::start () { int i, i2; int relx = 0, rely = 0; if (l != NULL) delete l; if (strlen (mapfile) == 0) { l = new GLLandscape (space, map_type, NULL); } else { l = new GLLandscape (space, map_type, NULL); unsigned char *map; int mapx, mapy; map = tga_load (dirs->getMaps (mapfile), &mapx, &mapy); if (map == NULL) { display ("Map has a valid bpp entry but seems to be corrupt", LOG_FATAL); exit (1); } int mapcx = mapx, mapcy = mapy; if (mapcx > MAXX+1) mapcx = MAXX+1; if (mapcy > MAXX+1) mapcy = MAXX+1; memset ((unsigned short *) l->h, 0, (MAXX+1) * (MAXX+1) * sizeof (unsigned short)); memset ((unsigned char *) l->f, 0, (MAXX+1) * (MAXX+1) * sizeof (unsigned char)); int minh = 65535, maxh = 0; for (i = 0; i < mapcy; i ++) for (i2 = 0; i2 < mapcx; i2 ++) { int x = i2, y = MAXX-i; int addr = (i * mapx + i2) * 4 + 3; l->h [x] [y] = map [addr]; if (map [addr] < minh) minh = map [addr]; if (map [addr] > maxh) maxh = map [addr]; } float hscale = 65534.0F / (maxh - minh) * scaleheight; float hadd = -hscale * minh + 0.5F + 32768.0F * (1.0F - scaleheight); for (i = 0; i < mapcy; i ++) for (i2 = 0; i2 < mapcx; i2 ++) { int x = i2, y = MAXX-i; float test = hadd + hscale * l->h [x] [y]; l->h [x] [y] = (int) test; l->hw [x] [y] = l->h [x] [y]; } for (i = 0; i < mapcy; i ++) for (i2 = 0; i2 < mapcx; i2 ++) { int x = i2, y = MAXX-i; int addr = (i * mapx + i2) * 4; int r = map [addr]; int g = map [addr + 1]; int b = map [addr + 2]; if (save_map_type < LANDSCAPE_MOON) // alpine { l->f [x] [y] = GRASS; if (r <= 50 && g <= 50 && b >= 200) l->f [x] [y] = WATER; else if (r <= 50 && g >= 50 && g <= 200 && b <= 50) l->f [x] [y] = DECIDUOUSWOODS0; else if (r <= 120 && g <= 120 && b <= 120) l->f [x] [y] = ROCKS; else if (r <= 210 && g <= 210 && b <= 210) l->f [x] [y] = GRAVEL; else if (r > 210 && g > 210 && b > 210) l->f [x] [y] = GLACIER; else if (r > 210 && g < 50 && b < 50) l->f [x] [y] = TOWN; } else if (save_map_type < LANDSCAPE_CANYON) // moon { l->f [x] [y] = MOONSAND; } else if (save_map_type < LANDSCAPE_DESERT) // canyon { l->f [x] [y] = REDSTONE; if (r <= 50 && g <= 50 && b >= 200) l->f [x] [y] = WATER; else if (r > 210 && g > 210 && b > 210) l->f [x] [y] = REDSAND; else if (r > 150 && g > 150 && b < 50) l->f [x] [y] = REDTREE0; } else if (save_map_type < LANDSCAPE_ARCTIC) // desert { l->f [x] [y] = DESERTSAND; if (r <= 50 && g <= 50 && b >= 200) l->f [x] [y] = WATER; else if (r <= 50 && g >= 50 && b <= 50) l->f [x] [y] = CACTUS0; } } for (i = 1; i < mapcy - 1; i ++) for (i2 = 1; i2 < mapcx - 1; i2 ++) { int x = i2, y = MAXX-i; if (l->f [x] [y] == WATER) { this->minh = 0xFFFF; getLakeMin (x, y); setLakeMin (x, y); } } int htreemin = 65535, htreemax = 0; for (i = 0; i < mapcy; i ++) for (i2 = 0; i2 < mapcx; i2 ++) { int x = i2, y = MAXX-i; if (l->f [x] [y] == DECIDUOUSWOODS0) { if (l->h [x] [y] < htreemin) htreemin = l->h [x] [y]; if (l->h [x] [y] > htreemax) htreemax = l->h [x] [y]; } } int htreediff = htreemax - htreemin; int treeh1 = htreemin + htreediff * tree [0] / 100; int treeh2 = htreemin + htreediff * (tree [0] + tree [1]) / 100; int treeh3 = htreemin + htreediff * (tree [0] + tree [1] + tree [2]) / 100; for (i = 1; i < mapcx - 1; i ++) for (i2 = 1; i2 < mapcy - 1; i2 ++) { int x = i2, y = MAXX-i; if (l->f [x] [y] == DECIDUOUSWOODS0) { int density = 0; if (l->isWoods (l->h [x-1] [y])) density ++; if (l->isWoods (l->h [x+1] [y])) density ++; if (l->isWoods (l->h [x] [y+1])) density ++; if (l->isWoods (l->h [x] [y-1])) density ++; density --; if (density < 0) density = 0; if (l->h [x] [y] > treeh3) l->f [x] [y] = DWARFPINES0 + density; else if (l->h [x] [y] > treeh2) l->f [x] [y] = DECIDUOUSWOODS0 + density; else if (l->h [x] [y] > treeh1) l->f [x] [y] = MIXEDWOODS0 + density; else l->f [x] [y] = CONIFEROUSWOODS0 + density; } } l->precalculate (); } ::clouds = clouds; ::weather = weather; camera = 0; for (i = 1; i < numobjects; i ++) { int nextidle = obj [i - 1].idle; if (obj [i].idle == 0) obj [i].idle = nextidle; } fplayer = fighter [0]; if (numobjects > 0) { playerInit (); if (obj [0].idle == 100) { l->searchPlain (-1, -1, &relx, &rely); } else if (obj [0].idle > 100 && obj [0].idle <= 116) { int addr = obj [0].idle - 101; l->searchPlain (addr % 4, addr / 4, &relx, &rely); } fplayer->tl->x = obj [0].tl->x + relx; fplayer->tl->z = obj [0].tl->z + rely; } int alliedz = 0; for (i = 1; i < numobjects; i ++) { // fighter [i]->o = getModel (obj [i].id); if (obj [i].id < FIGHTER1) obj [i].id = FIGHTER_FALCON; if (obj [i].id >= FIGHTER1 && obj [i].id <= FIGHTER_PILOTED2 && fplayer->party == obj [i].party) { alliedInit (obj [i].id, alliedpilot [alliedz], fighter [i]); if (alliedz < maxpilots - 1) alliedz ++; } else { fighter [i]->newinit (obj [i].id, obj [i].party, obj [i].intelligence); } if (!obj [i].explode) { if (fighter [i]->party != fplayer->party) obj [i].explode = 1; else obj [i].explode = -1; } if (obj [i].idle == 1) { relx = (int) fighter [i - 1]->tl->x; rely = (int) fighter [i - 1]->tl->y; } else if (obj [i].idle == 2) { relx = (int) fighter [0]->tl->x; rely = (int) fighter [0]->tl->y; } else if (obj [i].idle == 100) { l->searchPlain (-1, -1, &relx, &rely); } else if (obj [i].idle > 100 && obj [i].idle <= 116) { int addr = obj [i].idle - 101; l->searchPlain (addr % 4, addr / 4, &relx, &rely); } fighter [i]->tl->x = obj [i].tl->x + relx; fighter [i]->tl->z = obj [i].tl->z + rely; if (obj [i].ttl > 0) { fighter [i]->deactivate (); } } } int MissionCustom::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; for (i = 1; i < numobjects; i ++) { if (obj [i].ttl > 0 && timer > obj [i].ttl) { obj [i].ttl = -1; fighter [i]->activate (); if (obj [i].idle == 1) { fighter [i]->tl->x = obj [i].tl->x + fighter [i - 1]->tl->x; fighter [i]->tl->z = obj [i].tl->z + fighter [i - 1]->tl->z; } else if (obj [i].idle == 2) { fighter [i]->tl->x = obj [i].tl->x + fighter [0]->tl->x; fighter [i]->tl->z = obj [i].tl->z + fighter [0]->tl->z; } } } if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 1; i < numobjects; i ++) { if (!fighter [i]->active && fighter [i]->explode >= 35 * timestep && fighter [i]->party == fplayer->party && obj [i].explode == 1) { return 2; } } for (i = 1; i < numobjects; i ++) { if (fighter [i]->active) if (fighter [i]->party != fplayer->party && fighter [i]->explode < 35 * timestep && obj [i].explode == 1) b = true; } if (b) return 0; return 1; } void MissionCustom::draw () { int i; if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } for (i = 0; i < numtext; i ++) { if (textstart [i] <= timer && textstart [i] + textdelay [i] >= timer) font1->drawTextCentered (0, 7, -3, text [i], &textcolor); } } #endif gl-117-1.3.2/src/maploader.h0000644000175000017500000000445410145416156014607 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file contains a map loader. */ #ifndef IS_MAPLOADER_H #define IS_MAPLOADER_H #include "aiobject.h" // ok #include "mission.h" // ok #define MAXMAPS 100 #define TOKENLEN 1024 class MapLoader { public: int mapcount; int mapptr; char mapfile [MAXMAPS] [TOKENLEN]; void readMapFile (); MapLoader (); void toUpper (char *str); int getMapNumber (); char *getNextMap (); Mission *getMission (); }; extern MapLoader *maploader; const int maxtext = 30; class MissionCustom : public Mission { public: int reterror; char token [TOKENLEN]; int map_type; int save_map_type; int weather, clouds; AIObj obj [maxfighter]; int numobjects; int relx, rely; char text [maxtext] [TOKENLEN]; int textstart [maxtext], textdelay [maxtext]; int numtext; char mapfile [TOKENLEN]; float scaleheight; int tree [3]; int minh; MissionCustom (); void error (char *msg); int readAttribute (char *attribute, char *value, char *casevalue); void toUpper (char *str); int isInteger (char *str); int isDouble (char *str); double toDouble (char *str); int isGlobal (char *token); int synchronize (); int parseMapData (); int parseObjectData (); int parseTextData (); int parseRelCoords (); int parseInfoData (); void getLakeMin (short x, short y); void setLakeMin (short x, short y); void init (); void start (); int processtimer (Uint32 dt); void draw (); }; #endif gl-117-1.3.2/src/mathtab.cpp0000644000175000017500000000672710145416156014623 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a collection of functions and precalculated tabless. */ #ifndef IS_MATHTAB_H #include #include #include "mathtab.h" #include "common.h" float PI; float sine [360]; float cosi [360]; int randommaster [64] [64]; int randptr = 0; float smokezoom [MAXSMOKEELEM]; void mathtab_init () { int i, i2; PI = (float) (atan (1.0) * 4.0); for (i = 0; i < 360; i ++) { sine [i] = (float) sin ((float) i / 180.0 * PI); cosi [i] = (float) cos ((float) i / 180.0 * PI); } for (i = 0; i < 63; i ++) for (i2 = 0; i2 < 63; i2 ++) randommaster [i] [i2] = (i * i2 * 2000) % 32678; for (i = 0; i < MAXSMOKEELEM; i ++) smokezoom [i] = (2.0 - 1.8 * i / MAXSMOKEELEM) * 0.15; /* float smokezoom[] = { 2.0, 0.198, 0.195, 0.193, 0.19, 0.188, 0.185, 0.182, 0.18, 0.177, 0.174, 0.171, 0.168, 0.165, 0.162, 0.159, 0.156, 0.153, 0.15, 0.149, 0.146, 0.143, 0.14, 0.136, 0.132, 0.128, 0.124, 0.12, 0.115, 0.11, 0.105, 0.1, 0.09, 0.08, 0.07, 0.06, 0.05, 0.04, 0.03, 0.015 };*/ } // return random number int myrandom (int n) { if (n == 0) return 0; if (!multiplayer) { return rand () % n; } randptr ++; if (randptr >= 64) randptr = 0; return randommaster [randptr] [randptr] % n; } // return random number, but prefer extremely high and low values int extremerandom (int n) { if (n == 0) return 0; int ret; if (!multiplayer) { ret = rand () % n; } else { randptr ++; if (randptr >= 64) randptr = 0; ret = randommaster [randptr] [randptr] % n; } if ((ret % 5) <= 4) { if (ret > n/2 && ret < 3*n/4) return ret + n/4; else if (ret < n/2 && ret > n/4) return ret - n/4; } return ret; } int myrandom (int n, int x, int y) { if (n == 0) return 0; int ret; if (!multiplayer) { ret = rand () % n; } else { ret = (randommaster [x%63] [y%63] ^ (31*x) ^ (71*y)) % n; } if ((ret % 5) <= 4) { if (ret > n/2 && ret < 3*n/4) return ret + n/4; else if (ret < n/2 && ret > n/4) return ret - n/4; } return ret; } int extremerandom (int n, int x, int y) { if (n == 0) return 0; int ret; if (!multiplayer) { ret = rand () % n; } else { ret = (randommaster [x%63] [y%63] ^ (31*x) ^ (71*y)) % n; } if ((ret % 5) <= 4) { if (ret > n/2 && ret < 3*n/4) return ret + n/4; else if (ret < n/2 && ret > n/4) return ret - n/4; } return ret; } float dist (float dx, float dy) { return (float) sqrt (dx*dx + dy*dy); } #endif gl-117-1.3.2/src/mathtab.h0000644000175000017500000000316210145416156014256 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a collection of functions and precalculated tables. */ #ifndef IS_MATHTAB_H #define IS_MATHTAB_H extern float sine[], cosi[]; // sine and cosine tables (only use for approximations) extern float PI; extern void mathtab_init (); // calculate tables extern int myrandom (int n); // random integer number [0;n-1] extern int extremerandom (int n); // random integer number [0;n-1], prefer extremely low/high values extern int myrandom (int n, int x, int y); // random integer number [0;n-1] extern int extremerandom (int n, int x, int y); // random integer number [0;n-1], prefer extremely low/high values extern float dist (float dx, float dy); // distance (Euklidean norm, 2D vector) extern int randptr; #define MAXSMOKEELEM 40 extern float smokezoom [MAXSMOKEELEM]; #endif gl-117-1.3.2/src/menu.cpp0000644000175000017500000003572210145416156014144 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a very general GUI. */ #ifndef IS_MENU_H #include "menu.h" #include "main.h" int menu_id = 0; int menu_z = -2; CColor menu_colwhite (255, 255, 255, 200); CColor menu_colgrey (220, 220, 220, 200); CColor menu_colyellow (255, 255, 0, 200); Component::Component () { menu_id ++; id = menu_id; func = NULL; highlight = false; active = true; visible = true; parent = NULL; colback [0] = 0; colback [1] = 0; colback [2] = 255; colback [3] = 120; } void Component::setBounds (float x, float y, float w, float h) { this->x = x; this->y = y; this->w = w; this->h = h; } void Component::draw () { } void Component::setFunction (void (*func) (Component *, int button)) { this->func = func; } void Component::execFunction (int button) { if (func) func (this, button); } void Component::eventMouse (int x, int y, int button) { } void Component::eventKey (unsigned char key) { } void Component::eventJoystick (int button) { } void Component::eventSpecial (int key) { } void Component::triggerMouse (int id, int button) { } void Component::setActive (bool value) { active = value; } void Component::setVisible (bool value) { visible = value; } void Component::setHighlight (bool value) { highlight = value; } bool Component::isActive () { return active; } bool Component::isVisible () { return visible; } bool Component::isHighlight () { return highlight; } bool Component::contains (int id) { if (id == this->id) return true; return false; } Container::Container () { numcomponents = 0; } void Container::add (Component *component) { component->parent = this; components [numcomponents] = component; numcomponents ++; } void Container::draw () { int i; if (active && visible) { for (i = 0; i < numcomponents; i ++) { components [i]->draw (); } } } int Container::getNumberOfComponents () { return numcomponents; } void Container::eventMouse (int x, int y, int button) { int i, i2; // glutSwapBuffers (); GLuint selectBuff [20 * 4]; GLint hits, viewport [4]; // Select buffer parameters glSelectBuffer (20 * 4, selectBuff); glGetIntegerv (GL_VIEWPORT, viewport); // Enter to selection mode glEnable (GL_DEPTH_TEST); glDisable (GL_LIGHTING); glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); // Set-up pick matrix gluPickMatrix (x, viewport [3] - y, 1, 1, viewport); // Set our perpective transformation matrix gluPerspective (80.0, 1.0, 0.25 * GLOBALSCALE, view * GLOBALSCALE); // gluPerspective (60.0, 1.0, 0.2, 200.0); glMatrixMode (GL_MODELVIEW); // Render all scene and fill selection buffer glRenderMode (GL_SELECT); glInitNames (); glPushName (0); draw (); // Get hits and go back to normal rendering hits = glRenderMode (GL_RENDER); // Get first model in selection buffer stack GLuint *ptr = selectBuff; int mypicks = 0; int pick [100]; if (hits > 0) { int i; for (i = 0; i < hits; i ++) { int names = *ptr; ptr ++; ptr ++; ptr ++; pick [mypicks] = *ptr; mypicks ++; ptr += names; if (mypicks >= 20) break; } } glMatrixMode (GL_PROJECTION); glPopMatrix (); glMatrixMode (GL_MODELVIEW); for (i = 0; i < numcomponents; i ++) { components [i]->setHighlight (false); for (i2 = 0; i2 < hits; i2 ++) { if (components [i]->contains (pick [i2])) { components [i]->triggerMouse (pick [i2], button); } } } } void Container::triggerMouse (int id, int button) { int i; for (i = 0; i < numcomponents; i ++) if (components [i]->contains (id)) { components [i]->triggerMouse (id, button); } } void Container::setVisible (bool value) { int i; visible = value; for (i = 0; i < numcomponents; i ++) { components [i]->setVisible (value); } } void Container::setActive (bool value) { int i; active = value; for (i = 0; i < numcomponents; i ++) { components [i]->setActive (value); } } void Container::setHighlight (bool value) { int i; highlight = value; for (i = 0; i < numcomponents; i ++) { components [i]->setHighlight (value); } } bool Container::contains (int id) { int i; bool ret = false; for (i = 0; i < numcomponents; i ++) { ret |= components [i]->contains (id); } return ret; } void Container::eventKey (unsigned char key) { int i; for (i = 0; i < numcomponents; i ++) { components [i]->eventKey (key); } } void Container::eventSpecial (int key) { int i; for (i = 0; i < numcomponents; i ++) { components [i]->eventSpecial (key); } } void Container::eventJoystick (int button) { int i; for (i = 0; i < numcomponents; i ++) { components [i]->eventJoystick (button); } } Label::Label () { } Label::Label (char *text) { strcpy (this->text, text); transparent = false; colback [0] = 140; colback [1] = 140; colback [2] = 140; colback [3] = 180; } void Label::setText (char *text) { strcpy (this->text, text); } void Label::setTransparent (bool transparent) { this->transparent = transparent; } void Label::draw () { if (!visible) return; CColor *col = &menu_colwhite; if (!transparent) { glLoadName (id); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); glColor4ub (colback [0], colback [1], colback [2], colback [3]); glVertex3f (0.1 * x, 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * (y - h), menu_z); glVertex3f (0.1 * x, 0.1 * (y - h), menu_z); glEnd (); glDisable (GL_BLEND); } font1->zoom = 0.1 * (h - 0.1); float yf = (y - h - 0.01) / (h - 0.1); float xf = (x + 0.25) / (h - 0.1); font1->drawText (xf, yf, menu_z, text, col); font1->zoom = 0.1; } void Label::triggerMouse (int id, int button) { } Button::Button () { } Button::Button (char *text) { strcpy (this->text, text); } void Button::draw () { if (!visible) return; CColor *col_active = &menu_colwhite; CColor *col_deactive = &menu_colgrey; CColor *col_highlight = &menu_colyellow; glLoadName (id); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); if (!highlight) glColor4ub (colback [0], colback [1], colback [2], colback [3]); else glColor4ub (255, 255, 0, colback [3]); glVertex3f (0.1 * x, 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * (y - h), menu_z); glVertex3f (0.1 * x, 0.1 * (y - h), menu_z); glEnd (); glDisable (GL_BLEND); font1->zoom = 0.1 * (h - 0.1); float yf = (y - h - 0.01) / (h - 0.1); float xf = (x + 0.25) / (h - 0.1); if (active && !highlight) font1->drawText (xf, yf, menu_z, text, col_active); else if (!active) font1->drawText (xf, yf, menu_z, text, col_deactive); else font1->drawText (xf, yf, menu_z, text, col_highlight); font1->zoom = 0.1; } void Button::triggerMouse (int id, int button) { if (!active) return; highlight = true; if (button) execFunction (button); } TextField::TextField () { } TextField::TextField (char *text, float fontheight) { strcpy (this->text, text); fonth = fontheight; colback [0] = 140; colback [1] = 140; colback [2] = 140; colback [3] = 180; } void TextField::setText (char *text) { strcpy (this->text, text); } void TextField::draw () { if (!visible) return; CColor *col = &menu_colwhite; glLoadName (id); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); glColor4ub (colback [0], colback [1], colback [2], colback [3]); glVertex3f (0.1 * x, 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * (y - h), menu_z); glVertex3f (0.1 * x, 0.1 * (y - h), menu_z); glEnd (); glDisable (GL_BLEND); font1->zoom = 0.1 * (fonth - 0.1); float yf = (y - fonth - 0.1) / (fonth - 0.1); float xf = (x + 0.25) / (fonth - 0.1); font1->drawText (xf, yf, menu_z, text, col); font1->zoom = 0.1; } void TextField::triggerMouse (int id, int button) { } EditKey::EditKey () { key = 'A'; } EditKey::EditKey (char *text) { key = 'A'; strcpy (this->text, text); } void EditKey::setText (char *text) { strcpy (this->text, text); } void EditKey::setKey (int key) { if (key >= 256) { this->special = key - 256; specialActive = true; } else { this->key = key; specialActive = false; } } int EditKey::getKey () { if (specialActive) return special + 256; else return key; } void EditKey::draw () { if (!visible) return; char buf [64]; CColor *col = &menu_colwhite; glLoadName (id); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); if (!highlight) glColor4ub (colback [0], colback [1], colback [2], colback [3]); else glColor4ub (255, 255, 0, colback [3]); glVertex3f (0.1 * x, 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * (y - h), menu_z); glVertex3f (0.1 * x, 0.1 * (y - h), menu_z); glEnd (); glDisable (GL_BLEND); font1->zoom = 0.1 * (h - 0.1); float yf = (y - h - 0.01) / (h - 0.1); float xf = (x + 0.25) / (h - 0.1); font1->drawText (xf, yf, menu_z, text, col); if (specialActive) key2string (special + 256, buf); else key2string (key, buf); font1->drawText (xf + (w - 2) / h, yf, menu_z, buf, col); font1->zoom = 0.1; } void EditKey::triggerMouse (int id, int button) { if (!active) return; highlight = true; } void EditKey::eventKey (unsigned char key) { char buf [256]; if (!active) return; if (highlight) { key2string (key, buf); if (buf [0] != '\0') { this->key = (int) key; specialActive = false; execFunction (key); } } } void EditKey::eventSpecial (int key) { char buf [256]; if (!active) return; if (highlight) { key2string (key + 256, buf); if (buf [0] != '\0') { this->special = key; specialActive = true; execFunction (special + 256); } } } EditJoystick::EditJoystick () { button = 0; } EditJoystick::EditJoystick (char *text) { button = 0; strcpy (this->text, text); } void EditJoystick::setText (char *text) { strcpy (this->text, text); } void EditJoystick::setButton (int button) { this->button = button; } int EditJoystick::getButton () { return button; } void EditJoystick::draw () { if (!visible) return; char buf [64]; CColor *col = &menu_colwhite; glLoadName (id); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); if (!highlight) glColor4ub (colback [0], colback [1], colback [2], colback [3]); else glColor4ub (255, 255, 0, colback [3]); glVertex3f (0.1 * x, 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * (y - h), menu_z); glVertex3f (0.1 * x, 0.1 * (y - h), menu_z); glEnd (); glDisable (GL_BLEND); font1->zoom = 0.1 * (h - 0.1); float yf = (y - h - 0.01) / (h - 0.1); float xf = (x + 0.25) / (h - 0.1); font1->drawText (xf, yf, menu_z, text, col); joystick2string (button, buf); font1->drawText (xf + (w - 2) / h, yf, menu_z, buf, col); font1->zoom = 0.1; } void EditJoystick::triggerMouse (int id, int button) { if (!active) return; highlight = true; } void EditJoystick::eventJoystick (int button) { char buf [256]; if (!active) return; if (highlight) { joystick2string (button, buf); if (buf [0] != '\0') { this->button = (int) button; execFunction (button); } } } EditField::EditField () { memset (text, 0, 64); ptr = 0; #ifndef USE_GLUT timer = SDL_GetTicks (); #else timer = glutGet (GLUT_ELAPSED_TIME); #endif } EditField::EditField (int maxlen) { memset (this->text, 0, 64); ptr = 0; if (maxlen > 62) maxlen = 62; else if (maxlen < 0) maxlen = 0; this->maxlen = maxlen; #ifndef USE_GLUT timer = SDL_GetTicks (); #else timer = glutGet (GLUT_ELAPSED_TIME); #endif } void EditField::setText (char *text) { if (strlen (text) > (unsigned int) maxlen) return; memset (this->text, 0, 64); strcpy (this->text, text); ptr = strlen (this->text); } void EditField::draw () { char str [64]; int akttime; if (!visible) return; CColor *col = &menu_colgrey; strcpy (str, text); if (highlight) { #ifndef USE_GLUT akttime = SDL_GetTicks (); #else akttime = glutGet (GLUT_ELAPSED_TIME); #endif if (((akttime - timer) & 0xff) > 128) { str [ptr] = 'I'; str [ptr + 1] = 0; } } glLoadName (id); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBegin (GL_QUADS); if (!highlight) glColor4ub (colback [0], colback [1], colback [2], colback [3]); else glColor4ub (255, 255, 0, colback [3]); glVertex3f (0.1 * x, 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * y, menu_z); glVertex3f (0.1 * (x + w), 0.1 * (y - h), menu_z); glVertex3f (0.1 * x, 0.1 * (y - h), menu_z); glEnd (); glDisable (GL_BLEND); font1->zoom = 0.1 * (h - 0.1); float yf = (y - h - 0.01) / (h - 0.1); float xf = (x + 0.25) / (h - 0.1); font1->drawText (xf, yf, menu_z, str, col); font1->zoom = 0.1; } void EditField::triggerMouse (int id, int button) { if (!active) return; highlight = true; } void EditField::eventKey (unsigned char key) { if (!highlight) return; if (ptr >= 62) return; if (key >= 32) { text [ptr] = key; ptr ++; text [ptr] = 0; } else if (key == 8 && ptr > 0) { ptr --; text [ptr] = 0; } } #endif gl-117-1.3.2/src/menu.h0000644000175000017500000001055510145416156013606 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a very general GUI. */ #ifndef IS_MENU_H #define IS_MENU_H #include "model.h" // ok extern int menu_id; extern CColor menu_colwhite; extern CColor menu_colgrey; extern CColor menu_colyellow; class Component { public: unsigned char colback [4]; float x, y, w, h; int id; bool highlight; bool active; bool visible; void (*func) (Component *, int button); // button=0...3 for mouse, 0...255 for one byte keys, 256... for special+256 Component *parent; Component (); virtual void setActive (bool value); virtual void setVisible (bool value); virtual void setHighlight (bool value); bool isActive (); bool isVisible (); bool isHighlight (); void setBounds (float x, float y, float w, float h); void setFunction (void (*func) (Component *, int button)); void execFunction (int button); virtual void draw (); virtual void eventMouse (int x, int y, int button); virtual void triggerMouse (int id, int button); virtual bool contains (int id); virtual void eventKey (unsigned char key); virtual void eventSpecial (int key); virtual void eventJoystick (int button); }; class Container : public Component { public: int numcomponents; Component *components [100]; Container (); int getNumberOfComponents (); void add (Component *component); void draw (); void eventMouse (int x, int y, int button); void triggerMouse (int id, int button); void setVisible (bool value); void setActive (bool value); void setHighlight (bool value); bool contains (int id); void eventKey (unsigned char key); void eventSpecial (int key); void eventJoystick (int button); }; class Label : public Component { public: char text [64]; bool transparent; Label (); Label (char *text); void setTransparent (bool transparent); void setText (char *text); void draw (); void triggerMouse (int id, int button); }; class Button : public Component { public: char text [64]; Button (); Button (char *text); void draw (); void triggerMouse (int id, int button); }; class TextField : public Component { public: char text [8192]; float fonth; TextField (); TextField (char *text, float fontheight); void setText (char *text); void draw (); void triggerMouse (int id, int button); }; class EditKey : public Component { public: char text [64]; char key; int special; bool specialActive; // key or special valid? EditKey (); EditKey (char *text); void setText (char *text); void setKey (int key); // please add 0xFF to two byte keys to distinguish from one byte keys int getKey (); // returns special+256 for two byte keys ('+' is special=13, ENTER is key=13) void draw (); void triggerMouse (int id, int button); void eventKey (unsigned char key); void eventSpecial (int key); }; class EditJoystick : public Component { public: char text [64]; int button; EditJoystick (); EditJoystick (char *text); void setText (char *text); void setButton (int key); // button 0..99, hat 100.. int getButton (); // returns button 0..99, hat 100.. void draw (); void triggerMouse (int id, int button); void eventJoystick (int button); }; class EditField : public Component { public: char text [64]; int timer; int ptr; int maxlen; EditField (); EditField (int maxlen); void setText (char *text); void draw (); void triggerMouse (int id, int button); void eventKey (unsigned char key); }; #endif gl-117-1.3.2/src/mission.cpp0000644000175000017500000037275410145416156014672 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file contains all mission data and definitions. */ #ifndef IS_MISSION_H #include #include #include "mission.h" #include "common.h" #include "main.h" #include "mathtab.h" #include "conf.h" #include "glland.h" void Mission::autoLFBriefing () { int i, z = 0; for (i = 0; i < (int) strlen (briefing); i ++) { z ++; if (z > 50 && briefing [i] == ' ') { briefing [i] = '\n'; z = 0; } } } Mission::Mission () { int i; timer = 0; for (i = 0; i < 3; i ++) selfighter [i] = 0; selfighter [0] = FIGHTER_FALCON; selfighter [1] = FIGHTER_HAWK; selfighter [2] = FIGHTER_STORM; selfighters = 3; wantfighter = 0; selweapons = 3; selweapon [0] = MISSILE_AIR1; selweapon [1] = MISSILE_GROUND1; selweapon [2] = MISSILE_DF1; wantweapon = 0; textcolor.setColor (255, 255, 0, 180); clouds = 0; heading = 180; state = 0; } void Mission::playerInit () { int i; fplayer = fighter [0]; if (controls != 100) fplayer->easymodel = 2; fplayer->target = NULL; fplayer->newinit (selfighter [wantfighter], 1, 0); if (selfighter [wantfighter] == FIGHTER_FALCON) fplayer->o = &model_fig; else if (selfighter [wantfighter] == FIGHTER_HAWK) fplayer->o = &model_figb; else if (selfighter [wantfighter] == FIGHTER_HAWK2) fplayer->o = &model_figc; else if (selfighter [wantfighter] == FIGHTER_PHOENIX) fplayer->o = &model_figf; else if (selfighter [wantfighter] == FIGHTER_REDARROW) fplayer->o = &model_figg; else if (selfighter [wantfighter] == FIGHTER_BLACKBIRD) fplayer->o = &model_figh; else if (selfighter [wantfighter] == FIGHTER_STORM) fplayer->o = &model_figi; fplayer->ai = false; for (i = 0; i < missiletypes; i ++) fplayer->missiles [i] = 0; for (i = 0; i < missileracks; i ++) fplayer->missilerack [i] = -1; if (selweapon [wantweapon] == MISSILE_AIR1) { if (selfighter [wantfighter] == FIGHTER_FALCON) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 2; fplayer->missilerackn [2] = 2; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 6; fplayer->missilerack [1] = 0; fplayer->missilerack [2] = 0; fplayer->missilerack [3] = 6; } if (selfighter [wantfighter] == FIGHTER_HAWK) { fplayer->missilerackn [0] = 2; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 2; fplayer->missilerack [0] = 6; fplayer->missilerack [1] = 0; fplayer->missilerack [2] = 0; fplayer->missilerack [3] = 6; } if (selfighter [wantfighter] == FIGHTER_STORM) { fplayer->missilerackn [0] = 3; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 3; fplayer->missilerack [0] = 0; fplayer->missilerack [1] = 6; fplayer->missilerack [2] = 6; fplayer->missilerack [3] = 0; } if (selfighter [wantfighter] == FIGHTER_HAWK2) { fplayer->missilerackn [0] = 2; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 2; fplayer->missilerack [0] = 1; fplayer->missilerack [1] = 6; fplayer->missilerack [2] = 6; fplayer->missilerack [3] = 1; } if (selfighter [wantfighter] == FIGHTER_PHOENIX) { fplayer->missilerackn [0] = 3; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 3; fplayer->missilerack [0] = 2; fplayer->missilerack [1] = 7; fplayer->missilerack [2] = 7; fplayer->missilerack [3] = 2; } if (selfighter [wantfighter] == FIGHTER_REDARROW) { fplayer->missilerackn [0] = 2; fplayer->missilerackn [1] = 2; fplayer->missilerackn [2] = 2; fplayer->missilerackn [3] = 2; fplayer->missilerack [0] = 7; fplayer->missilerack [1] = 1; fplayer->missilerack [2] = 1; fplayer->missilerack [3] = 7; } } if (selweapon [wantweapon] == MISSILE_GROUND1) { if (selfighter [wantfighter] == FIGHTER_FALCON) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 2; fplayer->missilerackn [2] = 2; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 0; fplayer->missilerack [1] = 3; fplayer->missilerack [2] = 3; fplayer->missilerack [3] = 0; } if (selfighter [wantfighter] == FIGHTER_HAWK) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 6; fplayer->missilerack [1] = 3; fplayer->missilerack [2] = 3; fplayer->missilerack [3] = 6; } if (selfighter [wantfighter] == FIGHTER_STORM) { fplayer->missilerackn [0] = 2; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 2; fplayer->missilerack [0] = 3; fplayer->missilerack [1] = 3; fplayer->missilerack [2] = 3; fplayer->missilerack [3] = 3; } if (selfighter [wantfighter] == FIGHTER_HAWK2) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 6; fplayer->missilerack [1] = 4; fplayer->missilerack [2] = 4; fplayer->missilerack [3] = 6; } if (selfighter [wantfighter] == FIGHTER_PHOENIX) { fplayer->missilerackn [0] = 3; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 3; fplayer->missilerack [0] = 4; fplayer->missilerack [1] = 4; fplayer->missilerack [2] = 4; fplayer->missilerack [3] = 4; } if (selfighter [wantfighter] == FIGHTER_REDARROW) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 1; fplayer->missilerack [1] = 4; fplayer->missilerack [2] = 4; fplayer->missilerack [3] = 1; } } if (selweapon [wantweapon] == MISSILE_DF1) { if (selfighter [wantfighter] == FIGHTER_FALCON) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 1; fplayer->missilerackn [2] = 1; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 0; fplayer->missilerack [1] = 5; fplayer->missilerack [2] = 5; fplayer->missilerack [3] = 0; } if (selfighter [wantfighter] == FIGHTER_HAWK) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 2; fplayer->missilerackn [2] = 2; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 0; fplayer->missilerack [1] = 5; fplayer->missilerack [2] = 5; fplayer->missilerack [3] = 0; } if (selfighter [wantfighter] == FIGHTER_STORM) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 3; fplayer->missilerack [1] = 5; fplayer->missilerack [2] = 5; fplayer->missilerack [3] = 3; } if (selfighter [wantfighter] == FIGHTER_HAWK2) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 2; fplayer->missilerackn [2] = 2; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 1; fplayer->missilerack [1] = 5; fplayer->missilerack [2] = 5; fplayer->missilerack [3] = 1; } if (selfighter [wantfighter] == FIGHTER_PHOENIX) { fplayer->missilerackn [0] = 2; fplayer->missilerackn [1] = 3; fplayer->missilerackn [2] = 3; fplayer->missilerackn [3] = 2; fplayer->missilerack [0] = 4; fplayer->missilerack [1] = 5; fplayer->missilerack [2] = 5; fplayer->missilerack [3] = 4; } if (selfighter [wantfighter] == FIGHTER_REDARROW) { fplayer->missilerackn [0] = 1; fplayer->missilerackn [1] = 1; fplayer->missilerackn [2] = 1; fplayer->missilerackn [3] = 1; fplayer->missilerack [0] = 1; fplayer->missilerack [1] = 5; fplayer->missilerack [2] = 5; fplayer->missilerack [3] = 1; } } fplayer->missileCount (); } void Mission::alliedInit (int fighterid, int pilotid, AIObj *aiobj) { Pilot *p = pilots->pilot [pilots->aktpilot]; aiobj->easymodel = 1; aiobj->target = NULL; int intelligence = p->tp [pilotid]->intelligence; int precision = p->tp [pilotid]->precision; int aggressivity = p->tp [pilotid]->aggressivity; aiobj->newinit (fighterid, 1, intelligence, precision, aggressivity); if (fighterid == FIGHTER_FALCON) aiobj->o = &model_fig; else if (fighterid == FIGHTER_HAWK) aiobj->o = &model_figb; else if (fighterid == FIGHTER_HAWK2) aiobj->o = &model_figc; else if (fighterid == FIGHTER_PHOENIX) aiobj->o = &model_figf; else if (fighterid == FIGHTER_REDARROW) aiobj->o = &model_figg; else if (fighterid == FIGHTER_STORM) aiobj->o = &model_figi; aiobj->ai = true; } void Mission::init () { } void Mission::start () { } int Mission::processtimer (Uint32 dt) { return 0; } void Mission::draw () { } // invert y values of all fighters for this mission, only possible if no static buildings are placed on flat ground // missions were designed to fly towards the sun but since v1.0 the rendering coords have been mapped to the OpenGL coords // therefore a bug was introduced in v1.0 showing the sun from the wrong side // however this function should let the player fly into the sun in a couple of missions void Mission::invertZ () { int i; for (i = 0; i < maxfighter; i ++) { fighter [i]->tl->z = -fighter [i]->tl->z; fighter [i]->phi += 180; } } void Mission::checkScore (int missionstate, int timebonus, int fighterkills, int shipkills, int tankkills, int otherkills, int shieldbonus, int points) { Pilot *p = pilots->pilot [pilots->aktpilot]; int i, i2; int oldscore = p->mission_score [id]; // getScore (p->mission_state [id], p->mission_time [id], p->mission_fighterkills [id], p->mission_shipkills [id], p->mission_tankkills [id], p->mission_otherkills [id], p->mission_shield [id], p->mission_points [id]); int newscore = getScore (missionstate, timebonus, fighterkills, shipkills, tankkills, otherkills, shieldbonus, points); if (newscore > oldscore) { if (missionstate != p->mission_state [id]) { for (i = 0; i < 10; i ++) { bool b = false; for (i2 = 0; i2 < alliedfighters - 1; i2 ++) { if (i == alliedpilot [i2]) { b = true; break; } } if (b) { p->tp [i]->fighterkills += fighter [i + 1]->fighterkills; } else { if (id >= MISSION_CAMPAIGN1 && id <= MISSION_CAMPAIGN2) p->tp [i]->flyMission (myrandom (4)); } } } p->mission_state [id] = missionstate; p->mission_time [id] = timebonus; p->mission_fighterkills [id] = fighterkills; p->mission_shipkills [id] = shipkills; p->mission_tankkills [id] = tankkills; p->mission_otherkills [id] = otherkills; p->mission_shield [id] = shieldbonus; p->mission_points [id] = points; p->mission_score [id] = newscore; p->save (); } } int Mission::getScore (int missionstate, int timebonus, int fighterkills, int shipkills, int tankkills, int otherkills, int shieldbonus, int points) { if (points > 2000) points = 2000; int score = timebonus + shieldbonus + fighterkills * 20 + shipkills * 12 + tankkills * 10 + otherkills * 5/* + points / 20*/; if (difficulty == 0) score -= 25; else if (difficulty == 1) score += 25; else if (difficulty == 2) score += 75; if (!fplayer->realism) score -= 25; else score += 25; if (missionstate == 2) // if failed { score = 0; } return score; } int Mission::getScore (int missionstate) { int shieldbonus = (int) (fplayer->shield * 100 / fplayer->maxshield); int timebonus = 0; if (timer < maxtime) timebonus = (maxtime - timer) * 100 / maxtime; checkScore (missionstate, timebonus, fplayer->fighterkills, fplayer->shipkills, fplayer->tankkills, fplayer->otherkills, shieldbonus, fplayer->points); return getScore (missionstate, timebonus, fplayer->fighterkills, fplayer->shipkills, fplayer->tankkills, fplayer->otherkills, shieldbonus, fplayer->points); } MissionDemo1::MissionDemo1 () { id = MISSION_DEMO; strcpy (name, "DEMO"); alliedfighters = 2; } void MissionDemo1::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 5; sungamma = 45; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); fplayer = fighter [0]; fighter [0]->tl->x = 220; fighter [0]->tl->z = -30; fighter [0]->o = &model_fig; fighter [0]->target = fighter [2]; fighter [0]->newinit (FIGHTER_FALCON, 1, 0); fighter [1]->target = fighter [3]; fighter [1]->o = &model_fig; fighter [1]->tl->x = 49; fighter [1]->tl->z = -30; fighter [1]->newinit (FIGHTER_FALCON, 1, 0); fighter [1]->aggressivity = 300; for (i = 2; i <= 8; i ++) { fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_figa; fighter [i]->newinit (FIGHTER_SWALLOW, 0, 400 - i * 20); } } int MissionDemo1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 8; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionDemo1::draw () { } MissionTutorial1::MissionTutorial1 () { id = MISSION_TUTORIAL; strcpy (name, "TUTORIAL: PILOTING"); alliedfighters = 1; strcpy (briefing, "WELCOME TO THE FIRST TUTORIAL! BEFORE FLYING ANY MISSION YOU SHOULD PLAY THIS TUTORIAL. LEARN TO HANDLE YOUR FIGHTER AND THE BASIC CONTROLS LIKE TARGETING OR FIRING A MISSILE."); autoLFBriefing (); maxtime = 2500 * timestep; heading = 210; } void MissionTutorial1::start () { day = 1; clouds = 2; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_LOW_ALPINE, NULL); playerInit (); fplayer->tl->x = 220; fplayer->tl->z = -30; } int MissionTutorial1::processtimer (Uint32 dt) { timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) return 2; if (!fighter [1]->active && !fighter [2]->active && state == 1) return 1; return 0; } void MissionTutorial1::draw () { char buf [250], buf2 [10]; int timeroff = 100 * timestep, timerdelay = 300 * timestep, timerlag = 20 * timestep; if (timer >= 0 && timer <= timeroff - 20) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } else if (timer > timeroff && timer <= timeroff + timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "LEAVE THE JOYSTICK CENTERED.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "THE FIGHTER SHOULD FLY STRAIGHT ON.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "IF NOT, RECALIBRATE YOUR JOYSTICK", &textcolor); } else if (controls == CONTROLS_MOUSE) { font1->drawTextCentered (0, 7, -2.5, "THE MENU OPTIONS/CONTROLS LETS YOU", &textcolor); font1->drawTextCentered (0, 6, -2.5, "DETERMINE THE INPUT DEVICE.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "CURRENTLY, THIS IS THE MOUSE", &textcolor); } else if (controls == CONTROLS_KEYBOARD) { font1->drawTextCentered (0, 7, -2.5, "THE MENU OPTIONS/CONTROLS LETS YOU", &textcolor); font1->drawTextCentered (0, 6, -2.5, "DETERMINE THE INPUT DEVICE.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "CURRENTLY, THIS IS THE KEYBOARD", &textcolor); } } else if (timer > timeroff + timerdelay && timer <= timeroff + 2 * timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "MOVING THE JOYSTICK LEFT OR RIGHT", &textcolor); font1->drawTextCentered (0, 6, -2.5, "WILL AFFECT THE AILERON.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "THUS YOU WILL ONLY ROLL", &textcolor); } else if (controls == CONTROLS_MOUSE) { if (!mouse_reverse && !mouse_relative) { font1->drawTextCentered (0, 7, -2.5, "THE MOUSE INTERFACE IS VERY EASY.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "ALWAYS POINT TO WHERE YOU WANT TO FLY.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "YOU'LL HAVE TO MOVE THE MOUSE PERMANENTLY", &textcolor); } else if (mouse_reverse && !mouse_relative) { font1->drawTextCentered (0, 7, -2.5, "THE REVERTED MOUSE IS FOR REAL GAMERS ONLY.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "THE STANDARD MOUSE INTERFACE MAY BE", &textcolor); font1->drawTextCentered (0, 5, -2.5, "EASIER TO LEARN", &textcolor); } else { font1->drawTextCentered (0, 7, -2.5, "MOUSE RELATIVE IS A LOT OF WORK.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "ONLY THE RELATIVE MOUSE COORDINATES (MOVING)", &textcolor); font1->drawTextCentered (0, 5, -2.5, "WILL HAVE AN EFFECT", &textcolor); } } else if (controls == CONTROLS_KEYBOARD) { font1->drawTextCentered (0, 7, -2.5, "THE KEYBOARD INTERFACE IS NOT THAT EASY.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "USING THE MOUSE IS STRONLY RECOMMENDED", &textcolor); } } else if (timer > timeroff + 2 * timerdelay && timer <= timeroff + 3 * timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "MOVING UP OR DOWN WILL AFFECT", &textcolor); font1->drawTextCentered (0, 6, -2.5, "THE ELEVATOR.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "YOU'LL START TO FLY A LOOP", &textcolor); } else if (controls == CONTROLS_MOUSE || controls == CONTROLS_KEYBOARD) { font1->drawTextCentered (0, 7, -2.5, "MOVING RIGHT OR LEFT WILL AFFECT THE AILERON,", &textcolor); font1->drawTextCentered (0, 6, -2.5, "MOVING UP OR DOWN WILL AFFECT THE ELEVATOR.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "THUS YOU CAN FLY ROLLS AND LOOPS", &textcolor); } } else if (timer > timeroff + 3 * timerdelay && timer <= timeroff + 4 * timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "IF YOUR JOYSTICK HAS A SO-CALLED \"RUDDER\",", &textcolor); font1->drawTextCentered (0, 6, -2.5, "YOU MAY ALTER THE FIGHTER'S RUDDER.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "YOU'LL SLIGHTLY FLY TO THE LEFT OR RIGHT", &textcolor); } else if (controls == CONTROLS_MOUSE) { font1->drawTextCentered (0, 7, -2.5, "MOVING THE MOUSE SLIGHTLY LEFT OR RIGHT", &textcolor); font1->drawTextCentered (0, 6, -2.5, "WILL AFFECT THE RUDDER.", &textcolor); } else if (controls == CONTROLS_KEYBOARD) { font1->drawTextCentered (0, 7, -2.5, "TO ALTER THE RUDDER", &textcolor); font1->drawTextCentered (0, 6, -2.5, "USE THE KEYS PGUP AND PGDN", &textcolor); } } else if (timer > timeroff + 4 * timerdelay && timer <= timeroff + 5 * timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "YOUR JOYSTICK HAS ALSO A THROTTLE", &textcolor); font1->drawTextCentered (0, 6, -2.5, "TO SPEEDUP OR DECELERATE.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "THERE IS NO WAY TO ENTIRELY STOP", &textcolor); } else { font1->drawTextCentered (0, 7, -2.5, "USE THE KEYS '1' THROUGH '9' TO ALTER", &textcolor); font1->drawTextCentered (0, 6, -2.5, "YOUR THROTTLE (SPEED).", &textcolor); font1->drawTextCentered (0, 5, -2.5, "THERE IS NO WAY TO ENTIRELY STOP", &textcolor); } } else if (timer > timeroff + 5 * timerdelay && timer <= timeroff + 6 * timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "THE PREDEFINED JOYSTICK BUTTONS:", &textcolor); font1->drawTextCentered (0, 6, -2.5, "FIRE CANNON, DROP CHAFF/FLARE,", &textcolor); font1->drawTextCentered (0, 5, -2.5, "FIRE MISSILE, CHOOSE MISSILE", &textcolor); } else if (controls == CONTROLS_MOUSE) { font1->drawTextCentered (0, 7, -2.5, "LEFT MOUSE BUTTON: FIRE CANNON", &textcolor); font1->drawTextCentered (0, 6, -2.5, "RIGHT MOUSE BUTTON: FIRE MISSILE", &textcolor); font1->drawTextCentered (0, 5, -2.5, "BUT YOU SHOULD REALLY PREFER THE KEYBOARD", &textcolor); } else if (controls == CONTROLS_KEYBOARD) { font1->drawTextCentered (0, 6, -2.5, "NOW, LETS HAVE A LOOK AT SOME IMPORTANT KEYS", &textcolor); } } else if (timer > timeroff + 6 * timerdelay && timer <= timeroff + 7 * timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "A SUMMARY OF COMMANDS CAN BE FOUND IN THE MENU.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "\"ESC\" WILL SHOW THE MENU", &textcolor); font1->drawTextCentered (0, 5, -2.5, "AND RETURN BACK TO THE ACTION", &textcolor); } else { key2string (key_firecannon, buf2); sprintf (buf, "%s: FIRE CANNON", buf2); font1->drawTextCentered (0, 7, -2.5, buf, &textcolor); key2string (key_selectmissile, buf2); sprintf (buf, "%s: CHOOSE MISSILE", buf2); font1->drawTextCentered (0, 6, -2.5, buf, &textcolor); key2string (key_firemissile, buf2); sprintf (buf, "%s: FIRE MISSILE", buf2); font1->drawTextCentered (0, 5, -2.5, buf, &textcolor); } } else if (timer > timeroff + 7 * timerdelay && timer <= timeroff + 8 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "LOOK AT THE RADAR ON THE BOTTOM OF YOUR SCREEN.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "THERE ARE ENEMIES REPRESENTED BY A YELLOW POINT (TARGETED)", &textcolor); font1->drawTextCentered (0, 5, -2.5, "AND A RED POINT (NOT TARGETED)", &textcolor); } else if (timer > timeroff + 8 * timerdelay && timer <= timeroff + 9 * timerdelay - timerlag) { if (controls == CONTROLS_JOYSTICK) { font1->drawTextCentered (0, 7, -2.5, "YOU MAY TARGET AN ENEMY USING THE COOLIE HAT,", &textcolor); key2string (key_targetnearest, buf2); sprintf (buf, "OR PRESSING '%s' ON THE KEYBOARD.", buf2); font1->drawTextCentered (0, 6, -2.5, buf, &textcolor); font1->drawTextCentered (0, 5, -2.5, "THEN APPROACH!", &textcolor); } else { font1->drawTextCentered (0, 7, -2.5, "YOU MAY TARGET AN ENEMY PRESSING", &textcolor); key2string (key_targetnearest, buf2); sprintf (buf, "OR PRESSING '%s' ON THE KEYBOARD.", buf2); font1->drawTextCentered (0, 6, -2.5, buf, &textcolor); font1->drawTextCentered (0, 5, -2.5, "THEN APPROACH!", &textcolor); } } else if (timer > timeroff + 9 * timerdelay && timer <= timeroff + 10 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "SHOOT THE TARGETS TO COMPLETE", &textcolor); font1->drawTextCentered (0, 6, -2.5, "THIS TUTORIAL SUCCESSFULLY", &textcolor); } if (timer >= timeroff + 7 * timerdelay - timerlag / 2 && state == 0) { state ++; fighter [1]->activate (); fighter [1]->target = fighter [0]; fighter [1]->o = &model_figt; fighter [1]->newinit (FIGHTER_TRANSPORT, 0, 200); fighter [1]->tl->x = fplayer->tl->x - 30; fighter [1]->tl->z = fplayer->tl->z - 30; fighter [2]->activate (); fighter [2]->target = fighter [0]; fighter [2]->o = &model_figt; fighter [2]->newinit (FIGHTER_TRANSPORT, 0, 200); fighter [2]->tl->x = fplayer->tl->x + 30; fighter [2]->tl->z = fplayer->tl->z + 30; } } MissionTutorial2::MissionTutorial2 () { id = MISSION_TUTORIAL2; strcpy (name, "TUTORIAL: BOMBER"); strcpy (briefing, "THE SECOND TUTORIAL SHOWS YOU HOW TO USE THE WEAPONS OF A BOMBER TO BLOW UP HEAVILY ARMORED TARGETS."); autoLFBriefing (); alliedfighters = 1; maxtime = 5000 * timestep; selfighter [0] = FIGHTER_STORM; selfighters = 1; wantfighter = 0; selweapons = 1; selweapon [0] = MISSILE_DF1; wantweapon = 0; // alliedpilot [0] = PILOT_PRIMETIME; } void MissionTutorial2::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE_EROSION, NULL); int px, py; l->searchPlain (-1, -1, &px, &py); playerInit (); fplayer->tl->x = px; fplayer->tl->z = py + 150; for (i = 1; i <= 2; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_tank1; fighter [i]->tl->x = px + 6 - i * 4; fighter [i]->tl->z = py + 6 - i * 4; fighter [i]->newinit (TANK_GROUND1, 0, 400); fighter [i]->maxthrust = 0; } } int MissionTutorial2::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 2; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionTutorial2::draw () { char buf [250], buf2 [10]; int timeroff = 100 * timestep, timerdelay = 300 * timestep, timerlag = 20 * timestep; if (timer >= 0 && timer <= timeroff - 20) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } else if (timer > timeroff && timer <= timeroff + timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "FIRSTLY, HAVE A LOOK AT YOUR MISSILES:", &textcolor); key2string (key_selectmissile, buf2); sprintf (buf, "PRESS '%s' TO SWITCH BETWEEN", buf2); font1->drawTextCentered (0, 6, -2.5, buf, &textcolor); font1->drawTextCentered (0, 5, -2.5, "AGM (AIR-GROUND-MISSILE) AND DF (DUMB FIRE)", &textcolor); } else if (timer > timerdelay + timeroff && timer <= timeroff + 2 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "LET'S USE THE AGM: AS SOON AS THE TARGET", &textcolor); font1->drawTextCentered (0, 6, -2.5, "IS LOCKED (YELLOW), SHOOT THE AGM AT ANY", &textcolor); font1->drawTextCentered (0, 5, -2.5, "DIRECTION AND WATCH WHERE IT GOES.", &textcolor); } else if (timer > 2 * timerdelay + timeroff && timer <= timeroff + 3 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "THEN TRY A DF MISSILE BUT CAREFUL:", &textcolor); font1->drawTextCentered (0, 6, -2.5, "IT IS QUITE 'DUMB' AND WILL FLY STRAIGHT AHEAD.", &textcolor); } else if (timer > 3 * timerdelay + timeroff && timer <= timeroff + 4 * timerdelay - timerlag) { font1->drawTextCentered (0, 6, -2.5, "HOWEVER, DF MISSILES WILL CAUSE MUCH MORE DAMAGE", &textcolor); } else if (timer > 4 * timerdelay + timeroff && timer <= timeroff + 5 * timerdelay - timerlag) { font1->drawTextCentered (0, 6, -2.5, "NOW, BLOW UP THE TWO TANKS", &textcolor); } } MissionTutorial3::MissionTutorial3 () { id = MISSION_TUTORIAL3; strcpy (name, "TUTORIAL: AERODYNAMICS"); alliedfighters = 1; strcpy (briefing, "THIS TUTORIAL WILL TEACH YOU THE BASICS OF AERODYNAMICS USING THE SIMULATION MODEL FOR PROVIDING MORE REALISTIC PHYSICS THAN THE SIMPLE ACTION MODEL."); autoLFBriefing (); maxtime = 2500 * timestep; heading = 210; } void MissionTutorial3::start () { day = 1; clouds = 2; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_SEA, NULL); playerInit (); fplayer->tl->x = 220; fplayer->tl->z = -30; } int MissionTutorial3::processtimer (Uint32 dt) { timer += dt; fplayer->realism = true; if (!fplayer->active && fplayer->explode >= 35 * timestep) return 2; if (!fighter [1]->active && !fighter [2]->active && state == 1) return 1; return 0; } void MissionTutorial3::draw () { int timeroff = 100 * timestep, timerdelay = 350 * timestep, timerlag = 120 * timestep; if (timer >= 0 && timer <= timeroff - 20) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } else if (timer > timeroff && timer <= timeroff + timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "THE MENU OPTIONS/CONTROLS LETS YOU DEFINE DIFFICULTY", &textcolor); font1->drawTextCentered (0, 6, -2.5, "AND REALISM. CHANGING THESE SETTINGS WILL ONLY HAVE", &textcolor); font1->drawTextCentered (0, 5, -2.5, "EFFECT ON THE NEXT MISSION YOU START", &textcolor); } else if (timer > timeroff + timerdelay && timer <= timeroff + 2 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "APART FROM YOUR CURRENT PHYSICS SETTINGS", &textcolor); font1->drawTextCentered (0, 6, -2.5, "LET'S USE THE SIMULATION MODEL AND DISCUSS", &textcolor); font1->drawTextCentered (0, 5, -2.5, "THE FOUR FORCES THRUST, DRAG, LIFT, AND WEIGHT", &textcolor); } else if (timer > timeroff + 2 * timerdelay && timer <= timeroff + 3 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "THRUST IS FORWARD FORCE CREATED BY THE ENGINES.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "CHANGE THE THRUST TO GAIN OR LOSE SPEED", &textcolor); } else if (timer > timeroff + 3 * timerdelay && timer <= timeroff + 4 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "DRAG IS THE RETARDING FORCE THAT LIMITS THE AIRCRAFT'S", &textcolor); font1->drawTextCentered (0, 6, -2.5, "SPEED. IT IS MAINLY CAUSED BY THE AIRCRAFT'S STRUCTURE", &textcolor); font1->drawTextCentered (0, 5, -2.5, "THAT PROTUDES INTO THE WIND", &textcolor); } else if (timer > timeroff + 4 * timerdelay && timer <= timeroff + 5 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "LIFT IS THE UPWARD FORCE CREATED BY THE AIRFLOW THAT PASSES", &textcolor); font1->drawTextCentered (0, 6, -2.5, "OVER THE WINGS. IN STRAIGHT UNACCELERATED FLIGHT, IT", &textcolor); font1->drawTextCentered (0, 5, -2.5, "COMPENSATES THE WEIGHT AND YOUR FIGHTER WON'T CLIMB OR DIVE", &textcolor); } else if (timer > timeroff + 5 * timerdelay && timer <= timeroff + 6 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "THE LIFT FORCE DEPENDS ON THE SPEED:", &textcolor); font1->drawTextCentered (0, 6, -2.5, "LOW SPEED WILL CAUSE THE AIRPLANE TO DIVE,", &textcolor); font1->drawTextCentered (0, 5, -2.5, "AT HIGH SPEED IT WILL EVEN CLIMB", &textcolor); } else if (timer > timeroff + 6 * timerdelay && timer <= timeroff + 8 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "NOW TRY THIS EFFECT BY FLYING STRAIGHT AHEAD AT 0 DEGREE", &textcolor); font1->drawTextCentered (0, 6, -2.5, "ELEVATION WHILE USING THE LOWEST/HIGHEST THRUST SETTINGS", &textcolor); } else if (timer > timeroff + 8 * timerdelay && timer <= timeroff + 10 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "IF YOU FLY A ROLL, THE LIFT WILL NOT OPPOSE THE THRUST", &textcolor); font1->drawTextCentered (0, 6, -2.5, "AND YOU WILL LOSE HEIGHT. TRY!", &textcolor); } else if (timer > timeroff + 10 * timerdelay && timer <= timeroff + 12 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "IF YOU ROLL TO THE SIDE, THE LIFT WILL TEAR THE AIRCRAFT", &textcolor); font1->drawTextCentered (0, 6, -2.5, "FROM STRAIGHT FLIGHT TO A DIAGONAL DIRECTION WHILE", &textcolor); font1->drawTextCentered (0, 5, -2.5, "LOSING HEIGHT. TRY!", &textcolor); } else if (timer > timeroff + 12 * timerdelay && timer <= timeroff + 13 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "THE OVERALL FORCE IS GAINED BY ADDING THE FOUR FORCES.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "IT IS MEASURED IN 'G' WITH 1G MEANING THE EARTH'S GRAVITY", &textcolor); } else if (timer > timeroff + 13 * timerdelay && timer <= timeroff + 14 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "YOU ARE MOSTLY OPPOSED TO MORE THAN ONLY 1G. BE CAREFUL:", &textcolor); font1->drawTextCentered (0, 6, -2.5, "9G OR MORE MAY LEAD TO A BLACKOUT,", &textcolor); font1->drawTextCentered (0, 5, -2.5, "AT LESS THAN -3G THE BLOOD WILL SHOOT INTO YOUR HEAD", &textcolor); } else if (timer > timeroff + 14 * timerdelay && timer <= timeroff + 15 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "NOW ROLL ON THE BACK AND GET RID OF", &textcolor); font1->drawTextCentered (0, 6, -2.5, "THE TWO TRANSPORTERS AHEAD", &textcolor); } if (timer >= timeroff + 14 * timerdelay - timerlag / 2 && state == 0) { state ++; fighter [1]->activate (); fighter [1]->target = fighter [0]; fighter [1]->o = &model_figt; fighter [1]->newinit (FIGHTER_TRANSPORT, 0, 200); fighter [1]->tl->x = fplayer->tl->x - 30; fighter [1]->tl->z = fplayer->tl->z - 30; fighter [2]->activate (); fighter [2]->target = fighter [0]; fighter [2]->o = &model_figt; fighter [2]->newinit (FIGHTER_TRANSPORT, 0, 200); fighter [2]->tl->x = fplayer->tl->x + 30; fighter [2]->tl->z = fplayer->tl->z + 30; } } MissionDogfight1::MissionDogfight1 () { id = MISSION_DOGFIGHT; strcpy (name, "TUTORIAL: FIGHTER"); strcpy (briefing, "HERE IS THE THIRD TUTORIAL: PRACTICE YOUR DOGFIGHT SKILLS."); autoLFBriefing (); alliedfighters = 1; maxtime = 5000 * timestep; } void MissionDogfight1::start () { int i; day = 1; clouds = 2; weather = WEATHER_SUNNY; camera = 0; sungamma = 25; heading = 220; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 20; fplayer->tl->z = 70; for (i = 1; i <= 6; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->newinit (FIGHTER_CROW, 0, 395); fighter [i]->deactivate (); } fighter [1]->activate (); state = 0; laststate = 0; texttimer = 0; } int MissionDogfight1::processtimer (Uint32 dt) { bool b = false; int i; if (texttimer >= 200 * timestep) texttimer = 0; if (texttimer > 0) texttimer += dt; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 6; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; state ++; if (state == 1) { for (i = 2; i <= 3; i ++) { fighter [i]->activate (); fighter [i]->tl->x = fplayer->tl->x + 50 + 10 * i; fighter [i]->tl->z = fplayer->tl->z + 50 + 10 * i; fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 15; } return 0; } else if (state == 2) { for (i = 4; i <= 6; i ++) { fighter [i]->activate (); fighter [i]->tl->x = fplayer->tl->x + 50 + 10 * i; fighter [i]->tl->z = fplayer->tl->z + 50 + 10 * i; fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 15; } return 0; } return 1; } void MissionDogfight1::draw () { char buf [250], buf2 [10], buf3 [10]; int timeroff = 100 * timestep, timerdelay = 300 * timestep, timerlag = 20 * timestep; if (laststate != state) { texttimer = 1; laststate = state; } if (texttimer > 0) { if (state == 1) { font1->drawTextCentered (0, 7, -2.5, "THAT WAS EASY", &textcolor); font1->drawTextCentered (0, 6, -2.5, "BUT CAN YOU HANDLE TWO ENEMIES?", &textcolor); return; } if (state == 2) { font1->drawTextCentered (0, 6, -2.5, "OK, LET'S TRY THREE ENEMIES", &textcolor); return; } } if (timer >= 0 && timer <= timeroff - timerlag) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } else if (timer >= timeroff && timer <= timeroff + timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "THERE IS AN ENEMY ATTACKING", &textcolor); key2string (key_selectmissile, buf2); sprintf (buf, "PRESS '%s' ON THE KEYBOARD TO", buf2); font1->drawTextCentered (0, 6, -2.5, buf, &textcolor); font1->drawTextCentered (0, 5, -2.5, "SELECT A MISSILE", &textcolor); } else if (timer >= timeroff + timerdelay && timer <= timeroff + 2 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "CHOOSE A FRIEND-FOE (FF) MISSILE", &textcolor); font1->drawTextCentered (0, 6, -2.5, "WHICH DETECTS ENEMIES BY RADAR.", &textcolor); font1->drawTextCentered (0, 5, -2.5, "SHOOT AS EARLY AS POSSIBLE", &textcolor); } else if (timer >= timeroff + 2 * timerdelay && timer <= timeroff + 3 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "YOU CAN ONLY FIRE MISSILES WHEN", &textcolor); font1->drawTextCentered (0, 6, -2.5, "THE RECTANGULAR LOCK AROUND THE ENEMY", &textcolor); font1->drawTextCentered (0, 5, -2.5, "APPEARS YELLOW", &textcolor); } else if (timer >= timeroff + 3 * timerdelay && timer <= timeroff + 4 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "CHECK THE CHAFF/FLARE DISPLAYS.", &textcolor); font1->drawTextCentered (0, 6, -2.5, "IF THEY START BLINKING, AN ENEMY HAS", &textcolor); font1->drawTextCentered (0, 5, -2.5, "FIRED A MISSILE TO GET YOU DOWN", &textcolor); } else if (timer >= timeroff + 4 * timerdelay && timer <= timeroff + 5 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "CHAFF IS A DECOY FOR RADAR SEEKING MISSILES,", &textcolor); font1->drawTextCentered (0, 6, -2.5, "FLARES PROTECT FROM INFRARED MISSILES", &textcolor); key2string (key_dropchaff, buf2); key2string (key_dropflare, buf3); sprintf (buf, "KEYS: DROP CHAFF = '%s', DROP FLARE = '%s'", buf2, buf3); font1->drawTextCentered (0, 5, -2.5, buf, &textcolor); } else if (timer >= timeroff + 5 * timerdelay && timer <= timeroff + 6 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "THE COUNTER MEASURE ONLY HAD AN EFFECT,", &textcolor); font1->drawTextCentered (0, 6, -2.5, "IF THE DISPLAYS STOP BLINKING", &textcolor); } else if (timer >= timeroff + 6 * timerdelay && timer <= timeroff + 7 * timerdelay - timerlag) { font1->drawTextCentered (0, 7, -2.5, "A LITTLE TARGETING HINT:", &textcolor); key2string (key_targetnearest, buf2); sprintf (buf, "'%s' WILL TARGET THE NEAREST ENEMY IN FRONT,", buf2); font1->drawTextCentered (0, 6, -2.5, buf, &textcolor); key2string (key_targetlocking, buf2); sprintf (buf, "'%s' WILL TARGET AN ENEMY WHO HAS LOCKED YOU", buf2); font1->drawTextCentered (0, 5, -2.5, buf, &textcolor); } } MissionFreeFlight1::MissionFreeFlight1 () { id = MISSION_FREEFLIGHT1; strcpy (name, "FREE FLIGHT"); strcpy (briefing, "THIS IS A SIMPLE TRAINING MISSION: SHOOT ALL TRANSPORTER WAVES."); autoLFBriefing (); alliedfighters = 1; selweapons = 2; maxtime = 4000 * timestep; } void MissionFreeFlight1::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; heading = 200; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_LOW_ALPINE, NULL); playerInit (); fplayer->tl->x = 20; fplayer->tl->z = 70; for (i = 1; i <= 9; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->o = &model_figt; fighter [i]->newinit (FIGHTER_TRANSPORT, 0, 395); if (i >= 3) { fighter [i]->deactivate (); } } state = 0; laststate = 0; texttimer = 0; } int MissionFreeFlight1::processtimer (Uint32 dt) { bool b = false; int i; if (texttimer >= 200 * timestep) texttimer = 0; if (texttimer > 0) texttimer += dt; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 9; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; state ++; if (state == 1) { for (i = 3; i <= 5; i ++) { fighter [i]->activate (); int phi = 120 * i; fighter [i]->tl->x = fplayer->tl->x + 40 * COS(phi); fighter [i]->tl->z = fplayer->tl->z + 40 * SIN(phi); fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 25; } return 0; } else if (state == 2) { for (i = 6; i <= 9; i ++) { fighter [i]->activate (); int phi = 90 * i; fighter [i]->tl->x = fplayer->tl->x + 40 * COS(phi); fighter [i]->tl->z = fplayer->tl->z + 40 * SIN(phi); fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 25; } return 0; } // fplayer->shield = 1; return 1; } void MissionFreeFlight1::draw () { int timeroff = 100 * timestep, /*timerdelay = 300 * timestep,*/ timerlag = 20 * timestep; if (laststate != state) { texttimer = 1; laststate = state; } if (texttimer > 0) { if (state == 1) { font1->drawTextCentered (0, 6, -2.5, "TRANSPORTERS RESPAWNING", &textcolor); return; } if (state == 2) { font1->drawTextCentered (0, 6, -2.5, "TRANSPORTERS RESPAWNING", &textcolor); return; } } if (timer >= 0 && timer <= timeroff - timerlag) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionDeathmatch1::MissionDeathmatch1 () { id = MISSION_DEATHMATCH1; strcpy (name, "DEATHMATCH"); strcpy (briefing, "THE DEATHMATCH - 8 OPPONENTS AND 10 KILLS TO WIN. THE DIFFICULTY STILL DETERMINES THE OPPONENTS STRENGTH."); autoLFBriefing (); alliedfighters = 1; selweapons = 1; selfighters = 1; maxtime = 20000 * timestep; } void MissionDeathmatch1::start () { int i; day = 1; clouds = 1; weather = WEATHER_SUNNY; camera = 0; sungamma = 25; heading = 220; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 50; for (i = 1; i <= 7; i ++) { fighter [i]->newinit (FIGHTER_FALCON, 0, 200); fighter [i]->party = i + 1; fighter [i]->target = fighter [i - 1]; fighter [i]->o = &model_fig; fighter [i]->tl->x = 50 * SIN(i * 360 / 8); fighter [i]->tl->z = 50 * COS(i * 360 / 8); } state = 0; laststate = 0; texttimer = 0; } int MissionDeathmatch1::processtimer (Uint32 dt) { int i; if (texttimer >= 200 * timestep) texttimer = 0; if (texttimer > 0) texttimer += dt; timer += dt; for (i = 0; i <= 7; i ++) { if (fighter [i]->fighterkills >= 10) { // fplayer->shield = 1; if (i == 0) return 1; else return 2; } if (!fighter [i]->active && fighter [i]->explode >= 35 * timestep) { fighter [i]->explode = 0; int temp = fighter [i]->fighterkills; fighter [i]->aiinit (); if (i == 0) { playerInit (); } else { fighter [i]->newinit (FIGHTER_FALCON, i + 1, 200); } fighter [i]->party = i + 1; fighter [i]->shield = fighter [i]->maxshield; fighter [i]->immunity = 50 * timestep; fighter [i]->activate (); // fighter [i]->killed = false; fighter [i]->fighterkills = temp; fighter [i]->killed = false; camera = 0; } } return 0; } void MissionDeathmatch1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionDeathmatch2::MissionDeathmatch2 () { id = MISSION_DEATHMATCH2; strcpy (name, "TEAM DEATHMATCH"); strcpy (briefing, "THIS IS A SHORT TEAM DEATHMATCH - 8 OPPONENTS IN 4 TEAMS AND 12 KILLS TO WIN. THE DIFFICULTY STILL DETERMINES THE OPPONENTS STRENGTH."); autoLFBriefing (); alliedfighters = 1; selweapons = 1; selfighters = 1; maxtime = 10000 * timestep; } void MissionDeathmatch2::start () { int i; day = 1; clouds = 2; weather = WEATHER_SUNNY; camera = 0; sungamma = 45; heading = 220; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 50; for (i = 1; i <= 7; i ++) { if (i <= 1) { fighter [i]->newinit (FIGHTER_FALCON, 0, 200); fighter [i]->o = &model_fig; } else if (i <= 3) { fighter [i]->newinit (FIGHTER_CROW, 0, 200); fighter [i]->o = &model_fige; } else if (i <= 5) { fighter [i]->newinit (FIGHTER_BUZZARD, 0, 200); fighter [i]->o = &model_figd; } else { fighter [i]->newinit (FIGHTER_SWALLOW, 0, 200); fighter [i]->o = &model_figa; } fighter [i]->party = i / 2 + 1; fighter [i]->target = fighter [(i + 4) % 8]; fighter [i]->tl->x = 50 * SIN(i * 360 / 8); fighter [i]->tl->z = 50 * COS(i * 360 / 8); } state = 0; laststate = 0; texttimer = 0; } int MissionDeathmatch2::processtimer (Uint32 dt) { // bool b = false; int i; if (texttimer >= 200 * timestep) texttimer = 0; if (texttimer > 0) texttimer += dt; timer += dt; for (i = 0; i <= 3; i ++) { if (fighter [i * 2]->fighterkills + fighter [i * 2 + 1]->fighterkills >= 12) { // fplayer->shield = 1; if (i == 0) return 1; else return 2; } } for (i = 0; i <= 7; i ++) { if (!fighter [i]->active && fighter [i]->explode >= 35 * timestep) { fighter [i]->explode = 0; int temp = fighter [i]->fighterkills; fighter [i]->aiinit (); if (i == 0) { playerInit (); } else { fighter [i]->newinit (FIGHTER_FALCON, i + 1, 200); } fighter [i]->party = i / 2 + 1; fighter [i]->shield = fighter [i]->maxshield; fighter [i]->immunity = 50 * timestep; fighter [i]->activate (); // fighter [i]->killed = false; fighter [i]->fighterkills = temp; fighter [i]->killed = false; camera = 0; } } return 0; } void MissionDeathmatch2::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionDeathmatch3::MissionDeathmatch3 () { id = MISSION_DEATHMATCH3; strcpy (name, "CANNON DEATHMATCH"); strcpy (briefing, "DEATHMATCH WITHOUT MISSILES - 8 OPPONENTS AND 10 KILLS TO WIN. THE DIFFICULTY STILL DETERMINES THE OPPONENTS STRENGTH."); autoLFBriefing (); alliedfighters = 1; selweapons = 1; selfighters = 1; maxtime = 20000 * timestep; } void MissionDeathmatch3::start () { int i, i2; day = 1; clouds = 1; weather = WEATHER_SUNNY; camera = 0; sungamma = 25; heading = 220; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 50; fplayer->ammo = 100000; for (i2 = 0; i2 < missiletypes; i2 ++) { fplayer->missiles [i2] = 0; } for (i = 1; i <= 7; i ++) { fighter [i]->newinit (FIGHTER_FALCON, 0, 200); fighter [i]->party = i + 1; fighter [i]->target = fighter [i - 1]; fighter [i]->o = &model_fig; fighter [i]->tl->x = 50 * SIN(i * 360 / 8); fighter [i]->tl->z = 50 * COS(i * 360 / 8); fighter [i]->ammo = 100000; for (i2 = 0; i2 < missiletypes; i2 ++) { fighter [i]->missiles [i2] = 0; } } state = 0; laststate = 0; texttimer = 0; } int MissionDeathmatch3::processtimer (Uint32 dt) { int i; if (texttimer >= 200 * timestep) texttimer = 0; if (texttimer > 0) texttimer += dt; timer += dt; for (i = 0; i <= 7; i ++) { if (fighter [i]->fighterkills >= 10) { // fplayer->shield = 1; if (i == 0) return 1; else return 2; } if (!fighter [i]->active && fighter [i]->explode >= 35 * timestep) { fighter [i]->explode = 0; int temp = fighter [i]->fighterkills; fighter [i]->aiinit (); if (i == 0) { playerInit (); } else { fighter [i]->newinit (FIGHTER_FALCON, i + 1, 200); } fighter [i]->party = i + 1; fighter [i]->shield = fighter [i]->maxshield; fighter [i]->immunity = 50 * timestep; fighter [i]->activate (); // fighter [i]->killed = false; fighter [i]->fighterkills = temp; fighter [i]->killed = false; fighter [i]->ammo = 100000; for (i = 0; i < missiletypes; i ++) { fighter [i]->missiles [i] = 0; } camera = 0; } } return 0; } void MissionDeathmatch3::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionTeamBase1::MissionTeamBase1 () { id = MISSION_TEAMBASE1; strcpy (name, "TEAM BASE"); strcpy (briefing, "ATTACK YOUR OPPONENTS BASE AND DEFEND YOUR OWN ONE. TWO TEAMS - ONE FIGHTER AND ONE BOMBER EACH."); autoLFBriefing (); alliedfighters = 1; selweapons = 2; maxtime = 10000 * timestep; } void MissionTeamBase1::start () { day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; heading = 180; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE_EROSION, NULL); int px, py; l->searchPlain (1, 1, &px, &py); l->flatten (px, py, 8, 8); team1x = px; team1y = py + 50; playerInit (); fplayer->tl->x = px; fplayer->tl->z = py; fplayer->phi = 180; if (fplayer->id == FIGHTER_FALCON) { fighter [1]->newinit (FIGHTER_HAWK, 0, 200); fighter [1]->o = &model_figb; fighter [1]->target = NULL; } else { fighter [1]->newinit (FIGHTER_FALCON, 0, 200); fighter [1]->o = &model_fig; fighter [1]->target = fighter [3]; } fighter [1]->party = 1; fighter [1]->tl->x = px + 5; fighter [1]->tl->z = py + 5; int n = 4; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py + 5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall2; fighter [n]->newinit (STATIC_HALL2, 0, 400); fighter [n]->party = 1; n ++; fighter [n]->tl->x = px; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); fighter [n]->party = 1; n ++; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); fighter [n]->party = 1; n ++; fighter [n]->tl->x = px - 1.5; fighter [n]->tl->z = py - 4.5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); fighter [n]->party = 1; n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py + 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 90; fighter [n]->maxtheta = 0; fighter [n]->party = 1; n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py - 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 0; fighter [n]->maxtheta = 0; fighter [n]->party = 1; n ++; fighter [n]->tl->x = px - 15; fighter [n]->tl->z = py - 20; fighter [n]->target = NULL; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 300); fighter [n]->party = 1; n ++; fighter [n]->tl->x = px + 0; fighter [n]->tl->z = py - 20; fighter [n]->target = NULL; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 300); fighter [n]->party = 1; n ++; fighter [n]->tl->x = px + 15; fighter [n]->tl->z = py - 20; fighter [n]->target = NULL; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 300); fighter [n]->party = 1; l->searchPlain (1, 2, &px, &py); l->flatten (px, py, 8, 8); team2x = px; team2y = py - 50; fighter [2]->newinit (FIGHTER_BUZZARD, 0, 200); fighter [2]->o = &model_figd; fighter [2]->tl->x = px; fighter [2]->tl->z = py; if (fplayer->id == FIGHTER_FALCON) fighter [2]->target = fighter [1]; else fighter [2]->target = fighter [0]; fighter [2]->party = 2; fighter [3]->newinit (FIGHTER_SWALLOW, 0, 200); fighter [3]->o = &model_figa; fighter [3]->tl->x = px + 5; fighter [3]->tl->z = py + 5; fighter [3]->target = NULL; fighter [3]->party = 2; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py + 5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall2; fighter [n]->newinit (STATIC_HALL2, 0, 400); fighter [n]->party = 2; n ++; fighter [n]->tl->x = px; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); fighter [n]->party = 2; n ++; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); fighter [n]->party = 2; n ++; fighter [n]->tl->x = px - 1.5; fighter [n]->tl->z = py - 4.5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); fighter [n]->party = 2; n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py + 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 90; fighter [n]->maxtheta = 0; fighter [n]->party = 2; n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py - 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 0; fighter [n]->maxtheta = 0; fighter [n]->party = 2; n ++; fighter [n]->tl->x = px - 15; fighter [n]->tl->z = py + 20; fighter [n]->target = NULL; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 300); fighter [n]->party = 2; n ++; fighter [n]->tl->x = px + 0; fighter [n]->tl->z = py + 20; fighter [n]->target = NULL; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 300); fighter [n]->party = 2; n ++; fighter [n]->tl->x = px + 15; fighter [n]->tl->z = py + 20; fighter [n]->target = NULL; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 300); fighter [n]->party = 2; state = 0; laststate = 0; texttimer = 0; } int MissionTeamBase1::processtimer (Uint32 dt) { // bool b = false; int i; if (texttimer >= 200 * timestep) texttimer = 0; if (texttimer > 0) texttimer += dt; timer += dt; if (fplayer->id == FIGHTER_FALCON) { fighter [2]->target = fighter [1]; } else { fighter [2]->target = fighter [0]; fighter [1]->target = fighter [3]; } bool testb1 = false, testb2 = false; for (i = 4; i <= 29; i ++) { if (fighter [i]->active) { if (fighter [i]->party == 1) testb1 = true; if (fighter [i]->party == 2) testb2 = true; } } if (!testb1) return 2; if (!testb2) return 1; for (i = 0; i <= 3; i ++) { if (!fighter [i]->active && fighter [i]->explode >= 35 * timestep) { fighter [i]->explode = 0; int temp = fighter [i]->fighterkills; int tempid = fighter [i]->id; fighter [i]->aiinit (); if (i == 0) { playerInit (); } else { fighter [i]->newinit (tempid, 0, 200); } fighter [i]->party = i / 2 + 1; fighter [i]->shield = fighter [i]->maxshield; fighter [i]->immunity = 50 * timestep; fighter [i]->activate (); // fighter [i]->killed = false; fighter [i]->fighterkills = temp; fighter [i]->killed = false; if (i <= 1) { fighter [i]->tl->x = team1x; fighter [i]->tl->z = team1y; } else { fighter [i]->tl->x = team2x; fighter [i]->tl->z = team2y; } camera = 0; } } return 0; } void MissionTeamBase1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionWaves1::MissionWaves1 () { id = MISSION_WAVES1; strcpy (name, "WAVES"); strcpy (briefing, "THERE ARE TWO ENEMIES. IF YOU MANAGE TO TAKE THEM OUT, YOU PROCEED TO THE NEXT WAVE CONTAINING THREE OPPONENTS AND SO ON."); autoLFBriefing (); alliedfighters = 1; maxtime = 10000 * timestep; } void MissionWaves1::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; heading = 220; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 20; fplayer->tl->z = 70; for (i = 1; i <= 9; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; if (i <= 2) { fighter [i]->o = &model_fige; fighter [i]->newinit (FIGHTER_CROW, 0, 395); } else if (i <= 5) { fighter [i]->o = &model_figa; fighter [i]->newinit (FIGHTER_SWALLOW, 0, 395); fighter [i]->deactivate (); } else if (i <= 9) { fighter [i]->o = &model_figd; fighter [i]->newinit (FIGHTER_BUZZARD, 0, 395); fighter [i]->deactivate (); } } state = 0; laststate = 0; texttimer = 0; } int MissionWaves1::processtimer (Uint32 dt) { bool b = false; int i; if (texttimer >= 200 * timestep) texttimer = 0; if (texttimer > 0) texttimer += dt; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 9; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; state ++; if (state == 1) { for (i = 3; i <= 5; i ++) { fighter [i]->activate (); fighter [i]->tl->x = fplayer->tl->x + 50 + 10 * i; fighter [i]->tl->z = fplayer->tl->z + 50 + 10 * i; fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 15; } playerInit (); return 0; } else if (state == 2) { for (i = 6; i <= 9; i ++) { fighter [i]->activate (); fighter [i]->tl->x = fplayer->tl->x + 50 + 10 * i; fighter [i]->tl->z = fplayer->tl->z + 50 + 10 * i; fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 15; } playerInit (); return 0; } // fplayer->shield = 1; return 1; } void MissionWaves1::draw () { int timeroff = 100 * timestep, /*timerdelay = 300 * timestep,*/ timerlag = 20 * timestep; if (laststate != state) { texttimer = 1; laststate = state; } if (texttimer > 0) { if (state == 1) { font1->drawTextCentered (0, 6, -2.5, "NEXT WAVE - YOU ARE FULLY REPAIRED", &textcolor); return; } if (state == 2) { font1->drawTextCentered (0, 6, -2.5, "NEXT WAVE - YOU ARE FULLY REPAIRED", &textcolor); return; } } if (timer >= 0 && timer <= timeroff - timerlag) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionTest1::MissionTest1 () { id = MISSION_TEST1; strcpy (name, "EAGLE TEST1"); strcpy (briefing, "WELCOME TO THE EAGLE SQUADRON. BEFORE YOU CAN FLY SERIOUS MISSIONS YOU HAVE TO SHOW YOUR SKILLS. FIRST DESTROY ALL DUMMY GROUND TARGETS IN THE DESIGNED REGION USING THE CANNON ONLY."); autoLFBriefing (); alliedfighters = 1; maxtime = 5000 * timestep; // alliedpilot [0] = PILOT_PRIMETIME; } void MissionTest1::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 55; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE_EROSION, NULL); int px, py; l->searchPlain (-1, -1, &px, &py); playerInit (); fplayer->tl->x = px; fplayer->tl->z = py + 100; for (i = 0; i < missiletypes; i ++) { fplayer->missiles [i] = 0; } for (i = 1; i <= 6; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_pickup1; fighter [i]->tl->x = px + 4 - ((i - 1) / 2) * 4; fighter [i]->tl->z = py + 4 - ((i - 1) & 1) * 8; fighter [i]->newinit (TANK_PICKUP1, 0, 400); } } int MissionTest1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 6; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionTest1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionTest2::MissionTest2 () { id = MISSION_TEST2; strcpy (name, "EAGLE TEST2"); strcpy (briefing, "NOW SHOW YOUR PILOTING SKILLS AND GET DOWN YOUR \"ENEMY\". JUST GET AT HIS BACK - NO MISSILES, NO CANNON."); autoLFBriefing (); alliedfighters = 1; maxtime = 3500 * timestep; // alliedpilot [0] = PILOT_PRIMETIME; } void MissionTest2::start () { int i; day = 1; clouds = 1; weather = WEATHER_SUNNY; camera = 0; sungamma = 55; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_LOW_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 50; for (i = 0; i < missiletypes; i ++) { fplayer->missiles [i] = 0; } fplayer->ammo = 0; fighter [1]->party = 0; fighter [1]->target = fighter [0]; fighter [1]->o = &model_fig; fighter [1]->tl->x = 0; fighter [1]->tl->z = 0; fighter [1]->newinit (FIGHTER_HAWK, 0, 170); fighter [1]->aggressivity = 0; // fighter [1]->intelligence = 0; // fighter [1]->precision = 0; for (i = 0; i < missiletypes; i ++) { fighter [1]->missiles [i] = 0; } fighter [1]->ammo = 0; fighter [1]->shield = 100000; fighter [1]->phi = 180; invertZ (); // only invert if NO objects are mapped to flat ground } int MissionTest2::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 1; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } fplayer->aw = fplayer->getAngle (fighter [1]); state = 0; float fplayerh = fplayer->getAngleH (fighter [1]); if (fabs (fplayer->aw) < 10 && fabs (fighter [1]->aw) <= 130) { if (fabs (fplayerh) < 10) state = -1; } if (fabs (fplayer->aw) < 10 && fabs (fighter [1]->aw) > 130) { if (fabs (fplayerh) < 10 && fplayer->distance (fighter [1]) < 20) return 1; } if (fabs (fighter [1]->aw) < 10 && fabs (fplayer->aw) > 130) { if (fabs (fighter [1]->getAngleH (fplayer)) < 10 && fighter [1]->distance (fplayer) < 20) return 2; } if (b) return 0; return 1; } void MissionTest2::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } else if (state == -1) { font1->drawTextCentered (0, 4, -2, "ALMOST! GET CLEARLY BEHIND HIM!", &textcolor); } } MissionTransport::MissionTransport () { id = MISSION_TRANSPORT; strcpy (name, "TRANSPORT"); strcpy (briefing, "EUROPE: THIS IS YOUR FIRST MISSION FOR THE EAGLE SQADRON. OUR SECRET SERVICE HAS CAUGHT TWO TRANSPORTS PROVIDING TERRORISTS WITH AMMUNITION. THEY ARE ONLY LIGHTLY GUARDED, NO PROBLEM TO TAKE THEM OUT WITH OUR SUPERIOR FIGHTERS."); autoLFBriefing (); alliedfighters = 2; maxtime = 5000 * timestep; alliedpilot [0] = PILOT_PRIMETIME; } void MissionTransport::start () { int i; day = 1; clouds = 1; weather = WEATHER_SUNNY; camera = 0; sungamma = 45; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_LOW_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 100; alliedInit (FIGHTER_FALCON, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 5; fighter [1]->tl->z = 105; for (i = 2; i <= 4; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->newinit (FIGHTER_CROW, 0, 340); } for (i = 5; i <= 6; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_figt; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->newinit (FIGHTER_TRANSPORT, 0, 200); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionTransport::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 6; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionTransport::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionConvoy::MissionConvoy () { id = MISSION_CONVOY; strcpy (name, "CONVOY"); strcpy (briefing, "WE HAVE SPOTTED AN ENEMY CONVOY. THIS IS YOUR NEXT TARGET. BE CAREFUL, THERE ARE WIESEL TANKS WITH SURFACE-AIR CANNONS."); autoLFBriefing (); alliedfighters = 2; maxtime = 5000 * timestep; alliedpilot [0] = PILOT_PRIMETIME; } void MissionConvoy::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 45; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE_EROSION, NULL); int px, py; l->searchPlain (-1, -1, &px, &py); playerInit (); fplayer->tl->x = px; fplayer->tl->z = py + 100; alliedInit (FIGHTER_HAWK, alliedpilot [0], fighter [1]); // always match together 0<->1, 1<->2 etc. fighter [1]->tl->x = px + 5; fighter [1]->tl->z = py + 105; for (i = 2; i <= 3; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_tank1; int phi = (i - 2) * 180; fighter [i]->newinit (TANK_AIR1, 0, 200); fighter [i]->tl->x = px + sine [phi] * 3.0; fighter [i]->tl->z = py + cosi [phi] * 3.0; fighter [i]->phi = 359 - phi; fighter [i]->thrust = 0; fighter [i]->maxthrust = 0; } for (i = 4; i <= 9; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; if (i == 6 || i == 9) fighter [i]->o = &model_pickup1; else fighter [i]->o = &model_truck1; fighter [i]->tl->x = px + 7.5 - i; fighter [i]->tl->z = py + 7.5 - i; if (i == 6 || i == 9) fighter [i]->newinit (TANK_PICKUP1, 0, 400); else fighter [i]->newinit (TANK_TRUCK1, 0, 400); } } int MissionConvoy::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 9; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionConvoy::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionDogfight2::MissionDogfight2 () { id = MISSION_DOGFIGHT2; strcpy (name, "DOGFIGHT"); strcpy (briefing, "SOME ENEMY FIGHTERS ARE ON THEIR WAY ATTACKING ONE OF OUR OUTPOSTS. STOP THEM BEFORE THEY CAN REACH IT!"); autoLFBriefing (); alliedfighters = 2; maxtime = 5000 * timestep; alliedpilot [0] = PILOT_PRIMETIME; // alliedpilot [1] = PILOT_SHADOW; } void MissionDogfight2::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 40; heading = 200; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 100; alliedInit (FIGHTER_FALCON, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 5; fighter [1]->tl->z = 105; for (i = 2; i <= 6; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->newinit (FIGHTER_CROW, 0, 400 - i * 10); } for (i = 7; i <= 8; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -i * 10 - 100; fighter [i]->tl->z = -i * 10 - 100; fighter [i]->newinit (FIGHTER_CROW, 0, 400 - i * 20); fighter [i]->deactivate (); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionDogfight2::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 7; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionDogfight2::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } if (timer >= 1000 * timestep && state == 0) { state ++; fighter [7]->activate (); fighter [8]->activate (); fighter [7]->tl->x = fplayer->tl->x + 50; fighter [7]->tl->z = fplayer->tl->z + 50; fighter [7]->tl->y = l->getHeight (fighter [7]->tl->x, fighter [7]->tl->z) + 10; fighter [8]->tl->x = fplayer->tl->x + 60; fighter [8]->tl->z = fplayer->tl->z + 60; fighter [8]->tl->y = l->getHeight (fighter [8]->tl->x, fighter [8]->tl->z) + 10; } if (timer >= 1000 * timestep && timer <= 1200 * timestep) font1->drawTextCentered (0, 7, -3, "MORE ENEMIES ENTERING THE REGION", &textcolor); } MissionAirBattle::MissionAirBattle () { id = MISSION_AIRBATTLE; strcpy (name, "AIR BATTLE"); strcpy (briefing, "WE ARE BEING ATTACKED BY A MASS OF CROWS. THE SQUADRON IS ORDERED TO DEFEND."); autoLFBriefing (); alliedfighters = 7; maxtime = 6000 * timestep; alliedpilot [0] = PILOT_PRIMETIME; alliedpilot [1] = PILOT_SHADOW; alliedpilot [2] = PILOT_FIREBIRD; alliedpilot [3] = PILOT_HEPTARGON; alliedpilot [4] = PILOT_LARA; alliedpilot [5] = PILOT_DRDOOM; } void MissionAirBattle::start () { int i; day = 1; clouds = 1; weather = WEATHER_SUNNY; camera = 0; sungamma = 45; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 100; for (i = 1; i <= 6; i ++) { alliedInit (FIGHTER_FALCON, alliedpilot [i - 1], fighter [i]); if (i % 2) fighter [i]->tl->x = ((i + 1) / 2) * 5; else fighter [i]->tl->x = -((i + 1) / 2) * 5; fighter [i]->tl->z = 100 + i * 5; fighter [i]->target = fighter [7 + i]; } for (i = 7; i <= 25; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (7)]; fighter [i]->o = &model_fige; if (i <= 13) { fighter [i]->tl->x = -i * 5; fighter [i]->tl->z = -i * 5; } else if (i <= 25) { fighter [i]->tl->x = -i * 8 - 150; fighter [i]->tl->z = -i * 8 - 150; } else { fighter [i]->tl->x = -i * 8 - 350; fighter [i]->tl->z = -i * 8 - 350; } fighter [i]->newinit (FIGHTER_CROW, 0, 440 - i * 10); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionAirBattle::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 25; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionAirBattle::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionGround1::MissionGround1 () { id = MISSION_SADEFENSE; strcpy (name, "SA DEFENSE"); strcpy (briefing, "OUR ENEMY HAS BUILT UP A BASE WITH SOME AIR DEFENCES AROUND. THE PILOTS OF OUR SQUADRON HAVE TO TAKE OUT THESE AIR DEFENCES."); autoLFBriefing (); alliedfighters = 2; alliedpilot [0] = PILOT_PRIMETIME; maxtime = 3500 * timestep; } void MissionGround1::start () { int i; day = 0; clouds = 3; weather = WEATHER_THUNDERSTORM; camera = 0; sungamma = 40; heading = 200; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE_NOLAKE, NULL); int px, py; l->searchPlain (1, 1, &px, &py); l->flatten (px, py, 3, 3); // px = px - MAXX / 2; // py = MAXX / 2 - py; playerInit (); fplayer->tl->x = px + 10; fplayer->tl->z = py + 80; fplayer->target = fighter [2]; alliedInit (FIGHTER_FALCON, alliedpilot [0], fighter [1]); fighter [1]->tl->x = px + 20; fighter [1]->tl->z = py + 90; fighter [1]->target = fighter [2]; for (i = 2; i <= 4; i ++) { fighter [i]->tl->x = px - 9 + i * 3; fighter [i]->tl->z = py; fighter [i]->target = fighter [0]; if (i == 2) { fighter [i]->o = &model_flarak1; fighter [i]->newinit (FLARAK_AIR1, 0, 220); } else { fighter [i]->o = &model_flak1; fighter [i]->newinit (FLAK_AIR1, 0, 200); } } l->searchPlain (2, 1, &px, &py); l->flatten (px, py, 3, 3); for (i = 5; i <= 6; i ++) { fighter [i]->tl->x = px - 17 + i * 3; fighter [i]->tl->z = py; fighter [i]->target = fighter [0]; fighter [i]->o = &model_flak1; fighter [i]->newinit (FLAK_AIR1, 0, 200); } fighter [7]->tl->x = px + 1; fighter [7]->tl->z = py - 1; fighter [7]->o = &model_tent1; fighter [7]->newinit (STATIC_TENT1, 0, 200); fighter [8]->tl->x = px - 1; fighter [8]->tl->z = py - 1; fighter [8]->o = &model_tent1; fighter [8]->newinit (STATIC_TENT1, 0, 200); } int MissionGround1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 6; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionGround1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionScout::MissionScout () { id = MISSION_SCOUT; strcpy (name, "SCOUTS"); strcpy (briefing, "ENEMY SCOUTS ARE APPROACHING THIS REGION. BE CARFUL, THEY ARE FLYING BUZZARDS AND SHOULD BE CONSIDERED EQUAL TO OUR FALCONS."); autoLFBriefing (); alliedfighters = 2; maxtime = 3000 * timestep; alliedpilot [0] = PILOT_PRIMETIME; } void MissionScout::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 22; heading = 250; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 100; alliedInit (FIGHTER_FALCON, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 5; fighter [1]->tl->z = 105; for (i = 2; i <= 4; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_figd; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->newinit (FIGHTER_BUZZARD, 0, 170); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionScout::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 4; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionScout::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionBase::MissionBase () { id = MISSION_BASE; strcpy (name, "BASE"); strcpy (briefing, "NOW IT IS TIME TO STRIKE AGAINST THE TERRORISTS BASE."); autoLFBriefing (); alliedfighters = 4; alliedpilot [0] = PILOT_PRIMETIME; alliedpilot [1] = PILOT_SHADOW; alliedpilot [2] = PILOT_HEPTARGON; alliedpilot [3] = PILOT_DRDOOM; maxtime = 6500 * timestep; } void MissionBase::start () { int i, i2; day = 0; clouds = 3; weather = WEATHER_THUNDERSTORM; camera = 0; sungamma = 40; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE_EROSION, NULL); int px, py; l->searchPlain (-1, -1, &px, &py); l->flatten (px, py, 8, 8); for (i = px - 6; i <= px + 6; i ++) for (i2 = py - 8; i2 <= py + 7; i2 ++) { l->f [i] [i2] = GREYSAND; int sum = (int) l->r [i] [i2] + l->g [i] [i2] + l->b [i] [i2]; sum /= 3; l->r [i] [i2] = sum + 15; l->g [i] [i2] = sum + 15; l->b [i] [i2] = sum - 15; } playerInit (); fplayer->tl->x = px + 10; fplayer->tl->z = py + 100; fplayer->target = fighter [4]; for (i = 1; i <= 3; i ++) { alliedInit (FIGHTER_FALCON, alliedpilot [i - 1], fighter [i]); fighter [i]->tl->x = px + 10 + i * 5; fighter [i]->tl->z = py + 100 + i * 5; } int n = 4; fighter [n]->tl->x = px - 4; fighter [n]->tl->z = py; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall2; fighter [n]->newinit (STATIC_HALL2, 0, 400); n ++; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py + 5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall2; fighter [n]->newinit (STATIC_HALL2, 0, 400); n ++; fighter [n]->tl->x = px; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); n ++; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); n ++; fighter [n]->tl->x = px + 4; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); n ++; fighter [n]->tl->x = px - 1.5; fighter [n]->tl->z = py - 4.5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); n ++; fighter [n]->tl->x = px + 1.5; fighter [n]->tl->z = py - 4.5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); n ++; fighter [n]->tl->x = px - 3; fighter [n]->tl->z = py + 4; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); n ++; fighter [n]->tl->x = px - 5.5; fighter [n]->tl->z = py + 4; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); n ++; fighter [n]->tl->x = px - 4; fighter [n]->tl->z = py + 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py + 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 90; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py - 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 0; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px + 6; fighter [n]->tl->z = py - 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 270; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px + 6; fighter [n]->tl->z = py + 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 180; fighter [n]->maxtheta = 0; n ++; for (i = n; i < n + 6; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (4)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = px + i * 5 - 60; fighter [i]->tl->z = py + i * 5 - 60; fighter [i]->newinit (FIGHTER_CROW, 0, 180 + myrandom (200)); } } int MissionBase::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 19; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionBase::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionDepot::MissionDepot () { id = MISSION_DEPOT; strcpy (name, "DEPOTS"); strcpy (briefing, "THERE IS STILL AN OUTPOST WITH SOME DEPOTS. DESTROY ALL THE DEPOTS. WE ARE NOT EXPECTING ANY AIR RESISTANCE."); autoLFBriefing (); alliedfighters = 2; alliedpilot [0] = PILOT_PRIMETIME; maxtime = 5500 * timestep; } void MissionDepot::start () { int i, i2; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 40; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE_EROSION, NULL); int px, py; l->searchPlain (-1, -1, &px, &py); l->flatten (px, py, 6, 6); for (i = px - 5; i <= px + 5; i ++) for (i2 = py - 6; i2 <= py + 6; i2 ++) { l->f [i] [i2] = GREYSAND; int sum = (int) l->r [i] [i2] + l->g [i] [i2] + l->b [i] [i2]; sum /= 3; l->r [i] [i2] = sum + 15; l->g [i] [i2] = sum + 15; l->b [i] [i2] = sum - 15; } playerInit (); fplayer->tl->x = px + 10; fplayer->tl->z = py + 130; fplayer->target = fighter [4]; for (i = 1; i <= 1; i ++) { alliedInit (FIGHTER_STORM, alliedpilot [i - 1], fighter [i]); fighter [i]->tl->x = px + 10 + i * 5; fighter [i]->tl->z = py + 130 + i * 5; fighter [i]->target = fighter [2]; fighter [i]->bomber = true; } int n = 2; fighter [n]->tl->x = px - 4; fighter [n]->tl->z = py; fighter [n]->target = fighter [0]; fighter [n]->o = &model_depot1; fighter [n]->newinit (STATIC_DEPOT1, 0, 400); n ++; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py + 5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_depot1; fighter [n]->newinit (STATIC_DEPOT1, 0, 400); n ++; fighter [n]->tl->x = px; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); n ++; fighter [n]->tl->x = px + 2; fighter [n]->tl->z = py - 1; fighter [n]->target = fighter [0]; fighter [n]->o = &model_hall1; fighter [n]->newinit (STATIC_HALL1, 0, 400); n ++; fighter [n]->tl->x = px + 1.5; fighter [n]->tl->z = py - 4.5; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); n ++; fighter [n]->tl->x = px - 3; fighter [n]->tl->z = py + 4; fighter [n]->target = fighter [0]; fighter [n]->o = &model_tent4; fighter [n]->newinit (STATIC_TENT4, 0, 400); fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py + 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 90; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py - 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 0; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px + 6; fighter [n]->tl->z = py - 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 270; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px + 6; fighter [n]->tl->z = py + 6; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flak1; fighter [n]->newinit (FLAK1, 0, 200); fighter [n]->phi = 180; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px - 6; fighter [n]->tl->z = py + 35; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 200); fighter [n]->phi = 180; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px + 6; fighter [n]->tl->z = py + 35; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 200); fighter [n]->phi = 180; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px + 35; fighter [n]->tl->z = py; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 200); fighter [n]->phi = 180; fighter [n]->maxtheta = 0; n ++; fighter [n]->tl->x = px - 35; fighter [n]->tl->z = py; fighter [n]->target = fighter [0]; fighter [n]->o = &model_flarak1; fighter [n]->newinit (FLARAK_AIR1, 0, 200); fighter [n]->phi = 180; fighter [n]->maxtheta = 0; n ++; } int MissionDepot::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 3; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionDepot::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionDefend1::MissionDefend1 () { id = MISSION_DEFEND1; strcpy (name, "DEFEND SAM"); strcpy (briefing, "THERE ARE NEW TERRORIST ACTIVITIES IN NORTHERN AFRICA. OUR SQUARDRON HAS TO MOVE THERE AND OUR FIRST MISSION IS THE DEFENDANCE OF SOME SAM LAUNCHERS AGAINST SUPERIOR TANKS. HOWEVER, OUR OLD HAWKS HAVE BEEN REPLACED."); autoLFBriefing (); alliedfighters = 2; alliedpilot [0] = PILOT_SHADOW; maxtime = 3500 * timestep; selfighter [1] = FIGHTER_HAWK2; } void MissionDefend1::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 65; heading = 200; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_DESERT, NULL); playerInit (); fplayer->tl->x = 10; fplayer->tl->z = 90; fplayer->target = fighter [7]; alliedInit (FIGHTER_HAWK2, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 20; fighter [1]->tl->z = 100; fighter [1]->target = fighter [8]; for (i = 2; i <= 6; i ++) { fighter [i]->tl->x = 20 + i * 5; fighter [i]->tl->z = 10; if (i == 3 || i == 4 || i == 5) { fighter [i]->o = &model_flarak1; fighter [i]->newinit (FLARAK_AIR1, 0, 400); fighter [i]->target = fighter [0]; } else { fighter [i]->o = &model_flak1; fighter [i]->newinit (FLAK_AIR1, 0, 400); fighter [i]->target = fighter [0]; } fighter [i]->party = 1; } for (i = 7; i <= 10; i ++) { int off = 35; if (difficulty == 0) off = 55; else off = 15; fighter [i]->tl->x = i * 5 - 50; fighter [i]->tl->z = -i * 5 - off; fighter [i]->o = &model_tank2; fighter [i]->newinit (TANK_GROUND1, 0, 300); fighter [i]->target = fighter [i - 4]; } for (i = 11; i <= 15; i ++) { int off = 40; if (difficulty == 0) off = 55; else off = 25; fighter [i]->tl->x = i * 5 - 50; fighter [i]->tl->z = -i * 5 - off * 2; if (i == 12) { fighter [i]->newinit (TANK_AIR1, 0, 300); fighter [i]->o = &model_tank1; } else { fighter [i]->newinit (TANK_GROUND1, 0, 300); fighter [i]->o = &model_tank2; } fighter [i]->target = fighter [i - 4]; fighter [i]->deactivate (); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionDefend1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 15; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (!fighter [3]->active || !fighter [4]->active || !fighter [5]->active) return 2; if (b) return 0; return 1; } void MissionDefend1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } if (timer >= 600 * timestep && state == 0) { state ++; fighter [11]->activate (); fighter [12]->activate (); fighter [13]->activate (); fighter [14]->activate (); fighter [15]->activate (); } if (timer >= 600 * timestep && timer <= 800 * timestep) font1->drawTextCentered (0, 7, -3, "MORE TANKS ARE ATTACKING", &textcolor); } MissionDogfight3::MissionDogfight3 () { id = MISSION_DOGFIGHT3; strcpy (name, "DOGFIGHT"); strcpy (briefing, "ENEMY FIGHTERS HAVE BEEN SIGHTED. YOU HAVE TO INTERCEPT THEM IMMEDIATELY. EXPECT BOMBERS WITHIN THEIR WING."); autoLFBriefing (); alliedfighters = 4; maxtime = 3500 * timestep; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_PRIMETIME; alliedpilot [1] = PILOT_SHADOW; alliedpilot [2] = PILOT_LARA; } void MissionDogfight3::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 20; heading = 300; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_DESERT, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 100; alliedInit (FIGHTER_FALCON, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 5; fighter [1]->tl->z = 105; alliedInit (FIGHTER_FALCON, alliedpilot [1], fighter [2]); fighter [2]->tl->x = 10; fighter [2]->tl->z = 110; alliedInit (FIGHTER_FALCON, alliedpilot [2], fighter [3]); fighter [3]->tl->x = 15; fighter [3]->tl->z = 115; for (i = 4; i <= 8; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (4)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->newinit (FIGHTER_CROW, 0, 400 - i * 25); } for (i = 9; i <= 11; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (4)]; fighter [i]->o = &model_figa; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = -i * 10; fighter [i]->newinit (FIGHTER_SWALLOW, 0, 400 - i * 20); fighter [i]->deactivate (); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionDogfight3::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 15; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionDogfight3::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } if (timer >= 800 * timestep && state == 0) { state = 1; fighter [9]->activate (); fighter [10]->activate (); fighter [11]->activate (); fighter [9]->tl->x = fplayer->tl->x + 55; fighter [9]->tl->z = fplayer->tl->z + 55; fighter [9]->tl->y = l->getHeight (fighter [9]->tl->x, fighter [9]->tl->z) + 10; fighter [10]->tl->x = fplayer->tl->x + 60; fighter [10]->tl->z = fplayer->tl->z + 60; fighter [10]->tl->y = l->getHeight (fighter [10]->tl->x, fighter [10]->tl->z) + 10; fighter [11]->tl->x = fplayer->tl->x + 65; fighter [11]->tl->z = fplayer->tl->z + 65; fighter [11]->tl->y = l->getHeight (fighter [11]->tl->x, fighter [11]->tl->z) + 10; } if (timer >= 800 * timestep && timer <= 1000 * timestep) font1->drawTextCentered (0, 7, -3, "BOMBERS ARE ENTERING THE REGION", &textcolor); } MissionTank1::MissionTank1 () { id = MISSION_TANK1; strcpy (name, "TANKS"); strcpy (briefing, "THE ENEMY IS GATHERING LOTS OF TANKS. FLY AN ASSAUT AND DESTROY THEM."); autoLFBriefing (); alliedfighters = 2; maxtime = 4500 * timestep; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_SHADOW; } void MissionTank1::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 40; heading = 280; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_DESERT, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 100; alliedInit (FIGHTER_HAWK2, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 5; fighter [1]->tl->z = 105; for (i = 2; i <= 7; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_tank2; fighter [i]->tl->x = -i * 4; fighter [i]->tl->z = -i * 4; fighter [i]->newinit (TANK_GROUND1, 0, 400 - i * 25); fighter [i]->maxthrust = 0; fighter [i]->thrust = 0; } for (i = 8; i <= 10; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_tank1; fighter [i]->tl->x = i * 3; fighter [i]->tl->z = i * 3; fighter [i]->newinit (TANK_AIR1, 0, 80); } for (i = 11; i <= 13; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_container1; fighter [i]->tl->x = i * 3; fighter [i]->tl->z = 60; fighter [i]->newinit (STATIC_CONTAINER1, 0, 0); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionTank1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 15; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionTank1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionConvoy2::MissionConvoy2 () { id = MISSION_CONVOY2; strcpy (name, "SAM CONVOY"); strcpy (briefing, "THERE IS A CONVOY DELIVERING WEAPONS. DESTROY IT BUT CAUTION: THERE ARE MOBILE SAMS AND POSSIBLY ENEMY FIGHTERS IN THE REGION"); autoLFBriefing (); alliedfighters = 2; maxtime = 5000 * timestep; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_SHADOW; } void MissionConvoy2::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 60; heading = 230; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_DESERT, NULL); int px = 200, py = 200; playerInit (); fplayer->tl->x = px; fplayer->tl->z = py + 100; alliedInit (FIGHTER_HAWK, alliedpilot [0], fighter [1]); // always match together 0<->1, 1<->2 etc. fighter [1]->tl->x = px + 5; fighter [1]->tl->z = py + 105; for (i = 2; i <= 3; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_trsam; int phi = (i - 2) * 180; fighter [i]->newinit (TANK_TRSAM1, 0, 200); fighter [i]->tl->x = px + sine [phi] * 5.0; fighter [i]->tl->z = py + cosi [phi] * 5.0; // fighter [i]->phi = 359 - phi; fighter [i]->thrust = 0; fighter [i]->maxthrust = 0; } for (i = 4; i <= 9; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; if (i == 6 || i == 7) fighter [i]->o = &model_truck1; else fighter [i]->o = &model_truck2; fighter [i]->tl->x = px + (i % 3) * 3 - 4; fighter [i]->tl->z = py + (i / 3) * 3 - 4; if (i == 6 || i == 7) fighter [i]->newinit (TANK_TRUCK1, 0, 400); else fighter [i]->newinit (TANK_TRUCK2, 0, 400); } for (i = 10; i <= 12; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = px - i * 10; fighter [i]->tl->z = py - i * 10; fighter [i]->newinit (FIGHTER_CROW, 0, 400 - i * 10); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionConvoy2::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 9; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionConvoy2::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionShip1::MissionShip1 () { id = MISSION_SHIP1; strcpy (name, "DESTROYER"); strcpy (briefing, "OUR SQUAD HAS BEEN ORDERED INTO THE MEDITERRANEAN. YOUR FIRST GOAL ARE SOME DESTROYERS, GUARDED BY CROWS."); autoLFBriefing (); alliedfighters = 2; maxtime = 4000 * timestep; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_SHADOW; } void MissionShip1::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_SEA, NULL); playerInit (); fplayer->tl->x = 80; fplayer->tl->z = 0; fplayer->phi = 90; alliedInit (FIGHTER_HAWK2, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 85; fighter [1]->tl->z = 5; fighter [1]->phi = 90; fighter [1]->target = fighter [6]; for (i = 2; i <= 3; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [i - 2]; fighter [i]->o = &model_ship2; fighter [i]->tl->x = -i * 4; fighter [i]->tl->z = -i * 4; fighter [i]->newinit (SHIP_DESTROYER1, 0, 50); fighter [i]->maxthrust = 0; fighter [i]->thrust = 0; } for (i = 4; i <= 8; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -i * 10; fighter [i]->tl->z = 0; fighter [i]->newinit (FIGHTER_CROW, 0, 400 - i * 20); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionShip1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 15; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionShip1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionShip2::MissionShip2 () { id = MISSION_SHIP2; strcpy (name, "OILRIG"); strcpy (briefing, "AN OILRIG IS BEING ATTACKED BY ENEMY FORCES. DEFEND! OUR NEW SUPERIOR FIGHTER GL-15 IS NOW AVAILABLE."); autoLFBriefing (); alliedfighters = 2; maxtime = 2500 * timestep; selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_SHADOW; } void MissionShip2::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 15; heading = 270; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_SEA, NULL); playerInit (); fplayer->tl->x = 80; fplayer->tl->z = 0; fplayer->phi = 90; alliedInit (FIGHTER_REDARROW, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 85; fighter [1]->tl->z = 5; fighter [1]->phi = 90; fighter [1]->target = fighter [6]; fighter [2]->o = &model_oilrig; fighter [2]->tl->x = 20; fighter [2]->tl->z = 0; fighter [2]->newinit (STATIC_OILRIG1, 0, 0); fighter [2]->maxthrust = 0; fighter [2]->thrust = 0; fighter [2]->party = 1; for (i = 3; i <= 5; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -50 - i * 10; fighter [i]->tl->z = 0; fighter [i]->newinit (FIGHTER_CROW, 0, 300 - i * 10); } for (i = 6; i <= 7; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [2]; fighter [i]->o = &model_figa; fighter [i]->tl->x = -80 - i * 10; fighter [i]->tl->z = 0; fighter [i]->newinit (FIGHTER_SWALLOW, 0, 160); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionShip2::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 15; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (!fighter [2]->active) return 2; if (b) return 0; return 1; } void MissionShip2::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionShip3::MissionShip3 () { id = MISSION_SHIP3; strcpy (name, "CRUISER ATTACK"); strcpy (briefing, "THE CRUISER C-15 ARAKON HAS ENTERED NEUTRAL TERRITORY WATERS AND MUST BE ELIMINATED. BEWARE OF HIS FRONT MISSILE LAUNCHER."); autoLFBriefing (); alliedfighters = 2; maxtime = 3000 * timestep; selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_SHADOW; } void MissionShip3::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_SEA, NULL); playerInit (); fplayer->tl->x = 80; fplayer->tl->z = 0; fplayer->phi = 90; alliedInit (FIGHTER_HAWK2, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 85; fighter [1]->tl->z = 5; fighter [1]->phi = 90; fighter [1]->target = fighter [6]; fighter [2]->party = 0; fighter [2]->target = fighter [0]; fighter [2]->o = &model_ship1; fighter [2]->tl->x = -20; fighter [2]->tl->z = 0; fighter [2]->newinit (SHIP_CRUISER, 0, 200); fighter [2]->maxthrust = 0; fighter [2]->thrust = 0; for (i = 4; i <= 7; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_fige; fighter [i]->tl->x = -i * 5; fighter [i]->tl->z = 0; fighter [i]->newinit (FIGHTER_CROW, 0, 400 - i * 10); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionShip3::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 15; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionShip3::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionCanyon1::MissionCanyon1 () { selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_SHADOW; id = MISSION_CANYON1; strcpy (name, "RADAR"); strcpy (briefing, "YOU HAVE TO FLY AN ASSAULT ON A RADAR BASE. STAY AS LOW AS POSSIBLE!"); autoLFBriefing (); alliedfighters = 1; maxtime = 2500 * timestep; } void MissionCanyon1::start () { int i, px, py; day = 1; clouds = 2; weather = WEATHER_SUNNY; camera = 0; sungamma = 15; heading = 270; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_CANYON, NULL); l->searchPlain (-1, -1, &px, &py); playerInit (); fplayer->tl->x = px + 130; fplayer->tl->z = py + 130; fplayer->phi = 45; fplayer->target = fighter [1]; fighter [1]->o = &model_egg; fighter [1]->newinit (STATIC_COMPLEX1, 0, 0); fighter [1]->tl->x = px + 1; fighter [1]->tl->z = py + 1; fighter [1]->maxthrust = 0; fighter [1]->thrust = 0; for (i = 2; i < 4; i ++) { fighter [i]->o = &model_radar; fighter [i]->newinit (STATIC_RADAR1, 0, 0); fighter [i]->tl->x = px - 2 - (i - 2) * 2; fighter [i]->tl->z = py - 2 - (i - 2) * 2; fighter [i]->maxthrust = 0; fighter [i]->thrust = 0; } for (i = 4; i <= 10; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [0]; fighter [i]->o = &model_figd; fighter [i]->phi = 180; fighter [i]->newinit (FIGHTER_BUZZARD, 0, 50 + i * 20); fighter [i]->tl->x = px - 15 - i * 3; fighter [i]->tl->z = py - 15 - i * 3; fighter [i]->deactivate (); } for (i = 11; i <= 12; i ++) { fighter [i]->o = &model_flarak1; fighter [i]->target = fighter [0]; fighter [i]->newinit (FLARAK_AIR1, 0, 200); fighter [i]->tl->x = px + 4; fighter [i]->tl->z = py + i * 3 - 30; fighter [i]->maxthrust = 0; fighter [i]->thrust = 0; fighter [i]->phi = 220; } } int MissionCanyon1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } if (fplayer->tl->y >= fighter [1]->tl->y && dist (fplayer->tl->x - fighter [1]->tl->x, fplayer->tl->z - fighter [1]->tl->z) < 150) { for (i = 4; i <= 10; i ++) { if (!fighter [i]->active && fighter [i]->shield > 10) fighter [i]->activate (); } } for (i = 0; i <= 3; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionCanyon1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionCanyon2::MissionCanyon2 () { selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_MATRIX; alliedpilot [1] = PILOT_PRIMETIME; alliedpilot [2] = PILOT_FIREBIRD; alliedpilot [3] = PILOT_LARA; id = MISSION_CANYON2; strcpy (name, "CANYON BATTLE"); strcpy (briefing, "THIS MAY BECOME A REAL AIR BATTLE..."); autoLFBriefing (); alliedfighters = 5; maxtime = 6500 * timestep; } void MissionCanyon2::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 40; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_CANYON, NULL); playerInit (); fplayer->tl->x = 100; fplayer->tl->z = 100; fplayer->phi = 45; fplayer->target = fighter [5]; for (i = 1; i <= 4; i ++) { alliedInit (FIGHTER_REDARROW, alliedpilot [i - 1], fighter [i]); if (i % 2) fighter [i]->tl->x = 100 + ((i + 1) / 2) * 5; else fighter [i]->tl->x = 100 - ((i + 1) / 2) * 5; fighter [i]->tl->z = 100 + i * 5; fighter [i]->target = fighter [5 + i]; fighter [i]->phi = 45; } for (i = 5; i <= 22; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (5)]; if (i <= 15) { fighter [i]->tl->x = -i * 5; fighter [i]->tl->z = -i * 5; fighter [i]->o = &model_fige; fighter [i]->newinit (FIGHTER_CROW, 0, myrandom (120) + 260); } else if (i <= 19) { fighter [i]->tl->x = -i * 8 - 160; fighter [i]->tl->z = -i * 8 - 160; fighter [i]->o = &model_figd; fighter [i]->newinit (FIGHTER_BUZZARD, 0, myrandom (120) + 160); } else { fighter [i]->tl->x = -i * 8 - 240; fighter [i]->tl->z = -i * 8 - 240; fighter [i]->o = &model_figa; fighter [i]->newinit (FIGHTER_SWALLOW, 0, myrandom (120) + 200); } } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionCanyon2::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 22; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionCanyon2::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionCanyon3::MissionCanyon3 () { selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; alliedpilot [0] = PILOT_MATRIX; alliedpilot [1] = PILOT_PRIMETIME; alliedpilot [2] = PILOT_FIREBIRD; alliedpilot [3] = PILOT_LARA; id = MISSION_CANYON3; strcpy (name, "MAIN BASE"); strcpy (briefing, "THERE IS ONE MAIN BASE IN THE CANYON, CONNECTED TO A BASE ON THE MOON. WE MUST TAKE OUT THIS BASE FIRST!"); autoLFBriefing (); alliedfighters = 4; maxtime = 3000 * timestep; } void MissionCanyon3::start () { int i, px, py; day = 0; clouds = 3; weather = WEATHER_THUNDERSTORM; camera = 0; sungamma = 45; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_CANYON, NULL); l->searchPlain (-1, -1, &px, &py); playerInit (); fplayer->tl->x = px + 100; fplayer->tl->z = py + 100; fplayer->phi = 45; fplayer->target = fighter [5]; for (i = 1; i <= 4; i ++) { alliedInit (FIGHTER_REDARROW, alliedpilot [i - 1], fighter [i]); if (i % 2) fighter [i]->tl->x = px + 100 + ((i + 1) / 2) * 5; else fighter [i]->tl->x = px + 100 - ((i + 1) / 2) * 5; fighter [i]->tl->z = py + 100 + i * 5; fighter [i]->target = fighter [5 + i]; fighter [i]->phi = 45; } fighter [5]->o = &model_egg; fighter [5]->newinit (STATIC_COMPLEX1, 0, 0); fighter [5]->tl->x = px; fighter [5]->tl->z = py; fighter [5]->maxthrust = 0; fighter [5]->thrust = 0; for (i = 6; i <= 9; i ++) { fighter [i]->o = &model_hall1; fighter [i]->newinit (STATIC_HALL1, 0, 100); fighter [i]->maxthrust = 0; fighter [i]->thrust = 0; } fighter [6]->tl->x = px + 3; fighter [6]->tl->z = py + 3; fighter [7]->tl->x = px - 3; fighter [7]->tl->z = py + 3; fighter [8]->tl->x = px - 3; fighter [8]->tl->z = py - 3; fighter [9]->tl->x = px + 3; fighter [9]->tl->z = py - 3; for (i = 10; i <= 19; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (5)]; fighter [i]->phi = 180; if (i <= 15) { fighter [i]->o = &model_figb; fighter [i]->newinit (FIGHTER_CROW, 0, i * 20); } else { fighter [i]->o = &model_figd; fighter [i]->newinit (FIGHTER_BUZZARD, 0, i * 15); } fighter [i]->tl->x = px - i * 3; fighter [i]->tl->z = py - i * 3; } } int MissionCanyon3::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 19; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionCanyon3::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionMoonDefense1::MissionMoonDefense1 () { selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; selfighter [2] = FIGHTER_PHOENIX; alliedpilot [0] = PILOT_LARA; id = MISSION_MOON1; strcpy (name, "TURRETS"); strcpy (briefing, "THE DESTINY OF OUR FUTURE IS SOMEWHERE ON THE MOON. OUR NEW BOMBER GL-117 WITH ITS SUPERIOR SHIELDS SHOULD BE EXTREMELY HELPFUL. FIRSTLY, WE HAVE TO TAKE OUT THE TURRETS."); autoLFBriefing (); alliedfighters = 2; maxtime = 5000 * timestep; } void MissionMoonDefense1::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_MOON, NULL); // l->genTrench (12, 5000); playerInit (); fplayer->tl->x = 100; fplayer->tl->z = 100; fplayer->phi = 45; fplayer->target = fighter [6]; alliedInit (FIGHTER_PHOENIX, alliedpilot [0], fighter [1]); fighter [1]->tl->x = 105; fighter [1]->tl->z = 105; fighter [1]->target = fighter [6]; fighter [1]->phi = 45; for (i = 2; i <= 10; i ++) { int ix = (i - 2) % 3; int iy = (i - 2) / 3; fighter [i]->tl->x = ix * 10; fighter [i]->tl->z = iy * 10; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_flak1; fighter [i]->newinit (FLAK_AIR1, 0, 200); } for (i = 11; i <= 20; i ++) { int ix = (i - 11) % 3; int iy = (i - 11) / 3; fighter [i]->tl->x = ix * 20 + 40; fighter [i]->tl->z = iy * 20 + 40; fighter [i]->target = fighter [myrandom (2)]; fighter [i]->o = &model_mine1; fighter [i]->newinit (MISSILE_MINE1, 0, 220); } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionMoonDefense1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 10; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionMoonDefense1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionMoonBattle::MissionMoonBattle () { id = MISSION_MOONBATTLE; strcpy (name, "MOON BATTLE"); strcpy (briefing, "THERE ARE HEAVY AIR FORCES ATTACKING. WE HAVE TO FACE THEM BEFORE THEY CAN REACH OUR HEADQUARTERS."); autoLFBriefing (); selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; selfighter [2] = FIGHTER_PHOENIX; alliedfighters = 7; maxtime = 6000 * timestep; alliedpilot [0] = PILOT_MATRIX; alliedpilot [1] = PILOT_SHADOW; alliedpilot [2] = PILOT_FIREBIRD; alliedpilot [3] = PILOT_HEPTARGON; alliedpilot [4] = PILOT_LARA; alliedpilot [5] = PILOT_DRDOOM; } void MissionMoonBattle::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 45; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_MOON, NULL); playerInit (); fplayer->tl->x = 0; fplayer->tl->z = 100; for (i = 1; i <= 6; i ++) { alliedInit (FIGHTER_FALCON, alliedpilot [i - 1], fighter [i]); if (i % 2) fighter [i]->tl->x = ((i + 1) / 2) * 5; else fighter [i]->tl->x = -((i + 1) / 2) * 5; fighter [i]->tl->z = 100 + i * 5; fighter [i]->target = fighter [7 + i]; } for (i = 7; i <= 25; i ++) { fighter [i]->party = 0; fighter [i]->target = fighter [myrandom (7)]; fighter [i]->o = &model_fige; fighter [i]->newinit (FIGHTER_CROW, 0, 450 - i * 10); if (i <= 16) { fighter [i]->tl->x = -i * 5; fighter [i]->tl->z = -i * 5; } else if (i <= 24) { fighter [i]->tl->x = -i * 8 - 150; fighter [i]->tl->z = -i * 8 - 150; fighter [i]->o = &model_figh; fighter [i]->newinit (FIGHTER_BLACKBIRD, 0, 450 - i * 10); } else { fighter [i]->tl->x = -i * 8 - 350; fighter [i]->tl->z = -i * 8 - 350; } } invertZ (); // only invert if NO objects are mapped to flat ground } int MissionMoonBattle::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 24; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionMoonBattle::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionMoonDogfight1::MissionMoonDogfight1 () { selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; selfighter [2] = FIGHTER_PHOENIX; alliedpilot [0] = PILOT_MATRIX; id = MISSION_MOON2; strcpy (name, "ELITE DOGFIGHT"); strcpy (briefing, "ENEMY FIGHTERS HAVE APPEARED IN THIS REGION. CAREFUL, THERE MIGHT BE SOME ELITE PILOTS AMONG THEM."); autoLFBriefing (); alliedfighters = 2; maxtime = 3000 * timestep; } void MissionMoonDogfight1::start () { day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_MOON, NULL); playerInit (); fplayer->tl->x = -100; fplayer->tl->z = -100; fplayer->phi = 200; fplayer->target = fighter [2]; fighter [1]->tl->x = -110; fighter [1]->tl->z = -110; fighter [1]->phi = 200; fighter [1]->target = fighter [3]; alliedInit (FIGHTER_REDARROW, alliedpilot [0], fighter [1]); fighter [2]->tl->x = 0; fighter [2]->tl->z = 0; fighter [2]->target = fighter [0]; fighter [2]->phi = 200; fighter [2]->o = &model_figh; fighter [2]->newinit (FIGHTER_BLACKBIRD, 0, 150); fighter [3]->tl->x = 10; fighter [3]->tl->z = 10; fighter [3]->target = fighter [1]; fighter [3]->phi = 200; fighter [3]->o = &model_figh; fighter [3]->newinit (FIGHTER_BLACKBIRD, 0, 200); fighter [4]->tl->x = 200; fighter [4]->tl->z = 200; fighter [4]->target = fighter [0]; fighter [4]->phi = 200; fighter [4]->o = &model_figh; fighter [4]->newinit (FIGHTER_BLACKBIRD, 0, 60); fighter [5]->tl->x = 210; fighter [5]->tl->z = 210; fighter [5]->target = fighter [1]; fighter [5]->phi = 200; fighter [5]->o = &model_figh; fighter [5]->newinit (FIGHTER_BLACKBIRD, 0, 140); invertZ (); // only invert if NO objects are mapped to flat ground } int MissionMoonDogfight1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 15; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionMoonDogfight1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionTunnel1::MissionTunnel1 () { selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; id = MISSION_TUNNEL1; strcpy (name, "TUNNEL"); strcpy (briefing, "THE TERRAIN TO GET NEAR THE ENEMY'S HQ IS GUARDED BY ELITE BUZZARD FIGHTERS. BUT THERE IS A TRENCH WE CAN PROTUDE TO GET NEAR THEIR BASE WITHOUT BEING SIGHTED. FLY AHEAD TO SCOUT THE TRENCH. JUST MAKE YOUR WAY THROUGH!"); autoLFBriefing (); alliedfighters = 1; maxtime = 5000 * timestep; } void MissionTunnel1::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 60; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_CANYON_TRENCH, NULL); playerInit (); fplayer->tl->x = 256; fplayer->tl->z = 256; fplayer->phi = 90; fplayer->target = fighter [6]; for (i = 1; i <= 9; i ++) { int ix = (i / 2) * 8 - 200 + 256; int iy = (i & 1) * 4 - 2 + 256; fighter [i]->tl->x = ix; fighter [i]->tl->z = iy; fighter [i]->target = fighter [0]; fighter [i]->o = &model_flak1; fighter [i]->newinit (FLAK_AIR1, 0, 200); } fighter [i]->tl->x = -200 + 256; fighter [i]->tl->z = 0 + 256; fighter [i]->target = fighter [0]; fighter [i]->o = &model_flarak1; fighter [i]->newinit (FLARAK_AIR1, 0, 200); for (i = 11; i <= 15; i ++) { int ix = (i - 11) * 10 - 100 + 256; int iy = (i % 2) * 3 - 3 + 256; fighter [i]->tl->x = ix; fighter [i]->tl->z = iy; fighter [i]->target = fighter [0]; fighter [i]->o = &model_flak1; fighter [i]->newinit (FLAK_AIR1, 0, 300); } fighter [i]->tl->x = -250 + 256; fighter [i]->tl->z = -2 + 256; fighter [i]->target = fighter [0]; fighter [i]->o = &model_flarak1; fighter [i]->newinit (FLARAK_AIR1, 0, 200); i ++; fighter [i]->tl->x = -250 + 256; fighter [i]->tl->z = 2 + 256; fighter [i]->target = fighter [0]; fighter [i]->o = &model_flarak1; fighter [i]->newinit (FLARAK_AIR1, 0, 200); i ++; fighter [i]->tl->x = -350 + 256; fighter [i]->tl->z = 0 + 256; fighter [i]->o = &model_barrier1; fighter [i]->newinit (STATIC_BARRIER1, 0, 100); for (i = 19; i < 26; i ++) { fighter [i]->newinit (FIGHTER_BUZZARD, 0, i * 8); fighter [i]->target = fighter [0]; fighter [i]->o = &model_figd; fighter [i]->tl->x = 256; fighter [i]->tl->z = 256; fighter [i]->deactivate (); } } int MissionTunnel1::processtimer (Uint32 dt) { // bool b = false; int i; if (timer <= 0) fplayer->tl->y = l->getHeight (fplayer->tl->x, fplayer->tl->z) + 5; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } // if (timer > 40 * timestep) { if (fplayer->tl->y - l->getHeight (fplayer->tl->x, fplayer->tl->z) > 15) { if (!fighter [24]->active && fighter [24]->shield > 0) { for (i = 19; i < 26; i ++) { fighter [i]->activate (); fighter [i]->tl->x = fplayer->tl->x - 80 - (i - 18) * 8; fighter [i]->tl->z = fplayer->tl->z - 20; fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + 25; } } } } if (fplayer->tl->x < -450 + 256) return 1; return 0; } void MissionTunnel1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionMoonBase1::MissionMoonBase1 () { selfighter [0] = FIGHTER_REDARROW; selfighter [1] = FIGHTER_HAWK2; selfighter [2] = FIGHTER_PHOENIX; id = MISSION_MOON3; strcpy (name, "SNEAKING"); strcpy (briefing, "TIME TO ATTACK. THE BASE IS HEAVILY GUARDED BY BLACKBIRDS. USE AN ASTEROID FIELD TO GET NEAR THE BASE AND DESTROY IT."); autoLFBriefing (); alliedfighters = 1; maxtime = 3500 * timestep; } void MissionMoonBase1::start () { int i; day = 0; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 50; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_FLAT_MOON, NULL); playerInit (); fplayer->tl->x = -20; fplayer->tl->z = -40; fplayer->phi = 200; fplayer->target = fighter [29]; for (i = 1; i < 21; i ++) { fighter [i]->tl->x = cosi [(i * 140) % 360] * 4.5; fighter [i]->tl->z = i * 0.6; fighter [i]->tl->y = l->getHeight (fighter [i]->tl->x, fighter [i]->tl->z) + sine [(i * 160) % 360] * 4.0 + 25.0; fighter [i]->target = fighter [0]; fighter [i]->phi = 200; fighter [i]->o = &model_aster1; fighter [i]->newinit (ASTEROID, 0, 150); fighter [i]->party = 0; } for (i = 21; i < 29; i ++) { fighter [i]->tl->x = (i - 20) * 4; fighter [i]->tl->z = 210; fighter [i]->target = fighter [0]; fighter [i]->phi = 50; fighter [i]->o = &model_figh; fighter [i]->newinit (FIGHTER_BLACKBIRD, 0, 200); } fighter [29]->tl->x = 50 + difficulty * 15; fighter [29]->tl->z = 180 + difficulty * 30; fighter [29]->o = &model_base1; fighter [29]->newinit (STATIC_BASE1, 0, 100); } int MissionMoonBase1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 29; i <= 29; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionMoonBase1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 4, -2, name, &textcolor); } } MissionMultiDogfight1::MissionMultiDogfight1 () { id = MISSION_MULTIPLAYER_DOGFIGHT; strcpy (name, "MULTIPLAYER"); strcpy (briefing, "THIS IS JUST A SIMPLE DEMO MISSION"); autoLFBriefing (); alliedfighters = 2; } void MissionMultiDogfight1::start () { int i; day = 1; clouds = 0; weather = WEATHER_SUNNY; camera = 0; sungamma = 25; if (l != NULL) delete l; l = new GLLandscape (space, LANDSCAPE_ALPINE, NULL); for (i = 0; i <= 1; i ++) { fighter [i]->activate (); fighter [i]->ai = false; fighter [i]->party = i; fighter [i]->target = fighter [0]; fighter [i]->o = &model_fig; fighter [i]->tl->x = 50 + i * 30; fighter [i]->tl->z = 100; } fighter[1]->ai = true; if (isserver) fplayer = fighter [0]; else fplayer = fighter [1]; if (controls != 100) fplayer->easymodel = 2; } int MissionMultiDogfight1::processtimer (Uint32 dt) { bool b = false; int i; timer += dt; if (!fplayer->active && fplayer->explode >= 35 * timestep) { return 2; } for (i = 0; i <= 4; i ++) { if (fighter [i]->active) if (fighter [i]->party == 0) b = true; } if (b) return 0; return 1; } void MissionMultiDogfight1::draw () { if (timer >= 0 && timer <= 50 * timestep) { font1->drawTextCentered (0, 0, -1, "DOGFIGHT"); } } #endif gl-117-1.3.2/src/mission.h0000644000175000017500000002510510145416156014320 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file contains all mission data and definitions (really trivial). */ #ifndef IS_MISSION_H #define IS_MISSION_H #include "model.h" // ok #include "aiobject.h" // ok #define MISSION_DEMO 0 #define MISSION_CAMPAIGN1 1 #define MISSION_TEST1 1 #define MISSION_TEST2 2 #define MISSION_TRANSPORT 10 #define MISSION_CONVOY 11 #define MISSION_DOGFIGHT2 12 #define MISSION_AIRBATTLE 13 #define MISSION_SADEFENSE 14 #define MISSION_SCOUT 15 #define MISSION_BASE 16 #define MISSION_DEPOT 17 #define MISSION_DEFEND1 20 #define MISSION_DOGFIGHT3 21 #define MISSION_TANK1 22 #define MISSION_CONVOY2 23 #define MISSION_SHIP1 25 #define MISSION_SHIP2 26 #define MISSION_SHIP3 27 #define MISSION_CANYON1 30 #define MISSION_CANYON2 31 #define MISSION_TUNNEL1 36 #define MISSION_CANYON3 32 #define MISSION_MOON1 33 #define MISSION_MOONBATTLE 37 #define MISSION_MOON2 34 #define MISSION_MOON3 35 #define MISSION_CAMPAIGN2 40 #define MISSION_TUTORIAL 80 #define MISSION_DOGFIGHT 81 #define MISSION_TUTORIAL2 82 #define MISSION_TUTORIAL3 83 #define MISSION_FREEFLIGHT1 84 #define MISSION_DEATHMATCH1 85 #define MISSION_DEATHMATCH2 86 #define MISSION_DEATHMATCH3 87 #define MISSION_TEAMBASE1 88 #define MISSION_WAVES1 89 #define MISSION_CUSTOM1 800 #define MISSION_CUSTOM2 999 #define MISSION_MULTIPLAYER 1000 #define MISSION_MULTIPLAYER_DOGFIGHT 1000 class Mission { protected: void autoLFBriefing (); public: int timer; // mission timer int maxtime; // maximum time to get a time bonus int alliedfighters; // number of allied fighters char briefing [1024]; // briefing text char name [1024]; // mission title int id; // mission id int selfighter [3]; // fighter to choose int selfighters, wantfighter; // selected fighter int selweapon [3]; // weapon pack to choose int selweapons, wantweapon; // selected weapon pack int alliedpilot [10]; // id of allied pilots CColor textcolor; // standard text color to blend in during flight int difficulty; // difficulty level for THIS mission int heading; // define northern direction (the sun is at 0 degree) int state; // different mission states (individual meaning) int physics; // action=0 or simulation=1 Mission (); virtual ~Mission () {} void playerInit (); void alliedInit (int fighterid, int pilotid, AIObj *aiobj); void init (); virtual void start (); // custom definitions for a mission virtual int processtimer (Uint32 dt); // custom definitions controlled by the timer, mission success/failure virtual void draw (); // custom definitions that have to be drawn void invertZ (); // invert Z coordinate of all fighters and objects void checkScore (int missionstate, int timebonus, int fighterkills, int shipkills, int tankkills, int otherkills, int shieldbonus, int points); int getScore (int missionstate, int timebonus, int fighterkills, int shipkills, int tankkills, int otherkills, int shieldbonus, int points); int getScore (int missionstate); }; class MissionDemo1 : public Mission { public: MissionDemo1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTutorial1 : public Mission { public: MissionTutorial1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTutorial2 : public Mission { public: MissionTutorial2 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTutorial3 : public Mission { public: MissionTutorial3 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDogfight1 : public Mission { public: int laststate, texttimer; MissionDogfight1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionFreeFlight1 : public Mission { public: int laststate, texttimer; MissionFreeFlight1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDeathmatch1 : public Mission { public: int laststate, texttimer; MissionDeathmatch1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDeathmatch2 : public Mission { public: int laststate, texttimer; MissionDeathmatch2 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDeathmatch3 : public Mission { public: int laststate, texttimer; MissionDeathmatch3 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTeamBase1 : public Mission { public: int laststate, texttimer; int team1x, team1y, team2x, team2y; MissionTeamBase1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionWaves1 : public Mission { public: int laststate, texttimer; MissionWaves1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTest1 : public Mission { public: MissionTest1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTest2 : public Mission { public: MissionTest2 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTransport : public Mission { public: MissionTransport (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionConvoy : public Mission { public: MissionConvoy (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDogfight2 : public Mission { public: MissionDogfight2 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionAirBattle : public Mission { public: MissionAirBattle (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionGround1 : public Mission { public: MissionGround1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionScout : public Mission { public: MissionScout (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionBase : public Mission { public: MissionBase (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDepot : public Mission { public: MissionDepot (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDefend1 : public Mission { public: MissionDefend1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionDogfight3 : public Mission { public: MissionDogfight3 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTank1 : public Mission { public: MissionTank1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionConvoy2 : public Mission { public: MissionConvoy2 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionShip1 : public Mission { public: MissionShip1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionShip2 : public Mission { public: MissionShip2 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionShip3 : public Mission { public: MissionShip3 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionCanyon1 : public Mission { public: MissionCanyon1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionCanyon2 : public Mission { public: MissionCanyon2 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionCanyon3 : public Mission { public: MissionCanyon3 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionMoonDefense1 : public Mission { public: MissionMoonDefense1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionMoonBattle : public Mission { public: MissionMoonBattle (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionMoonDogfight1 : public Mission { public: MissionMoonDogfight1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionTunnel1 : public Mission { public: MissionTunnel1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionMoonBase1 : public Mission { public: MissionMoonBase1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionMoon1 : public Mission { public: MissionMoon1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; class MissionMultiDogfight1 : public Mission { public: MissionMultiDogfight1 (); virtual void start (); virtual int processtimer (Uint32 dt); virtual void draw (); }; extern Mission *mission; extern Mission *missionnew; #endif gl-117-1.3.2/src/model.cpp0000644000175000017500000012265410145416520014274 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes the memory representation of any 3D model. For a detailed description of the data structure look at model.h */ #ifndef IS_MODEL_H #include #include #include #include #include "model.h" #include "gl.h" #include "mathtab.h" #include "loader_tga.h" CColor::CColor () { memset (c, 255, 4 * sizeof (unsigned char)); } CColor::CColor (CColor *col) { memcpy (c, col->c, 4 * sizeof (unsigned char)); } CColor::CColor (short cr, short cg, short cb) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = 255; } CColor::CColor (short cr, short cg, short cb, short ca) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = ca; } CColor::~CColor () {} void CColor::setColor (CColor *col) { memcpy (c, col->c, 4 * sizeof (unsigned char)); } void CColor::setColor (short cr, short cg, short cb, short ca) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = ca; } void CColor::setColor (short cr, short cg, short cb) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = 255; } bool CColor::isEqual (CColor *col) { return memcmp (c, col->c, 4 * sizeof (unsigned char)) == 0; } void CColor::take (CColor *col) { memcpy (c, col->c, 4 * sizeof (unsigned char)); } CTexture::CTexture () { texlight = 1.0F; width = 0; height = 0; textureID = -1; data = NULL; texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; mipmap = true; quality = 0; } CTexture::~CTexture () { if (data != NULL) delete data; } int CTexture::loadFromTGA (char *fname, int quality, int alphatype, int mipmap) // only 24 bit TGA { int i, i2; #ifdef LOADER_TGA_H data = tga_load (fname, &width, &height); // global 32 bpp texture buffer if (!data) return 0; #else unsigned char skip; FILE *in = fopen (fname, "rb"); if (!in) return 0; fread (&skip, 1, 1, in); fseek (in, 12, SEEK_SET); fread (&width, 2, 1, in); fread (&height, 2, 1, in); fseek (in, 18 + skip, SEEK_SET); unsigned char *buf = (unsigned char *) malloc (width * height * 3); // preload file buffer if (buf == NULL) error_outofmemory (); data = (unsigned char *) malloc (width * height * 4); // global 32 bpp texture buffer if (data == NULL) error_outofmemory (); fread (buf, width * height * 3, 1, in); #endif long texl = 0; long texr = 0; long texg = 0; long texb = 0; for (i = 0; i < height; i ++) for (i2 = 0; i2 < width; i2 ++) { int n2 = (i * width + i2)*4; texl += (int) data [n2+2] + data [n2+1] + data [n2]; texr += (int) data [n2]; texg += (int) data [n2 + 1]; texb += (int) data [n2 + 2]; if (alphatype == 0) // alpha=255 or 0 { if (data [n2+0] + data [n2+1] + data [n2+2] < 30) data [n2+3] = 0; else data [n2+3] = 255; } else if (alphatype == 1) // alpha=maxcolor { int max = (data [n2+0] > data [n2+1] ? data [n2+0] : data [n2+1]); max = (max > data [n2+2] ? max : data [n2+2]); data [n2+3] = max; } else if (alphatype == 2) // alpha=red { data [n2+3] = data [n2]; } else if (alphatype == 3) // alpha=midcolor*6 or 0 { int test = (data [n2] + data [n2 + 1] + data [n2 + 2]) * 2; if (test > 255) test = 255; else if (test < 30) test = 0; data [n2+3] = (unsigned char) test; } else if (alphatype == 4) // alpha=red, color=white { data [n2+3] = data [n2+0]; data [n2+0] = 255; data [n2+1] = 255; data [n2+2] = 255; } else if (alphatype == 5) // alpha=red*2, color=black { int test = data [n2+0] * 2; if (test > 255) test = 255; data [n2+3] = test; data [n2+0] = 0; data [n2+1] = 0; data [n2+2] = 0; } else if (alphatype == 6) // alpha=red, color=black { data [n2+3] = data [n2+0]; data [n2+0] = 0; data [n2+1] = 0; data [n2+2] = 0; } } #ifndef LOADER_TGA_H free (buf); #endif texlight = (float) texl / width / height / 3 / 256; // average brightness texred = (float) texr / width / height / 256; // average red texgreen = (float) texg / width / height / 256; // average green texblue = (float) texb / width / height / 256; // average blue strcpy (name, fname); this->quality = quality; this->mipmap = (mipmap != 0); return 1; } void CTexture::getColor (CColor *c, int x, int y) { if (x < 0) x = (int) -x % width; if (y < 0) y = (int) -y % height; if (x >= width) x = (int) x % width; if (y >= height) y = (int) y % height; int offs = y * width + x; offs <<= 2; c->c [0] = data [offs]; c->c [1] = data [offs + 1]; c->c [2] = data [offs + 2]; c->c [3] = data [offs + 3]; } CVector3::CVector3 () { x = y = z = 0; } CVector3::CVector3 (float x, float y, float z) { this->x = x; this->y = y; this->z = z; } CVector3::CVector3 (CVector3 *v) { x = v->x; y = v->y; z = v->z; } void CVector3::set (float x, float y, float z) { this->x = x; this->y = y; this->z = z; } void CVector3::neg () { x = -x; y = -y; z = -z; } void CVector3::add (CVector3 *v) { x += v->x; y += v->y; z += v->z; } void CVector3::sub (CVector3 *v) { x -= v->x; y -= v->y; z -= v->z; } void CVector3::mul (float fac) { x *= fac; y *= fac; z *= fac; } void CVector3::crossproduct (CVector3 *v) { float nx = y * v->z - z * v->y; float ny = z * v->x - x * v->z; float nz = x * v->y - y * v->x; x = nx; y = ny; z = nz; } float CVector3::dotproduct (CVector3 *v) { return x * v->x + y * v->y + z * v->z; } float CVector3::length () { return (float) sqrt (x * x + y * y + z * z); } void CVector3::norm () { float d = sqrt (x * x + y * y + z * z); if (d == 0) d = 1E-10; x /= d; y /= d; z /= d; } bool CVector3::isEqual (CVector3 *v) { return x == v->x && y == v->y && z == v->z; } bool CVector3::isEqual (CVector3 *v, float tol) { return x >= v->x - tol && x <= v->x + tol && y >= v->y - tol && y <= v->y + tol && z >= v->z - tol && z <= v->z + tol; } void CVector3::take (CVector3 *v) { x = v->x; y = v->y; z = v->z; } bool CVector2::isEqual (CVector2 *v) { return x == v->x && y == v->y; } bool CVector2::isEqual (CVector2 *v, float tol) { return x >= v->x - tol && x <= v->x + tol && y >= v->y - tol && y <= v->y + tol; } void CVector2::take (CVector2 *v) { x = v->x; y = v->y; } CVertex::CVertex () { triangles = 0; } CVertex::CVertex (CVertex *v) { take (v); } void CVertex::addNormal (CVector3 *n) { triangles ++; normal.x = (normal.x * (triangles - 1) + n->x) / (float) triangles; normal.y = (normal.y * (triangles - 1) + n->y) / (float) triangles; normal.z = (normal.z * (triangles - 1) + n->z) / (float) triangles; } void CVertex::addColor (CColor *c) { triangles ++; for (int i = 0; i < 4; i ++) { color.c [i] = (unsigned char) (((float) color.c [i] * (triangles - 1) + c->c [i]) / (float) triangles); } } void CVertex::take (CVertex *v) { vector.take (&v->vector); normal.take (&v->normal); color.take (&v->color); triangles = v->triangles; } double pitab; float sintab [360], costab [360]; CRotation::CRotation () { a = b = c = 0; calcRotation (); pitab = 4 * atan (1); for (int i = 0; i < 360; i ++) { sintab [i] = sin (pitab / 180 * i); costab [i] = cos (pitab / 180 * i); } } CRotation::~CRotation () {} void CRotation::setAngles (short a, short b, short c) { a %= 360; if (a < 0) a += 360; b %= 360; if (b < 0) b += 360; c %= 360; if (c < 0) c += 360; this->a = a; this->b = b; this->c = c; } void CRotation::addAngles (short a, short b, short c) { this->a += a; this->b += b; this->c += c; this->a %= 360; if (this->a < 0) this->a += 360; this->b %= 360; if (this->b < 0) this->b += 360; this->c %= 360; if (this->c < 0) this->c += 360; } void CRotation::calcRotation () { rot [0] [0] = costab [c] * costab [b]; rot [0] [1] = sintab [a] * sintab [b] * costab [c] - sintab [c] * costab [a]; rot [0] [2] = sintab [a] * sintab [c] + costab [a] * sintab [b] * costab [c]; rot [1] [0] = sintab [c] * costab [b]; rot [1] [1] = costab [c] * costab [a] + sintab [a] * sintab [b] * sintab [c]; rot [1] [2] = costab [a] * sintab [b] * sintab [c] - sintab [a] * costab [c]; rot [2] [0] = -sintab [b]; rot [2] [1] = sintab [a] * costab [b]; rot [2] [2] = costab [a] * costab [b]; } float CRotation::rotateX (CVector3 *v) { return v->x * rot [0] [0] + v->y * rot [0] [1] + v->z * rot [0] [2]; } float CRotation::rotateY (CVector3 *v) { return v->x * rot [1] [0] + v->y * rot [1] [1] + v->z * rot [1] [2]; } float CRotation::rotateZ (CVector3 *v) { return v->x * rot [2] [0] + v->y * rot [2] [1] + v->z * rot [2] [2]; } float CRotation::getsintab (int a) { if (a >= 0 && a < 360) return sintab [a]; return 0; } float CRotation::getcostabntab (int a) { if (a >= 0 && a < 360) return costab [a]; return 0; } void CRotation::take (CRotation *r) { a = r->a; b = r->b; c = r->c; } void CTriangle::getNormal (CVector3 *n) { CVector3 dummy; n->take (&v [1]->vector); n->sub (&v [0]->vector); dummy.take (&v [2]->vector); dummy.sub (&v [0]->vector); n->crossproduct (&dummy); } void CTriangle::setVertices (CVertex *a, CVertex *b, CVertex *c) { int i; CVector3 dummy; v [0] = a; v [1] = b; v [2] = c; getNormal (&dummy); dummy.norm (); if (dummy.z > 0) dummy.neg (); for (i = 0; i < 3; i ++) { v [i]->addNormal (&dummy); } } void CQuad::getNormal (CVector3 *n) { CVector3 dummy; n->take (&v [1]->vector); n->sub (&v [0]->vector); dummy.take (&v [3]->vector); dummy.sub (&v [0]->vector); n->crossproduct (&dummy); } void CQuad::setVertices (CVertex *a, CVertex *b, CVertex *c, CVertex *d) { int i; CVector3 dummy; v [0] = a; v [1] = b; v [2] = c; v [3] = d; getNormal (&dummy); dummy.norm (); if (dummy.z > 0) dummy.neg (); for (i = 0; i < 4; i ++) { v [i]->addNormal (&dummy); } } CMaterial::CMaterial () { uscale = 1; vscale = 1; uoffset = 0; voffset = 0; wrot = 0; char tmp [255] = {0}; strcpy (filename, tmp); strcpy (name, tmp); } CObject::CObject () { numVertices = 0; numTriangles = 0; numQuads = 0; numTexVertex = 0; material = NULL; hasTexture = false; } CObject::~CObject () { } int CObject::addVertex (CVertex *w) { int i; for (i = 0; i < numVertices; i ++) if (w->vector.isEqual (&vertex [i].vector, 1e-3F) && w->color.isEqual (&vertex [i].color)) break; if (i == numVertices) vertex [numVertices ++].take (w); return i; } void CObject::setColor (CColor *col) { int i; for (i = 0; i < numVertices; i ++) memcpy (vertex [i].color.c, col, 4 * sizeof (unsigned char)); } CModel::CModel () { numObjects = 0; numMaterials = 0; shading = 0; displaylist = true; list1 = -1; list2 = -1; list3 = -1; scale = 1.0F; name [0] = '0'; nolight = false; alpha = false; light_ambient [0] = 0.3; light_ambient [1] = 0.3; light_ambient [2] = 0.3; light_ambient [3] = 1; light_diffuse [0] = 0.9; light_diffuse [1] = 0.9; light_diffuse [2] = 0.9; light_diffuse [3] = 1; light_ambient2 [0] = 0.2; light_ambient2 [1] = 0.2; light_ambient2 [2] = 0.2; light_ambient2 [3] = 1; light_diffuse2 [0] = 0.1; light_diffuse2 [1] = 0.1; light_diffuse2 [2] = 0.1; light_diffuse [3] = 1; numRefpoints = 0; refpoint = NULL; va = new VertexArray (VERTEXARRAY_V3N3C4T2); } void CModel::setName (char *name) { strcpy (this->name, name); } void CModel::addMaterial (CMaterial *material) { this->material [numMaterials] = new CMaterial; if (this->material [numMaterials] == NULL) exit (100); if (material != NULL) memcpy (this->material [numMaterials], material, sizeof (CMaterial)); numMaterials ++; } void CModel::addObject (CObject *object) { this->object [numObjects] = new CObject; if (this->object [numObjects] == NULL) exit (101); if (object != NULL) memcpy (this->object [numObjects], object, sizeof (CObject)); numObjects ++; rotcol = 0; } void CModel::addRefPoint (CVector3 *tl) { int i, i2; if (refpoint == NULL) { refpoint = new CVector3 [10]; } for (i = 0; i < numRefpoints; i ++) { if (tl->z < refpoint [i].z) { for (i2 = numRefpoints; i2 > i; i2 --) { refpoint [i2].take (&refpoint [i2 - 1]); } refpoint [i].take (tl); goto fertigref1; } } refpoint [numRefpoints].take (tl); fertigref1:; numRefpoints ++; } CModel::~CModel () { int i; for (i = 0; i < numMaterials; i ++) delete material [i]; for (i = 0; i < numObjects; i ++) delete object [i]; if (refpoint) { delete refpoint; } } void CModel::setColor (CColor *col) { int i; for (i = 0; i < numObjects; i++) { object [i]->setColor (col); } } void CModel::drawVertexNormals (CObject *cm, float zoom) { glColor3ub (255, 0, 0); glBegin (GL_LINES); for (int j = 0; j < cm->numVertices; j++) if (cm->vertex [j].triangles > 0) { glVertex3f (cm->vertex [j].vector.x*zoom, cm->vertex [j].vector.y*zoom, cm->vertex [j].vector.z*zoom); glVertex3f ((cm->vertex [j].vector.x + cm->vertex [j].normal.x / 5)*zoom, (cm->vertex [j].vector.y + cm->vertex [j].normal.y / 5)*zoom, (cm->vertex [j].vector.z + cm->vertex [j].normal.z / 5)*zoom); } glEnd (); } int CModel::rotateColor (int n) { if (n == 0) return 0; rotcol ++; if (rotcol > n) rotcol = 0; return rotcol; } void CModel::scaleTexture (float fx, float fy) { int i; for (i = 0; i < numObjects; i ++) { CObject *o = object [i]; int i2; for (i2 = 0; i2 < o->numVertices; i2 ++) { o->vertex [i2].tex.x *= fx; o->vertex [i2].tex.y *= fy; } } } void CModel::draw (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, float lum, int explode) { if (nolight) // if model wants to be rendered without light, call draw2 { glDisable (GL_LIGHTING); draw2 (tl, tl2, rot, zoom, explode); glEnable (GL_LIGHTING); return; } if (tl == NULL) tl = &tlnull; if (tl2 == NULL) tl2 = &tlnull; if (rot == NULL) rot = &rotnull; int i, j; CObject *cm; float la [4] = { 0.2, 0.2, 0.2, 1.0}; if (lum >= 1) { float addl = lum; if (addl >= 5) addl = 5; la [0] = 0.2 * addl; la [1] = 0.2 * addl; la [2] = 0.2 * addl; } glLightfv (GL_LIGHT0, GL_AMBIENT, la); float ld [4] = { 0.7, 0.7, 0.7, 1.0}; if (lum != 1) { ld [0] *= lum; ld [1] *= lum; ld [2] *= lum; if (ld [0] > 1.0) ld [0] = 1.0; if (ld [1] > 1.0) ld [1] = 1.0; if (ld [2] > 1.0) ld [2] = 1.0; } glLightfv (GL_LIGHT0, GL_DIFFUSE, ld); for (i = 0; i < numObjects; i ++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { if (antialiasing) gl->enableLinearTexture (cm->material->texture->textureID); else gl->disableLinearTexture (cm->material->texture->textureID); } } zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); if (shading == 1) glShadeModel (GL_FLAT); else glShadeModel (GL_SMOOTH); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); } for (i = 0; i < numObjects; i ++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { glEnable (GL_TEXTURE_2D); glColor4f (1, 1, 1, 1); glBindTexture (GL_TEXTURE_2D, cm->material->texture->textureID); } else { glDisable (GL_TEXTURE_2D); glColor4f (1, 1, 1, 1); } if (cm->material != NULL) { if (cm->material->color.c [0] > 190 && cm->material->color.c [1] > 190 && cm->material->color.c [2] < 20) glDisable (GL_LIGHTING); else glEnable (GL_LIGHTING); } CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { if (numMaterials/* && cm->material->textureID >= 0*/) { unsigned char *color = cm->material->color.c; /*material[cm->material->textureID]->color.c;*/ if (color [0] > 190 && color [1] > 190 && color [2] < 20) { rotateColor (30); va->glColor4ub (color [0] + rotcol, color [1] + rotcol, color [2] + rotcol * 3, 255); } else { va->glColor4ub (color [0], color [1], color [2], color [3]); } } } // glColor3ub (255, 255, 0); va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex++) { v = cm->quad [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { if (numMaterials && cm->material->texture->textureID >= 0) { unsigned char *pColor = material [cm->material->texture->textureID]->color.c; va->glColor4ub (pColor [0], pColor [1], pColor [2], pColor [3]); } } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } glPopMatrix (); } void CModel::draw2 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, int explode) { int i, j; CObject *cm; for (i = 0; i < numObjects; i ++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { if (antialiasing) gl->enableLinearTexture (cm->material->texture->textureID); else gl->disableLinearTexture (cm->material->texture->textureID); } } zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); bool listgen = false; if (list2 == -1 && explode <= 0 && displaylist) { listgen = true; gl->genList (&list2); } if (listgen || explode > 0 || !displaylist) { if (shading == 1) glShadeModel (GL_FLAT); else glShadeModel (GL_SMOOTH); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.01); } for (i = 0; i < numObjects; i++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { glEnable (GL_TEXTURE_2D); glColor4ub (255, 255, 255, 255); glBindTexture (GL_TEXTURE_2D, cm->material->texture->textureID); } else { glDisable (GL_TEXTURE_2D); glColor4ub (255, 255, 255, 255); } CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor4ub (pColor [0], pColor [1], pColor [2], pColor [3]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex ++) { v = cm->quad [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor4ub (pColor [0], pColor [1], pColor [2], pColor [3]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } if (listgen) glEndList (); } else glCallList (list2); glPopMatrix (); } void CModel::draw3 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, float lum, int explode) { int i, j; CObject *cm; // float mx=0, my=0, mz=0, ix=0, iy=0, iz=0; zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); } for (i = 0; i < numObjects; i++) { if (numObjects <= 0) break; cm = object [i]; glDisable (GL_TEXTURE_2D); glColor3ub (255, 255, 255); CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; // glNormal3f (v->normal.x, v->normal.y, v->normal.z); unsigned char *pColor = v->color.c; float red = lum * pColor [0] / 256; float green = lum * pColor [1] / 256; float blue = lum * pColor [2] / 256; if (red >= 1.0) red = 1.0; if (green >= 1.0) green = 1.0; if (blue >= 1.0) blue = 1.0; va->glColor3f (red, green, blue); va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex ++) { v = cm->quad [j].v [whichVertex]; // glNormal3f (v->normal.x, v->normal.y, v->normal.z); unsigned char *pColor = v->color.c; float red = lum * pColor [0] / 256; float green = lum * pColor [1] / 256; float blue = lum * pColor [2] / 256; if (red >= 1.0) red = 1.0; if (green >= 1.0) green = 1.0; if (blue >= 1.0) blue = 1.0; va->glColor3f (red, green, blue); va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } glPopMatrix (); } void CModel::draw3 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, int explode) { int i, j; CObject *cm; // float mx=0, my=0, mz=0, ix=0, iy=0, iz=0; zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); bool listgen = false; if (list3 == -1 && explode <= 0 && displaylist) { listgen = true; gl->genList (&list3); } if (listgen || explode > 0 || !displaylist) { if (shading == 1) glShadeModel (GL_FLAT); else glShadeModel (GL_SMOOTH); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); } for (i = 0; i < numObjects; i++) { if (numObjects <= 0) break; cm = object [i]; glDisable (GL_TEXTURE_2D); glColor3ub (255, 255, 255); CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture && false) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor3ub (pColor[0], pColor[1], pColor[2]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex ++) { v = cm->quad [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture && false) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor3ub (pColor[0], pColor[1], pColor[2]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } if (listgen) glEndList (); } else glCallList (list3); glPopMatrix (); } CSphere::CSphere () {} CSphere::CSphere (float radius, int segments, float dx, float dy, float dz) { init (radius, segments, dx, dy, dz, 0); } CSphere::~CSphere () {} int CSphere::random (int n) { if (n == 0) return 0; return rand () % n; } void CSphere::init (float radius, int segments) { init (radius, segments, 1, 1, 1, 0); } void CSphere::init (float radius, int segments, float dx, float dy, float dz, int randomized) { CObject *co = new CObject; if (co == NULL) exit (100); co->vertex = new CVertex [segments * segments * 2 + 2]; if (co->vertex == NULL) exit (100); co->triangle = new CTriangle [segments * 4]; if (co->triangle == NULL) exit (100); co->quad = new CQuad [segments * segments * 2]; if (co->quad == NULL) exit (100); this->radius = radius; this->segments = segments; this->dx = dx; this->dy = dy; this->dz = dz; int p [4]; float step = 180.0 / segments; CRotation *rot = new CRotation (); if (rot == NULL) exit (100); CVertex *w = new CVertex (); if (w == NULL) exit (100); for (float i = 0; i < 180; i += step) for (float i2 = 0; i2 < 360; i2 += step) { int a = ((int) i) % 360, b = ((int) i2) % 360; float si = rot->getsintab (a), ci = rot->getcostabntab (a); float si2 = rot->getsintab (b), ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [0] = co->addVertex (w); a = ((int) (i + step)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179 || i2 == 0) p [1] = co->addVertex (w); b = ((int) (i2 + step)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179) p [2] = co->addVertex (w); a = ((int) i) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [3] = co->addVertex (w); if (i == 0 || i >= 180 - step - 1) { if (!random (randomized)) { if (i == 0) co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]]); else co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [3]]); } } else { if (!random (randomized)) co->quad [co->numQuads ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]], &co->vertex [p [3]]); } } delete rot; delete w; addObject (co); setColor (new CColor (128, 128, 128, 255)); for (int i2 = 0; i2 < object [0]->numVertices / 2; i2 ++) { object [0]->vertex [i2].normal.neg (); } } void CSphere::invertNormals () { for (int i = 0; i < object [0]->numVertices; i ++) { object [0]->vertex [i].normal.neg (); } } void CSphere::setNorthPoleColor (CColor *c, float w) { int i, i2; for (i = 0; i < 4; i ++) object [0]->vertex [0].color.c [i] = c->c [i]; int num = (int) (w * segments * segments / 2); num /= (segments * 2); num *= (segments * 2); for (i = 1; i <= num; i ++) { float weight = 1.0F - (float) ((int) ((i - 1) / (segments * 2)) * segments * 2) / (float) num; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [i].color.c [i2] = (short) ((1.0F - weight) * object [0]->vertex [i].color.c [i2] + weight * c->c [i2]); } } void CSphere::setSouthPoleColor (CColor *c, float w) { int i, i2; int max = (segments - 1) * segments * 2 + 1; for (i = 0; i < 4; i ++) object [0]->vertex [max].color.c [i] = c->c [i]; int num = (int) (w * segments * segments / 2); num /= (segments * 2); num *= (segments * 2); for (i = 1; i <= num; i ++) { float weight = 1.0F - (float) ((int) ((i - 1) / (segments * 2)) * segments * 2) / (float) num; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [max - i].color.c [i] = (short) ((1.0F - weight) * object [0]->vertex [max - i].color.c [i2] + weight * c->c [i2]); } } void CSphere::setPoleColor (int phi, int theta, CColor *c, float w) { int i, i2; for (i = 0; i < object [0]->numVertices; i ++) { int phi2 = ((i - 1) % (segments * 2)) * 360 / (segments * 2); int theta2 = ((i - 1) / (segments * 2) + 1) * 360 / (segments * 2); if (i == 0) { theta2 = 0; phi2 = 0; } int dphi = phi - phi2; if (dphi < -180) dphi += 360; else if (dphi > 180) dphi -= 360; int dtheta = theta - theta2; if (dtheta < -180) dtheta += 360; else if (dtheta > 180) dtheta -= 360; float alpha = sqrt ((float) (dphi*dphi+dtheta*dtheta)); if (alpha < 180 * w) { float weight = 1.0 - alpha / 180.0 / w; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [i].color.c [i2] = (short) ((1.0F - weight) * object [0]->vertex [i].color.c [i2] + weight * c->c [i2]); } } } CSpherePart::CSpherePart () {} CSpherePart::CSpherePart (float radius, int segments, float phi) { init (radius, segments, phi); } CSpherePart::~CSpherePart () {} void CSpherePart::init (float radius, int segments) { init (radius, segments, 10); } void CSpherePart::init (float radius, int segments, float phi) { CObject *co = new CObject; co->vertex = new CVertex [segments * 4 + 1]; co->triangle = new CTriangle [segments]; co->quad = new CQuad [segments * 3]; this->radius = radius; this->segments = segments; float dx = 1, dy = 1, dz = 1; int p [4]; float step = 360.0 / segments; float step2 = phi / 4; CRotation *rot = new CRotation (); CVertex *w = new CVertex (); for (float i = 0; i < phi; i += step2) for (float i2 = 0; i2 < 360; i2 += step) { int a = ((int) i) % 360, b = ((int) i2) % 360; float si = rot->getsintab (a), ci = rot->getcostabntab (a); float si2 = rot->getsintab (b), ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [0] = co->addVertex (w); a = ((int) (i + step2)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179 || i2 == 0) p [1] = co->addVertex (w); b = ((int) (i2 + step)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179) p [2] = co->addVertex (w); a = ((int) i) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [3] = co->addVertex (w); if (i == 0 || i >= 180 - step2 - 0.2) { if (i == 0) co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]]); else co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [3]]); } else { co->quad [co->numQuads ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]], &co->vertex [p [3]]); } } delete rot; delete w; addObject (co); setColor (new CColor (128, 128, 128, 255)); } void CSpherePart::setNorthPoleColor (CColor *c, float w) { int i, i2; for (i = 0; i < 4; i ++) object [0]->vertex [0].color.c [i] = c->c [i]; int num = (int) (w * segments * 4 / 2); num /= (segments * 2); num *= (segments * 2); for (i = 1; i <= num; i ++) { float weight = 1.0F - (float) ((int) ((i - 1) / (segments * 2)) * 4 * 2) / (float) num; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [i].color.c [i2] = (short) ((1.0F - weight) * object [0]->vertex [i].color.c [i2] + weight * c->c [i2]); } } void CSpherePart::setSouthPoleColor (CColor *c, float w) { } void CSpherePart::setPoleColor (int phi, int theta, CColor *c, float w) { } #endif gl-117-1.3.2/src/model.cpp~0000644000175000017500000012265510145416156014500 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes the memory representation of any 3D model. For a detailed description of the data structure look at model.h */ #ifndef IS_MODEL_H #include #include #include #include #include "model.h" #include "gl.h" #include "mathtab.h" #include "loader_tga.h" CColor::CColor () { memset (c, 255, 4 * sizeof (unsigned char)); } CColor::CColor (CColor *col) { memcpy (c, col->c, 4 * sizeof (unsigned char)); } CColor::CColor (short cr, short cg, short cb) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = 255; } CColor::CColor (short cr, short cg, short cb, short ca) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = ca; } CColor::~CColor () {}; void CColor::setColor (CColor *col) { memcpy (c, col->c, 4 * sizeof (unsigned char)); } void CColor::setColor (short cr, short cg, short cb, short ca) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = ca; } void CColor::setColor (short cr, short cg, short cb) { c [0] = cr; c [1] = cg; c [2] = cb; c [3] = 255; } bool CColor::isEqual (CColor *col) { return memcmp (c, col->c, 4 * sizeof (unsigned char)) == 0; } void CColor::take (CColor *col) { memcpy (c, col->c, 4 * sizeof (unsigned char)); } CTexture::CTexture () { texlight = 1.0F; width = 0; height = 0; textureID = -1; data = NULL; texred = 1.0F; texgreen = 1.0F; texblue = 1.0F; mipmap = true; quality = 0; } CTexture::~CTexture () { if (data != NULL) delete data; } int CTexture::loadFromTGA (char *fname, int quality, int alphatype, int mipmap) // only 24 bit TGA { int i, i2; #ifdef LOADER_TGA_H data = tga_load (fname, &width, &height); // global 32 bpp texture buffer if (!data) return 0; #else unsigned char skip; FILE *in = fopen (fname, "rb"); if (!in) return 0; fread (&skip, 1, 1, in); fseek (in, 12, SEEK_SET); fread (&width, 2, 1, in); fread (&height, 2, 1, in); fseek (in, 18 + skip, SEEK_SET); unsigned char *buf = (unsigned char *) malloc (width * height * 3); // preload file buffer if (buf == NULL) error_outofmemory (); data = (unsigned char *) malloc (width * height * 4); // global 32 bpp texture buffer if (data == NULL) error_outofmemory (); fread (buf, width * height * 3, 1, in); #endif long texl = 0; long texr = 0; long texg = 0; long texb = 0; for (i = 0; i < height; i ++) for (i2 = 0; i2 < width; i2 ++) { int n2 = (i * width + i2)*4; texl += (int) data [n2+2] + data [n2+1] + data [n2]; texr += (int) data [n2]; texg += (int) data [n2 + 1]; texb += (int) data [n2 + 2]; if (alphatype == 0) // alpha=255 or 0 { if (data [n2+0] + data [n2+1] + data [n2+2] < 30) data [n2+3] = 0; else data [n2+3] = 255; } else if (alphatype == 1) // alpha=maxcolor { int max = (data [n2+0] > data [n2+1] ? data [n2+0] : data [n2+1]); max = (max > data [n2+2] ? max : data [n2+2]); data [n2+3] = max; } else if (alphatype == 2) // alpha=red { data [n2+3] = data [n2]; } else if (alphatype == 3) // alpha=midcolor*6 or 0 { int test = (data [n2] + data [n2 + 1] + data [n2 + 2]) * 2; if (test > 255) test = 255; else if (test < 30) test = 0; data [n2+3] = (unsigned char) test; } else if (alphatype == 4) // alpha=red, color=white { data [n2+3] = data [n2+0]; data [n2+0] = 255; data [n2+1] = 255; data [n2+2] = 255; } else if (alphatype == 5) // alpha=red*2, color=black { int test = data [n2+0] * 2; if (test > 255) test = 255; data [n2+3] = test; data [n2+0] = 0; data [n2+1] = 0; data [n2+2] = 0; } else if (alphatype == 6) // alpha=red, color=black { data [n2+3] = data [n2+0]; data [n2+0] = 0; data [n2+1] = 0; data [n2+2] = 0; } } #ifndef LOADER_TGA_H free (buf); #endif texlight = (float) texl / width / height / 3 / 256; // average brightness texred = (float) texr / width / height / 256; // average red texgreen = (float) texg / width / height / 256; // average green texblue = (float) texb / width / height / 256; // average blue strcpy (name, fname); this->quality = quality; this->mipmap = (mipmap != 0); return 1; } void CTexture::getColor (CColor *c, int x, int y) { if (x < 0) x = (int) -x % width; if (y < 0) y = (int) -y % height; if (x >= width) x = (int) x % width; if (y >= height) y = (int) y % height; int offs = y * width + x; offs <<= 2; c->c [0] = data [offs]; c->c [1] = data [offs + 1]; c->c [2] = data [offs + 2]; c->c [3] = data [offs + 3]; } CVector3::CVector3 () { x = y = z = 0; } CVector3::CVector3 (float x, float y, float z) { this->x = x; this->y = y; this->z = z; } CVector3::CVector3 (CVector3 *v) { x = v->x; y = v->y; z = v->z; } void CVector3::set (float x, float y, float z) { this->x = x; this->y = y; this->z = z; } void CVector3::neg () { x = -x; y = -y; z = -z; } void CVector3::add (CVector3 *v) { x += v->x; y += v->y; z += v->z; } void CVector3::sub (CVector3 *v) { x -= v->x; y -= v->y; z -= v->z; } void CVector3::mul (float fac) { x *= fac; y *= fac; z *= fac; } void CVector3::crossproduct (CVector3 *v) { float nx = y * v->z - z * v->y; float ny = z * v->x - x * v->z; float nz = x * v->y - y * v->x; x = nx; y = ny; z = nz; } float CVector3::dotproduct (CVector3 *v) { return x * v->x + y * v->y + z * v->z; } float CVector3::length () { return (float) sqrt (x * x + y * y + z * z); } void CVector3::norm () { float d = sqrt (x * x + y * y + z * z); if (d == 0) d = 1E-10; x /= d; y /= d; z /= d; } bool CVector3::isEqual (CVector3 *v) { return x == v->x && y == v->y && z == v->z; } bool CVector3::isEqual (CVector3 *v, float tol) { return x >= v->x - tol && x <= v->x + tol && y >= v->y - tol && y <= v->y + tol && z >= v->z - tol && z <= v->z + tol; } void CVector3::take (CVector3 *v) { x = v->x; y = v->y; z = v->z; } bool CVector2::isEqual (CVector2 *v) { return x == v->x && y == v->y; } bool CVector2::isEqual (CVector2 *v, float tol) { return x >= v->x - tol && x <= v->x + tol && y >= v->y - tol && y <= v->y + tol; } void CVector2::take (CVector2 *v) { x = v->x; y = v->y; } CVertex::CVertex () { triangles = 0; } CVertex::CVertex (CVertex *v) { take (v); } void CVertex::addNormal (CVector3 *n) { triangles ++; normal.x = (normal.x * (triangles - 1) + n->x) / (float) triangles; normal.y = (normal.y * (triangles - 1) + n->y) / (float) triangles; normal.z = (normal.z * (triangles - 1) + n->z) / (float) triangles; } void CVertex::addColor (CColor *c) { triangles ++; for (int i = 0; i < 4; i ++) { color.c [i] = (unsigned char) (((float) color.c [i] * (triangles - 1) + c->c [i]) / (float) triangles); } } void CVertex::take (CVertex *v) { vector.take (&v->vector); normal.take (&v->normal); color.take (&v->color); triangles = v->triangles; } double pitab; float sintab [360], costab [360]; CRotation::CRotation () { a = b = c = 0; calcRotation (); pitab = 4 * atan (1); for (int i = 0; i < 360; i ++) { sintab [i] = sin (pitab / 180 * i); costab [i] = cos (pitab / 180 * i); } } CRotation::~CRotation () {} void CRotation::setAngles (short a, short b, short c) { a %= 360; if (a < 0) a += 360; b %= 360; if (b < 0) b += 360; c %= 360; if (c < 0) c += 360; this->a = a; this->b = b; this->c = c; } void CRotation::addAngles (short a, short b, short c) { this->a += a; this->b += b; this->c += c; this->a %= 360; if (this->a < 0) this->a += 360; this->b %= 360; if (this->b < 0) this->b += 360; this->c %= 360; if (this->c < 0) this->c += 360; } void CRotation::calcRotation () { rot [0] [0] = costab [c] * costab [b]; rot [0] [1] = sintab [a] * sintab [b] * costab [c] - sintab [c] * costab [a]; rot [0] [2] = sintab [a] * sintab [c] + costab [a] * sintab [b] * costab [c]; rot [1] [0] = sintab [c] * costab [b]; rot [1] [1] = costab [c] * costab [a] + sintab [a] * sintab [b] * sintab [c]; rot [1] [2] = costab [a] * sintab [b] * sintab [c] - sintab [a] * costab [c]; rot [2] [0] = -sintab [b]; rot [2] [1] = sintab [a] * costab [b]; rot [2] [2] = costab [a] * costab [b]; } float CRotation::rotateX (CVector3 *v) { return v->x * rot [0] [0] + v->y * rot [0] [1] + v->z * rot [0] [2]; } float CRotation::rotateY (CVector3 *v) { return v->x * rot [1] [0] + v->y * rot [1] [1] + v->z * rot [1] [2]; } float CRotation::rotateZ (CVector3 *v) { return v->x * rot [2] [0] + v->y * rot [2] [1] + v->z * rot [2] [2]; } float CRotation::getsintab (int a) { if (a >= 0 && a < 360) return sintab [a]; return 0; } float CRotation::getcostabntab (int a) { if (a >= 0 && a < 360) return costab [a]; return 0; } void CRotation::take (CRotation *r) { a = r->a; b = r->b; c = r->c; } void CTriangle::getNormal (CVector3 *n) { CVector3 dummy; n->take (&v [1]->vector); n->sub (&v [0]->vector); dummy.take (&v [2]->vector); dummy.sub (&v [0]->vector); n->crossproduct (&dummy); } void CTriangle::setVertices (CVertex *a, CVertex *b, CVertex *c) { int i; CVector3 dummy; v [0] = a; v [1] = b; v [2] = c; getNormal (&dummy); dummy.norm (); if (dummy.z > 0) dummy.neg (); for (i = 0; i < 3; i ++) { v [i]->addNormal (&dummy); } } void CQuad::getNormal (CVector3 *n) { CVector3 dummy; n->take (&v [1]->vector); n->sub (&v [0]->vector); dummy.take (&v [3]->vector); dummy.sub (&v [0]->vector); n->crossproduct (&dummy); } void CQuad::setVertices (CVertex *a, CVertex *b, CVertex *c, CVertex *d) { int i; CVector3 dummy; v [0] = a; v [1] = b; v [2] = c; v [3] = d; getNormal (&dummy); dummy.norm (); if (dummy.z > 0) dummy.neg (); for (i = 0; i < 4; i ++) { v [i]->addNormal (&dummy); } } CMaterial::CMaterial () { uscale = 1; vscale = 1; uoffset = 0; voffset = 0; wrot = 0; char tmp [255] = {0}; strcpy (filename, tmp); strcpy (name, tmp); } CObject::CObject () { numVertices = 0; numTriangles = 0; numQuads = 0; numTexVertex = 0; material = NULL; hasTexture = false; } CObject::~CObject () { } int CObject::addVertex (CVertex *w) { int i; for (i = 0; i < numVertices; i ++) if (w->vector.isEqual (&vertex [i].vector, 1e-3F) && w->color.isEqual (&vertex [i].color)) break; if (i == numVertices) vertex [numVertices ++].take (w); return i; } void CObject::setColor (CColor *col) { int i; for (i = 0; i < numVertices; i ++) memcpy (vertex [i].color.c, col, 4 * sizeof (unsigned char)); } CModel::CModel () { numObjects = 0; numMaterials = 0; shading = 0; displaylist = true; list1 = -1; list2 = -1; list3 = -1; scale = 1.0F; name [0] = '0'; nolight = false; alpha = false; light_ambient [0] = 0.3; light_ambient [1] = 0.3; light_ambient [2] = 0.3; light_ambient [3] = 1; light_diffuse [0] = 0.9; light_diffuse [1] = 0.9; light_diffuse [2] = 0.9; light_diffuse [3] = 1; light_ambient2 [0] = 0.2; light_ambient2 [1] = 0.2; light_ambient2 [2] = 0.2; light_ambient2 [3] = 1; light_diffuse2 [0] = 0.1; light_diffuse2 [1] = 0.1; light_diffuse2 [2] = 0.1; light_diffuse [3] = 1; numRefpoints = 0; refpoint = NULL; va = new VertexArray (VERTEXARRAY_V3N3C4T2); } void CModel::setName (char *name) { strcpy (this->name, name); } void CModel::addMaterial (CMaterial *material) { this->material [numMaterials] = new CMaterial; if (this->material [numMaterials] == NULL) exit (100); if (material != NULL) memcpy (this->material [numMaterials], material, sizeof (CMaterial)); numMaterials ++; } void CModel::addObject (CObject *object) { this->object [numObjects] = new CObject; if (this->object [numObjects] == NULL) exit (101); if (object != NULL) memcpy (this->object [numObjects], object, sizeof (CObject)); numObjects ++; rotcol = 0; } void CModel::addRefPoint (CVector3 *tl) { int i, i2; if (refpoint == NULL) { refpoint = new CVector3 [10]; } for (i = 0; i < numRefpoints; i ++) { if (tl->z < refpoint [i].z) { for (i2 = numRefpoints; i2 > i; i2 --) { refpoint [i2].take (&refpoint [i2 - 1]); } refpoint [i].take (tl); goto fertigref1; } } refpoint [numRefpoints].take (tl); fertigref1:; numRefpoints ++; } CModel::~CModel () { int i; for (i = 0; i < numMaterials; i ++) delete material [i]; for (i = 0; i < numObjects; i ++) delete object [i]; if (refpoint) { delete refpoint; } } void CModel::setColor (CColor *col) { int i; for (i = 0; i < numObjects; i++) { object [i]->setColor (col); } } void CModel::drawVertexNormals (CObject *cm, float zoom) { glColor3ub (255, 0, 0); glBegin (GL_LINES); for (int j = 0; j < cm->numVertices; j++) if (cm->vertex [j].triangles > 0) { glVertex3f (cm->vertex [j].vector.x*zoom, cm->vertex [j].vector.y*zoom, cm->vertex [j].vector.z*zoom); glVertex3f ((cm->vertex [j].vector.x + cm->vertex [j].normal.x / 5)*zoom, (cm->vertex [j].vector.y + cm->vertex [j].normal.y / 5)*zoom, (cm->vertex [j].vector.z + cm->vertex [j].normal.z / 5)*zoom); } glEnd (); } int CModel::rotateColor (int n) { if (n == 0) return 0; rotcol ++; if (rotcol > n) rotcol = 0; return rotcol; } void CModel::scaleTexture (float fx, float fy) { int i; for (i = 0; i < numObjects; i ++) { CObject *o = object [i]; int i2; for (i2 = 0; i2 < o->numVertices; i2 ++) { o->vertex [i2].tex.x *= fx; o->vertex [i2].tex.y *= fy; } } } void CModel::draw (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, float lum, int explode) { if (nolight) // if model wants to be rendered without light, call draw2 { glDisable (GL_LIGHTING); draw2 (tl, tl2, rot, zoom, explode); glEnable (GL_LIGHTING); return; } if (tl == NULL) tl = &tlnull; if (tl2 == NULL) tl2 = &tlnull; if (rot == NULL) rot = &rotnull; int i, j; CObject *cm; float la [4] = { 0.2, 0.2, 0.2, 1.0}; if (lum >= 1) { float addl = lum; if (addl >= 5) addl = 5; la [0] = 0.2 * addl; la [1] = 0.2 * addl; la [2] = 0.2 * addl; } glLightfv (GL_LIGHT0, GL_AMBIENT, la); float ld [4] = { 0.7, 0.7, 0.7, 1.0}; if (lum != 1) { ld [0] *= lum; ld [1] *= lum; ld [2] *= lum; if (ld [0] > 1.0) ld [0] = 1.0; if (ld [1] > 1.0) ld [1] = 1.0; if (ld [2] > 1.0) ld [2] = 1.0; } glLightfv (GL_LIGHT0, GL_DIFFUSE, ld); for (i = 0; i < numObjects; i ++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { if (antialiasing) gl->enableLinearTexture (cm->material->texture->textureID); else gl->disableLinearTexture (cm->material->texture->textureID); } } zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); if (shading == 1) glShadeModel (GL_FLAT); else glShadeModel (GL_SMOOTH); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); } for (i = 0; i < numObjects; i ++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { glEnable (GL_TEXTURE_2D); glColor4f (1, 1, 1, 1); glBindTexture (GL_TEXTURE_2D, cm->material->texture->textureID); } else { glDisable (GL_TEXTURE_2D); glColor4f (1, 1, 1, 1); } if (cm->material != NULL) { if (cm->material->color.c [0] > 190 && cm->material->color.c [1] > 190 && cm->material->color.c [2] < 20) glDisable (GL_LIGHTING); else glEnable (GL_LIGHTING); } CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { if (numMaterials/* && cm->material->textureID >= 0*/) { unsigned char *color = cm->material->color.c; /*material[cm->material->textureID]->color.c;*/ if (color [0] > 190 && color [1] > 190 && color [2] < 20) { rotateColor (30); va->glColor4ub (color [0] + rotcol, color [1] + rotcol, color [2] + rotcol * 3, 255); } else { va->glColor4ub (color [0], color [1], color [2], color [3]); } } } // glColor3ub (255, 255, 0); va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex++) { v = cm->quad [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { if (numMaterials && cm->material->texture->textureID >= 0) { unsigned char *pColor = material [cm->material->texture->textureID]->color.c; va->glColor4ub (pColor [0], pColor [1], pColor [2], pColor [3]); } } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } glPopMatrix (); } void CModel::draw2 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, int explode) { int i, j; CObject *cm; for (i = 0; i < numObjects; i ++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { if (antialiasing) gl->enableLinearTexture (cm->material->texture->textureID); else gl->disableLinearTexture (cm->material->texture->textureID); } } zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); bool listgen = false; if (list2 == -1 && explode <= 0 && displaylist) { listgen = true; gl->genList (&list2); } if (listgen || explode > 0 || !displaylist) { if (shading == 1) glShadeModel (GL_FLAT); else glShadeModel (GL_SMOOTH); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.01); } for (i = 0; i < numObjects; i++) { if (numObjects <= 0) break; cm = object [i]; if (cm->hasTexture) { glEnable (GL_TEXTURE_2D); glColor4ub (255, 255, 255, 255); glBindTexture (GL_TEXTURE_2D, cm->material->texture->textureID); } else { glDisable (GL_TEXTURE_2D); glColor4ub (255, 255, 255, 255); } CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor4ub (pColor [0], pColor [1], pColor [2], pColor [3]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex ++) { v = cm->quad [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor4ub (pColor [0], pColor [1], pColor [2], pColor [3]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } if (listgen) glEndList (); } else glCallList (list2); glPopMatrix (); } void CModel::draw3 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, float lum, int explode) { int i, j; CObject *cm; // float mx=0, my=0, mz=0, ix=0, iy=0, iz=0; zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); } for (i = 0; i < numObjects; i++) { if (numObjects <= 0) break; cm = object [i]; glDisable (GL_TEXTURE_2D); glColor3ub (255, 255, 255); CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; // glNormal3f (v->normal.x, v->normal.y, v->normal.z); unsigned char *pColor = v->color.c; float red = lum * pColor [0] / 256; float green = lum * pColor [1] / 256; float blue = lum * pColor [2] / 256; if (red >= 1.0) red = 1.0; if (green >= 1.0) green = 1.0; if (blue >= 1.0) blue = 1.0; va->glColor3f (red, green, blue); va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex ++) { v = cm->quad [j].v [whichVertex]; // glNormal3f (v->normal.x, v->normal.y, v->normal.z); unsigned char *pColor = v->color.c; float red = lum * pColor [0] / 256; float green = lum * pColor [1] / 256; float blue = lum * pColor [2] / 256; if (red >= 1.0) red = 1.0; if (green >= 1.0) green = 1.0; if (blue >= 1.0) blue = 1.0; va->glColor3f (red, green, blue); va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } glPopMatrix (); } void CModel::draw3 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, int explode) { int i, j; CObject *cm; // float mx=0, my=0, mz=0, ix=0, iy=0, iz=0; zoom *= scale; glPushMatrix (); glTranslatef (tl->x + tl2->x, tl->y + tl2->y - 0.002 * explode * explode / timestep / timestep, tl->z + tl2->z); float explodefac = (float) explode / 10 / timestep; if (showcollision) { glPushMatrix (); glScalef (cubex, cubey, cubez); glColor3ub (255, 0, 0); glBegin (GL_LINE_STRIP); glVertex3f (1, 1, 1); glVertex3f (1, 1, -1); glVertex3f (1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (1, 1, 1); glEnd (); glBegin (GL_LINE_STRIP); glVertex3f (-1, 1, 1); glVertex3f (-1, 1, -1); glVertex3f (-1, -1, -1); glVertex3f (-1, -1, 1); glVertex3f (-1, 1, 1); glEnd (); glBegin (GL_LINES); glVertex3f (1, 1, 1); glVertex3f (-1, 1, 1); glVertex3f (1, -1, -1); glVertex3f (-1, -1, -1); glVertex3f (1, -1, 1); glVertex3f (-1, -1, 1); glVertex3f (1, 1, -1); glVertex3f (-1, 1, -1); glEnd (); glPopMatrix (); } glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); bool listgen = false; if (list3 == -1 && explode <= 0 && displaylist) { listgen = true; gl->genList (&list3); } if (listgen || explode > 0 || !displaylist) { if (shading == 1) glShadeModel (GL_FLAT); else glShadeModel (GL_SMOOTH); if (alpha) { glEnable (GL_BLEND); glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0.2); } for (i = 0; i < numObjects; i++) { if (numObjects <= 0) break; cm = object [i]; glDisable (GL_TEXTURE_2D); glColor3ub (255, 255, 255); CVector3 shift; va->glBegin (GL_TRIANGLES); for (j = 0; j < cm->numTriangles; j++) { CVertex *v = cm->triangle [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 3; whichVertex ++) { v = cm->triangle [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture && false) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor3ub (pColor[0], pColor[1], pColor[2]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); va->glBegin (GL_QUADS); for (j = 0; j < cm->numQuads; j++) { CVertex *v = cm->quad [j].v [0]; if (explode > 0) { shift.x = v->normal.x * explodefac; shift.y = v->normal.y * explodefac; shift.z = v->normal.z * explodefac; } for (int whichVertex = 0; whichVertex < 4; whichVertex ++) { v = cm->quad [j].v [whichVertex]; va->glNormal3f (v->normal.x, v->normal.y, v->normal.z); if (cm->hasTexture && false) { if (cm->vertex) { va->glTexCoord2f (v->tex.x, v->tex.y); va->glColor4f (1, 1, 1, 1); } } else { unsigned char *pColor = v->color.c; va->glColor3ub (pColor[0], pColor[1], pColor[2]); } va->glVertex3f (v->vector.x + shift.x, v->vector.y + shift.y, v->vector.z + shift.z); } } va->glEnd (); } if (alpha) { glDisable (GL_BLEND); glDisable (GL_ALPHA_TEST); } if (listgen) glEndList (); } else glCallList (list3); glPopMatrix (); } CSphere::CSphere () {} CSphere::CSphere (float radius, int segments, float dx, float dy, float dz) { init (radius, segments, dx, dy, dz, 0); } CSphere::~CSphere () {} int CSphere::random (int n) { if (n == 0) return 0; return rand () % n; } void CSphere::init (float radius, int segments) { init (radius, segments, 1, 1, 1, 0); } void CSphere::init (float radius, int segments, float dx, float dy, float dz, int randomized) { CObject *co = new CObject; if (co == NULL) exit (100); co->vertex = new CVertex [segments * segments * 2 + 2]; if (co->vertex == NULL) exit (100); co->triangle = new CTriangle [segments * 4]; if (co->triangle == NULL) exit (100); co->quad = new CQuad [segments * segments * 2]; if (co->quad == NULL) exit (100); this->radius = radius; this->segments = segments; this->dx = dx; this->dy = dy; this->dz = dz; int p [4]; float step = 180.0 / segments; CRotation *rot = new CRotation (); if (rot == NULL) exit (100); CVertex *w = new CVertex (); if (w == NULL) exit (100); for (float i = 0; i < 180; i += step) for (float i2 = 0; i2 < 360; i2 += step) { int a = ((int) i) % 360, b = ((int) i2) % 360; float si = rot->getsintab (a), ci = rot->getcostabntab (a); float si2 = rot->getsintab (b), ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [0] = co->addVertex (w); a = ((int) (i + step)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179 || i2 == 0) p [1] = co->addVertex (w); b = ((int) (i2 + step)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179) p [2] = co->addVertex (w); a = ((int) i) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [3] = co->addVertex (w); if (i == 0 || i >= 180 - step - 1) { if (!random (randomized)) { if (i == 0) co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]]); else co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [3]]); } } else { if (!random (randomized)) co->quad [co->numQuads ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]], &co->vertex [p [3]]); } } delete rot; delete w; addObject (co); setColor (new CColor (128, 128, 128, 255)); for (int i2 = 0; i2 < object [0]->numVertices / 2; i2 ++) { object [0]->vertex [i2].normal.neg (); } } void CSphere::invertNormals () { for (int i = 0; i < object [0]->numVertices; i ++) { object [0]->vertex [i].normal.neg (); } } void CSphere::setNorthPoleColor (CColor *c, float w) { int i, i2; for (i = 0; i < 4; i ++) object [0]->vertex [0].color.c [i] = c->c [i]; int num = (int) (w * segments * segments / 2); num /= (segments * 2); num *= (segments * 2); for (i = 1; i <= num; i ++) { float weight = 1.0F - (float) ((int) ((i - 1) / (segments * 2)) * segments * 2) / (float) num; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [i].color.c [i2] = (short) ((1.0F - weight) * object [0]->vertex [i].color.c [i2] + weight * c->c [i2]); } } void CSphere::setSouthPoleColor (CColor *c, float w) { int i, i2; int max = (segments - 1) * segments * 2 + 1; for (i = 0; i < 4; i ++) object [0]->vertex [max].color.c [i] = c->c [i]; int num = (int) (w * segments * segments / 2); num /= (segments * 2); num *= (segments * 2); for (i = 1; i <= num; i ++) { float weight = 1.0F - (float) ((int) ((i - 1) / (segments * 2)) * segments * 2) / (float) num; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [max - i].color.c [i] = (short) ((1.0F - weight) * object [0]->vertex [max - i].color.c [i2] + weight * c->c [i2]); } } void CSphere::setPoleColor (int phi, int theta, CColor *c, float w) { int i, i2; for (i = 0; i < object [0]->numVertices; i ++) { int phi2 = ((i - 1) % (segments * 2)) * 360 / (segments * 2); int theta2 = ((i - 1) / (segments * 2) + 1) * 360 / (segments * 2); if (i == 0) { theta2 = 0; phi2 = 0; } int dphi = phi - phi2; if (dphi < -180) dphi += 360; else if (dphi > 180) dphi -= 360; int dtheta = theta - theta2; if (dtheta < -180) dtheta += 360; else if (dtheta > 180) dtheta -= 360; float alpha = sqrt ((float) (dphi*dphi+dtheta*dtheta)); if (alpha < 180 * w) { float weight = 1.0 - alpha / 180.0 / w; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [i].color.c [i2] = (short) ((1.0F - weight) * object [0]->vertex [i].color.c [i2] + weight * c->c [i2]); } } } CSpherePart::CSpherePart () {} CSpherePart::CSpherePart (float radius, int segments, float phi) { init (radius, segments, phi); } CSpherePart::~CSpherePart () {} void CSpherePart::init (float radius, int segments) { init (radius, segments, 10); } void CSpherePart::init (float radius, int segments, float phi) { CObject *co = new CObject; co->vertex = new CVertex [segments * 4 + 1]; co->triangle = new CTriangle [segments]; co->quad = new CQuad [segments * 3]; this->radius = radius; this->segments = segments; float dx = 1, dy = 1, dz = 1; int p [4]; float step = 360.0 / segments; float step2 = phi / 4; CRotation *rot = new CRotation (); CVertex *w = new CVertex (); for (float i = 0; i < phi; i += step2) for (float i2 = 0; i2 < 360; i2 += step) { int a = ((int) i) % 360, b = ((int) i2) % 360; float si = rot->getsintab (a), ci = rot->getcostabntab (a); float si2 = rot->getsintab (b), ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [0] = co->addVertex (w); a = ((int) (i + step2)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179 || i2 == 0) p [1] = co->addVertex (w); b = ((int) (i2 + step)) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; if (a < 179) p [2] = co->addVertex (w); a = ((int) i) % 360; si = rot->getsintab (a); ci = rot->getcostabntab (a); si2 = rot->getsintab (b); ci2 = rot->getcostabntab (b); w->vector.x = radius * si * ci2 * dx; w->vector.y = radius * si * si2 * dy; w->vector.z = radius * ci * dz; p [3] = co->addVertex (w); if (i == 0 || i >= 180 - step2 - 0.2) { if (i == 0) co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]]); else co->triangle [co->numTriangles ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [3]]); } else { co->quad [co->numQuads ++].setVertices (&co->vertex [p [0]], &co->vertex [p [1]], &co->vertex [p [2]], &co->vertex [p [3]]); } } delete rot; delete w; addObject (co); setColor (new CColor (128, 128, 128, 255)); } void CSpherePart::setNorthPoleColor (CColor *c, float w) { int i, i2; for (i = 0; i < 4; i ++) object [0]->vertex [0].color.c [i] = c->c [i]; int num = (int) (w * segments * 4 / 2); num /= (segments * 2); num *= (segments * 2); for (i = 1; i <= num; i ++) { float weight = 1.0F - (float) ((int) ((i - 1) / (segments * 2)) * 4 * 2) / (float) num; for (i2 = 0; i2 < 4; i2 ++) object [0]->vertex [i].color.c [i2] = (short) ((1.0F - weight) * object [0]->vertex [i].color.c [i2] + weight * c->c [i2]); } } void CSpherePart::setSouthPoleColor (CColor *c, float w) { } void CSpherePart::setPoleColor (int phi, int theta, CColor *c, float w) { } #endif gl-117-1.3.2/src/model.h0000644000175000017500000002651010145416156013740 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes the memory representation of any 3D model. */ #ifndef IS_MODEL_H #define IS_MODEL_H #include "common.h" // ok #include "vertexarray.h" // ok /* Currently models are normalized to the (-1,-1,-1)-(1,1,1) cube and static! The model represents the "class" description of a static model's geometry and colors. It is "instanciated" using a DynamicObj which has a reference to the model, scaling, rotation, translation, physical attributes... A model consists of several objects. Objects consist of vertices, quads, triangles, and one material. */ // CColor stores color information class CColor { public: unsigned char c [4]; // color information as vector, 32 bpp (floats would be faster for the vertex arrays) CColor (); CColor (CColor *col); CColor (short cr, short cg, short cb); CColor (short cr, short cg, short cb, short ca); ~CColor (); void setColor (CColor *col); void setColor (short cr, short cg, short cb, short ca); void setColor (short cr, short cg, short cb); bool isEqual (CColor *col); // compare colors void take (CColor *col); // copy data from col }; // CTexture loads and stores a texture to memory // To use a texture, it must be loaded and added to the OpenGL texture list using // gl->genTextureTGA(); // instead of this class! class CTexture { public: unsigned char *data; // texture color data as array, 32 bpp (RGBA? => see tga loader) char name [256]; // texture file name bool mipmap; // mipmapping on/off depending on gluBuildMipmaps int textureID; // texture ID of native GL code int width, height; // average values to substitute textured quads by colors for LOD: float texlight; // average of texture's overall brightness float texred; // average of texture's red float texgreen; // average of texture's green float texblue; // average of texture's blue int quality; // texture quality of native GL code bool alpha; // alpha blending necessary CTexture (); ~CTexture (); int loadFromTGA (char *fname, int quality, int alphatype, int mipmap); // called via gl->genTextureTGA() void getColor (CColor *c, int x, int y); // color of a special pixel }; // CVector3 stores the components of a 3D vector (x,y,z) class CVector3 { public: float x, y, z; // coordinates, float on most systems faster than double CVector3 (); CVector3 (float x, float y, float z); CVector3 (CVector3 *v); void set (float x, float y, float z); void neg (); void add (CVector3 *v); void sub (CVector3 *v); void mul (float fac); void crossproduct (CVector3 *v); float dotproduct (CVector3 *v); float length (); void norm (); bool isEqual (CVector3 *v); // exactly equal in memory (no sense for comparisons) bool isEqual (CVector3 *v, float tol); // numerically equal, use a tolerance like 1E-8 void take (CVector3 *v); // copy data from v }; // CVector2 stores the components of a 2D vector, for texture purpose class CVector2 { public: float x, y; // coordinates void take (CVector2 *v); // copy data from v bool isEqual (CVector2 *v); // exactly equal in memory (no sense for comparisons) bool isEqual (CVector2 *v, float tol); // numerically equal, use a tolerance like 1E-8 }; // CVertex represents a vertex which may take inforamtion about color, location, normal, texture, number of surrounding triangles class CVertex { public: int triangles; // number of triangles this vertex belongs to CColor color; // color, used when displayed without textures CVector3 vector; // coordinates CVector3 normal; // normal vector interpolated of all surrounding triangles CVector2 tex; // 2D texture coordinates CVertex (); CVertex (CVertex *v); void addNormal (CVector3 *n); // the normal vector of a vertex can be calculated as average of all adjacent plane normals void addColor (CColor *c); // the color of a vertex can be calculated as average of all adjacent plane colors void take (CVertex *v); // copy data from v }; extern double pitab; // pi=atan(1) extern float sintab [360], costab [360]; // table for sine, cosine functions (obsolete, use COS(), SIN() instead) // CRotation stores one (x,y,z)-rotation class CRotation { private: float rot [3] [3]; // rotation matrix public: short a, b, c; // rotation angles for each plane of the carthesian cosy CRotation (); ~CRotation (); void setAngles (short a, short b, short c); void addAngles (short a, short b, short c); void calcRotation (); float rotateX (CVector3 *v); float rotateY (CVector3 *v); float rotateZ (CVector3 *v); float getsintab (int a); float getcostabntab (int a); void take (CRotation *r); }; // CTriangle stores references to the vertices of the triangle/face class CTriangle { public: CVertex *v [3]; // references to the three vertices void getNormal (CVector3 *n); void setVertices (CVertex *a, CVertex *b, CVertex *c); }; // CQuad stores references to the vertices of the quad/square/face class CQuad { public: CVertex *v [4]; // references to the four vertices void getNormal (CVector3 *n); void setVertices (CVertex *a, CVertex *b, CVertex *c, CVertex *d); }; // CMaterial stores the name, filename, color, and texture of a material class CMaterial { public: char name [255]; // unique name char filename [255]; // unique file name CColor color; // uniform color CTexture *texture; // reference to a texture (or NULL if there is no texture) float utile; // tiling coordinates float vtile; float uoffset; // texture offsets (the importer must calculate u/v due to offsets) float voffset; float uscale; // texture scaling (the importer must calculate u/v due to scaling) float vscale; float wrot; // rotation in degree (the importer must calculate u/v due to wrot) CMaterial (); }; // CObject stores the material, vertices, and faces (triangles, quads) of an object class CObject { public: Uint16 numVertices; Uint16 numTriangles; Uint16 numQuads; Uint16 numTexVertex; CMaterial *material; // an object has one unique material bool hasTexture; // an object can have one unique texture char name [255]; // unique object name CVertex *vertex; // vertex list CTriangle *triangle; // triangle list CQuad *quad; // quad list CObject (); ~CObject (); int addVertex (CVertex *w); // used to construct objects void setColor (CColor *col); }; // CModel stores the materials and objects of a model, the data structure is optimized for 3DS files class CModel { private: // all private members are only used "temporarily" at runtime! int rotcol; // very special for flickering light sources, e.g. the engine's bright yellow color is rotated float light_ambient [4]; // special light source attributes float light_diffuse [4]; float light_ambient2 [4]; float light_diffuse2 [4]; CVector3 tlnull; CRotation rotnull; VertexArray *va; // using a vertex array means more memory, but better performance public: char name [20]; // unique model name like "GL-117" int shading; // shading can be set to FLAT (0) or SMOOTH/GOURAUD (1) Uint16 numObjects; // number of objects (which have a unique material) Uint16 numMaterials; // number of materials (should be the same as the number of objects) bool displaylist; // enable using a display list CMaterial *material [100]; // materials, at most 100 (these are only pointers) CObject *object [100]; // objects, at most 100 (these are only pointers) bool nolight; // do not use light? bool alpha; // use alpha blending? int numRefpoints; // reference points for missiles CVector3 *refpoint; // obsolete float scale, scalex, scaley, scalez; // overall scaling of original 3DS coords // Note: the model is stored to (-1,-1,-1)-(1,1,1) in RAM, the SpaceObj tells about the scaling of a model float cubex, cubey, cubez; // surrounding cube (or radius of sphere) for simplified collision detection int list1, list2, list3; // display lists already generated for each type of draw() method CModel (); void setName (char *name); void addMaterial (CMaterial *material); void addObject (CObject *object); void addRefPoint (CVector3 *tl); ~CModel (); void setColor (CColor *col); void drawVertexNormals (CObject *cm, float zoom); int rotateColor (int n); void scaleTexture (float fx, float fy); // the drawing methods take the following parameters: // tl+tl2=translation, rot=rotation, lum=luminance (default 1.0), explode=radial translation (default 0) // draw everything void draw (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, float lum, int explode); // draw without GL lighting void draw2 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, int explode); // draw without textures void draw3 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, int explode); // draw without textures, different luminance void draw3 (CVector3 *tl, CVector3 *tl2, CRotation *rot, float zoom, float lum, int explode); }; // CSphere represents an ellipsoid according to the CModel data structure class CSphere : public CModel { private: int random (int n); public: int segments; // segments on lateral angle, doubled for longitudinal angle float radius; float dx, dy, dz; // ellipsoid measures in the carthesian cosy CSphere (); CSphere (float radius, int segments, float dx, float dy, float dz); ~CSphere (); void init (float radius, int segments); void init (float radius, int segments, float dx, float dy, float dz, int randomized); void invertNormals (); // point outside/inside void setNorthPoleColor (CColor *c, float w); // see setPoleColor, phi=0, theta=90 void setSouthPoleColor (CColor *c, float w); void setPoleColor (int phi, int theta, CColor *c, float w); // shade color over any pole }; // Part of an ellipsoid class CSpherePart : public CModel { public: int segments; // segments on lateral angle, doubled for longitudinal angle float radius; CSpherePart (); CSpherePart (float radius, int segments, float phi); ~CSpherePart (); void init (float radius, int segments); void init (float radius, int segments, float phi); void setNorthPoleColor (CColor *c, float w); // see setPoleColor, phi=0, theta=90 void setSouthPoleColor (CColor *c, float w); void setPoleColor (int phi, int theta, CColor *c, float w); // shade color over any pole }; // More models could be added here, esp. for importing complex non-polygonal formats (obj, wrl) #endif gl-117-1.3.2/src/net.cpp0000644000175000017500000002500110145416156013753 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes multiplayer support. Copyright Norbert Drexl. */ #ifndef IS_NET_H #include "net.h" #include "main.h" int port = 4567; char *message; #ifdef HAVE_SDL_NET int getMsg (TCPsocket sock, char *buf) { Uint32 len, result; // receive the length of the string message result = SDLNet_TCP_Recv (sock, &len, sizeof (len)); if (result < sizeof (len)) { if (SDLNet_GetError () && strlen (SDLNet_GetError ())) // sometimes blank! printf ("SDLNet_TCP_Recv: %s\n", SDLNet_GetError ()); else printf ("unknown error"); fflush (stdout); return 0; } // swap byte order to our local order len = SDL_SwapBE32 (len); // check if anything is strange, like a zero length buffer if (!len) return 0; // get the string buffer over the socket result = SDLNet_TCP_Recv (sock, buf, len); if (result=num_clients) return; // close the old socket, even if it's dead... SDLNet_TCP_Close(clients[i].sock); num_clients--; if(num_clients>i) memmove(&clients[i], &clients[i+1], (num_clients-i)*sizeof(MyClient)); clients=(MyClient*)realloc(clients, num_clients*sizeof(MyClient)); // server side info printf("<-- REMOVE %s\n",name); if(name) free(name); #endif } void Server::createSocketSet () { #ifdef HAVE_SDL_NET // static SDLNet_SocketSet set=NULL; if(set) SDLNet_FreeSocketSet(set); set=SDLNet_AllocSocketSet(num_clients+1); if(!set) { printf("SDLNet_AllocSocketSet: %s\n", SDLNet_GetError()); exit(1); //most of the time this is a major error, but do what you want. } SDLNet_TCP_AddSocket(set,server); for(int i=0;ihost, remoteip->port); strcpy (clients[num_clients].name, buf); num_clients++; // print out the clients IP and port number /* int ipaddr=SDL_SwapBE32(remoteip->host); printf("Accepted a connection from %d.%d.%d.%d port %hu\n", ipaddr>>24, (ipaddr>>16)&0xff, (ipaddr>>8)&0xff, ipaddr&0xff, remoteip->port);*/ printf ("\n#Clients: %d ", num_clients); fflush (stdout); createSocketSet (); } else SDLNet_TCP_Close(newclient); } #endif } int Server::getClientFromID(int id_client) { #ifdef HAVE_SDL_NET for (int i = 0; i < num_clients; i++) { if (clients[i].id == id_client) return i; } #endif return 0; } int Server::getMessage(int id_client, char *buf) { #ifdef HAVE_SDL_NET int numready=SDLNet_CheckSockets(set, 0); if(numready==-1) { printf("SDLNet_CheckSockets: %s\n",SDLNet_GetError()); return 0; } int n = getClientFromID(id_client); if(numready) { if (SDLNet_SocketReady(clients[n].sock)) { if (getMsg (clients[n].sock, buf)) { printf ("clientnummer: %d",n); // printf("Received: %.*s\n",len,message); return 1; } else { removeClient(clients[n].id); return 0; } } else { return 0; } } return 0; #else return 0; #endif } int Server::checkStart() { #ifdef HAVE_SDL_NET int i; for (i = 0; i < num_clients; i++) { sendMessage (clients[i].id, "ready", 5); } printf ("Clients ready ??"); int waittime = 0; char *buf; bool *ok = new bool [num_clients]; for (i = 0; i < num_clients; i++) ok[i] = false; while (waittime < 600000) { waittime += SDL_GetTicks (); for (int i = 0; i < num_clients; i++) { if (getMessage (clients[i].id, buf)) { if (strcmp (buf,"ready")) ok[i] = true; } } for (i = 0; i < num_clients; i++) { if (ok[i] == false) break; if (i == num_clients && ok[i] == true) { printf ("Clients are ready "); return 1; } } } printf ("Clients not ready"); #endif return 0; } void Server::sendMessage(int id_client, char *buf, int len) { #ifdef HAVE_SDL_NET int i = getClientFromID(id_client); if (!putMsg(clients[i].sock, buf, len)) { removeClient (id_client); } #endif } Client::Client () { #ifdef HAVE_SDL_NET sock = NULL; set=SDLNet_AllocSocketSet(1); if(!set) { printf("SDLNet_AllocSocketSet: %s\n", SDLNet_GetError()); SDLNet_Quit(); SDL_Quit(); exit(4); //most of the time this is a major error, but do what you want. } #endif } bool Client::getServer(char *hostname, char *name) { #ifdef HAVE_SDL_NET printf("try join,"); if (sock != NULL) return true; IPaddress ip; //if(SDLNet_ResolveHost(&ip,hostname,port)==-1) if(SDLNet_ResolveHost(&ip,hostname,port)==-1) { printf("SDLNet_ResolveHost: %s\n",SDLNet_GetError()); SDLNet_Quit(); SDL_Quit(); exit(5); } // open the server socket sock=SDLNet_TCP_Open(&ip); if(!sock) { printf("SDLNet_TCP_Open: %s\n",SDLNet_GetError()); return false; // SDLNet_Quit(); // SDL_Quit(); // exit(6); } printf("Connecting to %s port %d\n",hostname,port); if(SDLNet_TCP_AddSocket(set,sock)==-1) { printf("SDLNet_TCP_AddSocket: %s\n",SDLNet_GetError()); SDLNet_Quit(); SDL_Quit(); exit(7); } // login with a name /* if(!putMsg(sock,name)) { SDLNet_TCP_Close(sock); SDLNet_Quit(); SDL_Quit(); exit(8); }*/ return true; #else return false; #endif } int Client::getMessage(char *buf) { #ifdef HAVE_SDL_NET int numready=SDLNet_CheckSockets(set, 0); if(numready==-1) { printf("SDLNet_CheckSockets: %s\n",SDLNet_GetError()); return 0; } if(numready) { if (SDLNet_SocketReady(sock)) { if (getMsg (sock, buf)) { // printf ("clientnummer: %d",n); // printf("Received: %.*s\n",len,message); if (strcmp (buf,"ready")) { sendMessage("ready", 5); } return 1; } else { printf ("Server lost, closing connection..."); SDLNet_TCP_Close(sock); sock = NULL; return 0; } } else { printf ("Socket not ready"); return 0; } } // getch(); // printf ("numready = 0"); return 0; #else return 0; #endif } void Client::sendMessage(char *buf, int len) { #ifdef HAVE_SDL_NET if (!putMsg(sock, buf, len)) printf ("FEHLER"); #endif } #endif gl-117-1.3.2/src/net.h0000644000175000017500000000432710145416156013430 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes multiplayer support. Copyright Norbert Drexl. */ #ifndef IS_NET_H #define IS_NET_H #include #include #include #include "common.h" // ok #ifdef HAVE_SDL_NET extern int getMsg(TCPsocket sock, char *buf); extern int putMsg(TCPsocket sock, char *buf); #endif extern int port; extern char *message; class Client { public: bool isready; Client(); bool getServer(char *hostname, char *name); char *name; void sendMessage (char *buf, int len); int getMessage(char *buf); void sendReady(); // private: #ifdef HAVE_SDL_NET IPaddress ip; TCPsocket sock; SDLNet_SocketSet set; #endif }; class Server { public: bool isready; #ifdef HAVE_SDL_NET typedef struct { char name [100]; TCPsocket sock; int id; } MyClient; #endif Server(); char *name; int getMessage(int ip_client, char *buf); int getClientFromID(int id_client); int getIP(); void removeClient(int id_client); void getClient(); void createSocketSet(); void sendMessage (int ip_client, char *message, int len); int checkStart(); // 1 all Clients ready, 0 Clients not ready int id; // private: int num_clients; #ifdef HAVE_SDL_NET MyClient *clients; TCPsocket server; IPaddress ip; SDLNet_SocketSet set; #endif }; extern Server *server; extern Client *client; #endif gl-117-1.3.2/src/object.cpp0000644000175000017500000001416510145416156014444 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes simple objects instancing models. */ #ifndef IS_OBJECT_H #include "object.h" #include "gl.h" CSpaceObj::CSpaceObj () { tl = new CVector3 (); rot = new CRotation (); zoom = 1; alpha = 1; draw = 1; lum = 1; drawlight = true; explode = 0; numRefModels = 0; refmodel = NULL; o = NULL; } CSpaceObj::CSpaceObj (CModel *o, float zoom) { this->o = o; this->zoom = zoom; tl = new CVector3 (); rot = new CRotation (); alpha = 1; draw = 1; lum = 1; drawlight = true; explode = 0; numRefModels = 0; refmodel = NULL; } CSpaceObj::~CSpaceObj () { int i; if (refmodel) { for (i = 0; i < numRefModels; i ++) delete refmodel [i]; delete refmodel; delete reftl; delete refrot; delete refscale; } delete tl; delete rot; } void CSpaceObj::addRefModel (CModel *model, CVector3 *tl, CRotation *rot, float scale) { if (refmodel == NULL) { refmodel = new CModel *[50]; reftl = new CVector3 [50]; refrot = new CRotation [50]; refscale = new float [50]; } refmodel [numRefModels] = model; reftl [numRefModels].take (tl); refrot [numRefModels].take (rot); refscale [numRefModels] = scale; numRefModels ++; } void CSpaceObj::translate (CVector3 *v) { tl->x = v->x; tl->y = v->y; tl->z = v->z; } void CSpaceObj::translate (float x, float y, float z) { tl->x = x; tl->y = y; tl->z = z; } void CSpaceObj::rotate (short a, short b, short c) { rot->setAngles (a, b, c); } void CSpaceObj::rotateOn (short a, short b, short c) { rot->addAngles (a, b, c); } void CSpaceObj::drawGL (CVector3 *z1, CVector3 *z2, CVector3 *tl, float alpha2, float lum2, bool drawlight2, bool istextured2) { int i; CVector3 tl1; tl1.x = tl->x + this->tl->x; tl1.y = tl->y + this->tl->y; tl1.z = tl->z + this->tl->z; if (draw == 0) return; if (draw == 2 || gl->isSphereInFrustum (tl1.x, tl1.y, tl1.z, this->zoom * 1.5)) { if (drawlight && drawlight2) { glEnable (GL_LIGHTING); o->draw (tl, this->tl, this->rot, this->zoom, lum * lum2, explode); if (refmodel != NULL) { glPushMatrix (); glTranslatef (tl1.x, tl1.y - 0.001 * explode * explode / timestep / timestep, tl1.z); glRotatef (rot->c+90, 0, -1, 0); glRotatef (-rot->a+90, 0, 0, 1); glRotatef (rot->b+180, 1, 0, 0); glScalef (zoom, zoom, zoom); if (o->refpoint) for (i = 0; i < numRefModels; i ++) if (refscale [i] > 0.001) refmodel [i]->draw (&o->refpoint [i / 3], &reftl [i], &refrot [i], refscale [i], lum * lum2, explode); glPopMatrix (); } } else { glDisable (GL_LIGHTING); if (istextured2) { o->draw2 (tl, this->tl, this->rot, this->zoom, explode); } else { if (drawlight2) o->draw3 (tl, this->tl, this->rot, this->zoom, lum * lum2, explode); else o->draw3 (tl, this->tl, this->rot, this->zoom, explode); } } } } Space::Space () { no = 0; alpha = 1; lum = 1; drawlight = true; tl = new CVector3 (); z1 = new CVector3 (); z2 = new CVector3 (); } Space::Space (CVector3 *v, CVector3 *w) { no = 0; alpha = 1; lum = 1; drawlight = true; tl = new CVector3 (); z1 = new CVector3 (v); z2 = new CVector3 (w); } Space::~Space () { delete tl; delete z1; delete z2; } void Space::init () { no = 0; } bool Space::addObject (CSpaceObj *o2) { if (no < 0 || no >= maxobjperspace) return false; o [no] = o2; no ++; return true; } bool Space::removeObject (CSpaceObj *o2) { int i, i2; for (i = 0; i < no; i ++) if (o [i] == o2) { for (i2 = i + 1; i2 < no; i2 ++) { o [i2 - 1] = o [i2]; } no --; return true; } return false; } void Space::translate (CVector3 *v) { tl->x = v->x; tl->y = v->y; tl->z = v->z; } void Space::drawGL () { int i; if (drawlight) { for (i = 0; i < no; i ++) { if (o [i] != NULL) if (o [i]->o != NULL) if (o [i]->draw && !o [i]->o->alpha) o [i]->drawGL (z1, z2, tl, alpha, lum, true, true); } for (i = 0; i < no; i ++) { if (o [i] != NULL) if (o [i]->o != NULL) if (o [i]->draw && o [i]->o->alpha) o [i]->drawGL (z1, z2, tl, alpha, lum, true, true); } for (i = 0; i < no; i ++) { if (o [i] != NULL) if (o [i]->o == NULL) if (o [i]->draw) o [i]->drawGL (z1, z2, tl, alpha, lum, true, true); } } else /* not yet implemented */ { for (i = 0; i < no; i ++) { if (o [i] != NULL) if (o [i]->o != NULL) if (o [i]->draw && !o [i]->o->alpha) o [i]->drawGL (z1, z2, tl, alpha, lum, false, false); } for (i = 0; i < no; i ++) { if (o [i] != NULL) if (o [i]->o != NULL) if (o [i]->draw && o [i]->o->alpha) o [i]->drawGL (z1, z2, tl, alpha, lum, false, false); } for (i = 0; i < no; i ++) { if (o [i] != NULL) if (o [i]->o == NULL) if (o [i]->draw) o [i]->drawGL (z1, z2, tl, alpha, lum, false, false); } } } #endif gl-117-1.3.2/src/object.h0000644000175000017500000000531110145416156014102 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes simple objects instancing models. */ #ifndef IS_OBJECT_H #define IS_OBJECT_H #include "model.h" // ok // CSpaceObj represents an abstract object (like a cannon shot or a complete fighter) class CSpaceObj { public: int draw; // draw/hide int explode; // explosion stadium (0=no explosion) bool drawlight; // draw with/without light float zoom; // zoom value of the model float alpha; // overall alpha value (should be 1.0) float lum; // luminance (default 1.0) CModel *o; // reference to a model CVector3 *tl; // translation CRotation *rot; // rotation // reference models (e.g. missiles for fighters) int numRefModels; CModel **refmodel; CVector3 *reftl; CRotation *refrot; float *refscale; CSpaceObj (); CSpaceObj (CModel *o, float zoom); virtual ~CSpaceObj (); void addRefModel (CModel *model, CVector3 *tl, CRotation *rot, float scale); void translate (CVector3 *v); void translate (float x, float y, float z); void rotate (short a, short b, short c); void rotateOn (short a, short b, short c); // z1,z2=easy preculling space/cube, tl=translation virtual void drawGL (CVector3 *z1, CVector3 *z2, CVector3 *tl, float alpha2, float lum2, bool drawlight2, bool istextured2); }; const int maxobjperspace = 1024; // CSpace represents a collection of CSpaceObj_ects class Space { public: int no; // number of objects in space bool drawlight; // draw with/without light float alpha; float lum; // luminance CSpaceObj *o [maxobjperspace]; // reference to all objects in space CVector3 *z1, *z2; // easy preclipping space/cube CVector3 *tl; // translation Space (); Space (CVector3 *v, CVector3 *w); virtual ~Space (); void init (); bool addObject (CSpaceObj *o2); bool removeObject (CSpaceObj *o2); void translate (CVector3 *v); void drawGL (); }; #endif gl-117-1.3.2/src/objload.cpp0000644000175000017500000002126710145416556014615 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a wavefront obj loader. */ #ifndef IS_OBJLOAD_H #include #include #include #include "objload.h" CFile::CFile (char *filename) { char buf [STDSIZE]; in = fopen (filename, "rb"); if (in == NULL) { sprintf (buf, "Cannot open file %s", filename); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } fseek (in, 0, SEEK_END); size = ftell (in); fseek (in, 0, SEEK_SET); data = new char [size]; int32 z = 0; while (!feof (in)) { fread (&data [z], 4096, sizeof (char), in); z += 4096; } fclose (in); filepointer = 0; } CFile::~CFile () { delete data; } float CFile::readFloat (int32 offset) { int32 i = offset; while (data [i] == ' ' || data [i] == '\t' || data [i] == 0) i ++; offset = i; while ((data [i] >= '0' && data [i] <= '9') || data [i] == '.' || data [i] == '-') i ++; data [i] = 0; filepointer = i + 1; char *p1; char **p2 = &p1; return (float) strtod (&data [offset], p2); } float CFile::readFloat () { return readFloat (filepointer); } int CFile::readInteger (int32 offset) { int32 i = offset; while (data [i] == ' ' || data [i] == '\t' || data [i] == 0) i ++; offset = i; while ((data [i] >= '0' && data [i] <= '9') || data [i] == '-') i ++; data [i] = 0; filepointer = i + 1; // char *p1; // char **p2 = &p1; return (int) atoi (&data [offset]); } int CFile::readInteger () { return readInteger (filepointer); } char *CFile::readWord (int32 offset) { int32 i = offset; while (data [i] == ' ' || data [i] == '\t' || data [i] == 0) i ++; offset = i; while (data [i] > ' ' && data [i] <= 'z') i ++; data [i] = 0; filepointer = i + 1; return &data [offset]; } char *CFile::readWord () { return readWord (filepointer); } char *CFile::getChar () { return &data [filepointer]; } void CFile::nextWhite () { int32 i = filepointer; while (data [i] != ' ' && data [i] != '\t' && data [i] != '\n' && i < size) i ++; filepointer = i; } void CFile::skipWhite () { int32 i = filepointer; while (data [i] == ' ' || data [i] == '\t') i ++; filepointer = i; } CLoadOBJ::CLoadOBJ () { } void CLoadOBJ::ComputeColors (CModel *model) { int i, i2; if (model->numObjects <= 0) return; CVector3 n; CVector3 light (1.0, 1.0, 1.0); light.norm (); for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { n.take (&object->vertex [i2].normal); int lum = (int) (255.0 - 255.0 * acos (n.dotproduct (&light))); object->vertex [i2].color.c [0] = lum; object->vertex [i2].color.c [1] = lum; object->vertex [i2].color.c [2] = lum; } } } void CLoadOBJ::ComputeNormals (CModel *model) { int i, i2, i3; if (model->numObjects <= 0) return; CVector3 n; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numTriangles; i2 ++) { object->triangle [i2].getNormal (&n); if (n.x == 0 && n.y == 0 && n.z == 0) n.z = 1; for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->addNormal (&n); } } for (i2 = 0; i2 < object->numQuads; i2 ++) { object->quad [i2].getNormal (&n); for (i3 = 0; i3 < 4; i3 ++) { object->quad [i2].v [i3]->addNormal (&n); } } for (i2 = 0; i2 < object->numTriangles; i2 ++) { for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->normal.norm (); } } for (i2 = 0; i2 < object->numQuads; i2 ++) { for (i3 = 0; i3 < 4; i3 ++) { object->quad [i2].v [i3]->normal.norm (); } } } } void CLoadOBJ::Normalize (CModel *model) { int i, i2; float minx = 1E10, miny = 1E10, minz = 1E10; float maxx = -1E10, maxy = -1E10, maxz = -1E10; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; if (v->vector.x > maxx) maxx = v->vector.x; if (v->vector.y > maxy) maxy = v->vector.y; if (v->vector.z > maxz) maxz = v->vector.z; if (v->vector.x < minx) minx = v->vector.x; if (v->vector.y < miny) miny = v->vector.y; if (v->vector.z < minz) minz = v->vector.z; } } float tlx = (float) (maxx + minx) / 2.0F; float tly = (float) (maxy + miny) / 2.0F; float tlz = (float) (maxz + minz) / 2.0F; float scx = (float) (maxx - minx) * 0.5F; float scy = (float) (maxy - miny) * 0.5F; float scz = (float) (maxz - minz) * 0.5F; float sc = scx > scy ? scx : scy; sc = scz > sc ? scz : sc; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; v->vector.x -= tlx; v->vector.x /= sc; v->vector.y -= tly; v->vector.y /= sc; v->vector.z -= tlz; v->vector.z /= sc; } } // model->scale = sc; } bool CLoadOBJ::ImportOBJ (CModel *model, char *filename) { file = new CFile (filename); int32 i = 0; int i2; int vertices = 0, faces = 0; // precalculate number of vertices and number of triangles while (i < file->size - 1) { // one vertex if (file->data [i] == 'v' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) vertices ++; // read number of vertices in this face if (file->data [i] == 'f' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) { file->filepointer = i + 1; file->skipWhite (); char *p; int z = 0; do { (void) file->readInteger (); file->nextWhite (); file->skipWhite (); p = file->getChar (); z ++; } while (*p >= '0' && *p <= '9'); faces += (z - 2); } i ++; } // create new object model->object [model->numObjects] = new CObject; CObject *object = model->object [model->numObjects]; model->numObjects ++; object->numVertices = vertices; object->numTriangles = faces; object->numQuads = 0; // create array of vertices and faces (triangles, quads) object->vertex = new CVertex [object->numVertices]; object->triangle = new CTriangle [object->numTriangles]; object->quad = new CQuad [object->numQuads]; int vn = 0, tn = 0; i = 0; while (i < file->size - 1) { // read vertex if (file->data [i] == 'v' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) { object->vertex [vn].vector.x = file->readFloat (i + 2); object->vertex [vn].vector.y = file->readFloat (); object->vertex [vn].vector.z = file->readFloat (); i = file->filepointer - 2; vn ++; } // read face if (file->data [i] == 'f' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) { file->filepointer = i + 1; file->skipWhite (); char *p; int z = 0; int a [100]; // read vertex indices do { a [z] = file->readInteger (); file->nextWhite (); file->skipWhite (); p = file->getChar (); z ++; } while (*p >= '0' && *p <= '9' && z < 100); // create triangles (triangulation) for (i2 = 2; i2 < z; i2 ++) { object->triangle [tn].v [0] = &object->vertex [a [0] - 1]; object->triangle [tn].v [1] = &object->vertex [a [i2 - 1] - 1]; object->triangle [tn].v [2] = &object->vertex [a [i2] - 1]; tn ++; } } i ++; } delete file; ComputeNormals (model); ComputeColors (model); Normalize (model); return true; } #endif gl-117-1.3.2/src/objload.cpp~0000644000175000017500000002127010145416156015001 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a wavefront obj loader. */ #ifndef IS_OBJLOAD_H #include #include #include #include "objload.h" CFile::CFile (char *filename) { char buf [STDSIZE]; in = fopen (filename, "rb"); if (in == NULL) { sprintf (buf, "Cannot open file %s", filename); display (buf, LOG_FATAL); exit (EXIT_LOADFILE); } fseek (in, 0, SEEK_END); size = ftell (in); fseek (in, 0, SEEK_SET); data = new char [size]; int32 z = 0; while (!feof (in)) { fread (&data [z], 4096, sizeof (char), in); z += 4096; } fclose (in); filepointer = 0; } CFile::~CFile () { delete data; } float CFile::readFloat (int32 offset) { int32 i = offset; while (data [i] == ' ' || data [i] == '\t' || data [i] == 0) i ++; offset = i; while ((data [i] >= '0' && data [i] <= '9') || data [i] == '.' || data [i] == '-') i ++; data [i] = 0; filepointer = i + 1; char *p1; char **p2 = &p1; return (float) strtod (&data [offset], p2); } float CFile::readFloat () { return readFloat (filepointer); } int CFile::readInteger (int32 offset) { int32 i = offset; while (data [i] == ' ' || data [i] == '\t' || data [i] == 0) i ++; offset = i; while ((data [i] >= '0' && data [i] <= '9') || data [i] == '-') i ++; data [i] = 0; filepointer = i + 1; // char *p1; // char **p2 = &p1; return (int) atoi (&data [offset]); } int CFile::readInteger () { return readInteger (filepointer); } char *CFile::readWord (int32 offset) { int32 i = offset; while (data [i] == ' ' || data [i] == '\t' || data [i] == 0) i ++; offset = i; while (data [i] > ' ' && data [i] <= 'z') i ++; data [i] = 0; filepointer = i + 1; return &data [offset]; } char *CFile::readWord () { return readWord (filepointer); } char *CFile::getChar () { return &data [filepointer]; } void CFile::nextWhite () { int32 i = filepointer; while (data [i] != ' ' && data [i] != '\t' && data [i] != '\n' && i < size) i ++; filepointer = i; } void CFile::skipWhite () { int32 i = filepointer; while (data [i] == ' ' || data [i] == '\t') i ++; filepointer = i; } CLoadOBJ::CLoadOBJ () { } void CLoadOBJ::ComputeColors (CModel *model) { int i, i2; if (model->numObjects <= 0) return; CVector3 n; CVector3 light (1.0, 1.0, 1.0); light.norm (); for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { n.take (&object->vertex [i2].normal); int lum = (int) (255.0 - 255.0 * acos (n.dotproduct (&light))); object->vertex [i2].color.c [0] = lum; object->vertex [i2].color.c [1] = lum; object->vertex [i2].color.c [2] = lum; } } } void CLoadOBJ::ComputeNormals (CModel *model) { int i, i2, i3; if (model->numObjects <= 0) return; CVector3 n; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numTriangles; i2 ++) { object->triangle [i2].getNormal (&n); if (n.x == 0 && n.y == 0 && n.z == 0) n.z = 1; for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->addNormal (&n); } } for (i2 = 0; i2 < object->numQuads; i2 ++) { object->quad [i2].getNormal (&n); for (i3 = 0; i3 < 4; i3 ++) { object->quad [i2].v [i3]->addNormal (&n); } } for (i2 = 0; i2 < object->numTriangles; i2 ++) { for (i3 = 0; i3 < 3; i3 ++) { object->triangle [i2].v [i3]->normal.norm (); } } for (i2 = 0; i2 < object->numQuads; i2 ++) { for (i3 = 0; i3 < 4; i3 ++) { object->quad [i2].v [i3]->normal.norm (); } } } } void CLoadOBJ::Normalize (CModel *model) { int i, i2; float minx = 1E10, miny = 1E10, minz = 1E10; float maxx = -1E10, maxy = -1E10, maxz = -1E10; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; if (v->vector.x > maxx) maxx = v->vector.x; if (v->vector.y > maxy) maxy = v->vector.y; if (v->vector.z > maxz) maxz = v->vector.z; if (v->vector.x < minx) minx = v->vector.x; if (v->vector.y < miny) miny = v->vector.y; if (v->vector.z < minz) minz = v->vector.z; } } float tlx = (float) (maxx + minx) / 2.0F; float tly = (float) (maxy + miny) / 2.0F; float tlz = (float) (maxz + minz) / 2.0F; float scx = (float) (maxx - minx) * 0.5F; float scy = (float) (maxy - miny) * 0.5F; float scz = (float) (maxz - minz) * 0.5F; float sc = scx > scy ? scx : scy; sc = scz > sc ? scz : sc; for (i = 0; i < model->numObjects; i ++) { CObject *object = (model->object [i]); for (i2 = 0; i2 < object->numVertices; i2 ++) { CVertex *v = &object->vertex [i2]; v->vector.x -= tlx; v->vector.x /= sc; v->vector.y -= tly; v->vector.y /= sc; v->vector.z -= tlz; v->vector.z /= sc; } } // model->scale = sc; }; bool CLoadOBJ::ImportOBJ (CModel *model, char *filename) { file = new CFile (filename); int32 i = 0; int i2; int vertices = 0, faces = 0; // precalculate number of vertices and number of triangles while (i < file->size - 1) { // one vertex if (file->data [i] == 'v' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) vertices ++; // read number of vertices in this face if (file->data [i] == 'f' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) { file->filepointer = i + 1; file->skipWhite (); char *p; int z = 0; do { (void) file->readInteger (); file->nextWhite (); file->skipWhite (); p = file->getChar (); z ++; } while (*p >= '0' && *p <= '9'); faces += (z - 2); } i ++; } // create new object model->object [model->numObjects] = new CObject; CObject *object = model->object [model->numObjects]; model->numObjects ++; object->numVertices = vertices; object->numTriangles = faces; object->numQuads = 0; // create array of vertices and faces (triangles, quads) object->vertex = new CVertex [object->numVertices]; object->triangle = new CTriangle [object->numTriangles]; object->quad = new CQuad [object->numQuads]; int vn = 0, tn = 0; i = 0; while (i < file->size - 1) { // read vertex if (file->data [i] == 'v' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) { object->vertex [vn].vector.x = file->readFloat (i + 2); object->vertex [vn].vector.y = file->readFloat (); object->vertex [vn].vector.z = file->readFloat (); i = file->filepointer - 2; vn ++; } // read face if (file->data [i] == 'f' && (file->data [i + 1] == ' ' || file->data [i + 1] == '\t')) { file->filepointer = i + 1; file->skipWhite (); char *p; int z = 0; int a [100]; // read vertex indices do { a [z] = file->readInteger (); file->nextWhite (); file->skipWhite (); p = file->getChar (); z ++; } while (*p >= '0' && *p <= '9' && z < 100); // create triangles (triangulation) for (i2 = 2; i2 < z; i2 ++) { object->triangle [tn].v [0] = &object->vertex [a [0] - 1]; object->triangle [tn].v [1] = &object->vertex [a [i2 - 1] - 1]; object->triangle [tn].v [2] = &object->vertex [a [i2] - 1]; tn ++; } } i ++; } delete file; ComputeNormals (model); ComputeColors (model); Normalize (model); return true; } #endif gl-117-1.3.2/src/objload.h0000644000175000017500000000327410145416156014254 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a wavefront obj loader. */ #ifndef IS_OBJLOAD_H #define IS_OBJLOAD_H #define int32 int #include "model.h" // ok class CFile { public: FILE *in; int32 size; int32 filepointer; char *data; CFile (char *filename); ~CFile (); float readFloat (int32 offset); float readFloat (); int readInteger (int32 offset); int readInteger (); char *readWord (int32 offset); char *readWord (); char *getChar (); void nextWhite (); void skipWhite (); }; // CLoad3DS handles all of the loading code (see NEHE's OpenGL tutorials) class CLoadOBJ { public: CLoadOBJ (); bool ImportOBJ (CModel *model, char *filename); private: CFile *file; void ComputeNormals (CModel *model); void ComputeColors (CModel *model); void Normalize (CModel *model); void LoadObject (CModel *model); }; #endif gl-117-1.3.2/src/pilots.cpp0000644000175000017500000002422010145416156014501 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file handles all pilots data. */ #ifndef IS_PILOTS_H #include #include #include #include "dirs.h" #include "pilots.h" #include "mission.h" TeamPilot::TeamPilot (int ranking, char *name, int intelligence, int precision, int aggressivity, int fighterkills) { this->ranking = ranking; strcpy (this->name, name); this->intelligence = intelligence; this->precision = precision; this->aggressivity = aggressivity; this->fighterkills = fighterkills; } void TeamPilot::flyMission (int averagekills) { float f = (float) (intelligence + precision + aggressivity); f /= 1000; f = 1.0F - f; f *= (float) averagekills; if (f < 0) f = 0; fighterkills += (int) f; } char *TeamPilot::getRank () { if (ranking == 0) return "AIRMAN BASIC"; else if (ranking == 1) return "AIRMAN"; else if (ranking == 2) return "AIRMAN 1ST CLASS"; else if (ranking == 3) return "2ND LIEUTNANT"; else if (ranking == 4) return "1ST LIEUTNANT"; else if (ranking == 5) return "CAPTAIN"; else if (ranking == 6) return "MAJOR"; else if (ranking == 7) return "COLONEL"; else return "GENERAL"; } char *TeamPilot::getShortRank () { if (ranking == 0) return "AB"; else if (ranking == 1) return "ARM"; else if (ranking == 2) return "A1C"; else if (ranking == 3) return "2ND LT"; else if (ranking == 4) return "1ST LT"; else if (ranking == 5) return "CAPT"; else if (ranking == 6) return "MAJ"; else if (ranking == 7) return "COL"; else return "GEN"; } char *TeamPilot::getName () { strcpy (fullname, getRank ()); strcat (fullname, " "); strcat (fullname, name); return fullname; } char *TeamPilot::getShortName () { strcpy (fullname, getShortRank ()); strcat (fullname, " "); strcat (fullname, name); return fullname; } void TeamPilot::load (FILE *in) { fread (&ranking, sizeof (int), 1, in); int len; fread (&len, sizeof (int), 1, in); if (len > 50) return; fread (name, sizeof (char), len, in); fread (&intelligence, sizeof (int), 1, in); fread (&precision, sizeof (int), 1, in); fread (&aggressivity, sizeof (int), 1, in); fread (&fighterkills, sizeof (int), 1, in); } void TeamPilot::save (FILE *out) { fwrite (&ranking, sizeof (int), 1, out); int len = strlen (name); fwrite (&len, sizeof (int), 1, out); fwrite (name, sizeof (char), len, out); fwrite (&intelligence, sizeof (int), 1, out); fwrite (&precision, sizeof (int), 1, out); fwrite (&aggressivity, sizeof (int), 1, out); fwrite (&fighterkills, sizeof (int), 1, out); } void Pilot::load () { int i; for (i = 0; i < maxpilotdata; i ++) { mission_state [i] = 0; mission_time [i] = 0; mission_fighterkills [i] = 0; mission_shipkills [i] = 0; mission_tankkills [i] = 0; mission_otherkills [i] = 0; mission_shield [i] = 0; mission_points [i] = 0; mission_score [i] = 0; } if (tp == NULL) { tp = new TeamPilot *[11]; tp [0] = new TeamPilot (5, "PRIMETIME", 200, 100, 150, 20); tp [1] = new TeamPilot (1, "HEPTARGON", 80, 220, 300, 1); tp [2] = new TeamPilot (2, "KARA", 180, 160, 50, 4); tp [3] = new TeamPilot (6, "SHARK", 70, 90, 120, 22); tp [4] = new TeamPilot (3, "BOSS", 250, 180, 80, 10); tp [5] = new TeamPilot (2, "DR DOOM", 320, 210, 20, 2); tp [6] = new TeamPilot (4, "SHADOW", 130, 200, 320, 15); tp [7] = new TeamPilot (7, "MATRIX", 40, 80, 180, 25); tp [8] = new TeamPilot (1, "FIREBIRD", 250, 140, 100, 1); tp [9] = new TeamPilot (4, "THUNDER", 150, 170, 60, 18); tp [10] = new TeamPilot (0, "PLAYER", 0, 0, 0, 0); } char buf [4096]; strcpy (buf, dirs->getSaves (name)); FILE *in = fopen (buf, "rb"); if (in == NULL) { display ("Could not load pilot", LOG_WARN); return; } char saveversion [20]; fread (saveversion, sizeof (char), strlen (SAVEVERSION), in); fread (mission_state, sizeof (int), maxpilotdata, in); fread (mission_time, sizeof (int), maxpilotdata, in); fread (mission_fighterkills, sizeof (int), maxpilotdata, in); fread (mission_shipkills, sizeof (int), maxpilotdata, in); fread (mission_tankkills, sizeof (int), maxpilotdata, in); fread (mission_otherkills, sizeof (int), maxpilotdata, in); fread (mission_shield, sizeof (int), maxpilotdata, in); fread (mission_points, sizeof (int), maxpilotdata, in); fread (mission_score, sizeof (int), maxpilotdata, in); for (i = 0; i < 10; i ++) tp [i]->load (in); fclose (in); } void Pilot::save () { int i; char buf [4096]; strcpy (buf, dirs->getSaves (name)); FILE *out = fopen (buf, "wb"); if (out == NULL) { display ("Could not write pilot", LOG_WARN); return; } fwrite (SAVEVERSION, sizeof (char), strlen (SAVEVERSION), out); fwrite (mission_state, sizeof (int), maxpilotdata, out); fwrite (mission_time, sizeof (int), maxpilotdata, out); fwrite (mission_fighterkills, sizeof (int), maxpilotdata, out); fwrite (mission_shipkills, sizeof (int), maxpilotdata, out); fwrite (mission_tankkills, sizeof (int), maxpilotdata, out); fwrite (mission_otherkills, sizeof (int), maxpilotdata, out); fwrite (mission_shield, sizeof (int), maxpilotdata, out); fwrite (mission_points, sizeof (int), maxpilotdata, out); fwrite (mission_score, sizeof (int), maxpilotdata, out); for (i = 0; i < 10; i ++) tp [i]->save (out); fclose (out); } char *Pilot::getRank () { int i, sum = 0; for (i = MISSION_CAMPAIGN1; i < MISSION_CAMPAIGN2; i ++) { if (mission_score [i] > 0 && mission_score [i] < 2000) sum += mission_score [i]; } if (sum < 500) { ranking = 0; return "AIRMAN BASIC"; } else if (sum < 1000) { ranking = 1; return "AIRMAN"; } else if (sum < 1500) { ranking = 2; return "AIRMAN 1ST CLASS"; } else if (sum < 2500) { ranking = 3; return "2ND LIEUTNANT"; } else if (sum < 3500) { ranking = 4; return "1ST LIEUTNANT"; } else if (sum < 5000) { ranking = 5; return "CAPTAIN"; } else if (sum < 7000) { ranking = 6; return "MAJOR"; } else if (sum < 9000) { ranking = 7; return "COLONEL"; } else { ranking = 8; return "GENERAL"; } } /* US RANKS: Second Lieutenant, 2nd Lt First Lieutenant, 1st Lt Captain, Capt Major, Maj Lieutenant Colonel, Lt Col Colonel, Col Brigadier General, Brig Gen Major General, Maj Gen Lieutenant General, Lt Gen General, Gen */ char *Pilot::getShortRank () { int i, sum = 0; for (i = MISSION_CAMPAIGN1; i < MISSION_CAMPAIGN2; i ++) { if (mission_score [i] > 0 && mission_score [i] < 2000) sum += mission_score [i]; } if (sum < 500) { ranking = 0; return "AB"; } else if (sum < 1000) { ranking = 1; return "AMN"; } else if (sum < 1500) { ranking = 2; return "A1C"; } else if (sum < 2500) { ranking = 3; return "2ND LT"; } else if (sum < 3500) { ranking = 4; return "1ST LT"; } else if (sum < 5000) { ranking = 5; return "CAPT"; } else if (sum < 7000) { ranking = 6; return "MAJ"; } else if (sum < 9000) { ranking = 7; return "COL"; } else { ranking = 8; return "GEN"; } } Pilot::Pilot (char *name) { tp = NULL; strcpy (this->name, name); load (); } Pilot::~Pilot () { int i; for (i = 0; i < 11; i ++) delete (tp [i]); } void PilotList::load (char *fname) { char buf [16]; int i; FILE *in = fopen (fname, "rb"); if (in == NULL) { display ("Could not load saves/pilots", LOG_WARN); aktpilots = 0; add ("PLAYER"); return; } fgets (buf, 16, in); aktpilots = atoi (buf); fgets (buf, 16, in); aktpilot = atoi (buf); int z = 0; while (fgets (buf, 16, in) && z < maxpilots) { for (i = 0; i < (int) strlen (buf); i ++) if (buf [i] == '\n') buf [i] = '\0'; pilot [z] = new Pilot (buf); z ++; } fclose (in); } void PilotList::save (char *fname) { char buf [256]; int i; FILE *out = fopen (fname, "wb"); if (out == NULL) { display ("Could not write saves/pilots", LOG_WARN); return; } sprintf (buf, "%d\n%d\n", aktpilots, aktpilot); fwrite (buf, 1, strlen (buf), out); for (i = 0; i < aktpilots; i ++) { sprintf (buf, "%s\n", pilot [i]->name); fwrite (buf, 1, strlen (buf), out); } fclose (out); for (i = 0; i < aktpilots; i ++) { pilot [i]->save (); } } PilotList::PilotList (char *fname) { int i; for (i = 0; i < maxpilots; i ++) pilot [i] = NULL; load (fname); } PilotList::~PilotList () { int i; for (i = 0; i < aktpilots; i ++) { if (pilot [i] != NULL) delete pilot [i]; } } void PilotList::rm () { int i, z = 0; for (i = 0; i < maxpilots; i ++) { if (pilot [i] != NULL) z ++; } if (z <= 1) return; if (pilot [aktpilot] != NULL) { char buf [4096]; strcpy (buf, dirs->getSaves (pilot [aktpilot]->name)); remove (buf); delete pilot [aktpilot]; pilot [aktpilot] = NULL; } for (i = aktpilot; i < aktpilots; i ++) pilot [i] = pilot [i + 1]; pilot [aktpilots] = NULL; aktpilots --; if (aktpilots < 0) aktpilots = 0; aktpilot = 0; } void PilotList::add (char *name) { if (aktpilots >= maxpilots) return; aktpilot = aktpilots; pilot [aktpilot] = new Pilot (name); aktpilots ++; } #endif gl-117-1.3.2/src/pilots.h0000644000175000017500000000563210145416156014154 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file handles all pilots data. */ #ifndef IS_PILOTS_H #define IS_PILOTS_H #define SAVEVERSION "GL117_S1" const int maxpilotdata = 100; #define PILOT_PRIMETIME 0 #define PILOT_HEPTARGON 1 #define PILOT_LARA 2 #define PILOT_SHARK 3 #define PILOT_BOSS 4 #define PILOT_DRDOOM 5 #define PILOT_SHADOW 6 #define PILOT_MATRIX 7 #define PILOT_FIREBIRD 8 #define PILOT_THUNDER 9 class TeamPilot { public: int ranking; // 0=lowest ranking char name [100]; // pilot nickname char fullname [100]; // pilot full name int intelligence; // intelligence, knowledge on piloting and manoevers int precision; // precision, reaction int aggressivity; // stay close behind the enemy, more firing tolerance int fighterkills; // number of fighter kills for the pilot ranking TeamPilot (int ranking, char *name, int intelligence, int precision, int aggressivity, int fighterkills); void flyMission (int averagekills); char *getRank (); char *getShortRank (); char *getName (); char *getShortName (); void load (FILE *in); void save (FILE *out); }; class Pilot { public: char name [16]; int mission_state [maxpilotdata]; // success/failure int mission_time [maxpilotdata]; // time spent on the mission int mission_fighterkills [maxpilotdata]; int mission_shipkills [maxpilotdata]; int mission_tankkills [maxpilotdata]; int mission_otherkills [maxpilotdata]; int mission_shield [maxpilotdata]; // shield left int mission_points [maxpilotdata]; // extra points for hitting a target int mission_score [maxpilotdata]; // overall score (calculated) int ranking; // current ranking (calculated due to all scores) TeamPilot **tp; // team pilots void load (); void save (); char *getRank (); char *getShortRank (); Pilot (char *name); ~Pilot (); }; const int maxpilots = 5; class PilotList { public: int aktpilots, aktpilot; Pilot *pilot [maxpilots]; void load (char *fname); void save (char *fname); PilotList (char *fname); ~PilotList (); void rm (); void add (char *name); }; #endif gl-117-1.3.2/src/vertexarray.cpp0000644000175000017500000001064710145416156015553 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a vertex array to emulate OpenGL calls. */ #ifndef IS_VERTEXARRAY_H #include "vertexarray.h" #include VertexArray::VertexArray () { max = 0; n = 0; stride = 12; pref = VERTEXARRAY_V3C4T2; data = NULL; } VertexArray::VertexArray (int pref) { max = 0; n = 0; stride = 12; this->pref = pref; data = NULL; } VertexArray::~VertexArray () { if (max > 0) free (data); } void VertexArray::setPref (int pref) { this->pref = pref; } void VertexArray::glBegin (int type) { n = 0; this->type = type; } void VertexArray::glVertex3f (float x, float y, float z) { if (n >= max) reallocData (); data [stride * n + 0] = x; data [stride * n + 1] = y; data [stride * n + 2] = z; n ++; } void VertexArray::glVertex3fv (float *f) { if (n >= max) reallocData (); data [stride * n + 0] = f [0]; data [stride * n + 1] = f [1]; data [stride * n + 2] = f [2]; n ++; } void VertexArray::glNormal3f (float x, float y, float z) { if (n >= max) reallocData (); data [stride * n + 3] = x; data [stride * n + 4] = y; data [stride * n + 5] = z; } void VertexArray::glColor4ub (int r, int g, int b, int a) { if (n >= max) reallocData (); data [stride * n + 6] = (float) r / 255.0F; data [stride * n + 7] = (float) g / 255.0F; data [stride * n + 8] = (float) b / 255.0F; data [stride * n + 9] = (float) a / 255.0F; } void VertexArray::glColor3ub (int r, int g, int b) { glColor4ub (r, g, b, 255); } void VertexArray::glColor4f (float r, float g, float b, float a) { if (n >= max) reallocData (); data [stride * n + 6] = r; data [stride * n + 7] = g; data [stride * n + 8] = b; data [stride * n + 9] = a; } void VertexArray::glColor3f (float r, float g, float b) { glColor4f (r, g, b, 255); } void VertexArray::glColor4fv (float *f) { glColor4f (f [0], f [1], f [2], f [3]); } void VertexArray::glColor3fv (float *f) { glColor4f (f [0], f [1], f [2], 1); } void VertexArray::glTexCoord2f (float x, float y) { if (n >= max) reallocData (); data [stride * n + 10] = x; data [stride * n + 11] = y; } void VertexArray::glTexCoord2fv (float *f) { if (n >= max) reallocData (); data [stride * n + 10] = f [0]; data [stride * n + 11] = f [1]; } void VertexArray::glTexCoord2d (float x, float y) { if (n >= max) reallocData (); data [stride * n + 10] = x; data [stride * n + 11] = y; } void VertexArray::reallocData () { while (n >= max) { if (max == 0) max = 32; else max *= 2; data = (float *) realloc (data, max * stride * sizeof (float)); if (data == NULL) display ("Out of memory", LOG_FATAL); } } void VertexArray::glEnd () { if (n == 0) return; glEnableClientState (GL_VERTEX_ARRAY); if (pref != VERTEXARRAY_V3C4T2 && pref != VERTEXARRAY_V3C4) glEnableClientState (GL_NORMAL_ARRAY); else glDisableClientState (GL_NORMAL_ARRAY); if (pref != VERTEXARRAY_V3N3T2) glEnableClientState (GL_COLOR_ARRAY); else glDisableClientState (GL_COLOR_ARRAY); if (pref != VERTEXARRAY_V3N3C4 && pref != VERTEXARRAY_V3C4) glEnableClientState (GL_TEXTURE_COORD_ARRAY); else glDisableClientState (GL_TEXTURE_COORD_ARRAY); glVertexPointer (3, GL_FLOAT, sizeof (float) * stride, &data [0]); glNormalPointer (GL_FLOAT, sizeof (float) * stride, &data [3]); glColorPointer (4, GL_FLOAT, sizeof (float) * stride, &data [6]); glTexCoordPointer (2, GL_FLOAT, sizeof (float) * stride, &data [10]); glDrawArrays (type, 0, n); } #endif gl-117-1.3.2/src/vertexarray.h0000644000175000017500000000574210145416156015220 0ustar cedriccedric/* GL-117 Copyright 2001, 2002 Thomas A. Drexl aka heptargon This file is part of GL-117. GL-117 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. GL-117 is distributed in the hope that 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 GL-117; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* This file includes a vertex array to emulate OpenGL calls. */ #ifndef IS_VERTEXARRAY_H #define IS_VERTEXARRAY_H #include "common.h" // ok #define VERTEXARRAY_V3N3C4T2 1 #define VERTEXARRAY_V3C4T2 2 #define VERTEXARRAY_V3N3T2 3 #define VERTEXARRAY_V3N3C4 4 #define VERTEXARRAY_V3C4 5 /* VertexArray class to emulate OpenGL primitives and pass 3D data in blocks to the hardware! Much faster! Use one VertexArray for each #define VERTEXARRAY prototype and each primitive's type (GL_QUADS, GL_TRIANGLES). Usage: VertexArray quads; quads.glBegin(GL_QUADS); quads.glVertex3f(...); ... ; quads.glEnd(); quads.glEnd() passes the data block to OpenGL, so make sure to call quads.glEnd() ONLY AFTER painting ALL your quads! That means, you can add vertices using quads.glVertex() at ANY time WITHOUT glBegin()/glEnd() calls! For your other primitives, use different arrays: VertexArray quadstrip; VertexArray triangles; */ class VertexArray { public: int type; // primitive type in glBegin: GL_QUAD, GL_TRIANGLE... int n; // number of vertices in this array int max; // allocated number of vertices in this array float *data; // data block to pass to OpenGL (always float data: position, color, texture coords) int stride; // size of data for one vertex in floats (V3N3C4T2 makes up 12 floats) int pref; // vertex array type as given by the #define VERTEXARRAY prototypes, ONE class instance can only be of ONE type VertexArray (); VertexArray (int pref); ~VertexArray (); void setPref (int pref); void glBegin (int type); void glVertex3f (float x, float y, float z); void glVertex3fv (float *f); void glNormal3f (float x, float y, float z); void glColor4ub (int r, int g, int b, int a); void glColor3ub (int r, int g, int b); void glColor4f (float r, float g, float b, float a); void glColor3f (float r, float g, float b); void glColor4fv (float *f); void glColor3fv (float *f); void glTexCoord2f (float x, float y); void glTexCoord2fv (float *f); void glTexCoord2d (float x, float y); void reallocData (); void glEnd (); }; #endif gl-117-1.3.2/textures/0000755000175000017500000000000010145416156013557 5ustar cedriccedricgl-117-1.3.2/textures/arrow.tga0000644000175000017500000004005410145416156015411 0ustar cedriccedric@@ TRUEVISION-XFILE.gl-117-1.3.2/textures/aster1_n.tga0000644000175000017500000003005410145416156015772 0ustar cedriccedric@@ZZZYYYfff~~~~~~yyyhhhbbbbbb]]]YYYWWWSSSPPPLLLGGGGGGEEEJJJRRRYYY```aaaaaaccckkkzzz|||nnn\\\PPPKKKMMMYYYhhhvvv~~~~~~zzznnneeeVVVQQQYYYYYYaaappp|||uuuppplllbbbZZZWWWUUUSSSPPPQQQMMMIIIGGGJJJTTT^^^```[[[\\\^^^eeeqqq}}}xxxnnnaaaWWWIIIEEETTTffftttxxxvvvwwwnnnaaaSSSMMMJJJRRRfffjjjvvv}}}{{{zzzttthhhbbbbbbaaaccc```XXXTTTTTTRRRTTT^^^iiijjjfff```^^^```iiiyyy|||uuunnnlll```PPPLLLTTTbbbqqqssstttssshhhWWWKKKOOOPPP[[[lllooovvvyyy~~~}}}|||zzz}}}}}}vvvxxxvvvsssuuuvvvmmm```\\\]]][[[bbblllqqqtttssskkkfff]]]aaaooo|||xxxuuutttnnnaaaXXXXXXXXXZZZfffssswwwttthhhUUURRR\\\```gggqqqtttwwwrrruuutttjjjjjjnnnppp{{{}}}yyy|||yyypppjjjiiimmmsssyyyyyyyyyyyyqqqggg```aaaiiiwww}}}zzz||||||~~~|||zzz|||xxxsssssswwwqqqccc```bbb]]]\\\ccclllqqqnnnfffbbbccceeellltttwww}}}zzzqqqmmmcccWWWSSSZZZgggpppsssxxxzzzwww|||zzzsssjjjccccccfffmmmyyytttlllhhheeeeeekkkrrrpppooouuuvvvnnniiifffhhhooojjjccc```aaadddnnnsssppprrrvvv~~~zzzpppcccWWWNNNFFFPPP]]]fffiiiuuutttjjjccccccfffgggoooyyy~~~yyyiii]]]VVVVVVZZZbbbfffjjjsss}}}}}}yyyuuuuuutttmmm```XXXZZZeeeuuu|||xxxiiiZZZTTTNNNGGGOOOXXX^^^eeeppp|||pppbbb```eeeggggggiiiqqquuuooo```TTTLLLRRRXXXXXX]]]iiiyyy{{{rrrkkkaaaYYY^^^iiiuuuqqqbbbXXXWWWPPPLLLPPPSSSZZZfffttt~~~vvvlllaaaaaahhhlllgggfffnnnlllbbbXXXOOOKKKPPPTTTUUUZZZlll{{{}}}pppdddXXXTTT```jjjqqq~~~rrreeeZZZ[[[WWWQQQRRRUUU]]]lllxxxyyy~~~~~~sssgggaaacccggghhhgggffffff```WWWTTTNNNKKKPPPVVVYYY]]]ppp~~~ssscccVVVLLLJJJXXXfffqqq}}}yyyqqqhhhaaa\\\VVVUUURRRTTT[[[oooxxxxxx~~~~~~rrrjjjgggbbbaaaeeefffgggfff]]]WWWPPPLLLNNNNNNUUUYYYXXXbbbsss|||zzzuuunnnfff```TTTJJJIIITTTaaammmwwwyyy}}}zzzqqqkkkjjjiii```VVVSSSPPPQQQ[[[ooo|||{{{zzzpppggggggeeeiiigggbbbeeecccccc^^^PPPGGGGGGLLLSSSYYY]]]\\\YYY^^^jjjxxxyyyoooeee```aaaZZZRRRUUUYYY```iiillldddiiixxxqqqjjjhhhiiihhh```XXXXXXZZZ^^^jjj{{{~~~|||tttiii`````````bbbggggggbbb]]]ZZZTTTIIIEEEKKKTTTYYY\\\```bbbbbbdddlllvvvzzz}}}uuulllcccZZZ\\\[[[YYYZZZYYYXXXbbbbbbUUUYYYlllbbb\\\]]]```aaa^^^```cccgggppp}}}yyypppjjjfff```\\\```fffhhhaaaYYYRRRMMMIIIJJJPPPWWWXXXWWWZZZfffqqqsssuuussssssyyyxxxpppeeeYYYSSSOOORRRQQQOOORRR^^^```UUURRR___ZZZRRROOOUUUZZZ```gggooozzzuuupppxxxvvvkkkhhhiiibbbZZZ]]]eeeddd]]]VVVTTTIIIBBBFFFNNNSSSPPPUUUaaannnwwwyyyvvvsssooopppzzz|||nnnaaaTTTOOONNNJJJHHHNNNXXXZZZQQQOOOZZZXXXOOOOOOSSSXXX^^^lll|||ttteee^^^eeegggfffgggdddaaaZZZ[[[^^^[[[YYYWWWUUUJJJ@@@@@@EEEGGGLLLYYYgggsssxxxwwwssspppkkkooozzz{{{uuulllfff```TTTJJJLLLPPPRRRPPPKKKPPP^^^]]]TTTTTTVVVZZZaaasss|||lllZZZRRRXXXZZZXXXYYYYYY]]]aaa]]]WWWUUUYYYWWWRRRLLLAAA>>>EEEHHHIIIXXXfffrrruuuuuuqqqjjjjjjqqqwwwyyyzzzwwwoooccc\\\RRRTTTXXXTTTTTTUUUYYYaaa```ZZZXXX]]]gggmmmvvv|||zzztttjjj\\\OOOJJJLLLJJJKKKLLLTTT```aaa\\\ZZZ```ZZZOOOKKKKKKKKKOOOOOOLLLOOOZZZhhhppptttooojjjkkkoootttyyy|||zzzlll``````\\\ZZZ\\\ZZZZZZ^^^```bbbiiieeeiiijjjpppvvvvvvyyy~~~|||{{{~~~xxxwwwuuukkkYYYIIIBBB@@@AAADDDCCCKKKXXX^^^dddfffeee```TTTOOOVVVTTTLLLNNNNNNLLLRRR\\\llltttqqqmmmnnnnnnssswwwwwwsssiiieeegggccc```aaaaaa]]]fffgggiiiuuuxxx|||zzzyyy||||||yyyzzzyyysssvvvzzzyyysssaaaOOOEEEEEEEEEEEEIIIGGGGGGOOOXXXeeennngggeeeaaa^^^```UUUEEEDDDJJJLLLNNNUUUcccppprrrpppmmmnnnvvvwwwnnngggjjjnnnooohhhccceeefffeeekkkpppsss~~~{{{||||||xxxuuupppjjjgggoootttsssqqqfffUUULLLJJJJJJIIIJJJNNNPPPNNNNNNXXXjjjtttsssuuuttttttppp```LLLDDDFFFGGGIIILLLWWWccciiippplllnnn|||zzzlllgggiiijjjiiieeefffjjjpppppppppuuuzzzuuutttxxxwwwssspppgggbbb]]][[[^^^ccceeebbbXXXNNNKKKIIIJJJMMMLLLRRRXXXXXX\\\bbbqqq|||lll]]]TTTEEE@@@FFFLLLSSS[[[```gggnnnuuuxxxtttnnniiibbb[[[ZZZ[[[gggrrr{{{{{{zzz{{{~~~sssqqqooogggeeeeeeaaa\\\XXXTTTNNNNNNSSSUUUIIIGGGJJJNNNTTT[[[\\\^^^dddccceeennnzzzxxxjjjZZZKKKEEEGGGPPPUUUZZZ^^^eeemmmrrrnnniiijjjiii]]]SSSOOOUUUhhhxxx}}}}}}vvvtttooocccYYYVVVWWW\\\XXXTTTNNNEEEHHHJJJHHHCCCEEELLLWWW]]]gggssstttrrrlllgggqqq}}}mmm^^^TTTQQQOOOTTTXXX\\\```eeejjjiiiffffffiii```TTTPPPSSSYYYiiiyyyxxxyyyxxxnnnbbbWWWPPPPPPYYY\\\TTTMMMHHHJJJLLLHHHHHHLLLVVV^^^bbbnnn}}}}}}tttqqqsss{{{|||pppiiibbbaaaXXXXXXUUUUUUWWW```hhhjjjccc^^^```XXXPPPPPPYYYbbblllxxx~~~}}}yyyrrrlllccc\\\[[[``````WWWOOOOOOMMMLLLLLLPPPYYY^^^dddeeemmmxxxxxxtttvvv~~~{{{uuuvvvuuusssooofffYYYOOOLLLRRR[[[eeehhhcccZZZTTTWWWYYYWWWZZZeeeooo}}}~~~{{{mmmdddbbbfffccc\\\\\\```^^^WWWUUUYYYYYY\\\bbbeeellluuuxxxxxx}}}{{{~~~xxxnnnlllyyy~~~uuunnn]]]SSSOOOQQQUUU```cccaaa^^^YYYYYYYYYYYYaaadddkkk{{{}}}}}}ooo```YYYeeennnjjjjjjnnnsssooofff^^^XXX^^^dddeeejjjttt||||||}}}~~~zzzqqqcccfffwwwvvvjjjbbb]]]XXXTTTSSS\\\bbbaaaeeeiiiaaaWWWZZZeeeeeeaaafffsssxxx|||}}}|||}}}pppZZZWWWggguuuxxxxxx|||vvvlllfffeeejjjooorrr|||~~~{{{yyyxxx|||uuuppphhh^^^cccqqquuummmcccZZZVVVWWW[[[```bbbgggiiibbb\\\ZZZ```aaaVVVWWWeeepppwwwyyyyyylllUUUXXXhhhuuu{{{sssssszzzxxxpppwwwxxxnnnmmmrrrnnnfff^^^aaaeeemmmzzztttgggZZZTTTYYY```ccc^^^```bbb```^^^\\\XXXRRRPPPXXX```mmmssssss{{{tttcccWWWXXXgggxxxuuulllooolll^^^]]]gggnnnggg```ccciiiooozzzyyyllleee^^^YYYaaaddd[[[^^^aaa^^^aaa```NNNFFFRRR]]]eeepppqqqqqq|||~~~wwwjjj```XXXZZZjjj|||yyyqqqlllbbbTTTUUU```jjjkkkfffeeelllwwwyyysssqqqiiicccaaa]]]]]]bbbddddddgggZZZIIIGGGPPP```nnnvvvvvvvvvzzzpppjjjcccYYYUUU^^^ooo{{{{{{tttlll]]]RRRRRRXXX^^^eeellljjjqqq}}}~~~|||~~~|||yyysssqqqoooeee]]]]]]``````aaa]]]QQQKKKLLLRRRbbbnnnqqqsss|||uuukkkeee^^^YYYYYYcccqqqzzzvvvlllddd\\\XXXQQQLLLNNNWWWfffnnnyyy~~~|||xxxzzzyyyuuunnnkkkcccZZZZZZYYYWWWPPPLLLMMMRRR^^^eeedddiiivvv}}}zzzqqqhhh]]]ZZZ\\\cccnnnxxxuuuiiibbbaaa^^^XXXOOOLLLUUUcccrrr|||}}}wwwrrrttt}}}vvviiihhhbbb^^^YYYWWWTTTPPPNNNRRRZZZeeeeee]]]cccuuu}}}zzz{{{yyylll```VVVWWW[[[eeennnssswww~~~zzzxxxxxxuuuooogggccc```\\\XXXVVV\\\dddpppxxxvvvmmmfffgggtttyyyjjjbbb]]]\\\\\\]]]]]]YYYTTTYYY```bbbcccffflllpppqqqwwwtttsssvvvvvvmmm```TTTRRRYYYaaahhhiiikkkvvv|||zzz}}}yyyyyy~~~}}}uuuoooqqqqqqnnniiieeeaaa^^^WWWVVVYYY\\\fffmmmpppmmmccc]]]aaaooo}}}qqqgggdddbbbeeehhhgggbbbaaabbbccceeedddiiippplllnnnrrriiiccceeelllmmmcccUUUQQQZZZfffjjjgggfffmmmsssqqquuupppoooxxxzzzqqqlllsssooofff^^^\\\WWWVVVPPPKKKPPPSSS]]]gggfff[[[XXXZZZaaalll{{{zzzsssrrrsssuuutttsssssspppmmmkkklllmmmiiiffflllnnnlll___\\\aaaiiijjj```YYYXXXXXX```cccbbbddddddffffffeeecccjjjtttxxxtttooooooiiiaaaYYYXXXPPPJJJKKKIIIKKKRRRUUUXXX[[[TTTNNNPPPVVVcccooo}}}~~~yyy{{{|||{{{{{{}}}zzzxxxxxxvvvtttjjjdddjjjhhhbbb\\\ZZZcccjjjcccZZZWWWZZZXXXYYY]]]^^^^^^aaa^^^WWWRRRWWWfffsssuuusssqqqjjjccc```ZZZVVVLLLBBB@@@EEENNNWWWXXXPPPQQQSSSRRRLLLLLL\\\dddooo|||~~~xxxyyy{{{||||||~~~|||lllhhhhhhaaa\\\]]][[[aaacccbbb]]]YYY]]]^^^ZZZ\\\]]]XXX]]]UUUJJJNNNZZZcccgggmmmtttpppddd``````ZZZSSSKKK@@@<<>>EEEHHHIIIXXXfffrrruuuuuuqqqjjjjjjqqqwwwyyyzzzwwwoooccc\\\RRRTTTXXXTTTTTTUUUYYYaaa```ZZZXXX]]]gggmmmvvv|||zzztttjjj\\\OOOJJJLLLJJJKKKLLLTTT```aaa\\\ZZZ```ZZZOOOKKKKKKKKKOOOOOOLLLOOOZZZhhhppptttooojjjkkkoootttyyy|||zzzlll``````\\\ZZZ\\\ZZZZZZ^^^```bbbiiieeeiiijjjpppvvvvvvyyy~~~|||{{{~~~xxxwwwuuukkkYYYIIIBBB@@@AAADDDCCCKKKXXX^^^dddfffeee```TTTOOOVVVTTTLLLNNNNNNLLLRRR\\\llltttqqqmmmnnnnnnssswwwwwwsssiiieeegggccc```aaaaaa]]]fffgggiiiuuuxxx|||zzzyyy||||||yyyzzzyyysssvvvzzzyyysssaaaOOOEEEEEEEEEEEEIIIGGGGGGOOOXXXeeennngggeeeaaa^^^```UUUEEEDDDJJJLLLNNNUUUcccppprrrpppmmmnnnvvvwwwnnngggjjjnnnooohhhccceeefffeeekkkpppsss~~~{{{||||||xxxuuupppjjjgggoootttsssqqqfffUUULLLJJJJJJIIIJJJNNNPPPNNNNNNXXXjjjtttsssuuuttttttppp```LLLDDDFFFGGGIIILLLWWWccciiippplllnnn|||zzzlllgggiiijjjiiieeefffjjjpppppppppuuuzzzuuutttxxxwwwssspppgggbbb]]][[[^^^ccceeebbbXXXNNNKKKIIIJJJMMMLLLRRRXXXXXX\\\bbbqqq|||lll]]]TTTEEE@@@FFFLLLSSS[[[```gggnnnuuuxxxtttnnniiibbb[[[ZZZ[[[gggrrr{{{{{{zzz{{{~~~sssqqqooogggeeeeeeaaa\\\XXXTTTNNNNNNSSSUUUIIIGGGJJJNNNTTT[[[\\\^^^dddccceeennnzzzxxxjjjZZZKKKEEEGGGPPPUUUZZZ^^^eeemmmrrrnnniiijjjiii]]]SSSOOOUUUhhhxxx}}}}}}vvvtttooocccYYYVVVWWW\\\XXXTTTNNNEEEHHHJJJHHHCCCEEELLLWWW]]]gggssstttrrrlllgggqqq}}}mmm^^^TTTQQQOOOTTTXXX\\\```eeejjjiiiffffffiii```TTTPPPSSSYYYiiiyyyxxxyyyxxxnnnbbbWWWPPPPPPYYY\\\TTTMMMHHHJJJLLLHHHHHHLLLVVV^^^bbbnnn}}}}}}tttqqqsss{{{|||pppiiibbbaaaXXXXXXUUUUUUWWW```hhhjjjccc^^^```XXXPPPPPPYYYbbblllxxx~~~}}}yyyrrrlllccc\\\[[[``````WWWOOOOOOMMMLLLLLLPPPYYY^^^dddeeemmmxxxxxxtttvvv~~~{{{uuuvvvuuusssooofffYYYOOOLLLRRR[[[eeehhhcccZZZTTTWWWYYYWWWZZZeeeooo}}}~~~{{{mmmdddbbbfffccc\\\\\\```^^^WWWUUUYYYYYY\\\bbbeeellluuuxxxxxx}}}{{{~~~xxxnnnlllyyy~~~uuunnn]]]SSSOOOQQQUUU```cccaaa^^^YYYYYYYYYYYYaaadddkkk{{{}}}}}}ooo```YYYeeennnjjjjjjnnnsssooofff^^^XXX^^^dddeeejjjttt||||||}}}~~~zzzqqqcccfffwwwvvvjjjbbb]]]XXXTTTSSS\\\bbbaaaeeeiiiaaaWWWZZZeeeeeeaaafffsssxxx|||}}}|||}}}pppZZZWWWggguuuxxxxxx|||vvvlllfffeeejjjooorrr|||~~~{{{yyyxxx|||uuuppphhh^^^cccqqquuummmcccZZZVVVWWW[[[```bbbgggiiibbb\\\ZZZ```aaaVVVWWWeeepppwwwyyyyyylllUUUXXXhhhuuu{{{sssssszzzxxxpppwwwxxxnnnmmmrrrnnnfff^^^aaaeeemmmzzztttgggZZZTTTYYY```ccc^^^```bbb```^^^\\\XXXRRRPPPXXX```mmmssssss{{{tttcccWWWXXXgggxxxuuulllooolll^^^]]]gggnnnggg```ccciiiooozzzyyyllleee^^^YYYaaaddd[[[^^^aaa^^^aaa```NNNFFFRRR]]]eeepppqqqqqq|||~~~wwwjjj```XXXZZZjjj|||yyyqqqlllbbbTTTUUU```jjjkkkfffeeelllwwwyyysssqqqiiicccaaa]]]]]]bbbddddddgggZZZIIIGGGPPP```nnnvvvvvvvvvzzzpppjjjcccYYYUUU^^^ooo{{{{{{tttlll]]]RRRRRRXXX^^^eeellljjjqqq}}}~~~|||~~~|||yyysssqqqoooeee]]]]]]``````aaa]]]QQQKKKLLLRRRbbbnnnqqqsss|||uuukkkeee^^^YYYYYYcccqqqzzzvvvlllddd\\\XXXQQQLLLNNNWWWfffnnnyyy~~~|||xxxzzzyyyuuunnnkkkcccZZZZZZYYYWWWPPPLLLMMMRRR^^^eeedddiiivvv}}}zzzqqqhhh]]]ZZZ\\\cccnnnxxxuuuiiibbbaaa^^^XXXOOOLLLUUUcccrrr|||}}}wwwrrrttt}}}vvviiihhhbbb^^^YYYWWWTTTPPPNNNRRRZZZeeeeee]]]cccuuu}}}zzz{{{yyylll```VVVWWW[[[eeennnssswww~~~zzzxxxxxxuuuooogggccc```\\\XXXVVV\\\dddpppxxxvvvmmmfffgggtttyyyjjjbbb]]]\\\\\\]]]]]]YYYTTTYYY```bbbcccffflllpppqqqwwwtttsssvvvvvvmmm```TTTRRRYYYaaahhhiiikkkvvv|||zzz}}}yyyyyy~~~}}}uuuoooqqqqqqnnniiieeeaaa^^^WWWVVVYYY\\\fffmmmpppmmmccc]]]aaaooo}}}qqqgggdddbbbeeehhhgggbbbaaabbbccceeedddiiippplllnnnrrriiiccceeelllmmmcccUUUQQQZZZfffjjjgggfffmmmsssqqquuupppoooxxxzzzqqqlllsssooofff^^^\\\WWWVVVPPPKKKPPPSSS]]]gggfff[[[XXXZZZaaalll{{{zzzsssrrrsssuuutttsssssspppmmmkkklllmmmiiiffflllnnnlll___\\\aaaiiijjj```YYYXXXXXX```cccbbbddddddffffffeeecccjjjtttxxxtttooooooiiiaaaYYYXXXPPPJJJKKKIIIKKKRRRUUUXXX[[[TTTNNNPPPVVVcccooo}}}~~~yyy{{{|||{{{{{{}}}zzzxxxxxxvvvtttjjjdddjjjhhhbbb\\\ZZZcccjjjcccZZZWWWZZZXXXYYY]]]^^^^^^aaa^^^WWWRRRWWWfffsssuuusssqqqjjjccc```ZZZVVVLLLBBB@@@EEENNNWWWXXXPPPQQQSSSRRRLLLLLL\\\dddooo|||~~~xxxyyy{{{||||||~~~|||lllhhhhhhaaa\\\]]][[[aaacccbbb]]]YYY]]]^^^ZZZ\\\]]]XXX]]]UUUJJJNNNZZZcccgggmmmtttpppddd``````ZZZSSSKKK@@@<<4XX{GXjJv,#XX{GXjGvXX{GXjGvXXjGXjGvXXjGXjGv XXjUSjGy.YjXXjI5jG{TXXjG(^G{\XjG!G{jXZjGt|Y5{jXGjGVaO4{jX~9j"&bjT+,j t)?|++ZLal (TRUEVISION-XFILE.gl-117-1.3.2/textures/cactusu1.tga0000644000175000017500000003005410145416156016006 0ustar cedriccedric@@TRUEVISION-XFILE.gl-117-1.3.2/textures/camoufl.tga0000644000175000017500000003005410145416156015704 0ustar cedriccedric@@9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT8UV5U[4U]4U]0Ud$Vy W W W W W W$Vy1Ub8UV9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT8UV2U`(Vr%Vw%Vw$Vy!V W W W W W W!V'Vt2U`8UV9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9WV;_];b`;b`;b`;b`;b`;b`;b`;b`;b`;_]9WV9UT9UT8UV2U`'Vt!V W W W W W W W W W W W!V(Ur5U[9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9WV;_];b`;_]9WV9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9UT9WV;_],k"Y W W W W W W W W W"Y&a,k9?~|omBEEEEDCBBBBBCB?==9UT9UT:_]@~zDEEEEEDA}EEEB;dbolB,k"Y W"Y,k>DC4U]%Vx W W W(d=EDA}>qn@~zBB@~zEEDA}?sqBC?===;|5_g1Ub(Vr%Vw%Vw%Vw(Vr2Xc;gfA}DE=(d W W W(d=EE4U]%Vx W W W(d=EEDCDEED@~z:_]8UV2U`(Vr$Vy!V W W W W W W&a8CEEBEEEB;b`8WX4_j)`~"Y W W W W W W W W W W W(d=EEE=(d W W W'a;|@~zEEEEEED@~z:_]4U]%Vx W W W W W W"Y%^(Xt4bmAEEEB:bb2U`'Vt!V W W W W W W W W W W W W'a;DEE=(d W W W%Yz6_g;_]9WV4U]%Vx W W W W(d=EEEEDCA}>qnqnA}BA9,k(c(c,k8=?@;dbqnA}DEEC<~1_n$Vy W W W!V'Vt1Ub4U]5_g;|===;|6_e8UV;b`BEE=(d W W W%Vx4U]9UT9UT9UT5U[(Ur!V W W W!V(Ur5U[9UT9UT9UT;b`BEEEEEEEEEDA}>qnA}DEEC:,h%Y|!V W W W$Vy1Ub8UV9UT;b`BEEEB;b`9UT;b`BEE=(d W W W%Vx4U]9UT9UT9UT8UV1Ub$Vy W W W W%Vx4U]9UT9UT9UT:_]@~zDEEEEEEDC@~z,k"Y W"Y)]y5W]9UT9UT9UT9UT5U[(Ur!V W W!V(Ur5U[9UT9UT9UT9WV,k"Y W W W W!V'Vt2U`8WX;_]tqBC<|*`{!V W W"Y)`~4bm:bbtq:bb2Xc(Vr&Yz'a,k9ABCDEEEC:,k'a&Yz%Vw%Vw%Vw&Yz'a(c,k:CEEEEEE9UT:_]@~zDEEEB;b`9UT9UT9UT9WV;_],k"Y W W W W W W W W W W%Yz6_g=?CEB;b`9WV;_];b`?~|,k"Y W W W W"Y+h:CEEEDC@~zC?vs=ljEEEEEE>,k"Y W W"Y&a,k8>?~|tqCEB9& 5/ A.= &'$!` =<{R)5mln$IJ<l1 iv]SH  z""eL$K6 :Y  *'8 #w"fuw#.* +&aka AT9#4w$u3bqddw21: {%2%FZ [U,B 9  bAs 2/s%; /T`l3,I$t-'! 04H8$ B+ B   w  BIz6  x-;3 *; W9C+`lB#l1W;+ /2 "%,JA]Be eBPW2e%=*6sz^38Y}j,IP$[@B@AH ,A { ^B?sl,O$ xD UW^3D>%Bw3 [fzz; 9"4+H^e3szj.TX ^3B  ),: c,;;1;ss]$a>IPZ<BPec$$<uz%^3*^I %:* wM .EX1A%,P, z8pJP W B%$, 5M9s3M=#,U ' lP;9V% jlH3 , %rX3 !:)0A? N)%&*#XC"  'Rx2Oa< IBkA!WG*) HZG7H U"10k+M,Hq1MVLMB/fYkNH If|( E 5z6S[nj`x  @@  v:yU5S9 = &OSpw7~9 vP 9v^EM8 > v68:?,! '2@> Xm"i7) F29T &B@  6CYUR W) i8E/@# S2  < 5  *    @4=   '#      TRUEVISION-XFILE.gl-117-1.3.2/textures/clouds1.tga0000644000175000017500000100005410145416156015626 0ustar cedriccedric {{{vvvwww~~~zzzuuukkkhhhSSSBBB000(((    (((000777NNN^^^ddd[[[555###  )))@@@\\\bbb[[[@@@ 000VVViiioooggg^^^DDD***$$$BBB[[[wwwsssaaa[[[VVV???999VVVTTTQQQSSS<<<'''!!!333???HHHNNNHHH..."""AAAUUUqqq}}}|||{{{wwwxxxxxx|||xxxoooqqqaaaJJJ@@@>>>333""" )))///+++;;;TTTZZZPPP:::,,, 222;;;JJJVVVRRR;;;444SSSjjjxxxuuuuuu}}}gggYYYPPP444:::[[[aaasssqqqWWWPPPRRRBBB !!!444OOOOOOCCCDDDDDD333"""222;;;888222444777(((  """%%%...IIIjjjrrrkkkppp~~~}}}vvvtttmmmooouuuyyyooo```ZZZAAA&&& ,,,444,,,444CCCPPPRRRHHH999&&& &&&333<<<RRRSSS,,,...AAATTTkkkkkk]]]aaaoootttwwwvvvqqqcccHHH111'''SSSpppwwwvvvvvvbbbXXXSSSEEE%%%;;;EEE===333333:::///(((;;;DDD@@@888+++%%%((())) """///------''',,,HHH```{{{bbb\\\^^^fffzzz|||aaa___hhhrrrsssnnngggRRR@@@***!!!///555333666FFFVVVSSS<<<+++((( &&&333JJJCCC)))""" &&&444333FFFWWW]]]hhhdddZZZ[[[WWWOOO___mmmlllnnnsssXXXMMM222 ###OOOiiiwwwoooeeeWWW@@@!!!&&&111555(((!!!((('''''''''$$$777TTTZZZNNN<<<))))))...''' +++AAANNNMMMLLLBBB>>>===999???KKK```{{{lllNNNJJJWWW___jjjvvvxxxaaaRRR\\\dddYYYTTTYYYHHH/// '''666GGGOOOHHHMMMUUURRREEE444((((((222!!!###888888"""...IIINNNMMM```iiicccccc[[[OOOMMMKKK@@@HHHYYYiiijjjkkkssshhhDDD///%%%999VVVmmmzzzvvv~~~tttSSS... ###555;;;CCCUUU[[[UUUCCC,,,---999//////)))&&&444KKK```ssswwwlllZZZYYYRRRIIIQQQYYYfffkkkOOODDDKKK[[[ooollleeekkkmmm]]]KKKDDDDDD;;;:::CCC666,,,222<<<QQQggghhhiii\\\VVVQQQBBB/// 111???@@@<<<666JJJUUUSSS]]]lllrrriiiaaaRRRLLLCCC;;;777>>>RRR\\\___bbbgggSSS)))444GGGeee|||rrrqqq===  ,,,666>>>@@@>>>FFFBBB:::<<<IIINNNRRRYYY]]]hhhwwwjjjnnnpppjjjmmmnnnzzzwwwtttbbbIIIEEE???CCCSSSvvvlllbbb```VVVFFF:::222))))))---&&& ---======HHHbbbxxx~~~qqqlllZZZ>>>'''  %%%999IIIMMMJJJJJJTTT[[[]]]fffvvv~~~kkk[[[aaa___NNN777:::EEEOOOQQQJJJNNNNNN:::!!!+++===[[[vvvzzz~~~\\\)))&&&(((---@@@JJJPPPZZZeeepppyyy|||vvvttt~~~eeeXXXHHH((("""222===EEE[[[zzz}}}lll^^^[[[;;;!!!&&&###$$$ 666<<<;;;"""@@@RRROOOcccwww]]]HHH@@@222000EEELLLPPPPPPKKKVVVddd___fff{{{zzzaaa___nnnkkkUUUIIIFFFDDDCCCGGG555)))000''' (((AAAVVVkkkvvvTTT,,, ,,,:::EEENNN^^^pppyyy~~~zzzkkk???777 555===QQQcccjjj\\\BBB:::&&&   ,,,CCCIIILLL333 333HHHZZZhhhvvvlllaaa]]]LLL222 %%%BBBJJJPPPXXX\\\fff```PPPYYYiiifffkkknnnlllmmmbbbVVVFFF333***!!! +++AAA]]]xxx```??? ''':::FFFTTTjjjppp|||{{{kkkiiimmm```HHH'''***///222>>>===---  %%%### %%%)))///999DDDKKKAAA'''888NNNOOO]]]nnnyyyzzzssskkkYYYKKK222  000BBBYYYffflllmmm]]]NNNRRRXXX___ttt{{{ooofffPPP...  888LLLnnnmmmOOO---   222PPP\\\bbbhhhpppzzzeee___[[[RRR@@@...  %%%'''!!!###000777444222<<<NNNXXXRRRCCC,,,GGGfffgggfffnnnuuuzzz|||vvvdddTTTEEE888  999KKK\\\^^^]]]^^^TTTRRRRRR```|||ooobbb===+++@@@XXXxxxhhhKKK999555*** 444TTTccchhhmmmsssiiiLLLAAA???<<<555''' %%%---  666BBB777;;;___yyyzzzeeeJJJ111JJJmmmtttqqqkkkcccfffeeeWWWZZZmmm}}}iiiYYYPPP:::$$$"""///777(((,,,///666<<<KKK\\\gggbbbbbbxxxrrrXXX--- 888HHH```xxxlllRRR:::'''***OOOmmmyyyrrrvvvkkkHHH000######&&&EEEXXXNNNZZZ~~~sssUUU666 666TTTnnnyyyqqqfffYYYNNNIIICCCMMMYYYcccooozzzoooaaaXXX@@@,,,333>>>CCC:::(((444JJJ___uuuiiiOOO---999MMMhhhyyyiiibbbNNN<<<---(((GGG```}}}xxxmmmgggaaawwwaaa@@@&&& """'''WWWuuuooouuu```HHH555   555PPPkkkssscccLLL;;;AAAEEEEEEDDDNNN___oootttoookkkooofffYYYGGG333>>>CCC===444###666XXXkkkxxxuuu^^^JJJ... ,,,IIImmmlllOOO??????@@@111)))@@@SSSkkk~~~nnniiiiiicccnnnrrrlllgggQQQ)))  %%%!!!222```uuu[[[<<<'''"""###%%%000111 %%%777FFF]]]sssmmmJJJ111+++===EEEDDD<<<;;;FFFRRRPPPUUUZZZcccgggYYYTTTDDD>>>:::(((  777ZZZrrraaaCCC(((   BBBqqqjjjGGG((( !!!555NNNbbbnnn~~~kkkdddZZZcccjjjmmmsssmmmbbbdddQQQ777(((:::IIIqqqeeeEEE444///;;;UUUdddUUUEEE@@@???HHHcccqqq|||bbb222(((+++777???===555///000999;;;CCCLLLXXXUUUZZZ___TTTBBB***"""999VVVqqqhhhIII***    BBBnnnjjjGGG  444KKK___lll|||qqq```MMMNNN```jjjxxxyyydddUUUKKK===(((,,,MMMccc^^^LLLGGGVVVtttlllUUUNNNKKKVVVsssvvv[[[222***...,,,&&&!!!"""(((888KKKPPPZZZ___TTTNNN000 222---  )))QQQtttpppKKK***   ***???```sssuuuzzzyyypppUUU::: :::MMMRRRfff}}}oooZZZIIIDDDRRRlllkkk[[[NNN???<<<666+++EEEUUUfff|||ggg```fffvvv[[[QQQWWWkkk|||SSS*** !!! AAANNNSSSZZZSSSQQQ@@@,,, 888===  UUUwwwGGG((("""  777>>>QQQlllpppjjjeeeeeeeeezzzlllQQQ???)))$$$+++$$$ 777LLLVVVeeennnTTTFFFKKKLLLIIIMMMEEE;;;222$$$333PPP```nnnyyyrrrwwwlllXXXJJJOOOhhhuuuFFF ,,,:::@@@MMMSSSOOOEEE222333@@@&&&***###TTTzzzuuudddGGG222---(((  ;;;<<<JJJhhhgggcccVVVAAA@@@QQQjjj|||mmmSSSSSSBBB)))'''999IIIDDD555!!!AAASSS___mmmoooOOOCCCHHH@@@444111+++###""" +++QQQrrr}}}hhhWWWOOOTTTddd}}}aaa111  666GGG===---  &&&+++---!!! $$$===aaatttbbbSSSMMMLLL===))) ///AAAPPPUUUOOOMMMCCC...)))555TTTjjjxxxxxx\\\@@@===QQQOOO;;;;;;DDDPPPYYYKKK'''   666RRRbbbkkkttt|||bbbLLL999...!!!  ---HHHkkk}}}{{{uuuuuutttzzznnnooonnneeecccaaa```vvvuuuOOO!!!+++000*** +++000$$$444XXXxxxqqqbbbWWWVVVQQQAAA333(((DDDRRREEE???DDD888(((%%%***>>>MMMMMMIII>>>555888CCCSSSRRROOOTTTaaadddXXX@@@***&&&###!!!!!!%%%###555FFFbbbqqqrrr{{{{{{~~~___FFF,,,   &&&///999QQQ___iiitttkkkeeehhhccceeeuuuwwwnnn]]][[[fffjjjrrrpppdddkkknnnaaaAAA""" 222???AAAEEEBBB222!!!111***### 111<<<...!!!(((>>>XXXiii~~~sssrrriiiWWWDDD999000:::HHH===---///---)))+++%%%###***...555333AAA^^^dddllliii]]]YYYYYYPPP777111444222++++++---***   333QQQcccooo{{{qqqYYY:::,,,)))%%% (((000888CCCLLLQQQWWWXXX]]]ZZZRRRZZZlllttt{{{iiiRRRIII]]]mmmwwwzzznnnZZZUUUFFF,,,===^^^fff```[[[RRR<<< (((***)))$$$FFFPPP999  )));;;YYYvvvwwwooo{{{uuu^^^AAA===222 !!!///000,,,&&&$$$,,,''' (((...888\\\nnnoooiiiaaa\\\fffbbbMMMLLLKKKDDD???555???555   (((AAAVVVZZZaaayyyvvvmmmVVV;;;333222))) $$$333888:::???EEEQQQVVVKKKKKKXXXhhhxxxzzzaaaPPPOOO^^^sss{{{kkkLLL+++!!!JJJtttrrrWWW333 +++IIISSS888 000>>>RRRrrruuu}}}yyyrrrjjjVVVFFF***$$$&&&$$$%%%  ,,,222222NNN```aaacccbbb___ZZZeeepppooohhhVVVSSSMMMJJJEEE888&&&"""  %%%&&&(((,,,;;;999333JJJ___bbbfffkkkkkkXXX:::---((( !!!333444111;;;DDDMMMSSSGGGGGGPPPbbbtttfffZZZ]]]cccwwwmmmFFF!!! 222SSSyyyiii<<<  777QQQWWWOOO:::***:::<<<HHHrrr~~~}}}|||yyysssnnn\\\???   %%%'''444???MMMQQQPPPXXXWWW]]]yyytttccccccccc___YYYKKK:::444***  $$$###,,,,,,&&&"""%%%FFFWWW___ccchhhZZZ111%%%!!!###$$$111EEE<<<>>>FFFGGGOOOPPPNNNMMMXXXjjjrrrjjj{{{qqqXXX;;;222RRRoooXXX%%%!!!!!!"""666UUUiiiiii\\\BBB///!!! 777999///BBB\\\nnnxxx|||qqqTTT--- """///<<<;;;HHHOOOXXXnnn~~~xxxgggcccpppzzzxxxmmmYYYDDD555*** )))222  666LLLWWW]]]```KKK+++???===<<<CCCDDD===CCCLLLHHHLLLVVVYYY^^^kkkaaaXXX\\\gggzzz}}}{{{{{{dddAAA  ...IIIaaaWWW###&&&(((///555FFFaaaoooppppppdddKKK555///000999FFFPPPhhhvvvuuuqqqaaaNNN 333>>>DDD\\\uuuyyy}}}yyypppzzzuuu]]]TTTAAA %%%))) '''CCCHHH:::&&&  999PPPZZZbbbfffgggjjjkkk___QQQRRR]]]ppp~~~~~~qqqkkkooossszzzqqqrrrWWW000&&&$$$===\\\FFF ###...>>>BBBKKKccctttmmmMMM555444JJJTTT___ooonnnzzz~~~mmmXXXKKKFFF***   $$$888NNNfff}}}iiiJJJ&&&  """  """%%% 444JJJZZZkkkeeebbbkkk|||~~~dddGGG)))(((///---$$$''',,,@@@XXXyyyrrrOOO))) !!!&&& 333GGGKKKMMM```{{{jjjOOOSSSeeejjjnnnssszzzxxx\\\III>>>666...### ---UUUlllzzzaaaGGG---  888III___xxxuuuxxxpppEEE ###""" '''111;;;GGG^^^lllwww|||lll]]]TTT@@@111 ...444@@@MMMSSS[[[dddiiiwwwwwwjjjuuu}}}hhhZZZIII555***(((,,, EEElllyyysss]]]888###"""'''!!!%%% """:::SSSjjjuuuHHH###### ---888MMMbbbpppvvvaaaOOOQQQQQQLLLCCC""" '''===EEESSSNNNPPPdddeee\\\mmm~~~xxxjjj___MMMDDDBBB777000  222\\\yyy~~~jjjAAA***///;;;>>>222+++***  777JJJccc{{{{{{zzzuuuFFF...))) 000KKK___hhhrrrrrrSSSIIIOOONNNRRRGGG***+++EEEXXXXXXKKKPPP]]][[[MMM```~~~vvvpppRRRKKKXXX^^^OOO???..."""  +++KKKiiisssSSS555444???LLLLLLAAA222((( %%%111... ---IIIUUUiiiyyylll===%%%  $$$HHHcccmmmwwwpppVVVQQQUUUUUUVVVEEE777&&& 222MMMcccfffWWWOOOMMMKKKLLLXXXvvv|||lllTTT[[[ooojjjVVVDDD777+++!!!$$$ ###(((  ---NNNgggqqqYYYJJJEEEIIISSSSSSEEE:::!!!%%%###555BBB::: BBBPPPTTTfff~~~yyyRRR((( &&&"""AAAcccssszzzxxx\\\PPP]]]]]]PPPDDD===000"""...@@@TTTeeerrrgggRRRHHHCCCDDDSSSooo{{{|||wwwvvvsssyyywww[[[BBB555333+++555222,,,%%% ///QQQlllzzzvvvbbbOOOKKKXXXRRRJJJ888444888333---000UUUYYYDDD222+++!!! ''':::HHHVVVfff|||gggiiigggSSS<<<...666444***222RRReeelllyyy~~~dddXXXeee]]]EEEAAACCC;;;)))...JJJ___llluuummmWWWSSSMMMHHHPPP___kkkjjjkkk}}}yyyvvvaaaBBB666999444444+++  :::UUUooo~~~sss]]]YYYTTTLLL;;;,,,666@@@BBBKKKOOOOOOuuuiiiVVVMMMDDD333 ###666ZZZvvv}}}zzzqqqtttcccQQQHHH<<<+++!!!???LLLFFF@@@GGGeeerrrggggggsssssshhheeelll^^^AAA<<<KKKGGG&&&---TTTjjjnnnxxxkkk]]]WWWKKKFFFHHHOOO\\\SSSQQQ___rrrsssdddTTTIIIJJJ???777***   !!!BBBZZZiiisssqqqmmm___UUU@@@///'''###AAAIIIQQQeeetttvvvsssjjjcccUUUHHH*** +++<<<YYY{{{uuu~~~vvvfff[[[PPPDDD333!!! !!!777OOOaaagggXXXUUUkkkuuulllffffffccc]]]bbbhhhhhhYYYKKKOOOOOO000000OOOhhhxxx{{{lll]]]OOOBBBAAA@@@EEEOOOBBB999LLLeeevvv}}}www|||wwwuuu}}}ppppppoooddd^^^PPP@@@888(((  (((<<<RRRddddddnnnsssyyy|||tttjjjZZZFFF555%%%,,,000 ,,,>>>NNN```|||vvvUUU+++ 444LLLaaassszzzqqqiiiggg]]]HHH???555  )))DDDSSShhh|||~~~mmm]]]cccpppuuupppdddOOO@@@OOOcccrrryyyiiiRRREEEAAAAAAIIIiii}}}aaa<<<000444===CCCBBB:::333CCCQQQXXXiiiyyyvvvjjjeeedddeeennnrrrmmmooo}}}uuuZZZAAA???444  %%%333)))"""!!!$$$666HHHHHHNNNXXXQQQOOOOOO\\\sss{{{xxxjjj[[[EEE+++???JJJ...!!! """&&&555UUUnnn~~~QQQ... '''IIIkkkxxx}}}lll^^^TTTRRROOO???+++ ''';;;PPPZZZccciiixxxyyyooonnnqqqxxx___DDD333:::aaaxxx|||uuu___NNNRRRNNNUUUmmmzzzaaa888---222>>>GGGKKKHHH<<<>>>CCCGGG\\\mmmkkk[[[JJJIIINNNLLLNNNWWWbbbxxxbbbLLLPPPCCC %%%III^^^TTTAAAGGGNNN===&&&    ,,,)))(((''' ===VVVkkkxxxtttfffdddNNN...  """KKK]]]QQQ===---$$$###---LLLkkk}}}___333 :::fffwwwVVVBBB@@@EEEBBB...EEEZZZttt{{{gggYYYRRRccchhhmmmyyyrrrWWWCCC000222PPPeeennnqqquuukkkXXXKKKOOObbbyyysssZZZMMMAAADDDIIINNNOOOUUU```SSSGGG??????OOOeeeWWW===...999BBB777444AAAPPPeeeooo^^^WWWCCC   DDDlllxxxmmmjjjlll]]]KKKAAA???888,,,&&&  %%%>>>^^^{{{jjjUUUWWWNNN777"""******+++888SSSfffnnnSSS333222666... ---JJJgggppp>>> '''\\\~~~qqqkkkRRR222,,,999111 ///```yyyYYYKKKQQQWWWhhhwwwoooTTTEEE000777SSSjjjmmmuuunnnSSSDDDEEEPPPiiifffJJJ@@@EEEKKKLLLVVV^^^```lll]]]III===999@@@FFF;;;111'''***+++###***DDDUUUjjj{{{|||lll\\\FFF000!!!'''&&&!!!&&&""" CCCaaa||||||xxxfffgggsssgggGGG???>>>...!!! ///PPPuuueeeNNNKKKQQQKKK>>>,,,!!!777666888OOO^^^fffkkkYYY888111<<<999""",,,EEEZZZ|||```:::... %%%TTTqqqxxxrrrdddTTT///!!! !!!111;;;KKKvvvkkkXXXNNNTTTeeexxx}}}tttYYY666!!!  IIIaaannnnnnYYYBBB:::666FFF\\\]]]SSSCCCDDDFFFJJJVVV]]]eeekkk\\\HHH@@@@@@777(((###+++(((///OOO```xxxuuufffRRRTTTOOO777***...000+++###  &&&BBBSSS\\\gggtttfffRRRRRRFFF///   %%%;;;[[[qqqXXXSSS\\\\\\XXXVVVAAA<<<DDDMMMbbbooorrrdddNNN<<<222666999444===OOOcccvvv|||zzz```UUUMMM::: <<<SSSfffvvv{{{aaaHHH&&& 444@@@OOOdddvvvddd]]]\\\[[[eeekkkYYYDDD999%%%&&&GGGTTTSSS===000///---<<<MMMZZZUUUHHHGGGSSS]]]hhhhhhcccjjjZZZ>>>333888000===KKK___{{{tttooogggcccrrrrrrWWWIIIEEE:::333333--- $$$@@@CCCLLLbbbqqq|||pppfffZZZGGG$$$ %%%*** (((GGGpppppppppnnniiiiiihhh\\\SSSVVV]]]hhhtttwwwVVV;;;777---...777III___hhhtttyyylll___ccciiilllkkkaaa===666OOOdddzzz\\\:::### 000EEEXXXhhhwwwXXXTTT\\\fff^^^JJJ333 !!!!!!%%%!!!,,,222222HHHSSSSSS___jjjyyyyyykkkdddKKK444)))+++,,, +++CCCTTTcccxxxvvvgggbbbeeennnyyyqqq\\\HHHJJJIII888///"""666DDDWWWgggmmmmmm|||oooUUUBBB@@@CCCHHH;;;...''',,,IIIppp}}}ooo___```jjjpppjjjjjjxxxmmmIII555555222---444TTTlllzzzwwwcccLLLKKK```qqqssslllVVV@@@222'''''' $$$666NNNsss|||cccNNN000&&&,,,GGGhhh~~~{{{[[[RRRZZZXXXHHH222 )))444444<<<KKKSSSlll|||nnnWWWEEE,,,!!!%%%&&& 333HHHMMM___nnn]]]FFFKKK]]]sssnnnmmm___IIIHHH777 %%%000GGGXXXbbbpppuuuxxxlllwwwxxxiiiWWWAAA... '''AAA^^^ooo}}}uuugggnnnsssuuusssnnnrrriiiLLL666:::888---TTTjjj}}}uuueeeFFF???QQQ]]]eeejjjeee\\\BBB+++&&&###000###""":::fffgggLLL888 ))),,,***&&&000VVVzzzxxxcccUUU>>>--- (((444:::;;;@@@OOO]]]lll|||sssQQQCCC888***&&&"""000AAAIIINNNWWWKKK999BBB[[[yyylllQQQIIICCC888000 %%%%%%***000:::IIIQQQeee{{{pppKKK!!!$$$DDDQQQ___uuu{{{vvv{{{{{{iiibbbeeeggglllkkk\\\JJJEEE333&&&444PPPhhh~~~~~~aaa:::777:::BBBTTTfffppprrr\\\@@@>>>///...### '''ccc}}}YYY===&&& 555DDDCCCUUU{{{oooPPP111 999AAA888>>>TTTiiilllmmmqqqKKK:::CCC<<<***"""### ###+++### )))BBBOOOHHHEEE??????FFF[[[uuuZZZRRRVVVFFF000"""### (((666000666777AAANNNQQQddd~~~pppDDD(((999RRRfff}}}xxxxxx~~~{{{fffYYY```bbb]]]\\\gggcccQQQ>>>;;;===GGG]]]~~~uuuTTT>>>222...===HHH```{{{mmm[[[III999  WWWrrrgggbbbDDD******NNN___wwweee555  666:::GGGaaallldddnnnnnnWWWDDDEEEHHH555!!!&&&&&&...***&&&---<<<LLLHHH???999CCCOOOhhhtttnnn```HHH///&&& ###333555999;;;CCCQQQ[[[fff~~~bbb)))...@@@kkkrrrttt~~~tttrrrvvvtttfff[[[QQQNNNaaacccVVVNNNIIIIIIMMMddduuuYYYBBB222:::AAAFFF\\\tttlllKKK///###III^^^lll{{{aaaQQQFFF333 333WWWxxxkkk;;; 444LLL]]]oooqqqqqqkkk]]]UUU^^^QQQAAA+++"""000777888555---888KKKAAA111333<<<SSS}}}lllTTT===&&& ###333999;;;IIIXXX\\\fffoooaaa 444VVV|||{{{yyyppp[[[ddd{{{uuudddPPPDDDKKKZZZ]]]YYYPPPTTT___hhh~~~rrrSSSFFFPPPWWWZZZdddxxxdddGGG444---DDDGGGSSSrrraaaAAA*** '''KKKfffkkk>>>>>>]]]vvveee]]]```ppphhhZZZDDD111(((444@@@III:::'''///AAA>>>+++&&&777XXXhhhDDD''' ***888222@@@TTTfffiiibbbmmm[[[!!! !!!444GGG[[[yyy{{{ooobbbQQQXXXkkklll___PPPFFFMMMXXX]]]\\\TTT]]]kkk{{{kkkdddhhhqqqooozzz~~~^^^GGG... +++888???LLLjjjXXX--- ---???VVVvvvQQQ AAAnnn|||rrrnnnrrrfffKKKAAABBBMMMYYYLLL<<<333---666:::...(((???ffftttLLL...&&&***333LLL```hhhiiiiiiuuu|||MMM$$$666LLLWWWiiijjjgggZZZGGGKKK]]]gggWWWPPPQQQNNNYYY```SSSUUUhhhsssyyy{{{uuuZZZ555+++***>>>MMMdddtttsssRRR"""---???KKKRRRfffeee::: <<<ttt|||ooojjj[[[MMMJJJYYYhhheeeTTT>>>111...//////999AAAMMMfff^^^666 &&&EEEYYYaaannnyyyiiiFFF ---444;;;GGGQQQDDD999CCCNNNQQQWWW^^^YYY[[[WWWVVVUUU[[[llluuurrrSSS///444:::&&& (((@@@VVVgggzzzqqqHHH'''GGGQQQaaatttkkkFFF>>>xxxvvviii\\\SSSZZZbbbaaa[[[VVVGGG<<<:::666333EEEQQQUUUooo___FFF222 555HHH^^^uuu~~~xxxyyytttaaaHHH&&&***444===888;;;GGGNNNZZZgggllleeeZZZXXXaaahhhwww```666 )))LLLCCC--- $$$333DDD```tttmmmAAA<<<MMM[[[xxxrrrQQQ777AAA~~~yyyqqqcccccc\\\QQQLLLLLLLLLTTTQQQDDDEEEVVV___fffyyyzzzWWWKKKCCC--- ???RRRiiipppnnnlllhhhlllqqqbbb\\\VVVSSSTTTFFF """***444:::AAAIIIUUU^^^kkkxxxuuuhhhjjjlllppp|||kkk777 ,,,OOOPPP///---BBBTTTpppaaa???###GGGNNNaaarrrVVV555 ###HHHuuu~~~uuuiii___QQQKKKLLLKKKRRRaaabbbfffcccccckkkoooxxxwwwqqq___NNNDDD@@@ 333CCCEEEAAAPPP\\\iiissseeeUUUJJJ===444222---111%%%(((555HHHPPPTTTccciiivvvyyyvvvyyyvvv}}}~~~vvvsss}}}||||||uuuuuurrr{{{QQQ &&&:::666 --->>>ZZZyyyxxxmmmWWW:::###GGGXXXxxxiiiMMM !!!!!! ///OOOqqqrrrbbb___UUURRRYYYQQQTTTcccuuu}}}pppssszzziiiVVVNNNFFFFFF888""" !!!...;;;PPPaaammmiiibbbKKK000  777MMM[[[___hhhnnn~~~tttgggdddgggiiidddgggrrr}}}vvvlllxxxvvvpppfff]]]aaaggg333%%%%%%&&&SSS~~~oooeeefffllleeeNNN>>>///\\\uuujjjCCC000999&&& $$$???\\\~~~mmmeeeaaaeeecccPPPQQQ```www~~~bbbJJJ:::666666///)))777KKKWWWWWWXXXJJJ&&& ---@@@PPP___qqqyyyuuubbbZZZ\\\```^^^jjjkkkppprrrrrruuuooocccXXXUUUwwwyyyGGG ===iiivvvtttdddZZZ___YYYOOOEEE888NNN~~~|||WWW/// """;;;HHHAAA111$$$ &&&666OOObbbwwwxxxppptttjjjIIIIII```{{{uuujjj]]]@@@111)))  ...@@@FFFDDD777333QQQooo{{{ggg^^^hhhhhhhhhjjjaaa```aaakkkxxx|||nnneeebbb]]]gggRRR!!!  222JJJ]]]lllcccccceeeZZZDDD>>>555 ===mmmVVV333 %%%"""'''>>>UUUTTTFFF666777999BBB\\\rrrxxxZZZMMM___vvv~~~{{{mmmjjjgggPPP555%%%!!! 666iiiuuurrrrrrppptttmmmfffeeeddd]]]ZZZVVVRRR^^^\\\```uuufffdddfffjjjfff___tttddd666 &&&///DDDaaammmqqqkkkWWWJJJHHHCCC---  222aaalllIII...!!!555<<<<<<999EEEVVVWWWWWW```dddTTTYYYtttlllaaappp~~~tttxxxqqqeee^^^ddd[[[:::###XXXgggSSSNNNXXXNNNKKKGGGMMMTTTEEE555222777@@@RRRZZZcccgggNNNPPPQQQWWWSSSQQQXXXvvv```777 000WWWqqqvvvhhhXXXXXXXXXQQQ999''''''OOO```OOO===---111AAAIIIPPPUUU\\\hhhmmmmmm{{{}}}~~~qqqqqqxxxyyy~~~zzznnn```TTTWWWZZZQQQ=== ---???999111<<<:::333222999:::000!!!$$$333888KKKXXXQQQCCC===999999222666???UUUhhhnnnuuu\\\222BBB\\\fffhhhiiicccYYYQQQCCC777///&&&dddoooeee___LLLLLLSSSYYYiiinnn~~~|||rrrmmmqqqxxx{{{vvv}}}kkkPPPBBBBBBHHHCCC111 '''555888*** 666CCC@@@555''''''000***"""$$$,,,333PPP]]]```wwwZZZ,,, ---HHHYYYiiikkkeee^^^ZZZWWWDDD---JJJxxxfffYYYWWW^^^iiiyyyrrrmmmkkkvvv|||yyy}}}oooRRR===<<<999--- (((444,,,    ///333'''&&& 555@@@;;;SSSwwwWWW--- %%%EEEUUU______aaarrrpppTTT???222((( ...aaa}}}___QQQPPPWWWqqqzzzlllkkknnnzzz~~~{{{rrrmmmfffgggjjjlllqqqxxxuuuUUU???888""" """,,,555222222///    $$$333LLLzzzyyyYYY... 222BBBMMM\\\iiisss}}}iiiTTT:::222--- +++JJJpppnnnYYYRRR```wwwssshhhhhheeehhhddd]]]YYYQQQTTTSSSQQQYYY___gggyyyrrreeefff[[[BBB))) $$$%%%''')))  444XXXxxxiiiNNN777&&&222BBB[[[kkkgggrrrtttYYYAAA>>>666---CCC```~~~pppiiilllmmmxxxuuugggddd___YYYUUUOOOCCC777666CCCMMMNNNQQQNNNQQQeeeaaaSSS>>>777000   @@@cccwww|||VVV;;;*** ###&&&999LLLVVV```bbbooouuuVVVHHH<<<***222HHHYYYqqqyyyssszzznnnppp{{{uuubbb[[[___TTTIII@@@<<<333))),,,000===HHHHHH:::777@@@777!!!  !!!  BBBQQQ[[[ppp{{{mmmYYYAAA+++### $$$---!!!$$$FFFMMMDDDLLL___vvv}}}qqqWWW@@@...999FFFIIIeee{{{llljjjffffff___hhh{{{}}}yyytttmmmZZZKKKLLLVVVKKK888+++222555111111######000111,,,"""!!!     BBBPPPPPP\\\ooozzzwwwgggSSS???$$$ ---;;;555+++)))AAAJJJDDDHHHVVV___aaaaaaJJJ333 ###)))///FFFNNNJJJbbb{{{|||wwwmmmqqqxxxlllbbbZZZUUUOOOQQQXXXgggrrrttttttxxx{{{uuugggTTTCCCAAALLLGGG222'''---'''!!!    """"""### 555HHHCCCIIITTTUUUYYYMMMEEE555  ***555===999000111888DDDLLLJJJDDDDDDQQQOOOAAA...$$$---888FFFJJJ[[[zzztttfff^^^\\\\\\ZZZcccuuuaaaPPPQQQKKK???AAAIIILLLIIIXXXjjjhhhfffmmm{{{~~~yyygggcccXXXCCC666777:::---  """%%%%%%)))000111777HHHEEE333&&&'''!!!&&&444:::666;;;BBB???>>>AAABBB888666<<<BBB???888---%%%333<<<CCCYYYfff___UUUMMMCCCAAADDDJJJIIIeeeYYY@@@888---"""&&&+++666777@@@RRRYYYTTTXXXrrr~~~nnneee```UUU;;;222444!!!  ***$$$///???444&&&$$$$$$ )))111--- ''',,,222444>>>CCC888???UUU^^^[[[OOO444 )))888;;;<<<:::000$$$!!!...GGGUUURRR;;;===BBB@@@777555???GGG\\\yyykkkEEE### %%%666???HHHOOOMMMWWWuuu}}}kkkXXXOOOQQQNNN888!!!  444FFFUUUEEE $$$;;;III???===>>>000   +++888777@@@IIIPPPSSSJJJQQQ```nnnkkkUUU222###222111999CCC666 555777777222;;;:::888111222BBBEEEZZZ|||UUU###...===HHHTTT]]]]]]wwwoookkk}}}mmmTTT>>>AAAIIIIII---  ???VVVhhhQQQ---&&&666HHHPPPNNN???222  +++777GGGRRRbbbddd[[[\\\```ccc___SSS>>>333888@@@666000<<<... ...:::===888:::>>>===>>>HHHccceee444AAAQQQcccxxxxxx~~~yyyoooggg___^^^\\\XXXffflll[[[999%%%888???666   666TTT___QQQ555&&&000;;;777 111IIIOOO888*** '''KKKSSSZZZgggccceeecccUUU^^^\\\NNNXXXccc^^^III777222000:::<<<CCCMMMLLLGGGMMMWWWfffvvvTTT:::TTTlllxxxwwwyyyrrrrrrlllcccQQQJJJGGGEEENNNPPP:::$$$)))    +++LLL^^^___KKK???RRRYYYMMM888 111DDD;;;   ;;;NNNPPP\\\iiijjjhhhcccgggjjjkkkvvv}}}yyyjjjQQQ... ,,,???IIIXXX]]]TTT```kkkaaa]]]uuuyyyZZZ;;;888SSSnnn|||yyyzzzyyymmmqqqxxxvvv\\\HHHMMMGGG+++$$$    !!! +++AAATTT^^^ccceeeqqqqqqcccMMM777)))  """ ++++++%%%+++%%%  '''@@@IIITTTmmmmmmqqqqqqggguuuccc888 !!!  999QQQdddjjjwwwvvvppp}}}~~~sss[[[GGG777!!!  (((IIIZZZdddmmmxxxyyywwwrrrrrrxxx|||tttgggccciiijjj\\\NNNGGG;;; """---+++ '''666JJJdddssskkk___WWWEEE888---$$$ ///:::BBB...,,,***&&&+++GGGMMM<<<444@@@VVVnnnsss}}}pppxxx}}}eeeJJJ///%%%,,,###  $$$@@@^^^~~~uuuooommmmmmjjj]]]OOO:::---!!!  333SSS\\\TTTYYYiiimmm___PPPNNN[[[jjjnnn```IIIJJJXXXZZZNNN999###  ###%%%!!!   $$$:::RRRsssxxxkkk\\\SSSDDD444 :::CCCNNN[[[III(((,,,333888AAAWWWiii^^^GGG((( )));;;TTTqqqyyywww}}}wwwkkkdddXXXDDD333222...(((###(((666000<<<bbbxxxzzzggg]]]]]]SSS888 %%%KKKZZZKKKLLL\\\[[[RRRFFFAAAMMMaaafffVVV:::666HHHMMMDDD666)))  ,,,666 $$$  ///<<<TTTvvvuuubbbHHH444:::GGGEEEOOO___cccPPP444 !!!000<<<DDDSSS___jjjpppjjj```PPP)))///KKKhhh{{{|||~~~yyyfff]]]```YYYBBB333999BBBGGGLLLDDD333!!! ;;;[[[ppp|||}}}|||]]]LLLHHH///999KKKEEE;;;CCCJJJGGGAAAGGGPPPVVVXXXHHH222444999///---666888  +++777=== ### ,,,222AAAZZZxxxoooLLL''' )))000???HHHNNN\\\pppjjjTTTCCC""" """777LLLTTT^^^hhhiiipppqqqlllhhhVVV444"""JJJ^^^sss|||vvvssszzzeee[[[fffbbbFFF999LLL\\\]]]PPPBBB777***$$$HHH\\\xxx|||iiiaaakkkgggJJJ555###333???AAA:::444555444888@@@CCCCCCAAA888---...,,, ---///%%% ###  !!!...:::BBB999  '''444KKKbbbsssnnnOOO222###...;;;555 777OOOPPPTTTdddlll[[[HHH666$$$666PPPppp|||~~~tttoooxxxuuu```KKKCCC... KKK[[[ccchhhmmmppptttmmmmmmuuukkk]]]ZZZ``````@@@222JJJ___OOOAAAEEEDDD555 ...QQQnnngggYYYjjjpppVVVEEEPPPLLL111 (((666555///$$$)))//////+++###888BBB---   )))222...,,,888@@@888555### AAAQQQZZZ]]]ccc}}}sssaaa___dddTTT333  (((%%%"""666///888OOOLLLCCCIIIQQQLLLEEE;;;555XXXnnnwwwlllkkkbbbGGG---%%%333888???OOO___aaaeeeeeefffggg```QQQIIILLLOOO??????LLLSSSPPPNNNJJJCCC...<<<SSSgggppp{{{YYYLLLWWWYYY@@@---***   &&&///EEEUUUCCC///%%%"""###111;;;<<<>>>BBB>>>BBB@@@+++)))HHHUUUPPPSSS^^^___eeeuuu}}}ppphhhssswwwWWWHHHEEE222+++  &&&***...///:::FFF===&&& )));;;;;;888444666DDDEEE===BBBlllyyyuuuaaaQQQCCC...   ...EEEQQQTTTQQQ[[[aaaaaa\\\EEE888;;;===IIIWWWMMMNNNYYY[[[KKK::: ...KKK[[[YYYoooyyyxxxmmmUUUJJJCCC777&&& !!!%%% !!!FFFXXXYYY[[[SSSNNNCCC<<<???222"""000BBBDDDHHHJJJPPPUUUQQQ666333FFFNNNRRRTTTXXXUUUDDD@@@DDDOOOiiivvvxxxwwwrrruuuzzzsssjjjeeeUUU555...:::FFFPPPPPPGGG:::>>>+++ &&&))),,,777555???VVVtttppp^^^III???(((  ,,,>>>KKKOOOSSSYYYUUUWWWRRRGGG@@@>>>SSS```QQQRRRTTTRRRHHH,,,555GGGKKKYYYmmmzzzooonnnyyy}}}zzzgggHHH222555***  ++++++'''$$$ !!!888___wwwxxxrrrcccdddaaaXXXJJJCCCKKKWWWWWWTTTWWW[[[gggQQQ555CCCPPPGGG>>>@@@AAA...///LLL```kkktttrrrkkkooo|||~~~uuu```===)))&&&  000FFFWWW\\\[[[WWWNNNGGG222 ###111<<<RRRggg~~~mmmWWWDDD???---%%%888HHH[[[YYYYYYSSSSSS___^^^UUUNNNPPP\\\ZZZSSSOOOFFF===$$$  555BBBUUU```fffpppooopppxxxrrrOOO222777444&&& &&&&&& ###222JJJdddttt~~~xxxooonnniiicccbbbdddWWWJJJ>>>  &&&===MMMEEE///  !!!===NNN]]]eeelllhhheeewwwsss[[[TTT@@@%%%$$$(((///666777@@@;;;JJJSSSNNN^^^rrreeeGGG'''...HHH^^^qqqzzzzzzwwwzzzvvv```QQQJJJ@@@666    $$$444DDDUUU\\\UUURRRSSS]]]aaaaaaYYYVVVYYYVVVJJJ<<<444///+++ ...GGG[[[]]]bbbuuuwwwzzzvvvSSS;;;888444***  111<<<>>>CCCYYYuuupppiii___VVVLLLKKK888 """'''$$$///444+++%%%555GGG@@@((( ---<<<DDDKKKJJJUUUkkkuuuhhh```aaaSSS999222:::PPPTTTRRRVVVVVVWWWVVVVVVjjjxxxdddGGG(((***===TTTnnntttuuuwwwhhh___UUUKKKIII>>>444,,,###%%%$$$ ### ...<<<AAAOOOMMMFFFJJJ^^^hhh```VVVUUUVVV===%%%###  ***XXXllleeekkkwwwtttQQQAAA<<<111""" JJJUUUWWWeeexxxnnnWWWQQQQQQ]]]TTT777444===AAACCC777666HHH???+++&&&111888,,,"""888OOO[[[VVV\\\bbbXXXMMMMMMTTTaaahhhlllkkkqqqwwwzzz}}}kkk```MMM///  """***000;;;HHHccc~~~yyyfff```YYYMMM@@@777111******333***   +++777AAAMMMOOOAAAAAAZZZiii]]]RRROOOBBB   %%%XXXrrrssswww{{{^^^QQQDDD***   %%%NNNbbbvvvrrrTTTJJJPPPSSSIII)))999LLLSSSIIIBBBCCCHHH@@@(((###---((($$$<<<MMMYYYbbbhhh```dddnnnmmmnnnppp}}}xxxhhhZZZCCC!!! '''777AAAGGGOOOlllvvvcccQQQ<<<111+++***...  %%%+++222HHHWWWddd]]]FFFDDDWWW___TTTHHH<<<$$$  $$$RRR{{{sssOOO;;; ///GGG]]]www___PPPAAA111$$$;;;TTT^^^VVV>>>111666///"""---'''===PPPkkkvvviiijjjuuu~~~}}}xxxpppxxx~~~fffOOO;;;===[[[___fff~~~wwwUUU555)))&&&)))555<<<$$$  777NNNYYYdddpppzzzoooYYYKKKPPPSSSEEE;;;*** ,,,/// 000ZZZxxxQQQ777###000  &&&666999>>>XXXppp{{{kkkTTT111 222DDD[[[ZZZ>>>%%%&&&((( (((BBBVVVooo}}}iiiiii{{{|||{{{|||fffCCC666!!! <<<jjjPPP///###&&&666GGGNNN777###IIIooo{{{yyycccNNNJJJAAA,,, ###000''' 888iiizzzlllooo]]]:::""" ///===&&& ...<<<IIIOOOPPP]]]zzzpppLLL """///DDDMMM333  %%%GGGfffzzz}}}wwwuuuSSS777,,, HHHpppYYY333 :::KKKLLL;;; ***888VVVqqq[[[@@@>>>... )))### ===nnn|||sssyyywww___]]]SSS111!!! ###333((( $$$;;;RRRcccaaaccc|||kkkDDD)))'''333DDDHHH000 IIIggg}}}sssRRR333222[[[SSS555$$$111:::999*** )))KKKcccuuuXXX333///***"""  555bbbmmmiiimmm~~~oooVVV@@@+++"""  )))EEEVVVdddvvvmmmZZZ>>>!!!...???CCCFFFMMMPPP===)))  HHHiiiyyyYYY;;;"""   !!!NNNuuuvvvCCC000&&&!!!111333111  ...ggg|||VVV444...&&& ###  ---WWWggg___bbbzzzzzzwwwzzzsssYYY<<<###""" $$$---'''$$$DDDZZZpppzzzuuuOOO@@@333222BBB???@@@KKKNNNOOOQQQGGG444$$$  ---PPPjjj{{{ZZZ@@@$$$  +++ 888cccccc:::'''"""(((555///+++)))###"""CCC{{{jjjPPP===""" """$$$ ---,,,777TTT```XXXWWW```hhhiiirrrnnnjjj]]]:::!!!&&&""" --->>><<<111 ***TTTqqqtttmmmGGG444$$$ ###;;;KKKSSSLLLCCCHHHKKKLLLGGGBBB>>>333%%%$$$+++))) <<<UUUkkkqqqrrrWWWAAA***%%%333:::--- +++///%%%  :::[[[|||qqqSSS<<<((("""###""")))((( $$$...666555)))VVVyyy~~~```HHH'''  ###+++%%% &&&000!!!!!!FFFYYY^^^PPPKKKPPP```kkkqqqhhhbbbTTT///888:::+++,,,+++ )))......&&& (((\\\oooiiiyyysssTTT000%%%HHH[[[\\\SSSQQQRRRCCC999>>>AAACCC<<<222>>>DDD:::--- +++FFF___jjj}}}|||fffOOO999 ///EEEMMMNNNBBB### ###)))444888000///...&&& !!!999^^^uuudddWWWNNN444&&&""" $$$>>>FFFBBB///$$$...DDD^^^nnngggKKK///  %%%(((+++$$$  &&&((($$$;;;JJJLLLFFFEEERRReeepppsssnnndddLLL###666FFF>>>:::&&&===dddqqquuu{{{bbb888;;;RRR```[[[ZZZ\\\FFF333555BBB??????<<<???BBB===111 +++DDDaaatttZZZFFF:::444777GGGXXX[[[RRRGGG666***&&&...777@@@IIIBBB???AAA:::555/// %%%AAAggg}}}jjjdddZZZMMMAAA+++ !!! !!!DDDYYYZZZSSSOOORRRYYY\\\___hhh}}}gggUUU777  &&&&&&...,,,$$$)))222777BBBJJJ```fffcccgggcccZZZ;;; ---AAANNN???)))!!!  888UUUcccvvvxxxggg??? :::EEESSS\\\WWW[[[III333777CCC>>>AAAAAA;;;IIIMMM>>>""" ***TTT{{{pppaaaXXXZZZXXXUUU[[[bbbccc```UUUOOOKKKBBB???BBBJJJLLL<<<;;;:::+++&&&$$$!!!###;;;TTTgggvvvlll[[[IIIRRRRRRBBB,,,$$$""" ***>>>RRRkkkssshhhgggnnnqqqkkkkkk{{{oooccc::: ###$$$///444  ###  $$$888QQQiiicccTTTQQQXXXQQQ000  ///666DDD777///---999SSSjjjqqqqqqtttjjjIII%%%CCCIIICCCJJJIIIMMMRRREEE===@@@BBBDDDHHHFFFNNNYYYQQQ666;;;fffpppooolllrrrppp]]]XXXgggpppgggbbbeeeZZZLLLLLLIII<<<---***  '''  000>>>JJJiii~~~|||rrrIII555444666222222***&&& !!! ---@@@SSS^^^yyyuuuxxxyyyxxxWWW000!!!***///222+++%%%***)))   333OOOggg___OOONNN```WWW... ...111222;;;444///!!! ***EEEdddgggOOOYYYggg^^^PPP...&&&888;;;999???FFFQQQ]]]VVVLLLNNNPPPUUU[[[\\\ccckkkkkk[[[AAA***  )))PPPxxxzzz{{{qqqtttzzzuuurrrzzzpppqqqwwwwwwtttxxxlll[[[YYYHHH555000...""" ,,,000(((///000???\\\fff[[[;;;,,,%%%$$$%%%&&&   ???[[[ccclll~~~ppp@@@ ;;;LLLOOOHHH000&&&!!!***>>>SSSeeejjjaaa```kkk]]]666%%%///888:::;;;///((( 888[[[kkkUUUOOOQQQPPPEEE,,, (((===JJJOOOVVVYYYZZZ```gggwww|||zzzwwwUUU>>>(((---JJJkkk{{{uuukkk[[[JJJXXXlllssswwwqqqhhhmmmwww|||yyy{{{|||tttwwwrrrdddUUUHHH??????AAA;;;000$$$%%%  %%%888CCC ###$$$!!!333LLLjjjwww|||ttt~~~kkk666  """KKKccccccXXX>>>***111KKKfffjjjyyy|||qqq^^^KKKAAABBBIIIAAA===AAA999&&&  %%%QQQ~~~qqq\\\@@@666===444(((   ...GGGMMMYYYeee]]]```sssjjjUUU<<< ,,,>>>RRRSSSQQQIII@@@@@@BBBJJJUUU[[[UUUJJJNNNZZZqqqyyyzzz{{{pppRRRBBBAAAAAA@@@@@@???>>>)))  '''MMM[[[iii~~~{{{qqqzzz}}}]]]+++ ---LLLddd\\\RRRDDD&&& 666```ttt______fff^^^UUUIIIDDD888(((FFFkkk||||||xxxeee==='''!!!***---"""'''***    AAA\\\gggeeeXXX___tttxxxZZZ@@@$$$ ###+++))) 555555$$$%%%666AAA777(((111CCCiii~~~cccLLLAAA666;;;666000<<<<<<)))    +++QQQ[[[ccc{{{|||www~~~wwwjjjKKK///(((222<<<KKKCCC;;;/// 666aaavvvmmmyyy{{{qqqggg[[[OOO<<<))) )))KKK___{{{yyybbbFFF&&&333,,,***777!!!  ;;;VVVZZZUUUWWWiiiiiiUUU>>>###   $$$"""!!!)))???aaatttbbbSSSDDD@@@//////EEEEEE###  %%%BBBIII___pppkkkkkkxxx___MMMHHH;;;'''+++"""333YYYxxx~~~{{{aaaMMMLLL<<< +++GGGooo```MMMGGG666'''---888***  ...000AAAEEEIIIYYYuuupppXXX...)))666EEE[[[yyyfffaaaTTT111222DDD???    &&&'''777AAAUUUbbb^^^aaa{{{}}}```YYY^^^HHH%%% NNNtttuuuyyyzzzaaaNNNNNNHHH000###$$$### """MMMkkkxxxtttQQQCCCCCC>>>444///,,,%%%  """+++111333;;;DDDJJJUUUiii~~~rrrdddCCC 000777MMMgggzzztttpppZZZ666---000'''((($$$ 000AAA666666FFFVVVaaagggmmm{{{iiiRRR;;;,,, HHHoooxxxyyyqqq^^^RRRHHHJJJDDD555---&&&777TTTdddpppllliiixxxeeeLLLGGGKKK===///+++ (((999>>>IIIPPPIIIHHHZZZwww~~~~~~wwwgggRRR<<<777222)))$$$"""444KKKiiiuuubbbOOO///!!!&&&%%%&&&***...---"""111999---///FFFTTT[[[jjjttt|||cccSSS<<<RRRrrrxxxiii^^^\\\bbbYYYAAA444***444KKKZZZVVVRRRfff|||qqqaaaOOOEEEAAA???<<<<<<:::""" !!! $$$111777HHHUUUXXXWWWZZZqqq~~~iii\\\MMMCCCBBB999"""  )))>>>\\\{{{{{{hhhNNN:::###,,,---******###"""***'''000>>>EEEBBB---(((...!!!###:::EEENNNgggzzz{{{fffLLL000ZZZxxxxxxyyyvvvuuuwwwkkkLLL111===HHHBBBGGGbbbxxx___KKKEEE999222999OOOPPP111 $$$...---///((( ///@@@IIIbbbuuu|||qqq[[[GGGJJJFFF,,, ###>>>PPPppp}}}nnn]]];;;)));;;FFFGGG111&&&333DDDDDDHHHQQQSSSJJJ/// ---,,,%%%!!!***:::JJJhhhtttMMM555OOOmmm}}}vvvSSS***333999JJJkkk}}}nnn[[[AAA///333DDDZZZ]]]FFF333)))&&&###???III;;;111444...777@@@HHH^^^|||www``````LLL777///JJJbbbnnnooo|||www```JJJ222 222DDDLLLBBB===LLLdddooogggaaaZZZOOO<<<"""  !!!111777;;;000$$$333OOOqqqzzzQQQ !!!GGGhhhyyyxxxUUU&&& ...NNNyyy}}}zzzmmm=== 333OOO\\\[[[KKK555%%%'''+++CCCGGG<<<555555FFFPPPPPPTTTaaavvvwwwZZZAAA+++&&&AAAaaa}}}xxxUUUMMMaaatttwwwbbbMMM>>>*** '''888DDDPPPWWWfffsss{{{sssiii^^^KKK999 111AAAJJJ:::***999SSSvvvoooLLL ;;;___yyyddd---///RRRyyy}}}pppkkkXXX111###888PPPRRRSSSGGG((( """///:::<<<---222OOOWWWNNNSSSbbbvvv```NNN<<<&&& '''999]]]ttt|||ggggggeeeOOOGGGRRRaaammmvvviiiUUUEEE444***"""///CCCRRR___iiisss{{{|||gggRRR444 $$$---;;;KKKGGG666555SSSsss|||XXX999+++TTTpppnnnFFF >>>]]]gggnnnuuuaaaEEE///""":::HHHJJJ<<<"""   !!!///%%%+++EEENNNJJJJJJYYYtttjjjaaaQQQ===%%%+++===NNN^^^kkkzzz~~~{{{iiiWWW[[[\\\aaaeeeXXX[[[ccceeedddYYYCCC555***!!!000@@@DDDQQQbbbsssyyy]]]///""";;;>>><<<AAA@@@999???[[[zzzbbb???FFF```}}}~~~ddd(((@@@XXX^^^YYYYYYHHH$$$...>>>:::000  ---777EEELLLMMMIIIKKKaaarrrsss~~~mmmYYY???!!!)))///555DDDWWWbbb```ccc___SSSSSS```fffjjjjjjYYYNNNXXX[[[]]]UUUHHH;;;''')))///222555CCC^^^rrriiiSSS:::+++GGGNNNBBB222...<<<PPPaaauuu}}}rrrzzzlllddd```EEE 444RRRhhhhhh444444JJJNNNFFF???,,,  '''+++--- 111KKKOOOIIIAAAFFF@@@JJJgggmmm```bbblll{{{rrrGGG))) !!!333CCCBBBEEEPPPNNN>>>III___uuuuuuhhh\\\\\\ZZZUUUYYYUUUQQQFFF333(((---555BBBGGGTTTZZZ@@@&&&  ,,,===HHHDDD@@@:::GGGMMMQQQ___vvvzzznnn\\\SSSjjjzzzvvvdddTTTHHH777''' 111QQQhhhvvv~~~]]]111)))222666000+++"""  ###AAADDD@@@777222666===EEEPPPOOOZZZ^^^ooo|||sss???&&&    ,,,777666CCC```xxx~~~uuuwwwxxxjjjdddeee]]]TTTLLL555:::KKKRRRNNNDDD222!!!%%%******%%%000@@@ZZZRRRTTTNNNHHHQQQ\\\YYYLLL;;;333DDDZZZcccooo{{{VVVCCCCCC===((( )))...///$$$ 444XXXrrr|||ssshhh___III  """***+++...&&&,,,...+++666CCCPPPSSS[[[nnn|||vvvxxxSSS... 777OOOdddhhhyyynnneeeaaaYYYWWW[[[UUULLL::: ***>>>GGG555"""%%%HHHZZZTTTOOOSSSMMM:::...)))222HHHdddqqqoooJJJ///))))))???999000 ---UUUqqq~~~lllTTTKKK999    !!!&&&%%% 000===QQQSSS^^^lllkkk{{{bbb;;;***  333OOO[[[iii|||ttt{{{ttteeeUUUBBB%%%&&&%%% !!!///NNNTTTCCC000,,,AAA;;;NNNZZZ>>>%%%===DDDKKKUUUVVVEEE!!! ###&&&!!! KKKhhhsssvvvpppgggKKK%%%  ...'''---PPP]]]XXX```tttjjjTTT;;;&&& $$$>>>WWWnnn~~~vvvQQQ333 +++;;;777 &&&444FFFKKKEEE...(((...BBBAAA"""'''000*** SSSkkkrrrwwwjjjmmmqqqWWW222  &&& 111WWWbbbSSS[[[sss~~~ooo]]]@@@""" ...WWWjjj{{{WWW222<<<FFFEEE555 !!!---((((((333::::::111((( """  333YYYpppuuuxxx||||||}}}rrrnnniiieeeccc]]]KKK***!!!!!! 000GGG]]]aaaZZZ^^^qqq{{{mmmQQQ===%%% @@@ccczzz]]]111***;;;PPP]]]ccc[[[DDD;;;>>>222+++444((('''***&&&$$$ >>>TTTiiirrreeeXXXZZZqqqhhh^^^fffjjjfffYYY^^^TTT888 ###EEETTTZZZbbb___aaannnwww{{{yyyzzzjjjLLL777***(((""" +++'''   ???fffXXX'''///888QQQZZZbbbttt|||xxx___KKKJJJIII***++++++&&&  444EEEMMMXXXFFF///<<<___xxxwwwpppmmmaaa^^^ccceeegggdddTTT222 !!!$$$888RRRdddgggccc```___mmmuuulllppphhhQQQ777)))444999@@@<<<''' ***///"""WWWmmmiiigggqqqsssPPP***''';;;QQQdddpppooottt{{{ttt___^^^RRR--- +++)))### !!!///888>>>555 ...XXXgggaaaiiinnniiieeeeeejjjjjjcccQQQ***  '''333111888III^^^vvvvvvkkkaaaWWWZZZdddcccvvvfffRRRDDD:::;;;EEEIII>>>+++  """888???:::UUU]]]XXXaaapppXXX999 ***999VVVrrr}}}{{{www|||yyyuuupppXXX444,,,444 !!! )))999@@@---:::ZZZhhhdddggglllmmmrrrtttooo```\\\LLL000    (((AAAEEEFFFXXXooovvvnnnYYYFFFAAANNNiiizzzcccXXXWWWUUUNNNNNNAAA<<<===333)))"""'''---:::;;;///<<<PPPcccqqqjjjdddRRR222### ###:::IIIbbb|||tttooofffMMM666333222(((   444GGGCCCFFFVVVaaa^^^]]]lllqqqyyyzzzoooZZZHHH;;;222555666   ...BBBEEEEEEWWWhhhggg[[[OOOAAA===QQQzzzqqqttttttqqqeeeLLL888===CCC:::???LLLLLLFFF<<<///!!!  +++JJJgggyyytttaaaccc___MMM333(((***BBBUUUfffqqqcccKKK:::999@@@555   ,,,JJJLLLNNNUUUYYYPPPNNNaaarrr|||{{{WWWEEELLLVVVRRREEE222### 444AAAHHHXXX```RRRNNNSSSWWW\\\ooolllXXXIII;;;888>>>OOO___UUUEEE)))  DDDcccyyy}}}kkkaaa___[[[TTTCCC''' ---AAAWWWjjj|||rrr]]]KKKEEEQQQMMM444,,,BBBEEETTTZZZ[[[aaa^^^fffwwwyyyxxxYYYNNNZZZcccaaaUUU???((( '''999CCC777   :::JJJVVVYYYSSSMMMWWW^^^hhhsssyyylllXXX>>>444;;;UUUppplllMMM### !!!DDD]]]ooo{{{rrrjjjbbbYYY]]]OOO*** ,,,FFFPPPfff{{{hhhbbbkkkppp^^^888######!!!,,,///AAATTT[[[bbbwww||||||jjjgggiiibbblllkkkQQQCCC999'''FFFWWWaaaMMM000 ,,,EEEVVVRRRSSSIII>>>BBBSSSooocccRRRKKKFFFbbbccc&&&+++KKKaaappp}}}iiiccciiiggg___CCC ***HHHbbbttt|||eeeooowwwvvvbbb<<<(((    ***///888---''';;;TTT___lllwww{{{wwwuuuqqqeee]]]XXXEEE---000ZZZxxxuuuPPP000 (((<<<333888000###888WWW|||tttjjjbbb]]]iiixxxzzzTTT$$$'''GGGlll{{{yyyiiihhhjjj]]]ZZZ??? ,,,OOOiiidddXXXjjjqqqiiiPPP===--- !!! '''$$$ ***999'''LLLWWW<<<***777OOOhhhxxx{{{xxxvvvtttcccEEE---!!!555gggwwwNNN$$$ ###???___zzzxxxuuuvvvmmm]]]JJJ///222VVV|||wwwttt|||~~~uuummmZZZKKK888999ZZZvvvpppiiimmmjjjUUUEEE???!!! 666===;;;666888... )))???===))) 333CCCJJJ555<<<aaammm[[[EEEFFFXXXwwwfffJJJ--- :::ggg}}}qqqTTT333***BBBgggzzzaaaCCC222+++&&& ***IIIggg{{{nnnmmm{{{xxxdddKKK::: +++GGG```ssszzzlll]]]RRRFFF///+++>>>EEE>>>>>>CCC???&&&SSSbbbYYYIII:::999NNNQQQOOOKKKKKKCCC...[[[mmmtttyyyiii___rrrXXX000---JJJjjjvvvsssjjjRRR&&&,,,KKKgggWWWQQQ:::333HHHcccooolllppprrruuurrrlllvvvttt[[[AAA)))999WWWggg{{{nnnZZZRRR===222HHHLLLKKKOOOYYYNNN333###KKKrrrvvvkkk^^^TTT___ddd___ZZZ^^^eeeVVV333  666fffttt}}}|||hhh:::!!!(((333222AAAZZZsss~~~|||mmmPPP&&&,,,TTT}}}qqqbbbMMM###>>>[[[mmmiiifffeee```]]]nnnuuu~~~zzzgggZZZRRR999  ///RRRffftttpppQQQEEE))) %%%DDDRRR^^^\\\ZZZaaaiiiUUU444###000'''!!!!!!666SSSooozzzqqqnnnjjjppp~~~{{{rrr```???###;;;]]]uuu~~~uuuIII''')))555===FFFDDDSSStttjjjEEE ...ZZZvvvvvvYYY888777YYYeee[[[]]]ZZZOOONNNccc{{{pppNNN999...***!!! >>>ZZZcccooorrrnnnyyy{{{pppZZZEEE888 ***LLL^^^ccciiieeeaaaddd\\\BBB&&&!!!;;;IIIMMMDDD???SSSwww{{{rrrYYYEEE%%%  222YYYrrr|||uuusssOOO777111111EEEVVVSSS]]]```nnneeeAAA"""<<<___ssstttxxxaaaDDD ((()))AAAWWW\\\TTTVVVUUUOOOKKK```vvv{{{kkkLLL000 777MMMQQQWWWWWWTTTGGGAAA@@@444  ###CCCVVVbbbgggaaaaaagggdddIII555222   555NNNTTT\\\ZZZTTTmmmdddGGG>>>###!!!###### 666^^^fffooozzzwwwooojjj~~~qqq^^^ZZZ^^^bbbiiirrrvvvyyy{{{}}}}}}qqq]]]DDD,,, >>>cccmmmwwwuuuppprrr{{{~~~gggCCC111...!!!...777FFFUUUWWWUUUQQQQQQXXX^^^RRR]]]ooopppgggVVV>>>///&&&&&&'''  ###777<<<<<<...  $$$===KKKQQQUUU\\\aaa\\\WWWIIIBBB@@@:::888555000###$$$)))333KKKbbbiiirrr~~~nnnXXXFFF222&&&***((( """'''@@@HHHQQQbbbccchhhsssjjjfff```aaapppxxxrrruuuzzzccc___^^^RRR@@@000***NNN___hhh{{{jjjllllll{{{~~~gggIII***;;;KKKJJJEEEBBBMMMSSS]]]XXXGGGAAAHHHVVVhhhlllXXXWWWfffkkkgggWWWGGG???999555+++ ,,,222222333;;;MMMZZZYYYKKKBBBBBBGGGPPP\\\eee___FFF:::<<<777000;;;WWWnnnppp|||yyyqqqYYYNNNKKKFFFDDD222 '''...000,,,111===IIIYYY]]]XXXVVV]]]iiifffoooyyy|||xxx|||aaaSSSeeelll___III---...HHHdddxxxzzzvvvuuu```\\\aaafffyyyiii]]]JJJ@@@)))666III]]]ddddddhhhmmmkkkbbbLLL,,,(((>>>YYYkkkrrr[[[SSSZZZ\\\eeeWWWDDDBBBNNNAAA*** """111IIIRRR@@@222<<<GGGSSSVVVOOOKKKTTT^^^nnnhhheeeddd[[[WWWTTTuuuxxxpppooo^^^QQQQQQNNNNNN888***///)))$$$!!!333LLLPPPMMMUUU\\\eeeiii```qqq|||rrrvvv}}}zzzrrraaalllsssfffHHH'''333777***000PPPllltttkkkqqqfffWWW[[[bbbkkk~~~xxxddd^^^MMM555((("""$$$333JJJUUUkkkyyyttt~~~rrrZZZ<<<$$$###<<<XXX``````UUUIII@@@<<<GGGDDD:::333;;;>>>--- 777RRRdddWWWMMMNNNCCCEEEIII[[[jjjkkkyyyggg\\\\\\WWWQQQLLLEEE'''   ###!!!%%%999LLLSSSYYYWWW[[[iiikkk~~~vvveeeQQQ777 """===@@@666)))666NNN___ccc\\\kkk{{{|||nnniiiiiilllwwwuuuccc]]]KKK:::;;;HHHOOONNN\\\ooo}}}{{{wwwuuuLLL444'''!!!444MMMMMMFFFBBB555&&&%%%  &&&;;;YYYkkkeee[[[NNN>>>555@@@^^^vvvrrrkkk```WWW[[[]]]RRREEE777 ---HHHaaaeee[[[aaammmzzzttt[[[:::!!!  %%%333===EEE>>>///((("""  ///CCCKKKMMMXXXdddfffjjjlllsssqqqnnnxxxrrrtttzzzfffdddXXXQQQVVVaaahhheeelllqqqsssooohhhllleeeCCC//////&&&+++333   777KKKWWWaaadddSSSCCC444444HHHaaarrrwww{{{zzz{{{}}}sss]]]XXXaaaXXXHHHGGG666&&& $$$BBBhhhuuuiiilllooouuuwwwyyykkkVVV000%%%(((...;;;JJJFFFCCC>>>111 444999BBBHHHJJJFFFJJJVVVcccdddppp|||}}}vvviii\\\WWWbbbkkk|||}}}tttuuugggQQQLLLKKKHHH>>>888444---:::TTTRRRQQQNNNDDD<<<&&&...BBB```qqqxxx{{{uuuiiibbbhhhYYYFFFCCC@@@$$$ <<<___mmmppp{{{vvvmmmtttzzz{{{nnnyyypppeeeRRR666))),,, !!!---888<<<AAAJJJNNNGGG@@@ ***...///444@@@KKKXXXeeeppp~~~~~~xxxgggYYYTTTbbbtttxxxgggfffhhh[[[===999KKKLLL333&&&   444===:::777)))***%%%999XXXgggnnnpppsss^^^EEE222555!!!222LLLbbbrrr|||ppplllnnnxxx~~~vvvyyy{{{yyyvvvuuu|||oooZZZOOOCCC888,,,!!!)))---444999===>>>FFFQQQPPPEEE---***444BBBLLLZZZgggooowwwzzz~~~pppdddTTTKKK[[[uuukkkTTTVVVcccgggLLL888AAA===###  +++ ...222)))  ///MMMZZZsssuuu|||~~~gggNNN,,,###$$$>>>[[[xxxyyyrrrjjjfff[[[ZZZgggsssqqqjjjjjjZZZ[[[gggjjjfffuuuxxx___NNNMMMOOO===111---!!!;;;HHHHHH:::999@@@666...333555:::AAAGGG===***###===MMMQQQSSSZZZmmmpppWWWVVVDDD555EEE___ppplll\\\GGGMMMXXX___YYYIIIAAA,,,''''''<<<??????DDD>>>%%%  &&&!!! 444HHHTTTppppppVVV000+++***888SSSwwwyyylll___MMMHHHGGGNNNXXX___ZZZHHHDDDSSSXXXaaaqqq{{{___RRRJJJMMMRRRGGG>>>:::..."""666JJJ]]]aaaGGG:::CCC888***"""""")))000+++ HHHWWWIIIFFFSSShhh~~~jjjAAA///''' 000SSSddd\\\NNNDDDFFFGGGSSS___VVVCCC...)))(((777...$$$)))===UUUbbbcccSSSMMMHHH>>>999''' &&&GGGyyyqqqPPP...000666AAAOOOkkkuuucccMMM999:::888888JJJRRRDDD>>>EEETTTYYYddd{{{wwwpppQQQIIIEEEOOO]]]]]]JJJBBB555 %%%EEEYYYeeeZZZFFF===888333'''###)))%%% NNN```RRRIIIUUUccc}}}___888 >>>UUUVVVQQQIIIGGGIII\\\mmmdddJJJ<<<:::???HHHGGGOOORRRSSSkkksss``````^^^UUU;;; >>>ccclllWWW;;;(((;;;NNNMMMTTTiiihhhVVVFFF777...777<<<:::<<<;;;666777EEE___vvvzzzWWWIIIRRR\\\kkkpppZZZMMM888 ***KKK]]]XXXJJJ>>>888)))&&&///555555%%% ---EEEYYY[[[\\\\\\nnnwwwQQQ555)))(((DDDYYYVVVLLLSSScccvvvvvvdddRRRIIIWWWaaacccdddmmmnnnqqqllljjjYYYBBB*** 888 999nnnuuuxxxkkkNNN((($$$III``````YYYZZZ\\\NNNDDD555666CCCAAA999777333...222GGG___{{{}}}tttfffjjjllliiitttsss___III:::### ---@@@IIIBBB???AAA333 +++333***)))BBBXXXccckkknnn~~~nnnUUU555''' 999KKKNNNRRRZZZrrr}}}zzzuuuuuupppdddbbbuuuvvviiieee\\\PPP@@@666***"""'''%%%""")))666GGG999'''FFFWWW___kkk]]]''' '''KKKbbbiii```MMMGGGLLLDDD:::<<<EEE===)))'''(((---777JJJUUUqqq}}}yyyzzzsssjjjccctttvvvvvvvvvjjjVVVFFF???111***666555999<<<888111"""&&&AAAZZZjjjpppyyynnnddd]]]KKK,,, 000888GGGQQQaaallljjjhhhkkk{{{}}}hhhjjjlll```___UUUPPPTTTPPPLLLKKK???999<<<FFFKKKRRRHHH$$$###444EEE^^^~~~|||\\\000111SSSeeefffRRR:::---111;;;>>>:::444***'''666CCCNNNiiiyyyjjjpppyyy~~~nnnhhh```YYY]]]vvv{{{uuukkkdddMMMDDDOOOLLL555"""   &&&,,,'''888EEE555### %%%===LLLOOObbb}}}yyynnnjjj^^^;;;++++++"""!!!+++@@@JJJdddmmmddd]]]YYYiiinnniiixxxppp___ZZZQQQRRR\\\eeeaaabbbXXXSSSWWWWWWWWW\\\PPP333 555XXXmmmwwwjjjgggrrr~~~sssVVVDDD777VVVbbbPPP222### '''555))) 333EEETTTdddmmmbbbIIIBBBOOOaaasss___YYYMMMQQQ```oootttoooiiiYYYRRRGGGIII[[[[[[III---&&&%%%)))###&&&AAAMMM000 ,,,===777BBBrrrwwwgggOOO>>>///!!!777KKKggglll___OOO???>>>SSSooo~~~rrrzzz{{{mmm```aaaeeemmmnnndddffffffgggiiiiiikkkfffWWWDDD/// """;;;KKKXXXKKKGGGOOOddd|||XXXBBB """888EEE===+++ &&&333HHHNNN???***)))777PPPuuuwwwXXXLLLKKKJJJQQQ\\\UUUPPPMMMEEEAAAMMMPPPNNNKKK???$$$  ;;;>>>888222)))'''CCCEEE%%% $$$&&&###111___zzzzzzvvvzzz{{{eeeKKK???(((222JJJ]]]VVVFFF222$$$)))>>>SSSfffttttttqqqwww}}}ssseee[[[gggnnnoooqqqsssqqqvvvuuujjjsss}}}xxxppptttkkkfff]]]KKK/// 000<<<???CCC<<<LLLjjjgggFFF$$$(((222888 111===***GGGnnnzzz|||gggXXXHHH@@@222666777000444::::::@@@@@@333---*** &&&JJJRRR>>>111222***222888###"""+++!!!FFF\\\ggg}}}qqqlll{{{}}}^^^LLL;;;!!!&&&---999DDD<<<$$$$$$,,,---<<<MMMYYY[[[UUUKKKMMMUUUUUUTTTNNN```vvvwww{{{{{{|||}}}rrrmmm~~~wwwuuuhhhQQQ000 '''222333>>>KKKjjjwwwPPP(((  BBBjjjuuu}}}tttaaaGGG:::'''((()))$$$%%%&&&333PPPVVVHHH000###++++++'''$$$######  ,,,JJJhhhuuunnnzzzmmmZZZKKK888...666;;;===777!!!%%%###777JJJTTTKKK888777AAA???===BBB[[[kkkxxx|||kkkDDD***  '''<<<OOO```|||VVV///  888\\\vvvzzzuuuoooVVV@@@<<<222   000CCCOOOLLL---&&&*** &&&$$$  !!!???nnnpppfffpppsssiiipppyyyxxxnnnyyyiiiZZZNNNMMMFFFAAAPPPTTTEEE+++ ///)))(((666LLLNNNDDD:::(((###555@@@SSSiiijjjGGG***999BBBfffbbb222  ***:::NNNkkkppppppgggKKK111$$$ '''666555777111 ###   +++...%%%)))***!!! %%%(((***--->>>iii|||qqqvvv}}}^^^TTTjjjmmmjjjiiipppxxx|||vvvlllccchhhfff[[[XXX]]]TTT888!!!444555000111@@@III999%%%222===PPPmmmmmmCCC+++ '''333VVV~~~xxxnnnccceeegggpppzzzYYY!!!666LLLRRR]]]hhhkkkcccFFF...333555---  ///333555:::777)))$$$999???666<<<YYYeeebbbfffmmmiiiUUUSSSfffpppkkknnnrrrzzz{{{uuuyyyqqqdddaaaRRR555***///222333:::CCCGGG<<<,,, ***DDD[[[pppzzzyyyPPP:::''' DDDuuuwwweeeYYYSSSXXX___gggqqqbbb888 )))NNNZZZ^^^ccchhhaaa<<< &&&555000%%% ***555555>>>AAA222)))*** 888AAA888:::JJJSSSMMMOOOUUUUUUTTTZZZaaagggfffqqq|||rrrppprrrlll]]]PPP<<<###"""%%%---///111222---444000 """>>>SSSbbbpppxxxMMM333...$$$MMMmmm~~~wwwhhhPPPOOOSSS```gggpppbbb???JJJeeeVVVPPP^^^QQQ+++ 777777...999555'''666<<<///222GGGJJJ:::'''$$$+++555444+++--->>>CCCAAAIIIHHHRRReeebbbYYY[[[aaattttttlllttt|||vvv^^^[[[jjjlllRRRNNNFFF000###    """:::MMMrrrttt^^^aaa[[[BBB///)))777hhh~~~|||{{{pppgggZZZNNNRRR^^^^^^aaaOOO+++AAAXXXDDD???JJJ666///444<<<UUUQQQ999+++,,,555;;;999777:::HHHUUUOOOBBB???>>>555)))$$$&&&***...777???888KKKmmmmmm\\\aaaqqqwwwsssuuuvvviii]]]aaaccc^^^___RRRBBBBBBZZZaaaPPPMMMDDD222'''  ///NNNyyyuuuSSS>>>555777===111<<<]]]cccmmmvvvzzz|||ppphhhddd]]]GGGDDDFFF???777 222777333111""" """999JJJ[[[___RRRIIILLLGGG;;;888FFFNNNFFFRRRggghhh^^^WWWCCC888888...&&&""",,,000***???fffsssqqq~~~sssmmmggg___WWWVVV[[[YYYWWWHHHAAA:::...>>>KKKTTTWWW>>>,,,(((   &&&AAAcccvvvzzzXXXCCC222 222/// !!!888>>>KKKWWWaaaooohhhddd]]]RRRIII888)))""" )))'''  """EEEWWW___aaaccc^^^^^^TTTAAA777888:::DDDZZZkkknnn___YYYSSSEEE;;;333+++&&&***===ZZZjjjppp}}}tttfffgggXXXLLLPPPLLLOOOZZZYYYIIIAAA888444<<<HHHOOOQQQ999  :::XXXoooyyyrrrUUUCCC???---    222GGGAAA:::GGGAAA)))  (((222HHHTTTWWWRRR[[[]]]QQQJJJ--- DDDWWWYYY___TTTHHHKKKDDDAAA:::,,, !!!///<<<KKK```___[[[```]]]JJJ===:::777666DDD[[[[[[YYYMMM>>>GGGTTTQQQFFF888### ,,,LLLeeesssqqqsss|||vvvooobbbUUUEEE222&&& %%%      777AAAHHHUUUPPPPPPXXXQQQDDD000 '''@@@GGGQQQXXXPPPJJJGGGJJJAAA444%%%&&&:::JJJSSSKKKAAAQQQLLL999666333...,,,000EEENNNVVVZZZPPPJJJWWWTTT333   666SSSmmmsss^^^[[[kkkqqqtttqqqtttxxxrrrWWW@@@999,,,!!! %%%...000""" '''333+++   ...111666333&&& 999DDDEEEMMMMMMTTT\\\RRR999!!!///FFFXXX[[[WWWLLLMMMHHH>>>+++ <<<XXXYYYIII999CCCHHH======777555---'''(((111III\\\TTTIIIFFF222///***===XXXpppooo]]]PPP[[[```cccxxxiiidddbbbjjjjjjNNN999:::000))) ,,,(((999GGG>>>)))%%%000///  ###'''%%% 555CCCGGGKKKUUUFFF222!!! +++:::888333BBBKKKTTTNNN"""333IIIZZZaaaPPPBBB;;;444111TTTfffQQQBBBFFFKKKQQQBBB111111555---###&&&DDDNNN@@@111""" """"""$$$222111%%%$$$ %%%AAAdddvvvmmmbbbQQQNNNPPPSSSiii|||nnnkkkIIIEEEDDDHHHDDD***$$$***))) )))666///555SSSbbb[[[EEE---  ***666***''''''"""///>>>ZZZddd___\\\OOO???,,,### $$$(((((('''""",,,CCCDDD999 )))444NNN___UUUCCC+++"""OOOfff___YYYRRRTTT[[[JJJ777111;;;777)))%%%333666%%% ***333+++"""000IIInnn~~~kkkUUUGGGFFFKKKGGGUUUfffmmmmmmeeeTTT %%% +++999@@@666---333AAA999555GGG```fff```NNN888''' 555===<<<///((( +++NNN^^^mmmpppiiieeeVVVAAA---333222""" ''' 888<<<333!!!%%%(((555JJJNNNEEE((( LLLhhh|||{{{nnnhhhaaaKKK444---333777444### !!!###777KKK^^^kkkggg[[[NNNBBBAAAIIIBBBFFFKKKIIICCC999000 %%%;;;JJJVVVXXXUUUUUUMMMSSSbbbfff______LLL***###### )))FFFNNN<<<,,, 666VVVpppwwwggg___eee]]]KKK;;;:::>>>*** %%%)))### '''$$$!!!777>>><<<*** >>>dddtttcccMMM555'''###&&&111((( 888PPPccchhhbbbGGG???IIIKKKGGGIIIAAA;;;DDD777  222EEEXXXuuu~~~xxxaaaeeevvvzzzkkk___JJJ222...///%%%(((LLLWWWIIIAAA&&&$$$+++$$$ AAA\\\qqqsssccc___eee```PPP@@@888555'''---)))"""   '''(((%%% ===ccc~~~|||fffUUU???((()))  222NNN```YYYNNNAAA333:::HHHFFFFFFCCC;;;000 ,,,AAAVVVvvv}}}bbbQQQOOORRREEE(((  999HHHUUU^^^RRRGGG<<<...$$$&&&000)))""" &&&444111((('''///***###===[[[jjjjjjkkknnniii]]]PPP:::333!!!***%%%$$$$$$!!!###   MMMttt|||wwwyyyooo^^^CCC...&&&  ###&&& %%%222BBB@@@===666***///444<<<EEEMMM@@@!!!$$$GGGYYYkkk|||mmmWWWVVVcccSSS555 $$$999###  '''888JJJPPPTTTLLLHHHIIIBBB333'''$$$"""+++///@@@KKKMMMKKK222000AAA555;;;NNNYYYbbbaaadddgggZZZSSS@@@***'''$$$555===///+++***"""```wwwmmmkkkssseeeNNN<<<***!!!...222;;;DDDHHH<<<666///###444555---...,,,,,,333===HHHAAA%%% ***PPPjjjtttxxxrrrXXXJJJPPPZZZKKK111(((111   %%%222---888EEEJJJAAAJJJ[[[TTT???"""111888444GGGUUUOOONNN>>>888CCC,,, !!!555CCCWWWXXXJJJPPP[[[VVVFFF555 ***)))>>>BBB999,,, %%%ZZZwwwuuuiiiaaa```nnndddQQQ===''' %%%111;;;KKKZZZhhhdddRRR777 !!!222000777444000+++(((===BBB333 ***JJJeeeqqqvvvxxxnnn]]]DDDCCCGGG???222&&&###111 &&&*** !!!+++---777CCCHHHKKKNNNTTTQQQ<<<"""///GGGOOONNNXXX[[[OOOEEEGGGBBBAAA444###666PPPHHH111666>>>>>>///!!!&&&&&&999888111 :::cccmmmcccYYY[[[nnngggNNN<<<""" ***UUUnnnlllgggSSS000 000000:::NNNCCC,,,$$$888;;;111(((???VVVgggqqqmmmeeecccWWWBBB222   (((///'''***$$$%%%...(((444888:::KKKbbb^^^AAA222666222...:::OOOcccnnniii^^^XXXSSSOOOIIIFFFCCC999)))AAAEEE---###)))    !!!EEE]]]cccZZZYYYkkkcccFFF,,,III^^^aaaSSS;;;$$$ ---,,,;;;___]]]@@@///777111'''  ###***<<<QQQ^^^kkktttXXXHHH===888((( ''' '''%%%000333### '''???LLLBBBHHHccccccNNN:::<<<CCCBBBRRReeexxx|||ccc[[[]]]YYYJJJDDDFFF555 444???777"""   >>>PPPLLL[[[iiiiiiMMM***222HHHOOODDD===444222>>>???KKKccccccQQQCCC666---"""  &&&!!! $$$:::LLLVVViii{{{{{{___HHH)))   &&&000777000  )))EEESSSRRRSSSVVVUUUUUULLLDDDMMMFFFLLLggg}}}jjj^^^RRRAAADDDDDD<<<...---...111 ,,,!!!000===TTTcccfffWWW???%%%===<<<===HHHCCC,,,&&&GGGWWW```hhhcccWWWVVVVVVEEE222  !!!***888???((( ***444EEEXXXfffsss~~~^^^===%%%  """000AAADDD999'''&&&///...###"""222GGGQQQdddggg[[[PPPOOOQQQOOOVVVOOOVVVqqq~~~nnnhhhmmm\\\III777333666000!!!    ###666!!!;;;SSSXXXKKKGGG>>>444 %%%111DDDLLLDDD333666KKKYYYbbbkkk]]]XXX___\\\PPP999$$$""",,,---555<<<===BBB222---222<<<NNN```fffpppuuuyyyzzzaaa>>> ###------ ###)))$$$666NNNOOOAAA777<<<BBB===;;;BBBDDDOOOQQQIIIOOOPPPXXXqqqqqq]]]III===DDDMMMVVVaaalllssslllRRRJJJVVVRRROOO???### '''***""" """  ###===TTTKKK888444000))) 444JJJDDD@@@:::BBBEEEIIIPPPVVVcccnnnaaaWWWJJJ777))) ???AAA<<<444&&&...<<<FFFOOOIII======JJJUUU]]]]]]cccnnndddPPP333!!! """---+++,,,''' $$$+++---???JJJKKKJJJLLLTTTWWWLLLLLL]]]jjjkkkllliiihhh```jjjwwwsssYYY@@@000777DDDYYYooommmeeeQQQ@@@BBBEEEMMMMMM>>>!!!666444###   ///999===333'''''':::JJJEEE>>>???BBB===>>>NNNZZZ___\\\RRRPPPQQQ@@@111***+++///555___]]]NNN444$$$888LLLPPPOOOPPPPPPWWW```TTTNNNSSS___QQQ+++  !!!&&&444+++###%%%$$$333>>>???BBBHHHTTTbbbhhhaaa]]]jjjuuukkkttt|||~~~zzzlllWWW@@@111111BBB^^^oooeeeTTT@@@666>>>GGGRRRNNN@@@(((///777???===111!!!  ,,,)))"""&&&...---'''&&&!!!""" (((BBBLLLEEEAAALLLHHHAAAEEEUUUaaaYYYOOOGGGLLLRRRMMM>>>888JJJZZZ[[[sssfffMMM,,,)))>>>MMMYYY```hhhdddbbbkkk___MMMNNNSSS999"""((('''111===:::777444***   %%%111666666BBBGGGXXXeeeggggggqqqwww{{{ttteeeUUUDDD---!!!<<<\\\```VVVCCC+++%%%--->>>LLLFFF;;;---<<<FFFJJJ>>>(((###---+++&&&...,,,"""******(((+++&&&&&&...&&&(((&&&;;;FFFGGGPPP]]]WWWXXX\\\^^^cccbbbYYYMMMLLL[[[^^^RRRSSShhhvvvuuuqqq^^^LLL555---999GGGYYYiiippplllpppxxxvvvYYYIII@@@%%% 555>>>DDDGGGAAA>>>222###   +++...&&&---222000<<<HHHUUU[[[dddrrrttt```SSSOOODDD666KKKEEE:::,,,000BBB:::""" """333... %%%!!! ...AAAAAA555 )))666--- ...777??????444111777;;;555,,,&&& <<<SSSfffnnnllllllggg\\\YYYaaajjjeeeZZZjjjooofffkkktttvvvttt^^^WWWNNNKKKLLLRRRYYYeeemmmpppkkkwwwiiiOOOCCC,,, AAAOOOSSSMMM???333 )))666*** $$$;;;GGGEEE;;;000......999EEELLLfffyyy~~~xxxqqqqqqfffXXXEEE888 !!!%%%+++444333 (((      ***333))) """777777555555+++222DDDQQQOOO???:::CCCFFFBBB<<<333%%%###CCCWWWsss|||ooo___YYY^^^qqq~~~xxxrrrpppjjjeeeaaaCCCHHHLLL```sssxxxvvvmmmrrruuuvvvrrrhhhUUU000>>>GGGPPPUUUCCC###,,,>>>GGGBBB+++  $$$777RRRccc]]]NNN===...///333888KKK```lllwwwmmmiiizzzjjjggg```TTT777   +++222555---333444111+++  (((:::>>>,,,  $$$888GGGVVVRRRHHH???@@@VVVYYYOOOPPPRRRMMMLLLKKKJJJ===%%%%%%BBBVVVuuurrrqqqkkkyyyuuueeeTTTKKKHHH999555LLLqqquuunnnvvvtttWWW444...???IIIYYYNNN444"""!!!555EEEOOORRRTTTPPPDDD333 +++333>>>KKK^^^llleeeTTTFFF===:::999AAALLL___sssuuufffccctttzzzlll^^^OOO...///DDD@@@...---;;;@@@666...  $$$999EEEDDDGGGHHH---     222MMMWWWUUU[[[HHH;;;PPPcccggg```SSSUUU\\\\\\bbbTTT888$$$!!!@@@[[[{{{oooXXXJJJFFFIIIBBBYYYwwwlllyyyoooMMM+++ 555IIIWWW\\\^^^QQQPPPZZZeeelllddd^^^```YYY@@@''' ###222CCCNNNWWWaaaaaaeeefff]]]TTTSSSPPPOOOUUUUUUfffvvvvvvtttrrrooo}}}qqq\\\EEE((($$$666===555111EEEVVVSSSGGG:::///,,,&&& ###222OOO]]]XXXXXXRRRCCC666"""+++$$$***!!!###***...444$$$ BBBMMMOOOQQQIIIOOOdddtttuuugggXXXYYYkkkrrrlllXXX@@@;;;888 DDDbbbzzzaaaVVVZZZVVVlllttt~~~tttuuugggBBB111LLL___ttt{{{{{{yyywwwrrrhhhPPPDDDAAA+++ (((===JJJVVV]]]ccchhhgggfffddd\\\YYY]]]ZZZWWW___mmmuuuyyy|||~~~mmmPPP555###))) """'''111BBBOOO^^^pppgggJJJ999666,,,   ###EEEhhhuuuppplllaaaPPPBBB###$$$...444111 ,,,>>>AAAIIIWWWIII(((666JJJFFFRRRYYY\\\qqqzzznnnfffccchhhxxx}}}nnnaaa\\\TTTCCC*** """%%%***BBBlllrrrdddlllgggxxx}}}yyyvvvxxxooocccddddddkkk```000EEEccc{{{ooommmaaaVVVDDD&&& ###:::GGGUUU___aaannn{{{qqq___[[[SSSOOOVVVXXXdddnnnmmmqqqbbb==="""!!!555... ,,,GGG]]]nnnwwwNNN<<<333  """  ###QQQxxx~~~lllNNN;;;)))<<<@@@&&& ---GGGFFFOOO___YYYDDD///%%%"""999PPPUUU]]]dddeeelllpppjjjbbbaaakkkuuu{{{vvvggggggXXX:::"""''',,,999JJJNNNRRRLLLNNNnnnmmmllllllhhhvvvtttzzz}}}nnnWWWNNNSSS]]]ZZZDDDIIImmmrrrrrrrrr```FFF/// 666CCCSSSfffvvvxxxbbb\\\WWWPPPWWW]]]hhhmmmooooooMMM000!!! """---444///((( ***HHHeeeyyyUUU<<<555 """!!!%%%444QQQrrr}}}UUU:::%%%  666888%%% 000AAAQQQ[[[TTTMMMCCC888///888III___XXX]]]ooohhh\\\YYY\\\___\\\lllrrrddd[[[TTTMMM;;;)))444FFFXXXhhhxxxooofffkkkvvviii^^^gggPPPYYYsssyyypppllllll^^^FFFJJJTTTVVVHHH&&&  333WWWoootttqqqkkkWWWAAA((( 111JJJTTTeeesss^^^ZZZWWW[[[dddqqq{{{\\\BBB,,,###!!!)))777222000(((>>>cccwwwvvvTTT555&&&   ((($$$(((>>>NNNeeennnLLL===...    000AAAIIIIIICCCFFFHHH???111222DDDKKKVVVYYYVVVKKKGGGQQQ[[[RRRSSSTTTDDD@@@===999>>>@@@NNNXXX]]]lll{{{zzzzzzqqqRRRIIIPPP999RRRiiizzz{{{wwwrrreeeWWWIII>>>999<<<HHHLLL555  '''BBB\\\ttt{{{hhhOOO777  ,,,DDD___uuueeeaaa^^^hhhtttyyynnn]]]OOO555$$$555777000 %%%EEEaaaooogggUUU>>>$$$ $$$((( +++>>>JJJfffeeeSSSKKK999::::::888+++---... %%%333AAANNNSSSKKK:::000333BBBNNNMMMHHHKKKKKKLLLBBB000''''''&&&...???KKK^^^^^^cccqqqyyylllNNNEEE444,,,555VVVhhhooolllbbb[[[OOOJJJ000)))...///555))) &&&""""""888GGGUUUsssWWW,,,;;;aaa|||mmmdddiiixxxvvviiiTTT@@@---$$$888666 000QQQ]]][[[@@@+++&&&444555'''"""!!!(((777FFFHHHgggfffXXX\\\]]]QQQIII777888999+++&&&CCCQQQWWWTTTEEE888---888GGGOOOQQQLLLCCC:::)))  $$$<<<HHHTTTeeerrrxxxssssss|||pppPPP999222!!!555JJJ[[[^^^ZZZMMMEEEHHHKKK,,,"""(((333,,,$$$ !!!---555;;;777999NNNXXXaaawwwOOO:::___qqqzzzhhhccclllyyyxxxuuukkkbbbQQQ@@@111!!!:::KKK888 (((777>>>444 ###111@@@FFF///(((@@@PPPOOOaaarrrlllkkktttwwweeekkkhhhXXXUUUOOOGGG===--- 888FFFVVV___PPP===///222<<<HHH@@@000 (((===HHHRRRggg|||}}}[[[WWW```hhhdddlllyyy~~~hhhFFF222!!! ###&&&BBB@@@BBBCCC???777555<<<BBB+++'''555777--- +++===CCCCCC<<<777CCCIIIXXXhhhmmmyyyJJJHHHbbbeeeeeelllrrr\\\```iiittt}}}xxx~~~yyyqqqjjjkkkkkknnneee[[[LLL>>>888AAAMMMOOOGGG'''   000===JJJHHH111111III^^^ZZZWWWUUUVVVbbbooo{{{eeebbbgggaaaZZZOOO888))) '''666BBBRRR^^^NNNBBB@@@444333000 """000DDDQQQ\\\uuu~~~~~~rrr[[[PPPOOOJJJCCCGGGEEE<<<---  333@@@EEE555***///222***---***'''###+++;;;:::999444+++PPPpppnnnbbbQQQCCCSSSZZZgggpppxxx}}}zzz;;;AAALLLLLLPPPaaasssxxxllljjjaaa[[[^^^iiixxxlllggg{{{yyymmmdddgggooolllgggqqq}}}{{{rrrbbbSSSLLLOOOQQQVVVCCC;;;>>>777222***AAAHHHJJJPPPHHH555!!!444JJJSSSTTTJJJ>>>---000FFFfffjjjhhhppprrrhhhXXX:::000??????AAAIIINNNKKKKKKQQQAAA222((( 111EEEZZZhhhxxx{{{ooo\\\TTTHHH@@@777+++&&& &&&CCC444 '''""" ---DDDCCC>>>777(((CCCeeesssiiidddfffttt|||iii--- !!!---555>>>OOOeeegggUUUWWWhhhcccTTT___lllqqq]]]WWWdddccc]]]___ppp{{{qqqeeetttsss[[[QQQQQQOOOXXXZZZ]]]```OOO??? &&&777RRRbbbYYYOOOGGG999***///KKK^^^VVVEEE666###666UUUzzzzzzpppDDD <<<LLLFFF??????888AAAKKKSSSIII777)))%%%555OOOeeeyyyfffOOOKKK@@@444,,,!!!444((( :::111)))((( 666TTTqqqqqq<<<&&&777CCCGGGZZZYYYQQQTTTeee]]]HHHMMM]]]]]]]]]bbb```\\\]]]jjjjjj^^^VVVVVV\\\bbbkkkhhhHHH,,,  ///AAAQQQcccXXXGGGLLL>>>444???YYYhhh\\\OOO:::'''""",,,999VVVrrr@@@ >>>TTTHHHJJJIIIEEEEEEFFFOOOFFF111 &&&JJJgggvvvsss{{{```GGGEEEBBB555''' ///888,,,555ZZZnnn~~~|||cccBBB  (((,,,:::QQQVVVPPPOOORRRWWW```XXXAAA777MMMYYYnnnwwwvvvvvvrrr^^^RRRVVVYYY[[[EEE$$$ """---:::@@@>>>AAA@@@KKKEEE>>>OOOUUU^^^aaaWWWQQQGGG@@@BBBPPPjjjjjj333 ...NNNNNNTTT___bbbSSSRRR]]]OOO''' (((MMM```eeepppxxx{{{yyy[[[CCCCCCFFFAAA111***$$$ 111IIIGGG...666NNNnnntttaaa@@@)))###)))666)))   ###555666<<<OOO[[[QQQOOOKKKQQQ[[[OOO666***???dddqqqWWWOOONNN777 %%%///000###(((888===888888JJJWWWfffjjjgggeeebbb]]]^^^ppplllAAA ===RRRaaammmkkk\\\\\\ZZZEEE''' $$$%%%111CCCJJJ\\\uuuyyyvvvsssmmmppp|||zzz]]]MMMUUUWWWTTTJJJBBB,,,---///'''===KKKHHH+++  ###EEEYYYhhh|||{{{nnnNNNFFFRRRQQQDDD888===AAA((( ***333???EEEQQQZZZ^^^RRRFFFSSSIII111///HHHqqqlllUUU;;;!!! !!!!!!///333+++(((<<<bbb{{{qqqPPP+++,,,JJJ[[[bbbjjj\\\OOODDD777///  ###333===111***333LLLeeeeeeUUUVVV[[[```iiikkkXXX[[[ooonnnbbb[[[SSSLLLMMMLLLAAA777:::;;;555555;;; &&&999RRReeeqqqqqqooommmiiiYYYQQQ[[[YYY===---###&&&333GGGRRRVVVfffooobbbPPPIII:::...333AAA^^^qqqUUU--- ))),,,555SSSuuusssKKK)))  %%%DDDNNNOOOZZZ^^^SSSFFF888222%%%""" ***222'''###666999???:::>>>DDDOOO```dddeeehhhzzzzzzoooiiissstttdddLLLEEEPPPHHH444'''...222AAAIII```vvv}}}uuuqqqkkkgggcccOOODDD===...(((999HHHXXXaaahhhvvv|||vvv[[[999+++......,,,BBBbbbrrrSSS...  ===WWWmmmpppIII///---,,,&&&""" :::>>>///777GGGGGG<<<777555...000444999LLLWWWVVVGGG777...***$$$'''000222///)))"""###''')))...@@@bbbhhhmmmsssmmmRRRMMM\\\RRR555&&&===VVV[[[rrrsssYYYZZZqqq|||oooaaaPPPGGG777,,,<<<NNNdddffflllzzzxxxlllRRR000///333)))666RRRsss{{{RRR,,,  %%%PPPggg|||qqqIII444555//////***  555DDD>>>RRRmmmrrrggg\\\XXXBBB((('''444666:::>>>;;;111333111***<<<@@@999===@@@222"""  ---OOO[[[aaagggwwwggg\\\^^^GGG'''888___iiiVVV555111TTTzzzoooeeePPPIIICCC333<<<SSSgggiiioooyyydddOOO<<<***,,,111'''///KKKgggwwwVVV---  888WWWiiiwwwMMM333***...222,,, (((%%%???KKKaaaxxxYYY222888IIIKKKPPPTTT[[[[[[SSSNNNHHH;;;...###'''222000'''  444DDDVVVbbbhhhuuuvvv{{{}}}gggWWW555$$$OOOooouuuMMM)))"""???ccc{{{llljjj```QQQMMMDDDCCCRRReeekkkkkkbbbIII999***&&&DDD^^^ooojjjDDD$$$###CCCgggaaa<<<111666+++ """>>>VVVnnnzzz~~~\\\666444LLLUUU[[[jjjlllccc]]][[[NNN555)))+++,,,///:::333 &&&:::OOObbbhhhnnnjjjsssdddKKK'''LLLrrruuuUUU111,,,LLLrrrssslllmmm}}}yyygggZZZUUUOOOSSS^^^aaaYYY@@@---((( CCC[[[hhhqqqkkkOOO<<<999999***(((]]]yyyYYYLLL:::  ...FFF___sssddddddrrrUUU444((()))!!!...:::OOOPPPZZZnnnjjjddd\\\VVVOOO<<<+++...+++'''--- '''DDD\\\eeelllrrrvvvwwwlllMMM;;;$$$333aaatttaaaKKK000111@@@UUUqqqrrr___bbbrrr~~~kkk]]]```^^^VVVOOOBBB*** 777IIIWWW^^^ooosssaaaXXXZZZQQQ>>>&&& ---BBBhhhxxxWWW666777FFF[[[dddQQQQQQbbbbbb]]]OOO444+++!!!$$$222;;;HHHQQQ^^^oooooobbbXXXXXXQQQ===222+++###"""   555HHHNNN^^^jjjpppyyy~~~xxxsssVVV???444!!!GGGaaattt}}}mmmeeeeeeQQQDDD;;;444CCCZZZwwwkkkfffdddmmmqqqzzznnn```\\\LLL888+++000AAATTTggg{{{qqqllleeeWWW222###RRReeerrryyyTTT...###'''555<<<@@@IIIDDD???@@@===FFFFFF555######///AAAGGGRRRccciiimmm___WWWVVVQQQBBB///###  &&&%%%""" ###333GGGWWWddd{{{pppYYYBBB///  )))HHHkkkxxxkkkccc]]]ZZZ\\\TTTJJJ444###>>>VVVbbbbbb\\\]]]VVV]]]llluuulll___XXX===***EEE___yyy|||uuuyyyrrrZZZAAA'''@@@rrrhhhHHH$$$+++444000)))$$$###000???GGG@@@---'''%%%+++999KKKUUU[[[cccaaaeeeaaaZZZTTTMMM===000,,,%%%""" %%%)))111,,,"""&&&777EEEWWWiiikkk```HHH$$$  666VVVsssoooXXXPPPJJJGGG???===>>>999333222777555999FFFMMMEEEMMMhhhuuufffrrrzzzmmmbbbOOO000444YYYtttwwwoooxxxsss]]]LLL:::444]]]wwwhhhWWW444 111+++,,,===PPPYYYOOO===,,,333DDDWWWiiioooooohhh\\\cccggg[[[NNN;;;222...,,,''' ???CCC,,, ###...@@@BBB999666)))   ###GGGeee}}}uuummmvvv[[[===///222333%%%$$$&&&''')))$$$((()))%%%!!!&&&111,,,CCCccciii\\\ZZZkkkzzzvvv\\\>>>&&& )))TTTrrruuuqqqxxxuuulllZZZ@@@!!! 666QQQnnndddDDD***  ,,,???QQQ^^^WWWIIIDDDHHHNNNcccsssssstttwwwjjjhhhhhhUUUJJJCCC:::222'''!!!999HHH/// &&&---%%%  %%%000---$$$)))555AAACCCYYYwww|||jjjZZZlllvvvnnnGGG&&&######!!!)))...%%%+++GGG]]]bbbYYYSSS]]]mmmjjjTTT222 GGGpppvvviiisss|||pppdddMMM666--->>>PPPcccqqqiii==='''  111???EEERRRNNNQQQaaaeeecccfffhhhdddnnnlll___PPP@@@DDD@@@000  ***444111///$$$  """###---444@@@CCCNNNJJJ>>><<<===LLLZZZeeecccrrr|||vvveeehhhnnn___OOO777)))$$$&&&((( """$$$,,,===555###  222OOOZZZ\\\aaaiiiccc]]]WWWQQQ333 777\\\qqq}}}||||||{{{kkkooovvvtttkkkVVV888 >>>RRRZZZjjjkkkssskkk;;;&&&  !!!===BBBMMMYYYfffrrrvvvsssqqqmmmnnnuuu~~~ggg[[[LLLBBB111 ///---(((222***   )))AAAXXX\\\```aaaaaa[[[UUUWWWdddnnnmmmooozzzyyyeeeXXX___SSS<<<777888444,,,,,,111@@@MMM=== ///GGGXXX```yyyppp]]]QQQLLL777!!! 222NNNUUUiiiooorrrzzzyyy}}}uuu\\\???,,, 000KKK^^^qqqyyyqqq{{{|||ZZZ:::(((  444MMM___vvvyyy|||}}}xxxcccWWW555'''>>>'''  %%%JJJdddpppuuuvvv}}}~~~}}}~~~tttzzzuuuaaaeee^^^GGGAAABBBAAAAAA;;;???KKKIII=== ///HHHcccsss}}}vvvqqqdddKKK>>>999:::--- ---@@@JJJaaaooovvv|||nnn[[[OOO@@@,,, ---KKKOOOXXXpppxxxvvvwwwYYY;;;!!! 111---"""  ...HHHcccwwwrrrYYY;;;  $$$%%%JJJeeelllvvv~~~dddTTTLLLGGGDDDOOOWWWSSSKKKBBB222$$$"""!!! 000NNNqqq{{{tttrrreeeKKKAAABBBFFFFFF/// ###???SSS[[[hhh|||eee555 888RRRRRRPPPZZZmmm}}}bbb;;; 333AAA<<<222...&&&'''(((+++EEEcccwww~~~cccAAA +++JJJVVVddduuuyyyvvv~~~jjjWWWPPPIIILLLYYYbbb^^^KKK333!!! '''///HHHooopppVVVOOOMMMMMMPPP111 )))LLL\\\jjjyyyUUU444 )))CCCNNNRRR```ooowwwWWW/// %%%999>>>JJJTTTOOOOOO???''')))000???<<<333666KKKlllddd444 &&&:::DDDKKK___jjjvvvuuusssttt}}}{{{ttt}}}qqqdddNNNCCCMMMUUU[[[TTTJJJ777 555555AAAfffuuudddXXXNNNBBB222;;;```wwwuuuRRR...000JJJ]]]mmmooo{{{vvvOOO((()))BBB\\\aaa^^^iiirrrgggIII888<<<???IIIHHHHHH[[[uuuqqq???  ;;;GGG;;;DDDUUUfffqqqxxxxxxcccaaaccclll~~~~~~www{{{vvvpppeeeDDD:::OOO]]][[[ZZZPPP444))):::GGG\\\gggTTTFFF666  444\\\}}}qqqYYY;;; ---CCCbbbhhhmmmxxxmmmrrrjjjEEE$$$!!!444WWWrrr|||zzznnnLLL>>>FFFRRR]]]___[[[wwwrrrJJJ&&&  @@@JJJ<<<IIIXXX```kkkwwwvvv\\\OOOSSSaaa|||~~~mmmnnn}}}rrrhhhTTT;;;444III^^^fffeeeKKK,,,;;;LLL```}}}{{{dddNNN666$$$  333XXX{{{tttPPP*** 444???VVV___tttrrrccc___cccpppPPP;;;%%% +++===UUUuuupppRRRDDDMMMZZZppp|||xxxsssYYY444 $$$<<<IIIIIIMMMXXX[[[^^^tttzzziiiUUUMMMWWWkkk|||wwwmmmiiiddd[[[\\\fffooo|||yyywwwuuupppXXX333"""###)))AAA[[[YYY<<<!!! :::WWWooonnnXXXHHH222 333OOOdddqqqzzzpppYYY???&&& (((===FFF\\\ppprrr^^^]]]aaa{{{^^^@@@--- 444MMM___xxxqqqWWWOOOTTTddd}}}lllFFF'''  +++:::EEEGGGIIIVVVbbb\\\zzzgggMMMGGGOOOeeeppphhhTTTHHHOOOPPPOOORRRVVV```lllmmmbbbYYY@@@888:::'''  """111GGGqqqvvvgggWWWBBB%%%///777AAA[[[ooovvv~~~kkkXXXDDD*** 333FFFRRRsssyyygggppp{{{RRR333  ,,,AAAYYYmmm|||jjjVVVWWWWWWiii~~~zzz{{{[[[BBB555333$$$ ###,,,999???<<<MMMaaannnrrrqqq```MMMDDDOOOTTTQQQEEE444---999CCCEEE;;;IIIYYY]]]WWW@@@''' ###)))...IIIOOOWWWkkkvvv```RRRDDD444 ...JJJ]]]oooyyyWWW<<<,,, >>>VVVeee|||XXX...  +++===HHH___rrr}}}iiifffhhhfffnnn{{{{{{uuusss{{{xxxggg___ZZZCCC'''  !!!%%%444???AAAWWWnnntttttttttgggJJJ444555..."""$$$!!!222777...666???HHHPPP333 ***666333>>>TTTnnnuuu}}}ooovvvzzzxxxeeebbbVVVHHH...###IIIhhh~~~xxx}}}pppJJJ''' BBB[[[vvvdddEEE!!! %%%...BBBWWWiiizzzvvvnnnjjjrrruuuwwwwwwrrrkkkhhhfffmmmkkkbbbsssnnnJJJ999  !!!111>>>PPPhhhxxxeeeIII)))"""!!!!!!"""'''$$$***((( %%%===???CCCWWWsss~~~zzzxxxmmmeeejjjkkktttpppmmmkkk]]]MMM/// >>>aaaoooyyy~~~uuu{{{yyy{{{vvvbbbeeerrrNNN&&& IIIhhh|||xxxhhhWWW888  (((AAAXXXcccoooooorrrnnnppppppjjjddd[[[OOOGGGNNN[[[```aaaiii}}}```KKK999###&&&'''&&&   ===LLL___www]]];;; '''   444888>>>III[[[{{{pppmmmdddfffpppuuuggg```bbbddd^^^QQQEEE--- 666EEEEEE>>>AAAHHHAAAGGGZZZYYYYYYaaa```jjjsssPPP999%%%'''XXXpppVVVSSSUUUXXXYYYHHH222''' 444LLL^^^gggllluuu|||uuuooogggUUUAAAGGGDDD999888@@@PPPaaaaaammmzzzsss\\\EEE333555111'''...222666444444444(((  444XXXpppmmmXXX000   ***111<<<AAAHHHffftttmmmlllpppdddUUUUUUSSS```pppyyyhhh[[[]]]VVVCCC,,,$$$  )))666;;;FFFUUUddduuuyyybbbTTTJJJ999BBBjjjuuuUUU>>>>>>DDDPPPbbbVVV???888111)))### 000???RRRWWWXXXtttvvvpppcccMMM===000000$$$!!!;;;NNNXXXQQQbbbvvvdddTTTRRRSSSLLLIIICCC555000<<<:::///(((XXXoooNNN)))  &&&666>>>DDDIIIPPP^^^cccTTTLLL>>>///333GGGUUU```jjjbbbbbb```KKK555   +++AAAWWWkkkxxxuuukkkcccQQQPPPOOO555!!!UUU{{{{{{^^^>>>,,,///:::SSSaaaXXXIIIJJJIII:::...%%%333>>>???XXXooogggJJJ222///)))666IIIEEEQQQlll|||uuujjjgggdddWWWQQQJJJ555111111444555$$$+++RRRxxxoooZZZ<<<222BBBGGGFFFHHHLLLEEE;;;000%%% '''DDDXXX\\\iiimmmfffcccPPP666  888WWWfffgggaaaYYYNNNCCCFFFJJJ555###HHHjjj}}}qqqIII###222GGGZZZXXXYYY```UUU777(((!!! ***666EEEXXXVVV==='''$$$!!! 777CCCKKK[[[iiixxxvvvpppgggaaaOOOJJJ999+++!!!'''"""'''HHHWWWppp}}}zzzgggBBB''')))???EEEEEEAAA;;;...'''!!!$$$...FFF\\\dddnnnxxxtttmmm```GGG&&&  !!!444QQQ^^^[[[QQQIII>>><<<@@@666'''+++AAA[[[rrrkkk555 ###---FFFWWWbbb]]]WWW>>>((( 666IIIFFFAAA555)))888NNNbbbjjj{{{qqqjjjcccdddWWWOOO<<<&&& 111:::PPPnnn~~~yyyYYY;;;+++BBBIIIAAA---&&&""" $$$+++888CCCIIIYYYiiisss{{{{{{kkkRRRCCC///***(((   111AAAOOOSSSJJJ???000 $$$999^^^{{{yyyUUU333 !!!333JJJ___[[[YYYUUU@@@+++***;;;:::---&&&+++  """>>>bbbuuuwwwhhhcccccciiihhhZZZ>>>&&&((($$$ !!!333OOOrrryyyyyy```444 ...BBB999///...&&&)))444===MMM^^^gggwww~~~lllYYYRRRMMMLLL@@@,,,///111 ((( +++,,,222<<<;;;111 (((LLL```kkkuuu^^^EEE111&&&...===\\\jjjmmmfffWWWEEE111 ###'''   +++]]]ssseeekkk|||kkk???''' ...,,,!!! %%%>>>``````444  '''"""!!! %%%///<<<OOO^^^bbbsssxxxmmmjjjhhhcccNNN111,,,---@@@CCC&&& '''222*** ###""" (((>>>RRR```vvvSSS???111))))))!!!&&&666<<<TTTmmmwwwiii___VVVBBB%%%  """  ///[[[|||rrrlll|||tttHHH444***"""(((666&&&  222PPPjjj}}}|||___>>> 222555:::SSSdddfffkkkxxxyyynnnssswwwmmmQQQ...(((888EEE;;; 666888"""###   BBBPPPfffvvv{{{gggCCC222444///'''***???AAAPPPdddiii]]]YYYRRR666 $$$&&&  ///LLLrrr~~~vvvrrrmmmssssssqqqqqq[[[MMMBBB444(((###&&&666---)))???RRReeewwwooonnn^^^EEE$$$  ,,,@@@HHH\\\```WWWVVVbbbkkkiiiooo}}}yyybbb:::444IIIOOO>>>###  (((===999***&&&%%% :::\\\^^^]]]]]]ffflllPPP>>>DDD===444&&&)))444===QQQcccnnngggXXXGGG555,,,...333333&&& $$$CCCeee{{{{{{sssqqqqqqpppssssssxxxuuupppiii\\\QQQ888!!!"""***,,,...---+++))),,,000???^^^xxxyyyiiiaaaSSS>>>$$$  EEEVVVTTTFFFEEEGGGMMM[[[aaaqqq|||xxxWWWSSS]]]PPPCCC000 666IIIEEE///"""///,,,   FFFaaa\\\PPPJJJOOO}}}hhh^^^XXXYYYVVVFFF000---555BBBTTT```kkkwwwjjjQQQ<<<666+++ ///666888---  $$$&&&111GGGddd|||zzzvvvtttvvvtttxxx{{{}}}nnnZZZ999 )))'''***...111222...000666GGGgggqqqfffRRR???)))  111EEEBBB???CCCIIIHHHHHHXXXjjjtttsssiiidddLLLCCC:::888...!!!222888FFFOOONNN444///777*** ,,,KKK\\\bbbRRRFFFMMMlll~~~llllllkkkpppvvvXXX???999>>>EEEUUUcccnnnwwwrrrdddHHH777&&& +++333444/// 333444999HHHVVVbbbuuuuuugggbbbaaabbbdddeeellltttwwweeeSSS444 %%%---+++$$$))):::NNN___xxxrrrhhhLLL111  """444BBBLLLKKKJJJ???KKK^^^fffxxxyyyppp```MMMNNNUUUNNN666---CCCKKKKKKQQQPPPJJJFFFDDD555222KKKOOOOOOTTTYYYTTT___|||uuutttsssgggJJJCCCCCCEEESSSaaajjjqqquuueeeGGG'''  '''(((&&&!!!"""(((''',,,222>>>DDDFFFVVV```^^^ZZZMMMCCCAAAIIISSSkkk{{{yyykkkZZZQQQHHH444"""  %%% <<<\\\lllzzzrrrbbbBBB  ---===BBB===222888PPPeeerrrxxxeee^^^[[[TTTLLLNNN]]]XXXNNNJJJOOOOOOWWWRRR222>>>TTTMMMDDDLLLccc______ppp{{{xxx|||```RRRKKKWWW```YYYXXX]]]fffYYY777  $$$)))  """ 000...)))333666555666???QQQ[[[WWWLLL<<<...&&&===WWWkkkwwwnnnQQQEEE::::::111)))### 555^^^rrrcccdddjjjTTT222 ###***+++///444CCCaaayyyzzz}}}bbbZZZ\\\hhhkkkbbbWWWKKKNNNOOOSSSdddYYY555***FFF^^^XXXHHHRRRhhhpppuuuqqqssszzzqqqwwwdddQQQbbblll^^^VVVDDDAAA===###  ###+++777===666<<<JJJHHH888777HHHVVVNNNBBB555$$$IIIdddmmmxxxlllKKK???666///,,,000+++   @@@eeeppp||||||jjj```lllcccRRRZZZdddLLL&&&+++:::BBBOOOiiiyyy|||kkklll}}}}}}fffSSSPPPUUUIIIKKK]]]^^^777,,,>>>PPPXXX]]][[[eeevvv{{{kkk___fffxxxllluuujjjYYY___```OOO===333$$$    )))+++ ///444???BBBIIIKKKGGGAAA;;;???>>>777000 ***HHH]]]gggwwwiiiKKK;;;000'''---+++   AAAXXXbbboooxxxxxxsssggg```UUUIIIAAAPPPgggYYY888''':::XXXgggeeevvvpppsss{{{qqq```___TTTAAADDDPPPLLL... $$$CCCQQQTTTNNN[[[eeerrr}}}yyyooo[[[MMMRRRfffvvvsss~~~\\\GGGNNNKKK/// """$$$%%% """)))"""---)))777TTTYYYHHH999???;;;!!! !!!111???OOOddd|||mmmUUU999...111...%%%((( ***@@@LLLOOOXXXffflllbbbUUUaaaQQQ999888JJJaaaOOO555>>>\\\fffffftttoootttkkk\\\]]]\\\DDD;;;333  ***HHH\\\\\\VVVYYYnnnvvvYYYEEEAAAKKK```vvv|||jjjOOO>>>AAA444 +++000;;;333### )))+++333PPPQQQ======DDD666222CCCOOOfff}}}yyy~~~sss]]]EEE555666!!!///:::>>>000'''***666BBBJJJOOOFFFJJJQQQXXXTTTXXXeeeWWWFFFEEEDDDIIIPPP===777JJJXXXuuu{{{mmmaaaRRRLLLQQQ^^^MMM555  ...???QQQYYYfffgggvvvaaaHHH888;;;PPPfffrrrzzz~~~sss[[[KKKDDD999,,,+++>>>GGG222 """"""***++++++000777HHHIII555888OOO]]]lllwww|||hhh\\\ZZZcccggg\\\RRRGGG+++  999JJJHHHKKKGGG:::777HHH]]]]]]VVVHHHDDDCCCHHHPPPPPPVVVZZZTTTNNNGGGHHHBBB111;;;WWWwww^^^EEEBBBJJJMMMQQQUUU<<<  ---999CCCMMMPPP^^^jjjppp}}}{{{dddNNN<<<:::NNN[[[bbbmmmpppzzz___WWWSSSAAA111 222;;;000 !!!---&&&)))///%%%***@@@@@@:::%%%999UUU^^^hhhzzzuuu[[[FFF@@@IIIWWW[[[UUUIII IIIRRRTTTVVVRRRGGG>>>KKKeeeiiidddTTTGGGOOOQQQHHH???DDDRRRXXXPPPLLLKKK888$$$***TTTvvvQQQ444;;;IIITTTRRR[[[EEE  111HHHEEEHHHUUUWWWPPPUUUZZZ^^^rrrnnneee___RRRNNNLLLZZZfffggggggtttooohhh\\\@@@ $$$((("""  )))///(((,,,&&&&&&+++///444...&&&+++222:::***$$$222???NNNccciiiEEE;;;<<<CCCVVVYYYLLL555***aaaccc\\\QQQJJJJJJSSS[[[fffqqquuufffTTTTTTUUUIIIKKKZZZhhhiii^^^___SSS555  KKKllloooMMM>>>;;;AAAOOOSSSZZZPPP>>>%%%  '''@@@KKKCCCBBBDDDBBB333---333DDD^^^\\\JJJPPP^^^ccc]]][[[hhhttttttxxxhhhNNN!!! )))***###+++000444BBBLLLGGGHHH444(((/// '''***+++!!! ---CCCYYYnnnyyy|||pppYYYDDD666888===>>>JJJFFF333222KKKtttkkkYYYIIIFFFWWWiiipppvvv~~~{{{tttbbbUUULLLXXXiii{{{xxxvvv\\\111"""555???222''' 000XXX|||{{{jjjggg```XXXMMM???AAANNNaaafff^^^SSS:::+++444;;;>>>555000222""" '''DDDDDD666???\\\ooonnnaaaaaa}}}pppMMM 111,,,,,,888@@@???BBBDDD>>>GGGXXX^^^MMM444---)))  %%%PPPlllooofff\\\III''''''222===:::777/// """,,,;;;ZZZpppzzzqqqhhhRRRSSSqqqzzzhhh___[[[gggwwwuuu[[[BBB222:::JJJGGG;;;///(((  EEEjjjsssmmmxxxttt|||sssbbbRRRIIIKKKPPPHHH===???IIIbbbnnnooobbbHHH!!!...222((())))))  !!!###---OOOfffbbb```eee{{{tttMMM:::888FFF[[[jjjhhh___bbbeee]]]XXX]]]SSS>>>000 """000NNNhhhfffVVVGGG333///>>>555000)))"""***000666NNN^^^sssvvvlllsssooo___dddppp{{{uuu```^^^PPPAAAGGGUUURRRKKK<<<,,,"""   999YYYcccfffmmmeee]]][[[bbbNNN111&&&,,,:::...,,,888GGGccckkk[[[DDD--- !!! 777RRRUUU___nnnyyyyyyqqqPPP888NNNjjj{{{uuuaaaRRRJJJ===///  """###$$$+++BBBDDDBBBKKKJJJ???...(((...:::LLLHHH222&&& 888???HHH]]]uuuppp^^^jjjyyyzzzlllmmmgggSSSQQQRRRUUUSSSAAA''' +++KKKSSS]]]qqqgggOOOEEELLL===$$$ +++###$$$###555XXXggg[[[HHH555   111VVVaaaooofff___;;; )))IIIjjjiiiUUUMMMBBB//////===:::DDDRRRGGG000### ###222TTT___OOO777***""" :::GGGLLLaaa}}}~~~sssuuusssuuu|||~~~uuummmfff___FFF:::>>>444 (((AAALLLYYYkkkmmmXXX777,,,$$$$$$(((...OOOgggiii]]]??? +++HHHhhhvvvwww[[[DDD  ***IIIdddsssfffcccWWW888 ,,,DDDOOOWWWWWWEEE+++000RRR]]]XXXDDD333 IIIVVVccctttTRUEVISION-XFILE.gl-117-1.3.2/textures/clouds2.tga0000644000175000017500000020005410145416156015630 0ustar cedriccedric6V]E'8COczwiRUd^VA& *=:?@.?SWV]xpYLFR@*' #Upy]dyvr_IB/)4E_lxJ(6@* 6JbvrcjobK1,;;RN>0 '/8ZpvsdE%! :punaPYkj`A/>dyrB &Qv~i}}ukR1/:% $'+P{d7 /?ESZ: 7Rfr|~w[=,44+%#,"!/FVbcTG>" " )Pyl; 095N|~U<+%.   -DIUU9"7NW_ehsjTD4518GHGID* -66;CRjiPD'2Oi~i4 .9,ErlKD8"69$&1  1GYcR7#5;FRJLWdp[NJ=:5:LTV`WC# '?HIHXaWTG) /Sdi{|{uK.$6ert`PS<#?RB23?LSB:=1 2KYgh[>,14349AE>CBHMG?MY^bO<6DVhfSOYJ( *E]\b`VU;,J`ckfZYD46IVTY_]djiaXA03FOR[bcebL$#!*35((?Y[YQTYUM<& 7[|h_WB" $!.?LK3./>[^_w{xdZV[[KLaqghmsrrkVR^juuoklmfD!   6?.)Kc_c_V]Q8& 7iiK5'))%'2;/<^aeftpfylYbupRI^_`f`blv{trqzywvd=   5?EHSaY]ba_Q1DvyW*$*/01' 8SX]_cqnSSenjw}]JQQQQO\i~|yaD.@RPFDT^WKE-NmrJ 3<893')HKHVOEJDDNj_LIK;7I]ksN+  6FA8>Y^?%>LXYD%&>N]\C '4=MbtϹZB$ 1=6;LH2 ";QXV="0GZna:"2;7:ALbzvv}{ocQQT`kpͱbO/":6+'((9Wl]=50)I[_O4!3\YXczk^U[fmumVXf{œa? .LWNM@=49FQS;$ 80BTQXpeQS]oqojXWpǿ~`C$   (HXZ]SNQJ@OZD#'IXR?KfxWFQXliS^]e~Y= 0Pdpgba]NDXiT' 1UcT>C\uo^JEZbXKUpyǗ`7   )Troipp`T]cD4SQFGJYk{{oTAX[LN^tѽi3)'   Lfy}|m`I*GC=P^bnvz|}iOQL?I[mxc3 !1:4('% "BTpnJ% #7BL`rz{yaN9;FK\Yvжo?! <;97=NR9  !3PypZB /IJ]zzmp|zfI7=>AHIfͮlQ?+!EAHHSfW@+ )Hjp|jG%F]a_\ZVW^a[J6>8027Sпlib]R:+4TPXhj\@5- B`fpnY3%Ud]Y_g[ONHK=&'""%*BoϻŲ|kkotzkL* 7T\`}|[C-9W^WWF%YfgcasjVS@2/JZzvskufH1?TcnfO0 &DXM<,  $ 3f}wofQ6  (LT75=MG4 Ncoqh_O=)&,  %* !375$  '534S`RK_hejb\SRSC.""&:927?,/^nePKFHWf[VM5  493+ $9cyysd]U^a]`]I,*e}hUL>:=B1'1 5HJ=$'   " +Nyz}pWJH-)U{ǴcU\RC<-  7Ye]LFA:6#   4;^ʺ|`M?#-Kx`V\[N8#  Ajuqo]KNSMA4/% 0Jk͸mL((Du}l`\ZG7  .Opn_`kyrcZ?(->Qoְa:)2EeodfYUG,##  (+& Ibu{stybF0 @iƞyfU. /=BGNGA=0)  5QhpR70:^z`7/b z[A& *08NPH4@qygZP@7-!#^YI>/$C^cX0PwZ=8@ioYVSE-1Poyh[G+$)8=5%.)LYT@+ !A]mkQ4?jsQFJ\qqQOL=# 6RfĬ~wgY="/:+ "6KTN?7XtvcH1Gi|n][nmf8$!3Nm{þ|pS2+ -@A;B55f|s\F5!DZvsjqwfE  %>a{ce@#  -/2(0;3$#NkdM3((Bt}vjcB$"5=Q`yrb@f{wpV, !,'&69/   8kieM95<)7qzy{wxsdD(9RZ[[kt`F:IXouguxnYN;- 59'#!''2)!8bk_PE84>tsmblsxtT@>' J`ZSSUc\EBFF[or~pejc[UPH0&6  $)27:,  ,ITI[lQ7.) 5q_PMRXdrM1(&H`^RHEHLPKHB74C`sd^K)%37.+/  .9EV\TM?1  (Uqelx]>"`~X9+9C_uhU54M\[ZK0,2E6$0\eK+ % ?HN\er}v`D' 'Q_]eqaC3 Jgbt{U6"-$ 4HQLJ<%( =K0 .MirplwS7!18EMRfvoV/!(Olz[K70:;:3 *;<>=,    )FWoy_LB8 # %(8LN<#+^z~cN5('05" "99/,* (C_eijT5  0UesxqfJ+#1 7;' 4YmruĿbC&'*CUJL_Y1!"26+8\npïi@, (3>)  (&CZB,+ +()$ DZ^fy}x¶_6*$GajfneV?% ,>902)43($14IS^baksv~LQr^N?-794  7, !:A>Ec_ITq~\+!UxfXH5D>2$  !59:UbMTuxxpB =lğtU. 7E=/%      -=ETOU}yf\YckqoX,,E`̦mC ':/'20(*%  &=A>BWqbE) *6DC/%@NNdY2!#*;JKNPC"  $;:.8HNZaV; ,4;P]g~yT/#2:QcfebW3 ,- %:.,,% %/)-JVV[aQI-" '43+ .Ifw[B>;<7,  3<8&'6/.:?7/".) '6COM<3=ROBYzY8:JXZESTNEFNQXKGTio]= &]rpT7,!  %60..174?NTaxr^6 A\c]]J) ,03AD:69>AWjqhXXk[3 Ai|}^;     *:?<:DNSUbhj}ԳoC-($AX]O?! $-+-57+8@DcwVKbX6-& Qrv^;   *1=KMHUov|~~ḕzU6#+E^\@" +/-,)" +<DWrxrm_F+ &?VO=58 ,DFCDPcoqxwzzt_<++7LG>9(    ,7;90.6DY^`lpvlM5&+7-,6- 4?@FQqtitzohau~nY?0(:JNRM/,3'#*!    /@>3=dyrprlr~wXRD, 36* #(*7TsjLSMBAAF5AOamef`LC=;JXUDB2 '+0FO@*)F]D !/),31EU\dfqo_bjnss\JB=7, (Y{_IE:54, >]m]DOddaQB*  #0;:E^ijSILShhL!''/;ELXln]QQS`ZORQ:*  %UrE4@E3" 3VqiUeteZeL),9KI]vjrjR# !?PHTogN>;NWG3."  QzhB..2.Yzɫ}n|~k[eS* ,:ANZ|voN* " $(@ONZql[OP[L=.    >cwwiVF( )avșpe]Q5 0<=C[kxvX;458-!-:;IbeicjkqmUJ<&   6OR@6%KuˬtcOB2%"31/:Zx~g>0' !@E8/.2CMEEX`Y`xxhWB+ &*! F~ĬvM51-!.."+OѴiE) 5?FA=ITYTHGPZnrta6I|ƞsY;)$#! *& BlƬqG !;RaWRTOMQUONcuupn^4  5Rjv`A,%*- */++9A:+DboL( 9[lhe]PFBHTacmnonvjXK5(%% ;>2 :XucN$06 +HNTemjX+ !" 2HapxrL&  >fqpn^OKCE[kmmf`dgeWG8,&! ZbU<(SlTB&   4BYo~a?!'3&5>Rmg3 *@Xwrhg]NEQ[`VOYYSVSVE)&@o{u]<PwoR7% @YcvqY3 2( +?ou[*&IqqineZOIKG9>==A61=;>VivK%Jh|V/.K_thA*& %BpfI*+Og_XX[[RF:-    5O`qQ" Hf|{V+ ,OzR.*Om{Y.AGD@;EA4)'EicP/ EoneS(5f^? 3WjnoiV+  "@`zoSH9#&F^~j]?8[oj`z|hO(8FOQ^^A!2?O`bP=;- *7DQhkkiU- !:FPagg^8 )&0D[_^K>6*  )8ADFJ?5,JSV_Y1  #  7=QcaVJ9,& $ !   *0&   633P3/9LM;-);`zrM$ :[c[NA/ #''3.36BKOO@3:^wsS0$/;R]`bN<*&%#;DAFQ^fRCT_nuL4(@KIJ?;A;3!%I[XX[gi]ZinicT@1AF?1$  /fqyielilidcXS_V01B7-  &! %N}}yk]cg^H?>H\[G& ,I>!,#!  %58Gmxsxo\WQLA7.7KNC)#1A<# 4-  ! );;Rrp^XbaUIBDC8%%;J579=KC) )'8]G34MMB=3*/) ## ):HLR?' #$5"=/3.*" ,KMF.  &48GF?7      ;OH?.8IVc[F6!   ">8"%HMG:! 1QfcJ11& $447$$/5!"4KH7(IWR7  +J[I."(./%2ECPP>4.>ONSL) ;A=7 A]\G+ (C. /DPB('4<.3COSa_M?>L^`[T-9C=;>#+HRO)'@NK0 (>ITX8&&-@8 &CNP^jdUQ\lhZLC)>N3,7(*-6& 'EDJF:-  %-DYdgcXB*&:2!8KZdnrzoUF3#3?=/"% .ENON@AI5 *  '  $.:6@Tdmhnni_B30 &EZ`wnUC-&FUD./ 7O[b]ZLP^R5& >K4#&  !,#  :DE>Ka_cfcao}oX8 6EUrjO-  $:MWL<2 D`eh`^djkU9$FB8-4OUF@7  (5<22.!,@Sdi_ftu|pfsqa>  .EWeV, +=??LbZ>0;=$$3CS[iju~_B'C]c`Xbd]Z9   +JTF#4@99EPb}~t_XF% ##$Caq||qbD4/##.AXdP- #:><84BXnjSF8- (Ue[I:4.;2'+?M[iuqooU2#0Jblusu_?#-KfrgUJ> 4FR_aK# -32>@2*';^}pW?)),0OXA(" /Ykhkkjh[7(8>Thwy{lT5# ,0AcuvgQ97?HVaZ3,A31E@35:OwsnZE'-9BJD1 'Fhgi^Yc\=/C][RR^v{maiP6%!"  1.3Yn[kvhT: 0>ITlqT<@B0013=LcxdNLF4( .JM>.#.NQRNFJB:=VbXICG\slL>F8$",0)*&'-2FJ>MjonjdU=$  4FSdytWFF?622:Ha}ѹlSOOE9.! 7VV8 !8C?>-#,-0>909NTRe}ȵrbXFJdcH1+$;ON6  ).-"-494%&,,'' * (TR-!'+DirrkWF;/'1LU^j}|jH74,A`hN7)' ";AEXlqmpj^cc>%"8KSQ?2/-/$ 979$ 9H9,     :N[S3+=YQJOJ@?]q^B0 D_caTRWM@..<_YO6  +.%7GC-#   );?* :@;'!/8;7&'HXk~}p_YRW_li[C   +;UktT+  +3' &EMYor_H:#CVWXA(!HxhM@7. "/2  -  #)'"+@@Kt|bE+(DO\]I1 -Dk~m^W>%5AC##85)+, >kpN+;LWWN8%/HhoH*  !5:CTP65;<'*5;3  )TheYBT_bWO1 *M`toG395+3B@AN]`Z]WNWR1+9- .H\f^lxufU/  5GaľpJ:BMX]SJEM]ops~h?28$ <]imugH7&7OizvTJ[qbPCDMb}|mWE3 +QmipxR>E&)5>Kfofq~r\RIJTk{|mi[M2$A`forF69' +=^jmxz~{jd[WarqoujcVI?( ',9Rcn{urXF<$ &Lv~eefen{voemvwpmePELG-  !('5GOhw{oqnZH 8Le_XdmmupijqaM=($/8(#)<=9GZv}qD 5HRnwaSXD&   &2?S`jE $IpmP=$   6WhuL ;`~~b90]wwRO}~nk|_;8e¹a4   DlrgZb{^;@b`: F^YEQnypJ<`ĻR. .,-*1A@GYu{zb> _˳{Q5& 3==CF-"?KUvtsiD SʫmQ;'&&& -/.ALSN@ ,TbqZQ0 4q쿶lP>-&&&49&.=BDC:82"?a~lQ<   "   M}ڨqQ>- (:;:,1DA7;B1 "UqjS2     *9*KncK8 (3=B?HNCDK>6*Ljl@$A;8880'3=@+ #ShufZL,*;<5E=% 3SdrjYD2CA=BQbidXaS>0$Ugot[0!$-'   'BUSMK8));N_^>(;T_hm|xqjU73AIPNOX`ijV8 ?_iylA+,  *:I[WG674B^igO'#(9IWWXcjkrbVOVH*5IG>CMRZYN0&FVlrY=# $*/,-' "!-=K^^MIPTOWlfL//HV]UHCCKXH2+1#/(/FF59:7"2Ta\C>NN?4/*7JboeZ_eeTThaB-=[wkUD1$*F'" %* $%/' .@F9%JY^_UA$#1Qu}rsxn[`bUK7$ 7[oi@&  #+!1A0%64 $?Uh|qY6*D?RhYuvXC'DI;$9;9)';C9 # 6OVmsnS948C; [klmL  ,@\bT=(*0:D:'   -@FMYlj[RF5  (Vyz|X  ."#)Jt[0&@QQ@'  *' "2<:Ip}wbT5;[|~X !*-$ 9Vzg.  &:CYb< %7+.3/./0' +1Hq~jZI7IsƳ{qR +("KmwD$)(" \w}uW1 +Z~sywL)%$7@CA@1 -NeiYIGHJ>!   9LH1(>NQHF=- 89<.  &'*-!%( #&, ;HJB* )Q^RESL; &   9:**6?4 +947' 2NUSC+3Zdb`qbQ5"  2RT6$.<6@H=8)&4WowY: ?XhpxxtmQ2 $1BXdS?>9( @K@6! $;Rd{kP6,# &7Xfg}|W%3C>9Yu{rdE$ 3EB>> "Ep~uw{eR:,=TZath9 >KLTlqS<)/("GKB;6.Oo~ulN 4Lfgdqb9;I]yyE*#EUO=( 5Vo{~Z# &47:".'"1D<- A`uL! =[yƴtF)=dgT40ZrxW'-F[d\4#2?DZibQ;)Psme\7 +Jv̵xB4B@Imo^>").?awv]-+J_qR ",D]ppriE*5]rl^L8 /LsƮ^CMB#$KicI0 5=A`l(4>Mab0 +[koȫu? Ajn:R|tifmgXJD6 *7MblmyΨ{aRNB* ?VnŠk96^~sF*0[zľmG) @cvqgrlSC>7%(Fcpr{DzuYKD<$  Ft֪a) "9[̱e=&_ũ{b<% Bclsod{z^I:%(  "FhrmUG<%    Mۣ^6 ,=Rl}ȧ`/HotJ0,(.&D\\XjuZPA)  "JafZWfm\awtd\K61+#'  %;`ϒX) %5BVezټg6 5XdiwpJ;4:F8 /GSXntg]UN2   #BG9'$112HL4NlsɪF #8bĩ~D.!4GYs~uoucLO^K6KW/.  '=S`caQ=/=UZVDEr~Įu@BP %;MQYgo|bSZH& *OovrkYGM_iZB"Gsrc7*bxU#"B`yzcW\M" [spjpc^T@/ 0UyqSC1 ?v{xU)& ,>SZQZXB.UjlccYROI.!B^XJLWb[M=6>DNBC_tsfdM-3H[{z{xo_@ 6Oij@EfscK+,?R_dogS9BjijeVH?>4DI:%  ARX\r{pg^TMDEV|v]Q2#JQbtiz~hA .X}|mD 6E\T1+>Pj|~oR%)OilWVTKKGNO@&7T^e}ylUKRjzb6 (OSnrfieK($^}q`: 73>pbD$5SVFLSWa^QC/(*0PUie[exzW1 "Pl{rd_M# Uo||hV.   0TvxU% !2?ACALYSH;086(FWff`mwtd,'# O~jaYYE LamjUA *KqqN/421393,424/EP@ !  AehUHF1 *..$ "(3BK?4D:-.5EC8&7^ssjM4-EZ\Y`]O4!^жoZ=#+>]hN-)1,-0!/>HPSPQPQLVf_Q% (:YxmW4(Gepvuvr`J;, +^εżuS' "Mep\EOe\G0 %KPP`gknw}x{pV+ .=JgzfF&?er|nZL'1hܼl- 7fvfftnO&:L\jzc4.--.@AUqoV. 2?H[d|oV$0uظn*!Ton~oW+!Jkx|{H,'@IC* &>=GacB)%  (8=4CZf`iogrnYVUMSgq\7 !# '/NUVDLZOMC?JFB8   %?WkwuojfZSUK561$ 34LszfgjhrmM?CFSsrL, /SP;(%07KMNhnZIFLNGB.  '+' (HTCLglfR>GUH5++ >^hgrkdaE28iNyO>f:fH-Y7e*YvMt(T O RQ"U"W"V$U#V$S!UNoڗ`P|2^P&W0a7iCv3eK}Fx;mJ|2e#U&Y'X)XIx]!T R&X=pCuW[][[\\]TJ|K.d URHpfK(\@sUXXRTRGyI{QS[\]]UJz&ZQJ~6b'\VWQ=o?pDvDvFxI{FxHzpAsGyBtL~RNGyGPLx9nGxCwGyEw>p8j?qMp[Q9kZZR9n%WAh*:GPr|YhchzvAl4i?q6j.`%W%W&X%W$V?qK}>pQ\?qEwYBt>pW\P&X$Rq[Onb3ǃ۶.ASޓoLiGq3i4f/c'X&X&X&X&X%W6hNHyEw\S4fS\5gO\N+]QNy .=-f$O^t CSTvՄv(}9|NvNz9j=n@i1Z3e([%X(X)Y(Y&X&YDwTU?rQX7iV[Ew?oX[O Q\uAMRE{T}܎]+~ዺ܏oI|MCwCwJw3X6c&W'X$X&X&Y$W*_OL}YEwPZBu;nY]=oI|]DyS:dzױzgnc8Am}݃fHKOF}=qJ}N.T%W$Y%Y%X&XArPUYO?rW[?qQZ9jJy]BuNJu^v{2\n;I)n#(46:LZ{]KNPO=o9qMMw$W*Y'Y$V:mYQIzRW>oUU4hJ~UD|8mU_c􁏍Sy/:anHhzM^wߏ=k/_*a-`DsTOPPOI|6gH~Lx$R$U%X$X5g=m=nGyWUAobg\\xzз?FEg5k1d5g6eIzQNMMJNFv9oR>f-V2ZrҚ̘ǛżFs.`N}L|^UONNOQI}@uRS=ju畬f>mO~Ato^MNNNOH|GyH~JaN^f@WsNqR~ZNRIy>rugNNOONK:j?wR[{AJLHR`UnLpUxQzI|`x<G~GxCxv`ONMPOE}EuREf;a:c=P`L]qK`vMoT{VyQ~ULAPJ}kDvEl9NbMcwLe~OrX~WRVh@}GTSWVEzG}WfkucdSGi@\}Cb>g?qBu;YxI[nMfRwOsNoR~SPNHDSRWTPGVBx@qSYM~8c4Pi;Vt=Wt=i?qEu?cEYnNfNlHeOmXU[ZoOULXPTPKPXOF|;g*Z.Pu+V~5_@[m@YqBc?p>v@`KRZFUaKc{RtNuRVYTK|ZXTVPSVTSHXG|Dw?t5Ws(V$ZSgFh?p@sCe@EJNbtIb}VsPrIn^TVifιMwTWX[UNNWJPX\S>r)U},Ps%X"]4[~@WpBg;hAsAlHT_GT^A^|U|Z[YZX]e}3r#RCvYX[[YWQWWCu5g0d/e1f,No&X,Y$[,]=Xr>cAoCvAo=JURhZ\VXYY\\lb0SaBpZZ[ZZYXYZXI{I|Hy6_1Pi,Sw(X$Y%X$[7dDsPhXNx[X\[YYXYY`\`tJa_pFr;Ww0E^*T'X$X$W']5n=rM_M}XK{T[ZYYYYYXWVoOPQOJ|I~QXWDxAsOYP@r4h:n@n/V|*U%Y%W)W'[1j?sM~_QBaN\g[VYWXYYYY[YVShyNyD^z\ZUOYJ~Q!NKx|xgJ};l?o;l)Z%W*\1c2e8m?sDuUV:L^MRXXs[VZYVWZZYYXWQ}ꐺojpqdZIuSvɾpG{;m?p/b*\4f4f3e9n@tNfaEXl?;5NkW[\\ZZWXYYYYWWaPaxZDrHvn@qKUB]xMvXWXXZZYYYYYW\H[gKQMkuw`jraa=o:l2e3e2d;mBt?q>q?q@s=uHr:I[Pg~c_ZWZZYYYYZWX=N[8760+-/44Zjko=s8n9c2e0f8j:l;mr?oG}Eay>?BSjYUZZYYYYYYV_BS`,-(+)*;:B>BD6GSHkWWYYYYXZVXekz|}toDt]YZOx@P^;m1a5c3f3e3e8j9k;rCs?t;kt@s@s@qsBr9r>pFXh<99IYl]ZYYYYYXZ[[d>Ui-,(^_]iIZhgTxBZsJZfqFt,a2f9j=n?r=<`vHbzHWhɌ.b7mBs?t6n>s?s>Ww9=DA?9ENSKmU[[YYYYXZZUVFl[dlIMNXlzoj9l@qAsCtTUOo;@ED`z\R]XXYYYYX\Y`Z?[w))'ABB{ڧŹ՝xf?tU\Y[P^ZWZWXYYYY[VSޥoDON/))||pNzTZ^XWZYVXZYYYYZUV\脋478~`GcQt[UYZW[ZYYYYZXZMoHR\CIJ:EJ:;?CqRUUhsy132658313WXV1-1_kl677ewy/0/txs).0|ٙ\bb?BAXZZagh]hh{HKLSZ[R[]lvwTRUEVISION-XFILE.gl-117-1.3.2/textures/earth.tga0000644000175000017500000003005410145416156015361 0ustar cedriccedric@@  *,&**+,*0-!  +5%VXQ;>:+2-!$     )-8:"&)&&.,KJ9/1JK8XVDB;+! !$ %$ *& "# 4:$=B/7>*@J=-4+%1"?G;_aXca_llf<>:!  % &&%)45'% \V>c^O44ccPeaR:4$*) +' 0. .+:<#=?*35@F,NM?@E:srh}}vpife`LUJW\W"   "*!+EG6+)&% 21=&VR@{zsv~yplf]baV\ZS0;7!,**1+*/)  !%6:#79$--IJ2KG2" 5673:6HG*GD)PL2ohMkaOYM;UR5riY^N@MH.I?'E=":3;6848/83/+@< MJ1LG,sn`~v{pxqyxkjic6B@*62>H@IKCPTJ431 $48)ML9XT@<>#haO^WGME0+) G@)3) &!KF&aS?OJ-rhTocYDpp`T3+ XN3@7-'>3TH4G< G? PH2_V@WP6hcL~yvkg__PX\X /14?:QXNPPHIO@dcZ671  ")JK7aaQfeTg`LMM,PG15. D>4) +!ydxhXRL*~}qbNC9RJ+<32) G>WP4G=JD&^V=bYBjaKqupb_TQTP;DGNTSJPOGJD:D0giZ]VR44* !&KL7lgUyp_b_I]Y?ZW6fybRC-%)$KD'@5PH#pn_G^X;~zmZnbKPE+;5?9H;PE&D<QI)NH)h_H_W<|{hkfowpa`WTXN]e`SYVSYU^_YSQD\]NqibJF<44% $ BD%ljPnujRhdHgcKRK*JBI?qhM@764b_HoaSm_L\U<~hzralkJs^S;]T83-YS3_U8G;LD#JC"`Z;|j~waz}xz`daafejoicg^IM@R\NS\XJQIXWNfbRzmwnRJ:GG-C=5 ! 54QL*{uWpdL^T5a]:METJ)6* @9.%218?-KP@IKC;D3V\@:7;8hbDwmQwbodMH:-&=8VN.UN.H=!D<;1_\>xpaojPxu]hbFfaDzu\yvhW`^fllXb_DOG6>2^dYSWYHPFuocql]PUO5lcW$ <9bY>ugKg~n\CD7NFUJ%M<-!+ +'2452JL6BF29-0 2) reL}q]TJ+D8<4NF$TL,YR4m`IgZCKE$B>PJ,B=JG%:6PJ/oiYyq\b`Djkc`ifempZdi>OPBMJV]S_aYGH6aaRhiXxo_~qb@6 B@jbC}duZixeQ`Q*veJO>G9 7***)&7- .$  TP,~mxnZvnS^S6ZL17- WN1\Q5qiKf]?H@52?=>8<5LE&d`P~{ycYFBG)_ed]edjqsXai1 D5)4%0%XL-u^R\Q4¿ˑx<5_W4VH,=2 vlM|l\eUBK?*JF8TPFEB&:4\V7YN@HK5dll]eehnoZciKVX`ge^b`TVMY\T]\N}lubi}fuaJQ? KD%vUjsuÒqka2rj=dU,G7 2'B3 :* 4% I:TG$wnWd_=dͷy@5@<D;C7vjNøǾuwQK/WO:pooON<^dd\dg]decip_fhhmimmlffenldzqo{kJmiU0* pfDhu|ĵʿw\TD`M$H:?7 <4 =2E<OCJEixql^KD,?6SI'KE<42)=5Ţ|xhh]c]ELI.lsefoyYdjfmr`hl\hfqyxqx{ļ}rUj}fB:)-)]|ľsV|mMncPGI2IK.PO3NO5?C VO1DD'Y^@{{d^<-B7wjTķ}~~ds~ckfa_BŤ@:$cqdergpyhryfnpxzvmquüyuRH3'94hü­~h{r\mnePUPNTGNS@MQ>EI2BI0DI1CI-vǹþvf}ypvuu}cfW`cO{\VM\`GivaouirxvgS~c˿÷ìxcN7+=8 rľĺʵ¸y{sY_YQVOPUQOULJSKBNHBI8EH.qwknufr~v~uoqfgkgfjelog~yhVgom{}zwvVxibnP91=7 z|۶rqroU]YRWPRZXQZWEQK@L=IM9TV@xzg=F3:F8PVJ^bZjkd~˲|TfrjzziE3hŽŻl]P)oc;gz]ZuO61/-¹ļvz}~bhjdkickhjooIRLGM:KL5=D,5;#KN4YXFJL7U]M^cJbǾƲ|wj^l{TioƸ|fR_P%mc7ns~@.'" zĹñi}žwpz}r{zpwvSWQKP?HI2IK/ML4VUEH.HH*NO3SV8qmUa^C{udr}icM>F%q\_N`V>~~b½N^]övуoVeU+oLyIJ |wOǭȰrlx̺irhs}lsxfnk^_WSTE=@'GG*RP7YQ?a]B{izvdSN5GI+joYlopuџprHV\yzӼĹܑyf~mM{fH`ű͏vn XT3Ǭuxyʵyv}mrxfmmbhf_aYOQ@JK6QP7kofR|v{y]of_HTQ6llV`U@{~mp}Q^c٤iŻϾeOG&&mom}ûp]<{{Vw{{lnm^_WIO=IL1XX@}duziynQypWg|r{proprjGJ/@F5IUUUN%vĽĻοŸ2 Ļa_s|xrpe0wzySVKGM?JM4hiPypYw^yw`skS}vb}v`ěɚœßƯ͢?/8*GE0enuu\<0 hó»_İgryTWɿyXþhcdTTKTQLVM@]YCsrT»}joҦʜʡϩԢϣɮʨofg7%8'JP=y}|u@6pjHµԼƵоsn@@%ô`nvJWɿƾƼvdYkcH˽˞mǾتԩ՟ʖŘɮҲѭfYK;+B/^aV`fc@9&wkMᨖQijB/*rµYbvɴˬľŰǜϜˍϷװYD6@0I5 KD%WS>l^Km|w_{WwTaN#l].ľŶ NJ,ż͹xLzĞ{ֹzĕȗϔˢҬϲѼذ]I>J9N>>. woM}pYodF|cp^CUDR< m]1rNxՀjf fָɾ`a˻½̴Ѣwo^{zfʶաœ޷ϿԬ^J5H1`P.}p}hgivjQmaIk]4|dDX>jCdh5Ⱥ"PL1 Կɷ||Pʹ»Ⱥr͵z|vMDzƶqvqf־ֱʥМѯdN+W>S:P:cY.aY=PM,b^GXQ0f\?ufSoRmugǻxba {йʺp·o{ȾhuP¬ĻzgKm_7qˮԵȬϣƘǸ]CU;M3R=S>M9NF!ZT5bU7uȽ56ŤѺiinŴsXjZ6p`5lʴ巿ӫɨեӦФůkT:I/_M,S?aR.XF'gR*qWsƶͿ^JHihHɹ~Nizpr|uƵmW?xSƾ¾ʴвҵدԚ‘ȟĩr`XX> T:Z> gN|jFqƿƽoxP☄rӽVzc}ûθğү˓ʩҴױŃ{Y?bIW? |lDw]wY2hM awT}źulvĺq±ƶvWشûѵҲɩԮⲶiYKS6X:jV-dX:˶{7)',)x}u^oG˾rqyMuO~_Ǻǻѵ͸ѷʩɭԪʞV=R6lX2ŜkŴȽL=:54~mhcd}UuǾunEkQ"xc8kӷԼԵβǟҡ˔wg]bJ/rfV}Ź{f3{OǷyƶ]NH40ruae{LxG}N`}~b6{`.sP޼ԹַҰѡʖoaD|ŻkvV#ɾƯSG@><'sr}NxBu>o:l8e+nCza%z¹ؿ汹ˬƦĥ~oTzjIuf}fGiVuFsNƻý?3, cͿDZNDu@qEq<a&zƺºԲʹʲímRjEd;da5uUhpƵ)efGsx=~G~Rs>xI˿оȾöнϮmQsPǻƹ~Yk1wf_&$|óT`aXVqnDZǻų˿îwF^{Iú7,$??,ohObŵ˱ՠigź÷quKpʻô_s@UпǹVH=91 vT_`ɽϿŵnjvupj]{J}MGȴǷSF? SI*}YƭŹ̵ǵǴbuϹew]phX% 50cZEqeP|d©üa{fIlY@eXE3'       TRUEVISION-XFILE.gl-117-1.3.2/textures/egg_chec.tga0000644000175000017500000000605410145416156016005 0ustar cedriccedric TRUEVISION-XFILE.gl-117-1.3.2/textures/flare1.tga0000644000175000017500000010565010145416156015435 0ustar cedriccedric                    !   %    )    "0    !#%'-:*#!     #')+./134 :D5/.+)'#      $'+/268;>?ACIPB>;862/+'#      !(2148=@DHKMOQSTSZ^QMKHD@=84/*&!    !'+1ELTacfgbWPLHFDCDQILPWbgaZSLE>72)! & !&,4;CKT[djk`QJD?<97654 6FA79HT`gbL?70+(%$+/" !"'J%! !&%$%)47?Lbg`TH>4)#   2J@AHTag[H=4-)%$"!#8#"$%&',I(%$"!)!!")0*-4=H[gaTH>61$  ,@[VXagYF:2+($#! ./%'()+ 2I,+)('%(' "1&$(+2:FYgaULD4(   "&/=QlokYE91+&$"! "$+?,+-/018J0/-+*2($")(!"$&+19EYgcYI:/&   !( ",7CQd{nL91*%$! "$&),=4023456>J543203+)*5$ !$%*19Gal_PC7,!  *016?MZg^V:+%#! "%(+,/6D5689:;EJ:9865<3/-9-%" !#%*4DOcfZM?4+"  !2G MWfgLAHQ1$! #&)+-147N=<=?@ABNL@?=<;C6479+)&# !#*:>LgfVI>6( / !.>RbgiQ?4/9S/! $&*-0358;EIBEHIJKXQIHEBC@;:J50-*&$ '9.,4?QgbVG8+! b '1?NbwiJ8-(&/R3&'+-147:=@EaJNPRSTUcWRPNJSD@FA741-+'%)7'$(-7Fal]L>1'   !+7ETekXW>-$" *M=- 148;?CHL[XWZ\^_&p_\YWUTLJR?;841-,18$ "$+6GOhdTE7+!  &&0=L[gWB=C@," "-KI458<@FJOU\kacfgh|gebabZU\MF@<852;)" !'368AWg[L=0' #  *6DSdgJ9.,2F4&%)0JV< AHMSX]bskmqst2soljkba_SMHA<:E=.)%$+5+*.9JgdTF9."   "#/0#  '4AQagK:/($! #0IG7";J{TU\bhmrzzxpha[UQaE;75<+# !$*3@SibQA4'     +8GVg_C5+%" $).>`H@FRcjrxy3xpic_hPF?BO8-)$ ")27:D_fVG8+    !#"!''1=K\gQ=1($! "&+/4M_gL9.'$"&/;J`XNLPWajt~ÆІԆ߆ӆІwjaWNE>;6/)$ #'.9Lg_M>/# 0 (3APbgH7,%" !%+06?K]vwopxɆن6҆φՆɆxmb[SI@94/+%! "%,7HgaO?1%  !(3>KZjlM>3,($(,05:@IR]j|І܆3ӆ͆wof[RI@:50+&"!#&,7FfcQA3'  +8FXjkNB<9:>BCEFGJPV_gs|Ɔֆ2|sg^SLD?;83/,(').5DefSA4'  &'4CSfbC5,&$#&+06=CKU`lxĆن&ӆ؆~vlcXNE=82-(# !$*4CbfSC4'  #'4CTfbC4*$! "'+16;BKU_ht~dž܆#܆dž~th_UKB;61+'" !$*4CbfTC4'  $'4CSfbC4*$! "'+16;BJT_hrzՆ&؆†si]RIA;5/)%"#%+4CbfSC4' 2 '4ASfeD5+$! "&+15;AJQ[fp|Ԇ؆ۆɆ|sg^UNHDB@>;9536=JhUC6( 3 '3AQcgF6+%" $*.3:@IRZdn{ʆȆ3܆چφ|k]RI@:50,'$"&*0;KigUE8,  j %1=L]eJ8,%! !%+/28=EPXbmxɆ؆ӆӆɆxpr|}_M@70+%! "%,7HfaO@2&   -:I_gL9.'#M#(-36;BNWairvІ؆چ߆ֆdžІ{kaWNKQ^hO=1'#$'.9Lg_M>/# 0 !.;K[eS=0("! "'+2650+%#&.;K]`nqaN<-!  [&6DPdeE5+%" "%*-48=DLU^foxɆˆن܆؆چˆɆxml_ULEGVI6-%" "&.2+$%   !+7ETdgK;0)$" &>5,-3PF9?KGLUW[$_m_e^\{WUTLFE?;CI2-+&" "$(1=JfdTE7+! & '1>KZg]D7-(%*@-%'-DF37;@DTJNR V`UZTO{PJSD>;74A>,'$ !#(-7FbfZK>1' - !+6CQ`gQ?4-2B*! %9E.02A9;ADBEI PVKOLI]LBC@;730/?4% !"&+4?Te\QC6+!   %/;HVfgL?>A-#! 0E*(+4346D;<=@JLBF@JP<;C641.+)*<,!#%+2=MefSD8/% ; )4?MZfeTJ6*%#-I(!%)1,/3<56:9:HC;?@:>\75;3/+$(%"&>)#%*1:JbeWM=0& ! !,7CPapeI91+/J, -&)+402545F=69=5e503+)$" )?,*19F[e^L?7)   &/;K_giYE97I5$"#$"$(3+-./0F613:0.N9+*2($ !"%1@59EYg`NB:,"   )8KOVagYKPC.($' ')%'()+,D1+.7+)<>'%(' !#$(-=IYgaTH9.'  (9 ?HTajiX@4-()%"!*!"$%(C+'(4'%.H$"!) !$%)-4?SdhaTH=3&   '*4>HWjufM?71.(%$%&! !!%C&"$0#!%U& !&%$%(+07?LdofVH>4)!   !*4@RfcegQF<5.+(+&#"! !$?# !-! "D-"#&*(+.4;DQgfa^N>4*!  !+C54979A\NJQ_fgd[PGC;4,&   !#  &/3>ELSZagbWPLHNCFIHLUlogaZSLE:6/)!   ! "(17=DJQV\afgmkcbfgfpwd\VQJD=7.(% & !'+06ALGCA>?>;:IB1+'#        #')+./4?84 01/.*5<'      !#(4,'"%#!%8    ) 3!    "*$   !&    (   '                          TRUEVISION-XFILE.gl-117-1.3.2/textures/flare2.tga0000644000175000017500000007370610145416156015444 0ustar cedriccedric                   #   #    #%)%#   #%)%#    #%)+.+)%#    #%)+.+)%#   #%)+.040.+)%#   #%)+.040.+)%#  #%)+.0469640.+)%#    #%)+.0469640.+)%#   #%)+.0469;>;9640.+)%#   #%)+.0469;>;9640.+)%#   #%)+.0469;>@D@>;9640.+)%#   #%)+.0469;>@D@>;9640.+)%#  #%)+.0469;>@DFIFD@>;9640.)#  #%)+.0469;>@DFIFD@>;964.)#   #%)+.0469;>@DFIKOKIFD@>;940.+)#   #%)+.0469;>@DFIKOKIFD@>;9640.+)# #%)+.49;>@DFIKOQTQOKIFD@>;9640.+)#   #%)+.49>@DFIKOQTQOKIFD@>;9640.)%#   #)+.049;>DFIKOQTVZVTQOKIFD@>;9640.)%#  #)+.049;>@DIKOQTVZVTQOKIFD@>;9640.)%#  #%).049;>@DFIOQTVZ\_\ZVTQOKIFD@>;964.+)#  #%).0469>@DFIKOTVZ\_\ZVTQOKID>;964.+)%#   #)+.469>@DFIKOQTVZ\_ada_\ZVTQOID@>;940.)%##%).0469;>@DFIKOQTVZ\_ada_\ZVTQOKID@>;940.+)#    #).049;>DFIKOQTVZ\_adfjfda_\ZVTQOKID@>964.+)%##%)+.469;>DFIKOQTZ\_adfjfda_\ZVTQOIFD@>;9640.)%#    #%).0469>@DIKOQTZ_adfjloljfda_\ZVTQOIFD>;94.+)%# #%)+.049;>@DFIKOQTZ\_dfjloljfda_\ZVTQOKIFD@>9640.)%#  #).0469>DFIOQTZ\_adjloquqoljfda_\ZVTOKID@>;940.+)%#  #%)+.049;>@DIKOQTVZ_adfjloquqoljfda_\ZVTQOKIFD>;9640.)#  #).0469;>DFIKOTVZ_adfjloquwzwuqoljda_\ZTQOID@>;94.+)%#   #%)+.49;>@DFIOQTVZ\_adfjloquwzwuqojda_\ZVTOKIFD>;9640.)#  #)+.0469>DFIKOQTZ\_dfjloquwz|뀁|zwuqoljda_ZVTQOIFD@>;94.)%#    #).49;>@DFIOQTVZ_adfjloquwz||zwuqojfda_\ZTQOKIFD>9640.+)%# #%)+.049>DFIKOQTZ\_adjloquz|낅녁낃뀂zwuqojfd_\ZVTOID@>;964.)# #)+.0469;>@DIOQTVZ\_dfjloquz낋낂|zwuqoljda_ZTQOKIFD@>94.) %#   #).49;>@DFIKOTZ_adfjoquz낂녁뇄늁뇂낁|zwuoljfd_\ZVTQOID>9 640.+)%#   #%)+.49>DIKOQTVZ\_djlouwz낂뇊뇁낁|zwuqojfda_\ZTOIFD@>;9640.)# #%)+.0469;>DIOTZ\_adfjoquwz낁뇂늁댃됁댂뇁낁|zuqoljd_ZVTQOKIFD@>94.)# #)+.0469;>@DFIKOQTZ_dfjloquz|낁뇁댉댂늁낁뀁zwuojfda_\ZVTQOID>94.) %#  #).49> @DFIKOQTVZ\_adjouwz|뀁뇁댂뒃땁뒂됂늁낁뀁zuqoljfda_ZTOID>;9640.+)%#   #).49>DIOTVZ\_adfjlouz낁녁댁뒈땂됁뇁녁|zwuqojd_ZTQOKIFD@>;9640.+)%#    #%).49>DIOTZ_dfjloquwz|뀁녁댁뒁땁뗂뗂뒁됁낁뀁zuojfda_\ZVTQOKIFD@>;9640.+)#  #%)+.0469;>@DIOTZ_djouz|뇁늁뒁뗆뗁땁댁늁녁뀁zwuqoljfda_\ZVTQOKIFD>94.)#   #%)+.0469;>@DFIKOQTVZ\_djouz뀁뒁땂띂띁뗁땁됁|zwuqoljfda_ZTOID>94.)#*  #%)+.0469;>@DFIKOQTVZ\_adfjloquwz뀁녁늁됁뗁뛅띁뛁 |zwuojd_ZTOID>94.)#2  #%)+.0469;>@DFIKOQTVZ\_adfjloquwz|댁됁땁뛁뢁뢁댁늁녁뀁zuojd_ZTOID>94.)#8  #%)+.0469;>@DFIKOQTVZ\_adfjloquwz|띁렃뢁렁뛁땁됁늁녁뀁zuojd_ZTOID>94.)#=  #%)+.0469;>@DFIKOQTVZ\_adfjloquwz|뫁릁렁뛁땁됁늁녁뀁zuojd_ZTOID>94.)#:  #%)+.0469;>@DFIKOQTVZ\_adfjloquwz|뢁먁릁렁뛁땁됁늁녁뀁zuojd_ZTOID>94.)#4  #%)+.0469;>@DFIKOQTVZ\_adfjloquwz|뒁땁뛁뢂뗁땁됁늁녁뀁zuojd_ZTOID>94.)#.  #%)+.0469;>@DFIKOQTVZ\_adfjloquwz|낁녁늁됁땁띁렁뢂렁뇁녁뀁zuojd_ZTOID>94.)#$  #%)+.0469;>@DFIKOQTVZ\_adfjouz뀁녁늁뗁띄렁뗁땁 |zwuqoljd_ZTOID>94.)#  #%)+.0469;>@DFIKOQTZ_djouz댁됁뗂뛂띂뛁뒁됁늁녁|zwuqoljfda_\ZVTQOID>94.)#  #%)+.0469>DIOTZ_djoquwz|낁녁뒁뗅뗁뒁뇁녁뀁zuoljfda_\ZVTQOKIFD@>;964.)# #).49>DIOTZ_adfjloquwz뀁뇁늁뒃땂뗂뒁댁늁|zwuojd_\ZVTQOKIFD@>;9640.+)%# #).49>DI KOQTVZ\_adfjouz|낁뇁늂뒆뒁댁낁뀁zwuqoljd_ZTOIFD@>;9640.+)%#  #).4 69;>@DFIKOQTVZ_djloquwz낁녂댂됃뒃댁뇁녁|zuoljfda_\ZTOID>940.+)%#   #%)+.0469;>@DFIOTZ_adfjlouwz|낁뇁댇댂뇁낁뀁zwuqojd_\ZVTQOKID>94.)#   #%)+.0469>DIOQTVZ\_adjoquz|낁뇃늄댃늂낁뀁zwuoljfda_ZT QOKIFD@>;964.)#   #).49>DFIKOQTZ_dfjlouwz|낂뇇늁뇂낁뀂zuqoljda_\ZVTOID @>;9640.+)%# #).469;>@DFIOTVZ\_adjlouwz|낄년뇃낂뀂zuqojfda_ZVTQOKID>94 0.+)%#  #%)+.0469>DIKOQTVZ_adfjoquwz|뀁낈낂|zuqoljda_\ZTOKIFD@>;94.)#    #%)+.49>@DFIKOTVZ\_dfjoquwz|뀅낄|zwuqoljda_ZVTQOKID>;9640.+)#  #).0469;>@DIOQTZ_adjoquwz|뀁|zwuqoljfd_\ZVTOKIFD@>940.+)%#  #%)+.049>@DFIKOTVZ_adjouwz|zwuqoljfd_\ZTQOKID@>;964.)#   #%).469;>@DIKOQTZ\_adjoquwzwuqoljfda_ZVTOIFD@>9640.+)#  #)+.0469>@DFIOQTZ\_adjloquwuqoljfda_ZVTOKID@>;964.)%#   #%)+.469;>DIKOTVZ\_adfjloquqoljfda_\ZTQOIFD@>9640.+)# #)+.0469>@DIKOTVZ\_adfjloqoljfda_\ZTQOIFD>;964.+)%#    #%)+.469;>DFIOQTVZ\_adfjloljfda_ZTQOKID@>;940.+)#  #)+.049;>DFIOQTVZ\_adfjljfda_\ZTQOKID@>964.)%#    #%).0469>@DIKOQTVZ_adfjfda_\ZVTQOKIFD>;940.+)# #)+.469;>@DIKOQTZ\_adfda_\ZVTQOKIFD>;9640.)%#    #%).049;>@DIKOTVZ\_ada_\ZVTQOKIFD@>964.+)%# #%)+.0469;>DIOQTVZ\_a_\ZVTQOKIFD@>9640.+)#    #)+.469;>DIKOQTVZ\_\ZVTQOKIFD@>;940.)%# #%)+.469;>@DFIKOQTVZ\ZVTQOKIFD@>;940.+)%#  #%).0469;>@DFIKOQTVZVTQOKIFD@>;940.+)#  #%).0469;>@DIKOQTVTQOKIFD>94.+)%#    #)+.0469;>DFIKOQTQOKIFD@>;94.+)%#  #)+.0469;>@DFIKOQOKIFD@>;9640.+)%# #)+.0469;>@DFIKOKIFD@>;9640.+)%#   #)+.469;>@DFIKIFD@>;9640.+)%#   #).0469;>@DFIFD@>;9640.+)%#  #)+.0469;>@DFD@>;9640.+)%#   #%)+.0469;>@D@>;9640.)%#   #%)+.0469;>@>;9640.+)#    #%)+.0469;>;9640.)%#   #%)+.0469;9640.+)%#    #%)+.0469640.+)%#    #%)+.04640.+)%#    #%)+.040.+)%#   #%)+.0.+)%#    #%)+.+)%#    #%)+)%#   #%)%#    #%#    #                    TRUEVISION-XFILE.gl-117-1.3.2/textures/flare3.tga0000644000175000017500000003345610145416156015443 0ustar cedriccedric       "$%&%$"     $&(*,/1321/-+*'%" $'*-13579<>?@?><:9752/,(&"  $(,147:>@CB@><>?@BDB@<953/*&"  "',159>AD@><86431/-/13579B >:731-*(&%$"  "$&(*,/259<@D@:51+&")/5:@D?951-*&$ "%(,/3772,&  "(/582+%&,4:AB<51*&"  $(-38>D>71*"  $*29@B<5/)$  "&,38?C<5/&&/5>D>6/)$   &,39@92*" ")19A@92*$  (/55-& $,4B:2)  &/7@7/& "*35,$ (19B>5+" '19C<3*" &/7A>5+" &19C<3)  %/7@?5+" &/9C<2( $-7@>5*   $/8B<3(  $-7A>3)   ",7B>3)  $/7B<2( *5@>4*  %/9D:/& (3>@5+"  &1@5* ",7B<1& *5@>2& (4?>3(  "-9D9/"  $/@4( "/9C7+ ,7D9,"  (3?>2&&2>3&  ,8D8, ,7D8, &3>2&  %1>3& ,8D7+ *7C9,  &3?>1$  $/<@3' "-9B5) (5A1%  +7D7* (5B9,  '3@1$ *7D7* %3@1" *7C5( "/1$(6D7* $1>1$ '4B9, &3@:-  $1>1$  *7D7*  -:A4'  -:A4'  *7D7+ %1>1$  &3@1$  &2>1$  *7D8,  ,9B6* $1<@3' (4@@4((3>3( "-9D9,"   ,7B:/$ *5@>2& %1@6,"  (3>B7-$  (3@7-$  (2@7-$  )3@7/&  "*3B8/' "+4>B91' "*4>B92)" &-5>B8/& "*35,$  &/7?B:3,% "(/7>B:3*" $,371*$   &,4C<5/)$   &,39@B<4,% %,39@B<5/*$  "',38>D>7/("   (/5D>71*$"(/5<@B>84/+'$ "&),16<@C>72,&  $)/49>C@<741,*'$""$&(+/369>BA<71,&  "(,27<@DA>9742/-+*('&'()*,/1358<@CB>95/*%  &*/37:>BDB?<:976545789<>@B @<951,($ "&*-1479<>@BDBCDCB@><853/,($   $'*,/135678975431/+(&"   "$&(*+,+*)(&%"        TRUEVISION-XFILE.gl-117-1.3.2/textures/flare4.tga0000644000175000017500000007344710145416156015450 0ustar cedriccedric  $  ,4jj>ZZh+h+Zzh=J߆ߣfXJf;v)ܲܲWe;d)d)VVٯd:؞c:cVtc::cؼtt))Vc:ddHقّd:::))d:ܲvIWveW))We;߆†Xxx**x߆f;hzZ==++Zh=M>M}}j>,,j>?O^Om?ooPPPP_o@pRAR.ApAABr/brbrB/BBsCsSssSCCCCC/d CtCCdt 00CtCCuuu dC/CsssssCscCsssssC/CsssssSBbȥrrBbbrrA.pp.a.@-oo__-@_?mmm->軩jjjj,j軩j=L=hhZhh+Zh;ߕxffxfJ;ߣXߴ*;eWܲeeܲWeܠveWW)قdddddH:ٯHٞ)ddّ:dddقخHcؐ)cؼ؂Htc:cc؂c؂cc:cʐVH:ccHVVddd:dٞ)V:ddّee;eܲWW;eeܓef;;XfX߆*fߣffffߕ*;ffXX*f==hhZh=hh>>\jj,j>>jj},?^mmm?mmm^?mmm-@P@oo_@o-񰰰-@ooƳaƳpճAAAppRR/rSBBBBrrrSc//sCCCss/d/t/CCCttttt dCtdTTCCCttdDuuuueDDuuuuuD/SssssCCsssssCBrrrBrrrBrbBARppppAAp.@-oo@@o_o@o--?mmmm^m?m->Mjj>jj>>j軩=++zhzZ㷦Z+h=hZ;ߣXߕ;ߣfJJߣ;*ff;fߕx;ܠ;ee));eܓe;IeWܲ:ٞ:V:d)Vd:d:d:ٯ:؞cʼؼ:؞)c:cc؂:؞cH:)؞ccc:Hؼccc::ٞdّ:dd)ّdHHddd:;ܠe;;e;;eee;;ߣff;;fx;ff߆*=h+==hhh=h=>jjj,>jj,詩j>>j\?mm-?-m?m@oo-@o@o_@App.AapAApƳBrr/BrrBr/Css//C/sCs//CttC/CtCCt/Cttd0CdttCtdCDuuuueDCsssssCCcssssC/ȵbr/r絅SrrrbBrrrrR.ppRppp.Apppp_-oooo-ooooOmmmmmmmmmj詩j>jjjʩjjjj=ZLhZZh===hh===========hh==+hhhh;XߣfJߣfff;ffߴJffff;;ܓܲeeeW;ee;;eeee:d:ٞdّddddd:dd:ٽdddddddd؂cccctVtccH؞c::::::::::cؼ)Vؐcؼc)cccc:؞:c:ccccudddd:ٞ:d:ddddܠ)eeee;ܠ;e;eeeeߴXf߆ffXߕ;f;X߆;;;;;;;;;;;ff==hhzhhhhhhhhhhhhh=hh>Mj}MjjM>jj>jjjj?O-mmm?mmm?-mmmm@_P_o@@@o@oo@ooooƳƳp.ApճppppBBBrrBrrrrrccsCs/ssssCdttCt ttttܘCd t̩dCtCttttt DuuuuU0DeuuuuuD uD u uu0 Ct/t븸tscrBbpAA.pppRppoo@o@-o-?m?^mm???????jj>},jj\MMj\MLh=ZZhhhhh=h=+ffffffXff;І*ߴJX;;XxI܄)vܲWe;ܓeܠW))dٯVH˂duddٞdH)ٞٯ:tccVccخt؞ccHc؞:ؐH:::::::::::::::::)cؼ)cVVخؐVٞ:V)ddHق)):ّّٞܠ;v);;;;;;;;;;;;;;;;;eeWܠe;)ܠW)Iߣ*ߴfXfJxxߣ;;ߣJxhL+zhLZ=ZhhzMM\,>\j}}jMjM>M\>,mmmmmm^mm?ݎ-mmO_o@_ooo@opAA.pAR.pp.brBrbBb/sCS/SsC/cscSCdTd 0tDuuuuD Uuuue0CcssssCCcssscCCssssSCsssssCCssssCr/rbrBb/.aa.apaa__-@_o-_mmmm?-m?m->j,j>j,,>jjj,>Mh=zzLLz=hh;Xff;;ߣ;;f;*ߣ;fxf;fffffffX;;ܠ;eܠ;e;;;;vܓuٽ:ٞHdٯ:)uٯuٞ˂dٞ:؂؂:::::خ::):ؼcV؂)V)VVccV)؞:c؂خ:ؐt؞c؞H؞d)dٞٽٞ:dduٞٽٞ;eܲܠevWܲeeܠ;ߣߕߣfxxJxf߆߆ߣh+hzh+hh===h=hhZz,\>\j>>>,j,>>\M>j?^m?m-O-?mmmmmmm^@o@@@@@@@@@@PҰoP-@@@@@@@@@@@.ppppppp.rb煅rrrrB///ssCcs//dt/t/dd TtTtt CCDuuuueDuuuuueDeuuuU0DeuuueDDuuuuDuD u /tsssSssscCrSr/p.@o--ݭm?jz=L+h=========ffffffX;ffffffXJ;fߣXX;eܠeܠܠvv:Vdق:ٯٞdٯ):t؂c:؞VV:Vؼc:؞)cd:ٞd)eWWe;eIܠvIff߆xf;fXߣX+ZzZh+hZ,jjj>-OOmmm_oðo@-@-oppAapȕr//SrsSsCSCtddtTt 0duuuD uuu UuuuuDeuuuueDuuuuuD ue DDCtdTTtdtsCCCCC/crrrrBrrrrBrrSbBrBbrrrrBSbSppARRappRoo_ooo@mm?^?^mj>>j>ʩMj}jʩ\,hZ==ZhZhh===hZggfff;߆fߣ߆fffJ*f߆fWevWeܠ;ܓ)IeW;eܠddٞV:uّV)Hdd:dٞtcؼ:Hخ:c؞؞:::t::cc:::)c؞c؞VcخcH:c؞ٯudd)::ud:ٯuV)uّ;ܠ܄)W)eeeIee)ܠ;eZfߴߣ**fXߕߣ;Xj====hZ=====z+Z++h+Mjjjjjjjj,MjMj\\jjj>j,mm?m??힎-O?mm^oo@ooooo-@pƣpAppAAaapB/rrr/rrbSbCCcCCc/SsscCCt CtTTtttCCC00 0t0dDDu uD0uuUuuuU uuuuDuuuuu0uuuUuuu0euuue0uuuuUuuu0TRUEVISION-XFILE.gl-117-1.3.2/textures/font2.tga0000644000175000017500000020005410145416156015305 0ustar cedriccedriceuuuuuuuue uuuu0Uuuueeuuuuuuuueuuuu uuuuuuuuuuuuuuuuuue uuuDuuuuDee 00 D eu 0DUuuuueDuD000 U 0 UuUue eUeDUDuU e00eu0UD 00uu u0Uuue0Uuu DD UDeuuU0Ueuu 0 Du 0uDuDDu D0DeuuUuu uu00u0UUueee0u0 0Du 0uu0 0DDDDDDDDDDu DDDDDD0uDuDuUuUDDu0eu0D0uUDuU u0uDDDuuuD uue UDuuuDUuuuuUuu0euuu uu uuuu0uu UuuuUD0 0uueuuu0D00 uueuDuuDޙuUD uuuuuUu0uuuuDDDueuu0euuuU0UDUuue0Uuu0D0uD0 0Duuuuuu Uuu uuDUUU uu uueuuDuuuuDDDDDDD DUuueD0DuuuuuUuDu0uDDDUDDuuuu Uuuuuu0uDuuuuUuuuuuUuDuuuue uuDuuuuDΉ Duuuu uuu0ueDuuDΉUDuuuuueuu0uuueDeeDuuuuDUuuDUuuuuDuuuueuuUU uuuuUDuuuuuDuu0u0uuueeDuuuu uuuDuD0uueD0DuuuuuuDDDDDDUu0UuuDDDDDDDu u00uDDDDDDDDuDDDDDD0uuuue Duu0uUDuuuueuuUuuuDuuuuUu Duu ޙ Duuuu00u DDDDDDDDuuuuUeDuuuD0uuuuDDuuuuuuuuuuuuuueeuuu euuuuuuuuDuuuDuuuuDeeUuu0uD0uuUu DuueuDUuuueeeuueu޺Duuueuuee uu uuD uuUuDuuUeUuu0uuD0uuuu000uuueuuDuuue00euuuuDuuD0 uuUuuuuuuuD0euuމu uuu0uuDuUuuDuuDDuuuueuuD0uuDuuuuuuuuuD euuuuuuuuuuuuuDueuuDuuuuuuuuu0uuDUuuDuuuuuuuuuuUUuuuuUeuuuuuueuuUuu00uuuuuueuuuUeuuuuuuuuuuuuuuuuuUuuD uuuuuue uuuuuuuuu uuuDDuuuuuuuuUuuuuuuuuu0uuuuuuuuu uuu މ DDDDDuuuuuuuuuuue0Uuu0DuuuuuuuuuuuD DuuuuuuuuuuuuuuuuuDDuuuD0ue DuuuDDuuuDuuuDueuuuuueuuuuueuuuuuDDuuuuu޺ޙueu޺u޺euueΙuuuuuuu00uDu uuUuuuuD euuuuuuueuu uuuuDuuuuuuueuuuuuuuueDuuuuuuDueuueuuuuuuuuuuuDuu uuuu uuuuuuuD 0uuDuuuuDeuuuuuuuuuuuu0e uuuuuuuuuuuuuueuuuuuuuDuuuu޺uueuuuuuuuDuuuuuu0uuuuuuuDuuuuuDDDDDDuuuuuuDDDDDDDDDDDDuDDDDDDDDDDUuuuuuuuuuuuuuuuDuuDuuuu0uuuuuu00uuUuu uuuue0e uuuuuuuuuuuuuuuuuuuu0eeuuDuuuuu 0UuuuuuueDuuUuuuu0uuuuuDDDDDUue0e uuDDDDDUuUuDDDDDDDDDDDDDuDDDDDDDDDDDDUUeuuuuu0ueuuuuuuu0uUuuuuuuuuΙUDDuΪeuu uu uuuu DDD00DDDDDDDDDD ueUuDu U0ޙeDDeeUU UeeuUU uueuuuu0 uuuU uuue e uuuuuuuuDDu0uD Uuuu e DDueu0u0eu0 e 0uD0 uDDD 0DDDUDDeeDUD0uuuDD D uDuDeuDDDDDDDDuDu D0 UDuUu eeDDeUuDe DuDDDDDDDDDDDDDDDD u D0uDuDuD0Uuueuu0 DeuuuuU uuuD 0Uuu uuUDuDeD u eu UuU0UDuDu u0DUee0ue0euDueuDDDD0DeDU0eDDDDDDDDDDDDDDDDDD uuuD 0De uDeUD0DDeDDu0 0D0uDDu0 e 0000uueuee00DDD DDDDD uuuD uD uuuD uuDeeuuue ue0uuDuu0Du U0uUuDu0Du eDeDuuu DuuDuuuDDU0eDDuUeDuD0D DDuDu0UuuD0DUuDuDuuuD DuuDe uDuDuD Uuu DDuDuDDuDuDuDUueD0DUDDDDuDDDDuU 0Du u uDueDeDDu0DuueDu0uuDe Duu DueDDUe DD eeDueuUDDD uuuD0Duu޺euUuDDueeUuUueDuD00uDu0Du00u 0DD00UueuDuDu eueeUuu0e u0 e D euD uuU uueDueUu0ueuuuuuuuu0DDuuuuuuuuuuDuDuuDuuu0euuDe ueuDe0eee De0UΙ eeUu UUu uu uuuDuuueeUuuueuuuuuuuuuuuuuuuuDuDuU DuDu0D0eDeUuuuκ0eUu uuDee0e0uuuuuuuuue 0eeDuUeu0uUD000uDuDDuDuDuD uDuDDD 0 uuuuuuuuuuuuUeuDuDuUD UuuUu uuuUDe0eu 0 uU eΉeDuUee0uD0u e0ueUuuD0eD DuU0e0 uuuU 0uueDDuUuΉ e0uu uuueeDDeeD uuuDDuuu0Duuu 0uuDe0 e uuU 0uDueuuu U eD0 Du0DuuD uuUu0eU0uUu 0 DueUeuD D0UDu0DUuUDueuuuuuuu eueuDuuuuuUDe DuDuuDD DuDeuDuee Duκκ0U u 0DuueUD DޙU0DDuUeu ueuueD0eUuu0uuD 0eeUu uDD0eD0uUuuDDeuuuuuuuu u0DDeuD e UDeeeuu00uDuDuDDD DDe0uDDuuu0DDDDuDeeDuDuDD DUDeDuD0DU00000DDuDeDDuuuueeuu U uDDUDuDUDuu uDDUDu u uDe uDe Duu00D uDue0uu0DD 0DDD DDDTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-14_c2.tga0000755000175000017500000060005410145416156015474 0ustar cedriccedricpp``QQBB883311113377@@NN]]kkyysseeXXKK>>774422//----//335599BBSSdduu¿¿¿ttccSSCC::6633//..//111111111111111111111111111111111111//..//3366::DDVVhh{{~~nn__PPAA883311112277@@MM[[iiwwrreeXXKK>>774422//----//335599BBSSdduuttccSSCC::6633//..//111111111111111111111111111111111111//..//3366::DDVVhh{{uuggYYLL??773311112266==IIVVbboozz||uujj^^SSHH==77442200----//335599BBSSdduuttccSSCC::6633//..//111111111111111111111111111111111111//..//3366::DDVVhh{{{{tthh\\RRHH==663311112255;;EEOOYYccllqqssttvvwwwwuussqqnnhh__VVMMDD;;66442200..--//335599AARRccuuttccSSCC::6633//..//111111111111111111111111111111111111//..//3366::DDUUhhzz}}xxvvuuuuvvyy~~||rrmmiiddZZQQIIAA9944221111224499@@GGOOVV]]aabbcceeffeeddbb``^^ZZSSLLEE??8844332200..--..224488AARRdduuttccRRBB995533//..//111111111111111111111111111111111111//..//335599CCTTggyyxxnnhheeddddeeiiooyyvvkk``ZZVVRRKKEE@@<<7733221111113366::??DDIIMMPPQQQQSSSSSSSSQQPPOOLLHHCC??::6644222200//..//335599BBSSeewwttccRRBB995533//..//111111111111111111111111111111111111//..//3355::CCTTffyyyyll__WWSSRRRRSSWW__llxx||ppeeZZOOHHEEBB==::886644221111111122335588::==??@@@@AAAABBBBBBBBAA@@>><<9977553322111100//..//3366;;EEVVhhyyttccRRBB995533//..//111111111111111111111111111111111111//..//3355::CCTTffyypp``QQGGCCBBBBDDHHQQ__mm{{qqqqqqqqppppppppooqqssvvyy~~oobbXXNNCC>><<;;77555544221111000000001122334455667777777788888888777766443322220000//////--,,..2266;;FFWWjj{{~~{{zz{{||}}ssbbQQAA885533//..//111111111111111111111111111111111111//..//335599BBSSeeww}}ll[[JJ@@;;9999;;??IIXXggvvaaaaaaaa``````____aaddffiinnxxssccWWNNFF==88776644333322111100////....////001122223333333333333333333322221100////........,,,,--3377==HH[[mm{{ttmmiiggggiijjmmss||ssbbQQ@@884422....//111111111111111111111111111111111111//....224488AARReeww||jjXXGG<<77555566;;DDSSbbppQQQQQQQQPPPPPPOOOOPPRRUUXX^^iittyyjjYYMMFF??7744444422111111110000000000000000001111111111111111111111111111110000//////..////..--0066<>8844..----//////00002233445555665555554444333322222222222222222222333344445555554455777799==GGQQ[[hhzz{{yyxxvvvvwwxxxxwwwwwwwwxxyy{{}}ssgg\\RRII@@;;9999;;==@@HHVVeessuueeUUDD;;6633//..//00000000000000//////////////////////--,,..2266;;FFWWiizzyyffTTBB7722//----1177AAKKTT__iioorruuyy{{||||~~~~~~55555555555555444444666677;;DDMMWWccss~~kkYYGG<<7733//--..0000001111334466779999999999999988888877777777777777777788889999::::::99::<<==??EEPP[[gguu{{ppjjhhffddddeeffffeeddddffggiimmrryyzzrrhh\\RRJJBB::6644557799==EESSbbppvvffVVEE<<7733//--..//////////////......................--,,--3377==HHYYkk||xxffSSBB773300....1166>>EELLSS[[__bbddggiiiijjjjjjjjkkmmnnpptt||3333333333333333223333333366==DDLLWWggvv}}kkXXFF;;7733//..//00111122335588;;>>@@AABBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAABBCCDDDDDDCCDDFFHHKKQQ]]jjvv||nnaaZZVVTTRRQQRRTTTTSSRRRRTTVVXX\\cckkrrvvuuoogg]]RRIIBB<<662211224466::BBQQ__nn}}xxjjZZJJAA;;6600....////////////////////////////////////....0066;;BBMM^^ooxxffTTCC99552200//2266::??DDHHMMPPRRSSUUVVVVWWWWWWVVWWYYZZ\\aakkuu//////////////////////....0066<>MM\\kk{{}}qqccTTIIBB<<663333333322333333333333333333333333222233333377>>EELLXXiixxwweeTTCC::5533////00335588::==??AABBBBDDDDEEEEEEDDCCDDFFGGIIOOZZeepp}}------------------....--,,..3377==FFUUddss||yyxxyyzz}}}}jjVVDD995522..--..0022335599@@GGOOVV]]aacccceeeeddbbbbaa``````````aaaabbbbcceeffhhiikkkkkkllpprrttyy}}llZZII@@<<::6666779999888888::<<>>BBHHOOUUYYXXTTNNGG@@::6633//--,,--//1144<>CCMMXXccpp--------------....////..--..2277<>??DDNNXXbbnn~~uuccQQ@@773300,,++--..//000011112222333344445555555555777788==FFOOXXeevv////////////////000000//..//3366;;BBNN\\hhqquussmmee__ZZUUTTUUWW[[ddqqkkWWEE;;6633//----//224477>>IIVVbboozz{{hhUUDD::6644000011333333223344446688;;>>BBDDDDBB??;;7755332200....//224477>>MM[[jjyy}}qqff\\SSJJEECCBB@@@@AABBBBCCCCDDDDDDDDDDDDCCCCDDFFHHJJOOYYddnnzzttccRRAA884411--,,..000000111111111111112222333333222233334477??FFMMYYjj{{333333332222222211111100//00225588>>GGRR\\ddggcc\\UUNNHHDDCCDDFFJJTTccuu~~kkWWEE;;6633//,,--//335599@@OO]]ll{{{{hhVVDD::6633//--..//////..////001122446688::::9977553322221111//..//335599AANN]]kkyy||ssii``WWQQOOMMKKKKKKMMMMNNNNOOOOPPPPQQQQQQPPQQSSUUWW\\ffppzzuuddTTDD;;7755110022333333222222222211110000////....//////..1177==CCNN__qq555555555544443333222200////113366;;BBKKSSYYZZWWPPIICC>>::99;;==BBKK\\oo~~jjVVDD::6633//----//335599AAPP``pp||iiWWEE;;6633//----....----....////0022334455554433221100000000////004466::BBOO^^llzz~~vvnnee__\\ZZXXWWXXZZZZ[[\\\\^^^^__````````aaccddffjjrr{{uueeUUFF==99773322445555555544443333221100//....--------,,,,..4488==GGXXjj||999999998877665555442211000022335588>>EEKKOOPPMMGGBB==8855557799>>GGXXkk~~}}jjVVDD::6633//,,--//335599BBQQbbrr~~llZZII??;;882200//////....////0000111122333333222211111111111100//004477;;CCRR``nn}}yyqqlliiffddccddeeeeffgghhjjkkllmmnnooooooqqrrssvv||wwggXXIIAA==;;77667799999999999988887755442211//////////..--//3377;;DDUUggxxBBBBBBAAAA??==::88553311111111224466::>>BBEEEEBB??;;774422225577;;EEVVii||{{hhTTCC::6633//,,--//3366::CCRRccssrrbbQQIIEEAA;;77664422110000000000111122222222221111111111111100002266::??HHWWeerr{{vvssppmmkkkkllllmmnnpprrttuuvvxxxxxxxxyyzzzz||yykk]]PPIIEECCAA@@AACCCCDDDDDDDDCCCCAA??<<99663311110000....//3366::BBQQbbrrTTTTRRQQPPMMIIDD??::66332211111122335577::;;;;99774422//----113377AARRffyyzzggTTCC::6633//,,--//335599BBSSddvv{{nn__WWSSOOGGBB??;;77443322000000000000000000000000000000111111113399??FFPP__llxx{{vvrrnnllllllllmmnnpprrttuuvvxxxxxxyyyyyyzz{{}}ttii^^XXUUSSQQQQRRSSTTUUVVVVVVUUTTQQLLGGBB==8844332200//..00224477==JJXXeerrwwwweeeeccbb``[[TTLLEE>>77332211111111224455666666443311//--,,,,002266??PPddwwyyffRRAA884422..,,++..225599BBSSeevv~~xxuuuuuuuuwwyy||~~yymmffbb]]TTMMHHBB;;663311//..//////..........////////....00000044<>885522..--......----------......------//001166@@JJUUaaqq||~~vvoohhaa]][[[[ZZZZ[[\\^^^^__````aaaabbbbbbaabbddffhhllsszz{{wwvvuuttttvvwwyyzz||||zzyywwrrii__VVKKAA;;775511////0022334499@@HHQQXX[[[[xxll__SSGG<<66442200//0011111122222222221111//--..225599BBSSffyywweeRRAA884411--****--114488BBSSeewwuullccZZUUSSSSRRRRTTUUVVVVUUVVZZ]]aaiiww{{ppff\\RRFF??::5511////////////////////////..--..001144::EEQQ]]jjyy~~uummee]]UUQQOONNLLLLMMOOOOPPPPQQQQRRRRRRRRRRQQRRTTUUWW[[cclltt||xxmmbbVVII@@;;7722////0011224477<>GGXXiizz{{uuqqkkaaXXQQIIAA==;;::888899::::998899==@@EEOO``ssyynn``UULLCC;;7777775555666666665555554433447799<>==<<::::;;<<<<<<;;;;;;;;;;;;;;;;;;;;==>>??BBHHOOWW^^ddggggiikkmmnnrryy}}oo__RRHH??6622111111001122445566778888ttddTTEE;;6622..,,--....------------....----//4488==GGXXkk}}{{jjXXII@@<<::66444466::==AAKK[[ll}}wwllffbb]]UUNNHHBB<<887766444455666644334488;;@@JJ\\ooyykk__VVLLCC>><<;;999999::::::::::::887788::<<@@GGTTbboo}}}}vvnnee``]]XXQQKKFFAA<<99777755556666666655555555555555555555778899<><<<<>>BBEEIIQQ``ppttgg\\UURRNNHHBB??;;7755443333223333331100115588==GGYYllxxmmbbWWMMHHFFEECCCCCCDDDDDDCCCCCCAA@@AACCEEHHOO\\hhuu||ssjj``VVQQNNKKEE@@==::664444333333333333332222222222222222222244445577;;??BBFFIIKKKKLLNNPPQQVVaakkvvrrbbUUHH;;55332200//0011112222333333tteeUUJJCC==66333333332233333322222233334488??EEMMXXiiyywwii\\UURRPPMMLLKKMMQQSSWW^^kkxx}}ppddWWLLEECC@@<<886644220000////////////--,,--114488CCUUhh||||rrhh__YYWWVVTTTTTTUUUUUUTTTTTTRRRRRRTTVVXX^^iiss~~||ppee[[RRHHCCAA??;;7755331100//////////////000011111111111100//////000022446699;;======>>@@AACCHHSS^^iivv}}ll^^OO@@885533////0011110000//////||oo__TTKKCC;;7777775555556666555555777788==FFNNXXddttvvkkeebb``^^\\\\^^aaccggmmvv~~ppddXXMMBB<<::9955332211//....------------++))**..1166@@SSggzzwwookkiihhffffffggggggggggggffeeeeggggiimmuu~~||rrddYYPPHH??::997744221100..------------....001122223333222200//....--....00223355777766779999;;??IISS^^ll||rrbbRRCC::774400////0000//////////xxjj^^TTKKBB==;;;;999999::::998899;;<<>>CCNNXXccppyyttrrppnnmmmmnnppssvvzzrrddXXNNEE<<7766553311110000////....--------++))**..1166AASSffyy||zzzzxxxxxxyyyyyyyyyyyyxxwwxxxxyyzz}}}}sshhZZPPHHAA99665544221100//....----------..002244557777777755442200....--....00112233444444666666::CCKKUUbbssvvffVVGG==995511//0011110000000000uujj``VVMMHHFFEECCCCCCDDDDCCBBCCEEGGIIOOZZeepp}}~~||{{||}}vvhhYYMMEE>>6633223311111111111100000000//////--,,--114499CCTTggyy~~sshh]]PPGG@@;;553322221111000000////////0000224477::==??@@AA@@>>;;885533110000000011222222222233333366==CCKKWWhhww{{ll]]LLBB<<7711//0011111111111111yyoogg^^YYXXWWUUUUVVWWWWVVVVVVXXYY[[aajjtt~~||mm]]MMCC==7711////00000000111111222222223333331100115588<>996644331100000000////////....0066;;BBLL]]mm||wwhhWWKKCC<<44111111000011111111}}vvookkiiiigghhiijjjjjjiijjllmmooss{{xxhhXXGG==8844//--..////////0000113344445555555533223377::>>GGXXjj{{~~sseeZZQQGG==774411//....000011224444444444667788<>::7755331100////........----//4488==FFVVffvvrr``SSII@@77222222000000111111||{{{{{{{{||~~~~~~~~~~uueeUUEE;;7733//--..//////////112244557788889999886677;;>>BBKK[[ll}}}}ttii[[QQIIAA99442211//////00223344556666667799::<><<9955332211//////////..--//3366::CCRRbbqq||jj\\PPEE::44332200//00111111ttccRRCC::6633//....0000001122446688;;==??@@@@AA@@??@@DDFFJJRRaapp{{qqgg\\PPGGBB<<6633221111001122447799<<>>>>==>>@@BBEEJJUU``kkuu}}xxooddYYNNHHEEAA<<9977553311110000....//335599AANN\\jjxxtteeWWJJ==66442200//00111111~~~~~~qqaaPPAA885533//..//0022224466::>>BBFFJJMMNNOOPPPPOOPPSSUUXX__jjww~~||zzuullccZZPPEE>>::66220000111122335599==BBFFJJKKKKLLPPRRTTYYccooyyuujj__YYUUQQJJEEAA==8855332200////00224466<>88553300....//11113366<>FFNNVV^^ffjjmmooqqrrqqqqssuuwwzzwwnnffbb``````bbeekktt}}zzoohheecc``____``^^]]\\YYSSMMGG@@::66442200//..//11224488@@IIQQZZbbffggiimmooqquu||~~zzvvqqgg]]TTKKAA;;88551100//0022224477==DDKKRRYY]]__``bbaa``aaddffiipp{{wweeSSBB995533//..//111111»yyll``ZZWWUUQQPPPPPPPPNNMMNNPPRRUU[[ffqq||pp``PPAA885533//..//2266::>>EEOOYYbbkkttzz}}}}ttjjaaXXRRPPPPPPRRUU[[eeooyyyyll__XXTTRRNNNNOOOOOONNNNLLHHDD@@;;7744332200////00224466;;EEPP[[ffppuuwwyy}}~~vvkkaaUUIIAA<<883300001111223366::??CCHHLLNNOOOOPPPPOOPPTTVVZZaann{{xxffTTCC::6633//..//111111¿ÿü´wwii\\OOHHEECCAA@@@@AAAA??>>??AACCFFMMZZffssoo``PPAA88442200//1155;;AAGGPP\\ggqq{{}}wwmmccZZRRIIDDAAAAAACCFFLLUU^^hhrr||~~oo``QQIIEECC??>>??@@@@????>><<::77553322111111//..//335599@@MMYYeerr}}||qqddVVKKDD==66221111111111335577::<<>>??@@AAAA@@??@@DDGGKKSSbbqq||iiWWEE;;6633//..//111111ÿùyyii]]QQDD>>;;::887788999977667799;;??FFSSaaoo}}~~oo__PPAA88442200002277??HHPP[[iitt}}wwrrnnii__VVNNGG??;;999999::==BBJJRRZZccllrruuyyyyiiXXII@@<<::6655778888888888665533220000000000//..//3366::BBPP__llzzssccVVLLBB8833222200001122445566777788888888776677;;>>BBKKZZkk{{}}jjWWEE;;6633//..//111111¾½º||jj\\QQGG==88666644444455554433446688;;BBOO]]kkyy}}nn^^OO@@773322001144::DDNNYYeess~~~~uujjdd__ZZRRKKEE@@::775555556688<VTA?;;??BBHHNNRRVV]]hhss~~ssccRRCC::6644000011333333332222221111111111111100//0066;;AALL[[jjxxxxhhZZKK>>66442200//00111111222222223333331100115577;;DDUUffxx||iiWWEE;;6633//..//111111xxjj[[KKAA<<7711////////..//////..--..001144::EEQQ]]jjyy~~nn__OO@@773311112277??MM\\jjyy||nn__PPHHDD@@::66553311//////////m}~446688;;AADDHHOO\\iiuuqqaaPPAA884422..--..//////////////00000000000022222266==DDKKVVffuunn__OO@@885533//..//000000//////////////--,,--113377@@QQccuu||iiWWEE;;6633//..//111111yyttrrqqssuuxx{{zzjj]]OOAA996633//--................--..00002266@@JJUUaaqq}}~~oo__OO@@772211112277@@OO^^nn~~xxhhXXII@@<<8844111111//..........Qe}1111225599<>OOaass||jjWWEE;;6633//..//111111vvnnggccaabbddggjjrrmm^^SSHH==66442200..////////////////////11111155==EENNZZiivv~~oo__OO@@772211113377AAPP``oouuffUUFF==99662200000000////53////NX761111226688;;CCPP^^llzzrrccSSDD::5511--++,,----------------......--..224488>>JJUU``mm}}rraaQQAA884411--,,--......--------------++**++//1155>>OOaass||jjWWEE;;6633//..//111111yynnccZZTTRRRRTTVVZZbbqqss``RRIIAA883322220000001111111111111100111111003399@@GGQQ``nn{{~~pp__OO@@772211113388BBQQaaqqttccRRCC::664400//0011111164NL1122LNQN00//00446699@@MMZZgguuuuggYYJJ@@;;6600....////////////////////////115599>>GGTT``llyy||mm^^OO@@884411--,,--////////////////////--,,--113377@@QQbbtt||jjWWEE;;6633//..//111111ssffYYNNFFCCBBDDFFJJTTeeww||ggSSFF??9922//00111111111111111111111111111100002277;;@@IIXXggvvpp``OO@@772211113388AAQQbbssrraaQQAA884422....//11111111;6ZFB<2XwYY00////112255;;FFRR^^llzzzzoobbTTJJCC<<66333333332233333333223333333366<>::99;;==AALL^^qqvv``LL@@::55//--..000000111111111111111111111100//004488<>9977664444556666666666666666666644333377::>>GGVVggww{{iiVVDD::5522..--..//////{{nn__PPCC::66667788==HHZZnnss]]II==8844//--//111111111111111111111111111100//004477;;CCRRccssqqaaPPAA773311113377AAQQbbssrraaQQAA884422....//11111111B7`=26źij<:////11112266>>FFNNXXffppyyuuhh]]TTKKBB==;;::8888889999888888::;;<>5500////1166AATTii~~nnXXDD::5522..--//111111111111111111111111111100////335588@@OOaarrssbbPPAA772211113388BBQQbbrrssbbRRBB995533//..//11111111@4VD4-yvdc11111111113377::==DDOOXXbbmmyywwnndd[[UUSSQQOOOOPPRRRRRRQQRRTTVVXX]]ggqq{{{{nnbbWWLLFFDDBB@@??@@AAAAAABBBBBBCCCCCCCCBBAA@@>><<;;;;==AAFFKKOORRSSTTVVVVVVUUUUUUUUUUUUSSRRSSUUWWZZaallxx||jjWWFF<<8855110011333333{{ll\\LL==44//..//0066AATTii~~llVVCC995522..--//111111111111111111111111111100////335588@@OOaassttbbQQAA772211113377AARRbbssttccSSCC::6633//..//11111111;0LL=6}nn111111111122446688==FFOOXXbbppzzzzrrjjffddccaaaabbccccccddeegghhjjnnvv~~nnaaVVLLAA<<;;::888888999999999999::::::::997777777788;;BBIIPPXX__ddffggiiiiiihhhhhhhhhhhhggffffhhjjllrr{{}}kkYYHH>>::77332233555555||mm]]MM>>5500//002277BBUUjjllWWDD::6633//..//1111111111111111111111111111//..//335588AAQQbbttttbbQQAA772211113377AARRccttuuddSSBB995533//..//1111111170JI<7pp:9111111111133334488@@HHPPZZhhss}}yyvvttssrrrrssttuuvvvvwwyyzz{{}}rrbbVVLLDD;;77666644444455555555555555666666553333556688==FFQQ[[ffppuuwwyy{{||{{zzzzzzzzzzzzyyyyyy{{||~~~~mm\\KKBB==::665577999999}}oo__OO@@772211113388CCVVjj~~llWWEE::6633//..//1111111111111111111111111111//..//335599BBRRccttuuccRRBB883311112277AARRccttvveeTTCC::6633//..//111111118.KC83~KJ111111000011112255;;AAHHQQ__llwwvvggWWLLDD==6633333333223333333333333333333333110011335588>>KKXXeerrqqaaRRIIEEBB>>>>??AAAAAApp``OO@@662211113399DDVVjj~~kkWWEE;;6633//..//1111111111111111111111111111//..//335599BBRRccuuvvddRRAA773311113377AAQQbbrrvveeTTCC::6633//..//11111111:/LC9/kk11111111111100//1166::@@IIXXffss||mm]]LLAA;;6600....////////////////////////////..--..224488@@OO__ooyykk^^VVSSQQNNMMNNPPPPPPqqaaPPAA772211113399DDVVjj}}}}iiUUCC995533//..//1111111111111111111111111111//..//335588AAQQccuuwweeSSBB883311113377AAQQbbrrwweeSSBB995533//..//111111117,FB7+zicͷ^[86<6|?7v;4y73}00....//3377<3'jWNtaid\eSLU?)0 "'1>885500..//0000B8m          2+7TFYfZ{``bbddffhhnnwwrraaPP@@774422....//111111111111111111111111111100//1166::??II\\nn||rrlliigggghhkkppxxttccRRBB773311113388CCTTggzz~~nn\\KKAA;;6600//00111111111111111111111111111100//0066;;AAKK\\nn~~zzggTTCC99552200//2266::>>BBHHPPTTYYaann{{pp__NNCC<<7711//001111,0       5'I6,L70J?UA4E=/>66222222>6x       F+rP:PKDDBB??>>>>@@DDFFIIPP]]kkyyttddTTCC::6633//..//1111111111111111111111000011111144<>;;::::::<>774422..----............----..224477>>IISS]]iiyyyyffSSBB884422....//112222113377::>>GGXXii{{ooaaVVJJ>>8855337%H       H3-& #,E0U98;;CCRRccsswwggWWFF<<7744//----....................----..00113399DDOO[[jj||uunnjjddZZRRKKEE>>997766665577;;CCKKTT__mmxxrraaPPAA772211113399DDUUhhzzwwkk__TTGG>>::5511////////....////////115599>>FFSS^^iiuuyyggTTCC::6633//..//111100//115588<>9955!' ,Q4(WED=z@1P**  #@2KZRbbss{{ll]]LLBB;;6600....////////////////////..--..002255<>774433332222222233334477==CCIIRR``llww{{iiVVEE;;6633//..//0000..,,--113377AARReeww~~qqccTTIIBB<<   CZPtcctttteeUUJJCC==663333333322333333333333332211115566::AAPP__nn~~ttii]]QQJJGGCC==997755331100////..//115599>>EEQQ\\ggssqqaaPPAA772211224499EEVVii{{}}qqaaUULLDD;;77666655555566888899<>IIRR\\gguu~~oo__OO@@772211224499EEVVii||}}nnaaWWLLBB==;;;;999999;;==>>??DDMMVV``llzznn\\II??9944..,,--..--,,**++//1155??PPccuu{{kk^^UUKK 4%$H/)   ?1]--1155;;EEVVggwwyyii]]SSJJAA<<::::888888999999999999776666::<<@@HHWWhhxxvvppllgg]]UUMMFF>>::8866442222110000//////....//11224499BBJJRR]]kkww~~oo__OO@@772211224499EEVVii{{||ooccXXMMGGEEDDBBAABBDDFFGGIINNWWaakkwwrr``OOCC==7711....//..--,,--113388AARReewwwwjj``UU% & E2-74<)D  D4X;;AALL]]ll{{uuii^^TTJJEECCBB@@@@AABBBBBBBBAAAA??>>??BBDDGGOO^^nn}}rree^^ZZUUMMGGBB>>9966554422111111111111111100000011222266==CCIISSaannzz~~oo__OO@@772211113388CCTTffxxvvkk``ZZWWUUSSQQQQRRTTUUVV[[ddmmwwzzkkZZNNFF??77443333220000115588<>9977442200////////001111111111111111111100//1166::@@JJYYgguu~~oo__OO@@772211113388BBSSeevv{{qqlljjhheeccbbccccddeeiippxxuueeYYPPGG>>9988775533223377::>>GGXXiizz||ss4-0 3+$  /5334466A>@4L&" D-:rrzzqqiieeccbb````aabbbbbbbbaa``__]]]]__``cchhss}}mm\\LLCC>>;;55221111//////////////00001111111111000000....//3377<8y55G@}  ^Xggss~~ssbbQQ@@773311----//11111111111111111111111111111111111100////335588@@OO__nn~~~~oo__OO@@773322000033::EEPP\\kk}}}}uuqqppooooppqqssttuuuuuuuuuuttuuwwyy||||ttmmiihhggeeccccddffhhkkppzz <1*77AALL90<0&vsssaaPP??662200,,,,..//0011111111111111111111111111111111//....224488@@OO__nn~~pp``OO@@88442200//1166@@IISS``rr½~~ttjjeeccbb````aaccccddddddddcccccceeggjjoovv~~~~zzyyxxwwwwvvuuvvxxyy{{  ^=5" +/GGTTaasmfNVttbbQQ@@773311----//11111111111111111111111111111111111100////335588@@OO__nn~~pp``OO@@88442200//0044<>==;;::::::::::::::::998888::<<>>CCLLTT]]ffoossvvyy||vvttsspd{ 7E9THH_Tznc}}yyttrrppnnmmmmmmmmmmmmmmmmnnnnooooppppqqssttuuww}}pp``PPAA995533//..//111111111111111111111111111111111111//..//335599AAPP``oo~~oo^^MM>>663311//--..11334466;;EEOOYYffxxº||jj\\QQGG==998888665566666666666666554444667799==DDJJPPXX``ddgglluu~~zzooggddbbfb   77D6V% KK^^ppvvllffddaa__]]^^^^^^]]]]]]]]]]^^________``bbcceeiippxx}}mm^^OO@@885533////00111111111111111111111111111111111111//..//335599AAPP``pp~~oo__NN??884433//..//0022222266>>FFNNZZll}}oo\\OOGG??7744333322222233333333333333222244446688<<@@DDIIOOSSWW]]hhrr||}}nn``WWRRPPPP#"  <;>>6';@.Bccuuxxkk^^WWTTRRNNNNNNOOOONNNNNNNNNNNNOOOOOONNOOQQRRTTYYbbkktt~~xxii[[MM@@885533////00111111111111111111111111111111111111//..//335599AAPP``ppqqaaPPAA995533//..//111100//1177<>??@@@@????????????@@@@@@??@@BBCCEEJJSS]]ggrr~~~~ooaaUUHH<<66442200//00111111111111111111111111111111111111//..//335599AAPP``ppssccRRCC::6633//..//0000..--//4488>>HH[[mmrr^^KK??9944..,,--....--------,,,,,,,,,,,,----....//1122335599<<@@FFOOXXaajjrrvvxxyy{{zzyyyyzzzz{{nn\\KK@@;;9999/$8               -/#> SM~TTbbuu||kkZZII@@<<9955445577777777777777888888887788::::<<@@IIRR[[fftt~~uuggZZOOEE::55332200000011111100000000000000001111111111111100////335588@@OO__oouueeTTEE<<7733//....0000..--//3377<>8844..--..////....----,,,,,,,,,,,,----..////001111335588::??FFMMTT[[aaeeffgghhhhggffhhiikkppyy}}kkYYHH==775555  MGM7*.0"l`dF67"8,.!+ 0'=99.+N@ZZZjj}}zzhhVVEE<<885511001122222222333333444444444444666677::BBIIQQ[[iiuuxxkk]]QQHH@@77332222000000000000////////////////00000011111111//..//224477??NN^^oozzkkZZKK@@;;6611//001111//..//3366::DDUUggyynnZZGG<<7744//--..000000//////////////////////0000111111111133446699>>BBGGLLPPRRSSTTTTSSRRSSUUWWZZ``mmyy{{iiWWFF;;6644?6].(0jaqjZXuv92-    4'=00B7n?9x::FFRR^^nn{{hhVVDD::6633//..//1111111111111122222222222233334466<>@@BBBBCCCCBBAAAAEEGGJJRRaappxxffSSBB7722002 -$/8  ' ohzzxwwigbSQvv2#" F45VHKH8Ab`PP/*;,I6622000033::FFRR^^mm||iiVVDD::6633//..//11111111111111000000////////////115599==DDPP\\hhss}}uuhhZZKKBB<<7722000011111111111111222222222222222211111111111111//..//335599BBQQaaqq||oo__TTKKCC::55443311..--..224488AARRddvvzzggUUCC995522....//1122334455556666666666555533222211////........//00224455779999::::::997788<<>>BBKKZZjj{{wweeSSBB7722A9s++")  &+50/e]kkrrvv{{{smm^^PPCB88442200002299DDNNYYggyy~~kkXXFF;;774400//113333332211110000////............//335577==HHRR]]ggrr||{{qqccTTGG>>995511//0011111111111122334444555544443322111100//////..--//3366::CCRRbbrrzzjj^^SSII>>88664411//..//335599BBSSeewwwweeSSBB995533////002244557788::::::::::9999886655332200//////////001111223344445555666655334488;;??HHXXhhyywweeSSBB8833=4Z##/#  !*)00.-ZSw]]ccfflluu}}{{ll^^OO@@88442200//1166@@IISS``qqnn[[JJ@@<<9955445577777766664433221100////////////0022335599BBJJSS]]iisszz||xxnn``QQDD<<884400////0000000000223355668888888866553311//........--,,..3377<>::6622//..//3355::CCTTffwwrrbbQQBB99553300//113377::==@@BBDDDDDDDDCCBB??<<::774422110000000000111122223333333333331100115588<4Y  +(  ))0=;;RJsOOSSWW\\ffooxxzzll]]OO@@88442200//0044<><<997744221100000000000022223366==DDKKUU``kkttxxuukk^^PPCC;;7733//..//11111111224477::==??@@@@??==::77442200//////....0066;;@@JJZZjjyywwll__QQGGAA;;5500//00225599CCTTffxxxxiiZZLL??77332200002266<r99;;<>GGRR__jjppppgg[[MMBB::5522..--..11335577;;BBIIPPVV[[^^^^[[VVPPIIBB<<886655555566;;CCKKTT__oo||vvffYYOODD::330000224499CCTTffwwttccVVLLBB88330011113366==HHSS^^jjttzz||||||zzvvppff\\SSII??99553300////00000000000000//////--,,--114499BBSSdduussbbQQ@@773311--102*K!+ -*9Fe`fE=r667788<>773311//..//11446699==EELLSS[[ddjjmmss~~}}yyvvttrrqqqqqqoonnllhh``XXPPGG??::77442211111111//..//3377==EEPP^^iipppphh[[MMBB::6633//..//115577::@@IIRR\\ddjjmmmmjjdd\\SSIIAA<<::999999;;@@JJSS]]iixxqqbbUUII<<441100224488BBSSeewwyyiiXXLLDD==5500//00224488@@MM[[iiwwvvkk``TTGG??995511//0011111111111111111111//..//3366::CCTTeevvssccRRAA884411----42T)8'5>IUojnD=u96334466<SZdkfhtd_<6y00//115588==DDOOYYccnnzz||nn__PPAA996633//....00001111335577::==CCFFIIOOZZeeoozz}}ssii^^QQHHAA;;5522111100//..//3377;;CCNN\\iiqqqqii]]OOCC;;663300//0055;;BBIIRR``llwwzzppff]]WWTTSSSSTTVV\\ffppzzoo__OO@@662211113377AARRddvv||jjXXGG>>995511----//3366::DDUUhh{{}}pp``TTKKCC::55332200////////////////--,,--114488BBSSeewwuuffUUFF==99662200<=d68@>EEKKRRZZbbggjjooww~~vvgg[[OOEE::55332200..--//3377;;CCPP__lluuuumm``QQDD;;6622000033::EEOOZZffvv||xxvvuuuuvvxx||rrbbQQBB883311112277AAQQbbttxxffTTCC::6633//,,,,//3366;;EEXXllyyll``TTGG>>995511////////////////--,,--114488BBSSeeww||nn``QQIIEEBB<<99GEvWSSe_`qdd@:{0000//000022222255;;@@FFOO\\hhss}}uuggYYJJAA;;6600....//////00111111222244556699==BBFFLLRRVVYY__hhppxxppbbVVII==774422//----//3377==EERRaannwwwwnnaaRREE<<6622001144<>BBEEHHNNWW``iiss}}wwhhZZLL??774422//----//3377<>CCKKSS[[ddmmssvv{{zzjj\\MM??885533//----//3377<>774422//----//3377==FFTTddss}}}}tteeUUFF<<5522112288BBQQaappoo``PPAA773311113377AAPPaarrvveeSSCC::6633//,,,,//3366;;EEXXllwwmmdd[[VVTTSSQQQQRRTTTTSSRRSSVVXX[[bboo{{||soccUUKKCC==66222211000000111100001177<>GGVVgguuuuffUUFF<<5522112277BBQQbbrrnn__OO@@772211113377AAPPaarrvvddSSCC::6633//,,,,//3366;;EEXXkkzzrrjjffddddbbbbcceeeeeeeeffiikknntt}}~~qqaaUULLCC::55332200////0000..--//4488==GGXXjj{{yynniiffaaYYQQKKEE>>::886644221111////..........//1111224499==AAIIXXhhwwvvffYYOODD::55332200..--0055::AAJJYYiixxuueeTTEE::3300//0066@@QQaarr~~nn^^OO@@772211113377AAPPaarruuddRRBB995533//--,,//3366::DDWWkk~~~~xxuuuuttttttttuuvvwwwwyy{{}}~~nnaaVVKK??885533//..//0000..--//3377;;EEVViizz~~yyvvqqgg^^UUMMDD??<<::6644332200////////////00000000226699==FFUUffww{{ll\\QQHH??7733221100....0066<>::885533110000000000111100//004477;;DDTTeevvssccSSIIBB<<5511111111////2299@@HHRRaapp}}vvffTTEE::3300//0055@@OO``pp}}mm^^OO@@772211113377AAPPaarruuddRRBB995533//--,,//3366::DDWWjj~~}}qqddUUJJCC==6622221100....//335599BBSSeewwvvllaa[[XXTTMMGGCC>>885544331111111111//....224488AARRddvv||ll[[KKAA<<882200001111111155>>GGPP\\kkyy{{jjXXII>>7744334488BBQQ``oo~~||ll]]NN??5511////1166@@OOaarruuccQQAA884411--****--114488BBUUii||~~qqaaUULLDD;;66443311..--..224488AARRccuu}}ttookkff]]UUMMEE==99664422000000//..,,--113377@@QQddvvyyhhWWGG==995511////0011112277BBMMYYgguu}}llZZKK@@::776677<>44//....0055??OO``qqttbbPP@@773300,,))~))~,,003377AATThh||||ll``UUKK@@99775511//..//335599BBQQbbss~~xxmmccYYOODD==99662211111100//--..224488AARReewwxxggUUEE<<774400----//11113399FFSSaaoo~~pp^^OODD??<<;;<<@@IIVVbboo||}}mm]]NN??5500////1166@@OOaarruuccQQAA884411--****--114488BBUUii||yyllaaUUHH@@;;7733//..00224488@@OO^^mm||~~rrffYYLLCC==993311111100//..//335599BBSSffxxxxffTTCC::6633//----//223366==KKZZjjzzvveeVVLLGGEECCDDHHOOYYddnnxxppaaRRCC995533335599CCRRccttxxffUUEE<<885511....115588==GGYYll||ppddUUJJCC==5511//00224477>>JJWWccpp}}uuffVVKKDD==6622111100....//335599BBSSffyywweeRRAA995533//----//335599BBRRccssssff^^YYVVTTSSUUYY__eekkqqwwzz{{||~~rrccTTEE;;77555577;;EETTeeuuyyhhVVGG>>::884422114488;;??IIZZmm{{uuqqppooooqquu{{zzwwuussqqqqrrttvvyy}}qqaaUUKKBB88331111112255;;EEOOXXccnnuuyy~~rraaTTJJAA8833222200....//335599BBSSffyyyyffRRAA884422..,,--004477;;DDUUffxxuuookkiieeddddeeeegghhjjllllllmmmmnnnnooqqrrttuuwwxxyyzzzzzzzzzz||}}~~uuffWWHH??::9999::??HHWWhhxx||kkZZKKBB>><<88666699==@@DDMM^^ppvvkkeebb``````cchhppyywwnniiffddbb``__aaccffiipp{{||ll^^RRFF;;44221111224499AAGGNNVV__eeiipp{{{{ii[[PPEE::44332200..--//3366::CCTTggzzzzggSSBB995533//--..115599>>GGXXiizz~~{{wwttrrookkhheebb``^^^^^^^^^^____aabbccddffgggghhhhhhhhhhjjkkllqqzzzzll^^QQHHDDBBBBCCGGPP]]mm||qqbbTTLLHHFFBB@@AACCGGJJNNVVeeuuttgg\\UUQQPPPPQQTTZZddoozzyyppff]]WWUUSSQQOONNOOSSUUYYaann||vvggYYKK>>66332200003377;;??DDIIQQUUYY``mmyyoo``SSGG;;55332200..--//3366::CCTThh{{{{iiUUDD::6633//--..1177<>@@DDFFJJSSbbsspp``PPAA88442200//11446688::==CCFFJJRRaaoo}}ppaaTTHH;;55332200..--//3366::CCTThh{{||iiUUDD::5533//..0044<>BBKK\\mmuuccRRAA885533////002233334466::==AAJJYYiiyy||jj\\PPEE::44332200..--//335599BBSSggzz}}iiVVDD::552200//1166@@IISS``qqwwgg[[QQHH??::99997777778888888888889999::::999999;;;;==BBMMWWbbpp||wwttrrrrrrttyy~~}}}}||}}ttddWWMMDD;;5533446688;;CCQQ``oo~~}}ttjj\\RRJJCC;;7766664422113377::>>HHYYll~~wweeSSBB884422....//112222113377::>>GGVVffvvssaaTTJJAA8833222200..--..224488AASSffzz}}iiVVDD994422000033::EEPP[[iizzqq``SSJJBB::66666644444444444444444444555555555555777788<>MM\\ll{{{{ooddZZPPEE==995511//////..--,,--114488BBTTggzz~~kkYYGG<<7733//--..0000..----113377@@QQbbssrraaPPEE>>882200001100//..//3366::DDVVii||||iiVVDD994411112266@@OO^^mm}}rr``OOCC==7711....////////00000000000000////////..////....1177==CCNNaattzziiXXGG<<7733--****,,002255==LL[[jjyy||qqccYYOOFF<<774411//--......,,++,,003377AASSffyynn[[HH==8844//--..//..,,++++//1155>>OOaarr||llZZII??9955//--..////----//3377<>HH[[oovvffUUDD;;6633//,,,,--002266>>LL[[jjxx}}ssggYYOOHH@@8844332200////////--,,--114488BBTTffyypp]]JJ??9944..,,--..--,,**++//1155>>OOaarrzzhhVVEE;;6622..,,,,....--,,..4488==HHZZmm{{hhTTCC883311113388BBSSdduuyyhhWWFF<<7733//--..////////00001122333322110000////////..--//4477<>66333333221100115588<>EEMMYYjj{{zzggTTCC883311113399EEVVii{{vvggXXJJ==66442200..//0022335577;;>>AACCCCAA>>;;7755332200....//335599CCUUii}}}}}}¾¾ll\\PPDD88331111//....004477;;BBOO]]jjttzz{{wwooee[[QQFF<<77442200////000000111111//..//3366::CCTTffxxvveeXXNNEE<<7766664422223377::>>GGVVggwwxxggVVFF==997733222244666677<><<88666688::;;==BBMMWWbbooxxffSSBB7722111144::EEXXkk}}||oo__SSIIAA8833222200////114477;;@@GGNNTTXXWWSSMMFF??::664400..--//335599CCUUii}}UUVVXXZZ]]ddqq~~}}kkXXKKCC<<441100111100//2277<>BBKK\\mm~~}}||||}}~~pp\\II>>995500....0011223366>>GGPP[[eeoouuwwssjj^^QQDD<<7733//..//11111111111111111111//..//335599BBSSffxx{{zzzzzz||{{ssllhhffeeccbbbbcceeggiiooxx{{rrmmkkiiffddcccceeeegglluu~~@@V77R--O$$KHGGG3388DDVVhh{{{{kk__TTJJ??9966441100000011223377@@IISS__kkvv}}{{sshh[[PPFF==5500..//114499CCTThh{{334488;;??HHYYkk||yyqqlljjjjjjlloouunnZZGG==884400--..00223355::CCNNYYccnnww{{{{uukk^^PPCC;;6633//..//11111111111111111111//....224488AARReexxzzqqkkiihhhhjjmmrrxx~~~~zzxxvvuussssssttvvwwyy}}~~||zzxxvvvvvvvvww{{@@VGHIDDUUhhzz||oo__TTKKCC::55443311//..//11223399DDPP\\iiww}}qqccVVKK@@6600--..003388BBSSggzz00115588<><<;;;;;;>>DDOO[[hhuuyyffSSBB995522..,,--//335599AAOO^^nn{{{{mm]]MM>>774422//..//1111111111111111111100//004477<>77442200////0000....//3366;;DDUUeevvzzkk]]OOBB9955556688<>997766666677<>773311//..//1111111111111111111100//115599>>GGXXkk}}yyggUUEE<<8866444466<>HHYYjjzz}}nn``RREE<<888888::??IIXXjj{{,,--114488BBTThh{{ssff__\\YYUUSSSSQQLLGGCC>>9955443333223377??HHQQ\\iivvuueeSSDD;;7733//----//3366::BBQQbbrr~~oo__NN??884433////001111111111111111111100//1177<>DDKKVVffuu>>UCCXEEYEEYyyooccVVLLDD==66222211000000111100//1177<>;;99663311//////....1177>>FFPP]]llxx}}sseeUUFF==8833//,,--//335599BBRRcc@@THHWNNYQQZPPZLLXEEV>>S55P,,M##JHGGFFFGGGGGGGGGGGGH!!J%%K))M//P88SAAVHHYOO\TT]VV^UU^PP\HHY@@U66R,,M##JHGGFFFGH J$$K**M33Q==UEEYNN]WW`\\b^^c__caadaad``d__c__c^^c^^c^^b]]b]]b\\a\\`\\`[[`ZZ`ZZ`ZZ`[[`[[`\\`]]b]]b]]b^^c__d``daaebbfccfccfccfccfbbfbbe``d__d^^c]]b]]b\\a[[`ZZ_ZZ_YY_YY^YY^YY^YY^WW]UU\SS\NNZFFW>>T;;U99S33RTTIIAA;;6611//00111100000022222266>>FFOO[[ll{{yynnccXXQQMMMMMMOOSS[[hhuu223377::>>HHYYmmqq^^MMDD@@==998888997755442200//......--,,..44::@@JJWWffrrzzzzqqddUUHH??995500----//3366::CCSSee@@U--O((M##K;;7733//..//0000////00223355;;EEOOZZggxxwwnnee__\\\\\\^^aaggrr}}6677;;>>BBKK\\oooo\\JJ@@;;8844334455554433220000//////..--//4488>>GGTTccppxxxxqqddVVII@@;;6611..--//3355::CCSSee@@UIIX!!JIH2200////0000//..//335599@@LLXXddrrxxqqllkkkkkkmmoott||??@@DDFFJJSSbbttmmYYGG==885511001133332222111111111111//..//3377==EERRaannwwyyrrggZZMMDD>>8822//..//335599BBRRccuuHHXNNZGGG0000111100002277;;@@IIWWeeqq||yyxxyyyyzz||QQRRUUWWZZaann}}}}iiUUCC994411--,,--////0000111111111111//..//3366::BBOO^^llvvzzvvmmaaUULLCC<<5500//00225599BBQQbbssNNZGFF0022223377??FFNNXXhhvvbbcceeggjjpp{{||hhTTBB773300,,++--//////00000011111111//....225599AANN^^llww}}{{ttjj^^SSII@@7711//00224488AAPPaaqqMMZQQ[F00224477==HHQQ[[hhxxssttvvxxzz||hhUUCC884411--,,..00000011111111111111//..//3366::BBOO__nnzz||ssgg[[OODD99330000223377@@OO__ooLLYQQZF//3366;;CCPP\\iiww||iiVVDD::6633//..//11111111111111111111//..//335599AAPP``pp}}{{oobbUUGG;;441111113377??MM\\kkzzJJXFFF1177<>662211112255<>DDLLWWggvv~~~~}}}}zzggTTCC995533//..//11111111111111111111//..//335599AAPPaarr}}nn^^NN??773322001144::DDOO11P88RHHH44666677<>EEQQ\\ffqq}}oo``PPAA995522//..//2288==CCMM^^nn}}xxjjZZJJAA;;6600....////////////////////////////////////////////....005599??HHWWffuuNNZ--P--O--OSSRRRRRRQQQQQQSSTTVVZZaahhnnvv}}rrgg[[PPJJGGEEAA@@??@@BBBBDDHHQQZZccnnzz||jjWWFF<<7733//--..////////00000011111100////335599AAPPbbssssbbPPAA885533//..//11446699>>HHRR[[fftt~~qqaaPPAA885533//--..115599>>GGXXhhxxtteeUUFF<<7733..,,--............................................--,,..2266::CCRRbbrrPPZ88S77S77Sddddccbbbbbbbbbbbbddddeeggkknnqqttxx||||wwmmccXXNNEE??==;;99777788::::;;??GGPPXXccqq{{}}llZZII>>8844..,,--........//////000000//..//335599AAPPbbssrraaOO@@774422..--//1133445599AAIIQQ\\jjvvrraaQQAA884422..,,--004488<>::887755444444555566::AAHHPPZZhhtt~~qq__NNCC<<7711....////////00000011111100////335599AAPPbbssrraaOO@@885533//..//0022223366<>996644442222223333333355;;AAGGQQ__llxxyyjjYYMMEE>>66333333222222222222111111//..//335599AAPPbbssttccQQBB995533//..//111100002266::@@HHVVddqq~~yyhhVVEE;;6633//,,--//335599BBQQbbrrpp``PPAA995533//..//11111111111111111111111111111111111111111111//..//335588AAPPaarrTT]UU_UU_UU_vvkk__TTMMJJHHDDCCCCBB??<<9966331100////....////....005599??HHWWeerrttddWWNNEE<<77666644444444443333222200////335588AAQQbbttttccRRCC::6633//..//0000//..//3366;;CCQQ``mm{{~~||jjXXGG==8844//--,,..224488AAPPaarrpp``OO@@774422....//11111111111111111111111111111111111111111111//..//335599BBRRbbssVV^YY`YYaZZawwiiZZLLDD@@==998888997755442200////............--,,..2266::CCRR``nn}}oobbWWMMBB==;;::88778888776655442200////335599BBRRccttvvffUUEE;;7733//....0000//..//335599AANN\\iiwwxxqqmmkkjjllmmppvvnn[[JJ??::6600----//335588AAPPaarrpp``PPAA995533//..//11111111111111111111111111111111111111000000....//3366;;DDUUeeuuvvggWWHH@@<<9955445555443333221100//////////////..--..2255::BBQQ__mm{{{{nnbbWWLLFFEECCAA@@????==;;88664411//00335599BBRRccuuzzkkZZKKAA;;772200001111////00224477>>KKXXddqq~~yyppgg__YYWWVVXXZZ^^ffssssbbOODD==8822..--//335599BBQQbbssrraaQQBB995533//..//1111111111111111111111111111111111111111111100//1166::@@JJ[[kkzzuueeTTEE<<88551100223333222211111111111111111111//..//335599AAPP^^mm{{}}rrgg\\WWTTSSOONNNNMMIIDD??::66220000225599BBRRccttssccTTIICC==6622221100////00223355::EEPP[[ffqqwwyy{{~~~~}}zzrrii``WWNNHHEEDDFFHHLLUUffvv~~mmZZMMEE==5500..00224488BBQQbbssssbbQQBB995533//..//11111111111111111111111111111111111100000011222266==CCJJTTddssuuddRRAA884411--,,--////00001111111111111111111100////335588??NN]]ll{{~~uullggffdd``^^]]ZZSSLLEE??88330000224488BBRRcctt{{ll]]QQIIAA9955443311//////11224488@@IIRR[[ddhhjjllnnppqqppppoonnjjcc[[SSKKCC==::99;;==BBMM^^qqwweeWWLLBB8822//00224488BBQQbbssssbbQQAA884411--,,--//////////////////////////////////////..//11224499BBJJSS__oo||uuccQQ@@773300,,++,,....////00001111111111111111//..//113377>>MM\\kk{{zzwwvvttppnnllhh__VVLLCC::330000224499BBSSdduuvvgg[[QQHH>>9966442200000011223366<>HH[[nn¾»ppaaTTHH;;330000223388BBQQbbssssaaPP??662200,,++,,......................................--..224466==HHRR]]jjzzuuccRRAA884411--,,--////000011111111111111111111//..//113366>>MM]]mm}}||vvkk__SSGG<<441100224499BBSSdduurrff\\QQEE>>::66220000111111224488==AAFFJJLLNNNNPPPPQQPPPPOOOOMMIIDD@@;;773311115577<>551111113388AAQQbbssttbbQQ@@773311--,,--////////////////////////////////////////115599==EERR]]iivvuuddSSCC::6633//..//111111111111111111111111111100////335588@@OO__oovvggYYKK>>551111223388BBSSddvvttjj^^PPGGAA;;55221111111111335577::<<>>????@@@@AAAAAAAAAA@@??==::774411..,,--114499DDWWllĿûttccRRAA772211113377AAQQbbsswwffUUEE<<8855110011333333333333333333333333333333223333333366<>::773322335555556666666666666666666666555555777788;;CCJJRR]]kkxx~~xxuussssssuuww||vvddSSCC::6633//..//1111111111111111111111111111//..//3366::DDSSddtt~~nn__OO@@662211113388CCTTffxxuueeXXLLBB77220000....//001122334444555555555555555555554444331100//--++--2266;;GGZZooÿ}}jjWWDD993311112277AAPPaaqqzzjjYYJJBB>><<887788::::::::::::::::::::::::::::999999;;<<==BBKKSS\\hhvvyyqqiiddbbbbbbddggmmwwwwffTTCC::6633//..//1111111111111111111111000000..--//3377<>::6633222200//..--------------------------------..225588??KKVVbboo{{hhUUBB883311112266@@OO__oo||{{zzxxxxyyyyyyxxxxwwwwwwwwxxxxyyyyzzzzzzzzzz||}}~~wwnnjjhhffbb``^^[[UUNNHHAA;;6644446688<>IISS]]jjzzssbbQQAA773311112277AAPP``pp~~ppbbSSKKGGCC==997755331100////..//////////////////////////1166::??GGUUbbnn||uuccRRAA772211112266@@OO__nn}}sshh^^YYWWUUQQPPOOMMIIDD@@;;773311224466::CCTTffxxzzhhTTCC::6633//..//11111111111100000000////115599>>FFSS^^iiuu~~~~~~ssbbQQAA883311111155>>KKYYffuu||ppcc\\WWSSKKEEAA==9966554422222233333333333333222233334477>>DDJJUUddqq}}||kk\\MM>>552211113377@@OO^^mm}}zzmmbbXXMMHHFFDDBB@@@@??==::774422//----113388AARReexxzzhhTTCC::6633//..//11111111111111111122333366<>::8877555555666666666666666666888899==FFNNWWbbrr~~qqaaTTHH;;441111223377@@OO^^mm}}}}mmaaVVLLBB==<<;;9988888866443311//,,++++//1155??PPddwwzzggSSBB884411--,,--////////0000111133556677;;CCKKSS^^llyyhhhhhhggggffddccccbb``__^^]]____aaeemmuu~~ssbbQQ@@773311////2288BBKKTT``pp||{{ttii__VVMMDD??<<;;998899::::::::::::::::;;==>>@@DDNNXXbbnn}}vvddWWLLBB88220000224488@@OO^^mm||~~qqaaUUMMDD<<8877775555554433221100..,,++++//1155??QQddxxzzffSSAA773300,,++,,......////111122448899;;@@JJSS]]iiwwUUUUUUUUUUTTTTSSRRQQPPOONNNNPPQQSSXXaajjttuuccRRAA88442200//1155==CCKKUUccoozz{{ooeeZZOOIIFFDDBBAABBCCCCCCCCCCCCCCCCDDFFGGIINNXXccmmzzvvhhXXMMDD==5500//00224488@@OO]]ll{{~~qqddUUJJCC>>774433332222222222111100//..,,--114488AARRffyy{{ggTTBB884411--,,--//////0011335577;;??BBDDJJUU__jjvvDDDDDDDDCCCCCCCCCCBBBB@@????AABBCCHHRR\\ffrrwwffTTCC::5533//..//3377<>::6611////////////0000111122221100115588;;DDUUhhzz{{hhUUDD;;77551100112233444466::>>BBGGMMQQTTZZeeooyy::::::::::::::::9999998877779999;;@@IIRR[[ggwwyyhhVVEE<<774400..//115577;;AAJJRRZZddnnttxx~~{{qqlliiggeeeeffggggggffeeddccbbbbbbccddhhqqzzrrddYYMMAA::775511//..//224488@@MM\\jjyyppbbWWKK??884422..----........////0011223333223377::>>FFWWjj||||jjWWFF==997733222244666677::@@FFLLSS[[``cciiss}}6666666666666666555555444444666666::BBJJRR]]mm||{{jjXXGG>>995511////11335577<>MM[[jjyywweeXXNNDD::442211//....////......0011335577666677;;>>AAJJZZkk}}~~llZZJJAA==;;77666688::::<<@@GGNNVV__hhnnqqww333333333333333333333333223333333366==CCJJTTddttpp^^MMCC==882200//1111224477;;??CCHHPPTTYY``nn||~~{{yywwwwyy}}zzkkZZNNFF>>6622222200//..//224477??LL[[jjyy||kkYYMMEE>>662222220000000000000011335588;;======??CCEEIIPP__pppp__PPHHEECC??>>>>@@BBCCEEIIRR[[ddnnxx~~//////////////////////////////....0066;;AAKK\\mm}}yyiiXXLLDD==5511000000//0022446688<>BBFFJJKKLLNNRRUUXX^^kkyyxxjj]]VVSSQQOOMMMMOOQQRRTTYYbbkktt~~..........................////..--//3377<>8844//--..0000//..//336699AAOO^^ll{{{{jjYYHH>>995500..//0000////0022335599??EELLRRXX[[\\^^bbeeggllwwuukkffddbb``^^__``bbccffjjrrzz////////////////////////000000//..//3366;;DDUUggxx~~ll]]QQDD88221100..--..//000000226699==FFWWhhyyttjjddaaaaaaccggnnxx{{jjWWFF<<7733//--..0000//..//3366;;CCRR``nn||vvffVVEE<<7733//--..000000//11336699>>FFNNVV^^ffiikkmmqqssuuyyyyuussrrppooppqqssttvvzz111111111111111111111111111111//..//3366::CCTTffwwwwggYYJJ==553311//..//111100//004477;;DDUUffvvwwjj^^VVRRQQQQSSWW__llxx}yiiVVEE;;6633//..//111100//1166::@@IIXXeerr~~oo``QQBB::6633//..//111111112266::>>EEOOYYaajjssxxzz}}111111111111111111111111111111//..//335588AARRddvvqqaaQQBB::664400//001100//----113377@@QQbbrrrrccTTKKFFDDDDEEIIQQ__nn}}nhkgXVCC995533//....0011222266==CCJJTTbbooyy}}ppccVVJJ==77442200////0011222255;;AAGGPP\\ggppyy000000001111111111111111111111//....224488AARRddvvxxhhWWFF==996622000000//--++++//1155>>OO``pp~~nn]]NNCC>><<<<<>99777788==FFVVggxx^byKXciciOI995533//--..00335588>>HHRR\\hhvv{{ttmmiihhggffffgghhffddbb^^VVNNFF??8844222200////11335588==GGPPYYddrr||000000001111111111111111111111//..//3366::DDUUggyyrrbbSSJJEEAA;;77664422//--..113388AAPPaaqqxxggVVEE;;55333355::DDUUffwwmkYWYhabPLB?6633//--..2266::??GGSS__jjuuvvmmdd\\XXVVUUSSSSTTTTSSRRQQNNIIDD??;;66332211110000226699==DDOOYYccnn{{222222221111111111111111111111//..//3366::DDUUhhzz}}oo``XXSSOOGGBB>>;;773311224466::CCRRbbrruuddRRAA6611////1166AARRccuuqpWSSe_`qddGB5533//..0055<>;;8855331111111111113399>>DDMMYYeeooyy44444433220000////////////////--,,--114499CCUUhhzz||oohhcc]]TTMMGGAA;;6644446688<8{00//2277AAJJSS__oo{{||uuqqoonnllllllmmmmnnooppnnmmllgg``XXPPHHAA==<<;;99999999998888775544332200//..////001144<SZdkfhtd_=8z111155>>KKYYffuu~~rrff[[UURRPPNNMMNNOOOOPPPPPPPPOONNLLHHDD??;;7755443333223333332222111100000000//....00113399DDOO[[hhuu~~vvllbbYYTTRRQQOOPPQQRRSSTTTTUUUUVVVVVVVVVVUUUUUUTTSSTTVVXXZZ``kkwwJJIIFFCC>>::6644443333223333331100115588==GGYYllvvllccZZSSPPPPPPRRVV]]iivvyyjj[[NNFFBBBBBBDDHHQQ``ppwweeSSBB883311113388BBSSdduuON`)8'5>IUojnD>u74112277AAPP``ooxxjj\\OOGGDDBB>>>>??@@@@AAAAAAAA@@@@>><<997744220000////..//////0000111122222222111122446688??JJWWddpp}}~~~~~~~~yyppff\\SSJJEECCBB@@@@AABBBBCCCCDDDDDDDDDDDDDDDDDDDDCCBBCCEEGGJJPP]]kkyyWWVVRRLLFF@@;;887766555566666644334488;;??II[[mmyypphhcc``````bbeekkuuvvffVVGG>>::9999;;@@JJYYkk||xxffSSBB883311113388BBSSccttMEV!+ -*9Fe`fD>@@@@AAAA@@??@@BBDDGGMMXXddppzz~~wwooff]]VVRRQQQQOOOOPPQQQQRRRRSSSSTTTTTTRRQQPPMMIIDD@@;;77554444222222222222111111111111111111111100////335588@@OO__oo}}zzrrjjbb[[WWVVUUUUUUVVWWWWVVUUVVXXZZ]]ccpp}}qq``OO??5500////1166@@QQddvvwweeSSBB883311113388BBSSddttwln  +(  ))0=;;D>4400....0055??PPccuuuuddRRAA772211113388BBSSddtttko##/#  !*)00.-D=n11113388DDUUhhzzpp``OO>>5511//++**++--------------....0011223344444444667788;;AAGGMMSSYY\\^^__aa``____aacceeiiooww~~~~wwnnbbXXOOFF>>;;::::8888999999998888888888888877776644331100....----------....//11222233333333333333332211115577::BBPP__nn||~~{{yyzz{{{{||}}~~~~~~}}}}}}mm^^NN??5500////1166@@QQccuuttbbQQAA772211113388BBSSdduu"0+")  &+50/D=r11113388DDUUhhzzpp``OO>>5511//++**++----------------..0022446688888888::;;==AAHHPPWW__ggkkmmooqqqqppooqqssuuww{{yyppeeYYOOGG@@99665555554455555555444444444433332222111100//....------------..00223355777788888888888888776677::<>662211113388BBRRccuu}}oo__OO@@772211113388BBSSdduu0-: -$/8  ' D=t11113388CCTTffxx~sok\X6(&#M<;aSR##^MKG34[LUsraaQQAA884411--,,--////////////0000225588;;>>@@AA@@AACCDDFFJJRR[[cckkttyy||~~uujj^^QQGGAA;;5533333333222222222222222222111111111111110000//////..////0000225588;;>>AACCDDDDDDDDDDCCCCBBAABBDDFFHHOOZZhhuuppaaUUHH<<441111224499BBQQbbssuuggXXJJ==551111223388BBSSdduuqhq$(3(0B:a11113388CCVUi`WGRqgr70.   )!("G9ERRPEsE?{7755110011333322222244556699>>BBGGLLPPQQQQRRTTUUWW[[bbjjrr{{rreeWWHH??::6611....////////00000011111111111111111111112222333333222244446699>>CCHHMMRRUUVVWWWWXXWWVVVVTTSSSSUUVVXX]]ffqq||wwggYYOOEE::330000224499BBQQaaqq~~wwkk^^QQEE::330000224488BBSSdduu!  2,B!% <0QHBx+- 8,.)". 4+>99+)@2T223355555544557788::>>EELLTT[[bbeeeeffhhiijjllrryyqqccSSDD;;6622..,,--............//0011112222222222223333444455555555557788::>>EEMMUU]]ddhhjjjjllllkkjjhhggffffffffggkkrrzz}}oo^^QQHH@@7711//002255::CCPP``oozz~~xxmmaaVVKKAA8822//00224499BBSSdduuF;A              #.1%? E>w66779999888899;;==??EENNXXbbkkttxxyyzz||||||||rrbbRRCC::6633//--..////////001122334466666677778888888888999999888899;;==??EENNXXbblluu{{}}~~~~}}{{zzyyxxxxxxxxzzuuffUUJJBB<<4400..002266::CCPP``nnxx||xxooccWWMMDD<<4400..00225599CCSSccttSGN     *+7@@??@(@BBBBBBAACCEEGGJJPP[[ffqq||ssbbRRBB995533//....0000001122447799<<>>??@@AAAABBBBBBBBBBBBBBBBBBAACCEEGGJJPP[[ffrr}}||mm]]LLBB<<7711..--//3366;;CCPP__lluuwwrrggZZNNEE>>7711..--//335599CCSScctt,"&  TROO9*<@.BRRSSSSSSTTXXZZ]]ccmmxxttccRRAA995533//..//0022334477;;@@DDHHLLNNOOOOQQQQQQQQQQRRRRSSSSSSRRTTWWYY\\bbmmxxzzvvttssqqqqqqrrrrqqqqrrttvvxx}}vvggVVGG==995511..--//3366;;BBOO]]jjssuunnccUUIIAA;;6611..--//3355::CCRRccss  bbWI]-#bbcceeeeffggkkmmppvvvvddRRAA885533//..//11335577;;AAHHNNTTZZ]]^^__aabbbbbbbbccddddeeeeeeggiikknnss}}vvllggeeccaa``aabbbbaa``aaccffiioozzssccSSDD;;774400--,,..2255::BBOO^^kkssttmmaaSSFF>>994400----//335599BBRRbbssv 7_S]rrsgujwwxxzz~~xxeeSSBB995533//..//114477::??GGPPXX``hhllnnooqqrrrrssttuuuuvvxxxxxxzz||~~wwjj^^XXTTRRPPOOPPQQQQPPOOOOSSUUYY``mmzz~~nn__PPAA995533//----//3377<>BBKK[[ll}}{{ii[[OODD99331111//----005599??GGTTbbnnuuttll^^OOBB::6622..,,,,//335599BBQQbbrr  ^=5:(*G7:{b^||{{zzxxvvssrrppnnmmllmmooqqttzz||iiVVDD99552200//1177??HHPP[[iiss||uummhhffffhhjjmmss}}wwffUUFF==9977332233555533223377::>>GGXXii{{rr``SSII@@7722111100//..1166;;AAJJWWddppwwuull__PPCC;;7733//----//335599BBQQbbrr <1*3*&TKFB,-wwqqnnllhhggffffddbbaa``^^]]\\]]__bbeellww}}iiVVDD99442200003399CCMMXXddrr||wwjj__XXTTTTUUWW[[ccpp}}vvddSSCC::775511001133331100115588<>==>>BBDDHHPP__pp||iiVVDD994422001155>>KKYYgguu}}kkZZJJ@@;;::::<83leazsg02%/"$5),rgvvvhhXXMMFF??884433332222223333333333331100115577;;DDTTffwwxxffSSBB883311112277@@OO^^ll{{jjUUBB7711////1166AARRffyyxxffSSBB995533//..//1111//..//3366::CCTTffxxrrccVVII<<66332200..--//335599BBQQccttxxggUUDD;;6633//,,--//335599BBQQbbrr62, E2-ub\  xhnrreeXXII@@;;7711////////..//////////////--,,--113377@@PPbbttwweeSSBB883311112277@@OO^^ll{{kkUUBB6600....0055AARRffyyyyffRRAA884422....//1111//..//3366::CCSSddvvxxhhZZOODD99332211//----004488<>HHYYll~~||jjXXGG==8844..++++--113377@@OO__nn~~.($   3)-xxggYYOOEE;;66442200//////////////////000000//....224488@@OOaarrttccRRBB883311112277@@OO]]ll{{}}uummffbbaa``````aabbbbbbbbbbbbaaaaaaccddeeiiqqzznnXXEE993311112288CCTThh{{zzggSSAA773311----//111100////335599@@OO^^nn||zzooaaSSIIBB<<5522111100////1177<>IIWWddppyy~~~~zzssjj__SSGG@@;;662200001111111144<>IIUUaammxx61/ ,Q4(WExigJ=7)  %>0JD>MM^^nn}}rrbbQQBB883311112266??NN]]llzz~~sseeZZQQII@@<<::::888888999999999999888888::::;;@@IIRR[[gguuppZZFF993311113388DDVVjj}}oo\\KKBB>>::663333332211000022335599@@HHOOVV[[^^^^[[VVPPIIBB;;77553311//..//11113399DDPP]]kk||yyii]]SSJJ@@;;8888666677::@@GGNNUU\\``aaccgghhjjdSk         >MM]]nn}}rraaPPAA773311113377@@OO^^mm{{vvjj\\RRJJBB::776666444444555555555555444444666677::BBJJRR]]llxxppZZFF993311113388DDVVii}}uuddTTKKGGCC==9988664422111111223366::@@EEIIMMNNNNLLIIEE@@;;7744332200//..00224466==JJXXffuuuuii__UUJJDDAA??;;9999::==@@EEJJNNOOPPQQUUWWYYd\       F+rP:||hhUUCC::5533//..//111111111111111111111111111100//00224477>>MM]]nn}}qqaaPPAA883311112277@@OO__nn}}zznn``RRIIBB<<6633333333223333333333333333223333333366<>??????AACCEEHHMM8*5       5'I6,L70k_d`SSZMJdQQ{hs}{hhUUCC::5533//..//111111111111111111111111111100////335588@@OO__oo}}qqaaPPAA883311112277@@OO__nn}}vvggXXII@@::6611..////////////////////////////////..1166::??IIXXggvvqq[[GG::4411112288DDVVii||rrkkggaaWWNNGG@@99443322000011224455667777888877665533220000000000....//3366;;DDUUeeuu{{rrhhbb__ZZRRKKEE@@;;88888888777788::<<>>CCVLv      ,#&C<@qcf}||iiUUCC995522..----//////0000000000000000000000//..//335599AAPP``pp~~qqaaPPAA773311112277@@OO__oo~~rrccSSDD;;7733//----............................----//3366;;DDSSccssrr[[FF::4411112288DDUUii{{||wwppddXXNNDD::552211////00112233334444444444443322111100000000..--//4488==GGXXiiyyvvqqmmhh^^UULLDD<<88776644333344667799==DD     8/-`OL|mn|bTV1'+ ! (&8'=H>8866442211112244445588<>FFNNZZjjyyvvhhZZLL??774422..--..////00002244D3'jWNtaid\eSLU?)0 >,2\HMuuddSSBB882211113399DDWWkkrraaTTKKCC::665555444444555555555555444444666677::BBIIQQ\\jjxx}}nn__OO@@772211112277@@OO``qqpp__NN??774422//..//1111111111111111111111111111//..//113366??OO``qqqq[[GG::4422112288CCTTffxxyyhhWWFF<<6633..,,--....--------------------........//335599@@MMYYeerroo^^NN??773311--,,--////////0000117,FB7+zicͷsp[Yf`tlxssccRRBB883311113388CCVVii}}||kk]]SSII??;;::::88778888888888888877777799::;;@@IIRR\\gguu||mm]]NN??662211113377AAPPaarrpp__NN??774422//..//1111111111111111111111111111//....223377??PPaarrqqZZFF993311112288CCTTffww~~nn]]LLAA;;6600....//////////////////////..////////1177;;AAJJXXffssrraaPPAA884422....//11111111111111:/LC9/yyKKVVffttrrbbQQBB883311113388BBSSeewwwwjj__UUJJEECCBB@@????@@@@@@@@@@@@??>>??AABBDDIISS^^hhttwwhhZZKK>>551111113388AAPPaarrqq``OO@@885533////001111111111111111111111111111//..//335599AARRccttppZZFF::4422112277AARRccttxxhhWWKKCC==6633333333223333333333333322222233334488??FFMMXXhhvvvvffUUDD;;6633//..//111111111111007.JC83~TRAALL[[jjxxppaaQQBB883311112266??NN]]mm}}yynnccYYTTRRQQOONNNNOOOOOOOOOOOONNMMNNPPQQSSXXbbmmxx~~ooaaTTGG;;441100223388AAPPaarrrrbbQQBB::6633//..//1111111111111111111111111111//..//3366::CCTTeewwooZZFF::4422112277BBQQaaqqssbbUULLDD;;777777555555555555555555444444666688==FFOOYYffvvzzvvssrrrrrrssxxzziiWWFF==884400//00111111000000//70II<7qq??<>8822000011111111111111@4VD4-yvee66::BBQQaapp}}nn^^OO@@88442200//0055==EEMMXXhhvvuueeTTIIBB<<4400//00224488AAPPaaqqwwhhXXII??::6611//00111111111111111111111111111100//0066;;AALL]]nn~~mmXXEE::4422001155==HHTT__kkvv||xxooee\\WWUUTTRRQQRRRRRRRRRRRRRRQQQQRRTTVVYY``kkww~~nn__PPGGCCBBBBCCFFOO\\ll{{zzkkZZNNEE==55221111000000111111B7^:,*TS5588@@OO^^nn}}{{ll^^OO@@88552200..//2288<>995500..--//335588@@OO__oo~~zzll^^SSKKCC::55332200////////////////....//11224499CCLLUUbbssmmXXEE::553300002288??EELLSSZZ]]^^``ddffhhkkss||||yyxxwwuuuuuuuuuuuuuuuuuuuuuuwwyy{{~~yyhhWWFF<<77555566;;EETTeeuuoo``SSGG;;55332200//00111111?1XWN^ψUX335588@@OO^^nn}}zzkk\\MM>>773311//--..11334466<>JJUU__mm}}llWWDD::553300//2266::??DDIIMMOOOOQQSSUUWW[[ddmmvvwwffUUDD::5533334499CCRRccssyyjj[[LL??77442200//00111111;6ZFB<2XwXX335599AAPP__nn}}zzkk\\NN??885533//..//0022223377>>EELLVVddppzz~~kkXXFF;;6633//,,--//334488??NN]]mm||uuii__SSGG??;;6622////////....////////115599>>GGTT``llyykkWWEE::6633//..00335588::==??@@@@AACCEEFFKKTT]]ffppzzssbbQQ@@6611////1166@@QQaarrrrbbQQBB995533//..//111164NL1122KMOM335599AAPP__nn}}{{ll^^OOAA995533//..//111100002266;;@@HHTT__jjtt}}}}jjVVCC995522..,,,,//335599AAPP__nn||xxnnbbUUKKDD>>885544442222222233333366<><<;;99888899;;;;==AAKKUU``mm{{{{ggTTBB995533//..//11111122222222222244445577;;??CCHHNNRRUUZZddnnxxyyjj[[LL>>662211113388AAQQbbrrxxffTTCC::6633//..//111111111111m}}//335588@@OO__oo~~ssffXXII@@::6611//00111100000022334477;;@@EEJJNNQQRRSSSSSSRRQQQQOONNOORRTTXX__llyy~~jjVVCC994411--++--0066::??HHWWddrr{{ooddYYNNHHFFDDBB@@@@BBDDEEGGLLWWaammyy{{hhUUDD;;6633//..//000000////////..////000022446688<<@@CCFFKKUU``jjtt}}zzmmaaTTHH<<551111223388BBQQbbrrzzhhVVEE;;6633//..//1111111111>>9977443355::BBIIRR\\jjuuyyppkkiiggeeccccddffgghhmmvv{{yyxxvvvvvvwwwwwwyyhhVVEE;;6622..,,--....--------,,,,,,,,,,----//001133557788<>99887755445555554444333322222222223333331100115588<>GGVVffuuvvhh\\SSJJAA<<;;;;99888899;;<<>>CCMMXXbboo}}rrff[[PPEE??==<<::99::::::999988887777777777888888775566::<<@@IIXXhhxx{{xxwwwwwwyy||qqbbSSDD==9988444455666666uuii__UULLGGEEDDBBBBCCDDDDDDEEDDDDCCCCAA>>;;885533221111111111222222333333333333333333333333333333333333333333333333333333332222221111111100002288<>55110000......//////sseeXXKK>>77442200//001111111111111111111111111111111111111111111111111111111111111111111100//00224466==HHTT``mm||rrccSSHHAA;;44111111110011111111xxjj\\MM@@885533////001111111111111111111111111111111111111111111111111111111111111111111100//00224477==IIVVbbpp}}oo__OOEE>>9933111111110011111111xxjj\\MM@@885533////001111111111111111111111111111111111111111111111111111111111111111111100//00224477==IIVVbbpp}}oo__OOEE>>9933111111110011111111TRUEVISION-XFILE.gl-117-1.3.2/textures/gl-14_ch.tga0000644000175000017500000003005410145416156015554 0ustar cedriccedric@@||oocc]][[YYVVUUUUVVXXYYYY]]eemmvv~~~~zzwwuuqqbbTTLLIIGGCCBBBBCCFFGGHHLLTT]]ffooww||}}~~{{jjZZJJBB>><<99888899;;==>>BBIIQQYYaahhmmnnpprrrrqqqqqqrrrrrrttttuuwwxxzz||||}}}}||{{yyxxvvttssrrqqrruuyy~~xxggVVEE==997744334455668899<>??@@AAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCDDDDDDDDDDDDBBAAAABBCCDDHHQQYYbbllwwwweeSSAA883300++**++,,,,--..//001133445566778877777788887788888888888888888899999999::::99889999::;;??GGOOXXbboozzyyggVVDD;;5511--++,,,,--,,--..////001111222233333333333333333333333333333333444444555566555555556666::AAGGOOYYffrr}}||ll\\JJAA::6600////////..////000000001111111111111111111111111111111111111122222222333333333333332266;;@@FFPP]]kkwwtteeTTJJBB<<6633333333223322222222221111111111111111111111111111111111111100000000//////////////..115599>>GGVVddrr||nn^^RRIIBB::776655444455554444443333332222222222222233222222222222222222110000////..........--,,..3366;;CCRRaappwwgg[[RRHH??;;::998877889988888888887777777777777777776666667777777777665544331100////////....--..3355::BBQQ``oossff\\RRHHCCBBAA????@@AAAAAAAAAAAAAA@@@@@@@@@@@@@@@@??????@@@@@@@@@@??>>;;9977553311110000//..//3355::BBQQ__oottjj``WWRRQQPPNNNNOOPPPPPPPPPPPPPPOOOOOOOOOOOOOOOONNMMMMOOOOOOOONNMMKKGGCC??;;7744332200//..//335588@@OO__oo~~uummdd``____]]^^__``aaaaaaaaaaaa``````________^^]]\\\\]]^^^^^^]]\\YYSSMMHHAA;;77553300//..//224488@@OO__ooxxrrnnnnnnmmmmooppqqrrrrrrrrrrqqppppoooonnnnmmllkkkkllmmlllllljjgg__XXPPHH??::774411//..//225599AAPP``pp||||||||}}~~~~~~}}}}{{zzzzzz{{{{{{{{zzyyuummdd[[QQFF??;;772200..00225599BBQQaaqq{{rrii]]PPGGAA;;4411..00225599BBQQbbss||sshhZZPPHH@@7722//00225599BBRRccss||rrccXXNNDD99330011224488BBRRcctt{{ll``TTHH<<441111224488BBSSdduuuuhhZZLL>>661111224488BBSSdduu~~wwttssrrqqppppppqqqqrrvvzzzzll]]NN??662211224488BBTTeevvzzpphhddccbb``____``aabbccggnnvv~~||nn^^OO@@662211114488BBTTeewwvvllbbXXSSRRQQOONNNNOOQQRRSSXX``jjss}}~~oo__OOAA772211113388BBTTeevvuuhh^^SSIIDDCCBB@@????@@BBCCDDIIRR\\eeqq}}qqaaQQAA772211113388BBRRccttxxii]]SSII??;;::::88777788::;;;;@@IIRRZZffss}}rrbbQQBB882211112277AAQQbbrr{{nn__SSKKBB::66666655444455666677::BBJJQQ\\jjuurrbbQQBB882211112277AAPP``oo||oobbSSIICC<<663333333322223333333366<>66332211110011111111111111//..//3366::BBQQ``ppvvddSSBB995533//..0044;;AAHHpp__NNCC==8822//0000110011111111111111//..//334488@@OO``ppxxeeSSBB995533//....2277;;@@||kkYYHH>>9955//..//00110011111111111111//..//224488@@OO``ppxxeeSSBB885533//--..005588<>9922....//225599wwffUUDD;;7733//..//11111111111111111111//..//335599BBQQbbrr}}mm[[NNEE>>5500..//225599xxggVVEE;;7733//--..001111111111]onnf{7;..//;?WeZh`okzxzǟxxpwqakCC8822//00224499yyhhWWGG==7733//--..00110011JTޜ޶l//UdĂԶֶ;;331100114499||mm\\LLAA;;6611..//00110011ޭTc1111BH޶//VdZhAAPPaaqqնȶllu552211113399vvffWWKKCC<<552211111100Tcf{11111111m//Vd[iCCRRccssέ⩩նǧЈuuddᖾ772211113399qqaaUULLCC9944221100..m7;////Ցդ//Vd[iCCSSddttä˪έЩն{{hhᗾ773311113399}}mm``UUJJ>>884422//--l......mlll..Vd\jEEUUeeuuնĶ搢Ķx883311113388yymmaaTTGG>>995500//dzHS..//////////11Xg_nJJZZiiyyصѷնDD883311113388{{oobbTTJJCC==6633CJ22113333ޥ66]kftSSccqqض瀀llWWDD883311113388}}||oo``UULLDD;;7766q_q_qֶq::aom{]]mmzzͶҶɎăRY883311113388oorrzzzzll__UUKKAA==;;::k߶s;;??]glvggwwη嵵ƬޢܜYd883311113388__ccllvvyymmbbWWLLGGEECCAA????@@BBCCDDIISS]]ggss}}jjVVCC883311113388OOSS\\ffpp{{}}sshh]]XXVVTTRRPPOOOOQQRRSSXXbblluu{{hhVVCC883311113388EEHHPPXXaallqquu{{wwnnjjhheeccaa````bbbbccggppxxzzggTTBB772200002277>>AAFFMMTT]]bbffmmyy~~zzyywwttrrqqqqrrqqssvv||yyffSSAA6611////116699;;>>BBHHNNSSWW^^llyyxxffSSBB7711////117733445577;;AADDHHQQaappxxffUUDD::55333355;;111111114499==AAIIZZjj{{xxffVVFF<<77555577<<11110000226699==FFWWhhyyxxggXXHH??::9988;;??111100//004488< L"R#T7z&^ M N M M N!MSRfƳŲ̹оμǴ¯̹ооμðykszlundn9>]F"Q!O N M M#S%`EIc M!N M M M M"P(3^о®ð̹ѿоооооϽ˹ððμооǴocl2{I L!O M M M M M N K+j;!P M M M M M"R'^̹ĿïͻѿооϽ̹Ƴ°Ǵооо¯qen%cE!O M M M M M M M N!P!O M M M M M M"R)^ƳɶѿоооооооооϽ̹Ƴ°¯ооо̹Ŀxjsyks^VdD!O M M M M M M M M M M M M M M M"Q*^~®ǴͻоϽ̹Ƴ°̹ооŲyksf\hC!O M M M M M M M M M M M M M M M!Q2z{Ƴоо̺yks'^"R M M M M M M M M M M M M M M M M!P;t|¯ѿооƳxjsaXdB!O M M M M M M M M M M M M M M M M"Q'_t{®оооо®xjssfo3!Q M M M M M M M M M M M M M M M M M"Q,]®ооо̹Ŀxjsxjsl`k8"Q M M M M M M M M M M M M M M M M M O"PMMc®оϽоƳqdn%^B"Q M M M M M M M M M M M M M M M M M MI)gypx®¯ѿ̹Ŀоо®xjsuhq%/X"Q!P M M M M M M M M M M M M M M M M M NIa^n¯ƳƳо̹Ŀxjs+k!P N M M M M M M M M M M M M M M M M M M N M/{}Ƴ̹ѿ¯®оƳxjsPK]H!O M M M M M M M M M M M M M M M M M M M M N"Q5v~̹Ŀ¯оϽ¯ѿо®xjs$0YI N M M M M M M M M M M M M M M M M M M M M M M M#R&_~s{virj_iqdmxjsǴ̹ĿƳ̹ĿxjsPK]I!P M M M M M M M M M M M M M M M M M M M M M M M M NH@C_8>\9I>YQ`xjsðμƳ̹Ƴxjs[TbD!O M M M M M M M M M M M M M M M M M M M M M M M M M M!N L"P"Q!O"R5xjs̹о®®оѿ¯xjs(e"R M M M M M M M M M M M M M M M M M M M M M M M M M M M M N N M M M!P+4XxjsƳ̹ĿƳо®xjs6:XK!N M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M!OGi^iƳϽƳ̹оxjs/s#S M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M N!MDCYð̹ѿ¯®ооYOa>!P M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M"R&]xjs¯Ǵμо®ƳϽi^i?!P M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M"Q)hxjs°Ƴ̹оо̹̹Ŀxjs(f"P M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M!NI^VcŲ˹Ͻоѿо®оƳ_Vb@ O M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M NJ^Vc¯Ƴ̺ϽƳѿ¯17W"R!O M M M M M M M M M M M M M M M M M M!M O M M M M M M M M M M M M M M M NIbYeŲ̹о̹Ŀ̹о®&\CF N M M M M M M M M M M M M M M M M"R.m5"Q N N M M M M M M M M M M M M N N06Wxjsų̺Ƴ®ооsfpxjs,k"R M M M M M M M M M M M M M M M!Q=zOPfII L M M M M M M M M M M M M M"R,jxjsð̹ѿ¯ƳоYR`E!O M M M M M M M M M M M M M M!OAmgtqkvw*h"R M M M M M M M M M M M M!Q3{xksƳμϽ̹ϽIGZ@!O M M M M M M M M M M M M M NJSRhԒ*^#S M M M M M M M M M M M M!O@nblð̹̹Ŀ¯о̹ĿxjsDBY K N M M M M M M M M M M M M!P6Ԇ|7!P M M M M M M M M M M M!PBpdn¯ǴμƳǴƳi^iC!O M M M M M M M M M M M N"N@D`Ԓ5!P M M M M M M M M M M M L8oeo¯Ƴ̹оо®ðμѿ¯lakH!N M M M M M M M M M M M N"N@D`ԀwI!O M M M M M M M M M M NIjdp{¯¯Ƴ̹о̹Ŀ̹о®l`kG!N M!P N M M M M M M M M N MVUiԒ5"Q N M M M M M M M M M NJpju˹°Ƴ̹оѿоооѿƳŲо^UbG!N"Q:H N M M M M M M M!NGunyԒw)^ L"R M M M M M M M M N L`]lƳ¯Ƴ̹Ͻооѿо̹Ƴ°°Ƴ̹оѿ¯̺Ͻ+Z#R"R2z5:X L N M M M M M M NJVUhԒJLe+kJ N M M M M M M M"P%1]ϽƳ¯Ƴ̹оμǴ¯¯Ǵμо®Ų̹ĿWQ`F*hl`k=!P M M M M M M M N!MQQfԒzG!N M M M M M M M"R(^̹ð¯Ƴ̹о̹ðð̹о̹Ƴxjsl`kxjs[TbK N M M M M M M M M"P .^Ԓ!Q!P!N M N!O M"Q,mԒ+a::!O!O"R!QC^\lKENOe"O*eƳƳ̹ĿƳ̹Ŀ®оȐGJc K=E!PI?!O!OC|Ԓ|sy9"S=(eI)^/^"RC#^#R+]ѿ¯¯ѿƳðμƳ¯ѿђ^[lz)]$U(_"2^"R!OGqkvԒ@Ea O MMOfx+g#U2z08_!Nierо®®оѿ¯̹о®ƳԌ:B`~u~qlwK!Q$U+kԒ)g%X/]Ԓ8#U-^2|~u~ооо®Ƴ̹Ŀ̹Ԓ%3]8/^:A_ԒGKb*byqkwJ!M^\lоооðμƳ®оԒԌqkv M8ооо̹ѿ¯ƳwpzK .]ооϽŲо®̹oiuAjerоо̹Ŀ̺о®оԎunyооƳŲоƳооѿ¯̹Ͻ̹ооо®®о̹Ŀ®ооооƳƳƳμоо̹о®̹ѿоμȵоо¯о̹ĿϽѿоооѿо̹Ƴ°ооǴŲ¯ѿо̹Ƴ°°Ƴ̹оμǴ¯ооðμ̹ĿƳμǴ¯¯Ƴ̹оѿооооϽ˹ðоо®˹μð̹̹ð¯Ƴ̹оѿоооооооооϽ̹Ƴ°оѿ¯®оƳ¯оϽƳ¯Ƴ̹оѿооооооооооооооооооооооооѿо̹Ƴ°ϽƳƳ̹ǴƳ¯ƳʸʸƳ°°ƳʸʸƳ¯̹̹Ŀ̹μððμ̹Ƴо¯¯оƳ̹μð¯ѿǴǴɷŲǴ®оμððμϽƳ̺о¯о̹̹ƳŲ̹Ŀ®оƳƳ̹̹Ƴ¯ѿϽƳƳϽμð®оѿ¯ű̹ðð̹ƳƳо®ǴμǴ¯¯Ǵμ̹̹оűо̹Ƴ°°Ƴ̹оμð¯оо®¯ѿѿоооѿƳǴѿ¯®оɷðμƳоμƳ̹̹Ŀо̹ðŲо¯Ͻ̺ų̺Ǵ̹μƳŲμðƳ̹ð̺̹¯ѿνƳŲƳ®оμı̹ϽƳоμı¯о̹ðо̹ðǴμƳϽо̹Ųðμ̹ð̹μǴ¯̹μƳƳ̹ðƳ̺ų¯ѿϽƳƳϽѿоооѿ̹ð®оƳ¯˹о̹Ƴ°°Ƴ̹ϽѿμǴ¯о̹˹о̹Ƴ¯¯Ƴ̹оо̹Ƴ°®оμðŲμǴ¯¯ǴμѿооϽ̹Ƴ¯¯ѿƳ̺̹ðð̹о̹Ƴ¯Ƴ̹ƳϽƳƳϽѿϽ˹Ų̹μððμƳƳ̹ðϽƳ̹̹˹μǴ¯о̹Ƴμð¯˹о̹Ƴ°®оμðƳϽμıƳϽѿоооϽ̹Ƴ¯¯ѿƳð̹ϽıƳо̹Ƴ¯°Ƴ̹ϽооооϽ˹ðƳ̺ıμƳ̹о̹Ƴ°°Ƴ̹Ͻоооѿμı̹Ųıμ̹ðμѿооооооооооѿμıϽ̹ĿƳνμðǴνƳоμðð̹Ǵ¯о̹ð®оƳıμо¯̹μı¯ѿ̹ıμ̹ĿŲμðƳμðƳνŲ̺˸þ̹Ƴð̹̺ŲϽϽ̹¯ǴμƳ̹ооμð¯Ƴ̹оо®ðμооμı¯Ƴ̹о˹ÿƳо®оϽı¯Ƴ̹оμð̹о¯ѿƳŲ̹оƳðμоƳ̹ų̺̹Ǵо̹μðð̹μð¯оо®оǴƳμǴ̹оƳо¯ų̺о¯Ƴо̹˹ÿð̹̹Ŀxjsqdmuhq¯ѿоϽμðƳμƳxjs=>X;OK\®оо¯ѿǴɷѿ¯xjs/4X!J+emakоо®Ƴо¯Ƴо®_VbF:rdmxjsϽѿ¯̹̹ĿıϽоxjs+\DNJ\xjs̹Ƴ¯оŲðμоxjs(3YH1txjsŲ̹ĿǴ̹Ŀ̹Ͻxjs5|"RCCYxjs̺о¯ðμμðƳ̹Ŀxjs3w"ORL]ƳѿоооѿǴ̹ǴıϽŲxjsxjsxjs7:W!KOK\®оо̹Ƴ°°Ƴ̹оμðƳо¯ıμ̺sfp'_&^??X IMJ[̹μǴ¯¯Ǵμ̹ƳϽ̹ĿðμƳl`kK"REHXQ`Ƴ̹ðð̹Ƴð̹Ƴ̹Ͻ®xjs -Y"Q"QG]Ub®оϽƳƳϽϽƳ¯Ǵμѿ¯Ųѿоооѿʸ¿xjsxjsxjs+n!OJ^Uc̹ƳƳ̹ðŲ̹оо®̺о̹Ƴ°¯ŲƳxjs8;W&`)[&b MI^UbƳ̹̹μǴ¯¯Ƴ̺оŲμǴ¯xjs<$W"R!P!OEi^i®оμððμо̹Ƴ°°Ƴ̹оо®̹̹ðxjs>?YI!P M!OBnbl̹ǴƳѿоооѿѿ¯¯оϽƳxjsqen3!O!Q4yxjsŲо¯̺ƳǴƳuhqAAY,[7!P!P9xjs̺̹ĿƳ̹Ŀðμ̹ -Z"Q#S!O M!P;uhqƳƳ®оо¯̹μð^UbCL N M!P?qdn®оѿ¯̹ǴƳǴxjssfo.q"Q M!OEe[g̹о®Ƴμððμо¯xjs-4X K N M NJ[TbƳо®о̹̹̹Ŀxjs3~"R M M!NI^Uc®оϽ̹ƳƳƳƳǴxjs'\"R M M!NI^Uc̹̹ĿŲϽƳƳϽѿ¯ͻμŲ(["Q M M NJ^UcƳƳ̺̹ðð̹о®Ƴ˹ÿ(]"R M M NJ^Uc®оѿ¯ƳμǴ¯¯Ǵμо̹Ͻ(]"Q M M NI^Uc̹о®®оо̹Ƴ°°Ƴ̹оо®Ͻоxjsxjsxjsxjsxjs'^"P M M!NH^UbƳо̹ѿоооѿѿ¯оо®ykssfpA@Y(e+g`Wdxjsxjs.o"R M M N KUO^®ооŲѿоооѿƳ®оѿɁt{`We'\> L"R#T7l`kxjsxjs%] M N M M N!MFDY̹Ͻ̹о̹Ƴ°°Ƴ̹о̹Ŀ¯ѿɐxpy7<[F"Q!O N M M#S%`xjs:=X M!N M M M M"P#-YƳ̹ĿðμμǴ¯¯ǴμϽƳ˄z2{I L!O M M M M M N K+j;!P M M M M M"R&]®оƳƳ̹ðð̹о̹Έ%cE!O M M M M M M M N!P!O M M M M M M"R']̹ѿ¯̺ϽƳƳϽо®ођohtD!O M M M M M M M M M M M M M M M"Q(]xjsƳо®ŲƳƳоƳԒyq{C!O M M M M M M M M M M M M M M M!Q2zxjs¯ѿо̹̹̹о̹Ԓ'^"R M M M M M M M M M M M M M M M M!P;uhq®оо®ðμμððμо®оԒunxB!O M M M M M M M M M M M M M M M M"Q'^xjsоѿ¯ƳƳǴоƳҒ3!Q M M M M M M M M M M M M M M M M M"Q*[ϽƳ̺̺¯оо̹Ďz8"Q M M M M M M M M M M M M M M M M M O"PDCY̹̹ĿŲŲ̹о®оȇ|%^B"Q M M M M M M M M M M M M M M M M M MI)gi^iŲо®̹̹ĿƳоw~}*5]"Q!P M M M M M M M M M M M M M M M M M NIPL]xjsxjs̹Ƴðͺѿͺð¯ѿо{+k!P N M M M M M M M M M M M M M M M M M M N M/{qdnxjsðμ̺¯ų¯®ооs{\XiH!O M M M M M M M M M M M M M M M M M M M M N"Q5l`kǴŲоо|ow&2[I N M M M M M M M M M M M M M M M M M M M M M M M#R%^xjsxjssfpi^iqdmxjs¯о̹Ŀ®ооzluTPaI!P M M M M M M M M M M M M M M M M M M M M M M M M NH8:W49X9I>YQ`xjs̹о¯¯ѿоyks]VdD!O M M M M M M M M M M M M M M M M M M M M M M M M M M!N L"P"Q!O"R5xjsƳǴƳоyks(e"R M M M M M M M M M M M M M M M M M M M M M M M M M M M M N N M M M!P+4Xxjs¯ѿμð̹оyks6;YK!N M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M!OGi^i®о̹Ŀ®ооyks/s#S M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M N!MDCYоŲƳоZPa>!P M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M"R&]xjsо̺̹оk_k?!P M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M"Q)hxjsϽƳ®оо{mu(f"P M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M!NI^Vc̹μðƳоbYe@ O M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M NJ^VcƳ̹Ŀ̹о3:Y"R!O M M M M M M M M M M M M M M M M M M!M O M M M M M M M M M M M M M M M NIbYe¯ѿŲ¯оо']CF N M M M M M M M M M M M M M M M M"R.m5"Q N N M M M M M M M M M M M M N N06Wxjs®о̹ĿǴо~r{,k"R M M M M M M M M M M M M M M M!Q=zOPfII L M M M M M M M M M M M M M"R,jxjsоо®ðμо̹idpE!O M M M M M M M M M M M M M M!OAmgtqkvw*h"R M M M M M M M M M M M M!Q3{xjsϽƳ̹о¯оVUh@!O M M M M M M M M M M M M M NJSRhԒ*^#S M M M M M M M M M M M M!O@nal̹̺ƳоǴːQPf K N M M M M M M M M M M M M!P6Ԇ|7!P M M M M M M M M M M M!PBnalƳƳƳϽоðμӀwC!O M M M M M M M M M M M N"N@D`Ԓ5!P M M M M M M M M M M M L8i^i®оμðð̹о̹ԃzH!N M M M M M M M M M M M N"N@D`ԀwI!O M M M M M M M M M M NI\Tbxjs̹̹ıμо®ŲԃzG!N M!P N M M M M M M M M N MVUiԒ5"Q N M M M M M M M M M NJ^UcƳƳðμѿ¯̹qkvG!N"Q:H N M M M M M M M!NGunyԒw)^ L"R M M M M M M M M N LPK\®оμð̹Ƴ¯о /]#R"R2z>Da L N M M M M M M NJVUhԒJLe+kJ N M M M M M M M"P!,Y̹ʷ¾Ƴ̹ĿǴierF*hy=!P M M M M M M M N!MQQfԒzG!N M M M M M M M"R']Ƴʸ¾ðμо¯ðμԒzoiuK N M M M M M M M M"P .^Ԓ!Q!P!N M N!O M"Q,mԒ+a::!O!O"R!QCSPbKEBAY"O*exjs¯о̹ĿƳо̹Ƴ°°Ƴ̹оԒGJc K=E!PI?!O!OC|Ԓ|sy9"S=(eI(^-\"RC#^#R)[xjsǴо¯ıϽѿоооѿԒ^[lz)]$U(_"2^"R!OGqkvԒ@Ea O MMOfw+g#U2z*1Y!NWQ`ðμǴðμԌ:B`~u~qlwK!Q$U+kԒ)g%X/]ԑ8#U+\sfp2|h^i̹μð̹Ԓ%3]8/^:A_ԒGKb*byqkwJ!MURc}pxsgpyktƳ̹ƳԒԌqkv M8}ƳƳϽƳƳϽwpzK .]̹ðð̹ϽƳð̹oiuAjerμǴ¯¯Ǵμ̹ðƳμԎunyо̹Ƴ°°Ƴ̹оμǴ¯ð̹ѿоооѿо̹Ƴ¯ƳμѿϽ˹ðð̹μǴ¯¯Ǵμо̹Ƴ°°Ƴ̹оѿоооѿTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-14c_c.tga0000644000175000017500000003005410145416156015547 0ustar cedriccedric@@пппǿ˿ÿпǿ󿿿꿿пܿǿǿԿ῿󿿿῿ÿؿܿÿÿ꿿꿿ؿ῿ǿÿ˿п῿ܿÿ῿ؿÿ忿ܿ꿿ؿؿ˿пÿпTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-14c_d.tga0000755000175000017500000060005410145416156015556 0ustar cedriccedricư˴ڻ۽۽׽ɳιŽ۽۽ۼܼۼۼ㗿ᖾߖߕߕߒȉۼ߉¿ܼ߉ۼ꒤؎ۼʒߚ߉菡ۼ؉𑪿׼՚؊ɳθļߑߊۼߕߑߚߊۼۼ߉苎ܼɚȚ߉ۼߚ߉ߕߕߕߕߕߖߖʒۼ镾ߚЉۼܼۼؕߕߕߕߕߖߐ߸ۼߖߕߕߕߕߐ츸ۻ츸׻Ȕؚа˪ٚ簿˲Ÿɳηĺؕߚߑߚʚު٢츸ڸߕߕߕߐؚْŚ縸ٶŸزŪ٪٪ٶ֭ůʲӦߕߕߕߕߕߕߕߐߖߖߖ•٪ٚиشΞǟٚ˸ٶʗ䣣Śؚ縸ٸٚꗱǑ菡ɚ̚姧ʚؚʚ츸ڸÎȑߚ߉檪ʚ츸ٹ؉ۭطٹКęȚԚ񵹼ٹɖߐ٪تجԲůʵޢչߔ،Ũ֫ӷŢŷŰ˵¹ߚȚ˚՚췷ⷷٹߚ艉͚֚췷췷ٸߚؙЙϚך췷ʠޚ췷ٸӗ瑫К菡̠ݚ췷ʯʯʜ췷ٸߚ葪췷뵵׵ߚ銊췷겲ԱߚȚȚ췷魭Ыȕߐ؋қ垳Ƣ֧ZkDIӼdx?D`l{MMlgtPPl؉˒NNuDDoUc#0zer#-uBO=C~ԿWbdb|;I28qDYW3`jHx-]t٨18zLKlՉښ@S'47e7c9j5h:o;j8n5kXHw(D]ƦZj˃4]8d:j9p9o9n$P,\&UaӱĤ׻r;k9l;n:l:l:l:l:l:l:l:l:l:l:l:l:l;q/P[ZnZYo?F{ - 2A&V9opGn76"M=o;o;n3c&S!M)[ޱeV6j;o:l:l:l:l9l;l:l:n:n9l:l:l9l:l:l8k@uח񥵵ω4\ 1'S9jj7i1R2N0K7^9k9k?oNMn,2r *u;=m)3|8a:o6kJw˨ՙv6H=p4g'U-])Xp,[+Z&T*Y'U3d5h6h-]g׭Cn2[4T2M2M-@+?,=6b8g3N*4-2u%4&U'U$Q$R$T%S"R O(Z9l:o?]ʠp 3>8j,[-\%S(VHI.^3d'VYю4^.N1M.?)8'0y48v)1v'<4b%E'>(G'S$S"R$R$Q"R&S#S$RP.`1Zߟ GA

%S'WNyw-L/K+9%7#?%B&D#J/\4c2e?q4d#Q$Q!O"O MK$P$R$T$S$TQԥ&N78j2c&T#P>899:?r8h4e4e#P#P M LIGH!M&TK5cǧݣ6^4%S3d%S&TA89997KJNM M LHFFEE?2[楳BBFrŵѮOx-"P"Q%ULD?-`O#O'X+[)Z%W/b>t!D259:::CGJJM4fsڷQ=iEs8d)P$H'P$S'U.b3e1d0e4h9oJ(UD;436?K"P"P5grο̮p(M#T-b4d/d0d0c1c9nOM(RM#SA-A$P N*\lк'R.c-c.f7j5h2h3j9o;n#P<ϼU k-]nt7q"[/f0h3i7l9l;n=o-`Arϼ{d/&䨼f$Z$^.e6l;nqGy4^êѼ48q+d?&q)roʣ@i N5f.^AxPIdӻԥ}W~@:z=$S4h6\=l;pI{וٹܺݽֻ c$NbCp3;n̉SuM1f@kƦ`CwAh3<9G/=VnpҺ߽޻|h?᣻҃ljs饩W/܇[=n.R7g4Z+AVogd{ٻ(UE~(Gx4ѿM|-\7gh׶yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyy #Fvڽxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{||||||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyCF"P*[&P$F$C)H;`^䀧䦻ڼҽó|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyBG*Z:l;ZFHPBVBbJu`s栓ڼ׽ӻ|||yyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyy *Kalvw~ou勒ڼѶռ|||yyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{||||||}}}zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyy "0=LTvUwTZnڼѷڼyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyy&A&A&A%G"`$9JPQSeڼٽطӵyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyySAT>U9V9RFPd^}߽ݷټ|||yyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyygkrsveufvn倀呙嚪噻޸׶yyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzyyyyyyyyyyyy+2>EtFoGoIsMyNH=?`޽ѵީrrtyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||zzzzzzyyyyyyyyyyyy Hٷ泻,Hyyyyyyyyyyyyyyyzzzzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}}}}||||||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}zzzzzzyyyyyyyyyyyy  HøKgAyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzzzzyyyyyyyyyP}P|NyDj3R+G3RDjNyUjKgAyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzyyyyyyyyy塛坕}mS`@mS~块夡岲泻,Hyyyzzzzzzzzzzzz{{{|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzyyyyyyyyy楎棋}f^o敊柙夡屲殯ssuzzzzzzzzz{{{||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzyyyyyyaAaAa@^=Z:TFNaOtP{UgԮ& &Ԯ欬{{{{{{{{{|||}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyy'B(B+A.>+>"S}/C`@@ᖖ||||||}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzyyy *&vv!9RrԮ& &Ԯ沲{{{}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyy-3HcaVwRxQ{Q|Q|Ugᛛ}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}}}}{{{zzzzzzgjx䐜垜塜墜墝墝壝奠寮游|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzSBTC[Hp]厂垗楜櫝毝毝氝没涧滭Ƽᤤ|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzz%B%C(F2SDkQxb|z|}}}}~呄槝ι|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzz +Ulqqqqx䓼}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{',*))*5a}}}|||{{{{{{{{{zzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||||| g>>g>ǥ}}}|||||||||{{{{{{{{{{{{|||||||||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}}}}}}}|||||||||||||||}}}}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||}}}}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}|||{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{|||||||||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}}}}{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}|||{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{||||||}}}}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||||||||{{{{{{{{{{{{{{{{{{|||||||||}}}}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{||||||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{{{{{{{|||||||||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{|||}}}}}}|||||||||||||||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{|||}}}}}}|||{{{{{{{{{{{{{{{{{{{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{|||}}}}}}|||{{{zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{|||}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}}}}}}}}}}||||||{{{{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{|||}}}}}}}}}}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}}}}|||{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{|||}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||||||||||||||}}}}}}||||||{{{{{{{{{{{{{{{{{{{{{||||||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||}}}}}}|||||||||||||||}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}|||{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}|||{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}|||||||||{{{{{{{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}}}}}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||{{{zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{||||||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{{{{{{{{{{{{{{{{{{{|||}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||||||||||||||}}}}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{|||}}}yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{|||}}}zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}|||{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{|||}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||||||||{{{{{{{{{{{{{{{{{{|||||||||}}}}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||||||||||||||}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}}}}|||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{||||||{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{|||}}}|||zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{||||||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{|||}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{}}}}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{{{{{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||}}}}}}|||{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}|||||||||||||||}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}}}}|||{{{{{{{{{{{{{{{{{{{{{|||}}}}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}}}}}}}|||{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}|||{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{rruu{{{zzzyyybbYYbbYYjjbbYYYYyyyyyyjjYYYYqqYYYYZZ]]}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{hh|||rr!!II00qqyyy88qqLL]]Қaa֝__WW{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{FF++|||11yyyQQ((yyy{{wwGGHHᛛVV EEsszzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{jj^^[[uu##|||!!((!!bbyyyIIyyyBBmmPPŖ[[00ꑑaa//鈈CC 11qqyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{FFWW}}}AAyyyYYYYyyy((IIqqyyyBB|||OOğ00aaֳ00ZZϞvvYYyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{__AA==UUss!!yyyAAbbyyyII((yyyyyyBBllNNÔZZ;;呑aa::䈈CC 11qqyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||__HH11yyyyyyqqIIyyyyyyuurrGGHH᜜VV EEttzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||""ss!!bbyyyyyyyyy!!qqyyyyyyHH~~ZZϡaa֨aaYY|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}|||{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||zz|||zzzkkYYbbyyyyyyyyyyyyyyyjjYYYYbbyyyyyyyyyYYYYYYZZoo}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}|||||||||{{{{{{{{{{{{{{{{{{|||||||||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{ƀ}}xxqqtttt]]ZZrryyyqqYYYYjjyyyyyybbYYbbyyyyyyyyyqqYYYYYYYYZZww||ggppxx}}Ő}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{''PPQQyyyQQQQbbQQyyyYY\\__00곳|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||!!--**CCyyy!!yyyYY!!!!ee^^--//RR۳}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}]]zztt++00bbAA!!yyyYYYYzzzzzz{{{]]SSxx}}|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{PPŊFFYYQQYYYY!!yyyYYYYyyyzzz{{{\\__Բ{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||""..,,\\ssyyybbAAyyyQQIIYYyyyYYYYyyyzzzzzz[[**--iiα}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}""..,,HHѐ00yyyyyy!!yyyYYYYyyyzzzzzzZZ)),,OOذ|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{++唔FFQQyyyyyybbQQyyyYYYYyyyyyyzzzZZ..误}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{|||}}}|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||ƂƁŀ}}||]]ZZYYzzzyyyyyyyyyyyybbYYYYqqyyyyyyqqYYYYqqyyyyyyzzzrr[[^^ddjjrr|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{|||}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{|||}}}|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{|||}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}ƂƦ}}jjcc^^[[YYccyyybbYYYYYYjjyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{|||}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||vvZZuu!!yyy!!!!yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{|||}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}{{{zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||00ww""!!88zzz!!AAyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{|||}}}}}}|||{{{zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{;;__ԫxxII^^[[kkzzz!!!!yyy!!yyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{|||||||||}}}}}}|||{{{{{{{{{{{{{{{{{{{{{|||}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||""𬬬zzBBzzz!!!!yyy!!!!yyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||}}}}}}|||||||||||||||}}}|||zzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz}}}GG;;||##""JJzzz!!!!yyy((yyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{""}}$$""99zzz!!AAyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||""𯯯}}!!zzz!!!!yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}ƂƂƂƂƱzzrrjjbb^^ddzzzbbYYYYYYbbyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{||||||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz||||||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{||||||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}|||{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{{{{{{{{{{{{{{{{|||}}}{{{zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||||||||||||||}}}}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz||||||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzz{{{}}}|||{{{{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz|||}}}|||{{{{{{zzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}|||{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}|||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||}}}{{{zzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzz{{{}}}}}}}}}|||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{|||}}}|||zzzzzzzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzz|||}}}|||||||||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||||||||}}}{{{zzzzzzzzzzzzyyyyyyyyyyyyyyyzzzzzzzzzzzz{{{|||{{{zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{|||}}}|||{{{{{{{{{{{{{{{{{{{{{|||}}}}}}|||||||||||||||}}}TRUEVISION-XFILE.gl-117-1.3.2/textures/gl-14d_d.tga0000755000175000017500000003005410145416156015554 0ustar cedriccedric@@ǫǫ﫫ҫҫҰ㶶ݫҫҫҫݫҫҫҫǫҫҫҫҫҫҫҫҫݫҫҫҫǫҫҫǫҶҫ諫ҫҫһҫһҫҫҫǫTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-15_c2.tga0000755000175000017500000060005410145416156015475 0ustar cedriccedricȩȩȧǦƥţâ¢ÞŠƢȤʦ˧̨̫ͪͪͪ˫ˬ˭ˮ̰̲ʹζϸϹϺϺκκ͹͸̸̸̸̸͸͹κϼммлккккϺϺϻϻммммлϻϺκι͹͹͹ͺͺͻλϼмнѽѽѽѽѽѽѽѽѽѽѽѽѽѽѽѽѾооппппооϽϽϽϽϽноѾѾѾѽмлϻϺϺϺϺϺϺккллѼѼѽѾѿѿпϼθͶ˵ʴʴɴʳɴɴȴȴȵȵȵȵȵʵʵʵʴʴʴɴɴʴʵ̸̺ͻͼλλιͷ̶˵ʴɳɲɩȩȩȧǦƥţ⢝ğŢȤʦ˧̨̫ͪͪͪ˫ˬ˭ˮ̰̲ʹζϸικκιι͹͸̸̸̸̸͸͹κϻлллккккϺϺϻϻммммлϻϺκι͹͹͹ͺͺͻλϼмнѽѽѽѽѽѽѽѽѽѽѽѽѽѽѽѽѾооппппооϽϽϽϽϽноѾѾѾѽмлϻϺϺϺϺϺϺккллѼѼѽѾѿѿϽκͶ˴ʲɱɱȱȰDZDZDZDZDzDzDzDzDzȲȲȲȱȱȱȱȱɲɳʶ˸̺̻ͺκι̷̶˵ʴɳɲɩȩȩȧǦƥţ⢝ÞĠƢȤɥʦ˨˨˨ʩɩɪɫɬʮʰ˲̴Ͷͷθθιι͹͸̸̸̸̸͸͹κϻлллккккϺϺϻϻммммлϻϺκι͹͹͹ͺͺͻλϼмнѽѽѽѽѽѽѽѽѽѽѽѽѽѽѽѽѾооппппооϽϽϽϽϽноѾѾѾѽмлϻϺϺϺϺϺϺккллѼѼѽѾѿѿϾϺ̶ʱȬƨ楥§©ŭƱȴɷ˷̸̷˷̶˵ʴɳɲɩȩȩȧǧƦŤã⡝ߚǣȤɤɦɦɦȧȧȨȩǪȬȮʰ˲˴̵ͷ̷͸͸̸̷̷̷̷̷̷̸͹κϺϺϻккллϻϻϼϼннннмϼϻϻκκκͺͻͻͼμϽмнѽѽѽѼммммммммнннннооппппппоооонноѾѾонмлϻϺϺϺϺϺϺккллммнноопппоιͳɭŦ íŲȵʶ˶˶˶ʵʴɳɲɩǩǩǨǧƦŤģ㡝ߚƢǢǣǤǤƥƥƦƦŧƩƬȮɰɲ˳˵˵̷̶̷̷̶̷˷˷̷̸̸͹ιικϺϺллϻϻϼϼѽнннмϼϼϻλλλͻͻͻͼμϽннѽѽммммммммммммммнннооѿѿѿѿппоооѾѾнннмϼϻϻϻϻлллкккккллмнооппѿнϺ̴ʫŢűdzɴɶʵʵɳɳɲɩǩǩǨǨƧťĤģáŸÞßğġġġââää¥çéūƭǯɱʲʳ˵˵˶˶˶˶˶˶˶˷˷ͷͷͷ͹ιιιιιικκϻϻϻϻϻλλκͺͺͺ̺̺̺̻ͻμϻϼмммϻϻϻϻϻϻϻϻϻϼϼϼϼϼннооѿѿѿѿѾѾѾннϽϼϼϻϻϻϻлллкккккϻϻϼϼϽϽϾϾппмθʹɬƠvronlklmmmnnnnnnnmmlnopu~ĮƱǴɵɴɳɳɳɩǩǩǨǨƧťĤģ៝žŸŸçĩūǮȰȱɳʳ˴˴˵˶˶˶˶˶˵̵˵˵˵̵̵̵̵̵̵̶̶̷ͷͷͷͷ̷̷̶˶˶˶ʶʶʶʷ˷̸͹ͺκκλϻϻϻϻϻϻϻϻϻϼϼϼϼϼннооѿѿѿѿѾѾѾннϽϼϼϻϻϻϻлллкккккϻϻϼϼϽϽϾϾппҿϸ̱ɪĠzpe~`y^v]u[sZr[s\t\t\t\t\t\t\t\t\t\t[s[s[s]u^v_xd}mw¬IJdzɴɳɳɳɩǩǩǩǨƧťĤĢ៧éƫǮǯȱɲʳʳʴʵ˵˵˵˵ʵ˵˴˳ʳ˳ʳʲʲʲɲɳɳʴʴʴ˴˴ʴʴʴɴɴɴȴȴȴȵɵʶ̷̹͹ͺλϻϼϼϼϼϻϻϻϻϼϼϻϻϻннооѿѿѿѿѾѾѾонϽϽнϼмммѼѼѼѻллллϻϻϼμϽϽϾϾпппѼγɪšxnd|ZsUnTlSkRjQiRjRkRkRkRkRkRkRkRkRkRkRjQiRjSkTlUnYrb{ktŲȳɳɳʴʪǪǪǩƨƧťĤâ §ĪŬƮǰɱɲɲʳʴ˴ʴʵ˵ʴ˴˳ʲɱɰȯǮǮǮƮǮǮǯȯȯȰȰȰȰȰǰǰǰǰưǰƱDzȳʵ˷̸̹ͻμϼϽмϼллϻϺϼлллϻммннѾѾѿѿоооонононнннѽѽѽѼммллϻϻμμϽϽϾϾпппѿйͯǣzne}\tSlOhNgNgNfLeNfNgNgNgNgNgNgNgNgNgNgMfMeNfNgOhPiSl[tb{juİDzȳɴʴʪǪǪǩƧƦŤã¡èĪŬƮȰȱȱɳɴʴʴʴʳʳʱɯȭƫƩħ榥¦¦çççç訨¨§¨©êīƯDZɳʶ˹ͺͻμϻϼлϻϺϺϻллллммннѾѾѿѿѿѿѿѿоооононнмнммммммϻϻϻϻϻκλμϽϽϾϾпппѿо϶̪ĝpd|]uUnNgKdJcKdKdJcKdKdKdKdKdKdKdKdKdKdKdKdJcKdKdKdLeNgUnZsazkzïƱȲɴ˵˪ǪǪǩƧƦŤã¡æĨŪƬȮȯȯɱɲʲʲʲʱȯȬǨĤêĮdzɶ˷̸͹ͺιιϺϺϻллллммннѾѾѿѿѿѿѿѿоооонмллκιθθθθθθ͹͹͹͹κκλμϽϽϾϾпппѿмϴʦ–ve}ZrTlNgHaE^F_G`G`F_G`G`G`G`G`G`G`G`G`G`G`G`F_G`G`G`G`HaNgRkXpazq~­ƯȲɴ˵˪ǪǪǩƧŦĤ£¥ħũƫǭǮǮȰȱɲʲʱɯȭǨĢîƲɴʵ˷̹͸ικϺϻллллммнѽѾѾѿѿѾѾѾѾоооонмлϺθͷͶͶͶͶͶͶ̷̷͸͹ͺλμϽопппѿѿѿоϻβɣp^wTlOgJcF_D]D]F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_E_F_F_E_D^F_JdNgRk\tkyƯȱɴ˵˪ƪƪƩŦťģ¢äĦŨƪǬǭǮȯȰɱʱɯȬǩţ›~zywvvvwwwxxxxxxxxwxz{}íưDzȵ˷̷͸κκϻлммѻѼѼѽѽҾҾҾҿҾѾѾѾѾнѾнмлϹθͶ̴˳˲˲˲˲˳ʴ˵̶̷͹λϽϾпѿѿѿѿѿҿоϺͱȡ~l[tRjMfJcF_D]E^G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`F`E_F_JcMfQiYriwƮȱɴ˵˩ƩƩƨŦĥãäĥŧƩƫǬǭǮǯȰɯɬǨŤœxpkihfffggghhhhhhhhghjkmr{ªįDzɳʵ̸͹ϺлϼмѼѼѼѽҽҾҾҾҾҽѽѽѽѽмммϺη͵˲ʰȭǫƪƪƪƪƫƬǯȱɳʶ̹ͻνϾпѿѿѿѿѿҾнϹͱȠ}kZsQjMfKdG`F_G`IbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbGaF`G`KdMfQiYqhw«ƮȰɴ˴˩ƩƩƨŦĥãâģťƧƩǪǫǬǭȮɬǧš{rjay\tZsYrWpWpWpXqXqXqYrYrYrYrYrYrYrYqXpYq[s\u^wc|lt|ëůȴ˷͸ϺϼмѼѼѼѽҽҾҾҾҾҽѽѽѽѽкϺθͶ̰ɬƧģêůȴʷ̹ͺνξоѿѿѿѿѿѿҾнϹͱȠ}kZsQjMfKdG`F_G`IbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbGaF`G`KdMfQiYqhw«ƮȰɴ˴˩ƩƩƨŦĥãâģŤƦŨǩǪƫǫǬȩƢ›{ph`xWoSkQjQjOiOiOiPiPiPiQjQjQjQjQjQjQjQiPhQiRjSlUnYrazhoxűɵ̸κϽѽҽҽҽѾҾҾҾҾҽҽѼѼммϹη͵̲ɪŤİȳʶ˸ͻνϾоѿѿѿҾнϹͱȠ}lZsQjMfJcF_D^F_G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`GaG`G`F_E^F^JcMeQiYqix«ǮȰɳ˴˨ŨŨŧĦĥãáâģŦŨƩǩƩƪƪǦŞrh`yYrQjNgMfMfLeLeLeMfMfMfMfMfMfMfMfMfMfMfLeMfNfOhQiTlZr_we}krwzdz˷κϾҾҾҾҽѾҾҾҾҾҽҼмѻмлϷ͵̲ʭƤ}{zz{}ůdzɴʹͼνϾпҿӾѽϺαɡn]vSmNgJcF_D]E^F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_E^E]F^KcNfSj\tkzëǮȰɳ˳˨ŨŨŧĦĥãàáģťŧƨǨƨƨŧƣÙwi_xYrSlMfJcJcKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdJdKdKdLeMePhTlWoZs^wd~hkq|îȳ˷μѽҾҾѽѾѾѽѽѽѼѼмлϻϹδ˰ɬǥš|rljiijms|ªĭƲɶ˸̺νϿѿҿӿѽкϲʤ”tc|XrSlNgHaF_G`G`G`F_G`G`G`G`G`G`G`G`G`G`G`G`F`G`G`G_G_H`NfRjXpayqìȯɰɲ˳˨ŨŨŧĦĥãàáġţťƦǦƦƦťğ{n`yWpRjMfHaF_F_G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`F`G`G`HaIaKcMeNfPhSlWqYs\ub{mv«ƱʸϻммѽѾѾѽѽѽѼѼкйϹͶ̯ǩţwmb{]u[tZsZs[t^wd|mu~«ůdzʸͻϽѽӿѽмϴ̨Ě~mb|\tUnNgKdKdKdKdJcKdKdKdKdKdKdKdKdKdKdKdKdJdKdKdKcLdNfUmZraykzŮȯɰɲ˳˧ŧŨŧĦĥãßàġŢŤƥǥƤŤĢĜvhZsRkNgJcF_E^E^F_G`G`G`G`G`G`F_F_F_F_F_F_F_F`F`F`F_G`G`HaJbJbKcMfOiQkSlXqb{ku«Ǵ͹ϻмнѾѾѼммѻѻйϸη̳ʪŢukb{YrSlRjQjQjRkTmZrb{iqy­ƴ˹λнӿѾнзͬơxld}[tSlOhNgNgMfLeMfNfNfNfNfNfNfNfNfNfNfMfMfMfNgOgOhSk[sbzjuƯɱʱɲ˳˧ŧŧŦĥĥãÞßĠŢţƥǥƣŢĠÚsf~XqPiMfJcF_E_F_G`HaHaHaHaHaHaG`G`G`G`G`G`G`GaGaGaG`HaHaIaIbIbIbKdLfMgNgRl[tb{kvïʶ͹ϻϽѾҾмлмллϸη͵˰ȥ›wkb{[tSlNgMfMfMfNgPiTmZs_xe~lux|ïɶ̹ϼҿѿѾйΰȧÞwmc{YrUmSlRkQjPiQjRjRjRjRjRjRjRjRjRjRjQjQiQjSlSlTmYqbzktĮȱʲʱʲʲʧŧŧŦĥĤ➟àġĢŤƤƢġߙqd}WpPiMfKdHaG`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJbIbJcJdKdKdNhUnZsayjxůɳ̷ͻϽѼллϻлкϷͶ̳˭ơ{lb{ZsUnNgJcJcKdKdKdLeOhTmWp[t`wf}ilr}įɴ̹ϾҿѿѼϵˮǧÝynd|_w\u[tYrYqZr[s[s[s[s[s[s[s[s[s[sZsZrZs\u]v^wc|lvìDZɲ˳˲ʲʲʧŧŧŦĥĤâ|{yxwxxxxyyzz{~œÞğĠŢƢƠğݗ~qd}WpPiMfKdHaG`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHbHaG`HaH`G`G`IcNgQjVn^vjuêưɶ̹Ϻικϻлк϶ʹ̱ɩĜqb{YqRkNgHaF_F_G`G`G`HaIbMfNgPiSkXpZr]ub{mwëdz˺нѾѾпѿѾй͵˰ȩÝ~upmljjkllllllllllkkkmnot|ŭǰɳ˴˳˲ʲʲʧƧƧƦťģá}zvtqooonnnoppqsvz}ÞßġšşÞœ~qd~WqPiLfJcG`F_G`HaHaHaHaHaHaHaG`HaHaHaHaHaHaHaIaIbIbIbIbIbHaHaG`G`G`F_F_GaJcLePgVnayjtŲʶͷ͸ιλлкε̴˰ɧÙ{k\uSlNgKdF_D]E^F_F_F_G`HaJcJcKdMfQhRjSlXqc{kuíǶͺϼнпѿѼϺͶ̰ȧß~}||}~~~~~~~~~~}}}ůȱɳ˴˴˴˲ʲʲʨǨǧǦƤţġŸ}yuqmigf~f~d|d|d|e|f~g~hkosx}ÞĠĠğޜsfYsRkMgKdG`F^F_G`G`G`G`G`G`G`F_G`G`G`G`G`G`HaHaHaIbIbIbIbIbHaHaHaHaG`G`HaJcKdMdRjZrayiudzʵ̶͹λлϺε̴ʯȦ×yiZsQjMfJcF_E^E_G`G`G`HaHaIbIbIbKdMeNfOgRk[tb{kuñʷͺϻϾѿѽмϺͶˮǨâįȲɴʴ˵̴˴˲ʲʲʨȨȧȦǤŢĠž}|{xsnie}ay^v]u]u[s[s[s[s]u]u_wbzglqv{~œßßޞwj^xVoQkMfIbG_G`G`HaHaG`G`G`G`G`G`G`G`H`HaHaHaHaIbIbIbIbIbIbIbIbIbIbIbHbIbIbJcJbNfTlYq`xiw­ǰʳ˸λϻϺζ̴ʯȦ×xhYrQiMfKdG`F_G`IbIbIbIbIbIbIbIbJcKcKdKdNgUnZsazixűʵ̸ͽѿѿѾомϺδ˰ȬǨĤ¢©Ĭưdzʵʵ˵̵̴˳˱ʱʱʨȨȧȦǤŢĠž|zyxwttrpkfaz]uXpUmTlTlRjRjRjRjTlTlVnYq]vbzglqtvxz|}›ÝÝޞ}rf^wXrSlMfKcKdKdKdJdKdKdKdKdKdKdKdKdJdJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbHbIbHaHaH`JbNfQiUn]vitƮɶ̹ϻϺζ̴ʯȦ×xhYrQiMfKdG`F_G`IbIbIbIbIbHaHaG`HaGaG`G`IbNgQjVo]wjwĮȴ˻ξѿѿҿѾлϹͷ͵˳ʱɱȰǰȰȱȲȲȲȲɲɲȲȲȲȲȲȲɲɱɱɱɱȲɳʵʶ˷̷̷͵̵̴˳˱ʱʰʨȨȧȦǤŢĠž|zxtqponkkjgc|_xZsVoRjOhOgOgMfMfMfMeNgNgPhRkWo[s`yd}hklnprsv{œžŸžznf^xXqQjNfNgMfLfLeMfMfMfMfMfMfMfMeLfLeKdJdJcIbIbHaIbIbIbIbIbIbIbIbHbIbHaHaG_HaKcLdOhUn`yitªƳ˸κϺη͵˰ɧĘyiZsQiMfJcF_F^G_HaIbIbIbIbHaHaG`G`G`F_F_G`JcLePiUoazlvİȹͽоѿҾѾнмϻϻλκλλλμμμμμλλλλλλλλκκ͹͸̸̸̸̹̹͸̷Ͷ̴̳˲ʰɰɯɧȧȧȦǤŢĠŸ}|wtqligfe~b{b{az`y\uYrUnRkNgLeLeLeKdKdKdKdLeLeMeOgRkVnYr]v`ybzc{d|g~hjmrx}œžŸßwme^wVoSkRjQjPiOiPiQjPiPiQjPiPiPiOiNhMgLeKcJbIbHaIbHaIbIbIbIbIbIbIbIbHaHaG`HaJbKcLeQiZrazjuİʷͺϺϸζ̲ʨř{l\uSkNgKcG_F^G_HaIbHbIbIbIbIbHaHaHaG`F`HaJcKdMfQjZsc|lxƶ̼ϾпҿѿѿѿѿѿѿѿѿппппоϽϼλͺ͹͹͹̷̷̶̵̳˲ʱʯɮɮɧǧǦǥƤŢĠŸ~}{ywqlid}`y^w]v\uYrYrXqXqUnSlPiNgLeJcJcJcJcJcJcJcJcJcJcLeNgQjSlVoXqYqZr[s]u^v`wc{ipv}ž áßwog_w[sZrYrWpWpXqXrXqXqYrXqXqWpWpUoSmQjNgLeJcIbIbHaIbIbIbIbIbIbIbIbIbIbHbIbJbJbJcMeTlZraykzɵ͹ϹϹϸͳ˪Ɯqb{YqRkNfIaG_H`HaIbHbIbIbIbIbIbIbIbIbHaIbIbJcKdMfTm[tb{m}óʺμопҿҾѾѾѾѿѿппϾμͺι͹͸̶̵̵̴˲˱ʯɮȭȭȥǥǥǤƤŢĠŸ~}}{yvsoid}`y[tWpUnTmSlQjQjPiQjOhMfLeJcIbHaHaHaHaHaHaHaHaHaHaIbJcLeMfOhPiQiQiRjTlTmVnYq_xf~lt}ž ááŸ{tlhgfd}d}f~ggghggfd~b|^xZtVoRkNgKdKdIbIbIbIbIbIbIbIbIbIbIbHbIbHaH`H`IaNfRjXpazqdz˷ϹϹϸεͬȠ{lbzZsTlMeKcJbJcIbHbIbIbIbIbIbIbIbIbHaIbHaHaG`IbNgSlXqb|rȶ̺μпҿҾѾѾѾѿѿоϼλ͹͸̶̵̵̴˲˰ʯɮȭȬȤƤƤƣţġß}|{yvrmic|]vYrUnQjOhOhNgMfMfLeMfLeKdJcIbHaG`G`G`HaHaHaHaG`G`G`HaIbIcJcKdLeMeMeMfNgOgPhSkYr_wd}lv}ž ââࠞyvutssuvvwwwvusojd~^wWqQjMfKdJcHaHaHaIbIbIbIbIbIbIbHbIbHaG`F_G_KdOgSk\uk{Ʋ˶θιϹ϶ίʥÛvkbzZrQiMeKcJcHbGaHaHaIbIbIbIbIbIbHaIbHaG`F_G`KdOhTl\vl}Ƶ˹μпӾѾѽѽннноѿѿоϼϻ͹͸̵̴̴̳˱˯ʮɭȬȫȣţţŢĢàž~|{ywsnid|^wXrUnQjNgMfLeLeKdKdKdKdJcJcIbIbHaHaHaHaHaHaHaHaHaHaHaHaIbIbJcJcKdKdKcKdLeLeMeOhTmYq^we~ow~áâááàž}vnf^wUnOiMfJcHaG`HaHaIbIbIbIbIbIbIbIbHbH`G_G_KdNfQjZsiyűʵͷιϹϷβ˩ŢtjayVnPhMeKdHaG`HaHaIbHaIbIbIbIbIbIbHaG`F_G`KdNgRjZsiyųʸͼϿӾѼлкϹθ͸͸κκλλϼϾпϽλκ͸ͷ̵̴̴̳˱˯ʮɭȬȫȢĢĢġġàž~}|zxupjd}_xYrSnQjNgLeJcJcJcJcJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcJcJcJcJcLePiTlXq^vgpw~¡¢ââĢàÝ{qg\vTnPiMfIbHaHaIbIbIbIbIbIbIbIbIbIbHaG`G`KdNfQjYrhxİɴ̶͸Ϲϸϴ̮ȨŢuj^vVnRjNgIcHaHaHaIbHaIbIbIbIbIbIbIbHaG`HaJcMfPhXpf~u®ȴ˸νѿѾһйζͳ˱ɯȮǮȯȯȰȱɲʵ˹ͼοпоϽλ͹͸̷̶̴̳̳̲˰˯ʮɬȬȫȠ  ŸŸ~}zxvslf`yZsTlOiMfJcIbHaHaHaHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHbLeNfQjVn_vf}mu¡¢âäĤţŢáŸtg^xXqSlMfJcJcIbIbIbIbIbIbIbIbIbIbHaG`G`KdLeOhWpfvįɲ̶͸Ϲϸ϶ͲʯɫƤ™xjayZrTmMgJcJcJcIbHaIbIbIbIbIbIbIbHaG`HaIbKdMeTl`xmz¬DZʷ͹θε̱ʭǨŤ ¨ĭDzȷ˼ͿпоϽλ͹͸̷̶̴̳̳̲˰˯ʮɬȬȫȟ~}|ywuqjd|]vWoQiLfKdIbG`G`G`G`HaHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaG`G`G`GaJcKdMfQiXp_vf}nx¡¢â䍍ƤţĢ¢«íŭŬƬƪŦĝrg`yXqPiLeKdJcIbIbIbIbIbIbIbIbIbHaG`G`JcLeOhVoevîȲ˵͸ϹϹϷε̳˱ʬƢukbzZsQkMfLeKdIbHaIbIbIbIbIbIbIbHaG`HaIbJcKdPh[sf~q~«Dzʵ̴̰ɫƥžðǷ˼;поϽλ͹͸̶̵̳̲˲˱ʯʮɭȫǫǪǞ~}|ywupic{\tVnPhLeKcIbG`G`G`HaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaIbJcKdNfTlYq_wg}qx¢âãģŤƤţģ㢬îŰDZȱɱʰɬȤĝ|qg^wTnOhMfKdIbHaIbIbIbIbIbIbIbHaG`G`KdLeOhWpfvîȲ˵̸ϹϹϷζ̶̴˰ɩštjazVpPiNgLeJcHaIbIbIbHaIbIbIbIbG`HaIbIbJcNgWp`xhtìǯɮȪƤœ~|||}òȹ̼;ѿпнϽλ͹͸̶̵˳˲˲˱ʯɮȬǫƫƪƝ~}|xvtohbz[sUmOgLdKcJcHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJbJcKdPiTlYq_vipx¡áâĢţţţģ㢢ªìįƲȳʴ̴ʹ̱˪ɥş|rf[tTmPiMfJcIbIbIbIbIbIbIbIbHaG`G`KdMfPiXqgwîȱʴ̸ιϹηͷͷͷ̴ˮȩţtj^wVoRkOhKdHbIbIbIbHaIbIbIbIbHaIbIbIbJbLeSlYr`yjxå |smkkklou~óȷ˻ѿѿѾнϻι͸̶̵˳˲ʱʰɮȭǫƪŪũŝ~}|xvtohby[sUmOgLdKcJcHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaIbLeNfRjWn`vf}nu¡áâĢţţţģ䤤¬îƱȴʵ̷θϸ϶ϱͮ˩ǡÔre~\uVoQjLeJcIbIbIbIbIbIbIbHaG`G`KdMfPiXqgwîȱʴ̸ιϹηͷ͹͹θʹ˱ɭǥ˜wi_xXqSlMfJbIbIbIbHaIbIbIbIbHaIbIbIbHbJcOhSlWp_xjvvlc|^v[tZtZt[t^vd|nyðǷ˾ѿѿѾѽϻι͸̶̵˳˲ʱʰɮȭǫƪŪũŝ~}|xvsngax[sUmOgLdKcJcHaG`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHbHbHaHaHaHaHaHaHbIbIbIbIbIbIbIbIbHaHaHaHaJcKdNfRiYp_wf}nx¡áâĢţţţģ㤤«íưdzʵ̷θйѸеϳί˩Ȟ}oe}\uUnNgKdJcIbIbHaIbIbIbHaG`G`KdMfPiXqgw­ǰɳ˷͸θηͷ͹͹ιͶ̵˲ɬơsg_wWpOgJcIbIbHaG`IbIbIbIbHaIbIbIbHaIbLeOhQkWpazjs||sjazYrTmRkQkQkRkTlYrc|mwòȻοѿҾмϺθͶ̵˳˲ɰɯȭǬƪũĩĨĝ~}|xvsnhay[sVnPhLeKdJcHaG`HaHbHbIbHbHbHbHbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaIbIbIbIbIbIbIbHbHaHaIcJcLdNgTlYq_wg~qz¡àáĢţţţĢ⣣«ŭƱȳ˵ͶϷзедϲέˤŜxlb{YrQjLeJcJcHaHaHaIbIbHaG`G`KdMfPjXqgw¬ǰɳ˷͸ηζͶ͸͸͸̶̶˴ʰȧğ}pe}[sQiKdJcIbHaG`HaIbIbIbIbIbIbIbHaIbKdMfOhRkZsazhnsuusnhazZsSlPhNgMgMgMfOgSl[td}myƸ;ӿѽлιͷ͵̳ʱɰɯȭƫŪũĩħĝ~}|xvsoibz]uXpRjNgLeJcHaGaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHbHaHaHaHaHaHaHaHaHaHaHbIbIbIbIbIbIbIbIbIbIbIbIbJcJcLdPiTmYq`wjt| àáĢĢĢĢá¡êŮǯɲ˳ʹϵдϵдϰͩȢěth]vSlMfKdJcHaG`HaIbIbHaG`G`KdMfPjXqgvƯȲʶ̷Ͷ͵̵̶̷̶˶˶˶˳ɬƦàyl`xTlMeKdIbHaG`HaIbIbIbIbIbIbIbHaIbJcKdLeNgSlYr]vb{d}ffd}b{]vYrTmOhLeKdKdKdJcKcNgUn\tc|oĵ̽ϿҽѻϹη͵̳ʱɰȮȬƪũŨĨħĝ~}|xvsojd|_wZrTlPiNgLeJcIaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJbJcJcJcJcJcJcJcJcJcJcJbIbIbIbIbIbIbIbIbIbIbIbIbHaHaIbLeNhRkYqb{mv àáĢĢĢĢá¡èīŭǯɱ˲ͳδϵжѳϮ˩ȣØ{nazUnNgKdJcHaG`HaIbIbHaG`G`KdMfPjXqgvƯȲʶ̷Ͷ͵̵̶̶̶˶˸˸˷˲ɮǩĠtf~XpPhMfJcHaG`HaIbIbIbIbIbIbIbHaIbHaIbJcJcMfPiRkUnWpWpWpWpUnRkPiMfIcHaG`G`G`F_F_HaNgSlYrd}u³ʻϿҽѻϹη͵̳ʱɰȮȬƪũŨĨħĜ}|{wuspkf~bz]uWoSkPiNfKdJbJcJcJcJbJcJcJcJcJcJcJcJcJcJcJcJcJcKcKcKdKdKcKcKcKcKcJcJcJcJcIbIbIbIbIbIbIbIbHaHaG`GaJdLeOhTm^whr| ¡âĢĢĢá¡¡¡¦éĪƭȮʰ˱Ͳδждϰ̬ɦŜqc|VoOhLeJcHaG`HaIbIbHaG`G`KdMfPjXqgvŮDZɵ˶̵̴˴˵˵˶ʶ˸˹̸̴˱ɮǦ×yj[sRjNfKdG`F_GaHbIbIbIbIbIbIbHaIbHaHaIbHaJcLeMfNgOhPiPiOhNhLfKeJcHaG`F_F_F_E^D]F_KdOhTm^xpɺξԿҼѺϹη͵̳ʱɰȭȫƪũŨĨħĜ}{zwusqlhd|_xZqUnSkPhMeKcKcKcKcJbKcKcKcKcKdKdKdKdKdKdKdLdKeLeLeMeLeLeLeLeLeMdLdKdJcJcIbJbIbIbIbIbIbIbIbHaGaGaJcKdNgRl\te}ny¡áĢĢĢáááá¥çèūǬɭɮ˰̲δϲί̫ɦŝrc|WpOhLeJcHaG`HaIbIbHaG`G`KdMfPjXqgvŮƱȴʵ˵˴˴˵˵˵ʶʸ˸˸˵˲ʰȨĚ|m^uTlOgKdG`F_G`HaIbHaIbIbIbIbIbIbHaIbIbHaIbJcKdLeLeLeLeLeLeKdJcIbHaHaG`G`G`F_E^F_KdNgSl\unɹνпӾѻйϸη͵̳ʰɯȭȫƪũŨŨŨś~|zyvtsqmifb{\tXpUmRjOgMeMeMeMeLdMeLeLeLeMfMeMeMeMfMfMfNfNgOgOgPhPhOhOhOhOhPgNfMeLeKdJcJcIbIbIbIbIbIbIbHaHaHaJcKdMfPjYrbzjt~¡ááááááá¡¡¥æĨƪǫǬȭʯ̱Ͱͭ˪ȦŞrd}WpOhLeJcHaG`HaIbIbHaG`G`KdMfPiWqguĭưȴɵʴʳʳʴʴʵʵʷ˷˷˵˳ʲɫƝrc{YqSkNgIbHaHaHaIbHaIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcKdKdJcJcJcJcIbIbIbIbIbIbG`F_G`KdNgRk[tl}ȹͼϾҽкϸηͶ̴̲ʰɯȭȫǪƩŨŨŨś~|zwvtsqmjhd}_x[tYqVnSkQiPhPhPhOgPhPhPhPhQiQiQiQiQjQjQjRjRkSkTkUlUmUmUmUmUmUlRjQiNgMfJcJcIbIbIbIbIbIbIbHaHaHaJcIbKdMgUn\td|mw ááááááá¡¡£¤¦ħŨŨƫȭʯˮ˫ɪȦŞsd}WpOhLeJcHaG`HaIbIbHaG`G`KdMfPiWqe}s«ĮƲɴʴʳʳʴʴʵʵʷ˷˷˶˵̵˯ȣ—|mb{[sTmMfJcJcJbIbHaIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaG`G`HaHaHaHaHaIbIbIbIbIbG`F_G`KdLePiYrj{ȷͼϾҽкϸηͶ̴̲ʰɯȭȫǪƩŨŨŨś}{ywusrpmkhe~az]v[tXqUnTlSkSkSkRjSkSkSkTkTlUlUlUmVnUnVnWnWoXoYpZqZr[r[r[r[sZqWoUmQjOgKdJdIbIbIbIbIbIbIbHaHaHaIbIbJcKeRkXp^wgqyŸ  ¡¡ááá¡¡åĦæũƫȭɭʪȩǦŞte~WpPhMfJcHaG`HaIbIbHaG`G`KdLePiVpd}rĮƲȳɳʲʳɴʴʵʵʷ˷˷˶̷̶̲ʨŞwkb{ZsQjLeKdJbIaG`HaHaIbIbIbIbIbIbIbIbHaHaG`G`G`G`G`G`G`G`HaHaIbIbIbIbIbG`F_F_JcLdOhXqhzǷ̻νϿѿѼϹηͶ̵˳˱ʰɯȭȫȪǩŨŨŨŚ}zxvtrqomjheb|_y]vZsXqVoVoVnVoVmVnWnWnWnXoYpYpYqZqZrZr\r\s]s^u_v`waxaxaxax_v\sXpTmPiLeJdIbJcHaHaIbIbIbIbIbIbIbHbIbJdPiUmZrbzkt{  ¡¡¡¡¡¡¡£ä¥ħũǫȫȩǨťĝsd}WpPiMfKdHaG`HaIbIbHaG`HaJcLeOhVoc|q~íűȳɳɲɳɴʴʵ˵˶̷̷̷̷ͷʹ˫Ǥ›uj`yUnOhMeKcHaG_HaHaIbHbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaIbIbIbIbIbIbG`F_F_JcLdOhXqizǶ̺νϿѿлϸͶ̵˴˳˱ʯɮɭȫȪǩƨŨŨŚ~|zxvtrpnljhfc}`{_y]vZtYsYsYrYrYqYqZqZq[q[r\s\s]t^t^u_u`vawawcydze|f}f}f}f}d{`w[tWoRjMfKeJcJcHaHaIbIbIbIbIbIbIbHbHaJcNgRjUn]uf~ov~££åħũƩƧŦģÜrd}WpPiMfKdHaG`HaIbIbHaG`HaJcKdOhUnazmzİȲȲɱɳɴʴʵ˵˶̷̷̷̸͸͵̯ɪŤ™tj]vUnQiNfJbH`HaHaIbHbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbG`F_G`KdMeQiZrj{Ƕ̺μϾѾлϸͶ̵˳˲ʰʯɮɭȫȪǩƨŨŨŚ~|zxvtrpnljhfeb}a{_z^x]w]w]v]v]u]t^t^t_t^u`v`vawbwbxcxdyezezg|h~ijjjjh~cz^vYqTlOgKeJcJcHaHaIbIbIbIbIbIbIbHbHaHaLeNfQjWp`yjrz¥çħĥä¡rd}WpPiMfKdHaG`HaIbIbHaG`HaJcKdMfSl]vhs®ưDZɱɳɴʴʵ˵˶̷̷̷̸͸ͷ̳˰ɬƤØwi_xYqTlNfJbJcIbIbHbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbG`F_G`KdOfSk\tl}Ƕ̺μϾѾлϸͶ̵˳˲ʰʯɮɭȫȪǩƨŨŨř~|zxvtrpnljhgecc}a|`z_y_y_x_w_w_v_v_v`v`waxaxbycydzeze{f|f|h~ijkkkkid{_vZqTlOhLeJcJcHaHaIbIbIbIbIbIbIbHaHaHaKdLeNgTm]vf~px¥åã£qc|VoOiLeJcHaG`HaIbIbHaHaHaJcJcLePjYrc|lyįưȰȳɴʴʵ˵˶̷̷̷̹͹͸̵̴ʱɫơtiayZrQjLdKdJcHaF`G`G`GaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`HaGaGaG`F_E^F_KcOfTk]tm~ȶ̺μϾѾлϸζ̵˳˲ʰʯɮɭȫȩǨƧħħę~|zywusqnljhgedd~b~a|a{`z`y`x`x`w`w`wawawbybycydyezeze{g|f|g}hikkkkhdz_vYqTlOhLeJcJcHaHaIbIbIbIbIbIbIbHaHaHaJcKdMfSl\ue}ox¤¢~pb{UnNhLeJcHaG`HaIbIbIbHaIbIbIcJcNgUo]vf~p~íŰǰȴɵʵʵ˵˶̶̷̷̸͸͸̷̶˴ʯȧĠ~si`yVnOgLeJcHaE_F_F_F`F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_G`F`F`F_E^D]F_KcPgUl_voȶͺμϾѾѼйηͶ̴˳˱˯ʮɬɪȩǨƧħĦØ~|{zxvtromkihfddcb}b|a{`zaxaxaxaxaxaxaxbybycydyezeze{f{f|f|g~h~iiii~g}cy_uYqTlPhMeKdJcHaIbIbIbIbIbIbIbIbHaHaHaJcKdMfRk[td}nw£¡}pb|UnNhLeJcHaG`HaIbIbIbIbIbIbHbIbKeRkXq_whvįưǴɵʵʵʵʶ˶˷̷̸̸̸̷̷˷˳ʭǨáti]vUnQjNgJcG`G`G`G`F_G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`F`G`G`G_F_H`NfSjZqc{tɷλϼϾѾѼйϷζ͵̳̱˯ʮɬɪǨƧŦæå˜~|{zxvtromkihfffedd~c}b|azazaxaxaxaxaxbybycydyezeze{f{f|f|g~h~iiii~g}cy_u[rVnRjOgMfLeJcIbIbIbIbIbIbIbIbHaHaHaJcKdMfRk[td}nw}pd|WpPjLeJcHaG`HaIbIbIbIbIbIbHbG`IcNgSlXp`xn}ĭưǴɵʵʵʵʶ˶˷̷̸̸̸̹̹͹ͷ̳˰ȬƤ˜wj`yZsUnOhLdKdKdKdJcKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdJdKdKdKcKcNfUl[rczm}ò˹λϼϾѾѼйϷζ͵̳̱˯ʮɬɪǨƧŦæå—~|{{ywuspnljigfffddc}b|bzazayaxayaxaybybycydydzdzd{eze{e{f}g}h~h~h~h}f|by`v\sXoTlQiOhMfJdJcIbIbHaHaHaHaHaGaG`HaJbKdMfRk[td|nw}zwuvvvwy|}qd}WpPjMfJcH`G_H`IbIbIbIbIbIbHaG`HaLeOhSl[tixíŰǴɵʴʴɴɵʶʷ˷˸̸̸̹ͺͺιͷ͵̳ʭǣšwkd}]uUmQiPhOhNgMfNgNgMfMfMfMfMfMfMfMfMfMfMfMfMfMfLeMfNfNfNgSj[sczlwƵͺϼмоѽѼйϷ϶εͳͱ˯ʮɬɪǧƦĥ¥¤~~||{ywvtqomkjhgffedc~b}azazayaxaxaxaxbybybycyczczczczdzdze|f|f}f}f}f}e|by`v]tZqVnSkQjOgKeJdJcIbHaHaHaHaHaGaG`HaJbKeNgSl\te}owzuqnkkkklnqw}}re~YqRkNfJcH`G_H`HaIbIbIbIbIbHaG`G`KdNgQjXrguìůdzɴɴɴɴɵʵʶ˶˷˷̸͸͹κιθθͷ̲ʪƤ›wne}[tWoUmTlRkQjRkRkQjQjQjQjQjQjQjQjQjQjQiQiQiPiOhQiRjSkTlXpbzkvïȸμнѽоѽѼйϷ϶εͳͱ˯ʭɫȩƧŦĥ¤£~~||{zxwurpnljhhggedc~b}a{`z`y`x`x`w`xaxaxaxbybybybybycycyd{e{e|e|e|e|d{byaw_u]sYpVmSlQiMgLfKdJcHaHaHaHaHaGaG`IbLdMfPiVn^vhpx~xsmhd}ay`x`x`xayb{fmtzti]uVnQiMeIaH`H`IbIbIbIbIbIbHaG`G`KdMfPiWqf~tìůdzɴɳɳȳȴɵɶʶʷ˷̸͸͹ιιιιθζ̰ʫƤÛxnd|_w]u\tZrYrZsZsZsZsZsZsZsZsZsZsZsZsYrYrYrXqXpYq[s\t]vbzlw­Ǵ˻ϽѾѽѽѼѻйϷ϶εͳͱ˯ʭɫȩƧŦ夣~~||{zxwutrpnljhggedc~b}a{`z`y`x`x`w`xaxaxaxbybybybybycycydze{e|e|e|e|d{bybyaw_u[tZqWpUmQkOiMfLeJcJcJcJcJcIcIbKdOgQjTmZrbzkrx|vpic|^wYrVnUmUmUmVnWp[tb{ipxzpd|]uWoRjMeJbJbIbIbIbIbIbIbHaG`G`KdMfPiWqf~tìůdzɴɳɳȳȴɵɶʶʷ˷̸͸͹ιιικκθδ̰ɫǤ™zpljigfhiiiiiiiiiiihhhgghjknr|îǴ˸ͽоѾѽѽѼѻйϷ϶εͳͱ˯ʭɫȩƧŦ夣~~}|{{yxvusqomkihhfedc~a|`z`y`x`x_w_x`w`wawbxbybybxbycycydyeze{e{e{e{d{czbzbyaw^v\tZsXpTnQkPiNgKdJdKdJdJcJdKdMfQiTmXq_wf~nty~{vphb{\uXqRkPhOgOgOgOgPiSlZs`zgpzwkd|]uVnPhLdKcIbHaHaHaHaHaG`F_G`KdMfPiWqfuìůdzɴɳɳȳȴɵɶʶʷ˷̸͹ͺκϺϺϺϺιεͳ˯ɪš}ywwvvxyz{zzzzzzzyxxxxxx{|~®ȴ˸ͻξпѾѽѼлкϹηζ͵ͳ̱˯ʭɫȩƧŦ夣~~}}|{yxwvsqpmkjihfedc~a|`{`z`y`x_w_w`w`wawbxbxbxcxbycycydyeze{e{e{e{e{d{c{czbx_x_v]uZsWqTnRkPiMgLeLeLeLeLeMfPiTmXq]uc{jqvz~{wqjb{\uXqTmOhMeLeLeLeLdLeOhUnZtayis}~skd{[sSkNgLeJcHaG`G`G`G`F_E^G`KdNgQkYshwĬƯdzɴɳɳȳȴɵɶʶʷ˸̸͹κκϻϺιθͶ̳˱ʯȫƤœìƳ˸ͺμϽпонмлϺϸζεʹ̳̱ʯʭɫȩƧŦĥ¥¤~~~}}|{{yxwvtrqnljiigfed~b|a{az`y`x_x_w`w`wawbwcxcxdxcydydyeyfyfzfzf{f{e|e|d{d{czazay_x]v[tXqVoSlQjOhOhOhOhOhPiSlXq\uazhntw{~|xrld}\uWpSlPiLeKcJcJcJcJbJcLePjUnZsbzmv|tlc{YqSlPiLfIbGaHaHaHaG`F_IbNgQjVp^wm{ĭǯȳʴʳʳɳɴɵɶʶʷ˸̸͹͹ιιη͵˳ʯȬǪƩĦá©ŮDzʸͺλϽϽϾϽϽϻϺιθͶ͵̴̳˱ʯʭɫȩƧŦĥ¥¤~~~}}|{{yxwvtrqpnlkigfed~b|a{az`y`x_x_w`w`wawbwcxcxdxeyfyfygyhyhzhzh{h{g|f|f|f}e|c|c{bzaz_x\uZsWpVnTlTlTmTmUnVoYr^wb{flrvx{|}}ztnf^wVoQjOhLeHaHaHaHaHaG`F_HaLeOhTl[sf~pz~vmc{[tWpRkMfKdKcJcJcIcJcMfSlWp]wft«ƭȯȳʴʳʳɳɴɵɶʶʷ˸̸ͷͷ̷̵̱ɭƩĤèĨƪƪƪƪƩũŨŨĨĨĨĨèĪīŬƭȱɴ˷̹μϽнϾϽϾϽϽϻϺιθͶ͵̴̳˱ʯʭɫȩƧŦĥ¥¤~}}||{zzxwwvtsrqomljhgfe~c|b{bzayay_x_w`w`wawbwcxdxexfxgxhxiyjyjzjzi{i{h|g}f}f}f}e}e}d|c|bz`x^w\tZsYqXqYrYrZt\u^xb|fjoswyz{{{xrkc|[tSmOhLeJcG`G`G`G`G`F_E^G`JcMeQiWobzmwvlc|]vWpQiNfMeLeLeLeMfQiWp]vd~n|ĬǮɯɳ˴˳˳ʴʵʶʶ˷˷̹͸ͷ̶˵˲ɫƥªƮȯʱʲ˳˳˱ʱʱʱɱɱɱɱȱɲɳɴʵ˷̹ͻμϾпопоϿϾϾϼϻκιͷͶ͵ʹ̲˯ʮɫȩƧŦ夣~~}}||{yywwvutsrrpnmkihgfd}c|b{ayay`x`x`x`xaxbwcwdwfwgxhxjxkylylzlzk{j|h}g}g~f~f~f~f~e}d}c|bzay_w_w^v]v^w^x_ya{c}fimptvxzzzzwqib{ZsRlNgLeJcG`G`G`HaHaG`F_G`JcLePhVm`yku~tkd|\uUmQjPhOhOhOhPiUn]ud|lvŭȮʰʲ̳̳̳˴˵˶˷˷̸̹͸Ͷ̵ʲɮƥœ~}|ywvvwwx}Ưɱ˴̶ͷζε̵̴̵̵̵̵˶˵˶˶˷̸͹ͺμνϾϾоппппонмϻϺθηͶʹ̲˰ʮɬȪƧĦå~}||{{zzyxxvvutsrrrponljihge}d|c{bzbzayayayayaybxcxexfxhxjxlxmynynznzl{k|i}h}h~g~gff~f~f~f~e|d|d{c{c{b{c{c}dfgilnqsuwyyyyvphazYsRkMfKdJcHaHaHaIbIbHaG`HaJcLdPhUm_xju}tle}\uYqWoVoVoVoWq\ue}lvªǭɮʯʲ̴̵̶̶̷̷̸̳̲̳Ͷ˳ʰǬŦ|rmljhgfgijkoyëǯʳ̷ιϸϷηηηηͷͷ̸̸̸̸̹ͺͺͺμμννϽϽϾϾϾϽϼϻκιͷͶ͵ͳ̱˯ʮɬǩŧĥ¤}|{zzyyxxwvvttsrrrrrponljihge}d|c{bzbzayayayayaybxcxexhxjxlxnxoypypzpzn{m|j}h}h~g~ghhhhiihhhhghhijklnoqsuwwwwwtnf_yWqPjLeKdJcHaHaHaIbIbHaG`HaJcLdNfSk]vhsxphd|bzazazazc|hpxêǭɮʮʰ̴̵̶̶̵̵̴̱̲̳˲ɭƨ¢vmc}^w\u[tYrXrYrZs\u]v^wc|mwĬȲ̸ϻѻѻллллϻϻμμμμνϽϼϼϽμμλλͻͺͺͺ͹͸ͷ̶̵˳˲˱˱ʯɭȬȫǩŧĥ¤}{zyxwwwvvuutssrqrqqqponlkjhgf}e}d|c{c{bzbzbzbzbzcydyfyiykymyoypzrzqzqzo{m|k}i}h~hhhhijkkkkkljkkkklmnopqtuwwwwtnf_yWqPjLeJcJcHaHaHaIbIbHaG`HaJcKdNfSk]vhs~œztpnmmmoszêǫȬɭɯ˱˱̴̲͵ͶͶ̵̴˲ʮƧŸukb{YsTmSlRkQjPiQjRkTmUnVoZsd}mxůʷϻѻѼѼѼѼѻϻϻμνμνϾооноϽϼλͺ͹͸̸̷̷̶̵˴ʲʱʰʯʯɭȬȫǪǩŧĥ£~|ywvvuttttsssrqqpqppponmlkjhgf}f}d|c{c|b{b{c{c{c{dzezgzizkznzpzqzszr{q{o{m|k}i}h~hhhijkllmmmmllllkllmnnprtvvwwtnf_yWqPkMeKcJcHaHaHaIbIbHaG`HaJcLdNfSk]vhs~{zyyy{~èŪǫǬȮʰʰ̴̱͵Ͷζʹ˲ʯȪĠukb{[tSmOhNgNgMfLeMfNgOhPiPiTm\ud}mydz͸клѼмлкκκͺͻͻͼξϾоонϽϻκ͸̶˵˴ʴʳʲʱɰȯȮȭȬǬȫǪǪǪƨŧĥã{yusrrpppppppppoooooonnmlkjihgf}f}e|d|d|c|c|d|d|d{e{e{g{j{l{o{q{r{s{s|r|p|n|l}j}i~iiiiklnnoooonmmlkllllmnqsuvwwtng_zXrQkMfKdJcHaHaHaIbIbHaG`HaJcLeOgTl^wit§ĨũŪƬȮɯ˰̴̲͵ͳ˰ɭǩĢviayZsUnOhKdKdKdKdJcJcKdKdKdLeNgUn[tbzn|ï˶θϹллкϸ͸͸̸̺̺̻ͼϼϽϼϻλͷ̵ʲʰȭǬƫƫũŨħææåäåĥåĦħŦĥĤ£{vsolkkiiijjjlllmmmmmmllkjjjihgf}f}e|d|d|c|c|d|d|d}e}g}i}l}n}q}s}t}u}s}r}p|n|m}j}i~iiikmnppqqqqpoonmmllllnqsuvwwtng_zXrQkMfKdJcHaHaHaIbIbHaG`HaJcLeOgTl^wit¦çèĪƬǭɮʰʰ˱ˮɩŤž~th]uVnQjNgJbG`G`G`G`F_F_G`G`G`G`HaNgSkYqc{rɴηϹллкϸ͸͸̸̹̹̹ͺκͺ͸ͷ̵˰Ȭŧ죢|wrmhfd~d}b|b|b}c~d~egijkklkkkjkjijihhg~g}f}f|d|d|d|d}e}e}e}f}g~i~m~o~r~t~u~u~t}s}q}o}m~k~j~jjjknoqqrsssrqqonmlllkmprtvwwuog_{XrQkMfKdJcHaHaHaIbIbHaG`HaJcLeOgTl^wiu¨ĪŬȭɮɮɮɪƣœ}ri_wVmOhLeJcHaE_F_F_F_F_F_F_F_E^E^F_KdOgSk]vm}ɴͶϹмѼѻϹι͹͹͹͹̹ͺι͸̶̴ʱȪĤysmhb|_y]x]v\v[v\v]x_yazc|e~gijjjjjiiihihhhg~g}f|f|e|e|d|d}e~e}e~f~hj~mprtuv~t~s~r~p~n~l~kkkklnoqrstttssqpnnlllknprtvwxuoh`{XrRkMgKeJcHaHaHaIbIbHaG`HaJcLeOgTl^wjuéīƬǬǫǪƥÜriayYqQiLeKdJcHaF`G`G`G`G`G`G`G`F_E^F_JcMfQj[sj{ȴͶϹмѼѻкκκͺ͹͹͹͹ͷ̵˲ʰȬţ~|{ywwwyxz}|tnhb{\uYrWqVpUoToUoWqYs\u_xbzd}ghhhhhgggggggg~g}g}f|e{d{d{d|d}e~e~fgiknqsuvvutrpomllllmoprstuuuuusrpomlllnqsuwxxvpia|YsRkMgKeJcHaHaHaIbIbHaG`HaJcLeOgTl^wiu¨ĩŨĥģtg_wYqTlNfJcJcIbIbHbIbIbIbIbIbIbIbG`F_G`KdMfQjZsizȴͷϹнҽҼлϺκ͹͸ͷ˵˴˲ȭǪŧâ|snljhffgiikou}|vmf`y[sUnRkPjOiOiNiOiQkSmVoYr\t`yc{d}efffeeeee~e~e}e|e{e{dze{d{d{d|d}e~e~fgiknqsuvvuttrqonnnnoqrtuvwwwwwutrqonnnprtuxyzxrja|YsRkMgKeJcHaHaHaIbIbHaG`HaJcLeOgTl^wis~£{qg[tUmQiNfJbHaHaHaIbHbIbIbIbIbIbIbIbG`F_G`KdMfQjZsizȴͷϹнҽҽлϺθͷʹ˱ȭǪŦulc|_w]u[tYrWqWpXqZsZs\u`ygox}wpg`y[sVnPiMfLfLeLfKfLeMgPiRkUnXp\u_xazc|d~ddddc~d~c}d}d|d{dze{dzdzczc{d|c}d~e~fgjlnqsuvvvuusrqppppqstvwxyyyyywvusqpppqsuwyz{yskb}ZtRkMgKeJcHaHaHaIbIbHaG`HaJcLeOgSl]vhs}zpg]wTmOhMeKcHaG`HaHaIbHbIbIbIbIbIbIbHaG`F_F_JcMfQjZsj{ȵ͸ϺоӿӾѽлθ͵̱ʫŤŸzqibzYrUnTlRkPjOiOhPiRkRkSlWp^wf~mwyrjazZsVoRkMfKdJcJdJdJdJdKeNgPiRkUmYr\u^xazb|c~c~b~c~b}c}b|b{bzczczczcyczczc{c|c}d}e~fgjlnqsuvvwvvtsrqqqqrtuwxyzzzzzyxwvsrrrrtvxz{|{tlc~ZtRlMgKeJcHaH`HaIbIbHaHaHaJcLeNgSk]vgq|{pg_xWpPiLeKdJcIaHaHaHaIbIbIbIbIbIbHaIbHaG`F_G`KdOhSl\ul~ɶ͹ϻѿԿҾѻη̳˭Ǥ|yumf~_xZsTlQiOhNgMfKeKdMfNgNgOhRkXq^we~nz{sld}[tUnQjOhKdIbIbJcJcJcJcJcLeMfPiRkVoYr[u^x`za|a|a|a|`{a{`z`y`x`xaxaxaxaxaxazb{b|c}d~fgjlnprtuvwwwuttsssstvwyz{||||{{zyxvutttvxy{|}|umd~[uRlMgKeJcHaH`HaIbIbHaHaHaJcKdMfRk[te~ny{pf~^vXpRkMfJcJcJbIbIbIbIbIbIbIbIbIbIbHaIbHaHaG`IbNgSlYqb{rɷκмѾӿҽиͳʮȦÛ}rljg`x[tWpTmOhMfLeKdKdJcJcKdKdKdKdNgSkXq]ve}q~}skd}\uUnOhMfKdIbG`G`HaHaHaHaHaJcKdMfNhRkUoYs\v^x_z_z_z_z^y]w\v\u\t\t]t]t]t]u^u_x`y`za|d~fgjlnprtuvwwwvvvuuuuvxy{|}~~~~}}|{zxwvvvxz{}}~|umd~[uRlMgKeJcHaH`HaIbIbHaHaHaJcKdLfPiYrazis}vnd|[sTlPhLeIbHaHaHaIbIbIbIbIbIbIbIbIbIbHaIbJcJcKdMfTm[tb{l|ñ˹μмѾӾҽйβɫƤšwmb|]v[sXrSlPiNgMfIcIbHaG`G`G_G`G`G`G`G`IbMeQjUn]uiwwld}^wWpPiLeKdJcHaG`G`HaHaHaHaHaIbJcKdMfQjTmWq[t]w^y^x]x]w[vZtYsXqXpXpYpYpYqYr[r\u^w_ya{d~fgjlnpqstuwxxwwwvvwwxz{}~~}|{zyxxxy{|}~|umd~[uRlMgKeJcHaH`HaIbIbHaHaHaJcJcKeNgVo]vd}mwuld}\tTlOgLdJcHaG`HaHaIbIbIbIbIbIbIbIbIbHaG`HaJcKdMfQjZsc|kvƴ̻оѽҽҽҺϵ̬ƣtkc|XqSmRkPjMfKdJcJcHaG`G`F_F_F_F_G`F_F_E^G`JbMfQiXpe|rxpf~^vYrSlNgKdJcIbHaHaHaHaHaHaHaHaIbJcJcLePiSlWpZt\v]w\w\w[uYtXqVoTnTmTmUmUmVmVoXoYs\u^x`{c~fgjlnpqstuvxwwwwwwxxy{|~~}|zyyyyz|}~~|umd~[uRlNfKdJcHaHaHaIbIbIbIbIbIbJcJcMfSlXr^xgr{wlc|]vVoPhLeKcIbHaHaHaHbIbIbIbIbIbIbHaIbHaHaG`HaKdMfPiVoazkuĮɷͽѿҾҼѻѷΰɥšvjb{[tRlOhNgMfKdIbIbIbHaHaHaG`G`G`G`HaG`G`F_G`JbLeOgVnczp}yqh_wXpTmPiKdJcIbIbIbIbIbIbIbIbIbIbIbJcJcLeOhRkVoYs\u\v[uZtYsWqUnSlQjPiPiQiQiRjRkTlVpYs\v^yb}egikmoprstuwwwxxxxyyz|}}|{zzzz{}~~~~{tlc}ZtRkNfKdJcHaHaHaIbIbIbIbIbIbIbIbKdPiTmYr`yku~wnc|[tWpRkMfJcJcIbIbIbIbIbIbIbIbIbIbIbHaIbHaHaHaIbNgQjVo^wjvĭȳ̹ξѿӽѹ϶ΰʨěxjazZsUnNgKdKdKdJcIbIcIbIbIbIbIbIbIbIbIbIbHaG`HaJcLeOgVnbyo|yyvog`xWoRjOhLeIbHaIbIbIbIbIbIbIbIbIbIbIbJcJcLeOhRkVnXqZsZtYsXqUoSmQjOhMfLeLeMeMeNfNgPhRlUoXr[v`{c~egkmoprstuwwwxxxxy{||}~}||||}~~~~~{tlc}ZtRkNfKdJcHaHaHaIbIbIbIbIbIbIbIbIbMfPiSlZse~oy}tkc|YrSlPiLfIbHaHaIbIbIbIbIbIbIbIbIbIbIbHaIbIbJcJcMfTmYr`yjxŰʵ̷λоѽѹϳ˭ȥěvj^wVoQjNgIbG`G`G`HaG`HaHaIbIbIbIbIbIbIbIbIbHaG`HaJcLeOgVnbyo|oolf`xYqSkNfLeJcHaHaHaIbIbIbIbIbIbIbIbIbIbJcJcLeNhRjUnXpYrXrWqUoSmQjOhNfLdJcJcKdKdLdLeMfPiRlUoYs]xa|dfjlnpqsstvvvxxxyz{|}~~}}}}}~~}zskb|YsQjMfKdJcHaHaHaIbIbIbIbIbIbHaHaHaKdNgPiVoazku}skc|[tSlNgLeJcHaG`HaHaIbIbIbIbIbHaHaHaHaHaG`HaIbKdLeQjZsazjuİʶκϺмѽѻжͭȥÛukazVoPiLeJcG`F_F_G`G`G`HaHaIbIbIbIbIbIbHaHaHaG`F_G`IbLeOgVnbzp|e~e~c|_wZrUlPhLeKcJcHaHaIbIbIbIbIbIbIbIbIbHaIbJcJdLfOhRkUnWpXqWpUoSmQjOhMfMeKcJbJbJcJcKcKdKdNgPjSmVpZu^yb}eilnpqsstuvvwxxxz{|}~~~}}~~~}yrja{YrQjMeKcJcHaHaHaIbIbIbIbIbIbHaHaHaKdMfNgTm_xis}}ukb{\uVoOiLeJcIbHaHaHaIbIbIbIbIbHaHaHaG`G`G`F_G`JcLeOhUn`yjtìȶλѽҼѼѻиβʧĜukb{ZsQjMfKdJcHaF_G`HaHaHaHaIbIbIbIbIbHaHaHaG`G`F_F_G`JcMfPiXpd|r~\u\u[tXpTlPhMeKdKcIbIbIbIbIbIbIbIbIbIbIbIbHbJcKdLeNgPiSkVnWoWpVoTmQjOhMfLeLdJbIaIaIbIbJbJcJcLeMgPjSmWq[v_zc~gkmoqssttuuvwwxy{||}~~~}}|xqia{YrQjMfKdJcHaHaHaIbIbIbIbIbIbHaHaHaJcLeMfSl\ufoy{tkb{ZsVoRkMfJcJcIbIbIbIbIbIbIbIbIbIbHaHaHaHaG`G`IbMfPiTm]vitŬȳ̺оҾӼѺжβ˫ƞxjazZsTmMfJcJcIbIbHaIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaG`G`IbLeQjTn\uhvSlSlRkQiNfLdKcIbIaIbIbIbIbIbIbIbIbIbIbIbIbJcLeMfNgPiRkUmWnWoWoTmRkOhMfKdJcJbJbIaIaIbIbHbHaHaJcKeMgOiSmWr[v_zd~ikoqssttuuvwwxy{||}~~~}}|xqia{YrQjMfKdJcHaHaHaIbIbIbIbIbIbHaHaHaJcJcKdOhXq`yir}yqiazXqRkOhMfIbHaHaIbIbIbIbIbIbIbIbIbIbJcJcJcJcKdKdMfSlXq^whuů˵͹оӿӻжίʩşwj]vVoQjNgIbHaHaHaIbHaIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcKdKdMfRkXp\vd}p}NgNgMfMeKcJbIbHbIaHaIbIbIbIbIbIbIbIbIbIbJcKcMfOgQiSkUmWnXoWoWnTlQiNfLdJcIbJbIaIaHaHaHaHaHaHaIbJcKeMgPjTnXr\vb{gjnqstututuvvwx{{{|~~~||{wpia{ZrQjNfKdJcHaHaHaIbIbIbIbIbIbHaHaHaIbJcJcMfTm[tc}lwzph`yZsRkMfKdJcHaG`HaHaIbIbIbIbIbIbIbJcJcJcKdLeMfMfNgQjYr`ygr­ɵκмѿӿҺϲ˩ƠwlayUnOhLeKdHaG`HaHaIbHaIbIbIbIbIbIbIbIbHaIbIbJbJcKdLeMfNgQjWp^wd}mxKdKdKdKcJcIbIbIbIaIbIbIbIbIbIbIbHbHaIbJcJcLeOgQiSkVmXoYpYpXoWnTkPiMeKcJbIbIbIbIaIaIbIbIbIbHaIbIcIcKeNhQkUnYr_xd}imqttuuutuuvwxzz{|}}~~~~{{zwpib{ZsRkNgKdJcHaHaHaHbIbIbIbIbIbIbIbIbIbIbIbLeRkWp^wfpxzrh`yZsUnOhKdJcJcHaHaHaIbIbIbIbIbIbIbIbJcKdLeLeNgPiQjRkVo_xhq|Ű˷ϻнѿѿҽѷ̭Ǣymc|ZsQjLeKdJcHaG`HaHaIbIbIbIbIbIbIbIbHaIbHaIbIcJcKdMfOhQiSkVn]ve}luJcJcJcJcJbIbIbIbIbIbIbIbIbIbIbIbIbHaJcKdLeNgQiTkVnXp[q[rZqYpWnTkPhMeKcJbIbIbIbIbIbIbIbIbIbIbIbIbIcJdLfNiRkVo\ub{glqttuuutttuvwyyz{||}~~~~}{{zwqkd}]vUnQiMfKeIbHaHaIbIbIbIbIbIbIbIbIbIbIbIbKdOhSlXq_xhqyxqi`yYrTmPiLeJcJcIbIbIbIbIbIbIbIbIbIbJcJcKdLeOhPiSlVoXqZs_xir{īȳ̸ϻмѼϼϹγɧÚ~nc|[tTmMfJcJcJcIbHaIbIbIbIbIbIbIbIbIbIbHaIbIbJcKeNgPiSlVoYq[s_wfowHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbJcLeMfNgRiUlXoZp[r]s]t\sYpWnTkPhMeKcJbIbIbIbIbIbIbIbIbIbIbIbIbHaHbJdLfOhRkXr_xe~jostuuutttuvwyyz{||}~~~~}{{zysnhb{ZsVnQjOhKdJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbMfOhRkWp`ygowvng_xWpQjNgLeIbHaHaIbIbIbIbIbIbIbIbIbIbJcJcMfPiTmWp\uazd}glvūȰʵ͹ϻкϺ͸͵ʭşsc|YrSlNgIbG`HaHaIbHaIbIbIbIbIbIbIbIbIbIbIbKdKdNgQkUnYr^wc|f~hlt|G`G`HaHaHaHbIbIbIbIbIbIbIbIbIbIcJcKdNfPhQjUlWn[q\s]t_u^u\sZqWoTkPiMeKcJbIbIbIbIbIbIbIbIbIbIbIbIaGaHaJcKdMfQjWp]vc}iorsuuuuutuvvxxyz{|}}~~}||{zvqmg_xZrVnRjNfKdKcJbIbIbIbIbIbIbIbIbIbIbIbIbKdLeNgRkYr`ygoxxnf~_xYrQjMfKdJcHaHaHaHaIbIbIbIbIbIbHaIbIbJdKdNgSlYr^we~lqtyĪȯɲ˶͹κϹη˵˱ȩÚ|l]vTmOhKdG`E^G`HaIbHaIbIbIbIbIbIbIbHaHaHaJcLeMfQjWp\vb{iosvzHaHaHaHaHbIbIbIbIbIbIbIbIbIbJcJcKcLeOhRiTlWnZq]s^t_u`v_v]t[qWoUlQjNfLdJcIbIbIbHaIbIbIbIbIbIbIbIaGaHaJcJdLfPiVo[ua|hnqrtuuuuuuuvxwxz{|}}~~~}}}|yuqle~_wZrUnPiMfLdKcJbIbIbIbIbIbIbIbIbIbIbIbJcKdLeNgUmZs`xgqx~xpg_xYrTmNgKdJcIbHaHaHaIbIbIbIbIbIbHaHaHaIbKdLePiWp^we~nw}¨Ƭɯʲʴ̷͸ͷ̴ɱȭťxiZsQkNgKdG`F_G`HaIbIbIbIbIbIbIbIbHaHaG`HaKdMfPiUn]wd~lt|IbIbIbIbIbIbIbIbIbIbIbIbIbIbJcKdMeNgRjUlWoZq]s_v_v`v`w_v]t[rWpUmRkOgMeKdJcIbIbHaIbIbIbIbIbIbIbIaHaHaJcJcKeOiTnZs_zekooqsttutuuvwwxy{|}}~~~|ywrlf~axZrUmPiNfMdJbIbIbIbIbIbIbIbIbIbIbIbIbJcJcLePiTmYr_whou|~wph_wYqTmPiKdJcJcIbIbIbIbIbIbIbIbIbIbHaG`HaJcKdMfRk[td}mw¥ŪǬɯɱɲʴ˵˳ɯǬŧžse~WpPiMfJcHaG`HaIbIbIbIbIbIbIbIbIbIbHaHaIbMfQjUn\ufowIbIbIbIbIbIbIbIbIbIbIbIbIbIbLeMfOgRkVnYp[s^u_waxax`w`w_v]t[rWpUmRkOiMgKdJcIbIbHaIbIbIbIbIbIbIbIaHaHaJcJcKeMgRlVp[vazfijloprssuuvwwxy{|}}~~}ytnibz[sVnRjOfLdIbIbIbIbIbIbIbIbIbIbIbIbHaHaIbLeNgRkWo^ve|krx{}~umf~^wWoRjNgLeIbHaHaIbIbIbIbIbIbIbIbIbIbHaG`HaJcMeOhTm_xjtåŧƩǬɮɯɰɰȰɱɯǩäwk_xSlLeKdIbHaG`HaIbIbIbIbIbIbIbIbIbIbJcJcMfSlXq^wfr{£¤å¤¤£IbIbIbIbIbIbIbIbIbIbIbIbIbJcMfOhRjUnYr\t^v`waybzay`x_w^v\sZrWpUnSlPiNgLeKdJcIbIbIbIbIbIbIbIbIbIaHaHaJbIbJdLfPjSmWq\uazc|d}gjloqsuuvxxyy{|}}~zupiay[rVmQiLeIcIbIbIbIbIbIbIbIbIbIbHaHaHaHaJcKeNgRjXp]tbyhnqsu{~vme_wXpQjNfKdJcHaHaHaHaIbIbIbIbIbIbIbIbIbHaF`HaJcMfPhVobzmx¥ũǪǫȭɮɮɯȮǮȮǫţ{od}ZrPhKcJbIbHaGaHaIbIbIbIbIbIbHaHaHaIbJcLePiXq^xfo|¥ĦĨŨŧŧŧĦåä¤IbIbIbIbIbIbIbIbHaIbIbIbJbKcNgQiUmXq\u_w`xbyczczay`w^v]u[sYqVoTnSlQjOhMfLeKdJcIbIbIbIbIbIbIbIbIbIbIbIbIbJdKeNhQjSmWq[t]v_wayd|hkortuwxyzz||}~~~{vog~`wYqSkMfJcJbIbHaHaHaIbIbIbIbIbIbHaHaHaIbJdLeOgSlWo[s_we|g~ilrw|xpf_xZrTlNgLdJcIbHaHaHaIbIbIbIbIbIbIbIbIbHbHaF`HaKdNfQiWpc|oz¢æƩǪǪȬȭȭȭȬƬǫƨğsg_wVoNfJbIbIbHaGaIbIbIbIbIbIbHaHaG`HaJcLeNhTm]wenxçƨƩƪǪƨǨƧĦĥäIbIbIbIbIbIbIbIbHaIbIbJcJbLdPhTlWp[t_xbzc{c{c{c{ay_w]u[tZrXqVoTnSlRkPiNgMfLeJcJcIbIbIbIbIbIbIbIbIbIbIbIbJcJdMfNgPiRlUnVoXpZr^vczg~kostvxyzz||}}}~|vme|^uVnOhKdJbJcHaHaHaIbIbIbIbIbIbIbIbIbIbJdKdLeOhRjUlWo\s]u_wb{hnt{{ri`yYrUnPiLdJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaGaIbLePhSlZsf~r|¢æŨƩƩǪǫǫǫǪũŨģ™wj`xYqSkLdJbIaIbIbHbIbIbIbIbIbIbIbHaHaIbMePiSmZtenw§ũǪȩǪǩƧǦƥĤã¢IbIbIbIbIbIbIbIbHaIbIbJcLdNfRjVnZs_wb{d}e}e}d}c{ay_w]u[tZrXqVoTnSlRkPiNgMfLeJcJcIbIbIbIbIbIbIbIbIbIbIbIbJcJcKdLeLeNgOhPiRjTlXp]taxe}koqtvwxxzz{}}~~|skbyZrQjMfLcJcHaHaHaIbIbIbIbIbIbIbIbIbIbHbIbJcKdLeNfOhSkSlUnXq^wd~jqzvlc|YrSlOiLeIbHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbJbIcKdPiTlYq`ylw¢æŨƧƧŨũũũŦåãzmazXpSkOgJbH`IaIbIbHbIbIbIbIbIbIbIbJcJcMfRkWp\vd~pzæũǫȪȩǨǧƥŤġ IbIbIbIbIbIbIbIbHaIbJcKdMdOgSkXp\uayd}f~f~f~e}c{ay_w\uZsYrWqVoTnSlRkPiNgMfLeJcJcIbIbIbIbIbIbIbIbIbIbIbIbJbIbJcJcKcKdLeMfNfPhSlXo\t`yf~knruvwwyz{||}}~~~~~~vne|\tSkNfLdJcH`H`HaIbIbIbIbIbIbIbIbIbHaHbHaIbIbJbKcKdNfNgOhRkWq]wb|jsy}si_xUnPiMfJcGaG`HaHaIbIbIbIbIbIbIbIbIbIbHaIbJbJcJdMfSlYq^vf~q{¥ĦĦĦĦĨħħĤ¢ug[tTlOhMeIaH`H`IbIbIbIbIbIbIbIbIbJcKdMfPiWp^wd~nyæŨǪǪȩȨƦƥģġßIbIbIbIbIbIbIbIbHaIbJcLeNePhTlYq]vbze}fgf~d|c{ay^w\uZsYrWqVoTnSlRlPiNgMfLeJcIbIbHaIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcKdKdLdMfPiTlXp\tbzgkosuvvxyz{|}}~}}~~}~~xof}^uUlOgMdKcH`G`HaHbIbIbIbIbIbIbIbIbIbHbIbIbIbIbJcJcLdKeLeNhSmWr\vc}lt{|rh^wTmOhLeJcHaG`HaIbIbIbIbIbIbIbIbIbHbHaHaIaJcKdLePiWo]uc|lw¤£ääæææã}qd}XqQjNfLdHaG`HaIbIbIbIbIbIbIbHbIcKdMfPiTn\ve~lwħŨƨƨƦƤĢáŸIbIbIbIbIbIbIbIbIbJcKdMfPgRjVn[s_wc{e}ggf~d|c{ay_w]u[sZrXqVoTnSmRlPjOhNfLeJcJcJbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcKdNfPiSlWp]vbzfkoqrsuvxyz{{|||}}}~}~zriaxXoRjOgLdIaH`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJbJcJcIcJcKeOiSmVq]wfov{qg]vTmOhKdJcHaG`HaIbIbIbIbIbIbIbIbIbIbHbHaJbLdNfPhUm\tc{jr|¤£xmazUnOhLeKdHaG`HaIbIbIbIbIbIbIbIbJcMfPjTn[td~mv¥ĦťĤ⠝IbIbIbIbIbIbIbIbIbJcMfOhSkVnZr_wbye}gggf~d|c{ay_w]u[sZrXqVoTnSmRlPjOiOhNgLeKdJdIcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaIbKdLeOhRkWp\t`ye}iklmoqtuxyyzzz{{|}}~~wog~^uXoSkPhKcJbJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHbHaHaGaGaGaKeNhPkWq`zjr|yoe~[tRkMfJcJcHaG`HaIbIbIbIbIbIbIbIbIbIbJbJcLdPhSjVn\sd|krz{pe}[tQjLfJcIbHaG`HaIbIbIbIbIbIbIbIbLeQjVo\ud}ny¥åĤážIbIbIbIbIbIbIbIbJcKdOhRkVnZr^vbzd|ghhgf~d|d{by`x^v\t[sYrWoUnTmSmQkPiOiOhMfKeKeJcIcIbIbIaIbIaIbIbIbIbIbIbIbIbHaHaHaHaHaHaIbJcLfNgSlWoZs^wbzd|e}g~jmpruwwxxyz{{}}~{tmd{]tXpSkMeKcJcIbIbHaHaHaHaHbIbIbIbIbIbIbIbHbHaHaGaF`F_F`IcKeNhTn]wgpzyoe~[tRkMfJcJcHaG`HaIbIbIbIbIbIbIbIbIbJbKcKdNfTkWo\sbzkrxsh_xWpNgKdIbIbHaHaHaIbIbIbHaIbIbIbJcMfTm[tc{lxååĤâ}|zxxwwvIbIbIbIbHaHaJcJcJcMfQjUnYq^vbze}g~hihgf~d|d{cyax_v]u\sYrWpUoTnSmQlQjPjPjNgMfLfKeJcIcIbIaIaIaIbIbIbIbIbIbIbIbIbIbHaHaHaIbIbJcKeLePiSkUnYq\t]v_waxd|hlostuvwxyz{|}~yribz\tVoPhLeKdJbHaG`G`GaHaHaHaIbIbIbIbIbIbIbIbHaHaG`F_G`IcJdMgSl\ufoyyoe~[tRkMfKdJcHaG`HaIbIbIbIbIbIbIbIbJbKcLdMfQiWo\sayhqw}wlbzZtTmMfJcIbIbHbHaIbIbIbHaHaHaIbJcKdOgXo`xitäåäâž}vsqomlllkkIbIbIbIbHaHaJcJcKdNgRkWp\uaye}hiiiihg~e|e{dzcyaw^v\tZsXpVoUnTnRmRlRlRlPiOhNhMgKeJdJbIaJbIaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbKdKdMgOhPiSlUnVoXpZr^vbzf~jnpqrtuvxy{|}~xpic{\tTlPiMfLdIbHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbHaG`HaJcKdNgSl\ufoyyof\uSlNgKdJcHaG`HaIbIbIbIbIbIbIbIbJbMdNfQiUm]tbyhow}yod}[tVpQjLeJcIbIbIbIbIbIbIbHaG`HaJcJcMeQi\se}o{äã yrjfd}c|`y_x`y`y`y`yIbIbIbIbHaHaJcJcKdNgTmYr^wd|hjkkkjih~e|e{dzcyaw_v]t\sZrXqWpVpToTnTnTnSmRlPjOiMgLfLdKcJbIaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbKdKdLeNgOhPiRjTlXp\t_xd}giklnprtvyz{}~xqkd|\tVoSlPhMfJcJcJcJcJbIbIbIbIbIbIbIbIbIbIbIbHaG`HaJcKdNgSl\ufoyyof\uSlNgKdJcHaG`HaIbIbIbIbIbIbIbIbLdOfRjVn[sd{jpw~|qg\uUnQkMfJcHaIbIbIbIbIbIbIbHaG`HaJcLeOgUl`wkvâŸ}tme~]vYrWpVoTmTmUnUnUnUnIbIbIbIbHaHaJcJcLeOhUnZs`yf~jlmllkjif}f|e{dzbx`w^u]tZsYrXqWrVqVpVqWqUoTnSmRlPjNhMfLdKcJbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaIbIbIbJcJcKdLeLfNgPhSlVoZr]wazc|d~eilnqtvxy{|}~xslc{\vXqTlOhMeLeLdJcJbIbIbHbHaHaHaHaHaHaHaHaG`F_G`JcKdNgSl\ufoyyof\uSlNgKdJcHaG`HaIbIbIbIbIbIbIcJcMeRiUn[rayjpv|wlb{XqQjNhLeIbHaHaIbIbIbIbIbIbHaG`HaKdMeQhWncznz ~sjd{\uUnQjPiOhNgNgNgOhOhOhIbIbIbHaHaHaJcJcLeOhUn[tazfkmnmmlkjh~f}e{dzbx`w_v]u[tZtYsXsXsXrXrXrXrWqUoTnRlPjOhMfLdJcJcIbHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcKdKdLeMfPiSkUnXq[t]v^x`zc}gimqtuwyz{|~ysjc|]vXpSlPhNgNfLdKcJbIbHaHaGaG`G`G`G`G`G`G`F_G`JcLeOhTn^wgpzyof\uSlNgKdJcHaG`HaIbIbHaHaHaJcJcKdNgTlYr_wf~ov{uj_yVoOiLfKdIbG`HaIbIbIbIbIbIbHaGaIbLeNfRjXpe{p|vkc{]uWoQiNgMfLeLeKdLeLeLeLeIbIbIbHaHaHaJcJcLeOhUnZs`ye~jmnmmmlkig~f|d{byax_v^u\u[u[uZuZuZu[u[uZtYsXrWqUoSmQkOhNfLeKdJcHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcKdKdNfOhPiSlUnVoWqYs]wa{dhloprtuwxz|}zrjd}^wXqUnTmSkPhNfMeKdIbIbHbHaHaG`G`HaHaHaG`HaLeOhRkXqazjs|zpf\uSlNgKdJcHaG`HaIbIbHaHaHaJcJdLeOhVo\ud|ktz}sg]vTmNhLeJcHaG`HaIbIbIbIbIbIbHbHbIbMfPhUm[shs~~vlbz[sWoRjMeKdKdJcJcJcJcJcJcJcIbIbIbHaHaHaJcJcLeOhSlXq^wc|gkllmmlkig~f|d{byaxax`w^w]w]w\w\w\w]w]w]w\w\v[uYsWqUoSlQjNgMfLeJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaIbIbKdKdLeNgOhPiQkSmWq[u^yb}ehikmnoprstvxyy{}ztnhb{_w]v\tWoTlRjOhMfKdJdJcJcIbIbJcJcJcKdLePiTmXq^wgpwzpf\uSlNgKdJcHaG`HaIbIbHaHaHaJcJdLeQjXq`xhpyyoe}[tRkLfJcJcHaG`HaIbIbIbIbIbIbHbHbKdOhTlYqaymw{rjbzXpSkPhLdIaG`HaHaHaHaHaHaHaHaIbIbIbHaHaHaJcJcKdMfQjUnZt_xd}hjkmmmljhg}e|czbybxax_x^x^x]x]x]y_y_y_y^y^x]w\uZsXrVoSmQjOhMfJcJcIbIbHaIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHbHaIbJcJcKdLeMfNgOiSlVoXs\w_{a}b~defghikkmopprv{~{vqkhfd|_w[sWoSlPhNfLfLeKdJcJcLdLeLeMfOhTmXq^we}nu|{qg\uSlNgKdJcHaG`HaIbIbHaHaHaJcJdMfQjYrazjs|wnc|YrQjKeJcIbHaG`HaIbIbIbIbIbIbIbIcLeRjXp^vf~r||ribz[sRjNfLdJbH`G`G`G`G`G`G`G`G`G`IbIbIbIbIbIbIbIbJcLeOhSlVp[t`yd}gilmmlkig}f|czcycybyay`y_y^y^y^z_z_z`z_z`z^y^w\v[tXrVoSlQjOhLeJcIbIbHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaIbIbIbIbIbJcKdKdLeMfPiRlToVqZt[v\w]x^y_z`zaza{b{b{c|e~f~gjoty}ytromgbz]uXpSkQiOhOhMfMfMfNgOhOhPiRkXq^wd|kt{|qg\uSlNgLeJcHaG`HaIbIbHaHaHaJcKdMfRjZrb{kt}vmc{YrQiLeJcIbHaHaHaIbIbHaHaHaIbIbJdMfTl[sbzkv{siby[sVnOgLdJcIbHaHaHaHaHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbKdMfPiRlVo[t`xd{f~jlkkkig}f|dzdzdzczbyay`y`z`z`{a{a|a|a|b|a|`y_x^w\uZsWpUmRkNgLeKdJcHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcKdKdMgOhPjRlTnTpUpWqWqXrXrYrYrYrYrZs\u]u^vayg~lry}{yvpjd}_wYqVnUmTmRkRkRkLb>Qi@TnI_~Yr_xe~ls||rh]vSlNgLeJcHaG`HaIbIbHaHaHaJcKdMfRj[rc{kt~~vlc{ZrRjMfKdJcHaHaHaIbIbHaHaHaJcJcKdOgVo_wgpzzriayZrUmRiMeJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcKdMfNhRkVoZr^wbzf}hiiiig}f|dzdzdzdzd{c{b{b|b|b}c}c~c~c~d~c~d|c|b{`y^w[tYqVoRkPiNgLeJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaIbIbKdKdLfMgNhNiOiPjPjQjQjRjQjQjQjQjSlTlUmXp^vd|jqzztnic{`x_wK`z=Nc2BT5GY7J]>QdASiPed}iov}}rh]vSlNgLeJcHaG`HaIbIbHaHaHaJcKdMfRj[rc{mv~|tlc{ZrRjMfKdJcHaHaHaIbIbHaHaHaJcKcMfQiYqc{kt~~vog_wWpRjOgMeIbHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcKdLfOhRkVoZr]ubyd|f~g~hh~g}f|e{e{e{e{e|e|d|d}e~efeeefff~e~e}c|az_x]uZsVoSlPiNgKdJcJcIbHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaIaHaIbJcJdJdKeKeLeLfLfMfMfMfMfMfMfMfNgNgOhRjXp]vc{js{|kTgy?O^/;D " " " " " " " "EWhnsy~~si^wSlNgLeJcHaG`HaIbIbHaHaHaJcKdMfRj[rd{mv{tlc{[rSjNfKdJcHaG`GaHaHaGaG`HaJcLdNfRj[se}mv}wmf}_wXqRjNfLdJcHaGaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcKdMfPiSlVoYq]v`yc{e|f~g}g|f|f{f|f|f|f}f}f~f~gggggggggggf~d|c{ay^wZrWoSlPiMfKdJcIbHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaIbIbIbIbJcJcJdJdJdKdKdKdKdKdKdKdKdKdLeLeMeNgTlXq]ud|nv}=JR&04 " ""!#!$"%#'&*",1)5;5DMHYg`vx|ti^wTmNgLeJcHaG`HaIbIbHaHaHaJcKdMfRj[rd{mv~{sld|[sSkNgLeJcHaG`GaHaHaGaG`HaJcLeNgSk\te}nw}wpf~`wZrTmNgLdJcJbIaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcKdMfPiRkTmYq\u_wayc{d{e{e{dzd{d{e{f}f}g~hiijiiiiiiiiigge}c{_w\tXqTmPiNgLeKdIbHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLePiTlXp^vhqy%17'3:)6<+9@.OZDUaK]jSfu[o~cxttj_xTmNgLeJcHaG`HaIbIbHaHaHaJcKdMfRj[rd{mv~{tmf~]uUmPhMgLdIbG`GaHaHaGaG`IbKdNgPhUm]ugox~}xqi`xYqUmPiLeJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaIbKdLeNgPiTmVoYs\u_w`wawawawaxaxbyd{e|g~hkklmmmmmmmmmkkkie}bz^wZsVoRkPiNgKdJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHbLeOhRjXpbzmu " #!$#&&)!*.&16.9?8FMHW`_q}q}vj_xTmNgLeJcHaG`HaIbIbHaHaHaJcKdMfRj[rd{mv~{tohayYqTlQjNfKdIbIcJcJcIcIbKdMfQjTlYqayiqx~~yrjbzYqSkOhLeHbHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaIbJcKdLeMfPiSkUnXpZr[r\r\s]t]t]u_vayc{f}hlmnopppooooonnnmjgd}_x[tWpTmPiMfLeKdKdJcJbIbIbHaHaHaHaHaHaHaHaHaHaIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaG`G`F`G`JcLeOgTm_wjt~ " " " " " " " "GV\ywk`yTmNgLeJcHaG`HaIbIbHaHaHaJcKdMfRj[rd{mv~|vqke}]uXpTmQiMfKcJdJcJcJdJcMfPhTlWp]ud}lry}|vnf~]vUmPhMeJcG`G`HaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIaIbIbIbIbIbIbIbIbIbIbIbIbIaIbIbJcJcLeNfPhRkTmVnWnWnWoXoXpXqZr]vayd{g~lnpqrsrrqqqqpqqpmkhe~`y[tXqSlPiNgMeLeKdJcIbIbHaHaG`G`HaHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaG`G`G`JcKeNgSl^vis~'+ +/$04)6:0=C7FK@OUHY`Rcl\nvi|zxk`yUnNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[sd|mv~|wsnibz\sXpSkPhMeLeLeLeKeLeOgSkWo[s`yhnsy|~}ztlc|[tSlNgLdJcHaHaHaIbIbIbIbIbIbIbIbIbIbIbIaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcKdLdMeOhPiQiRiQiRjRkSkSlUnYr]vaye|knqsuuutttssssttqpnjfaz]vXqTmRkQiPiNgMfKdJcIbIbHaHaHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaG`HaJcKeNgSl^vit~[mu:FK!$$&%'&)(, *-"+/#-0(26-7<1;@JX^}yl`yUnNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[sd|mv~~}xuqmf~ax\tWoSkPhOhOhOhNhOiSkVo[s_xd}kptxz|{xrjazYrRkNgKdJcHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaIbJbKcLeLeMeNeMeNfNgOgOhQjUnYr]ubyimquwxyxxxwwwwxxwvtrnie~`y\uZsXqWpTmRkOhNgLeKdJcJcJcJcJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaG`HaJcKeNgSl^vitlJY_(26$&&''( (*#-/)57/;>IW]{yl`yUnNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[sd|mv~}~}~~~~}ywtqkg~bz]uYqVnUmTmTmTmUnXp\t_wc|hmqtvxxxtng_xWpPiLeKdJcHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIcJcHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbHaHaIbIaIbJcJcKcLcKcKdKeLeLeNgRkVoZq_vf}kptxzzz{{zzzz||{zywtpmhe~b|`z^x[tWqTmQjNgMfLeLeKdKdKdKdJdJcIcIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaG`F_G`IbKeNgTm`xkuKZ_"%&)!,.(372=A:GK^ovym`yUnNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[sd|mv~}}}|}}}~}|zxvsokfbz_v\t[rYrYrZr[s]u`xc{fjnrsuvvurme~^wVoOhLeJcJcHaHaHaIbIbIbIbIbIbIbIbIbIcIcJcJcJcJdHaHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcJcJcKdKdLfOhSkWn[scyintx{||}~}|}}~~~}}|yvspmjifb{]wYrUnQjPiOgNgLfMfMfMfLeKdJcIbHaHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`F_E^G`IbLePiWobzmwew~KZ_!*, *-#-1&14(48,7;1=A:GK^ouym`zUoNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[td|nv~}||||||||{yywuqnjf~d|ay`x_w_w_w`xaye|fhkoqrstttqkd~]vVoOhLeKdJcHaHaHaIbIbIbIbIbIbIbIcIbJcJcJdKdKdLeHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJbIbJbJcJcJcKdMfPhTkXp_vf}msx|}~~~}{yvtrpmid~`y[tWpUnTlSlQjQjQjQjPiNgMfKdIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaGaF_HaLeOhTm[sgqztRci0IW\zym`zUoNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[td}nw~}||{{{{{{zyyxusqmkif~e}d|d|d|f}f~hijlnpqqrrroic}]vUnOhLeKdJcHaHaHaIbIbIbIbIbIbIbIcJcJdKeLeLfMgNhJcJcJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHbIbHbHaHaHaIbKdNfPhTm]td{lsz~}{zxwtqlhc|`y^w]u\uZsZsZsYrWpTmRkOhMfLeLdKcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJdJcLeQjUn[tc{nw",/'14+7;2>B:GLCRWM\cXjpdv~mtym`zUoNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[td}nw~}||{{{{{{zyyxwusqomkjiiijjkkllnnooonnkga{[tTmOhLeKdJcHaHaHaIbIbIbIbIbIbIbIcJcLfMgNiPjQkRlJcJcJcJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaJcLdNfRk[sc{kt{}|{zvsplihgfd}d}c|c{_x[tXqTmQiOhNgMfLeLeLeLeLeLeLeLeLeLeLeLeLeKeLeKeLeLfMfPiUn[tazju~/;?8EJCRVO_e]ovm{ym`zUoNhLeJcHaG`HaIbIbHaHaHaJcKdMfRk[te~nx~}|{zzzzzyyxxxwutrqonmkkkllmlllmnnmlllie_yZsTmNgLeKdJcHaHaHaIbIbIbIbIbIbIbIcKdMgOjQlSnUpVqLeLeLeLeKdKdJcJcIbIbIbHaHbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaJcKdMeQjZrc{kt|~}}|zxvtrqqponmlgc{^wZrUnRkRjQiOgOgOgOgNgNgOgOgOgOgNhNhNhNgNgNgOhPiQjTm[tb{hq|6DI=KPCRXKZaRbiXgobs{mxym`zUoNhLeJcHaG`HaIbIbHaG`HaJcKdNgSl\ue~nx~}|{zzzzyyyxxwvutsrpnmlllllmllllmllkjjhc}^wYrSlNgLeJcIbIbHaIbIbIbIbHaIbIbJcJdKeNhRlTpWsYu[vOhOhOhOhNgNgLeKdKdJcIbHbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaJcKdMfRjZsc|lu}~}||||||||||||{{|{{zzyzyxxwvtoje}`x[sXpWnWnUlUlUlTmTlTlUmUmUmUmUnUnUnTmTmTmVoVpXq\uc|jqz'**,!-/#/2$13(25)47.9=3?C:GLAOSFUZTdjl~ym`zUoNhLeJcHaG`HaIbIbHaG`HaJcKdNgSl\ufoy~}{{{zzzyyxwvvttsrponllllllkkkkkjjihge~az\uWpRkMfKdJcIbIbHaIbIbIbIbHaIbIbJcJdLfOiToWs[w^z_{TmTmTmTmSlSlPiOhNfLeKdJbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaJcKdMfRl\ue~nw}ywuuuuuuuuuuuvvvxy{{}~~}{wrmhc{ax`v`v^u^u^u_v_v_w`x`x`x`x`y`y`y_x_x_xazb{e}iov})36%''+!+.$03)48.:>3@E:HLBPVL[aVem^owo|ym`zUoNhLeJcHaG`HaIbIbHaG`HaJcKdNgSl\ufoy}}}||{zyxwvvttsrponllllllkjiiihge~d}c|az]vXqUnPiLeKdJcIbIbHaIbIbIbIbHaIbIbJcJdLfQkVqZv_{b~cZsZsZsYrXqXqTmRlQiNgLeJcJbIbIbHaHaHaHaHaHaHaHaHaHaHaHaG`G`G`JcKdNgSl\vfox|xsommmllllmlmmnnoqtwz~}xtpmjjjiiijkkllmmnnnmlmooru{pVej2=?!#"$#&&((+"-/(372=B;HL^ovym`zUoNhLeJcHaG`HaIbIbHaG`HaJcKdNgSl\ufpz~}|{yxvvtsrrponmlllkjjihggfe~b{az_x]vYrUnRkOhKdJcJcIbIbHaIbIbIbIbHaIbIbJcJdMgQkWr\xa}ee`y`y`y_x]v]vYrVoTlQiNfKdJcIbHaHaHaHaHaHaHaG`G`G`G`G`G`G`F_G`JcKeOhUn^whqy}xsmhed~d}c{c{c{d}d}c|c}c}e~egimrv{|ywtsrssstvvwyxzzzzzzyz||~zarwEQV!+.#,/$.1)37;HL^ovzm`zUoNhLeJcHaG`HaIbIbHaG`HaJcLeNgSl]vgq{~|zywusrrqoonmlkkjiihgee~d}c|`x^w\tZrUnRkPiMfJcJcIbIbIbIbIbIbIbIaHaHaJcJcJdMgRlXr]xb~ffe~e~e~d}c|b{^w[tXpTlQiNfLdKdIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaLeNgSlYrb{kt{}xrle_z\w[u[tZrZrZr[t[tZsZsZs\u\v]w`zekpvz}|{yyxxyz{}zm`zUoNhLeJcHaG`HaIbIbHaG`HaJcLeNgSl]vgr{~|zwvtrqpnnmmkjjihggfd~c|b{`y]u\tYqVoRkPiMfLeIbIbIbIbIbIbIbIbIbIaHaHaJcJcKeMhRmXs^ycggjjjiihd}az^vZrVnRjPhNgKdJcJcJcJcJcJcJcJcJcJcJcJcKdKdLePiTmYr`yiqy~}xqjd~]wWqTnSmSlQjQjQjRkRkQjQjQjSlSmUnXq]wc}hnsvxxzzzzzxxwxxxz}zm`zUoNhLeJcHaG`HaIbIbHaG`HaJcLeNgSl]vgr}~}{ywurqpnnmmkjjiggfe~b|az`y^w[sXpUmRkNgMfKdJcIbIbIbIbIbIbIbIbIbIaHaHaJcJcKeOhTmZs`yeiimmmllkhf~c{_wZrVnSkPiMfLeKdKdKdKdKdLeKdKdKdLeLeMfMfOhUnYr`ygow}zskd~^xWqRkOiNhNgMfMfMfMfMfMfMfMfNgOhPiSlWq]va|fknopqrrqrqpprrsvz ¡¡¢¢¢¢¢£££O^aDSVL\_Vhkbuytzm`zUoNhLeJcHaG`HaIbIbHaG`HaJcLeNgSl]vhs}~}{yvtrpnmlljiihffed}b{`y_x\uYqVnSkPiLfKdJcJcIbIbIbIbIbIbIbIbIbIaHaHaJcJcLeOiUn[tazfijmmmnnmkigc{_w[rWoSlOhNgMfMfMfMfMfNgNgMfMfNgOhPiPiSlYr_xfnv}~vne^xXrTmNhLfLeLeKdKdKdKdKdKdKdKdLeMfMfOhSlWp[t_xb|d~e~fghhghgf~g~ijkntzŸ¡¢ãĤäĤĤĥĥååÊ"-/$.1(34*57.9;5CEAORN^`[loj|zm`zUnOhLeJcHaG`HaIbIbHaG`HaJcLeOhTm]whs~~}zxuspnmlljiihffe~d}b{`y^w[tXpUmQjNgLeJcIbIbIbIbIbIbIbIbIbIbIbIaHbHaJcKcMePiVn[tayfijnnnnoonmkhd|`x\tXqSmRkQjQjQjQjRkSlSlSlSkSlUnVoWpZsazhow~|si_yYrTnPiLeJcJcJcJcJcJcJcJcJcJcJcJcKdKdMfOhRkTmWpYr[t[t\u\u]u]u]u]u]u\u]t_v`wbxe|lsz¢ĤäĥĥĦĦĦÞ!+- " " " " " " " " " " "cty¡ ž{nazUnOhLeJcHaG`HaIbIbHaG`HaJcLeOhTm^wit~}}{yvtqomlljjiifgee}c{`y^w[tWpSlPiMfKdIbIbIbIbIbIbIbIbIbIbIbIbIbHbIbJdLdOfRjXo]tbzfjknnnpqqqqonjf~bz_x[tZsYrYrYrZr[t\u\u\u\u]w`yazb{e~lsyzod~YsSlOiLeIaHaHaHaHaHaHaHaHaHaHaHaHaIbIbJcKdMfNgPiQjRkRkSlSlTlTlTlTlTlSlTlVnWoYp]tdzkrx¢¢ããĤĤĤO_b *-$/2)48.;>4AE:FIDQUO^b[mph{~t|£¢à{nazUnOhLeJcHaG`HaIbIbHaG`HaJcLeOhTm^wit}{{zzyyyyz{zywvsqonljjiihhgf}c{`y^w[tWpSlPiMfKdIbIbIbIbIbIbIbIbIbIbIbIbIbHbIbLeNfQhUl[q_vdzhjknnopqrssrqnlhe~c{b{azbzb{c{d}e~ffghjkmpv|xmazVpPiLfJcG`F_G`G`HaHaHaHaHaHaHaHaG`HaHaHaIbJcKdLeMfMfMfNgNgNgNgOgOgOgNgOhPiRjSkWn]tczintxyz{{{zzz{|||wVhwYl{dwnw~pnuâãääã!*-"$#%$&%'!*->JM>JM2>@(*$/1.9=D5BH8EM;HQCS_O`pWj|PbqYl}cxo¡¡ˆL[_Yjoi|ERV.9<3>BANQO_a¥¥¤ä£££££¥æĥţ |oazTmNgKdIbHaG`HaIbIbHaG`HaIbKdNfSl^vit~wqmihggghilptwxxwutqonlkkkjjihe}c{_x\vWrSmPiMfKcIbHaIbIbIbIbIbIbIbHaIbIbJcJcKdOgSjVm[q`veyh}jllmmnoqrtttuttrrqrrstuvxz{|~xl_yUnOhLeJcHaG`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLcLeNfQiUlWo[s^u`x`xayayayay`y`y`yazazazBRa-7:-7:-7:-7:,6:-7<-8<.:>0;@2=C6BG@NVWhtw " " "^qvbtzs¥¥åäääääæħŦƤâŸ}pb{UnNgKdJcHaG`HaIbIbHaG`HaJcKdNfTl_wju~vpic|_x^w]v]v]v^wazd}insvxxwvtrpnmmmllljge}az]wXsTnQjNgLdJcIbIbIbIbIbIbIbIbHaIbIbJcKcLePhUlYo^tcxg{i~jmmmmnoqrtvvwxxwxxyz{}~ymayUnOhLeJcHaG`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaIaIbJbLdNfOhRjSlUmUmVnVnVnVnUnUnUnVoVoVo)5;*6<+7>+9B-:D/=H1?L4BP7FV;L\AReK^rYnixmNd@Qj6DR-:C.I3AL7DQ:HU@P^Pcve{x|}dy*6;0=D7CKAQYu#&(+(26;GKæçħħħħĩŪƩǧťĢÛtfYqQiMfJcG`F_G`HaHaG`F_G`JcMfPhWobzmx~wnf_yYsSlPiOhNgNhNgOhRkVo\ub{hntxz}|zyvutsqqpnkhd~az[vWqSmPiLeJdIbIbHaIbIbIbIbIbHaIbIbJcLcNeRjXn\qawf{j}llnnllnoqsuvwyz{{|~{pd|XpQjMfJcG`E_F_G`G`HaHaHaIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaIaIbJcJcKdLdLeLeLeLeLeLeLeLeLeLeLeDYx8I]=PjCXzKcLeLe7H[;Lb?QkG[}Pg@Re/:@3?G=JVloprrrrm " " " ";KVawqqmPbq-;B7ENIZdbv¦èĩĨĨħĪƫƪǨŦţÜuh[sSkNfJcF`E^F_G`G`F_F_G`JcMfQjXqd|ozxpg_yZsTnOhMfLeLeLeKdLeNgRkWp]uc{kqw{}{yxvssqplifc{]wYrTnPjMfJdIbIbHaHaIbIbIbHbHaHbJbKcLcNeSiXn]qawf{j~lmoommnprtvwxy{{|}ti]uUnQjMeIbG`G`HaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJbJcJcJcJcJcJcJcJcJcJcJcJcJcJcBXw.:A/;B1=DJcJcJc9I\6GZ>RmG^NgCVp@ShH\uSi`xb{c|d}d}d}d}d}",2 " " " " " " " " " " " " "auèĪŨŨŨŪǫǪǨƧƤĞzm`xWoRjMfHbF_F_HaHaF_G`IbLeQjUn\vhs~xpi_xYrTmPiLeJcJcJcJcIbIbKdOhSlXq^vgow}}zwvtrnkhe}_x[tVpRlNhLfKdJcHaIbIbIbIbHbHaHbJbKcLcOeSiXm]qavfzj}l~moommnprtvwxy{}~ž|rf~]vXqSkNfKdKdJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaAVv7G\9J`;Oh>RmAVvH4BN8FUEXsUmVnVoWpWpWpWpWp:La " " " " " " " " " " " "#.3zĪũŪŪƬǭǬǪƩƦš–vi_wYqSlMgJcJcKdKdJcKdMfRkXq]veq{wnf`xWpRjNgLeHaHaHaHaHaG`G`HaKdOhSlYrc|mw|zxvrolic|_xZtVpRlOiMfLeJcIbIbIbIbHbHaHbJbKcLcOeSiXm]qavfzj}l~moooopqsuwxyz|}žŸžŸžš{of~_wYqRjOgMfLeKdJcIbIbHaHaHaG`HaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaIbIbIbIbIbHbHaHaHaG`G`G`G`G`G`G`G`G`G`G`G`F]'3;(4<)5>)6@*7A+9C,9E.;H/>L1?O3BS5DU7FY9HZF[|NgPhOhPiPiPiPiPiPi#.7 " " "! " "!$"&&+",40=JL`vpzêŪƪƫǭȭȭȫǪǨƣÛ~qh`xYrQkMfLeLeLeLeNgQjWp^we~my{pg_xYqRjMfKdJcG`G`G`G`G`F_F_F_JcMfOiVoazlw|yurolfb{^xZtUoRkPiNgKdJcJcIbIbHbHaHbJbKcMcPeTiXm]qaueyi|k}l~nnppqrsuwxyz|~žŸß àޘxng_wWoSkQjOhLfKdJcIbHaG`G`F_G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`HaHaHaIbIbIbIbIbHbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHa2>J-7:-7:*48*6:+6;+6;-8?.:D0=I3BR8H]SnKb_xgq~©ūƫƬȮȮɭȬȫȪǦğzpg_xVpQkPiPiPiPhRjVn]vf~mvui`yZsTmNgKdJbIbHaHaHaHaHaG`F_G`IbLeNhUn_ylx|xtrojfb{^wYrUoSlPiLeKdJcJcIbHaHaHbJbLcMdPfTiXm\p`tdxhzj|k}mmqqrstvxyyz|~žŸàâģġĝyqi`x[sYqVnRkPhMgKdJcHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`HaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIb@Sq+5:,7<.7H4BP6EV3AQ4CU8H_;MgAVvJcJcJcJcKdKdKdKdKdKdKdKd=Rq)6F)0#*&,"-8-;N3E]KbSlYr^whuūƬǭɮɯɮȭȬȫȩŤÞ{qh_xYsXqWpWpXpZr_wgpx Ğ™zoc{ZsUnPiLeIbIbIbIbIbIbIbIbHaG`HaJcLeNhUo`yly|xvrnjfc{]vYsWpSlOhLeLeKdIbHbHbIbKbLcNdPfTiWl[p_scwfyh{i|k~k~qqrstvxyyz|~žŸâäĥƥƢĠĝ˜wnif~cz]vYqUnQjNgLeLeKdKdKdKdKdKdKdKdKdKdKdKdKdKdJcKdJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIb@Sq1=J3@O7FZUyBZG`G`G`G`G`F_E^G`KdNgQjYshxūƬǯɰɰɮȮȮȭȭǫƨĥà{utrrsuy¤ĥŤŢĝ}qd|XpQjMfJcG`F_G`HaIbIbIbIbIbHaG`IaKcMfOiVpb|o|ÝĞŜŚĖ’}yurolgc{_x[tWoSlQjOhLeKcJcJbKbLbMdOeShUkXm\p`tbvdxfzh|h|qqrsuwyyz{}~£ĦŧƨǧƨǦƣĞ}tlf}^vWpTlRlQjPiPiPiPjPjPjPjPjPjPiPiPiPiOhPiNhMfLeKdIbHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`F_G`G`G`G`G`G`HaHaHaIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHa3Da:No@V|E]HaHaHaHaHaG`F_F_JcMfPiWqf~uūƭǯɰɰȮȮȮȮȭǬǪŨĤžæŦŤšÜ{nczVnPhLeJcG`F_G`IbIbIbIbIbIbHaH`IaLdNgQkXrd~q~ÞĞŞƛĘÔ{wtrojf~c{^wZsVoTmRjNgLdKcJbKaLbMcOeRgTjWlZo^savcxeyg{g{ppqsuvxyz{}~¤ħŨƨǩǪȨǧƤĢğyqh`x\tZtYsWqWqWqXqXqXqWqWqWqWqWqWpXqWpWpUnSlQjNgLeJcHaHaG`HaHaGaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`H`BY}9K`5G^7Id;Mj=Qq@UxCY}D[F]IbIbIbIbIbIbIbIbIbIbIb%*(1"-8&2?IbIbIbIbIbHaG`G`KdMfPiWqf~uūƭǰɱɰȮǮǮǮǮǭǬƫŨĤçħƦŢĞvk`wUmOgLeJcHaG`HaIbIbIbIbIbIbIaHaJbNfQjUn]viuŸßşŜĚÖ~zwurnjgb{^wZsXpUmQiNfMeLdLbLbLcOeQgSiVkYn]r_uawcye{e{nnoqsuxyz{}~¤ħŨƪǫǬȬɫȪȪȩǦţĠwokihf~f~f~gggffffffe~d}d}b{^wZsVoRkNgLeLeKdJcJcKcKdKdKdKdKdKdKdKdKdKdKdKdKdKdKd9I\)5;*6>+7A,9B.;D0=I2AP3EV7I_=QmBX{F^IbIbIbIbIbIbIbIbIb'/)2"-8&2?IbIbIbIbIbHaG`G`KdMfPiWqf~uūƭǰɱɰȮǮǮǮǮǯǮƭǬƪĨ壥çĨũŨƦК{oe}\sQiMeJcJcHaG`HaIbIbIbIbIbIbIaJbLdQiVo[td}p{ŸßşŞĜØ~{yvrnkgc{_w\tYqUmRjQhOfNdNdNeOeQgSiVkWl[p]s_uawcycymmnprtwxy{}~¥ĨũƪǬȭɭɭɭɮʮʬɪȨƦĢ}ywvuuuvvvtttuuutsrojd|^wXqSlOhNgMfLeLeMeMfMfMfMfMfMfMfMfMfMfMfMfMfMf?Pi-7:-7:-7:-7:+59+6;+6;,7=-8>.9@0G`G`G`G`F_E^E^E^JcNgRk[tjy«ƭǯȱɲɱȯƯƯƯƯƯƯƮƮƭƭŬūũĨĨŧŧŧŧŨŨƩƪƪƩũŦޙzmbz[sUlMeJbIbIbIbHaIbIbIbHaHaHaJcJcLdOhWp`yhr~žœ™}zvsqmie}bz_w[sYpWnUlSjRiQhRhRiSiUiUkXnZp\s]t_v_viijlnqtvxz|~¦ĨũŪƬȭȭɮʮʯ˰̰˯˯ʮɫǧģ zqh`y[uZsYrWpWpXpXqXqXqXqXqXqWpXqXqXqXqYrXqOf9HY;K];M`=Nd>Pf?Qj>Oh=NgTtG]~Oe[rjyŮȰȰɲɲɲȰưưƯƯƯƯƮƮƯƯǯǮǮǮǮȭȭȭȭȬȬȭȭȬǩŧĤÝyl_wVnRjNgJbHaIaIbIbIbIbIbIbHaG`HaJcKdMfSl]vit}{yvrnkg~czax_v]t[rYpXmVlVlUkUjUkWmXoYpZq[s\sf~f~gilosvwz|~¦ĨũŪƬȭȮɯʰʱ˳̴ʹ͵͵ʹ˳˲ɱȯǭƬūīīīëīīêĩĩũũƩƩƨħåâ|xvutttuuuttttuvvvwvcw6BI@NVPcsfd~^xXrSlOiNhMf?UrAWvE[IaMfMfMfMfMfMfMfMf " " " " " " " " " " " " " "CUfsƯɱɱʲɲɲȱDZDZǰǰǰǰǯǯǯǯǰǯǯǮǯȮȮȮȭȭȭȮȭȬǩŦģœvh[sSkOhMeIaH`HaIbIbIbIbIbIbHaG`HaJcLeNgTm_xkw~{vrokg~d{cy`w^t[rZpXnWmVlVkUlVmWnXoYpZrZre}e}f~ikosvwz|~¥èĩĪŬǭȮȯɰɱ˳˴̴̵Ͷ̶̵˴ʳʲȱȱǰƯƯƯƯƯƯƮǭƭǬǭȭȭȬǫũŧàmAPXGW`K\fM]jQbtXmRhMc~I_|CWp;K^/:A3>H9GWDXtPiPiPiPiPiPiPiPi " "!" ## %"(%-*2#/:(6B0>M7FUHYi|íǰʱʱʲʲɲɱDZDZǰǰǰǰǰǯǰǯǯǯǯǮǮǭǭǭǭȭȬǭȭȬǨŦģ›tfYrRjNgLeIaG`HaIbIbIbIbIbIbHaG`HaJcLeNgTm_xlxŸzvrnjg}e{cx`v]t\qZpYoWmVmVlVmWnXoYpYqZqd|d|e}hkosvwz|~¥çĨĪŬƭǭǮȰɰʱʲʲʴ˵˴˴˴ʴɲȲȲDZDZDZDZDZDZǰǰȯǯȯȯȯȯȮȭǬǫƦâ4?B-7:-7:+69,7;,8<-9>.:@/;C0>F2?I4AL6DO8FSEVmXqXqWqWqWqWqXqXq##$!'")$+%,'.(1!,6%0;*7C5CQCRaN_můɱ˲˲ʲʲɲɱȱȱȱȱȱȱȱȰȰȯȯǮǮǭƭƬƬƬƬǬǬǭȭȬǨŦģ›se~XqQjNfKdHaG`HaIbIbIbIbIbIbHaG`HaJcLeNgUn`ymx ß}yuplih}e{cx`v_t]s[qYpXoWnXoXoXoYpYqZqd|d|e}hkosvwz|~¥çĨĪŬƭǭǮȯȮȯȰȰȱɲɲɲɲȲȱȲȲDZDZDZDZDZDZDZDzȱɱʱʱʱʱʱʱɰɯȬǪŦ䢤¤¢ctx-8;.8<0:<0;>0;@2>B4AG6DK9HQJL-7:-7:-7:iz|ǬǔǫǫǪƩƩũũŪƫ " " "AMOǫǫǫǫǬȭȮȯɰɱʲʳ˳ʴ˳ʳʳʲʲʲʲʱɱɱɱɱɱɱɱɱɱɱɱɰȰȰȯɯʯʯʯʯʯȯȰȯɮȪƨĤœrd}WpPiLfKdHaG`HaIbIbIbIbIbIbHaG`HaJcLeNgUn`ylyßޝ{wtqmig}f|f|g|jmopqqrrqponlkjjiiiklnqsvx}~zxwuuuvvuuuwxz~éŬƮǯȯȯȯȰȰȰȰȰȯȯȯȯȯɯɯɯɰɰɰɱɱʲʲʲ˳˳˳˙-7:-7:-7:-7:-7:-7:|i{|-7:-7:-7:-7:{ɮɮȭȭȭȭȮȮ%'"+-,69BMOɯɯɯɯɰʰʱʲ˲˳˳˴˴˴˳˳˳ʲʲʲʲʱɱɱɱɱɱɱɱɱʱʱʱʰɰɰɰɯʯʯʯʯʯɯɰɰʯɫǩĤœsd}WpOiLeJdHaG`HaIbIbIbIbIbIbHaG`HaJcLeOhUnaymyߞxqmigd{ax_w`waxczg}jnprstuutsrponnkkklnprtwy}~vpkihfffggfffhikpxêŭƮȯȯȯȰȯȯȯȯȮǮǮǮǮȮȮȮȯȯȯȯȰɰɰɰʱʱʱbrt.8;-7:.83>@6AD/8;0;>5?B3>@9EHGSV@MOCPSM\]Yikiz{z´˶ͶͶͶͶͶ͵͵Zllassfxxlpsw|ô˷ηζζε͵ʹ̴̳˳˳˳˳˳˳˳˳˳˳˳ʳʳʳ˲ɲɲɱɱʰʰʰʰʯɯɰʱʰʬȪƦĞsd}WpOhLeJdG`G`HaIbIbIbIbIbIbHaG`HaJcLeOhTn_xkvž~sjb|[tTmQiOhNgMfLeMeOhRkVoYr_wflpuz}~~~|{zyuuuvvxz{}{urqqoqqrqpplhc|]vXqSkOhNgMfLeLfLfMfMfLfLfLfMfMfNgRjYr`yhrëƭǮǯȰȯȯɯɯɯȯȯȯȯɯɯɰɱɱʲʲʲʲʲʲ˳˳˳KZ\]mny̑GTUKYZO]^[jk[jk-7:-7:-7:xͶͷͶͶͶ͵͵ " " " " " " " " " " " " " "nϷηηζζε̵̴˴˴˴˴˴˴˴˴˴˴˴˳˳˳˲ʲʲʱʱɰɰɰɰʰɰɱʱʰʬȪƦğsc|VoNhLeJcG`G`HaIbIbIbIbIbIbHaH`HaJcLeNgTn^xjtžwkc|\uVoPiMeLeLeKdJcKcMfPhSlVo[tc{iotz}~~}||xxxzz{}~}voif~e|d}b{c|c|d}d}c|c|`y^wZsVoRkOgLeLeKdKdKdKdKdKdKdKdKdKdJcJcMfSlYr`xiwªŬǮǰɱɰɯɯɯɯɯɯɯɯɯɯɯɱɱɱʱʲʲʲʲʳʳʳ:FG?KMR`aw˴Zikctuk}~¬brsw̴̵̵̴̴̴̳ ),#-/'14,8:4@B=JKHUUR``Ziijz{{ɷϷϷϷϷηζͶ͵̵̵̵̵̵̵̵̵̵̵̵˴˴˳˳ʲʲʱʱɰɰɰɰɰɰɱʲʱʭȫǧşsd}WpOhLeKdG`G`HaIbIbIbIbIbIbHaH`HaJcKdNgSm\vgq| Ÿzoc|\uVoRjMeKcJbJcJcIbIbKdMfPiSlXq_xgmtz~~~~~~~~~~xqjc{]uYrXpWpUnVoVoWpWpVoVoUmSlQjNgLeJcHaHaG`G`G`G`G`G`G`G`G`G`F_F_HaMfQkWp`yn}ªŬǮǰɱɰɯɯɯɯɯɯɯɯɯɯɯɯɯɯȯȮȮȮȮȯȯȯ9DHFRU_oqɰarsmɰ-7:-7:-7:tʰʱʲʲʲ˳̳(*#-.'14.9;4AC=JKFSUR`a^noiz{q|ϷϷϷϷηηͶͶ̶̶̶̶̵̵̵̵̵̵̵˴˴˳˳ʲʲʱʱɰɰɰɰɰɰɱʲʱʭȫǧŠufYrQjNgKdG`G`HaIbIbIbIbIbIbHaH`HaJcKdLeQkYsc}kv Ÿth\uUnPiMeIaG`H`HaHaG`G`IbKdNgPiUn]vfmu|~zxvsmgay[sVnRkQiPiOhOhOhPiPiOhOhNgNfLeKdIbHaG`G`F_G`G`G`G`G`G`G`G`F_E^E^E_JcNgRkZsixŬǮȱʲʱʯɯɯɯʯɰɯɰɯɯɯɯȮȭȭǬǬƬǬǭǭǭVeg`prhy{nss-7:-7:-7:ss9DHERU^nqɮɯɰɱʲʲ̴#,-&/1)35,791<>6BD;GI@NPGUWO]^Wfg_nogwwl|}oиийϹιθθηͷͷͷͷͷͶͶͶͶͶ̶̵˵˳˴ʲʲʱʱɰɰɰɰȰɰɱɲʱʮȫǨšvgZsRkOhLeHaG`HaIbIbIbIbIbIbHaHaHaJcJcKdOiVp^xeoz Ÿ|qd}XqQjMfJcH`F_G_G`HaG`F_HaJcMfNgSl\ufnw~yupmlic|^wZsUmRiNhNfMfLeLeLeMfMfLeLeLeKdKdJcIbHaHaHaG`HaHaHaHaHaHaHaHaG`F_E^F_JcMfPiXqgvŬǮɱ˲˱ʯʯʯʰʯɰɯɰɯɯȮȭǬǫƪƩŨĩũĩĪŪ-7:-7:-7:-7:-7:-7:-8;-8;.9=0;>2=@5@C=ILO]`rǫǬǬǮȰɲ˴nnnooonooqsw~ййкϺκιιθ͸͸͸θηηηͶͶͶ̶̵˵˳ʴʳʳʱʲɰɰɰɰȰȰȱɲɰʮǫǨšwi[tSlPiMfIbG`HaIbIbIbIbIbIbIbIaIbIbIbJcMfSlYs`zit~ Ÿ{oc{WoPiMfJcH`F_G`HaHaG`F`HaJcLeNgSl]vgpyzupke~b{ay^wZsVoSlQiNfLeLdKdJcJcJcKdKdJcJcJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaG`G`KdMfPiWpfuƭȯʲ̳̲˰ʰʰʰʯɯɯȯɮȭǫƨĦĤ¢¡@MRDQVFTYIX[L[_O_cTcgXim_ptev{k|pv|¤äåèūǮɱˮǶͷθϷϸϷϷϷϷϸϸϸϸϸθθθι͹͹͹͸ͷͷͷͷηηηͷͶͶͶ̶̵˵˴ʴʳʳʲʲɱɱɰɰȰȰȱȱɰɮǬǨޕ{m_xWpSlNgJcG`IbIbIbIbIbIbIbIbIbIbIbHaIbKdPiTnZsc|nx{nbzWoPiLeJcHaG`HaIbIbHaG`HaJcLeNgSl]vhr{~{yvpke~`yZsWpVoTmQjNhMfLdJbHaHaHaHaHaHaHaHaHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaG`G`KdMfPiWpfuƭȯʲ̳̲˰ʰʰʰʯɯɭȭǪƧãŸ-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:evūVeg\mnͶ͵͵͵͵ʹʹʹʹʹ̴̴̴̵˵˵˵˴˵˵˵˵̵̵̵ͶͶͶͶ̶̵˵˵ʴʳʳʲʲɱɱɰɰȰȰȱȱɰɮǬǪŤÙug^wXqRkLeIbIbIbIbIbIbIbIbIbIbIbIbHaHaIbMfPiTm\ugq{yl`xUmNgKdJcHaG`HaIbIbHaG`HaJcLeNgSl]vhr}~zurpmgbz]vXrSlQjPiOhLeKdJcIbHaG`G`G`G`G`G`G`G`G`G`G`G`HaHaHaIbIbIbIbIbHaHaHaHaHaHaHaG`F_E^F_JcMfPiWqfvƮȰʳ̴̳̱ʱ˱˱˯ɮɬǫƦġ+6:-8<-9>/;?1=B3@F7DJ:IP?NVFW_O`jVht[nzdw{2>@=JLJYZWgg_pp̳̳̳̲˲˲˲ʲʲʲʳɳɳɳʲʳʳʳʳ˳˴̵̶Ͷͷη͸ͷ̷̶˶˵˵˴˴ʳʳʱʱɱȱȱȱɰȮǭǫƧĝ}od}\uUnNgIbIbIbHbHaIbIbIbIbIbIbIbHaG`HaKdNfQjXqb{mxyl`xUmNgKdIcHaG`HaIbIbHaG`HaJcKeNgSl]vhs~}wrlif~d{_w[sWoTmPiNgMfLeKdJcIbIbIaHaHaHaHaHaHaHaHaHaHaHaHaHaIaIbIbIbIbIbHaHaHaG`G`G`G`G`F_E^D^E^JcNgRkZsix«ƮȰʳ̴̳̲˱˲˱˯ʭȫƨŢ}xwvtttvvUfuUfuUfuUfuSfuTfuUhvVhwVixViyXk{Yl|Zl}`skwxz~6BEB9EI>KPAOTKY_\lsuéŬǰɳʴʴʴʵʳʳʳʳʲʲʲ˱ʲʱɱɰɰȰȯȰȰɮȩťĠ{ob{VoPhLeKdHaG`HaIbIbIbIbIbIbHaHaHaJcJcKeOiXra{kuym`yUnNhLeJcHaG`HaIbIbHaHaHaJcKdMeQjZsc|mwxnf}_wZqSkOhNgNfLdKcJbIbHaHaGaG`HaHaHaHbIbIbIbIbIbIbIbIbIbHaHaHaHaHaGaHaG`HaHaIaIbJcKdKdLeLeLeMeMfMfNgQjYr`yhrŮȰʲʳ̴̴̳˲˱ʯʫǣÜ{qh_xWpRkRkQjPiPiPiPjPjPiPiPiG\y6ES:K]?RiG\yPiPiPiPiPiPiPiQjRkTmXq`ygowlRdo(,!%$''+ *.%/4+6;2=C9GNCRZQbl^p|zìưȱȲȲɳɱɱɱɱʰʱʱʱʲʲɲʱʱɱɰɱɱʰɬǩƤĜseYrRjNfLdHaG`HaIbIbIbIbIbIbHaHaHaIbIcIcMgTn\ve~ozym`yUnNhLeJcHaG`HaIbIbHaHaHaJcJcLdPhWo_xhq|zrh~`wZqUmOgLfLeLdJcJbIbIbHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbHaHaHaG`G`G`F`G`F_G`H`HaJbKcLeNgOhOhPhPiQjRkSlWp`yhr|«ǰʱʲ˳˴̴̳̱ʰʮɩƟrh`yYrQjNgMfMfMfMfMfMfMfMfMfMfDZx/;A2?J8HYDZxMfMfMfMfMfMfLeMfNgOhSlYr^we~kqt2>F " " "%/4$.4)4;0;D6CN%4D(9J-=Q0CY6Ic;Ok>TqE[|JbOfQiQiQiQiQiQiQiPiQiRkSlUnYqaxipwĪŬƭǯȰɲ˲˱ʱ˰ʫǣ™rg^vWnNfKbJbIbHbGaIbIbIbIbIbIbIbHaG`HaKdNgQiXpczmxwk_wTlOfLeJcHaG`HaIbIbIbIbIbIbHaH`IaLdOhRkXre~q} šwlaxUmOgLeIcG`F`G`HaHaHbIbIbIbIbIbIbIbIbIbIbHaHaHaHaG`HaG`HaIbKdLeMfNhOhOhPiQjSlUmYrayhpwêƮɯɱ˳˳̳˳˳˴̵ʹͱ˯ʬȤÕvhXqPiMfJcF_F_F_G`HaHaHaHaHaF^HaHaE\CYD[E\F^HaHaHaHaHaHaHaG`HaHaHaIbJcKdKd*7F%) " " "!"" #!$#'$))1&3?5F]MfMfMfMfMfMfMfLeMfNgOhQiTlZq`we~kquvwxxwwyz|©īƭǯȱʱʱʲ˲ˮɦşznd|ZqPhLcJcIbHaGaHaIbIbIbIbIbIbHaHaHaKdMePgVn`xjuwk_wTlNfKdJcHaG`HaIbIbIbIbIbIbHaG`IaKdMfQjWpc|p|¡šwl`xUmOgLeJcHaG`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaIbHaJcLeNgQjSlUnVoVpWpYr[t]vb{kt|§ëƮɱʲʳ̴̴̳˳˳˴̵͵ͱ˯ʬȤÕvgXqPiMfKdG`G`HaIbIbIbIbIbIb=PkBXzIbIbIbIbIbIbIbIbIbIbIbDZF]IbIbIbIbIbJcJcJc (#+%/(3+7 -;!0?$3B&5E(8J*9L/@U4F`;PnE[KdKdKdKdKdKdKdJdKdKdLeMePhTkXo[t_xc|f~ghhhggijmqyĪƭǯȰɲ˳˰ʪǥÝvj_vSkMeKdIbHaG`HaIbIbIbIbIbIbHaHaHaJcLeNfTl]ugq{wk_wTlNfLeJcHaG`HaIbIbIbIbIbIbHaG`HaJcMfPiVob{o|¡œwl`xUmOgLeJcHaG`HaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcLeLeNgRkVoZs^wb{c|e}fhjlqz¦¨ĩĩŪŬƮȰȲʳ˵̴˵̵̴̴˳˳˴̵͵ͱ˯ʬȤÕvgXqPiMfKdG`G`HaIbIbIbIbIbIb=Pm@SsCX|F]IbIbIbIbIbIbIbG_SrBXzIbIbIbIbIbHaHaHa,;!/@$2E&5I)9O+SqBWyHaHaHaHaHa@Sq/:@-7:-7:=NgIbIbIbIbHaHaHaG`"/?$3D(8K->W2Fc7Mn;Ru?U{@W~F_F_F_F_F_F`F`F`F`F`F`F`F`F`F`F_G`G`HaJbKcLeNgOhPiPiQiQiQiPiPiRkSlUmXq_wgnu}ŮȲʲʰʮȩŠvhYqRjNfKcG`F_G`HbIbIbIbIbIbHaHaHaIbIcJcNfUm\ue}nzznbzVoPhMfKdHaG`HaIbIbIbIbIbIbHaG`HaIcKdNgTm`yn{áÞynb{WoPhLeIbG`E^F`G`G`G`G`G`G`G`G`G`G`HaG`IaIbJcJcLfNhQjSlXp_wg~nu}ŭȱʳ˴˵̵̵̵˵̶̶̷̷̷˷˶̶˵˴ʳʳʴ˵̴̱ʯɬȥĖyjZsRkNgJcF_E^E^F_G`G`G`F`F`0AR3DY7Ia;Nk?TvDZF_G`F^6EU/;C2>I3BR7GZBXzIbIbIbIbIbHaHaHa/@Y5Ie;Pr?V|BZF^G`G`G`G`G`G`G`G`GaGaGaGaGaGaGaGaGaGaG`HaHaIaIbJcKdKdLeMfMfMfMfMfMfMfNgOhPiSlXp^vc|ipuw|¬ǰɲɰʯɫƢyk\tSkOgKdG`F_G`HaIbHbIbIbIbIbIbIbIbIbIbLeRkXq_wht|pd|XqQjNgKdHaG`HaIbIbIbIbIbIbHaG`HaJcLeOhUnazn{áß}rg[tTlOhLeHaF_GaHaHaHaHaHaHaHaHaHaHaIbHaJcKdMfNgQkUnWpZs`xhqzéƭɲ˵ͷθθθθηͷ͸̷̷̷̷˷˷˷˶˵ʴʴʴʵ˴˲ɰɬȦĘ}o`yWpQjMfHaF_F_G`G`G`G`G`G`-7:-7:-7:-7:-7:-7:/:?9K`/:?-7>.9A/I7GZBXzIbIbIbIbIbIbIbIbD\G_H`IbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcKdKdKdKdKdKdKdKdLeLeOhQjUnYr]vc|finwĬǰȰɰɭƥ™~payXpRjNfIaH`H`HaIbHbIbIbIbIbIbIbIbHbHaKdOhTmZraznysg[tTmPiMfIbHaHbIbIbIbIbIbIbHaG`HaJcLeOhVoazn{àßxnb{[sUnQjLeJcJcJcJcJcJcJcJcJcJcJcJcLeLeNgQjTmVo[t`yc|gmv¡äťŦƧŪǮɱ˴͸ιϻммммлϻϺιι̹̹˹˸˸˶˵ʴʴʴʵ˴˲ɰɮȨƜxi_xYrSlMfJcJcKdKdKdKdKdKdAUr/:@)59*49)5:)5:*6<,8?-:B/J2?M5CT7FX@SqIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbCZ>SuAX~F^IbIbIbIbIbIbIbIbIbIbIbIbIbHbHaHaHaHaG`G`G`G`G`G`G`G`HaHaJcKdMfPiRkVoYrZs_yis|ìưɲɰȩĠzkayZrTlMeKbJbJcIbHbIbIbIbIbIbIbIbHbHaIbMfPiTl[tgsymazZrTmPiKdIbHbIbIbIbIbIbIbHaG`HaJcLeOhVoazmyàà~uiay[tUnPiMfLeMeLdLdLeLeLeLeLeLeLeNgNgQkVoZt_xe~lpsy¥ŧƨǬɭɮʮɱʳ̵ͷϺлмѽѽѽѽѽммϻκͺͺ̸̺˸˷˶ʵʵʴʵ˴˳ʱʯɫǠrh`yYrQjNgMfMfLeLeMeMfMfMfKc8GW-:C.;E/;F2>L3AQ4CU6DX9Kd>RrBY|G_G`HaGaHaGaGaGaG`G`G`G`G`G`G`G`G`:Op1C\(5E)2 ,6&4D0AY=RsHaHaHaHaIbIbIbIbIbIbIbIbIbHaHaHaG`G`G`G`F`F`F`G`G`F_G`G`HaHaJcKdLeOhQjRkVp_xhq}ïȲɱȭƥujazZrQiMeLdKcIbHbIbIbIbIbIbIbIbHaG`HaKdNgRiXqc{p|th`wYrSlMfJcIcIbIbIbIbIbIbHaG`HaJcLeOhVn`ylxŸ |qiaz[tTmPiPhPhNgNgNgOhOhNgNgNgPiQjQkUo[ub{hpx}ĨǪȫȮʯ˰˰˳˴ͶθϹϺлмѼѼѽѼммϻϻͺͺ̺̹˹˸˷ʶʵʵ˵˵˳ʲʱʭǤĜ|ph_xVpRkQjQjOiOiPiQiQiQiQjPi@Rj.:B0;C0I4AN;LbD[H`G`F_G`F`G`F`F`F`F_F_F_F_@W~7Jh-=S%1>! # #"'%+)3#0>*9M1C\G`G`HaHaHaIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaGaGaGaHaHaG`HaHaHaHbIbJcKdLeMfMfQjYr`yitƲɲɯǩâsi`xVnPhNfLeJbHaIbIbIbIbIbIbIbHaG`HaKdMfPhVoaynzznf}^vVoOhKdJcJcHaHaHaIbIbHaG`HaJcLeNgUm_xkv zrib|[tWpVoWoUmUmUnUoUoTmTmTmVoWpXr\vd}ls{èƪȬɭɰʱ˲˲˴̴ͶͷθθϹϺклммммϼϻλλͻͺ̺̹˸˷˶˵˵˵˴˳˲˰ȩƣ{ri`y[tZsYrWpWpXpYqYqYqYrUm;JY1?J3AL3BN4DQ5ES6FV8HZ9I\G^HaG`G`G`G`G`G`G`G`G`(5E(0#$$ % &!'"($+%,(1!,8$1?1C\HaHaHaHaHbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcJcJcMfSlYr`xkyŲɳɱɮƩĢ~si]vVnRjOgKcHbIbIbIbHbIbIbIbHaG`HaJcMeOgTm_wkvulc{YrQjLeKdJcHaHaHaIbIbHaG`HaJcKdMgTl]whs~|ungc|bzbz`x`x`yazaz`y`yazb{c|e~ipx¤æũƬȮʯ˰˲̳ʹʹͶ̶ͶͷθθϹϺклммммϼϻλλͻͺ̺̹˸˷˶˵˵˵˴˳˴˲ɭȩƥÞwojihffghhhXn5@F-7:-7:-7:-7:-7:-7:-7:-7:-7:/:@@SmKdKdJdKdKdKdKdKdKd"$ '"($+%-'0*4,6"0<&4B):K.@T4G_?TuJdJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaF_F_HaMfQjXpbzqŲɵ˵˴ʱȬƣuh^wXpSkMeJbIbIbIbHbIbIbIbHaG`HaJcKcMeQj[se}oy|rg\uSlMgKdJcHaHaHaIbIbHaG`HaJcKdLeRjZsd}mwŸ~xsonnmmmnnmmnopqu|¦ŨƩǫȭȮʰ˱˳̳ʹ̵̶̶Ͷ̶ͷ͸θιклммммϼϻϻϻλκͺ͹̸̷˷˵˵˵˵˴˴˴ʰɭȫƥÜ}yxwvvwxxP`m1=E3>G3?G5AI6CK8DL8EO9GSObASkDXwH_KbLeLeMeMfMfMfMfMf % &!(#)&-(1 +5",8#/<'4C1@WKQBQXGV^QbmXjwi~CR]1;A3?H7EQ;K^DXrMdOiOiPiQiQiQiQjQj%-'0)1 -6#/:$2=+:I4DZ@TqG\}RjQjQjQiPiOiMgLeKcJbHaG`G`F_F`F`F`F_F_F_F_F_F_F_F`G`G`G`HaHaIbIbIbIbIbIbHaHaHaF_E^F_JcLeQjZsj{Ƴ˷͸ͺιζ̰ȥÝznc{ZrPhKdJcIbHaGaHaIbIbIbHaIbIbJbJcNfTl[tb{kwwk_xTmNhLeJcHaG`HaIbIbIbHaIbIbJbKcNfTlZsazjuåħĩƩǪǫǬǬȭɮʰʰʱʲʳʳʴʴ˶˶̷͸κκϻϻϻϻϻϻϻϻϻϺκι͸ͷ̷̶˶˵˵˵˵˵˲˲ɰɮȩťġ?KPIV\Veldv~r{|\oM_rOb|QeSiVnWpWpXpYqYqYqYrYr!#$!%"'$)&-+3#/9(5@-;H2APDWpUlXpWpSmQjOgMeKcIaHaG`G`F`G`G`G`G`G`G`G`G`G`G`HaHaHaHaIbIbIbIbIbIbIbIbIbG`F_G`KdMfQjZsj{ƴ˸κμмйδ˫ƥÞvj_wSkMeKdIbHaG`HaIbIbIbIbIbIbIbJbLeRjVo\ud|p}yl_xUnNhLeJcHaG`HaIbIbIbIbIbIbIaJbLdQiUn[sc|nzŸ¥çũƩƫǫǫǫǬǬȭɮʰʰʱʲʲʳʳʳ˵˶̷͸κκϻϻϻϻϻϻϻϻϻϺκι͸ͷ̷̶˶˵˵˵˵˵˴˴˳˲ʯɭȫǩƦĥťĥĥĥæææ3=@5@C8CHDPTuDR]-7:-7:M_qffghhhhhCUg.:D&.)0 +3",4&1:+6@/;G4@O:HXBRcL^sVk_vd}_x\tXoTlPhMeLeKdKdJdKdKdKdKdKdKdKdKdKdKdJcJcJcIbIbIbIbIbIbIbIbIbIbG`F_G`KdMfQjZsj{ȶ̺моҽйͲʭǧĝre}WoPhMfJcHaG`HaIbIbIbIbIbIbIbHaJcNgRkVo^vjx{n`yUnNhLeJcHaG`HaIbIbIbIbIbIbIaIaJbNfQjUm]uhu ž£¥çũƪƫǬǬȬȭȭȭɮʯʱʱʲʳʳʴʳʴ˵˶̷͸λκϻϼммммммллϺϹθηͷͶ̶̵˵˶˵˵˵˵˵˴˲ʱʰɯɮȭɮɮɮʮɯɯȯ_npkz}tǬǪŦžatM\hf{vvvxxxxxxxsYl|>MW%/3"%%)*-%05-9?5BKD;HIFTUN]_i{~{rmkjhhhiikkkjiig~bz]vYqTmOhMfLeKdKdJcJcKdKdKdJdNgUn[tb{m~Ĵ̻ϾѾкθ̴˭ȡ{lazZrTlMeKcJbIbIbHbIbIbIbHaG`GaKdMfPiXpf~v~pc|VoPiMfJcHaG`HaIbIbIbIbIbIbHaG`HaJcKeNgTmazn|¡¡ ¡¡¡¡¢¢¢£ããããäĥĦƧƨǨǩǨƨŧŧĦæĥæĦŦƧƨƩƪƪƫǫǬǬǭǭƮƮƯǯDZȲȲɳʴ˴˵̶̶ͷθθϹййииϸϷηζͶͶ̵˵˵˴˴˵˵˵˶̸͸͹κмѼѼѼѼмлллϺϺι͸Ͷ̴˲ɱȯǮƮƭƮƮƮǯȯȯȰȰ') ),%.0+461<>9EGCORN\^Yhkfuxr{Ʃġ}|{yyyzz{||{zyuohbyZsTmQjOiNgMfLeLeMfNgOhNhRl[tc}kwǷͽпҿѼϺθͲʧÜvjazZrQiLeJcIbG`F`G`G`G`F_E^F`JcMfQjYqgwre~XqQjMfKdHaG`HaIbIbIbIbIbIbHaG`HaJcKdMgTm`ym{   ¢¢£ãäĥĦŧƨǨǩǩƨƧŦĤã㣣ããäĥĦħħŨũũũũīĪĬŬŭƮƮǯǯȱȲɲʲ˴̶ͷθϹйййϸϷϷϷͶͶ̵˵˵˴˴˴˵˵˶˷̷͹κϻлмѼѻлллϺιιθ͸ͷ̵˴ʳɲȲȲȱȱȲȲɳʳʳʴʴ?KLGSTO\\Ubb[ijguvr{̶˴˳ɯǩã|skb{ZsVoSmRkQjPiPiQjRkSlSmXrb{luıɺϿҽмϺϵ̬ƣsi`yUnOhLdJcG`E_E^F_F_E^D]F_JdNgSl\tjz ugZsSlNgLeIbG`HaIbIbIbIbIbIbHaG`HaJcKeMgTn_yly¡¡ ¡£äåĦŧǧǧǨƦťâ ¦¦èéĪūƮǰɲ˴ͶθϸйϸϸϸϷηηͶ̶˶˵˵˵˵˵˶˷̷̸͹κϺϻлллкϺϹιιθ͸ͷͶ˶˵ʴʴʴʴʴʴʵ˵˵˵˶˶')(*!+-#-/*462<>;GHCNPS_`cqqz͸̷˴ɯǫĦ¢wmd}`y]w\uZsYrYrZs\t\u]wb|lwîȵ̼ӾѾнйβɫƤtj^wVnQiMfHaG`F_G`G`F_F_HaNgSkXqbzqĤÝzl_xWpQjNgJcG`IbIbIbIbIbIbIbHaG`HaJcKeMgTn^xiu¡¡ ¡¢ããĤťƥťŤĢßéƭɱ̴ͶηϸϸϸϷηηͶ̶˶˵˵˵˵˵˷˷̷̸͹κϺϻлллкϺϹιιι͹͹θ͸͸̸̸̸̸̸̸̹͹͹͹ͺͺ " ""$#$&'!)*$,.'/1*14/8:7BBCNNR_^esrͶ˴ɱȯƭūūŪŪũūŪŪŬƭƭƫƪƨţ›}tomljiijlmns|ıɵ̺οҿҽиͳʯǦšykazZsUnNgKdJcKdKdJcJcNgUn\tb{m|ëƩţÙuh^wWpRkLeIbIbIbIbIbIbIbIbHaG`HaJcKeMgRlZtd~nw~¡¡ ¡¢¢ãģŤţģĢß§ŭɱ̴Ͷθθϸϸθθηͷ̷̶̶̶̶̶̸̸̸̹͹κϺϻлммлϻϺϺϺϹικιͺιͺͺͺͺͺͺͻλλλλμ-78 " " " " " " "!$$& (*'127CCXeeλ͹̷˶ʴɳʴʳʳʳʴ˴˴˵˶˶˴˳˱˭ȥĝ}|{zz{|}~ðɷ̺ϽѼϹͶ˰ǥwlc|\uSlOhMfNgNgMfNgSl[td|lx­ƯɮȨƠ~pe~\uUnMfIbJcIbHbHaIbIbIbHaHaHaJcKdLfPjWp_xgnstááࠟ¡¡¡¡âĢġߞxussqrstttuuuvvvvvvwvwvwyz|Ʈʲ̴̷θϸϸθθθ͸͸͸͸̷̷̷̸̹͹͹͹ͺκλϻϼмллкϺϺϺϺλκκιͺͺͺͺͺͺͺκκλλϼϼϧdtr8CB " " " " " " " " "rϼλͺ͹̸̷̸ͷ̷ͷ̸͸͸͹ͺ͹͸ͷͶͳˬȦğĮȶ̺ϽѿѿнϻͶʭťwmd|ZsUnRkRkRkQjTmYrb{mw«Ʋɴ̲˭ɦŝymb{YqOhJcJcIbHaHaHaIbIbIbHaIbIbJdKdOhSmYs_yd}hiááࠟ{skgfe~c|c|d}e~e~e~f~g~g~g~ggggggggf~gijlqz¨ǭɱʶ͸θθιιιιιιι͸͸͸͹͹͹ͺͺͺκλϻϼммллллллϻϺκι͹͹̹͸̸̸̸̸̸̸̹͹͹͹͹κκλΏqO[[#,-(*'127BBWddλͺͻκͺ͹ͺκκκλϻϻϻϼϻϻϺϹϷͲˮȩƥáëưɵͺϽѿпм͵ɯǩßzpe~_x\u[t[t[t^wd}ny®Ʋɶ̸ηβͬȥŝui^vRkLeKdIbHaG`HaIbIbIbIbIbIbJcJcMfPiTmXq[t]v^wááࠟ~unf^xZsYrXqVoVoWpXqXqXqYqXqXqXqXqXqXqXqXqXqXqXpWoXpZr[s]ub{kt~ŬǴ˶θθιιιιιιιͺͺͺͻͻͻͺͺͺκλϻϼммллллммϻϻκι͹͸̷̶ʶʴʴʴʴʴʴ˵˵˵˵̶̶̷̷̸̸̸̤yWfeR``o~̹ͺͻμϽϽϾооопѿѿѿѿѿѾѽѽйϷʹ̲ʯɮȭǬƬƫƫƬǬǭȮȰɳ˶ͺϽѽι͵ʭơvpmlllouñȶʸͻμлзϲ˭ɦŜ~qd|VoPhMfKdHaG`HaIbIbIbIbIbIbJcJcKdLeOhQjRkSlSlááá¡  ž~zrjd|]vVpRkRkPiOhOhOiPiPiPiQiQiQiPiPjPjPjPiPiPiPiPiOhPiQjRjSlXqayir~űɵͷ͸κκκϺκκκκκλλμμλͻλλμϻϼннѽѽѽҽҾҾѽѽмϻι͸̷˵ʴɲȲȲȲȱȱɲɲɲɲʠ˶˶˶˶ʶʵʶʶʷ˸̺ͻϽопҿҽѼйϸζͶ̵̴˵˴˴˵̵̶ͷ͹λϽѿѽϷ̭ƣ~~~òȸ˻ͼξϾѾѺеͱ˫ȢÓuhYrRjNgLdHaG`HaIbIbIbIbIbIbJbIbJcKdLeMfMfNgNgááááࠟ}wtqmgaz\tVoRkNhNgMfLeLeLeMfMfMfMfMfMfMfMfMfMfMfMfMfMfMeLeMeMfNfOgRkZrazit®ȴ̷͸ͻϻϻϺκκκλλλμμμμμμϼϼϼϽннѽѾҾҾҿҿѾҾѽлιͷ˵ʳȱǯƯƮƮƮŭƯƯƜq}ɳɪűDzȲɳʵ˸̺μϾпҿҾѽѻϻϹιθθθθθιικϻмѾҽϵˮǦßıȸ̼ͽξϿѿѼзͳ̮ɥĖyk\uTlPhMeIaH`H`IbIbIbIbIbIbIbIbJcJcJcKdKdLeKeââââááࠞ~wrkge|ay]tXqUmQjNgLeLeKdJcJcJdKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdJcKdKdKcKcNfTlZr`zjyƲ˶̷ͻϼϻϺκκκλλμμννννϽϽϽϼϼϽϽѽѽҽҾҿҿѽѽлϹͶ̳ɰȬũ触0;>5BEBPRP_c[kouHUXQ_bnūƯDzɴ˸ͻμϽϽппѿѿѿѿҿҿҿҾѾѽѼмϻϺϺϺϺϺϺϻϻϼнѿҿѻ϶̱ɬƧĤ£«ůǴɸ̼οѽйε̱ʨƛpb{XpSkOgJbH`IaIbIbHbIbIbIbIbIbIbIbJcJcJcJcJcââââááà  xrke}^vZrXoVnRjOhNfKdJcHaHaG`HaHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`GaG`G`G_G_H`NfRjWq`zp~İɴ̷ͻϼϻϺκκκλλμμννννϽϽϽϼϼϼϻϻϻккллϹϹηʹ˯ȫŦ¡JZ] " " " " " " "LZ_=JOM[`aqxzëưɵ̸͹͹λλϻϻϻϻϼмнннѾѾѿѾѾѾѾѾѾѾѾѾѿѿҿѽлϹͶ̵˴ʳ˳˳˴ʶ˹ͻξѿлϹε̮Ȣzk`xYqSkLdJbIaIbIbHbIbIbIbIbIbIbIbHaHaHaHaHaģģģģĢĢġáá  }zwtmgay\tVnSkQhOgMeKdJcIbHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`F`G`F_F^E^F^KcNfRk[tjyïȳ˶ͺϼϺϹικκͻͻͼͼͽννξϾϾоϽϼϻκϹϹϸθϸθζ͵̳˰ȩŢ)+#%%((,"-0'36+7;3>CM\e0-;B8EOCS^PbpYk{#' )-(49:HQ^qưȲɳʶ̶̶˵˵˶̷̷͹ͺμϽоѿѾѾѾѾѾооооѿѿӿҽѼѺкϹϹϺϺϺкккллллϻϻλλλμϼϼноѿҿнϻζ˫Ţ|nd}ZsPhKcJcIbHaGaHaIbIbIbIbHbHaHaG`G`F_F_ĤĤĤģģģģģãá ~wogc|az_wZsVoTkQiNfLeLcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaG`G`KdMfPiXqgv¬Dzʵ̹κϹθ͸͹͹̺̺̻̺̼ͼͼνϽϾϽϼκͷ̴ʱʯȭǫǫƪƨħå {rmjigfgRh} " "&*c{h-9C1=H4BN8FT=L\IZm",2 " "0;Es|éīŭǭǭƬƬƭǮǯȲɴ˷̹λϽмѽѼннϽϽϽϽноѾѿѾҼк϶ʹ̲ʰʰʰʰʰʰ˱˱˱˱˱˱˱ʲʲȲȲɱɲʲʳʳ˵̸ͻϽоϼϹ̰ȨĠvj_xSlMeKdIbHaG`HaIbIbIbIbIbIbHaHaHaHaHaĤĤĤģģģģģãá{rkc|\tXqVoTmQjNgMeKdJbHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaG`G`KdMfPiXqgv¬ǰʳ̷θϷζͶͷͷ̸̸̹̺̺ͻͼνϽϼϻ͸̶˰ȫŦĢ~ulc|^v[tZrXpWpXqG]w,:H5FW>QgYrYr;Mb " " "$07YqCVo;MbJ]xXmd{mu~©ŮDzʷ̹κϻϼннϽϽϽϽнмϼϻϸδ̰ɫƧģ¦īƱɶ̻ѾоϾлδ˯ȨĞre~WpOhMfJcHaG`HaIbIbIbIbIbIbIbJcJcJcJcäääãããäĤãá|ric{\tTmQjOiNhLeKdJbIaHaG`G`G`GaHaHaHaIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaH`F_E^F_JcMfPiYqgv«ǰʲ̶ηϷζͶͶͶ̷̷̸̹̺ͺͻνϼϻιͶ˲ȪģzqiazYrUnSlRjPhOhPiAWs',#-8.=NE[{QjG\}!,6&2?,;K3DY=Ql8Lf=PkEXvJ^~Zqbyiqz¬Ƴʷ̹λϼϾоϽϽϾϾнϼϺιʹˮȧĠíǵ˼ϿѿѿппоппѾиʹˮȤ”vhYsQjMfJcG`F^F_HaHaHaH`HaIaJbJcKdKeKdää䣣£äãã }tibz\tVoPhMfLfLeKdJcIbIbHaHaHaHaHaHaHbIbIbIbIbIbHaHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G_E^E^E^JcNgRk[tjy«ȯʲ̵ζ϶ϵεε͵̶̶̷̸͹͹ͻμϼϹͷ̳ɭƤ}|zxwvsmg`yZsSlQiOhNfMeLeMfF] #!$#'$()0DY{%) " " " " " " ".=NTlZr`xgmtwy{|{zz{|~®Ǵʷ̹ͽϾоϾϾϿϾоϻ͸͵˯ȦÞ~}{{{}}}}}}}~~~}|}~ǵ̹ϼϾпҿѾоонннϽϼϼϼϼϻϼϽоѿҿѺϷα˧Řyj[uRkNgJcF_E^E^G`G`G`G_H`IaJcLdLfMgMg££££¢££¢¡|tkazZrVnRjMeKdJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaHaHaHaHaHaHaHaG`G`G`H`HaH`G`F_F_HaMfQjWpazo}ëɯ˱̴εϵϴδδʹ͵̵̶̷͸͸͹λϹ͵˲ɭƥ{rmkjhgfd}az\vXqTmOhMfLeKdKdJcKdKd)3!,7%3A+0AXF]IcMeOgRjTlXpYqZr[s[sZsXrYr[t[u]vb{lwųȺ̾ϾϾϾϿϽϻ̳ȭƦœwmc|^w\u[tYrXqYrZsZsZsZsZsZsZs[t[t[tZsYrZs\u^w`ye~ozä㢤¦Īưʴͷϸиϵήɢ•yj`yYrSlMeJcJcKdKdKdLdNfQiUmYp[t^v^w~sib{ZsRkNfKdJbH`G`G`G`HaHaHaHbIbIbIbIbIbIbIbIbIbIbIbIbIbJcKdKdLeLeLeLeLeMfMfMfMfMeMfMfMfLfLeLfMfMfNgQkYr`yhsƮʰ˱̳ʹδϳγδʹ͵̵ͶͷηͶͶ̵̱ɨġsjazYrTmRkRjQiPhOhOhNgMfKdJcHaGaG`F_G`F_G`F_D[!,6 " " "F_F_4Fa&-)3#0<*9M5HeBZG`HaJbKcMeNfPhQiQjRjRjQjPiPiRkRlSlXqbzkvƷ˼ξξϾϾμθˮƦœvlb{YrTmSlRkQjOhQjQjQjQjQjQjQjQjRkRkRkQjPiQjSlTmVoZsc|luīȱ̵η϶α˧Ŝth`zYrQjMfLeMfMfMfOgRjWn\saxe}ii~ujb{\tVnOgKdJcIbHaHaHaHaHaHaIbIbIbIbIbIbIbIbIbIbHaIbHaIbIbKdLeMfNgOhOhOhOhPiPiPiPiPiPiPiPiOiOhOiQjQkRlWq`yhq}ìȰ˱̲̳ʹδγγδεεͶͷ͸ηͶ̴˲ʬƢuib{[tSlOhNgNfMfLeLeLeLeKdJcIbHaHaHaG`HaG`HaG`G`E\,VyBZHaHaHaIbJbKdLdMeMfMfNfNfMfLeMfNgNgNhSk[sc|lwôɻ̾ξξνκ̵ɩßwlc}[tSlOhNgNgMfLeMfMfMfMfMfMfMfMfNgNgNgMfLeMfNgPiPiTm[tb{iqx{}~~~~~~}}}êȱ̵͵Ͳ̫Ǣ}qh_xWoRkPiPiPiQiSkWo]tc{jptu~ulb{[sVnQjMeJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcLeNgPiSlTmVoUnVoVoWpWpWpWpWpXqXqXqWqWpWqXrYs[u`zir|©Ưɲ̴̲̳̳ʹδδεζζͶͷͷζ̳˰Ȭǥ™wi`yZsUnOhKdKdKdKdJcKdJcJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIb;QpIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcKcKdKdKdKdKdJcKdKdKdJdNgUm[tc{m}Ⱥ˽;ξμ͹˱Ȥ|lb{[tUnNgLeKdKdKdJcKdKdKdKdKdKdKdKdKdKdKdKdJcKdKdLeMfOhTmYr^wc|hklmmmmllllllkjkmnqv©ǰʲ˲ˮȨğ}si`xZsXqXqXqYq[t`xg~mu{}tkb{YqSkPhMeJbHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbKdKdNgQjTmXq\u_xazb{c|c|d}d}d}d}d}e~e~e~d~d~d~ghjnwêƭȱ˴̴̳̳̳ʹδδεζζͶ͵͵̲ʭǨġui]vUoQjNgJcG`G`G`G`F`G`HaHaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHbHaHaHaGaG`G`G`G`G`F_G`G`G`F`HaNgSlZrc{tƸ˽;ξμͷ˯Ơrb|XqSlNgHaG`G`G`G`F_G`G`G`G`G`G`G`G`G`G`G`G`F_G`G`HaHaIbLePiSlVoYr[t[s\t\t\u\t[t[t[t[t[t[tZsYrZs\u]v`xe}p{ŭȰʰʮȨĠwoife~e~f~hmt{tkc|[tSkOfLdJcHaHaHaHaIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaHaIbKdMePiUn[t`zfknopprrrqrssssssuvx|«ƮȰɲ˴ʹ̴̳̳ʹεεζηη͵̴̳˯ȧĠtj`yVoOiLeJcHaE^F_F_F`F_G`G`G`G`HaHaIbIbIbIbIbHaHaHaHaG`G`G`G`G`G`HaHaHaHaIbIbIbIbIbHaHaGaG`G`F`F_F_F_F_F_F_F_E^D^F_KdOhTl^vn~Ÿʼ;ξμͷʭŝ}m\vSlNgJcF_E^E^F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_G`F_G`IbKdMfOhQjRkRjRkRkRkRkRkRkRkRkRkRkQjPiQjRkSlUmZrd|nyŭɱʱʮȨĠ|wutttvzyld|]uWoOhLdKcJbIaHaHaIbIbIbIbIbIbIbIbIbIbHaHaHaG`G`G`H`JbMeOgSlZsb{hpvz|}~Įǰɱʳ̵ʹ̴̳̳͵ζζηθη͵˳˱ɫơtjazZsQkLfKdJcHaF_G`G`GaG`HaHaHaHaHaIbIbIbIbIbHaHaG`G`G`F_F_F_F_F_F_G`G`G`HaHaIbIbIbIbIbHbHaHaHaGaG`G`G`G`G`G`G`F_E^F_JcNfRj[sl|ķʼ;ξμͷʭĜzjZsQjMfJcF_E^F_G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`HaG`HaIbJcKdLeMfNgNfNgNgNgNgNgNgNgNgNgNgMfLeMfNgNhOhSl\ue}nzưʳ˱ʭǧà}re~]uWoRjMeJbJbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaHaIaMePhSkYrb{jr{íưȱɲ˴̵ʹ̴̴̵͵ζηθθη̳ʰɬƤ˜wi`yYrTmNgJcJcIbIbHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaG`G`G`G`G`G`G`G`HaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbG`F_G`KdNfRj[sk{ķʼ;ξμͷʭĜzjZsQjMfKdG`F_G`IbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcKdKdKdKdKdKdKdKdKdKdKdKdKdKdJcKdKdJdKdNgUn\uc|o~įʴ̴̲ʯǩģwk]vVnQiNfIaH`H`IbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcKdMeRjVn[sb{lv~§īŮDZȲʳ˴˴̵ʹ̴̴̵ͷηηθθε̯ȪŤti]uUnQjNgJcHaHaHaIbHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbJcJcJcKdKdKdKdKdKdKdKdJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbG`F_G`KdNfRj[sk{ķʼ;ξμͷʭĜzjZsQjMfKdG`F_G`IbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbHaHaHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`F_G`G`F`E_HaNgSlYrd|t¯ʶθθη̳ʮǩĤ¢¤å¥£sfYrQjNfKdH`G_G`HaIbIbIbIbIbIbIbIbIbHaIbIbIbIbJcJdLeLeMfPhWn]tc{jv¡âĢŤŤŦŦŨŨũũūƭǯDZȲɳʴ˵̵̵͵̵̵̶ͷθη͸ηʹ˫Ƥ›uj`wUmOhMeKdHaG`HaHaIbHaIbIbIbIbIbIbIbHaHaHaHaHaHaHaIbJcKdLeMfMfNgNgNgMfMfMfLeKdJcIbHaHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`F_E^F_JcNfRj[sk|ŷʼ;ξμθ˭ŝ{k[sQjMfJcF_D]F_G`G`G`G`G`G`G`G`HaHaHaHaIbIbIbIbIbIbIbIbIbHaHaG`G`F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_D^D]F_JcNgTm^voʷκϻлϸ͵˰ɬƪŨħĦå¥å¥åææħç㣢qd}WpOiLeJcH`G_H`IbIbIbIbIbIbIbIbIbHaHaHaHbIbJcJcLeNgOhQiUl\tc{ks~¡£ĤĤťǧǧǩǩǫǫǬǬǮǯȰȱɲɳʴ˵̵̶͵̶̶̷͸ιθͷͶͲɨĞvkbzZqQiLeKcJcIbGaHaHaIbIbIbIbIbIbIbIbHaHaG`G`G`G`G`HaIbKdLeNgPiQjRkRkRkQjQjPiNgMfKdIbG`G`G`F_F_F_F_F_F_F_F_F_F_F_F_F_F_E^D^F_JdOgTl^un~Ƹ˼ξϾϼθ̮Ɵ~m]vTmNgJcF_D]E^F_F_F_F_F_F_F_F_G`G`G`HaHaIbIbIbIbIbIbIbIbIbHaHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`E_D]F_JcMfRk[tl~ʷλмнлϷʹ˰ɮǭƫƪŨħħæçæçççããâ ~pc}VpOiLfJdHaG`HaIbIbIbIbIbIbIbIbIbIbHaIbJcKdLeNgPiSlUnXp\td|lt|¢£åŦŦƧǩǩȪȪȬȭȮȮȯȰȰɲɲɳʴ˵̵̶ͶͶͷ͸ιϹϸͷ͵̰Ȥ˜|lbz[sTlMeKcJbJcIbHbIbIbIbIbIbIbIbIbIbIbHaHaG`HaG`HaIbIbMfPiRkUnXqZs[t[t[tZsYrWpTmRkOhMfIbIbHaG`G`F_G`G`G`G`G`G`G`G`F_G`G`G`F`HaNgSlYqc{sǸ̽ξϾϽϹͰȢsc|YrSlNgHaF_G`G`G`F_G`G`G`G`G`G`HaHaHaHaIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbG`F_G`KdNgRk[tl~ʸϼнѿѽѺϷʹ˲ʱɯȭƫũĩçħæçççããâ ~pc}VpOiLfJdHaG`HaIbIbIbIbIbIbIbIbIbIbJcKdMeOhRkUnYq]v`yc{gow~£äĤĥŧǨǨȩɫɫɬɬɮɯʰʰʱʲɲɲɲɳʴ˵̵̶Ͷ͸͹ͺλϻϸͷ͵̮Ƞsc|YqSkNfIaG_H`HaIbHbIbIbIbIbIbIbIbIbIbIbIbJcIbJcKdLeMfOhTmYr]vb{gijkkihe~az]vXqTmOhMfLeKdKdJcKdKdKdKdKdKdKdKdJcKdKdKdKdNgUn[tc{m}ɺ̽ξϾϽϻͲʦÚ}nc|\uUnNgKdKdKdKdJcKdKdKdKdKdKdJcJcJcIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbG`F_G`KdNgRk[tl~ʺϾҿӾѻϸͶ̵˳ʱȯǭƫũũèèççããâ ~pc~WpOiLfJdG`F_G`HaHaHaHaHaHaHaHaHaIbJcLeOhTlXq]ubzhknry£åĤŦƨǩǩȪȫȫɬɬɮɯɰɰʱʲʲʳʳʴʴ̵Ͷͷͷθκλϼмйηε̭ǟ~m]vTlOgKdG_F^G_HaIbHbIbIbIbIbIbIbHaIbIbHaIbIbIbKdMfOhPiTlZsa{hnuy{{{zxtmg`yZsTmQjOiNgMfLeMfMfMfMfMfMfMfMfLeMfNgOgOhSl[td|mwĴʻ;ξϾϾϼε˫šxmd}[tSlOhNhNgMfLeMfMfMgMfMfMfLeKdJcIbHaHaHaG`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`E^D]F_JcNgRk\um²˼ӾѺϹη͵˲ɰȮƬŪũĨĨĨĨģãâ reYrQkMgKdG`F_G`G`G`G`G`G`G`G`G`G`IcKdNgRkYq_we}krvy|£äĤťƦƧƧǩǩǩȩȩȫȭȮȯɰɱɲʲɳʴ˴̵ͶͷθιϻϼѽѽѺϸε̭Ǟ|k[tRjNfJcF_F^G_HaIbIbIbIbIbIbHaIbHaHaIbHaJcJcKdMfPiRkUnYrb{ks{zsjb{ZsVoTmRkQjPiPiQjQjQjQjQjQjPiOhPiRkSlTmYqb{mw¯Ƿ˼;ξξξϽθ̰Ȩßwmc{YrTmSlRkQjPiQjQjQkQjPiPiNgLeKdIbG`G`G`F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_F_D]D]F_KdOhTm_xpô̾ӿѻϹη͵˲ɰȮƬũũĨĨĨĨģãâ¡vj]vVoQjNgIbG`HaHaHaG`G`HaHaHaHaHaLeNgSkXp`wgnu}¢âģťŦŦƧƧƧƧƧƩƪǫǭȯǰȱɱɳʴ˴̵ͷθιϺмоҿҾһй϶̭Ǟ|k[sRjNfKdG`F_G`IbIbIbIbIbIbIbHaIbHaIbJcJcMfNgPiSlXq[t^wc|mwvmd}`y]w[uZsYrYrZsZsZsZsZsZsYrXqYr[t]u^vc{myíƴʺ̽οξξοϾϻ͵˯ǨÞxnc|^w\u[tYrYrZsZsZtZsYrXqUnRkPiMfIbIbHaG`G`F_G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`G`F_G`G`F_F_HaNgTmZsfwŷԿһйη͵˱ɰȭǬƩƩŨŨŨŨţãã¢|qe~]vWpSlMfKdJdJcJcIbIbJcJcJcKcLeQiTmZr`xjqy¢âģŤŤŤĥĥĥĥĥħĨƩƫƭǮȯɱɳʴ˴̵ͷθιϺмоҿҾһй϶̭Ǟ|k[sRjNfKdG`F_G`IbIbIbIbIbIbIbHaIbIbKdLeNgSlWp[t`ygjms}¨ƫǬǬǫƨġ}tonljiijjjjjjihiklos}įɴʸ̽οοξξοϿϽϹͶ˱ȪĞ~tomljjkkkjhgb{]vYrTmOhMfLeKdKdJcKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdKdJcKdKdJcKdNgVo]vd}qǻҽлιͷ˳ɱɯȭǫǪƪƪƪƪƤĤĤã xmd}]vWpPjNgMfLeKeJcJcKeLeMeMfOhUnZraxhrz¡ââģĤĤäääääĦħŨŪƬƭǮɰɲʳ˳̵ͷθϹкѽѿӿӼѺзͮȟ}l[sRjNfJcF_D^F_G`G`G`G`G`G`G`F_HaJcLeNgRkYr_xf~muz}ĭȲ̴̵̵̴̱ʫǣœ~|{zzzzzzzzzyz{}ïɵ̸ͻοϿϿξξοоϼϺͷ̱ȨÞ~}||}}|zyvohazZsTmQjOhNgMfLeMfMfMfMfNgNgNgNgNgNgNgNgNgNgNgNgNgNgNgMfLeMfNgNgOhSl]ve~o|òʾӾмϺθ̴ʲʰȮǬǫƫƫƫƫƥťťĤâŸtkc|\uUnQjPiOhNgLfLfNgOhPhQiTl[raxhpz¡¡ââã㣣£¤¤æçĨĩūƬǭȯɱ˳˳̵ͷθϹкѼҿӿӼѺиͮȠn^vTlOhJdF_D^E^F_F_F_F_F_F_F_E^G`JcMfPiVo`yhqz§ƭȳ̶θιιθζ̱ʫǥßĬǴ˸κμϿϿϿϿϿпнϼϹͶˮǧà|tkb{ZsUoSlRkQjOhQjQjQjQjRkRkRkRkRkRkRkRkRkRkRkRkRkRkRkQjPiQjSkSlTmZsd}nz¯ȸҿнϻθͶ˳ʱɯȭȬǭǬǬǬǦƦƦťĤâ}tld}\uXqVoUnSlRkRkSlUnVnWo[rbyipxŸ     ¡¡¡¢¢¢¢££¥¦ħĨĪūǬȮȰʲ˲˴̶θϹкѼҾӿӿӽѻиΰɢtc{ZrSlNgHaF`G`G`G`G_G`G`G`G`G`HaNgRkVo^wjtūȯʳ̸κлллкй϶ͱ˭ȩƥá¨ŭȲ˸κϼϽпϿϿϿпонмκ͵ʯȪŦ¢wmd}^x\u[tYrXqYrZsZsZs[t[t[t\t\t\t\t\t[t[t[t[t[t[t[tZsYrZs\u]v_xe~p{Ƕ̽оϼϹη˴˳ʱɯɮȮȭȭȭȧƧƨƧŦŤß~vogc|az`y^v]v]v^w`xaxbyf|lszŸ     ¡¡¡  ¥¦¨ĩŪƬȮʰ˲˴̶θϹкѼҾӿӿӽѻкβ˦Ù}mc{[tUmNgKdKdKdKdJcJcKdKdKdKdNgUn[tazkx©ƫȮɳ̶θϺоѾҿҿҿҾҽѼѹ϶δ̲ʰɮȮȭȮȭǭǭǭǭǬǬǬǬǭǬǬǬǭǯȱɳ˶͹ϼнѾѿпϿϿϿппооϻθ̵˳ɱȯǯǯǰDZDZȱȯƭƫĦ~uomljijkkklllmmmmmlllllllkjkmnpvȹ;ϾϻιͶ͵̳˱˰ʰʯʯʯʨǨǨǨƧƦĢyrnlkihhikklpu{ àááààà¡ ¦èĩūǮɰʱʳ̵ηϹϺмѽҿҿҽѼѻе̪Ơxlc|[sSlOhOgNgMfKeKdMfNgNgOhSl[tc|kvîȳ̴Ͷ͹лмѾӿӿӾҼѻкϹϷζͷͶͷζͶͶͶͶ͵͵͵͵͵̵̵̵̶̷̸͹λноѿѿѿпϿϿϿппоϼκ͹̸˷˷̸̸̹͹͹͸̶̴ʰǨß~}{z{|||~~~~~~~~~}|}~Ǹ̿ϿмϺͷͶʹ̲̱ʱ˰˰˯˩ǩǩȨǧƦţ |ywwtttuvvvy} ááġġáà  æçĩƭȯɰʳ̵ηϹϺмнѾѾѾѽѼиίɦĝvlbzYrTmSlRkPiNhNgPiRkSlUnYrc|lu«Ǵ˷θϹϻѽѽѾҿҿҿӿӿӿӿҾҽҽѼѻкклллкϺϺϺϺϹϹϹϹϹιιικκϻϻϼнѾѾѿппоϾϾϾпппϿϿϾϼͻͻͺͻͻμνϽϽϼλιͶ˯ǩâƵ˽пнϻθη͵̳̲˱˰˰˯˩ȩȩȩǨǧƤâ  âĢŢšġĠàŸ¥¦èŬǮȰɳ˴ͶθιϻϼноѽнѽѺϳ˭ǥÛwmc{^w]u[tYrWqWpYr[t]v^wc|mwëDZʸλллмѽѾѾѾѾѾҾҾҾҾҾҾҽҽѽѼѼѽѽѽѽѽѽѽѽѼѼѼѻѻлллммнннѾѾѾѿпппоϾϾϾϿϿϿϿϿϿϿϾϽνͼͼμνϽϾоооонϻͶ˲ȭƨã«űȶ˼оϼϹθζʹͳ̲̱̱̰̩ȩȩȩǨǧƦĤĢà âĢŢšġĠàŸ¦ĪƬȮɱ˴ͶθιϻϼммϽнѽѼϷͳʮȦÜ}tomkiggikmot}ůɴ̸νпҿҾҾѿѿѾѾѾѾҾҾҾҾҾҿҿҿӿӿӿҿҿҿҿҿҿҿѾѾѿпппоϾϾϾϿϿϿϿϿϿϿϿѽϻ͸̵ʲɰȰǯƯǯǯǰǰDZȲɳʳʴ˴˴˴˴˴˳ʳʳʲɲɲɱɱɲɲɳɴʵ˸ͼоϼϺιη͵ͳ̲̱̱̰̩ȩȩȩǨǧƦŤģážâĢŢššŠàžèūǭȰʳ̵ͷ͸κλϻϻϼϼммϹͶ̳˭ǥœ~}{yy{}~įʵ̹ϼпҿҾѿѾѾѾнѾѾҾҾҾҾҿҿҿҿҾҾѿпппоϾϾϾϿϿϿϿоϼκι͹͸̸̹̹̺ͺͻμϼмннннннмммлϻϻϻϻϻϻμϽϾпϽϻκθͶʹͳ̲̲̱̩ȩȩȩǨǧƦĤãàž¢ĢŢššŠğޞ§ĪǬȯʲ̴ͶͷικϺϺκλϻϻιͷͶ̲ɬƦàíǴ̸κϼоѿѿѾѽонннннѽѽѽѾѾҾҾҿҿҿӿӿӿӿӿӿҿҿҿҿҾҾѿѿппϾξξξξοϿϿϿпѿонϽϽϽϾϾϿпҿѿѿѿѿѿѿϿνϻͺθͶʹͳ̲̲̱̩ȩȩȨǨǧƥģâàž¡ĢŢššŠğޞ¦ĨƪǮɱ˳̵Ͷθιιι͹ͺͺͺͺ͸͸̵˲ɮȪƧţ¡êŮȲʷͺλннннмϼϼϼϼϼϼннѽѽѽѽѽѽѾѾѾѾѾѾѾѾѾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾѿѿппϾξξξξοϿпϿϾξξξξϾϿппѿϿνλͺ͸Ͷʹͳ̲̲̱̩ȩȩȨǨǧƥģâàž¡ĢŢššŠğޞ¥Ĩƪǭɱ˳̵Ͷθιιι͹ͺͺͺͺ͹͹ͷ̵˲ʯɬȩƧťĥä㣤¤¥¦çīƮȲʵ̹λϼннннмϼϼϼϼϼϼннѽѽѽѽѽѽѾѾѾѾѾѾѾѾѾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾѿѿппϾξξξξοϿпϿϾξξξξϾϿппѿϿνλͺ͸Ͷʹͳ̲̲̱̩ȩȩȨǨǧƥģâàž¡ĢŢššŠğޞ¥Ĩƪǭɱ˳̵Ͷθιιι͹ͺͺͺͺ͹͹ͷ̵˲ʯɬȩƧťĥä㣤¤¥¦çīƮȲʵ̹λϼннннмϼϼϼϼϼϼннѽѽѽѽѽѽѾѾѾѾѾѾѾѾѾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾҾѿѿппϾξξξξοϿпϿϾξξξξϾϿппѿϿνλͺ͸Ͷʹͳ̲̲̱TRUEVISION-XFILE.gl-117-1.3.2/textures/gl-15_ch.tga0000644000175000017500000003005410145416156015555 0ustar cedriccedric@@ȤĠȨ̪ʮ˶ιθ̸ͻккϼлϹͺͼнѽѽѽѾпнϽоѻϺϺмѿѿϰȬŬĭĭŬŮǸ̸̳ɩǦŠá¤¬dzʵ˶˶̷ͷ͹ι͸̸˺λϻϻϼϽпѾѽϻϻклϽϿҽϠrd|d|d|d|d|pdzɪǥğ¬DZɳʮǢôʺκϻмоѿѾнлϺϺκνϿүrNgIbIbIbIbIbNgmʩƤž§ƬǬǒl_x_x`y`yayn´˻мѾҽѼж̨ģ§ĵ˽Ͽѿѩb{IbIbIbIbIbIbIb`xʨŤ£ŧƜkMfIbIbIbIbIbNf[tnνѽѻе˚oazoĹͿҭpNgIbIbIbIbIbNfmʧţœ}}~ĢŒ]vIbIbIbIbIbIbIbIbNgjͺϸΥnNgIbNg\toϿѺΝqb{c{c{c{c|oɲʨȡÚzr^vWoWo_wt~ÔhMfIbIbIbIbIbIbIbIbNfi̸͟`yIbIbIbIbNgjοѺέǨêĪĪĪūŴʵ̱ʦǡÚ|p]vVoSlKdIbIbKdSlWoay}Ÿi^w_x_xZtMfIbIbIbIbNfmĹϥnNfIbIbIbIbNgožѾѿѼη̳˭ȡÞ|qYrKdIbIbIbIbIbIbIbIbLe^váØgMfIbIbIbIb_xβ˙jNgIbIbIbIb\tηͩŧíǽк͵̱ˬȝzlRjIbIbIbIbIbIbIbIbIbIbLe_vãţ¥ĵ̱̕fMfIbIbIb_xͷʹ˙iNgIbIbIbNgjob{qοѺʹ˯ɪŝzlVnJcIbIbIbIbIbIbIbIbIbIbLeayâġ¯ɴϯ̍YrIbIbIb_x˵̶˲ɔ\tIbIbIbIbNg\u\uNgIbNgqӼд˭ǨěwoayRjNfNfOgOhQiRjQiKdIbIbIbSlvááīȮ˗]vIbIbIb^wȳʵʶ˧oNgIbIbIbIbIbIbIbIbIbb{ĿѹγˬǨŚ}ume]w[t\s^uawdzhd{PiIbIbIbKd^v§ŕ]vIbIbIbYrŲɵ˷̴˙iNfIbIbIbIbIbIbIbIbbzýз̱ʬȨŘ}wngdazaxbyezf|ie{SkJcIbIbIbVo|\uIbIbIbMfkȵʷ̸̳ʘiNgIbIbIbIbIbIbNfpƽиβ˫Ȧ×}yrjfa|`xaxbycye|cz\sQjJcIbKd\t|w`yZrc|f~MeIbIbIb^wȳȶʸ͹ε̚oayazazaz`yayoνѸϲ̪Ǥ–}zunhc}`y`wcxeygzf|c{^wTmQjXqm|y]vLeIbLec{c{MfIbMfiɳɶʸͶ̨ğ¢ŸͽϼϷͲ˪ǥ—{yvsqkf~bzaydxlxozi}ggf}fjrxrTnIbIbIbYqf~[tf~Ű˳̶̲ɚoazaznιϹκͻμμλζ̱˪ƣtnmnnmjg~d|d|g|q|s|k}inpnlmvqTnIbIbIbYqªư˯ɖiNgIbIbNgoƺи͹̻ζ˨ģâu[tRlUoaygfff|d{e~jtuomrvuonvtUoIbIbIbYqÒgNfIbIbIbIbazĻѺε˩Ėoaz`yj|\uKdIbJcRk^x`{^w_v`xc}kswuty}|xu{yVpIbIbIbUn{e}MfIbIbIbIbNgoƽҸ͚o\uNgIbIbMfg~_wLeIbIbIbMfZsXrPiOgSl_zjqvxy~|{~xVoIbIbIbLeb{c|MfIbIbIbIbNgjιϛjNgIbIbIbIbIb[sWpMeIbIbIbJcPiWoOhJbIbJcSmd~ptvz~~~uUnIbIbIbIbUn|azMfIbIbIbIbMfhкОjNgIbIbIbIbIbMffIbIbIbIbJcQi[rXoLdIbIbIbJdWpnutx{~|u[tKdIbIbIbLe_x_xLeIbIbIbMfYrj˻ϪpNgIbIbIbIbMfZsiIbIbIbJcRj]t`wYqNgIbIbIbIbPjfptvz~s[sLdIbIbIbLe_wz~_wLeIbIbIbIbXqǰɯǒ[tIbIbIbIbMffIbIbIbOg_xd|^vWpQjKdIbIbIbKdQjYqkvz}uTlIbIbIbIbLeUm`yzazLeIbIbIbIbLec{ĨƩśkNfIbIbIbMfd~ũǤĠIbIbKdVne}e}^vWpQkLeIbIbIbIbIbKdWpjqx{|_vLdIbIbIbIbIbKe^xWpIbIbIbIbLd\t{XqIbIbIbMfd}¢–IbIbPie}jf}bxZrTnRlMgJbIbIbIbIbKdQjYqipw}x\tLeIbIbIbIbIbWp~~WpIbIbIbLd\swe~MfIbIbIbXpg[tZsIbIbQjgmjcz^v[v\vXrPiJcIbIbIbIbIbKdQjXrgpu|z`yUmLeIbIbLe_xWpIbIbIbSlsWpIbIbIbLed{bzMeIbIbIbIbKdVof~je{cza{b}b|]vRkJcIbIbIbIbIbIbKdPjSmUnVo_wyxayXqYraz|XqIbIbIbVnzyVnIbIbIbTlw`xMeIbIbIbIbIbIbKdTm`xcyd{ikkjd|UnKdIbIbIbIbIbIbIbIbIbIbLe`xYrIbIbIbVnzx[sKdIbKd[s{~`xLeIbIbIbIbIbIbIbIbJcOgPhUng~uvuulZsRkKdIbIbIbIbIbIbIbIbIbXqZsIbIbIbVo{~{lXpQjWoixsTmIbIbIbIbIbIbIbIbIbIbIbIbKdZqvxo]vVoTmLeIbIbIbIbIbLed|ZtIbIbIbVo||{zulgimpkRkIbIbIbJdOiQjOhJcIbIbIbIbIbVoz{yyyz||vayZqYqZrZsZse~ZtIbIbIbWp~}{xuqlljhazOhIbIbIbNh_{hc|UmKdIbIbIbLe`yx^xVoVoVo^xu}}y{ZtIbIbIbXq}uolhd~^vRkJcIbIbIbPjfnpiYrUnWpYrb{a{LeIbIbIbLeTmWpXpYqd{¤ĥã[tIbIbIbYr~|zqkhd|YrLeIbIbIbJcVmimsvux~ZsIbIbIbIbIbIbIbIbIbMeWo[sZs[t[t\uhåæœ\uIbIbIbZr~azXq^wrxqnj\vMfIbIbIbOgbwlmuzgMfIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbMfYq]v]v]w]viéŪǚjMfIbMff_xLeIbKd`y{rd}RlJcIbIbQgdxnqw{âĎkZrMfIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbMfjȭȨŐj]viÓe}LeIbIbIbZtŽrc|SlKdJbRg`ti|ow|êǨǟk_x_x^x^wZsMfIbIbIbIbIbIbIbIbIbIbIbIbIbIb^wȮǮǩĜäĆXpIbIbIbMefęŒ~rc{UmMdPfZocyhr{ëǮʱ̭Ǡk^w_w^w_x_xZtMfIbIbIbIbIbIbMflɰƯƮƭƫǫǪƙhMeIbIbIbWp}qczZqUkVl\sd|q{«ƮȱɳʲȱDZǰɰɫƝl_x_x^x_x_x_xlȲʱȱȰȮǬƬǪƕ]vIbIbIbIbZsof{^tYpZqf~oz¤©ĩŠƮȯȮǭǮȯȱɲʭǢDzɲʱɱɱɯȮɮȬǖ]vIbIbIbIbZs|mnmhd{mr|k_x_x_xlůȯȮǮȯȰɱʲɲ˲˲˲˲˳˴̵͵̴̲ʲʲʲʱɰʯɭȗ]vIbIbIbIbZsd}WoWohwzu{~f~\u]vYrMfIbIbIbMfkȯɯɯɰɰɱɲʲʲʲ˳˳̴̵̶ηϷε̵̵̴˲ʰɰɯə^wIbIbIbIbVpe~MeIbKdZsxxb{WpMeIbIbIbIbIbIbIbIb^w˰ʯɫƟʶζζζͷ̶̶Ͷ͵˳ʱɰȯȝjMfIbIbIbLed}[sIbIbIbXq}axUmLeIbIbIbIbIbIbIbIbIbMfk˲ˬȒk_x_x_x_x_x_xlòʶ˴˳˱ɯȪƌYrIbIbIbIbUoZsIbIbIbVoczLeIbIbIbIbIbIbIbIbNf[t`xlȲ˲ˠkMfIbIbIbIbIbIbMf[t`yay`y`x`xayn­ǰɰʠlNfIbIbIbLed|ZrIbIbIbMeeZrIbIbIbIbIbIbMfZs_xm°ɴ̳˳̝_xIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbNf[t`x`ymǯɐ[sIbIbIbIbVn~ZrIbIbIbIb[td|LeIbIbIbMfXqjó̺Ϲθ̷˴ʳʡkMfIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbMfZskȢmNfIbIbIbLed|d|LeIbIbIb[t d}[s[t[tfư˴̷κмлκ̶˴ˮȓk_x`x_x[sNfIbIbIbIbIbIbIbIbIbIbIbIbIbIbIbMfm²ɗhNfIbIbIbXpVoIbIbIbWpƫǯʲʴ˹λϻϺη̵˴ˮȡžm_x`x`yayayay[tNfIbIbIbIbIbIbIbIbazüгʑ[sIbIbIbMfgZsIbIbIbMee~Ÿ¢åŦĨūȮɱɲɶ˹κкзζ̵˴˵̸ϸηͱɣnayaybz]uNgIbIbNgpһΤmNfIbIbIb^v[tIbIbIbIb[tŸæƣØó̸Ϸζ˵˷̺ϻйθͶ˶˷̸̹ͺͻεʧ£˜pb{b{oҸ͚jNgIbNgniMfIbIbIbWqßh]v^w_w_x_x`xm˸ιιͺͺμллϹͷ˶˷̸ͺͺ̺ͻμϽниΪƥ¥ëƻҼΠrc|q̲̐ZsIbIbIbMfWpáßgYqMfIbIbIbIbIbIbNfl¹κλννϼϼѼе˥ö̼ϽоѾѽмнԿѱɫưȾмϥmNfIbIbIbIbģ̚e~WpMeIbIbIbIbIbIbIbIbIb_xͷ͹̻ͽ϶˧Ģn`x`y`yayayo¥ªŸͼнϽкϬǨũƩƪĪŰж˒[tIbIbIbIbazMeIbIbIbIbIbIbIbIbIbIbMflʹε̷͵˙nay\uNgIbIbIbIbIbNf\tbzazo̾Ϲ̜pb{b{b{c|c|rǫƫƫƯɺЦlMfIbMeWpb{MeIbIbIbIbIbMfXq\u]v^w^xkɳ̴ζͲʙiNgIbIbIbIbIbIbIbIbIbIbIbIbNgpþΩoNgIbIbIbIbIbNg^wd|c|c|c|rʕk^wigMeIbIbIbIbIbMeb{ƴ̴̷δ˙iNgIbIbIbIbIbIbIbIbIbIbIbIbIbIbbzΥazIbIbIbIbIbIbIbIbIbIbIbIbNgqǴˠÒ\vIbIbIbIbLeVoe}ũȬɰɲɵ̷͹ΩoNfIbIbIbIbIbNg]vb{\uNgIbIbIbIbNgpľϫpNgIbIbIbIbIbIbIbIbIbIbIbIbc|ƿҷͰȩħãÔgMfIbIbLe`xŦŧŭDzʶͻнѦbzIbIbIbIbNg\upÖpb{azazazp̾κ͞pb{b{]vNgIbIbIbIbIbIbIbNgsվѴʫƩŧƠe~YrYrcz ¡¡¨ĮɵͻѾҫpNgIbIbNgjǹϽѷΪƦĥååéŸοпϿкͫŨèÙpb{b{c|d|c|c|c|rѹͱʮɩȦŜġğų̺ϽиΛpazazpνѾѾҾҾҿҿҾҽѾѾѿоϿϿϾοѼέƧ¨ëƬƫƪŪŰѽ϶ͱ̩ȦşáŞïʷιͺͶ̪Ǥä©ŷͽмϼϽѽѾѾѾҾҾҾҾҿоοпϾοѾηͲTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-16_c2.tga0000755000175000017500000060005410145416156015476 0ustar cedriccedricOqoOroNspLurKvsIzwG~{EECBBBBBBBBBBBBBBBBBBBBCEE}zGwtGspIqnIqoKqoKrpMtrMwtOyvPzwP{xQ|yQ|zQ}{Q}Q}QQQQQQQRSTTTTTTS~S|R{R}{Q|zQ|zP{yP{yP{xP{xO{wO{wO{wOyuNwtLurLsqJqoHomFmkFkjDihChgChgChgChgChgChgDjhDjhDjgDjgCifCgdCebCc`Ba^B_\B^\B^\C_]C_]C`^C``Da`DbbDbcDccDdcDdcDecDecDdbDdbDdbDdbDdbDdbDecDecEfdEfdEgeEgeFhfFhfFhfFhfFhfFjhFkjFnlEqnEvsD{xD~DDBBBBBBBDEIKOPRRRRRRRR~R|Q~{P}{P}{O~{O|M~KIGEDBBBBBCEGKMQTVWXYYYYYYXVUUTS~R~{PzwOwuMsqKqpIonHomFqoEusE{yDCBBBBBBBBBBAA@@|?yu?ol?if?da?b`?`^?^\?\\@]\@^]A_^Ca`DbaDdaEdbEdbDdbDdbDecDecDfdFfdGgeIigJjhLljLljLljOqoOrpNsqLusKvtIzxG{EECBBBBBBBBBBBBBBBBBBBBCEE}zGwtGspIqnIqoKqoKrpMtrMwtOyvPzwP{xQ|yQ|zQ}{Q}P~PPPPPPPQRRSTTTTS~S|R{R}{Q|zQ|zP{yP{yP{xP{xO{wO{wO{wOyuNwtLurLsqJqoHomFmkFlkDljCkiCkiCkjCkjCkjCkjDljDljDmjDmiClhCjfCgdCebBc`Ba^B_]B_]C`^C`^C`_C`_Da`DbbDbcDccDdcDdcDecDecDdbDdbDdbDdbDdbDdbDecDecEfdEfdEgeEgeFhfFhfFhfFhfFhfFjhFkiFnlEqoEvtD{yDDDBBBBBBBDFHKMOQQQQ}Q}R}R}R~|R}{R|zP|zO}{N~{M|L~KIGEDBBBBBCEGKMQTVWXYYYYYYXVUUTS~R~{PzwOwuMsqKqpIonHomFqoEusE{yDCBBBBBBBBBBAA@@}?zv?rn?li?gd?ec?ba?`_?^^@_^@_^A__Ca`Db`DdaEdbEdbDdbDdbDecDecDfdFfdGgeIigJjhLljLljLljNrpNsqMtrKvtJxuH|yF}DDCBBBBBBBBBBBBBBBBBBBBCEE}zGwtGspIqnIqoKqoLrpLtrMwtNyvOzwP{xP|yP}zP~{P}OOOOOOOOPQQRSSSS~R}R~{Q~zQ|zP{yP{yPzxPzxO{xO{xN{wN{wNzvNxvMwuKusKtrIrpHqoFonFonDonCnmCnmComComConConDpnDpnDpmDpmColCmjCkgCieBgcBcaBa_B`^Ca_Ca_Ca`Ca`DbaDcaDcbDdbDecDecDecDecDdbDdbDdbDdbCdbCdbCecCecDfdDfdDgeDgeEgeEgeEhfEhfEhgEjiElkEpmDrpDxuD}zDCCCCBBBBCEFHJLMO~}P~}P~|P}|P}{P}zP}zP|yP|yO{yN{yN|zM~|L}KJHFDCCBBBBCEGKMQTVWXYYYYXXWUTTTS}Q}zOyvNvtLrpJpoHnmGnlEqnDurD{xC~CCCBBBBBBBBAA@@?~z?vr?pm?kh?ig?fe?db?b`?a_@a_Aa_Ca_CbaCbaDcaDcaCcaCcaDdbDebEfcEfeFgfHihIjiKliKljKljNsrNtrMutKxvJ{yH}FDDCBBBBBBBBBBBBBBBBBBBBCEE}zGwtGspIqnIqoKqoLrpLtrMwtMyvNzwN{xN|yN}zN~{N~MMMMMMMMNOOPQQQ~Q|P~{P|yO|xOzxNywNywNywNywN{xN{xN{wNzwNyvNwvMwuKusKtrIsqHsqFsqFtrDusCvtCvtCwuCwuCxvCxvDxvDxvDxvDxtCwsCuqCrnCnjBkhBgdBebBcaCcaCcaCc`Cc`DdaDdaDdbDdbDecDecDecDecDdbDdbDdbDdbCdbCdbCecCecDfdDfdDgeDgeDgeDgeDhfDhfDhgDjiDnlDrpDusD{yD~DCCCCBBBBCEFHHJK}{MzyNzyNzxNyxNywNyvNyvNxuNxuMwuLxvLyxK}zJ|IHFECCCBBBBCEGKMQTVWXYYYYXXWUUSSQ|O{xMwtLtrJpnHomFmkFmkEpnDtrC|yC~CCCBBBBBBBBAA@@??}y?xt?sp?qo?nl?ki?ge?fd?db@b`@a_AbaAbaBb`Bb`Cb`Cc`DdaDebEebEfdFgfHihIjiKliKljKljMtsMutLvuJzyI}{GECCCBBBBBBBBBBBBBBBBBBBBCDE~{FwuFsrGpoHpoHqoIrpKtrLurLwtMyuM{wM{wM}yLzK~JJKKKKKKLMNNNNO~O|N}{N{yNzxNyvMyvMyvMxwMxwMyvMyvMyvMyvMxuMvtLutJusJtrHtrGtrEvtExvCzxB{yB}zB}{B|B}B}B}B}B}B~{B}zBzwBwtBspAolAkhAgeAecBebCebDdaDdaDebDebDebDebBecBecBecBecBecBecBecBecBdbBdbBecBecCfdCfdCgeCgeCgeCgeChfCigDihDlkDonDtrCxuC~{CCBBBBBBBBBDEGGI~|JzyLwvLwuLvtLusLusKusKusKtrKtrJsqJusIxvI|zH}HGEECBAAABBCEGKNRUWWXYYYYXVVTTRRP~{NzwLvsKtpIpnGolEmkEmkDpmDsqC{wB}BBBBBBBBBBBBBBB@@@{@zw@yv@ur?qn?mj>ig>ec?ca?b`@b`@b`Aa_Aa_Ba_Ba_Cb`CcaDcaDecEgeGigHjhJljJlkJlkMutMwvLzxJ~|IGECCCBBBBBBBBBBBBBBBBBBBBCDE~|FxvFtsGqpHqoHqoIrpKtrLurLwtKyuK{wK{wK}yJ|IHHGGGGGGHHIKLLM}M|zL{yLywLxuLwuKwvKwvKxvKxvLyvLyvLxvLxvLwuLvtKvsJtsItsHutGwuE{yE}{CBBBBBBBBBBBBB|B{xAwtAqnAnkAkhBjgCheDgdDgdDgdDgdDgdDgdBfcBfcBecBecBfdBfdBecBecBfdBfdBfdBfdCgeCgeCheCheCgeCgeChfCigCjhCmkCqoCwuC|yCCCBBBBBBBBCCDEE~FzxGusGrpHqoHpnHomHomGomGomGonGonFomFroGusG{yF}EEDCBAAAABBCEGKNRUWWXYYYYXVVTRPP}N|yLxuJtqIqnGolEmjCljCljComBsqB{xB}BBBBBBBBBBBBBBB@@@@@@|?zw?tq>pn>jh>ge>db>ca>a`?a_?a_@a_@a_Ab`AcaBcaDecEgeGjhHljJnlJnmJnmMxvMzxL}zJ~HFECBBBBBBBBBBBBBBBBBBBBBBCDE}FywFusGrpHrpIrpIrqJtqKurKwtKyuK{wK|xK~zJ}HHFEEEEEEFFGIJLM|M{yLzxKxvKwtKvtJvuJvuJwuJxuKyvKyvKxvKxvKwtKvtJutIutHtsHvuGywE}{E~CBBBBBBBBBBBBBB~A}zAwtAspAolBnkCliDkhDifDifDifDheDheBgdBgdBgeBgeBgeBgeBfdBfdBgeBgeBheBheCifCifCifCifCheChfCigCjhBjiBmlBqpByvB~{BBBBBBBBBBBBBCCC|zCutDqoEnlFmkFljFkiFkiDkiDkiDljDljDlkDonDsrD{xD~DDDBBBBBBBBCEGKNRUWWXYYYXWUUSQO~{O}zMyvKvsIroIqmGokDmiBkiBkiBnlArqAzwB|BBBBBBBBBBBBBBBAAAA@@?~?{x>vt>on>ki>fe>ed>cb>b`>a_?a_?a_@b`@caAdbCfdEigGkiHmkJomJpnJpnM{{M}|L}JHFECBBBBBBBBBBBBBBBBBBBBBBCDE}FywFvtGsqHsqIsqIsqJtqKurKwtKyuK{wK|xK{JHFDCCCCCCDDEGHJK}|KzxKywKxuKwtKvtJvuJvuJwuJxuKyvKyvKxvKxvKwtKvtJutIutHtsHvuGzyE}ECBBBBBBBBBBBBBBAA~{AzwAvsBtpCqmDolDmjDljDkiDkhDifBheBheBgeBgeBgeBgeBhfBhfBigBigBjgBjgCkhCkhCkhCkhCjgCjgCjhCjhBjiBnlBrqBzwB|BBBBBBBBBBBBBAA~|AxvApn@lj@igAhfBgeCfdCfdBfdBfdBgeBhgBihBnlBsqB{xB}BBBBBBBBBBBCEGKNRUWXXYYXXWUSQO}M|yM{xKwtItqGpmGokEmiDliBkiBkiBnlArqAzwB|BBBBBBBBBBBBBBBAAAA@@??>{>wt>qo>ki>hg>dc>b`>`^>a_>a_?b`AdbAecChfEjhGmkHomJqoJrpJrpN}}N~MKHFDBBBBBBBBBBBBBBBBBCCCCCCDDE}FzwFwtGtrHtrItrItrJtrKurKwtKyvK{xK|yK|JHFDCCCCCCDDEGGI~J}{JzxJywJwuJvtJvtKvuKvuKwuKxuKyvKyvKyvKyvKwtKwtJwtIvtHusHwuG{xE~ECBBBBBBBBBBBBBBBBB{B{wDytDupDrnDolDolDmkDliDjgBifBgfBgeBgeBgeBgeBhfBhfBigBjhCjiCkiDliDliDliDliDjhDjhCjiCkiBliBolBsqB{wB|BBBBBBBAAAAAA@@|z?vs?nk?ig?ed@ec@ebAdaAdaAcaAdbAfdAhfAhfAmkArpAzxA}AAABBBBBBBBCEGKNRUXYYYYYWVTSQO|M{xMyvKvsHtqFpmEnkDliDkhBkhAkhAnlAspA{xB}BBBCCCCCCCCBBBBBBBBAA@@??|x?ws?pl?lh?fc?b`?`^?a_?a_@b`AdbAecCgfEjhGnlIqnKspKtqKtqPPNKIEDBBBBBBBBBBBBBBBBBCCCCCCDDE|F{xFwtGurHusIusIurJurKurKwtKyvK{xK|zK~JHFDCCCCCCCCDFGI~J}{JzxJywJwuJvtJvtKwuKwuKxuKxuKyvKyvKyvKyvKwtKwtJwtIwtHwsHzuG}yEECBBBBBBBBBBBBBBBBBB~D{D{wDxsDuqDtrDrpDonDmkBkiBigBhfBhfBhfBhfCigCjhDkiDljElkEmkFnkFnkFnkFnkEmjDkjDkiCkiBliBplBtpB|xB}BBBBBBBAAAA@?>|>wt=qn=if=db=a_>a_>a_?`^?`^?`^?b`?db?ge?if?nk@tq@|yA~AAABBBBBBBBCEGKNRUXYYYYXVTRQO~M~zK{wKyvIvtHtqFpmFnkDliDkhBkhAkhAnlAspA{xB}BBBCCCCCCCCBBBBBBBBAA@@??~?}y?uq?pm?jg?ec?b`?b`?ba@cbAedAgeCjhEljGpnIspKurLvsMvsQPNLJFDBBBBBBBBBBBBBBBBBCCCCDDEE~F{G{wGxuHvsIusIusJusJusJvsJxuKzwM|yM}{MKIGEDBBBBBBBCEGI}J}yJzwJyvJxvJwuJwuKxuKxuKyvKyvKzwKzwKywKxvKwuKwtJwtIwtHxuH{wG~{EECBBBBBBBBBBBBBBBBBBDD|D}yDzvDyvDvtCsqComBmkBkiBjhBjhCjhCjhDkiDljEmkEnlFnmFomGpmGpmGplGnkFmjEljDljDljCljCpmBtqB|yB~BBBBBBBBBA??=|<{v^]?_]?a_>db>hf?jg?pm@ws@{@@AABBBBBBBBCEGKMQTWXXXXWUSQQO~L}zJzvJxuHurGspFolEmjDkhDjgCjgBjgBmkArpAzvA{AAABBBBBBBBBBBBBBBBAAAA@@@}@zu?up?mj?ge?cb@dbAdbAdcBfeBhgDljFnlHrpJurLwtMxuMxuQQOMJFDBBBBBBBBBBBBBBBBBCCCCCEFH|H}zHyvHxuHvtIvtIvtJvuJvuJwuJywK{yM}{M|MKIGEDBBBBBBBCEGI}J}yJzwJyvJyvKyvKyvKzwKzwK{xK{xKzxKyxKyxKxvKwuKwtJwtIwtHxuH{wG~{EECBBBBBBBBBBBBBBBBBBDDDD}D|D|yCxvCtrBrpBnlBmkBljCljDljDmkEnlFomFpnGpoGqoGroGroGrnGpmFolEmlEmlDmlCmkCqnBurB}zBBBBBBBBBBA?>~ec>jh?nk?uq@{w@@@AABBBBBBBBCEGKMQSUVVVVUSQOOM~|L|yJyvIxuGvsFspFolEmjDkhDjgCjgBjgBmjAqnAwtA}yAAAAAAAAA@@BBBBBBBBAAAA@@@@~z?yu?qm?kh?fd@fd@fdAfeChgDjiFnlHpnJtrLwtNyvOzwOzwRRPNKGECCCBBBBBBBBBBCCCC~C~C~D~D~E~F~F}G}{H{yHywIxvIwuJwuJwuKwuKwuKxuKzwL|yL~{M|MLJHFECBBBBBBCEFH}I|yKzwKzwKzwLzwLzwM{xM{xM|yM|yL{yL{yLzxLxvKwuJwtIwtIwtIyuI|xH{FECBBBBBBBBBBBBBBBBBBBBBBBB~B}zBwuBtsBpoCnlClkDmlEmlEnlFplGpmGroHspHspHspHspHrpHpnGomGnlFnlDnlCnlCqoBusB}zBBBBBBBBAA@>=~z;tq:mi:ea9`]9ZY8WV8VU9XV;ZX<\[<^]<_^hf>nl>ro>zu?z@AAAABBBBBBBBBDFJLPRTUUUUTRQONL~{L{yJxvIwtGtqGroEolEmjCkhBigBifAjfAmiApmAvsA|xAAAAAAA@@@@AAAABBBBBBBBAAAA|@zv@rn@mi@heAgeAgeBhfDjhEljGpnIrpKvtMxvOzxO{yO{yRRPNKGECCCBBBBBBBBBBCC|C}yC{wC{xD{xE{xF{xG|yH|yH|xIzxJywJwvJwuJwuKwuKwuLxvLxwMxwMzyL{{L}M~MLJHFECBBBBBBCEFH}I|yJzwKzwLzwMzwM{xM|yM}zM|yM|yL|yL|yL{xLyvKxuJwtIwtIwtIyuI|xH{GFFECBBBBBBBBBBBBBBBBBBBBBBBB}zBzwBvsCrpCpnDpoFpoGqnGqnGroGtqIurIurIurIurHtrHrpGqoGpnFpnDpnCpoCsrBwuB{BBBBBBBBAA@>{mk>tq>yu>|?@AAAABBBBBBBBBDFIKMPRSSSSRPOMLJ{I}yIzwHyvHwsGtqEpnEnlCljBjhBhfAheAjg@mj@sp?xt?~z?~?????>>>>?@@ABBBBBBBBAAAA@~y@vr@qm@liAkiCkiDkhFmjGnlIrpKtrMxvOzxQ|zQ}{Q}{RRPNKGECCCBBBBBBCCCCD}D|yDxwDvuDwuEwuFwuGwuHyuIyuIyvJyvKxvKxvKxvKxvLxvLxvLywLywNywN{yM||M~N~NLJHFDBBBBBBBCEFH}I|zJzxK{xL{xM{xM{xM}zM}zM}zM}zL}zL|zK{yKywJxvJxuJxuJxuJyvJ{xIzH~GGFDCCBBBBBBBBBBBBBBBBBBBBBBA{A{wBwsDuqDtqFtqGtqGtqHvsHvsIvsIvsJvsJvsIusIsqHrpFroFroDrpCsqCwuB{yBBBBBBBBBB@?=|x;tq9if8a^6YV6VS6RQ7RQ7RQ8TR:XV;]Z;b`{v?{@AAAAAABBBBBBBBCEFHJLNPQQQQPNMKJH~G|G}zG|yGzwFwtDspDpnBljAkhAif@he@if?kh>ol>so=ws@@@AABBBBBBAAAAA|AzvAuqApmAolCnlEnkGomHpnJtrLvtNywP{yR}{R~|R~|RRPNKGECCCBBBBCCCCDE}F|zFxvFusFsqFtrFtrGtrGtrHusIvsIwtJwuKxvKxvKxvKxvLxvLywMzxM{yN{zN}{N|N~NMLJHFDBBBBBBBCEFH}I|zJzxK{xL{xM{xM{xM}zM}zM}zM}zL}zL}zK|yKzwJyvJyvJyvJyvJyvJ{xJzJ~IIHFFDCBBBBBBBBBBBBBBBBBBBBBAA}B~zDzwEyvGwtGvtIvtJxuJxuJwtJwtKvtKutJtsHtrHtqFtqFuqDwsCwuC{yB}BBBBBBBBBB@?=zv;rn9fc8][6UT6SQ6QO7PN7QP8SR:YW;^[;eb}?@AAAAAABBBBBBBBCEFHIK~L~N~OOOONLKIHFEEE~E{D|xDwtCspColBli@hf@ge>fe>fe?AAABBBBBBAAAAAA|AzwAvsBtqDroEqnGqnHspJvtLxvN{yP}{R}R~R~SRQMKGECBBBBBBDDDDEF{G{xGwtGtrGspFtqFtqGtqHtqIurIwtJxuJxuKxuKxuKywKywLywMywMzxN{yO{yO}{O}OONMKHFDBBBBBBBCEFH~|I{zJyxK{xL{xM{xM{xM|yM|yM}zM}zL}zL}zL|yL{xKzwKzwKzwKzwKzvK|xJ~zJ~JJIGFDCCBBBBBBBBBBBBBBBBBBBBBBC}E}yF{xHyvIxuIxuJxuJxuKxuKxuKwuKvuJvtHtrHtrFurEwsEyuD{xC|BBBBBBBBBBA?>vr?~y?@ABBBBBBBBBBAABBCEEG~}I~|K~{L~{L~{M}MMLKIIGFFEEEED|CzwBwsAqnAlj@hf@ge>ec|x??@ABBBBBBBBBBAABCCD}{EzyFxwGxvIxvJxvKzwK{xK~|J~IHHGEDDCCCCCC|B|yBvsAqo@lj?jh=fd:ca8`]8^[6[X4YV2UT1TR1RP1SP1SP1TQ1YV3_\6if8qm;|x=??ABBBBBBBBBBBBBB~{C{xEwtFurHurIwtKyvMzwO|yQ~{S}S~S~SRQOMIFDCCCCDFGGHHH|H}xJ{wJyuJxtJvsIusIusIusIusJusJwtJxuJyvKyvKzvK{wK|yL|yM|{M}|N~|O~}O}O~OONMKHFDBBBBBBBCEEG~{H{wIxuJxuKxuLxuLyvLzwL|yK}yK}yL}zL}zL}zL}zL|yL|yL|yL|yL|yL}zM~{M}MMLJHFECCCBBBBBBBBBBBBBBBBBBBCDFGI|J}zL{yM{yMzyMywMywLywJywJxvHvtHvsFwtEyvE}zD~CBBBBBBBBAA@@?=yvnl?@AABBBBBBBBAABD~D{F{wGxuIwtIxuKzwM{xO}zQ|S~S~S~SRQOLJHFEEEEFHIIJJ~J{J}yJ}yJ{wKzvKxuIwuIwuIwuIwuJxuJxuJyvJyvKzwK{xK|xK|yL|zM|{M}{N~|O~}O~OOONMKHFDBBBBBBBCEE~G|xHyuHvsHvsHvsIvsJwtKxuKzwKzxK|zL}zL}zL}zL}zN~{N~{N~{N~{M}{M}{M~|M|M}MLJJHGEECBBBBBBBBBBBBBBBBBBBCDFGI~K|M}{M}{M|{M{zMzxLyxJxvJxvHvtHvsFwtEywE|DCBBBBBBBBAA@@?=zvur+><+><+?>-DC/JH1TR3\Y7ie9to@AABBBBBBBBAABDD}F}yGzwIyvIyvKzwM{xO}zQ|S~S~S~RQPNLJHFFFFFGIJJJJ~K|K~zK~zK}yK|yKzxIzwIzwIzvIzvIyvIyvIzvIzvJ{wK{xL{xL{yL{zL}{M~|O}P~PPPPOMKHFDBBBBBBBCDE}F{wFwtGtqHsqIsqJsqJtrJusJwuLywL{yL|yL|yM}zN~zO{O{N|N|N~|N~|N|N|N|N~MKKIGEEDDCBBBBBBBBBBBBBBBBCCDFGI~J|L~{M}{M|{M|{MzyLzxJxvJwvHvtHvsFwtFywD|CCBBBBBBBBBBAA@>{w=tp;if;a_9YX8VU8TS9SR9US:WU:^\;ec=pm>xu@AABBBBBBBBAAAAAA}AzxAtrBrpBnlClkDkjEkjEmjEnkEpmEqnEurEywE}DDCCBBBBBBBBBBA@~z?{x=tq:lj6b`4ZY0PO.IH,BA+??+<<+;:+;:+<;,A?.GD0PN2VU6ca8mk;zv=}?ABBBBBBBBBBBCEE~G}zGzwIyvIyvKzwM{xO}zQ|S~S~S~R}Q}P}N}L{J~{I}{I}{H~{H|H}HIKLLL}L}K}K}K|K|K|K|I{I{I~zI~zI}yI}yI}yI}yJ~yK~yL}zL}{L~|L|M}O}P}PPPPOMKHFDBBBBBBBCDE}EzwFvsFrpFqoFqoGqoIrpIsqKusLwuLywL{xL}zM~{N|O}O~PPO~O~O~O~N}N}M~K~KIIGFDCCCCBBBBBBBBBBBBBBCCDFGIK~M}M}M~|M}{M{yLzxJxvJwvHvtHusFwtFzvD|CCBBBBBBBBBBA@@?}x>vr>kh=ca;[Z:XW:VU:UU:WU:YV:`\;gd=qn>yv@AABBBBBBBBAAAAA}AywAtrAomBljBigBhfBgdCgeCifCjgCliCmjCqnCvsC|yBBCCBBBBBBBBBBA@?={x:ro6ec4\[0PO.GF,>?+<<+:9+87+87+87,<;.B@0JH1ON4ZY6ec:sp<{x?ACBBBBBBBBBBCEE~G|zGzwIyvIyvKzwM{xO}zQ|S~S~S~R|R|Q|O}zN|yL{wK{wI{wI{wI{yI|zI}{J~|L}M~M~M|M|L}L}K~K~JIHHH~H}H|H|H|H|I}J}J}K}L~L~M~O~P~PPPPOMKHFDBBBBBCCCCD}D{wEvsEroEqnEpnFpnHpoHrpJtrKwtKyvL{yL}{M|O~PPPPPPOO~O}O}N}L}L}JJHGEDDDDBBBBBBBBBBBBBBBDEGHJLN~O}O|O~|N|zM{yKywKxwIwuIvtGxuE{wC}CCBBBBBBBBBBA@@?}y>ws=mi=fc<^\;[Y;XW:WV:XV:YW:_];gd=qn>yw@AABBBBBBBBAA@@@}z@ur@om@jhAhfAfdAebAd`Ad`AebAfdAhfAigAnkAspA{xA}AAABBBBBBBBBBA@?=};us7ge4]\0ON-EE+<=*:;*88*66*65*65,:9->>/ED0JH3US5`^9nk;xs>@BBBBBBBBBBBCEE~G}yGyvIwtIxuKyvMzwO|yP~{R}R}R}R|R~{Q}zO{xNzwLxuKxuIxuIxvIxvIywI{yJ{yL}{M~|M~|M~|M}L~LLJIHHHFFFFFFGGHJKMMOPPPPPOMKHFDBBBBBCCCCC}C{wDvsDroEqnEpnFpnHpoHrpJtrKwtKyvL{xL~|M~OOQRRRRQPO~O|N}{L}{L}{J~|I}IHGFFFFECBBBBBBBBBBBBBDEGIKMOOO~O|O~zN}zL{yKzxIxvIwuGyvE|yC~CCBBBBBBBBBBA@??~z@xt@ok?he>a^=^[<[Yzw@AABBBBBBBBAA@@{?yu?pm?jh?ec?db?b`?a_?`^?`^?a_?b`?db?ec?jh?pn?xvA~}AAABBBBBBBBBBA@?=;zv7kg4`]0PO-EE+<<*::*77*55*55*56,99-=|@BBBBBBBBBBBCEE~G}zGzvIwtIwtKwtMxuOzwP|yR~{R~|R~|P~{P~{O}zO{xNywLwuKvuKvuJvvJwvJxwJzwKzxL|zM}{M~{M~{M}LLKIHHGFEEEEEEFFGIJLMOPPQQQPNLIGECCCBBBBBBB}BzwCvsDroEqnFqnFqnGqoHrpHtrIwuKzwK|yM|N~PQQRRSSRPP~N|N}zL|yL}yJ}zI}{I}I~IHHGGFDCCBBBBBBBBBBBDFHJLMOOO~O}O~{O}{M{yLzxJxvJwuHyvF|yD~DCBBBBBBBBBBAA@@{@yu@pm?ig>ba=`^=^\<\Z<\Z;\Z;a_sp>{x@AABBBBAAAA@@??~z>wt>nl>hf>ca?b`?`^?^]?^]?^]?_^?`_?ba?ca?hf?mk?wu@~{ABBBBBBBBBBCCBAA?<{w8ki5a^1QO.GE,><+<;+98*76*76*87,;:.>=0DB0GF2RP5\Z9jg;so={?AAABBBBBBBBCEE~G|xGxuIvsIwtKwtLxuNzwO|yQ~{Q~|Q~|P}{P}{O|zOzxNywLwuKvuKvuJvvJxvJxwJywKzwLzwM{xM}zM~{M}MKIGFFEDCCCCCCDDEGHJMOPPQQQQOLJFECCCBBBBBBBB|yCyvDusEtrFtpFtpGtpHtrHvtIwwJ{yK}{M~PRSSTTSSRPPN|N}zL{xL{xJ{xI|xI|yI}zI|J}J~I~IHFFDCBBBBBBBBBBDFHKMNOOOOO}O}O}{N|zLzxKywI{xG~{EECBBBBBBBBBBAABB~zByvBqnAji@dc?b`>`^=^\<^\=^\=ca=if=sp>{x@AABBBBAAAA@??~>yv=sp=kh=ec=`^=`]=^\=][=\Z=\Z=\Z=][=^\=_]=db>kh>ur>|y@ABBBBBBBBBCCBAA?<}y8mk5c`1SQ.IG,@>+>=*;:*98*98+:9-<<.??0DD0HF2QO5ZY9ge;ql=~x?AAABBBBBBBBCEE|GzvGvsItqIurKurLvsNxuOzwO|yP|zP|zP|{P|{O{zOyxNywMwuMvuLvuKwuKwuKxvKxvLyvL{wL{xL|zM}zM|LJIGFEDCBBBBBBCCDFHJLNOQRRRQOMKGECCCBBBBBBCC|C|yCyvDxuExsEwsFwsFwsHxuJywL{yL}{NQSTTUUTTSQPN}N~{L|yK{xKzxJzwJzwJ{xJ|yJ}yJ}zJ}zJ~|I~GGEDCCCBBBBBBBDFIKMOPPPPPOO}O~|M|zK{yI}zG|EECBBBBBBBBBBBBCC}yCyuBqoAlk@fe?dc>b`=`^=_]>_]>da>jg>tp?zw@@ABBBBBBA@?>>|{=tszw@AAAAAABBBBCCBAA?<~z8ol5da1TR/IH-@?,?>+<<+::+::,<;.>>/AA1ED1GF3OM6XV8db:mi=yu?}AAABBBBBBCCCCD|FzvFwsHtpHspJspKtqMvsNxuPzwP{xP{xP{{P{{OzzOyxNxwMxuMxuLxuKwuKwuKxvKxvLxvLxvLyvL{xK|yK|JHGEDBBBBBBBBBCCDEFHKMOQRRRRPNKGECCCBBBBBBCCC~C|C{C}yD|xFzvFyvHywJ{yL}{M}OQSTUUUTTSQPNN~}L|zK{yKywJxvJxvJyvJyvJywJywJxwJzxI|zG|G~EDDCCBBBBBBBDFILOQRQQQQPPO~M|L~|J}H~FECBBBBBBBBBBCCC}CzwCwtCqnBljBhfAfd@db@b`?a`>a`>ec>kh>sp?zw@@ABBBBBBA@?>}{>vu=nm>,<<-<<.>=/@?0CA0FD1HF3OM6WU8a_:hf=sq?|xAAABBBBBBCCCCC~zCxtDupFrnFqnHqnIroKtqMvsOxuOyvOyvP{zP{zO{yO{xNywMywMywLywKywKywKyvKyvKxuKxuKyvK{xJ|yJ|IGFDCCBBBBBBBBBBCEFHJLNPRTSSQNKGECBBBBBBBBBBBBBB}C|E~zG|yI{yK|yM~{N}PRTUUUUUTSQPNM~}K|zJ{yJywIxvIxvJxvJxvJxvJxvIxuHyvG{xG}zG~{GFEDCBBBBBBCEGKMOQRRRRRQQPN~M~KIGFDCCBBBBBBBBDDD~{DxuDurDpmCliBheAfd@db@ca?c`>b`>fc>lh>tp?zw?@@AAAA@@@@?}>yv>sp=li<z8ol6da2US0LJ.CB-B@-?>-=<-=<.>=0A?0DA2GD2HF4OM6VS8_\:ebyt@}@ABBBBBBBBBBB~zCxtDsqEpnEpnGpnIqoKsqLvsNxuNyvNyvP{xP{xO{yO{yNywMywMywLywKywKywKyvKxvKvuKvuJwuIyuHzwG}zG}FEDDCBBBBBBBBBBCDDFHLNPRTSSQNKGECBBBBBBBBBBBBBBCE~G|I~{K~{M}NPRTUUTTTRQONLKI|H}{H{yI{yIywJywJwuJvtJvsIvsHvsGwtGyvGzwG~{F~EDCBBBBBBCEGKMOQRRRRRQQPNNLJHFDCCBBBBBBBBDD|DzwDurDspDolDliDifCheCfdBec@eb?eb?he>lh>tp?yv?~@@AAAA@@@@~{?zw>ro>li=fc|>??@@AABBCCBA@><z8ol6da2US0LJ.CC-BB-@@-?>-?>.@>0B@0DA2GD2IF4NL6UR8]Z:a_tp@z@ABBBBBBBBBB~B}xBurCqnCnlCnlEnlGomJqoLtqNvsNwtNwtOzxOzxNzxNzxMxwMxwLywLywKyvKyvKxuKwuJvtIvtIvtHvtGwuF{wF~{EDCBBBBBBBBBBBBCCCEHLNPRTSSQNKGECBBBBBBBBBBBBBBCEG~I|K{M}OQRSSSSSRPOMLJIIH~H|H|zHzxIywIwuHvtHtrHtrHtrHtrHvsGwtF{xF|EDCBBBBBBCEGKMOQSSSSSRRQONLJHGEDBBBBBBBBBC~D}xExsEsoErnEplEmjEkhDigDgeCfdAfd@fc@he?kh?qn@vs@}y@~@AAAAAA@{>xu>sq??@AABBBA@><{8pm6ec2WU0MK.DD.CC.AA.@?.@?/A?/CA0FC2HE2IG4NL6SP8[W:_\ro@|y@~ABBBBBBBBBB}A{xAsrBomBljBljDljFmkIomKroMtqMurMurOxvOxvNxvNxvMxuMxuLxuLxuKwtKwtKvsKusJtrItrItrHtrGusFyuF|xE~DCBBBBBBBBBBBBCCCEGKMQRTSSQNKGECBBBBBBBBBBBBBBCEGI~K~MOQQQQQPONNMKJHGGFFF}F~{G{yGxwHvtHtrHrqHrqHrqHtqGurFyvF}zEDCBBBBBBCEGKMOQSSSSSRRQOOMKIGEDBBBBBBBBBC{DzuEuqEqnEpnEnlEmjEkhDjgCheBhdBgdBgcBhe@jg@nk@ro@wu@zx@~{A|A|A|A|A{A|w@vt>pn>lj<{8pm6ec2WU0MK.DD.CC.AA.@?.@?/A@/CB0FD2HF2IG4ML6RP8XW:][pm@zw@}ABBBBBBBBBB}AywAqoBmkBjhBjhDjhFkiHmkIpmKroKspKspNwuNwuNwuNwuMwtMwtLwtLwtKvsKusKurKtrKsqIsqHsqGsqFtrEwuE{xD~CCBBBBBBBBBBBBBBBDFJLPRTSSQNKGECCCBBBBBBBBBBBCDFGIKMNPPPONMLLKJJIGFFFFEE}F~{GzwHwuHtsHrrHrqHqqHsqGtrFxuF}yEDCBBBBBBCEHJLNQSTTTTSSRPPNLJHFECCCBBBBBBC~{CxuDtpDpmEomEmkEliEkgEjgEieDidCgdBgdBhfAjgAljAnmArqAusAxu@yv@{v@{v@zv@yu@ur?ro>li=ifpl@zv@}ABBBBBBAAAA|AyvAqoAmkAjhBjgDjgEkhGmjIolKqnKroKroLusLusLusLusKurKurJtqJtqIspIrpIqpIqpHqoHqoGqoGqoGqpEtrDwvB|zB~BBBBBBBBBBBBBBBBDFJMOQQQPOMKGECCCBBBBBBBBBBBCDFGIKMNNNNMKJIHGFFFFDDDDEEF}G|yHxvHusHtqHrqHrqHrqGtrFxuF}yEDCBBBBBBCEHJLNQSTTTTSSRPPNLJHFECCCBBBBBB|C|yCvsDrpDomEnlEmkEljEkiEkhEkgDkfCifBgfBgfAhgAjiAkjAmlAnmApn@rn@rn@rn@pn?om>mj=jg=fc=c`=_\<[Y;XV:WU:VT9US9US9US9US8US8SQ7RP6PN6OM5NL4NL4NL3OM3OM3PM3SO3VR3YU3ZW5a^7he9so;{v>@BBBBBA?<{8pm6ec2WU0MK.DD.CC.AA.@?.@?/A@1CB2FE2IH2JI4NN6SR8ZY:_]rn@|x@}ABBBBBBAAAA|AxvApn@kiAheBheDheDifFkhGmjIolIpmIpmKsqKsqKspKspJspHspGroGqnGpmGpmGomGomFomFomFnmFnmEomDqoDtsCxwB|zBAABBBBBBBBBBBBBDEIKNPPPONLIGECCCBBBBBBBBBBBCDFGIKMMMMLKIHGFEDDDDCCCCDEFG}zHywHutHtrHsrHsrHsrHtrHxuG|yEECBBBBBBCEGKMOQSSSSSRRQOOMLJIGFEDCBBBBB~B}yCzuCtqDqnDnlEnlEmkEljEljDljDljDkiDihChgChgBhgBhgBihBihAjiAki@lj@lj?ki?jg?if?gd>eb=a_<_\;[Y;YW:WU9VT9VT9US9US9VT9VT8VT8TR7RP7PN6OM4NK3MJ3LJ2KJ2KJ2KI2LJ1ML1PN1RO3YV5a^8mj:vq<}?ABBBBA?<{8pm6ec2WU0ML.DC.CB.A@.@?.@?/BA1ED1GF3JI3LJ5QO7VU9^\:c`uq@z@ABBBBBBAA@@~|?wu?om?jh?gd@gdBgdDgdFifGkhGmjHnkHnkKqoKqoKqnIqnHpmFnkEmjEmjEliEliEkiEkiDkiDkiDliDliCkiCmkBpoBtsAwuA|yA}ABBBBBBBBBBBBBDFHJLMNNMLJIGECCCBBBBBBBBBBBCDFGIKMMMMKIGFEDCBBBBCCCCDEFGzH{wHwsHvrHurHurHurHvsHyvG|yEECBBBBBBCEGKMOQRQQQQPP~O}O}O}M}L}JIGFEDCBBB~B{B|yBxuCusCqoDonDmlEnlEnlEnkEnkDmlDmlDlkDjiCihCihBhgBhgBgfBgfAfeAfe@ge@ge?fd?eb>da=b_=`\<\Z;ZY:XW9WV9VT9VT9VT9VU9VU9WU9WU8WU8US7SR7QP6OM4MK4LK2JI1IH1GF1FD1FD1GF1IH1KJ3RQ5[Z7if9so=|?ABBBBA?<{8pm6ec2WU0ML.DC.CB.A@.@?.@?/AA1EE1IH3MK4NM6TR8ZY:ca:if{v@@ABBBBBBAA@@~|?wu?om?ig?ec@ecBecCecEgdFifHkhHliHliKpnKpnJomHmkHmkFkiFjhDjgCigCigCigCigDigDigDjgDjgCjhBljBmlApo@sq@xu@|y@~AAAAAAAABBBBBDEGJLNNNMLJHFECCCCCCCCCBBBBBCDFGIKMMMMKHFECCCBBBBBBCCDFFH{I{xIwtIvsIusIusIusIvtIzwH}zFFDCCBBBBCEGILNPQQQQQ~P~O|O~{N~{M~{M~{L|J}I}G~FFE~D~D}C{BzB{xBxvBtrCrpConCnmCmlDolDolDnlDnlDnlDnlDmkDkiCkhCihChgChgChfCheBfeAfd@fc?fc?eb>ca=b`<`^<^[;\Y:YX9WV8VU8UT8UT8UT8VV8WV9XV9XV8XV8VT7TS5RQ4ON4ML3LK2JI1IH1GF1ED1ED1GE1IG1JI3QP5[X7if9ro=}?ABBBBA?<{8pm6ec2WU0NK.ED.DC.BA.A@.A@/BB1FF3II5NM5QO7XV9^]:gf:lka^=`^<^\<\Z;ZX:YW9WW8WW8WW8XW8ZY8[Z8][9^[9^[8^[8\Y7[X5WV4TS4PO3NM2KJ1IH1GF1ED1ED1FD1HF1IH3RP5[Y7if9ro=}?ABBBBA?<{8pm6ec2WU0NK.ED.DC.BA.A@.BA/DC1HG3LK5RP6US8^\9fd;pn~{?AAABBBBBBAA@@~{?wt?ol?jf?eb?cbAcbBcbDecEgeGigGjhGjhJkiJkiIkiGigFhfDfdBec@ec@db@db?db?db@fb@fb@fc@fc@ec@ec@fd@fd?fe?ih?nl?tr@xu@{@@@@AABBBBCCDFGII|I|zIzxIzxH{yG}{F}EDDDDDDDDDDEEEEEEFHIKLNNNLJHFDBBBBBBBBBCCDFGI}J}zJzxJyvJxvJxvJxvJzwJ|yI~{GGEDDCCCCDFGIJLMNNN~N|N}zM}zM{xLzwLzwLyvLyvKyvIyvIyvGyvFxuFvsEvsEtqDtqBroAqnApmApmApmBqnBspBspBurCvsCvsCvtCvtDvtDusDsqDqoCpnCnlCljCjhCjhChfBfdAdb@db?b`?a^>_\=^\=\Z<[Y:YW9XW9XW9YX9[Z9][9a]9c_9ea:eb:eb9eb9d`8c_6_[5[W5VS4RQ3MM3JI2FE1ED1ED1FE1HG1II3RP5[X7if9ro=}?ABBBBA?<{8pm6ec2WU0NK.ED.DC.BA.AA.CA/EC1JH3NM5UT6ZX8ca:livs=nk=he=da>ca@caAbaCdcEfeGhgGihGihIigIigHhfFhfDgeBec@ec>ca>b`>b`=b`=b`>da>da>da>ca>b_>a_>a_>a_=`_=cb=ge=mk>po?xv@{@@@AABBBBCDDEFF|G{yGwuGvtGutFusEwuDzwD~{D}DDDDDEEFFGGGGGGHJJL~MNNNLJHFDBBBBBBBBBCCDFGI~I~zK|xL{xL{xLzxLzxLzwL|yK{I~HFEEDDDDDFGIJLMNN~N|N~{N|yN{xLyvKxuJxuKwuKwuJwtIwtHwtGurGtqFroEpnEnlDmlBljAliAliAnkApmBroBvsByvB{xC|yC~yC~zC~zD}{D{yDxwDvtCtrCqoComCljCjhChfBfdAdb@db?b`?`^>^\=][=[Yz?AAABBBBBBBBBBA?{x>tq>li=fc=b_=a_?a_Ab`CdbEfdGhfGigGigHigHigGhfEhfCgeAec@ec>ca=b`=b`=ba=ba>ca>ca>b`>a_>a_>`^=_]=_]<^\<`^tq>{w?@ABBBBBBBBCDEEzFywFutGtsFsqEsqCtrCvtCzvC|xC~zC~zC|D}EFFGGHHHHIIJJKMNOOOMKIGECCCBBBBBBCCDFGIJ|L}yM{xM{xM{xM{xM|yM|yL}zJ|I}GFFEE~E~E~EGH~J~KMN~N~M~M|M~{M|yL{xKyvJxuJxuJwuJwuIvsHvsGvsFtrFrpEpnDolDmjCliAkh@kh@li@mk@qoAtrAzvA}zA}B~B~BBBB}B}zByvCwuCsqCpoClkCkiCigBheAfd@ed?cb?a`>_]=][<[Y<[Y;[Y:ZY:\[9__9ec:ig{x=tq=kh=eb=a^=a_?a_@a_BcaCecEgeFhfFhfHigHigGigEigChfAhf@ge>ge=fd=fd=fd=fd>fd>ec=da=b_<_]<][;\Z;ZX:ZX:\Z:_];dbpm?wu?}@ABBBBBBBBCDE~E|xEwsEroEqoEomDolDolCqnCspCvrCxtCxtCzvD{wF}yF}yH{I{I}J}JJJKKLLM~M~N~NOOMKIGECCCBBBBBBCCDFGIJ{L}yM}zM}zM}zM}zM}zM}zL~{J~{I~|G~|F~|F~zE}yE|xE{xE{xE|yG|yH}yJ~yK~zM{N|N|M{M~{M}{M|yL{xKyvJxuJxuJwuJvtIusHtrGtrGrpFpnDmlDkiBigBhf@hf?ge?ig?mj?spAxuA{AABBBBBBBB|C|yCwuCsrConCmlCjhBhfAfd@ed?cb?a`>_^=^]<][<][;][:^]:ba;gf;mlzv?{???>>~=|;zv;sp9ig8c`6YW6RP4KJ3II2HI2II2KK2ML4TS5]\9jh;tq?}@BBBBBA?=|:qn8ge4XW1NN/EE.DB.B@.A@.CB/ED1LK4US6a_8ig:vs={?@ABBBBBBBBAAAA@~>wt=pmmj=lj=lj=ki=kh=kh=if_^=^\=^\<_]~?@@@??><|~@BBBBBA?=};ro9hf5ZX2PO0GF/DC.BA.A@.CB/ED1ML3VU6ca9li@ABCCBBBBAA@@@@?|y=sp^\@_]Ba_DdaFfcFgdFgdHmjHmjGnkEpmCqnAsp@tq>vs=vs=ur=tq=sp=sp=pmba>gd>mi>uq?{xABBBBBBBBBBCC}C|yCvsCspCmkBihAfe@ed?cb?a`>_^=_]=a^vt>~|??@@@@AA?=<{:sp:lh8`]7WV5PO5NM5ML5NM5PO5RQ7YX9c`;ol@BBBBBA?=};ro9hf5ZX2PO0GF/DC.BA.A@.CB/ED1NL3XU6fb9ok<~y>@ABCCBBBBA@@?>=zx=tq^\@_]Ba_DdaFfcFgdFgdHnkHnkGpmEspDurByvA{x?}z>}z>}z>|y>{x>zw>ur=pm;he:b`8[X7WT7SQ7SQ7VU8[Y:ca;jg=uq>}y?@ABBBBBBBBBBCyCwrCqmCliBjhBhfBgeBgeBhfBjhCliDnkEnkFpmFrnGtpHtqIvsJvtJxvJyvJ{xL|yL|yL}zL~{M~{N|O}O~O~OPPOMMKIGFDCCBBBBCCDFGI~I}K~{L{L{L|L}M~M~L}K}{J|zJzxIwuGusFtqFroFqnFpnFpnFqoGrpItrIvtKxvLyxL{yM|yM|yN~}}Nz{IsqGqoGonEmkEjiChfBfd@db@ca>ca=ba=fd=li=uq>|x@AABBBBBBBBBBB~{BxuAurAomAjhAfd@dc?ba?a_>_]=_\=a^=eb=kh=ol=vs>{y>??@@AAAA@>=};ur:mj8a^8YW6RP5QO5OM5OM5QO6TR8\Z:da@ABCCBBAA@??>=}z^\@`^Bb`DcaFecFfdFfdHomHqnGsoEwsD{wB|A@@@??>>}z=vs;li9da7\Y6WT6SQ6RQ7VU8\[:fd;mk=yu>}?@ABBBBBBBBBB~A}xAupAokAjgAhfAfdBecBecBfdBhfCjgDliEliFnkFpmGroHroItqJurJwtJwtJyvLyvL{xL|yL~{M|N|O}O~O~OPPOMMKIGFDCCBBBBCCDFGI~J|J|K}K}L~LKKKK}J}|JzyIxvGurFtqFroFpmFnkFnlFnmGpnIrpItrKvtLxvLzxM{yXimctʉcIsqGqoGonEmkEjiChfBfd@db@ca>ca=ba=fd=li=uq>|x@AABBBBBBBBBBB~B|xAwuApoAkiAfd@db?b`?`^>`^=`^=da=hf=pl>uq?}y@@AA@@AAAAA?>@ABCCBBAA@@?~=zv]\@`^Bb`DcaFecFfdFfdHpmHroGuqEzuD~zBAA@@@@@>~<|w:pl8gd6]Z5WT5SP5RQ6VU7\Z9fd;ol={x>?@ABBBBBBBBBB}@|x@tp@nk@if@ge@ecAdbAdbBecCgeCigDkiEmjFolFqmGsoHspIurJurJwtJwtJyvLyvL{xL|yL~{M~{N}O~O~OOOONMMKIGFDCCBBBBCCDFG~I}J}J}J~JKKJJJJI}H~zHzxGvtFtqFqmEolEmjEmkEmlFnmHpoHrqJtsJwuLywMzx]\\tO}}gItqGroGpnEmlEjiCgeBec@ca@b`>b`=a_=ec=ki=ur>}y@AABBBBBBBBBBBB}zAxuApn@jh@ec?ca?a_?a_?a_>a_>ec>kh>sp?zv@~@ABBBBBBBBB@>~{@AABBBBA?=~;tq9kh7][4SQ2JH1FE/BA/A@/AA/CC1LL3UU6dc9pm<{>@AABBAA@@??}>{w\[@_]Ba_DcaFecFecFecHpnHrpGvrE|xD}BAABBA@@><|:tp8jg6^\5XU5SQ5SQ6WV7^\9if;sn=z>?@ABBBBBBBBBB}@{x@rp@lk@gf@fe@ecAdbAdbBecCgeCigDkiEnjFplFqoGsqHsqIurJusJwuJwuJywLywL{yL|yL~{M~{N}O~O~OOO~O~N~M~M|K|I|G|F}D~C~CBBBBCC~D}F|G~{I~{J~|J~IIIIHHHHGF~F~zEyvDvsDroColCmjDmjEmjEnlFpnGrqGtsHwuJywKzxWuL{xggItqGroGpnEmlEkiCgeBec@ca@b`>b`=a_=ec=ki=ur>}y@AABBBBBBBBBBBB{AxvApn@jh@ec?ca?a_?a_?a_?ca?hf@nk@wsA}zAAABBBBBBBBB@?=|x=sp;if:a^:[X:ZX:ZX:\[:`_;ed;nl~{>@AABBBBA?=;vs9mj7_]5US3LJ2HG0DC/CB/CB/ED1LK3VT6db9ok<}y>@AABBB@?>=}=yu][@_]Ba_DbaFdcFdcFdcGpnGrpFusF{yE~CBBCCBAA?=};uq8kh6_]5YW5TR5TQ6XV7_\9jg;tp=|?AAABBBBBBAAAA}@zw@ro@lj@ge@fd@dbAdbAdbBfcCheDjhDljDolDqnErpFtrGtrHvsHvtIxvJxvJzxKzxK|zL~zM|M|N~OOOOO~O~N}L{L}zJ{xH{xF{xF|zD|zC}zC~zC{C{C{C{DzEzEyF}yG{yH{{I}}IHHHHGGGGFEE~D{xCwtCspBomBmkCmjCmjDnkFpmFspHurIwtIyvJzwJzw}݉ggPHurGspFroEnmDkjBgfBec@ca?b`=b_}y@AABBBBBBBBAAAA|@yv@qn@jh@dc?ca?a_?a_?a_@c`@heAnkAwtB~{BBBBBBBBBBBAA@>|x=sp;if:c`:]Z:\Y:\Z:^]:dc;ii=sq=zx??ABBBBBBB@>@AAAA@@?=}={w;ro;kh9c`8`\8ZX7VU7SS8ST8TT9UT;WV;ZX=\Z?^\A`^Ca`EcbEcbEcbFonFqpFusF|yE~CBBCCBAA?=;xt9pl7da6]Z5WT5WT6ZW7`]9kg;tq=}?AAABBBBBBAAAA}@zw@ro@li@gd@fc@dbAdbAdcBfeCigDkjDolDqnDtpEvsExuEyuGzwHzxJ|zJ|zJ~|K~}K}K}K}L~LMMMMMM~L|J}zJ{xHxvHvuFutFvtDvtCusCusCwtCwtCwtCwtDwtEwtExtFxvGxwGzyH}|HFFFFEEEEDCCB|A{xAwtBspBqnBpmBpmCqnDspEvrFxtFzvG|xH|yH|yQoZI}zcgRHzwGxuFvsFurEqoDmlBihBgf@eb?ca=a_|x@AABBBBBBBBAAAA|@yv@qn@jh@dc?ca?a_?`_?b`@da@jgApmAyvB}BBBBBBBBBBBAA@@|x?uq=kh????>>=|;xt;so9jf8c`8\Y7YW7UT7SS7RR8SR8TS9UT;WV;ZX=\Z?^\A`^Ba`DcbDcbDcbFnlFqoEtsE|yD~DCCBBBBB@><|y:tp8hf6a_5[Y5YV5[W6`]8jg;tq=}?AAABBBBBBAAAA|@yv@qn@ki@fd@db@cbAcbAedBfeBjiCmkCqoDrqDvtDyvD{xE|yG~{H{H}I}IJJJJJJKKKKJJJ~J|zJzxHvtGsqFqoEqoDqoCpnCpnCqoCqoCqoCqoDqoErpEsqFusGvtGywG|zGFEDDDDDDCCBBA|A|xAxtAvrAurAurBvrCxtDyuE{wF}yH{H{H}I~MMUZI|H|G}zG{xFyvExuDurCrnAmjAig?ec?ca=a_ge>ca>ca>ec>ig>qm?wt?}@@AAAABBBBB@?=zv=ro;fd9]\7TS6QP4ML3JJ2JH2KI2QN4WS6a]7hd9rn;yu=|>}>>>>~>~z=yu;qn:li8da7_\7YW7WU7SS7QR7QR8SR8UT9WV;YX;[Y=][?_]Aa_BbaDdcDdcDdcEljEnmErpEzxD~DCCBBBBAA@>~hf>ca<_];_];b_;gc;pk~??@ABBBBBBBBA@~{?xt?ol>hf>ba>a`>a`@ba@dc@hf@olAvrA~zBBBBBBBBBBBBBBBB{AxuApnAmjAif@if@li@qm@yuA{AAAAAAABBBBBA@?}x>ur=jh_\>a^@c`AdaAfcBfcBfcChfCkiColCwtB~zBBBBBBBBBA??=|x;uq9kg7eb7a^7b_9gd:olig>db<_];][:_]:d`;lh}z??@ABBBBBBBBA@}y?wr?nj>he>ca>a`>a`@cb@gf@kh@roAxuA}BBBBBBBBBBBBBBBB{CyvCspColCmjBmjBpmBtqB|xB}BBBAAAABBBBBBAA~yAws?mj>fd<_]<][:YW:VS8TQ7TQ7VR7WT7YW8[Y9_]9b_:da;da;fc;gd;hf:hf:gf9fd9db8a_8_]7][7[Y8ZX8ZX8ZX8\Y8]Z8_\9`];b_da>fc@heAhfAjfBkgBkgCfdCigCmkCusB}zBBBBBBBBBA@@>~{>~>>>>>>??|@|x@vr@ro@li@if@fcAecAecAecAgeBigBnlBrqBywB|BBBBBBBDDDDDDDDDDDDDDDDC}CzwCurComAmkAigBfdBdbAcaAcaAdbAdbBdbCfdCgfDjhEljEroExuE}CCCCBBBBBBBBAAAABBBBCCCCCVZCvvCcBBBBA@{x?tr>ki=ec;_]:^\:^\:a_:ge;nk=xu>|>?@@ABBBBBBA@|y?ur?lj>gd>b`>a`>cb@ed@ih@mk@urA{xABBBBBBBBBBBBCCCC|DzwDtqDqoDomCpmCspCwtC~zBBBBBBBBCCCCCCCC~yBxtBplAif?c`>a_<][kh>kh@mjAnkApmBpmBpmBdbBgeBkiBsqB{xBBBBBBBBBA@@><{:uq9mi7eb7b_7b_8fc:jg;nj;rnws>uq?qm@nk@jg@he@fcAecAecAgeAigBkiBpnBtsB|yB~BBBBBBBBBBBBBBBBBBBBBBBAA~{AxuAroAolAig@ec@b`?a_?a_?a_?a_?a_AcaBecDhfDjhDpmCwsC{CCCCBBBBBBBBAAAABBBBCCCCCL|Gvvc^BBBBA@}{?wu>mk=fd;_]:\Z:\Z9^\9ba:gf:po;wv=~>@AABBBBBBA@|x?up?kh>fd>ba>ca>ec@hf@nj@rn@zvA|ABBBBBBBBBBBBCDDE}zFyvFurFspFqpErpEusDyvD|CCCCCCCCCCCCEEEE}zDyuDroCmjAheAec?b`>`^>^\=][<\Z;[Y:[Y:ZX:ZX9[Y9[Y:[Y:][:`^:db;gd;kh;lj;nk:nk:nk:nl:nl;nk;nk;ok;ok;pl;pn=qn=sp=sp=ur>vs@vsAwtAwtBxuBxuAcbAfdAjhArpAzwAAAAAAABBAAA?=|;wr9oj7eb6`^6_]7a_8da9gc9ie:if:kh:mi:oj:ok:ol;plol>mj?kh@if@geAecBecBfdAhfAjhCkiCpnCurC}yB~BBBBBBBBBBBBBBBBBBBBBBBAA}@|x@tq@pn@jh?ec?b`?a_?`^?_]?_]@_^Aa`AdbBheCigColCvsC~{BBBBBBBBCCCCBBBBBBBBBBBBBBvډFBBBBA@~{?xu>nk=gd;_]:\Z8ZX8[Y8_]9b`9jh:ro<|x=~??ABBBBAA@>{w=sp=kh=fc=c`>da@fcAjgApmBurB}zBBBBBBBBBBBBDDDDF~F}xFyvFusFsqFqqErqEutEzwE}DDDDDDDDCCDEFFF~F}xEyuDsoDnjCjfBhfAedAca@a_?a_?`^>_\<]Z;\Y;\Y:\Y:\Y;\Z;^];a`;ge{x?{y?|y@}zA~{A~{A|A|@a`@cc@gf@on@vt@|@@AAAABBAAA?=;{v:so8ie7b`6][6]Z6]Y7\X7\X8\Z8^[8_\8`]8a^8b`9c`:eb;fche?fc@fc@fdAfdBfdBhfCjhCljDmkDrpDwtD{BBBBBBBBBBBBBBBBBBBBBBBBAA@|@xu?sp>ki=fd=a_=`^=^\=][=][>][?_]?a_@dbAfdAliArpA{xB~BAABBBBCCCCBBBBBBBBBBBBBBFm̈́qKBBBBBA@}?|x>rn=kf;b^:][8YW8XV8ZX9][9db:li{w=so=jf=eb=c`>ea@ieAmjAuqB{vB~BBBBBBBBBBBBCEEGH|H|wHyuHusHsrHsrGtsGwuFzxF}EEEEEEEEEEFGHHH~H}yGzvFvrFrnEnkDljCjhCigBgeAgeAec@c`>a^=`\=^[<^[<^[;^\;a_;ec;li}x>|>|>~>>>>>>????@@@@AAAA?^^?aa?de?lk@rp@|x@@@@BBBBBBB@><~{;xt9mj7ec6^\6\Z6YV5VR5TP5UQ5UR5US5VU6WU6YW7\Y9^[9_];a_ea>eb@fc@fdBgeCgeCigDkiDmlDomDtrDxwD}CCCCBBBBBBBBBBBBBBBBBBBBBBA~@zv?tq>ki=ec<`^=^]=\[=[Y=[Y=ZY=\[=^]=a_>ca?hf?nm@xuA~{AAAAAAABBBBAAAAAAAABBBBBBBBBBBBBBBBBBA@?~z>uq=nj;da:_\8YX7WU7WU7YW8_^9fe;ro?ABBBBAA@>zv=rm=je=da=b`>db@jgAolAwtB~yBBBBBBBBBBBBBCEEG~H{H{wIyvIvtIusItsGutGxvG{yG}FFFFFFFFFFGIJJJ}J|yIzxHvtHsrGqoFpnEnlEljDkhCkhCifBgd@d`@b^>`\=_\=_\<_\uq>}y>~>????????@@@@AAAAAAAA?\\?^^?aa?gf?mj?ur?|y?@ABBBBBBAA@>=~z;sp9jh7a_7\Z5US4PN3LJ3LI3LI3LJ3LL3NN5QP6TR8WU8YW:\[<^]>a_>b`@db@fdBhfBigDkiEmlFonEqoEvsE{xE~DDCCBBBBBBBBBBBBBBBBBBBBBBA?|x?tq=jhtq?{x?@@AAAAAAAAAAAAAAAABBBBBOvvvvvvvvvvBBA@?>zv=rn;hd:b_8[Y7XV7VT7WU8\Z9ca;ol?ABBBBAA@>yv=rm=ie=da=b_>da@jgApmAyvB|BBBBBBBBBBBBBCEGI~J{J{wIyvIwtIvsIvsIvtIxvI|yI}HHHHHHHHHHIKLL~L|L}zK{yJxwJutIsrHsrGrpGpnFolEolEmjDjgBfcBda@b_?a^?a^>a^>eb>kh>sp?yw?@@AAAAAAAABBBBAAAAAAAA?\[?^]?a`?ed>ih>qo>xv>~?@@ABBBBBBA?>}a^>b`@dbBgeDigDjhEljFnlFpnFqpFvtF{xF~EDDCBBBBBBCCAAAABBBBBBBBAA@>{w>tqvr?ABBBBA??=yvc`?ebAkhBqnByvB}BBBBBBBBBBBBDEGHJ~J{J{wJyvJwtJvsJvsIwuIywI{xI|IIIIIIIIJJKKLLL}L~{L{yLywKwuJusIusHsqHroGpmFpmFnkEliCheCfcAdaAc`?c`>ca>hf>nk>vs?}z@@ABBBBBBBBBBBBBBBBBBBB?[Z?\[?]\?a_=db=ki>qo>zx?}@@ABBBBBBA@@>z`^>b`@ecBgeDigDjhEmkFomFrpFsqFxtF}xF~FFEEDDDDDDCCBBAABBBBBBBBAA@>{w>tp|>????========????@@@@AABBBBBBBBBBBBBBA?>|x?ABBBBA??=yvc`?ebAkhBqnBzwB~BBBBBBBBBBBBDEGHJL}L|yK{xKyvKxuKxuKxuKzwK|yK~{K~KKKKKKKLLMMNNN}N~{N}{N{yMzwLxuKwuJusJurItpHspHqnGnkEliEjgCheCgdAgd@fc@jg@pm@xu@|@AABBBBBBBBBBBBBBBBBBBB=YX=ZY>\[>^]=__=ed=lj=vt>}z@AABBBBBBAAA?=zw;mj9eb5YV3PM1GF0EE/CC/BB/BB0DD2HH4LJ6PN8RQ:VU<[Y>_]?`^AdbAgeCjhCkiEnlFpnFsqGtrGxuG}yG~GGGGFFFFFFEDCCBBBBBBBBBBAA@>{w=tp;jf;b_9[X8YV8VS8SR8QP7QP7QP7RQ7TS7TS7XW8][8ec9kh;sp{>}??@NTTUUUUUFBBBBAA@@?|=trda?fcAliBroB{xBBBBBBBBBBBBBDEGIKM~M~{L}zK{xKzwKzwLzwL{xL|yL~{L|L~LLLLMMNNNNOO~O~O|O~|O|zN|zMzxLzxKxvKxtJvrIurIspHqnFolFljDjhDigBifAifAliAqnAyvA|AAABBBBBBBBBBBBBBBBBBBB=WV=XW=YX=ZZ<[[<``=gf=rp>zx@AABBBBBBAAA?=|;ro9ie5\X3RO1IG0FE/BB/@@/@@0BB2FF4JH6NL8PO:TS][?`^AdbAgeCjhCkiEnlFpnFsqGurHyuI}yIIIIIIIIIHGGFEDCBBBBBBBBBAA@>{wfc?heAnkBtqB|yBBBBBBBBBBBBBDEGIKMM}L|L}zL|yL|yL|yL|yL}zL}zL~{L|L|L}M~NOOPPPPOOO~O~O}O}N~|M|zL|zKzxJzwJxuJxuJvsItqGroFpnDnlCmkCkiBkhBnjAqnAyvA|AAABBBBBBBBBBBBBBBBBBBB=VU=VU|_]@caAfdCigCjhEmkEomGrpHtqHxuI|xI}JKLLLLLLKIIGFDCCCCCCBBAAA?>yv>qnyu@AABBBBAA@>{w=ro=jg=gd?fc@hfBnlCtrC|zCCCCBBBBBBBBCEFHIKLM~M}M}{M|zM|zM|yM|yM}zM}zM}zM}zM~{M|N}N~O~OPPPPPPPPO~N~~N~}M|{L|zKzxJyxJyvJyvJwtIurGspGroEpmEnlCljBliBnkAroAyuA{AAAAAAAAAAAAAAAAAAAAAAA=TS=TS{w>spqo>yv@AABBBBA@??{w?sq?ki@hfAheAjhBpnCvsC~{CCCCBBBBBBBBCEFHIKLMMM}N~|N~|M~{M~{M}zM}zM}zM}zM}zM}{N~|N~OOPPPPPPPPO~N}N~}M~|L}{K}zJ|yJ|yJ|yJzxIyvGwtGwsEuqEroCpmBolBpmAroAwsA|xA~AAAAAAAAAA????????AA@@~?ABBBBBBBBB@?=}y;vr9jf7a]5VT3PP1JJ0GF0FD1GF3IH4KJ6OM7QO9US;YW=][<^\>b`@ecBhfBjhDmkFomHrqHtrJxvK|yM}M~OPPQQQQPNNLJHGEECBBBBAAA?>{w=sp=ifzv@AABBBBAA@@{x@tq@lkAigAhfBjhCpnDwtD|CCCCBBBBBBBBBDFHJLMNNNN~N|M|M{M~zM~zM}zM}zM}zM}zN~{N~}O~O~PPPPPPOON~M~M}L}K}J}I|I|I|I|H~{G|yF{xFyvEwtCspCqnApm@pm@tq@xu@}z@}@@@@@@@@@????????@@@@;PO;PO:QP:RQ9RR9WW9_^;kh|?ABBBBBBBBAA@>~=}y;rn9ie7^[5XV3QP2ML2JI2JI3LK4NM6PO7RQ9VU;YW=\Z<^\>a_@caBgeBigDmkFomHrqHtrJxvL|yN}N~PQSSSSSSQPNNLIGECBBBBAAA?>,>=,>=,=<+<;*;:);:):9)98)98)98)98)89)89*::*<<*==,@?.BA0EC0GE2LI4QN~T`S^{^BBBBBBAA@>{w=tp=kgso?zv@@ABBBBAA@@{x@uq@nkAkhBjhBljCrpDwuD|CCCCBBBBBBBBBDFHKMOPPPON~M~M~M}M}{M}zM}zM}zM}zM~{M}N~O~PPPPP~P~O}O}N}L}L}J}J~HGGGGEEE~E~{D{xDwtCtqAqn@pm@qn?sp?vs?wu?yw>zw>zw>{x>{x>{w>{w>zv>yv=xu=xu=xt=xt=xs=xs=xt=xu>xv>xv?xv?xv:PO:PO9QP9RQ8SR8XW8^^:jh|??@ABBBBBBBA@>=|;vs9nk7ca6^\4VT3QO2ML2ML2ML4ON6QP7SR9WV:ZY<\[<]\>_^?b`AfdAhfCljEomGspHtqJxuL|yN}NPQSTTTTSSRQPNLHFDCCBBAAA?>-=<,=<,;:+::+98*88)76(65(65(65(65(65(65(65(77)99*;;+<<,?>-A@/DB0EC2JG4OKR|sZmBBBBBAA@??>{v=to=kg=fc=b`=b`=ec?jg?ro?zw?@@AAAAAAAA|xAurAolBliCkiCmkDsqEwuE}DDCCBBBBBBCCCEGILNPQQQPPOML~L~|L}{L}{L}{L}{L~|L}M~N~O~O~O~O~O}O}N|N|M|K|K}IIGFFEEEEDC~C{ByvAur@qn@ol?nk>ol>qn>qo>so>tp>tp>tq>tq=sp=ro=ro=qnpm>pm>pn>pn9NM9NM8ON8PO8QP8VU9\[9fe:nm@@ABBBBBBBBA??=|;wu9mk8he6`]5ZX4VT4VT4VT5VU7XW7ZX9\Z:]\<^^<^]>`_?baAecAgeCkiEolGspHtqJxuL|yN}NPSUUUVVUUTSRPNJHFDBBBAAA?>.A@/BA1FD3KH5PN@cfFpv9caEy|`aaOBBBBBBAA@??|>xt=rn=jf=fc=b`=b`=ec?jg?ro?xv?~@@AAAAAAA}AzvAurAomAmkCmkDpnFurFywF}EDCCBBBBBBCCCEFJLOQQQQPPOMMKJ~J~J~J~J~J~K~L~M~M~M}M|M~{M~{L~zL~zL}zL~{K}IGEDDCCCCBBBB~yAzv@tq@pm?mj>li>kh=jg=jg=|;wt:qn8if7da7`]6_]6_]7_]7a_8a_:b`;caca@ecAfdCjhEnkGroHsqJwuL|yN}PRTVVVWWWWVUTRPLJFECCBBA@@?=xu=+<<+::+:9+87*65)43(32'10&0/&0/&0/&01&11&12'22)44*66*88+89+:;,==.??.@?0DB2HF4MK4QO@fjT;igxu>~{@AAAAAA@@??}>{x>sr=nl=hf=db=b`>b`>ec?ig?om?ur?}z@@AAAAAAA|AyvBtqBpmBolDolErnGwsG|wF~ECBBBBBBBBCCCEGKNPRRRRQOOMLJIIIIIIJKL~L|M~{M|zM|yM|xL{wL{wKzwK|yJ|HFDCCBBBBBBBB}A~z@xt@so?nj>lh=he=ecfd@fdAgeCigEljGpnHsqJxuL|yN}PRTVVXYYYYXWVTRNLHECCBBA@@?=xu-?>,>=+=<+;:+;:+98*87)65(54'32&21&21&22&22&33&33'44)66*66*88+99+;;,==.??.@?0DB2HF4LJ4NLLs}k?|y@}z@~{@~{@~{@}z@{y>zx>wu>tr>nl=jh=ec=b`=a_>b`>db?ge?mk?qo?wu@{x@|A}A}A}A}A|A}zAzwAvsAspCqnDpnFrnGtpGytG~yFECBBBBBBBBCCCEGKNPRRRRQOMKJHGGGGGGHIJ~J|K|yKzwKyvKwvJwuJwuIxuI{xH~{FFDCCBBBBBBBBA@|y@vs?om>kj=fd=b`<_];_];^\;]\;][:]Z:]Y:\Y:ZX9XW9VW9UV9UT9US9US:US:UT;WU;WW~@AABBBBBBBBB@?==~=}yge@ge@geBigDkjFonHrpJwtL{xN}PRTVWYZZZYXWWUSOLHFDCBAAA@?=xv-?=,>=,><+=;*;:*;9)97(76(54'43'43'54'54(65(65)65*77*88+::,;:,=<-@>/B@/CA1EC2HF4LJ4NL;Z[~\?wt?wt?wt?vt?us?sr=sq=qo=nl=jh=fd=b`=`^=`^>a_>ca?fd?jh@nl@sp@vs@yvAzxA{xA{xA{xAzwAxuBvsBspCqnComDpmFroGuqHzuH~zFECBBBBBBBBCCCEGKNPRRRQPNLJHFFFFFGHHIJ~J~zJ{wJxuJwtJusJusJusIvtIzxH}{FECBBBBBBBBBBA@}@yw?qo>mj=gd=b`<_];^\;][;\Z;\Z:\Y:\X9[X9YW8XV8VU8UU8UT8TS8TS9TS:TS:UT;VU@BBBBBBBBBAA@@??>>>>>>~>~>{>{x>ws=so=ok>ki@ig@igBjiDkkFomHroJwtL{xN}PRTVWYZZZZYYYWSOLHFDCBAAA@?=xv*@=*@=*@<*><+=<,<<,<=->=.?=/A?/B@0DB1EC1GE2IG4LJ4NL;YZn8][eEux`=mi>mk?ml?ml?lk?li=ki=ig=ge=ec=ca=a_=`^=`^>a_>ca?ec?hf@jh@nl@pn@rpArpArpAsqAsqAspBsoCroDpmEpmFpmFroGtqHwsH|wH|HGEDDCCBBBBCCCEGKNPRRRRPMKGFDDDDDEFFGH|H{xHxvHtrHsqHqoHqoHsqGtrFxvF}yEDCBBBBBBBBBBA@@~{?us>pm=he=c`<^\;][;[Y;ZX;ZX:ZW:ZV9YV9WU8VT8TS8SS8SR8RQ8RQ9RQ:RQ:SR;TS?AAABBBBBBBBAA@@@@@@@@??>>}y>yv>sp?om@kj@jiBjiDljFnlGqnIvsLzwN|PRTVWYZZ[[ZZZXTPMIECCBAAA@?=xvfe>gf>gf>ge>ge=fe=fd=ec=ca=b`=`^=`^=`^>a_>ca?ec?ge@ig@ki@lj@nlAnlBnlComComBomComDpmEpmEpmEqmFroHuqIxtI}yI}IHHGEDDCCBBBBCEGKNPRRSQOMKGECCCCCDDEEF}FzwFvtFrpGpoGomGonGqnFroEwsD{xD~DDCCBBBBBBBBA@@~?xv>ro=jg=da<^\;\[;ZY;XX;XW:XV:XU9WU9UT8US8SR8RR8RQ8QP8QP9QP:QP:RQ;RRb`>ba>ca>ca=db=db=ca=b`=a_=a_=b`=b`>ca>ec?ec?ge@ge@ig@jh@jhAkiBkiCkjCkjCkjCmjDnkFolFolHqnHtpJxtKzvK~zK~KJJIGGEDBBBBBCEGKNPRRSQOMKGECCCCCDDCCD{DwuDrpDnlEmkEmkEmjEolEpmEuqDyvD|DDCCBBBBBBBBA@@?{x>uq=kh=da<^\;\[;YY;XW;VV:VV:VV9UU9UT8TS8SR8SR8RQ8QP8QP9QP:QP:RQ;RQ@ABCCBBBBBBBBBBBBBBBB@@@@@@{@zw@tqAqnColDnkFplGrnIvrLzuN~{P~RTVWYZ\]]]][XUQMIECCBAAAA@>yw=qo;ec8[Y6QP4MK2GF0DC.BA.AA.DD.IH0QN1VT3^\3cb5hf6hf6jg6lh6lh5kh5ig5if5hd5gc5d`4`]3ZW2UT2ON1KK1HH1GG1GE2GE2GE2GF3IH4KI5MK5NL:XXNvz?cd;^\=`^>`^>b`>ca>da=db=db=ca=ca=ba=ba>cb>cb?dc@fc@fdAhfBigBigAihAihBjhBjhCkiCkiDkjDmjEnkGplGpmIroJurJyuK{vKzL~LLLKIHFECBBBBCEGKMOPQRPNLJFDBBBBBCCCCD}zDusDpnDljEliEliEliEnkEolEtpExuE{DDCCBBBBBBBBBBA?|y?vr=li~@ABCCBBBBBBBBBBBBBBBBAAAAAA@}@zwAvsCroDqmFqmGrnIvrLyuN~{P~RTVWYZ\]]]][XUQMIECCBAAAA@>zw=rp;fd8\Z6RO4MK2GF0DC.BA.B@.GE/MK1WU3_]5ig7po9wu:xu:zw:|x:}x:}x:|w9{v9yt9xt9tp8ok6gd6a_4YX3TS3ON3ML3KJ3JH3JH4JI4LJ5MK5NK5OL5PNMq{smFjq7US^>^_;YW;\Y=`]>b_>da>fc>ge=ge=ge=hf=hf=gf=gf>hg>ig?ih@jh@kiAkiBljBljBkjBkjCljCljCkiCkiDkjDmjEnkGpmGroIurIwtKzwL{yN|NNNNMKJHGEDDDDDFHJMOPQRPNKIFDBBBBBBBBB~B{yBsqBnlBjhCjgCjgCjgCliEmjErnEwsE}yD}DCCBBBBBBBBBBA?|?yv=ol{w=sp;gd8]Z6SQ4NL2HG0ED.CB.CA.HF/OM1[Y4dc8ro:{v<}======<<<<|;zv9rn8li7ca6]Z5VT4SR4PO4ON4NM5OM5OM6PM6PM6PN6PN6RO6RO5RP5RP6SQ8UR9VS;YV<\Y<`]=d`>hd?jg?li>lj>lk>ml>ml>ml>ml?nm?om@pn@pn@pn@pnApoBpoBonCnlDnkDmkDljDljDlkDmkEolFqnFspHvsJxuL{xM}zO}OOPPOMLJIGFFFFFGHJMOPPPOMKHFEDCBAAAAAA~AzxArpAmkAhfCgeCgeCgeCigDjhDolDtqDzvC~yCCCBBBBBBBBBBA?~?}y=sp{w=sq;ge8][6SQ4NM2HG0ED.CB.DB.KH0RP3`^6kh:yv<>??@@@@????><}y;xt9ol9he7`^6\Z6WV6TS6RQ7SQ7SQ7RP7RP6QOLq{Lp{5PO5POFhoGiq9TR;XVZt=he>nk?qn?tq?ur?vs?wt?wt?wt?wt?xu?xu@xv@xv@xv@xvAxvBwtBvsCtqDrpDpnDolDnlDnmDnmEomFqoFspHvsJxuL{xM}zO}PPQQQONLKIHHHHHIJLMOOOOMLJHFEDCBAAAAAA|AxvApnAjiAfdAecAecAecAgeBhfBljBpmBurCxuC~{CCBBBBBBBBBBA??=yv|x>trus?????@@AAAAAABBBBBBBBBBBBC}{CwuDsqFqoFrpHtrJwuL{yM{OQSUWY[\\\\[XUQMIECCBAAAA@>|x>tq@ABCCBBBBBBA??=|{x|>~????@@AAAABBBBBBBBBBCCD~|DxvEtrGrpGsqIusJwtL{xM~{OQSTVXZ[[[[[YUQMIECCBAAAA@>|y>us>~b^>`^?_^?_^@a_@ca@fd@jhAljAqoAvsA~{BBBBBBBBAAAA@@?|=ur~@AAAABBBBBBBBBBCCD~|DxvEtrGrpGsqIusJwuL{wL}yN}PRSUVXYYZZ[YUQMIECCBAAAA@>|y>ur>}a_>_]=]\=]\>^]>`_>ba>ec?ge@lj@roAzwB}BBBBBBBAAAA@@?=yvTS>TS=SR;SR:RQ8RO7QO5OM5NL5NL5OM5OM5OM5QO5US5YW6\[8a`9ec9hf9ig9ki:mk;qm==|=}y=zv=yu=tqxv@AABBBBBBBBBBBBBBBBBBBBBB}C~zCzxDxvFvuGvuIvuIxvK{xM}zO~OQRRQQQQPPOONN}N|N|O|O|O}O~NLKIHFECCCBBAAAA|@xv?om?ig>b`=`^=^\<\Z<\Z>][>_]>a_>ca>ec>jh?pm@xuA~{ABBBBBBBBBBAA@>zw=tp;jf;c_9\X9ZW7VT6SQ6QO5PO5ON4NM3NM2MM2MM4LL6LL7MM7MM8NN8NN>UT>UT=US;US;TR9TR8SQ8QO7PN6PN5OM5OM5NM5OO5QP5SR5UT5XW7[Z7]\7]\7_^8b`:fc;he=nj=so?zw?|ABBBBBBBBBBBBCD}E}yFwuFtsGrqHsqIusIvuJzxJ|zL}NPQQRSTVWWWVTRPLIFEDCCBBA?{w?tr=jh;b_9YV7UR5OM3LJ1JH1IG1NL3US6a_8jh@@AABCCCCBBBBAA@@??????{>yvyv@AABBBBBBBBBBBBBBBBBBBBBBCD}{DzxEvuFtsFtsGvtIyvK{xM|O~QRRQQQQPPOON~N|N|N|O|O|O}O~NLKIHFECCCBBAAAA~@{y?rq?lk>ed=ca=_]<][<[Y<\Z<][<^\<`^{=yt;ok:he:a_9_]8\Z8ZX7XV6WV6VV5VU5TS4TS4RQ5QP6OP6OO7OO8ON8ON=VU=VUmj@tq@yvB|CCCCCCCCCCCCDD~|EzxFvtGusGsrGsrGutHxvI|yJ~{KLMNNOQRSTUVVTRPLJHGEDDCCB}@yu@sp>igzv@AABBBBBBBBBBBBBBBBBBBBBBBB|C{xDwtEurEtqFurHwtJyvL{xN}zP~QQPPPPPPPP~N}N}N|N|O}O}O~OOMLJHFDBBBBBAAAA@|?wt?pn>ig=ec<`^;][;[Y;\Z;\Z;\Z;][;^\;capn>vs@{AABBBBBBBBAA@>>}ygf@nl@spBzvC{CCCCCCCCCCC}D~|DzxEwuFusGtrGtrGusGwuIzxI~|H}HJJJJKMNPQSTTTRQOLJIGFFEED{BwtBrp@jh>ca<\Z:XV8TR6PN4NL4MK4PN4TR6\Z7b`9lj;ur={>@AABBBBBBBBBBBBBBBBA??=~=}y;tp:mi:da9_\9YX9WV9WV:ZX:`^;ge=qo>zv@AABBBBBBBBBBBBBBBBBBBBBBBB~C|yCvsDspFroFspHurJwtLyvL{xN|O~OPPPPPPPP~N}N}N~N~OOOOONMKHFDBBBBBAAAA@?}y?vs>nl=jhki>pm@yuA|ABBBBBBBBA@????~y>yu=tqda<][:YX8UT6QQ4ON4NL4PN5TQ5ZW6_\8he;pl=zv>{@AAAABBBBBBBBBBBBBBAA@>>~qn>yv@AABBBBBBBBBBBBBBBBBBBBBBBB~B|yBvsCspEqnEroGtqIusKyuL{wN~{O}OPPPPOOOONNNNPPOOPPNLJFDBBBBBBBBBAA}@zw>ro>mkig>mk>ur?|x@AAAABBBBAAAAA?~>{<{x`^<]\:YX8VU6RQ6QO6QO5SP5WT6ZW8a^9gd;pm~{????@@AABBBBBBBBBBAA@@??}>ywpm?wt@}@ABBBBBBBBBBBBBBBBBBBBBBBB~B|yBvsCroEolEpmGroIspKwtKyvL}zL}MNNNNMMMMMMNOOPQQQQOMJFDBBBBBBBBBAA@~>xv>tqb`>fd>jg>qn?xt@|AAAABBBBAAAA@@??>>>~>~=~=~=}={<~zdc@feBjhBljDpnEspEurEvsEvsEwtEwtEvsEurEtqEtqEtqEtqEtqEtqFtqFurFwsFyuE{wE{EEEEDDDDEEFHJNPRTTTRQPPNLJ|J~zHzwGvtErpDpmBlh@hd>c`>`^<\[:ZY8VU8US7TR6TR6VT6XU7]Y8a^:if:nk?@@AABBBBBBBBBBAAA?>{om?ur@}z@ABBBBBBBBBBBBBBBBBBBBBBBB~B{yBurCpmEnkFomHqoIrqIvtJxvK|zL~|L~LLLLKKKKLLMOPRRRRQOMKGECCCBBBBBBBBA?}?zx=sp`^>cb?fd?mj@sq@|y@~@AABBBBAAAAAA@@????????>>}=|w=rnhf@hfBigDkiDmkFomGroGtqGurGusGusGusFtrFspFsoFroFqoFqoFqoFsqFtrFvtFyvF}yE{EEEDCBBBBCCDFHLORTTSSRRRPN}L}zL{xJxuHusFqoFpmDliBif@ec@db>``<^]:[Y:YW9WU9US8US7VT7XV8[Z8a^9eb:kh;pm;tr;us;zv<z>>@AABBBBBBBBBBAA@@?>zv=ro=jg=ec=b`>b`>db?ge?mk?ro?xu@|yA}B~BBBBBBBBBBBBBBBBBBBBBBB}B|wBuqCpmEnkFokHqmIsnIurJvtJzxK~{KJJJJIIIIIKLNPRSTUSQMKGECCCBBBBBBBBAA@?{x>ur>nk>ki>ge>db>a_>`^>`^>a_>ca?db?jh@qo@{w@}@AABBBBAAAAAABBAAAAAAAA@@?~?wt>ol>fe>db>ca>XW>XW>YX>YXol>nj@lhBlhDmjDolFqnGspGurGvsGvtGvtGvtGusGuqGtpGrpGqoGqoGqoGsqFtrFxvF{xF|F~FEDCCBBAABCDFHLNRSTTTSQQOO~M}zM|yKxuIvsGroGqnEmjCkhAgeAec?a`?^^=\[<[Y:YW9XV9WU8VT8XV8ZX8^\9`^9db9hf9li:nj:so;xs=~z>@AAAACCCCCCBBAAAA@?{x>tr>lj>ge>ca?ca?ec@ge@ki@ol@tpAwtA{xB|yB|BBBBBBAAAAAAAAAAAAAAAA}B{wBtqComEmjEnjGplGrmItqJvsJzwJ~{JJJHHHHHHHIKMPRSTUSQMKGECCBAABBBBBBBBA@|@zw?sp>pm>jh>fe>ba?a`?a`?a`?cb@ed@ki@qo@zwA}AAABBBBBBBBBBBBBBBBAAAA@@@@yv?pn?ig?fd?ec>YX>YX>ZY>[Z<\[<_^=cc=ki>po>xu>}z>~>>>>>>~>~>}=}={>|w@xs@upBqnDpmFpmFrnHtpIurIwtIxuIxvIxvIwuHvsHtqHtpHroGqoGqoGsqGusFwuF{yF|FFEDCCCBBAABCDFHLNRSTTTSQQOO~M}zM{yKwuIusGspGroEomEmjCjhChgAfdAcb?a_>_]<][;[Y;YW:WU9WU9WU8XV7YW7[Y7^\7a_8b_8gd9li;sq}>@@BCCCCCCBBAAATBliBolAqnAtqBurBxuB|yB}BBBBAAAAAAAA@@@@@@AA}yBxuBroColEmjEmjGolGpmItqJvsJzwI}{IHGFFFFFFFGHLORSUVUSOMIGEDBAABBBBBBBBAAA~A{x@xu@ro@mj@hf?fd?db?cb?cb@ed@ki@qn@yvA}AAABBBBBBBBBBBBBBBBAAAABBBB{xArpAkiAhfAge?[Z?[Z?\[?^]=^]=ba=gf=on?us?}{>>????@@@@@@@~@~yAzuCvqDsoFroGtpIvrJwtJyvKzwKzwKzwKxvJwtIurHtqHsqHsqHsqHusHxuG{xF|EEEDCBBBBBBBBBCEGKMQSUTTSQQOO}M|yMzwKwtIurGspGrpEpnDnlDljCljCjhBgf@ed@db>b_=_]<[Y;YW:WU9VT7US6US6US6WU6YW6YW6^\7ca9kh9pm;xu={??ABBBBBBBBBBAOvЀvvvCjgCliCnkCpmBpmBspBvtB{xB{BBBAA@@@@@@@@@@@@}A}zAyvBurBqnCnkEliEmjGolHpmHrpHusHzwH{HGFEEEEEEDFHLNRTVWWUQOKHFECCCBBBBBBBBBBBB}A}zAwtAroAli@jf@fd@dc@dc@ec@jg@pm@xuA|AAABBBBBBBBBBBBBBBBBBBBCCCC}zBtrBmkBjhBigA]\A]\A^]A_^@`_?ed>ki>sq?yx?@@AAAABBBBAABBC{EzvFwtHvsIwsKyuLyvL{xM|zM}zM}zM{xLyvJwtIvsIusHurHvtHxvH|zG|FFEDCBBBBBBBBBBCEGKMQSUTTSQQO~O|M{yMywKwuIurGspGsoEqoDpnDpnEpnEnlDljBjhBif@ec>ba<^]<\Z:XV9VT7TR6SQ6RP6RP6RP5SP5VT6ZY6`_7eb9mj;ur=}z=~?@@@@AABBBBAJqA{vAspBnkc_CifCifCjgCkhCkhCliBliBnkBroBvsByuB}yB~{B}A~|@~|@~{?~y>}x>|x>{w>{w?{x?{x?{x?{x?{x?yv@wtAspBqnBmkCkiEkiEljGnlHpnHrpHusHzwG{GFDCCCCCCDFHLNRUWWWVTQMJHGEDBBBBBBBBBBBBBAA~{AxuAro@nk@jg@ge@ec@ec@ig@ol@wtA~{AAABBBBBBBBBBBBBBBBBBBBCCCC}zBvsBolBljBkiB`_B`_Aa`@ba?ba?fd?lj?tr?{y?@ABBBBBBBBAABCC|E{xGyvIxuIyvK{xK{xM}zN~|N}N|M}zL{xJyvJxuJxuIwtHyvH{xG|F~EEDCCBBBBBBBBCCCEGJMPRTSSRRQO}N~{LzxLxvJvtIurGspGsoEsoDroDroEroEpmDnlCljCjiAfe?db=`^=^\;ZX:XV8TR7SQ7QP6QP6QP5QO5SQ6VT6[Y7_]7gd8nk:vt;|y=>>?@AAAAAAATZB{vBspBolFrrcCjgCjgCkhCkhCliCliCliCnkColCspCvrCxuBywBywAyw?xv>wu>us=tr=tp>sp>sp>tq>tq>uq>uq>up>sp?ro@pmAnkAliBjhDjhEkiGmkHpnHsqHusHzwG{GFDCCBBBBCEHLOSVXXXWUSPNJHFDBBBBBBBBBBBBBAAA}yAur@qm@ki@hf@fd@fd@jh@om@wuA}zAAABBBBBBBBBBBBBBBBBBBBBBBB}yCvsColCmjCliDbaDbaCcbBdcBdcAif@ol@wt@}{@AABBBBBBBBAABDE~G}zI{xKzwK{yM}{M|O~PPPO~N|L}zL|yJ|yJ{xH}zH|FFDCCCCBBBBBBBBCCCEGJMPRSRRRRQO}L}zJzxIxvIvtHtrHtqGuqEuqDvrDvrEvrEurDsqCqoBpnAlj@ig>ec>b`<^\:ZX8VT8TR7RP7PO6NM5NM5NM4OO4SQ5VT5\[6ca8kj9ro;zw<|<=>????@@AJ{VCtqM|~m`EliEliCmjCmjCliCliCmjCmjCnkCpmCqoCsqBsqBsqAqp?on>mk>ki=jh=jfkg>kg>lh>lh?kh@jgAifAifBigDjhEkiGmkHpnHsqHusHzwG{GFDCCBBBBCEHLOSVXYYYWVRPLKGDBBBBBBBBBBBBBAAA}Ayu@sp@mj@hf@fd@ge@jh@nl@trAzwAAABBBBBBBBBBBBBBBBBBBBBBBB|wCurColCmjCliEdcEdcEedCfeBfe@kh@qn@yvA|ABBBBBBBBBBBBCEFH~{J|yL|yL~{N}NPQQQPOM}M|K|J|H~GFEDCBBBBBBBBBBBCCCEGIKOQSRRQQP~N~|K{yIywHwvHutGurFurEvsExtEyuE{vD{wD{wCzvCxtBwsBsoAol?ig?fd=`^;[Z9WU9US7RP7PN5NL4LJ4KJ3KJ3ML3ON3UT4[Y6ca7if9qn:vt:{y;}y<{<}=>>??@@~h|JuvFolFnkDmjDmjDliDliDliDliDmiDnkDolDomComAnlAmk?ki?hf=fdfc?fd?ge@geAgeAhfBigDkiEkiGmkHpnHsqHusHzwG{GFDCCBBBBCEHLOSVXZZZXWURNLHECCBAABBBBBBBBAA@@|x@ur@mk?hg?ed?ec?ge?ki?qo@vs@~{@@AAAABBBBBBBBBBBBBBBBBBB|ByuDtpDolDmjDliEfeEfeDgfDhgChgBmjAspA{xB}BBBBBBBBBBBBBCEFH|J~{L~{N}PPRSSRPPNMKJHFDDCBBBBBBBBBBBBCCCEGILNOQQQPP~O~|M|zKywIwuIvtGvsFvrFxtEzwE|yEzE|D}D}C}C{BzBzvAvr?ol?jh=ca<^\:YW9WU7SR7QO5MK5JI3HG2HG1HG1IH1ML2RP4XW5]\7ed8ji8om9qn:sp:ur;wt{x?|x@|xA|x_rwweJwwFqoFqnFpmEolEnkEmjEliDliDliDmjDmjDmkDmkCmkAkiAjh?gd?db=`_<_]<][;]Z;]Z;]Z;][<^\=`^>`^?b`?ca@dcAdcAfeBigDkiEkiGmkHpnHsqHusHzwG{GFDCCBBBBCEHLOSVXZZZZYVSOLHECCBAABBBBBBBBAA@@~z@ws@ok?if?db>ca>ec>hf>lj>pn>xu>~z>?@@ABBBBBBBBBBBBBBBBBB{B{wBuqDqnDmjDliDliFgfFgfEhgEihDihCmkBspB{xB}BBBBBBBBBBBBBCEGI}K~|M~|O~QRSSSRPPNMKIGFDCCBBBBBBBBBBBBCCCEGIKMNPPPOO}N}{L{yJywHwuHusFurEwsEyuD{xD|D~DCCCCB~BzAzu?so?nk=fc=`];ZX:XV8TR7PN5LJ5KI3IG2HG2HG1HF1JH1ML2SR3XW5^]5ca7ge7hf9jh:mj:ol;pma_>_^<]\;[[;[Z<[Z<]Z=][=^]>^]>`_?b`AdbAecCgeCigEkiEliGokHqnHtqHvsHzwG|GFDCCBBBBCEGKNRUXZZZZYVSOMIECCBAABBBBBBBBA@??~z?xs?ok?ie?da=b`=b`=db=hf>mi>to>yu>|??@@AAAABBAABBBBAAAAB~B|xBwsBqnCnkCliDkhDkhFggFggEhhEiiDijCmmBsqB{wB}BBBBBBBBBBBBBCEGI}K~|M~|O~QRSSSRPPNLJIGECCCBBBBBBBBCCCCDEFFGIKMNOOON}N}{M{yKywIwuGusGspEtpDwrD{vDzDDDCCCCBBA{?ws?rn=if=c_;\Y;ZX9VT8RP6NL5MK3KI2JH2HF1GE1HG1KJ1ON2SR4YX4^\6b`6ba8ec9ge9jg:kh:mj;ol=qn=so?uq^_w҉aGspGspGroFqnFpmFpmFolEnkEnkEmjEmjEnkEnkDmjCkhBifBedAca?a_>_^<]\;\[;ZY][>_]?b`AdbAecCgeCigEkiEliGokHqnHtqHvsHzwG|GFDCCBBBBCEGKNRUXYZZZYVSOMIECCBAABBBBBBBBA@@?~z>ws>mi=gd=b_<`^<`^=a_=ca>????@@AABBBB@@@@~{@{x@urApnBljCkiCigDifDifFhgFhgEihEjiDjjCnmBtqB|yB~BBBBBBBBBBBCCDFGI}K~|M}OQRSSSRPOMKIHFDBBBBBBBBBCCDDEFGGGGHJKMNN~N~N}N}{N{yMywKwuIusGsqGrpEtqDwsD|wC|CCCCCCCBBA~?zv?sp=jh|y=ur=kh}>????@@AAAA@@~@~{@xu?uq?om@kiBhgChfChfDgfDgfFhgFhgEihEjiDjjCnmBtqB|yB~BBBBBBBBBBBBDEG~G|I}|K}{M}OQRSSSRPMKIGFDCCBBBBBBBBBDEFGHIIIIJKLMN~N|N|N~{M{yMywLwuJusHsqFqoFpnDroCvrC|xC}CCCCCCCBBA?|y?vr=lizw>spxv>zx?{y?|y?|y?|y?zx?xu?ur>qn=mk=ig?feAdcBedDedDedDedFgfFgfEhgDihDiiCmlBspB{xB}BBBBBBBBBBBCEE~G|H}{J}{L|zN~|NPQRRRQOMKHFECBBBBBBBBDDDEFHHJKKKKLLMMM}M~{N~|N|zMzxKxuKvsItqGroEpmEolCqnBtrBzxB}BBBBBBBBBA@}z?vs>lj>fd=a_<_]<\Z;ZW9WT8US6SQ5RP5PN4OM4QO5TR5ZX6^]8fd9ki9pm9qn9sq:us;wu^]=]\=\Z=\Z=\Z<][=_]>`^@b`@dbBfdBheDjgEkiEmjFmjFokGqmGspGvrGzvF~zFECBBBBBBBDFIKORTUWWWWUSPNKIFECBBCCCCCCBA@??>zw=rprp?sq?tr?tr?tr>sq>qo>om>ki=ig=ed>db@cbAdbCdbCdcCdcFfdFfdEgeDhgDigCnkBspB{xB}BBBBBBBBBBBCE}F}zH{xH{yJ{yL{yN}{N~}PQQQPOMKHFDDCBBBBBBBBCEEGHJLNOOOONNMM}M~{M|yN|zMzxLxvJvsJtqHroGpmEnlEmlConBtrBzxB}BBBBBBBBBA@~{?xu>nm>hg=cb?@@@I{GvvdaGwtGtrGsqGqoGpnGpnFomFomFnlFnlFnlFnlEmkEliDkiDigCfeAdcAba?`_>_^>^\>^\>^\>_]>a_?b`AdbBfdBhfCigDkiDkjEmjFmjFokGqlGsnGtpGxtF|xE~DCBBBBBBBDEGIMPRSUUUUSRPNLIGECBBCCCCCCBA@??|>vs=omki>ig>hf>fd=da=b_>a^@a^Ab_Cb`CbaCbaEfcEfcDfdCheBifBnkBspB{xB}BBBBBBBAABDDF~|G{yIywIzxKzxLzxN|zN~|P~QQQPNLJGECCCBBBBBBBBCEFHJLNPQQQQPONM}L}{L{yL{yLywLwtJurIsqGqoFpmEnkDmkConBsrB{yB~BBBBBBBBBA@|?xu?pm>ji>gf=hf=he>>>??@@@@v؉JGxvGusGtqGroGqnGpnFpnFpnFomFomFomFomEnlEmkDmkCkiCigBgeAdd@bb?aa>`_>`_>`_?a`?c`@caAecAgeBigCjhDljDmkEmkFmjFnjFpkFrmFroFvsE|xE~DDCCBBBBBCEGHJMOQSTTTRQONLIGFDCCDDDDCCB@@>}={w=roml>lj=nk=pl>pm>pm=pl??@@@@AA@@@@Fm̄rNF|yGxvGtrGtqGroGqnGpnFpnFpnFpnFpnFqnFqnEpmEomDomCmkCkiBigAgf@ed?dc?ba?ba?ba@cb@ebAecBgeChgCjiCjjCljDmkEmkFljFljFnkFpmEpmEtqDyvD|DDCCBBBBBBCEFHKMOQRRQQQON~L|K}I~HFEEEEDDCCB@}@~z>yu>tqsp>ur>vs>xs=xt=xt=xu=xu??@AA@@AAAABBBBBBCEFF|yGxuGtqFsqFqoFpnFpnFpnFpnFqoFqoFqoFqoEpnEpnDpmCnkCljBjhAigAge@ec@ca@ca@caAdaAdcBedCgfChgDjiEkjEkjEljEljEkiEkiEmjEolDomDsqCxvC|BBBBBBBBAABDFHJLNPQQQQPN~M}K{K{I{I|G|F}F}F~F~E~D~CC}B}{@zx@xv>sq>nl][?][?^\@_]A`^A`^CdbCecCgeCigAjhAomAurA}zAAAABBBBBBCEEG{H{xJyvJywLywLzxN|zO}|O~OOONMKHFDBBA@@AAAAACEHKNPRSSTTTTSQPN~M|M}zL|xKzvJwtHspHqnFolEolColBolBspBwuB{BBBBBBBBAA@@|?{w?vs@tq@ur@yu@}y@|@~????>>??@ABBBBBBAAAABOhFBBCESXK}}GtqFspFqoFpoFpoFqpFsqFtrFtrFurFurEtrEtrDtqCroCqoBomAnlAlj@ig@ge@fd@fdAfdBfeCgfCihDjiDljEljEljEljEljEkiEkiEkjElkDmlDqoCvtC~zBBBBBBBBAABDDFHJLNOOOON}L~{K}zK{xJ{wJ{wI{wG{wF{wF{wF{xF{xEzwDzwCywCwuBus@rp@pn>ki>ge][?][?^\@_]A`^A`^CcaCecCgeCkhAmkAspAyuA|AAAABBBBBBCEEG~{H{xJyvJzwLzwLzxN{zO|{O~}OOONMKHFECCCBBBBBBBDFJLPRTTTUUUTSQQON~N|N}zLzwJxuHuqHspFqnEpnCpnBrpBvtB{xB~BBBBBBBBAAAA}@{x@vs@vr@yuA}yA~AA????@@@@AABBCCCCBBBBBU^BG|߉YFsqFqqErqEsqEtrEvtEwtEyvEzwEzwDywDywCyvCwtBvtBtrAspAqnAnlAljAjiAigBifCifCjgDliEmjEmjEmkEmkEmkEmkEljEljEljEljDmjDqnCurC}zBBBBBBBBBBBBCEGIJLMM~N~N|M~{M|yLzwJxuIxtIxtHwtGwtFwsFwsFvsFvsEvrDtrCsqCqoBnl@lj@ki>ge=ca;]\9ZY7VU6SR6QP6QO6OM5NL5LL4LK4LK4KK4KK4KJ4KJ5LK6NL7PM8SP8US9YW:]Z;a^;dbki>ki=kh=if=gd=eb=b_=`]>^\?^\?_]@`^A`^A`^CecCgeCigCmkAqnAxtA}zAAAAABBBBBBCEEG~{H{xJyvJzwLzwLzxN{zO|zO~|O~OONMKHFECCCCCCCCCCEHLNRTVUUUUUUTSRRQP~O|M|yJzwHvsHurFsqEsqCusBwtB{xB|BBBBBBBBBAAAAA|yAxuAxuA{xA}AAAAAAABBBBBBBBCCCCBBBBBBcqiÉwnÉ|FtqFtqEsrEutDwvD{xD}zD|D}D}D}D}C|C|B~{B|yA{wAxuAusAqoBnmBljCkiCkhDliDmkEnlEnlEomEomEnlEmkEljEljEljEljDmjDqnCurC}zBBBBBBBBBBBBCEFHHJK~K|L|L}zK{xKyvJxuIvsHvsHtqHspHspFroFroFroFroEqnDomCnlCljBig@ge@ec>b`<_]:[Y9XW7TS6RP6PN5ON5NM5MM5ML4LK4LK4KK4KK4KJ4LJ5ML6ON7PN8TR8XV9^\:b_:he;mj=qn>ro>tq>uq>uq=sp=qn=nk=jg=gd=c`>a_?_^?`^@`^A`^A`^CgdCifCkiCpmBtrB|xB~BBBBBBBBBBBCEFH|I|yJzwK{xL{xL{yM{yN|yN~{N}NOOMKIGECCCCCCCDDDFHKMQTVUUUUUUTSSRQQP~N}zL{xJwtIurGurEvsCxuC{wC{BBBBBBBBBBBBBBB}zBywBywB|zB~BBBBBBBBBBBBBBBBBBBBBBBCCCLvىG~G{xo‰FurEurEvsDxvC{yC}C~CCCCCBBBB~B}B}yByvBurBroBnkDmjDliDmiDmkEnkEnlFomFomFnmFmlElkEljDljDmjDnjDqnCurC}zBBBBBBBBBBBBBDEGHJK}K~zL~zL|xKzwKxuJxuHvsGtrGrpGqpGqnFpmFpmFpmFpmEolCmjCljAjhAgf?ed?cb=`^;^\9ZX9XV7TR6RP6PN5ON5NM4ML4ML4ML4ML4LK4LK5LK6ML6NN7PP8RQ9WV9\Z:ca;hf;nlxu?zw?|y?|y?|x>{w>ws>tp>nk>jh>db?a_?_]@`^@`^A`^A`^CifCkhCnjCtpByuB}BBBBBBBBBBBBCEFH~I|{JzyK{yL{yL{yM{yN|yN~{N}NOOMKIGFFEEEEEEFGGIKMPRTUUUUUUUUUUSRPPN|L}zJ{xIyvGyvE{xC~zC}CBBBBBBBBBBBBBBB~|B{yB{yB~|BBBBBBBBBBBBBBBBBBBBBBBBCCDDDdwG|G{xeFvsExuEyvD}zC}CCCCCCCBBBBBBB}BzwCwsDsoEpmEnkEolEolFpmFpnGqoGqoFpoFomEnlEnjDnjDnjDnjDqnCurC}zBBBBBBBBBBBBCCDFHJ~K{K|xJ{wJyuIwtIvsIvsItqHqoFomEnmEmkFljFljEmjEmjDliDjgCigAgeAdc?ba?`_=^\;\Y9XV9VT7TR6RP6PN5PN5NM4ML4ML4ML4ML4NL4NL5NL7ON8PO8SR9UT9[Z:b`wu?}z?@@@@??|?|x?tq?ol?hf@db@a_@a_@a_A`^A`^DjgDliDpmDvsB|xBBBBBBBBBBBBBCEFHI}|J{zK{zL{zL{zM{zN|{N~{N|N~OONLJHGGGGGGHHIKKMNPRTUVVVVVVVVVVTSQPNL}J{I~zG~zE|C~CCBBBBBBBBBBBBBBB}B|zB|zB}BBBBBBBBBBBBBBBBBBBBBBBBCCDDEF|wG|G{xeExuDzwD}yC}BBBBBBBBBBBBBBCC|D{yDvsEspEqnFroFroGspGspGspGspGspGqnFpmEolEolDolCnkCqnCurC}yB~BBBBBBBBBBBBBCEGI{J}xJzuJytJwsIurIspHspGqnGomFmkEmkEkiEihEihDkgDkgCifCgdBfd@db@b`>`^>^\<\Z^\>\Zzw@AABBBBAAAA~z@wt@olAifBecBecCecDdbDdbEolErnEvrE|xD~DCCBBBBBBBBCCDFGIJ~}K|{L}zM}zN}zN}zN~{N}N~N~NNMMMMMMNPPRRTUUVVWWXXYYYYYYXWWVVTRPOMKIHFECCCBBBBBBBBBBBBBBC}C~zC~zC}BBBBBBBBBBBBBBBBB}B|yBywBwuCwtCwtDwtDwtExuRwwwwwwwwwwE~CBBBBBBBBBBBBBBBBCDEF}F}zG{xHzxHzwIywIyvIyvIwtIurIspHroFpmEolEolDolCqnBtqBzwB~{BBBBBBBAAAABCDD}D~yDxtFtqFqnFqnFomEmlDkjDkjCihBigBgeAfeAfcAebAebAfcAfcAfbAdb@ca@a_?_]=][=\Z;ZX;XV9VT9UT7SR6RQ6RO5RO5RO5RO5RO6RP6RP6RQ6RQ7RQ8TS8WU9[X:]Z:da;kh=ur>|y@AABBBBAAAA|@yv@qn@khBgeCgeEgeEfdEfdFplFsnFwrF}yECBBBBBBBBBBCCDFGIJ}K}{L}{M}{N}{N}{N~|N|N}N}N~N~N~N~NNOOPRRTTVWWXXYYYYZZYYZZYWWUUSQONLJHGEDBBBBBBBBBBBBBBBBBC|C~yC~zC}BBBBBBBBBBBBBBBB{B|xBxtBtrBrpCspCspDspDspEtpEvrFwsFwuGwuGwuGwuGwuFwtFyvE{xD|CCCCBBBBBBBBBBBBBBCDEEF~F|G|G~{H}zH{xI{wIyuIvsItqHroFpmEnlEnlDnlCpnBtqBxuB|yB}BBBBBB@@@@@AB}D|yDzvDvrEroEolEolEmjCkiCigCigCgeBfdAec@ec@ec@db@db@fc@fc@fb@eb@da@b_?`^=^\=][;[Y:YW:WU9WU8US8US7SQ6RP6RP6RP6RP7SQ7TS7TT7UT8UT9WU9YW:\Y;^Z;ea

  • vs>}z@AABBBBAAAA}AzwAroBlkCihCigDigEhfEhfHpnHspGwtE}zECBBBBBBBBBBCCDFGIJ}K}{L~{M~{N~{N~{N|N|N}N}N|N|N|N|N|N~OOPRRTUWXZZZ[[[[ZZZZZZYWWUSQOMLJHFFDCCBBBBBBBBBBBBBBBBC|C~yC~zC}BBBBBBBBBBBBBBB{BzuBwsBsoBomBmkCnkCnkDnkDnkEolEqnFroFroGrpGrpGsqGsqFsrEvtEzxD|CCCCBBBBBBBBBBBBBBCDEEFFGGH~H|I}zIzvIwtIsqHroFpmEolEmkDmkCnlBpmBtqBxsB|wB{B}B|B|B}B}@}@}@|@}{@}{@{yAyvAvrBtqBpmCmjCkhCkhCifAgeAecAdbAdbAcaAca@ca@ca@db@eb@fc@fc@fc@fc@eb@c`?a`=_^=_];][:[Y:YW9YW8WU7WU7US7TR7SR7SR7SR8TS8VU9WV9WV:WV:YW;[Y;^[<_\=db=li>vs?}z@@ABBBBAAAA}A|wAtqBnmDkjEkiEkiFjhFjhIqoItqHxuF~{ECBBBBBBBBBBBDEGHJK}M~{N|N|N|N|M|M|M}M}M|M|M|M|N|N}O~OOQRTUWXXYZ[[[[[[[[ZYXWVTRNLJIGGEECBBBBBBBBBBBBBBCCCCC|C}yC}yC|BBBBBBBBBBBBCC|C|xCvsCtpCplCmkCkjCljCljCljCljDmkEolFpmFpmFpnFpnFqoFqoFqoEtrDyvB|BBBBBBBBBBBBBBBBBBBBCDEEFFGG|H~zHzvHvsHsoGrnGplFnkDljCljCmjBnlBrnBtpBxtBzvB|xA{xA{x@{x@{x?zw?xu?wt?wt@vt@ur@tp@rnBplBljBjhBhfBgfBfdBfdBdb@ca@b`@b`@b`@b`@b`@ca@ec@fd@fd@fd@fd@ec@ca?ba=`_=_^;]\:\Z:ZX9ZX8XV7XU7VS8UR8TR8TS8TS9UT9WU9XV9XV:XV;YW;[Y<^[=_\>fb>mi?ws@}yABBBBBBBBBB~B|yBtqCnmEkjFkiFkiGjhGjhIqpItrHxuF~{ECBBBBBBBBBBBDFHIKK}M~{N|N|N|N|M|M|M~{M~{L}zL}zL}zL}zL}zL}zN~{N}N~ORTTVWXYZ[[[[[[[[ZYYWUROLJHGEDDCCBBBBBBBBBBBBBBCCCC~C~zC{wC|xC|BBBBBBBBBBBBC~C}xCxtCroCplCljCkhCjhCjhCjhCjhCjhDkjDkjEljEljFljFljFmkFnlEnmDrpCwuC~{BBBBBBBBBBBBBBBBBBBBCCCCDDEE~F~zFzuFvrFroGpnGnlFljDjhCjhCjhBkhBmjBokBqmBrnBspAspAsp@sp@sp?ro?pm?ol?ol@nk@mk@lj@jh@ig@ge@fd@db@db@b`@b`@`^>_]>_]>_]>`^@a_@ca@db@fd@ge@ig@jh@jh@jh@hg?gf=ed=ed;cb:c`:a^9`^9^\9]Z9[X9YW9WU9WU9WU:XV:YV;ZW;ZWfd>mj?ws@}yABBBBBBBBBB~B|yBtsCpnEmkFljFljGkiGkiIqpIsrHwuF~{ECBBBBBBBBCCCEFHIKL}N|N|N|N~|N~|M~{M~{L}zL}zL|yL{xLzwLzwLzwL{wM|xM~zM|NQSSUVXXZ[[[[[[[[ZYXVTPNJHFEDCCCCBBBBBBBBBBBBBBCCCC{C{wCyvC{wC{BBBBBBBBBBBBC}CzwCurCpmCmkCjiCigChfChfChfChfChfCigCigDihDihEjhEjhEkiEmkDmkCqoBvtB~zBBBBBBBBBBBBBBBBBBBBBBBBCDEEE|EzvEvqEqmFnmFkkEjiCigBigBigAjgAjgBkhBliBmjBmjAmkAmk@mj@mj?lj?kh?kg?jf?if?hf?ge?ec?ec?ca@b`@b`>a_>a_>`^>^\=][=][=^\=_]?`^?b`?ec?ig@ki@mk@nl@om@om@om?nl?nj>mjmk?ws@}zABBBBBBBBBBB}zButCqoEnlFmkFmkGljGljIqpIsrHwtF}zECBBBBBBBBCCCEGIJL}M|M|N|N|N~|N~|M}{M|yL|xL{xKzwKyvKxuKxuKxuKxuKyvK{xL|yN|O~QQSVXYZ[[[[[[[[ZYXVSOLHFDCBAAAABBBBBBBBBBBBBBCCC|C{xCyuCxtCyuC}yBBBBBBBBBBBBC|CxuCspCmkCkiCigChfCfdCfdCfdCfdCfdBgeBgeBgeBgeCgeCgfChgCjiAkiApnAusA}{BBBBBBBBBBBBBBBBBBBBBBBBCCCCE|EyvEtqEomElkEiiDhgCgeBgeBgeAfeAfeBgeBgeBheBheAgfAgf@ge@ge?gd?gc?fb?eb?db?db?ca?a_?a_?_]>^\=^\<^[<^[<]Z<[Z=[Y=[Y=\[=^]=_^=ca>gd?ki@nm@rq@vt@xv@wv@wv?xu?xu>wt>ur=tp=rnmk?ws@}zABBBBBBBBBBB}zButCqoEnlFmkFmkGljGljGqoGsqFwsF}yE~CBBBBBBBBCDDFHJ~K~M}N|N|N|N|N~{N~{M}zL}yL|yKzxJzwJxwJwvJwvJwuJwuJxvJzwK{xM}zO|QQSUWWYZZZZZZZZYXWURNKGECCBAAAAAABBBBBBBBCCCCCC~C~zCxvBusBurBwuB}yB~BBBBBBBCCCCD|DyvDsqDnlCljCjhChfCfdBfdBfdBfdBfdBgeBgeBfdBfdBecBecBfeBhg@ih@nm@tr@|zAAAABBBBAAAAAAAAAAAABBBBBBBBD{DyuDtpDolDljDjhChfBfdAecAec@ec@ecAfdAfdAgcAgcAfdAfdAfcAfc?eb?eb?db?db?ca?ca?ca?a_>`^>^\=]\=]Z<\Y<[Yml?qo?wu@zx@}{@~|@~|@{@{?{?}y>|w>zu=yu=vr=so=nk=jg=fc=c_=`]>_]>_]>^\>^\>^]>^]>_^>a_>b`>gd>mj>wr?}y@@ABBBBBBBBC}zCutDqoFnlGmkGmkHljHljGpmGroFuqF{wE|CBBBBBBBBCDDFH~J|K|M|N|N|N|N|N~{N~{M}zL{xLzwKxuJxuJvuIutIutIusIusJvtJxuKyvM{xM~{O}OQSUUWXXXXXXXXWVUSQMKGECCBAAAAAABBBBBBBBCCCCCC~zCyvCurBspBspBurB{xB}BBBBBBBCCCCE|EzuDuqDplCnkCjhChfCfdBfdBfdBfdBfdAecAec@db@db@ca@da@fc@he@ig@nm@us@}{AAAABBBBAAAA@@@@AAAABBBBBBBBC{CxtCroCmjCkhChfBfdBdbAdbAdb@ca@caAebAebAebAebAecAecAdcAdc?eb?eb?db?db?db?b`?a_?_]?^\=\Z<[Z:[X:ZW:YW:XW:XW;XW;YXpo?ut?}|@@@@@@@@@@??|?|y?ws?to?ni?if?ec@db@b`@a_@`_?`_?`_>a`>ba>ca>hd>mj>wr?}y@@ABBBBBBBBC}zCutDqoFnlGmkGmkHljHljGnkGpmFsoFwtE{xC~BBBBBBBBCEE~G|I{K{K{M{N|N|N}N}N|N}zM|yKzwJyvJwtIwtIurItqIsqIsqIsqItrIvtJwtLyvL{xN}zN~|PQSSUVVVVVVVVUUUSQMKGECBBBBBBBBBBBBCCCCDDDDD}D{wDvsDroCqnCroBtqBzwB|BBBBBBBBBCDE}E{vEvrEqmDolDkiCigCgeCgeCfdBfdAec@db@ca?b`?b`?a`?ca?eb?hf?ji?po@wt@|@@AABBBBAA@@@@@@@@AABBBBBBBBB{BwsBqnBliBjgBgeAecAcb@db@db@db@dbAecAecAebAebAecAecAecAec@fc@fc@ea@da@da@b`?`^>^\=^\=\Z<[Y:ZW9YV9XV9WV9WV:WV:XW;ZY;\[<]]=bb=hh>qp?xw@AAAAAA@@AA@@@@~y@{v@up@pk@kgAifAgdAecAca?ba?ba?cb?db>db>he>nk>vs?}z@@ABBBBBBBBC}zCutDqoFnlGmkGmkHljHljGmiGnkFomFsqEvuCzyB}|B~B~BBBBBC~E~|E}zG}yI}yK}yK~zM~{N|N|N}N}N|N}zM|yKzwJwtJurItqIspHroHroHroHroHrpHtrIurIwtJyvL{xL|zN}OQQSTTTTTTTTSSSQOMKGECBBBBCCCCBBBBCCDEFFFF~F~{FxuEtqDpmColCpmBtqB{wB|BBBBBBBBBCEFF}yGxtGsoGqnEmlDkiCigChfCfdBfdAdb@ca?a_>`^=`^=_]=a_=db=jf>nj?ur@{x@@@AABBBBAA@@????@@AABBBBBBBBB}{BusBonBjiAhgAfeAecAdb@db@db@db@dbAecAecAecAecAgdAgdAgeAgeAheAheAgdAeb@db?b`?`^>^\=^\=\Ztr?zx@AAAAAAAAAA@@@@@~@}x@xt@roApmAliAigAge@ed@ed?ed?fd>fd>jg>ol>wt?~z@@ABBBBBBBBC}zCutDqoFnlGmkGmkHljHljFkjFljEmlEqoDsqCvuBxwBzyBzyB|zB}{B}{B|zB|zC{yE{yF{xH{xH|yJ}yJ}zL~{M{M}M}M}M|M}zL{xJyvIwtIurHurHspGroGroGroGroHspHspHtqIvsJxuKzwL{xL~{M}OOQRRSSSSSSSSSQOKIGECBBBBCCCCBBBBCCDEEFGG|F}yFwtEtqDpmDolCpmBtqB{wB}BBBBBBBCCDFGGzGzvGurFspEomElkDjhCigCgeBec@ca@b`>`^=_]=^]<^\>}>|>~?@@ABBBBBBBBB|zBtrBomBjhAhgAfeAdcAdb@ec@ec@ec@ec@ed@ed@fe@geBheBheBigBigBjgBjgBhgBfeAecAca@`^>^\>][<[Ytr>{x@AABBBBBBBBAAAAAA}A|xAvrBspBolBliBigAgfAgf@ge@ge?ge?kh?pm?xu@{@AABBBBBBBB~B|yBtsCpnEmkFljFljGkiGkiFihFihEjiElkDnlCpnBqoBrpBsqBtrBurBusButButCvuExuFxuHzwI{yI}{I~{I}K~KKKK}K~{J{xJyvIwtIurHurHspGroGroGrnGrnGqnGqnHroHtqIvsIxuJzwK~{K~LMNNOPPQQQQQQQONLIGFDDDDDEEEEDDDDDDEGHHII~{HzwHvsGspEpmDolBpmBtqB{wB}BBBBBBBCCDFGI|I|xIwtHurHqoGnmEljDkiBhfBfd@ca@b`>`^=_]=^\<^\=}z=yv=yv=}y>~@AABBBBBBBB~B|yBtqBolBjhAhgAfeAfdAfd@ge@ig@jh@jh@jh@jh@kj@ljBmjBnjBokBomBomBnmBllBjjAihAfd@ca>`^>_]<][;[Y;YW:YW:YW9XV9VT9US9US:WU:YX;\Z;c`tq>{x@AABBBBBBBBAAAAAAAA~{B{wBurBroBolAnkAlk@lj@lj?lj?pm?tq?|x@}@AABBBBBBBB~B{yBsqCnlEjhFjhFjhGigGigFhgFhgEihEiiDjiCljBmkBmkBnlBomBpmBpnBpnBqpCsrEutEwuGzwH|zH|I}IIIJJJ~J|J}zJyvIwtIurHtqHroGqnGqnFqnFqnFpmFpmGqnGspHurHxuIzwI~{I}IJLMMMMOOOOOOONMKJHGFFFFFGGGGFFFFGGHHIII~I~zIzwHvsGspEqnEolCqnBurB{xB~BBBBBBBBDEGGI~J}zJyvJxtItqHqoFnlEljCihBgf@cb@a`>_^=^]=^\<]\{=yu{@AABBBBBBBB}B{xBspBnkBigAhfAgeAgeAhf@jh@mj@ol@pm@pm@pm@qn@rpBsqBsqBtrBtrBtrBsqBqpBonBmlBihAge?ca?a_=_]<][<[Y;[Y;ZY:YX:WV:VU:VU:WV:YX:ZY:a_;hf=tp>|w@AABBBBBBBBBBBBAAAAB|B{xBwuBurAtqAspAroAro@so@vr@zu@{AAAABBBBBBBB}A{xAspBmlDjiEjhGjhGigGigFhgFhgEggEggDhgChgBifBifBigBigBjhBkiBkjBmmDqpDutDxvD|zE}FGGGGHHHH}I~{IzwIwtIurHtqHroGqnGqnFpmFpmFpmFpmGqnGspFurFyvG|yG}GGHHIIIIJLMMM~M}M}M~MKJHHHIIHHIIIIHHHHIIJJKKK|K|xJzvHvtHsrFqpEqnCspBwtB}zBBBBBBBBBDEGHJJ|J{xIzvIvsHsqFpmFolDkhBgf@cb@a`>_^=^]=^]<^\|x=uq|y@AABBBBBBBB}B{xBspBnkBigAhfAhfAihAmj@pm@tq@wt@yv@xu@xu@yv@{xB|yB|yB|zB|zB}zB{xBxwBtsBrpBnlAki@ge?ec>ca=a_=_]=`]<^[;\[:ZY:YX:YW:YW:YY:[Z:`_;gd=qn>yu@AABBBBBBBBBBBBAAAABBB|B}zA|yA|xA{wA{w@{w@}y@|@AAAABBBBBBBB|AzwAroBljDgfEhfGhfGgeGgeEggEggDggDggCgfCgfBhfBhfBgeBgeBhfBjhBkiBnlCqoCwtDzxD}EEFFGGGGHH~H|H{xHxuHurGtrGrpGqoGomFolFolFolFolFpmFspFvsFzwF~zF~FFGGGGGGHIJK~L}L~|L|L|K}KJJIIKKKKKKKKKKKKJJJJLLL|L{xKywIvuItsGrqFrpDtrCxuC~{CCBBBBBBBDEGIKK|K{xJzwJwtItqGpnGolEkiChfAdb@a`>_^=^]=^]<^]yw@AABBBBBBAA@@?={w|x@AABBBBBBBB~B{xBspBmlBihBigBigBkiBomAspAxtA|xA~{A|A}A~A~B~B~BBBB}B}zByvBvrBqmAmjAif@he?fc?da>b_=b_<`];^\;\Z;[Y;YY:YY:YY9[Y9`^:fda_=`_=`_}z@AABBBBBBAA@@?|=wt{w@AABBBBBBBB~B{xBspBmlBjiBjhBljBnmBtqAyuA{AAAAAABBBBBBBB|B}xBwsAspApm@ol@mj?kh?if?if?gd>ebec=fd=lj>rp>{x?~@@ABBBBBBA@?>~>{x=sp{v@AABBBBBBBB}BzwBrpBnlBjjBjiBmkBqoBwuA}yAAAAAAABBBBBBBBB~B~zBzwBwtAvsAtq@qn@ol@ol@nk?li=jgzv?}?@@AABBBBBBBBBBBBBBBBAAAAAAAAAAAABBBBAAAA{AxuApmBkgBfcCecDdcEdbEdbEgeEgeDfdDfdCfdBdbBcaAa_@a_@a_@b`@ca@db@ig@ol@wtA~zABBCCBBDDDDE|FzvGvsGspGroGpmGnlGljFljEljEljDljCliColBtpB|wC|CCCBBBBCCCCD|EzvEwsFuqGurHurIvsJxuJxuJzwK|yL~{M|N~OOOOOOOOOONNNN}M}M~{M}zM{xLzwLxwKxwIxwIxvG{xG~|EECBBBBBBBDEGHJKL~|L|{LywKwuIsqIqoGokEliCifBge@fd?ge?jg>mj>sp>yv>~?@@ABBBBBBA@?>|w>vr=plzw@AABBBBBBBB|BzvBrpBnlBkjBkjBomBsqBzwA}AAAAAAABBBBBBBBBBBB|A~{A|yBzwByvAyv?xu>vs>tp>sn=oj}>@AABBBBBBBBBBBBBBBBAAAAAAAAAAAABBBBAAAA{AxuApmBkgBfcCecCdcDdbDdbDfdDfdCecCecBdbAcaAca@a_?a_?a_?b`?cb?db?hf?nk?vs@}z@AABBBBCCDDD{DzuEurFqoGqnGolGmkGkiGkiEkiDkiBkiBkiBnlBsqB{wB|BBBBBBBCCCCD|EyvEusFspGspHspItqIvsIwtJyvK{xL}zL~{L}M~N~OONNOOOONNN~N|M|M}zM}yM{yLzxKzxKywJywIywI{yH~|FFDCCBBBBBDEGHJKL~|L}{LzyKxvItrIrpGolEmjCjgBhe@he?jg?nk?qn?wt?}z?@ABBBBBBA@@?>|>xt=rp=lj=jg=jg>mj>tq?zw@AAAAAABBBB~|ByvBspBokBliBliBpmBtqB|yB~BBBBBBBBBBBBBBBBBBBBB~B}B|A|@~{@}y?{w>zu=vq=rn_]>_]>`^>a_>b`>ge?mk?ws@}z@AABBBBBBBBC~yCwsDrnDnkEnjEliEjhEhfDhfChfChgBhgAhgAlj@qn@yvA|ABBBBBBCCCCB}zBwtCspDpmEpmEpmFqnHspHtqJvsKxuKzwJzwJ|yK}zL}zM~{M|N}N}O}O}O~O~N}N|N~{N~{M~{M~{M}zM{yLzxLzxK{yK{yK{yI}{H~FFDCCBBBBBDEGHJKL~|L}{LzyKxvIurIspGqnEpmCnkBmj@nk?qm?uq@yv@|@@@@BBBBBBA@@?~>zx>rp=mk=ig=he=if>li>ro?xv@~AAAAAABBBB|yBwtBqnBnkBliBliBpmBtqB|yB~BBBBBBBBBBBBBBBBBBBBBBBAA@@@@z?zu=rm^\>^\>_]>`^>a_>fd>lj>vs?}zABBBBBBAAAA}B}xBuqBplBkhCkhCifCgeCecBdcBdcAddAed@fd@kh?pm?xuA{AAABBBBAABB~B{xBspCpmCmjDmjFnkGolGqnHroItqJurJvtJwtJwvLxvLzxL{yL}yM}zM}zN~{N~{N|N|N~{N~{N~{N~{M}zM}zM}zM|yM{xM{xL|yL}zK}zI|IGFDCCBBBBBDEGHJKL}|L|zLzxKwuIusIsqGqoEqnCqnCqnAsp@vs@{x@|@@@AAAABBBBA@@?|>xu>om=ig=ec=ec=ge>jg>pm?ur@}yA~AAAAABBB|ByvBurBpmBmjBkhBlhBplBtqB|yB~BBBBBBBBBBBBBBBBBBBBBBBAA@@AA@z>vr=pm;he;da;a^:a^:da:ge`^>^\=\Z=\Z=][=_]=`^=ed>lj>vs?}zABBBBBBAAAA}@zw@ro@li@gdAgdAebAcaAa_@`_@`_?``?b`>c`>he?nk?vs@}y@AABBBBAA@@}@yv@qnAmjAjgBjgDkhEliEnkFolGqnHroHsqHsqHtsIusJwuKxuLzwL{xM{xN|yN}zN~{N~{N~{N~{N~{N~{M}zM}zM}zM}zM}zM}zM~{M|L|J~IGFDCCBBBBBDEGHJKL}|L|zLzxKwuIusIsrGsrEtrCvrBwtBzwA}zA~AAAAAAAABBBBA@@?~z>ws>mk=ge=ca=ca=ec>hf>mj?qn@wsAzvA~zA{A}A}A}B~{B{xBxuBtqBpmBliBjgBjgBjgBnkBtoB|wB}BBBBBBBBBBBBBBBBBBBBBBBAAAAAA@?{w>uq=kh`^=_]=][<[Y<[Y<][<^]<_^}y@AABBBBAA@@}@yv@pn@jh@ec?db?b`?`^?^\>^\>^\>_]>`^>`^>ec>lh>vr?}y@@ABBBBA@??|@xv@pnAkiAhfBhfDifEjgEliFmjFolGpmGqoGroGsqHtqIvsJvsKxuKzwL|yM|yM}zM}zM~{M|M|M|M|N~{N~{N~{N~{N}{N}{M~|M}M~KIGFDCCBBBBBDEGHJK~K|{K{yIxvIvtHtrGtrGtrFvsDxuCzwC~{B~BBBBBBBBBBBBBA@@?~z>xs>nk=ie=da=da=dc>fd?jh@nk@ro@ur@wt@yv@yv@yv@yvAxuAvsAtqApmBnkBkhBifBifBifBmjBsoB{wB|BBBBBBBBBBBBBBBBBBBBBBBBBBBBBA?}z?vs=lj=fd;`^:^\:^\:a_;gcsp?zw?~@AABCCCCBBBBBBBBBBBBBBBBBBBBBBBBAAAA{AxvApnAkhAfcCebCc`Cb`Cb`B``B``A_`A_^@^]>][=]Z=[Y<[Y<[Y<][<_]<`_{@AABBBBAA@?}{>wt>mk>fd>`_=_^=]\=[Z=YX|x@AABBBBA@@?}{>vt>nl?ig?fd@fdBfdCgdCifDjgDliEmjEolEolEqnFroHtqHtqJvsKxuKzwLzwL|yM}zM|M|M|M|M|N~|N~|N{N{N|N~M~MMKIGFDCCBBBBBDEGHJK|K{xKywIwuIvtHurGtrGvsFxuD|yC|CBBBBBBBBBBBBBBA@@?~z>xs>nj=he=ca=b`=b`>ca?ec@hf@lh@mj@ol?ol?ol?om?om@om@nkAmjAkhBjgBifBifBifBifBmjBqoByuB~zBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAA|@yv@on?hg=ba<`_<`]<`^nl>tq?|x@|AABCCCCBBBBBBBBBBBBBBBBBBBBBBBBAAAA|yAwtAolAjgAfbCeaCc`Cb`Cb`B``B``A__A_]@^\>\Z>[Y<[Y;ZY;\Z;^[;a_;cb;ji{w>}@AABBBBAA@>|y>trso>{w@AABBBBAA@>}z=vs=lj>fd>c`?ca@da@ebAgdBheCjgDkhDljDmjDnlEolGqnHroJtqKvsKxuLyvL{xM|yM~zM~{M~|M}M}N}N}N|N|O}ONLLJHFFDCCBBBBBDEGHJK{K{wKxvIvtItrHtrGurGwtFzwD~{C~CBBBBBBBBBBBBBBA@@?}y>wr>mj=gd=b`>b`>b`>b`>c`?da?fc?gc?ge?hf?hf?ig?ig@jg@jgAifAhfBgeBgeBhfBifBjgBmjBrnBxtB}xBBBBBBBBBBBBBBBBBBBBBBBBBBBCCBB}B{xBrpAli@ec?ca?a_>a_>ca>fc>li?qo@xuA}xB~CCCCCCBBBBBBBBBBBBBBBBBBBBBBBBAAA~AyvAtqAnkAifAebCdaCb`Cb`Cb`B``B``A__A_]@^\>\Z>[Y<[Y;ZX;\Z;_];da;he;pm|>@AABBBBB@?={xzw@AABBBBAA@>|y=tr=jha_>a_?c`@da@fcAheCjgCjfElhEmjGolGpmIroJtqJvsKwuLywM|yM~{M~{M~|M}M}N}N}N~N~O~ONMLJGEEDDCBBBBBDEGHJK~{KzwKwuIusItrHtrGusGxuF{yD}CCBBBBBBBBBBBBBBA@@?{x>ur>kh=ec=`^>`^>_]>^\>^\=_]=`]=a^=a^>a^>a`>ba>dc?dc@fc@gdAgdBgeBgeBhfBigBjhBmkBpnBusByvB|BBBBBBBBBBBBBBBBBBBBBBBBBBCCCCD}zDurComBigAgeAec@db@db@fd@jhAolBurCxuC~yC|CCCCCBBBBB~B~B~B~B~BBBBBBBBBBBBBBBAA}A{xAtqApmAjgAgdAdaCcaCcaCb`Cb`Da`Da`Ca_A_]@^\>\Z=[Y;[Y;[Y;]\;a_;ge{x=tr=jh_]?a^@b_AdaAfcBheCheCjgDliFnkFolHqnIspIurJwtKyvL{xL}zL}zL|M}N}O}O}OOONMKKIGEECBABBBBCCDFGI}J}zJyvIwuIusHtsHtsGutFxvF|zE~DCBBBBBBBBBBBBBBA@@?zx>tq=jhca?ec@fd@gd@he@ieAifBjhCjiClkCpnCtrCwuC|zC~CBBBBBBBBBBBBBBBBBBBBCCCCDDDDC}{CusCpnCkiBjhBhfBgeBgeBhgBkjBomBsqDvsDzwD~zD|C}C}D}D}C|C{BzB}yA|xA|xA|xA|xB}yB{B~BAAAAAAAAAAAA@~@{x@vs@pm@lj@hfAecCcaDcaDcaEb`Eb`Dc`Db`Ca_A_]@^\>\Z=[Y;[Y;ZY;^\;da{x=tr=jh`]>b_?daAfcAfdChfCkhEmjFnlHpnIrpItrJusKwuLyxL{zL}{L|M}N}O}O}OOONLJIGFDDBAABBBBCCDFGI}J}zJyvIwuIusHtsHtsGttFxvF}zE~DCBBBBBBBBBBBBBBA@@}?wu>qo=hf=b`<][;][;[Y;YW;YW;ZX;ZX;[Y;[Y<[Y<][=_]=a_>ca?gc@if@kh@li@njAojBolColCpnCrpCtrCusCywC}{CBBBBBBBBBBBBBBBBBBBBCCCCDDEEE~|ExvEsqEomDomDmkDkiDkiDlkDnmDpnDrpFurFwtFxvFzwEzwEzwDzwDzwCyvCwtBwsBuqAtpAtpAtpAtpBtqBwtBzwB{A~AAAAAAAAAAA}|?zx?ur?pm?kh@ig@geAecCdbDdbDdbEdbEdbDcaDcaCb`A`^@^\>\Z=\Z;\Z;[Y;`];fc=ok>uq@{AAAAAABBBBB@>{w>spc`@eb@fdBhfBkhDmjEnlGpnGrpItrItrKvtLywL{yL|zL~|M|N|O}O~O~OOMLJHFECBBBBBBBBCCDFGI}J}zJywIxvIvtHusHusGutFyvF~zE~DCBBBBBBBBBBBBBBAA@~z>tq>nlli>hf?heAfdAecCecDfdDfdEfcEfcDecDdbCb`A`^@^\>\Z=\Z;\Z;][;b_;he=rm>xt@~AAAAAABBBBB@>{w>sp_]>a_@db@fdBhfBkhDmjEnlGpnGrpItrItrKvtLwuLywLzxL|zM|{N~|O~}O~O~ONLKIHFECBBBBBBBBCCDFGI}J}zJywIyvIwtHvsHvsGwtFzvF~zE~DCBBBBBBBBBBBBBBAA~z@ws>ok=jgsp>wt>yv>{x>{x>{x>zx>zx>yw>wu>tr>pn>ol>kh>hf>fd?geAgeAgeCgeDhfDhfEhfEhfEecEdbDcaBa_A_]?][>][<][<][yu@AABBBBBBBBB@>xv@AABBBBAA@>{w=rp;hf:`^:ZX:YW:WV:WV:YW;ZX=^\=a_?db@fdBifBkiDnkDolFqnFroHtqHtrJvtKvtKxvKzwK|yL}zM}|N~|N~~NNMKJHGEDBBBBBBBBBCCDFGIJ~{JzxJywJwuJwuJwuIxuG{wG~{EECBBBBBBBBBBAAAA@~@zv?rp=jh=fc;_];ZY9UU8US8SQ7RP7PP7PP7PP9RQ9TS9TS9YW:_\nk>pm>ro>tq=tq=tq=sp=sp>sp>qn=ol=mj=jg=he>gd?fd@fd@fdAgeChgDihDihEjiEjiEgeEfdDecBcaAa_?_]>_]=_]=_]=da=jg=tp>{w@AABBBBBBBBB@>~xv@AABBBBAA@>{w=rp;hf:`^:ZX9YW9WV:WU:YW;\Z=`^=db?hf@jgBmjBpmDroDspFtqGurGurHusIusIvtJxvKxvLzxLzzM||N}|N~NNMKJHGEDBBBBBBBBBCCDFGIJ{J|xJzwJxuJwuJwuIxuG{wG~zE~DDCCBBBBBBBBAAAA|A{x?sp>ljig?ig@ig@kiAljCnlDnmDnmEonEonFhfFgeEfdCdbAb`?`^>_]>_]>a^>fc>li>vs?}y@@ABBBBCCBAA?=|;so8if6[Z4SQ2LJ1JI1HG1GE1GE2HF4KI5NL7SP7VS9]Z;eb=qn>xv@AABBBBAA@>{w=rp;hf;`^9ZX8XW8XW8YW9\Y:_]if@nj@plBsoCurCwtDwtDwtEwuGwuGvtIvtJvtJwtJxuJzwKzyM|{N|{N~}N~N~N~LJHGEDBBBBBBBBBCCDFGIJ|J|yJ{xJyvJxuJxuIxtIzvH}xF|E~EDDCCCCCCBBAA@}@zw?vs?nk>he~z?ABBBBBBCC}D}yExuEvsFurGusGwuHxuHzwI{xI{xI|xI|xI|xI|xI{xI{xIzwIzwIzwIzwI{wI|wI|xI}zJ~zJ~|I}I}J}K}K|L|M|M|N|N|N|N|N~|N~|M~{M~{L}{L}yL|xLzvKyuJwsIvsItqHroFomFlkDigBge@ec@ca?a_>`^<_]<_]<_]=`^=`^<`]<`]mj?ol@om@qoAqoCsqDtrDtrEusEusFhfFgeEfdCdbAb`?`^>`^>a^>b`>he>nk>xu?{@@ABBBBCCBA@><~z8pm6fd4YX3QO1JH1HG1FE1EE1EE2GF4KI5NL7SP7VS9]Z;eb=qn>xv@AABBBBAA@>{w=rp;hf;`^9ZX8XW8XW8ZX9_\:daqm@vr@xtBzvC|xC}zD}zE}zE|zFzxGyuHwsHvsIvsJvtJwvKxwMzyN|zN~|N}N~N~LJHGEDBBBBBBBBBCCDFGIJ|J|yJ{xJyvJxuJxuIxuHzvH|wG~yF{F}EEDDCCCCBBA~A~{@zw@tq@ol>he=c`;][;ZY9UU6RQ5ON5NM5LK4KJ4JJ4JI4KK6NM6RP6TR7[Y:d`~?ABBBBBBCC~D~zExuEurFsqGtqHtsIusIwtIxuIxuIyvIyvIyvIyvIxvIxvIwuIwuIwuIwuIxuIyuIyvIzxJ{xJ|zK|{K}{L~{M~{M|N}O~O~P~P~P~P~P~P~P~N~M}L~{L~zL|xK{wJyuIxuIvsHtqFqoFomDkiBhf@ec@ca>`^=^\=\Z<\Z<\Z;[Y;[X:ZW:ZW:[X:\Y:]Z:`]:c`:gd;jfur?wt@wu@ywAywC{yD|zD|zE}{E}{GhfFgeEfdCdbBb`@`^?`^>b_>ca>if?ol?yu@|ABBBBBBCCB@?=;|x9ok6eb4XV2ON1HG1HF1FD1DD1DD2FF4JI5ML5RP5TR7]Y9fa;rm?ABBBBAA@>{w=ro;he;`]9ZW8YW8YW8[Y:a_;he=pm>vs@|x@~zB|C}C~C~C~D~|E|yFyvFwsGurIurIusKvuLwwLyyM{yM~{M|M}M}KJHGEDBBBBBBBBBCCDFGI~J~{J{xJ{xJyvJxuJwtJwtJxuIyvH{xG~yG{F|F|E}D}C}C}D}D}C~|C}zC|yCyvBvs@qn@mj>gd{w={w>}y?~y@~{A|B|B}C}D~DDDGhfFgeEfdCdbBb`@b`?ca>ec>gd>mj?tq?|y@~ABBBBBBCCB@><}:ws6jf4a^2UR0MK0FD1EC1DB1DB1ED2FE3JI4NL4RP5SR7\Y9fa;rm?ABBBBAA@>{w=ro;he;`]9ZW8XV8ZX8^\:fd;mj=wt>~{@@BCCCCDD|E|xExtFvsHurIurKvtLwuLywMzxM|zM~{M|M|K~JHGEDBBBBBBBBBCCDFGI|J|yJyvJxuJxuJwtJwtJvtJvtIwuHyuGzvG|wG|xG|xE|wE|wE{wEzwDywDywCxvCwtCvsCtpBqm@mi@if>c`<_\:ZX:XV8TR6RP4ON4ML4KJ3II3II3IH3LJ4OM5TR5WU7`]9he;tp=|x?@BBBBBBBBBB~zBxtCtqErpFsqHtrItsIvtJwtJyuJyvJyvJxvJxvJwuJwuJwtJwtJwtJwtJwuJwuJxvJzxJ{xL}zM}zN|N|N~PPPPPPPPPPONNM~L}K}K|J~{I}zI{xHxuFvsEurCqnAmj?if?fd=b`<_]<[Y;ZX:XV9WU9VS9VS9VS9XU9ZW9\Y9a^:fczu?~z???@@ABBCDDDDGgeGgeFfdDecBdb@db?fd?hf?kh?qn@wt@|AAAABBBBAAA?=;{x8qn6db4[Y2PO1IH0DC0DC0CC0CC0DC1EE2IH3LK4QO5SQ7\X9ea;qm?ABBBBAA@>zw=rn;hd;`^9ZX8YW8[Y8`^:if;qn=|x?AAABBBBCC~D}zDyvEwsGurHvrJvsJwtLyvMywM{yM}{M|M|K~JHGEDBBBBBBBBBCCDFF}H|yIyvIwtIvsIvsIvsIvsIvtIvtIwtIxtHyuHyuGyuGyuFyuFyuFxuFwuEvtDusCtsCsqCspCqlBmj@if@fd>a`<][:YW:WU8SR6QP4NM4LL4JJ3II3II3IH3LJ4PN6VT6ZX8da:mi~z@AABBBBBBBBB}zBwtCspEqoErpGsrHsrJutKwuKyuKyvKyvJxvJwvJvuJvuJvtJvtJvtJvtJwuJwuKxvKzxLzxM|zM}{N}O~PQQQQQQQQPONMMLKJJI~H~H|G}zE{xDyvBurBrn@li?if=ca=_];[Y;ZX9XV8VT8TR8TR8VT8XU8\Y9_[;fa|>?@@AABBBBCCCCGgdGgdFfdDfdBec@ge@jg@nk@qn@wt@}z@AAAABBBBB@?=;}z9ro6hf4\Z2US0KI/FD/B@/BA/BA/BB/CB0DC2GF2JJ4OO5RP7[W9da;pm?ABBBBAA@>zw=rn;hd;`^9ZX8YW8\Z8a_:ki;uq=}?AAABBBBCCD|DzxEwtGurHvsJvsJwtLyvMywM{yM|zM~{M~{K}JHGEDBBBBBBBBBCDD~E}zF{xGxvGvtHtrItqItqItqItqItrItrIurIvrHwsHwsHwtHwtHwsHwsHvsHusGtrGspFrpDpnDpmBnkBkh@ge@dc>`_<][:YW:WU8SR6QP4NM4LL4JJ3II3II3JI3NL4SQ6[X8`]:kg~z>@AABBBBBBBB~A{xAurBqnDomEpnGrpHsqJusKwtKyvKyvKyvJxvJwvJvuJvuJvtJvtJvtJvtJwuJwuKxvKyxLzyM|{M}NOPQQQQQQQQPNMKJJIHHGFEED~C|C{xBvs@pm?ki=dc=`^;[Y;ZX9XV8VT8TR8TR8WT8[X8a]9da;lh;so=|w=|??ABBAABBBBCCCCEfcEfcDgdCgdCgdBifAmjAqnAurA{xA~ABBBBBBBBB@?=|;yu9mi6b`4WU2QO0IG/DC.A@.BA.BA.BA.BA/CB1GF2JJ4ON5QO7ZV9c`;ol?ABBBBAA@>zv=rn;hd:a_:[Z9ZX9][9c`;mj}?ABBBBBBCCD|DzxEwuGusGvtIwtIxuKxwLywL{yL|zL}{K}{K}JHGEDBBBBBBBBBCD~E}zEyvEwuEusFtqHrpIrpIrpHspHspHsqHsqHtrHurIvsIwsIxtIxtIwtIwtIvsIvsHvsHtqGrpEpnEpnCnlCkiAgeAec?a_=][;YW:WU8SR6QP4NL3LK3JI3JI3JI4KI4PM5US7_[8fa:qk=yt?}@ABBBBBBAAAA}@{w@uqApmCnlDpmFroHspJurJwtJyvKywKywJxvJxuJwuJwuJwuJwuJwuJwuJxvJxvKywK{yL|zM~|M~NOPQQQQQQQQPNMKJIHGFFFEDCBB~|Azw?sq?nl=fd=a_;\Z;ZX9WU8VT8US8US8YW9]\9db:jf}>@AABBBBBBBBBBBBEgdEgdDheCjgCjgBnkAroAxuA{xA~AABBBBBBBBB@>;yu9qm7da4ZW2ON0KJ.ED-A@-?>.@?.@?.A@.BA/BA1ED2HG4ML5PN7YW9b`;ol?ABBBBAA@>zv=rn;hd:a^9\Z9[Z9_]:eb?ABBBBBBCCD~D}zEzwGwuGwtIwtJxuJyvKywKzxK{xK{yJ{yJ}{J~}HGEDBBBBBBBBBC}D|yEyvEurEsqEqoFpnFpnGpnGpnHqoHqoHrpHtqHuqHurIvsIwtJwtJxuKyvKyvKyuKwuJvtJtrIrpGpnGpnEnlCkiAgeAec?a_=][;YW:WU8TR6RP4NL3LK3KJ3KJ3LK3MK5RP6YV8c`:kg|v?}?@@AABBBBBBBBBBBBEifEigDjhCljCnkBsoAxtA~zA}AAABBBBCCB@@><}:tq8ki6]\3SR1JI/GF-CB,@?,>=,?>.?>.@?/A@0A@1DC2GF4LK5ON7XW9b`;ol?ABBBBAA@>|w=so;ie:b_:][:\[:`^:fc?@ABBBBBBAA@@~z?xt?pm@liBkhCmjEolGqnIspIvsJxuKywKywJxuJwtJvtJvtJvtJvtJwuJxvJywJzxJ{yJ}{K}LMMNNNNNNNNMMLJIGFDDDCCCCBBBBA@zx?tr?ki>ec<^\<\Z:ZX9ZX8\Z8^[8da9jh;sp=zu?}@@@@BBBBBBBBBBBBBBEkiEljDmkCqnCsqByvA~zAAAAABBBBCCBA@><~z9pm6fd3XW1NN/EE.CC-@?,>=,=<,>=.@?.A@/A@0A@1DC2GF4LK5ON7XW9b`;ol?ABBBBAA@>{x=sp;if:ca:_]:^]:b`;he=ro=zw?@@AABBBBCCDDE}G|yG{xIyvJxuJwtJwtJwtJwuJwuIwvIxvHywF{yF~|D~CCBBBBBB~B|B{xDyvDurDrpDpnDomDolDnlDnlEomFonGpnGroGrpGtpHtqIvsJwtKyvKzwL|yM|yM|yM|xMzxLywJwuJusHsqHqoFnkDliBieAgd?c`=_];\Z;ZX9WU8SS6OO5NN5NL4ML4NN4PO6WV7`]9lh;tp=|>?@ABBBBBBAA@@~z?vs?nk?jgAifBkhDmjFolHqnHtqJvsKwuKwuJwtJwtJvtJvtJutJvtJwuJxvJxvJzxJ|zJ}JJKKLLLLLLLLKKJHGEDBBBCCBBBBBBA@~{?wu?mk>fe<`^;^\;\[:][:a^:eb:mi;tp=|x=}?@@AABBBBBBBBBBBBBBDkkDmlDomDsqBvtB|yB}BBBBBBBBBBBA@@><}z9ol6fc3XU1MM/DD.BB.?>-=<-<<-==-??.@@/A@0A@0DC1GF3LK4ON6XW8b`:ol@BBBBBBBA?|y>tqso>|w@AABBBBBBBBCCDF{F}yHywIxuIvsIvsIvsIusIusHusHvsGwtEyvEzxC|zB~{B}B}B}B}B}C|C~zC|xCyvCvtCspCqnColCnlCnlDnlDnlEomFpnGpnGqoGrpGsqHtrJvtJwtLyvM{wM}yN}zN}zN}zN|yM{xKyvKwtIurIspGolEljCifBhe@da>`^<][<[Y:XV8TS6PO5ON5NM5NM5PO5RP6YW7a^9mj;ur=}?AAABBBBBBA@@?~y>vs>nk>ig@geAigCkiEmkGomGrpItrKutKvtJvsIvsIusIusIttIttIuuIwuIyvI|xI~zI~IIIIJJJJIIIIHGGFEDCBBBBBBBBBBBAA|@yu@ol?hf=b`<`^;`];a^;eb;jf;rn}>@AABBBBBBBBBBBBBBBBDpoDrqDusDywB|zBBBBBBBBBBBBBA@@>~-=<-<<-==-??.@@/A@0A@0DC1GF3LK4ON6XW8b`:ol@BBBBBBBA?|y>tq{w@AABBBBBBBBCCDF~F|H{xIxuIvsHurHspHspHspGsqFtqFurEwtDxuCzwB{xB}zB}zB}zB}zB}zC}zC{xCzvCxtCwsCuqCspCqoCqoCqoDqoDqoErpFrpGsqGsqGsqGusHvtJxvKyvM{xN}yN{N|N|N|N~{M}zM{xLyvJwtJurHqnFnlDjiChgAdc?`^=\Z<[Y:XW8VT6RQ5PP5PO5QP5SR6VU8^\9fc;rn?AAABBBBBBA@@?}y>us>mk?hh?ee@geBigEkiGmkHpnHrpIsrItrHtqHtqHtqHtqItqItsIutIwvIxvI|yI|IGGGGFFFFGGGGFEEDCCBBBBBBBBBBBBAA}@zv?rn?lh>fc=da=da=fc=li=rn=zv>}?@@AABBBBBBBBBBBBBBBBDvsDxuDzxD~|BBBBBBBBBBBBBBA@?=~{;tr7he5`\3TP1KI/DB.BA.?>-==-=<->=-@?.A@/A@0A@0DC1GF3LK4ON6XW8a`:nl@BBBBBBBA?|y?tr=jitq?|x@@ABBBBBBBBCDDEF}G{yHxuHurHtqHsoHrnHrnHrnFrpEsqCusCwtCyvC{xC}zB}zB}zB}zB}zC|zC|xC{wCyvCyuCwtCvsCvsCusCusCusCusDvtEvtFvuFvuFvtGwtIxuKzwL{xN}zO~{O}O}O}O|O|N~{N|yMzwKxuJwtHspFomDkiCigAec?a_=][=\Z;YW9WT7TR6RQ6RQ6SR6WV7ZY9ca:kitr>lj?gg?dd?fdAhfDjhFljGomGqoHrqHsqHspHspHspHspIspIurIvsIxuIyvI}zH}GGFEEDDDDEEEEDDCBAAAABBBBBBBBBBBB~A{w@so@nj?hf>fd>gd>kg>rm>xt>|?@AABBBBBBBBBBBBBBBBBBD|D}D~DBBBBBBBBBBBBBBA?=;wu9nk7b_5\Y3RO1KH/DC.CB.A@-@?-?>-?>-?>.@?/A@0A@0DC1GF3LK4ON6XW8``:lk}@BBBBBBBA?zx>sq>ki=ed=b`=b`=fd?li?uq?|x?@ABBBBBBBBCDEEE~E{xFwtFspGsoGqmGplGplFpmEroEsqDvsCxuC|yC~{C|B|B|B}B}C|C{C~zC~zC~zC~zC|yC|yC}zC}zC}zC}zC|zC|zD|yE|yEzxGzxIzxK|yL}zN~|O}OOOO~O~N}N~{M|yKzwKyvIurGqoEmkDkiBge@ca>_]=][;ZX9XV7VT7TS7UT8XV8^\9b`;ki~z?AAABBBBBBBBA@@?{x>tr>lj?gg?dd?fdAhfBjhDljDnmFpoGrqGsqGspGspGspGspIspIuqIvsIxuIzwI~{HHGEDBBBBBCCCCBBBBAAAABBBBBBBBBBBB~A}yAuqAplAkh@ig@ki@ol@vr@|y@BBBBBBBBBBBBBBBBBBBBBBCCCCBBBBBBBBBBBBAA@>=~{;sp9jh7_]6YX4QO1KI/FD/DC/BA.A@.A?.@?.@?/A@/A@0BA0DC1HG3LK4ON6XW8`_:lj}?AAAAABA@>zx>sq>ki>fd>ca>ca>ge@lj@ur@}y@AABBBBBBBBCCDDD}D{wEvsEroFqnFpmFpmFpmEpmEroDtqDxuDzwD~{C~CBBBBBBBBBBBBBBBBBB~C}E{F~zH}yJ}yL}yL~{N}O~OOOOON~M|M}zL{xLzvJvrHroFmkEkiCgeAca?_]>][~?ABBBBBBAAAAAA@>{x=tr=lj=hg>ed?fdAhfAjhCljCnlEpnFqpFrpFroFroFrpFrpGrpHtqHurIxvJ{xJ|JHGEDBBBBBCCCCBBBBBBBBBBBBBBBBCCCC~B~yBvsBqnBmj@kh@mj@qn@wuA~{ABBBBBBBBBBAAAABBBBCC~C|C|CCCCBBBBBBBBBBBBB@><|;xu9lj8ca6ZX6VU4OO3JJ1FF1EE1EC0DC0CB0BA0BA/BA/CB0DC0GF1JI3NM4PO6WV8^^:ih|x?AAAAA@@?|?wt>qn>ih>ec>ca>ca>ge@mj@vr@}y@AABBBBBBBBCCDDD}D{wEvsEroFqnFpmFpmFpmEpmEroDvsDzwD~{DCCBBBBBBBBBBBBBBBBBBCEFH}J}L}L~N~OOOOOON~M|M}zL{xLzwJvtHsqFomEmkCigAec?a_>_\<[Z:ZY8XW8XV8[Y9`];he;nj=xt>|?@ABBBBBBAAAAAA@}>yu=sp=lj=hf>fd?hfAjhAmkComDqnDspEtrEtrEtqEtqFtqFtqGspHtqHurIxuJ{xJ|JHGEDBBBBBCCCCBBBBBBBBBBBBBBBBDDCCD~yDwsDspDolBnkBolBspBzwB}BBBBBBBBBBBAAAABBBB}C}yCyuCwtCvtCCCCBBBBBBBBBBAAA?=;zw:rp8ge7_]6VT6SR5NM4KJ3HG2HF1GF0GE0FE0ED0ED0ED0FE1GF1IH2KJ4NM5PO7VV8]\:gews?~y?~@@@@??|>{w>sp>nk>he>db>b`?da?he@nk@ws@~z@AABBBBBBBBCCDDD}D{wEvsEroFqnFpmFpmFpmEqnEtqDwtD|yD}DCCBBBBBBBBBBBBBBBBBBCEEGIKLNOOOOOO~N~M~|M}zL{xLzxJwuHtrFpnEnlCjhAfdlor:[Y9YY9YY9]\:ca}y?AAAAABBBBBB@@@@~?|y>tr=pm=ki>hf>hf?jhAnkBpmBspCurCwtDxvDxvDwuDwsEvrEuqFtqHuqIvsIyuJ{xJ|JHGEDBBBBBBBBBBBBBBBBBBBBBCCCCDDDD~D}zDwtEtqEpmColCqnCurC|yBBBBBBBBBBBBAAAAAAA}AzwBvsBroCqnCpmCCCCBBBBBBBBBBAAA?=~;us:nk8b`7ZY6SR6QP6NM4LK4JI4JI4JI2II2II2HG2HG2HG2HG3IH3KJ4NL4PN5QP7VU8\Y:da:ifzv>{w>{w>{w=zv=vs=sp=mj>if>eb>c`>c`?da?hf@nl@wt@~z@AABBBBBBBBCCDDD}D{wEvsEroFqnFolFpmFpmEqnEurDyvD|DDCCBBBBBBBBBBBBBBBBBBCDDFIKKMNOOOOO~N~M~|M}zL{xLzxJwuHtrFpnEnlCjhmpp:\Z9\Z9\Z9a_Wfr@~@@AAAABBBBBBA??=|xhe>jg?nkAroBvsBzwC|xC~zB~|B~|B~{C|yD{wFyuFwsHvsIwsIyuJ{xJ|JHGEDBBBBBBBBBBBBBBBBBBBBBCCDDEEFF|F|yFxuEtrErpEqoEspDvsC|yBBBBBBBBBBBBAAAA@@~{AxvArpBolBkhCjgCifBBBBBBBBBBBBBBAAA?=|;tq:li8`_7YX5RQ5RP5ON5MM5LL4LL4LL4JK4JJ3JI3JI3JI3JI3KJ3MK4NL5PN6QP6VT7[X9a^9da;jgb_?ca@hfAnlAxuA~|AAABBBBBBBBCCCCD}EzwEvsFroGqnGqnGqnGqnFroEvsEzwD}CCCCBBBBBBBBBBBBBBBBBBCCDFHJJLMOOO~O~O}N|M|M~{L|yL{xJxuHuryrxmGOTd_~;\Z:\Z:]Z:b_at"/SelAABBBBAAAAAA@?>z=wsqm@wsA{xA|B~BBBBB}C~{EzwExuGwsGwsIyuJ{xJ|JIHFECCCBBBBBBBBBBCCCCBBBBCDDEFFGG|G|yGxuFtrFrpEqoDsqDvsC|yB~BBBAAAAAAAA@@@@?}?zv@tq@nkAkhAhfBgdBgdBBBBBBBBBBBBBBAA@>~<{v:ok9fd7\Z6VU6QP5QO5PN6ON6NN6ON6ON6NN6NN5NM5NM5NM5NM5ON5ON6PN6QP6RQ6US8XU8\Y8_\8c`9eb:gd;he;if;if;ifb`?ca@hfAnlAxuA~|AAABBBBBBBBCCCCD}EzwEvsFroGqnGqnGqnGqnFroEvsEzwD}CCCCBBBBBBBBBBBBBBBBBBCCCEFHHJKMNN~O}O}N|M|M~{L|yL{xJxuHurj`sɄ"%[dqYzyr??}(Rŋ%&b(1nAABBBBAAAAAA@>{w=vr;nj:if:db:ca:db;gd=mj>tp@|xA}ABBBBBBCD~{EzxExuFxtHytIzvJ~zJ~IHFEEDCBBBBBBBBBBCCCCBBBBBDEGGGG~G}zGzwGvsFtrFrpEqoDsqDvtC|xB|BBBAAAAAAAA????}z>xv>ro?mj?he@ec@caAc`Ac`BBBBBBBBBBBBAAA?><|w:to8ie8a_6YW5SQ5ON6PO6PO7QO7QO8RQ8RQ8RQ8RQ7RQ7RQ7RQ7RQ7RQ7RQ7SQ7SQ7SQ7US8VT8XV8[X8]Z9^\9_^:`^:a^:b_:b_;a_;a_;`^;`^<_]=_]=`^>b`?ca@hfAnlAxuA~|AAABBBBBBBBCCCCD~EzxEvtFrpGqoGqmGqnGqnFroEvsEzwD}CCCCBBBBBBBBBBBBBBBBBBBBBDEGHJJLMM~N~N~N~N|M~zL|xL{wJxtm(Wċ!)N]kY|zq!,MMU|rp>lj?ge?ca@b_@`]A`]A`]BBBBBBBBBBBBB@?=}<|x:so8jg6`]5[X5UR5PN5NM6ON6QP7RP9TR:UR:WT:WU:WU9VU9VU9VU9VU9VU9VU9UT9UT9TS9TS8US8VS8VT8WU7XV7XV8YW9ZX9ZX:[Y;\Z;\Z;][;][<][=^]=`^>b`?ca@hfAnlAxuA~|AAABBBBBBBBCCCCD~EzxEvtFrpGqoGqmGqnGqnFroEvsEzwD}CCCCBBBBBBBBBBBBBBBBBBBBCCDFFHIKKMNN~N~N~|M~zL|xL{wJxtuKU#*S`i[b!-NKZ7\#6g)L$}y>}y>|x>|w>{v>zv>yw>wt>sq>ol=kh=ec>b`>_]?^\?^Z@]Z@]ZBBBBBBBBCCBAA?=;|x9vr7lh6d`4[W4WT4RP4ON4NM5PO7RQ8SR:UT:VU:XW;ZW;ZW;YX;YX;YX;YX:XW:WW:WV:VU9UU9UT8TS8TS7UT7UT7UT7UT8VU9XW:XX:ZX:[Y:[Y<\Z<\Z<\[<^]=`^>b`?da@ifAolAxuA|AAABBBBBBBBBBCDEF{yGvuGrqGqpGpnGpnGpnFqoEurEyvD|CCBBBBBBBBBBBBBBBBBBBBBBBBCEFHIJKLMM~M~M}L}{L{yLzwJwsz-3m#(X/<2E&4EcTz7jDq[@p7o;oАҐ+4|$_TeBBBAA@>>{~?ABBBBBBCC~D~yExuEvsFurGvrGxtHzvH|yH{H}GGFEE~D~C}C|C~{C~{C{C{C{C{D|D}E}E~FFFFGGHH}H~|H|zHywHwuHusHsqGrpGqoFqoErpEsqDusCwtCyvByv@yv?xu?vs>ur>ur=tq=sq=rp=rp=sq=qo=nk=jg][>]Y?\Y?\YBBBBBBBBCCB@?=;|x9rn7lh5b^4[W2TP2RO2PM3NM5NM5PO7RQ9TT;XVcb?dc@ihApmAyuA|AAABBBBBBBBBBCDEF{yGvuGrqGrpGpnGonGonFpoEsrEwuD}yC|CBBBBBBBBBBBBBBBBBBBBBBBBCCDFGIIKLMMM}L}{L{xyՐ+<"0{?h{?ABBBBBBCCD~zExtFtqFroFrpFtrHvsHxuHyvH{xG|zG}zF}yE|yE{xDyxCywCwwCvvCvtCwsCwsCxsCxsDxtDzvE{wE}xF}yF}zG}{G}{H~{H~{H}{H{yHzxHxvHwuHusHsqHqoGqoGqoFqoEqoErpDrpCrpCrpBro@pm?nl=lj[Y>[Y>ZX>ZXBBBBAAAABBA?=;|y9tq7jf5c_3ZV2TQ2OL2MK3MK4MK6OM6PO8TS:WU<[X<]Z=_\=`]>b_?b`?b`?b`?b`>b`>`^=^]=\[a`?dc@ed@jiApnAyvA|AAABBBBBBBBBBCDEF{yGwuGrqGqoGomGnmGnmFonErpEurD{vCyC}BBBBBBCCCCBBBBBBBBBBBBBBBBCEEGHJKMMM~M~{tAi7`=f9g9p7n7n7l?ABBBBBBBBB}yCwsDspFpnFpnFrpGsqGusHvtHxtHxuHxuGwuFwuFvtEtsDtrDrrCqqCqoCrnCrnCsnCsoDtpEvrEwsFwsGxtGxuGyvGyvHyvHyvHxvHxvHwuHusHtrHspGrpGqpFpoFpoEpoEpoDonDomDolBnkAlj?jh>he]Z>_\?a^?c`@ebAfcAfcAfdAfdAfd?db>ba=`_<]\<[Z;YX9WV8TS8RQ7QP7QP8QP9RQ9SR:UT;XV;ZX<\Z>^\>^]@``AcbAfeAgfAlkArpAzxA|AAABBBBBBBBBBCDEF{yGwuGrqGqoGomGnlGnlFolEqnEtpDxsCyuC}yB|B~B~BBBCCCCBBBBpszwypBBBBBBBCEFHIKLM}|z8d:j8l8l9n;l:l;nq9X!*v%.x\nu@?=zw?ABBBBBBBBB~zBvsCqoDnlEolFomFonGqoHrpHtpHtqHtqGsqFsqFrpEpoDpnDnnCmmCmkCmjCmjCnjCnjDokEqmErmFroGsoGtqGurGurHurHurHtrHtrHsqHrpHrpHqoGpnGpnFpmFpmEpmEomDnlDljDliBjgAge?eb>c`<`\;][;[Y:[Y:[Y:ZX:ZX;ZY;ZY;ZX;ZX<}y:vs8ki6b`4XW2TR1NL1KH1IF2JH4LJ5NL7PO8RQ:VU]Z>^\@b^AeaAgcAgdAgeAhfAhf@ge@ec?cb=a`=_^;]\;[Z9WV8UT8SR7RQ7RQ8RQ8RQ9SR;UT;WU=YW>\Z>^\?_^@ba@dcAgfBhfBmkBrpBzxB~BBBBBBBBBBBCCDDE~E|xEwuErqEqnEolEnkEnkDnlDpnDroDtqCvsCxvC{xC}zC}zC{C}CDDDDCCo}Q}0Y=g D-UlBBBBAABDEGIKLL~Hq3]8k:o:o;n;k:l:l8j-^(W9l9l9l._(Wa^<^\;\Z;ZX:ZW:YW:XW:XW;YX;YX;YX;YX;YW;YW;XW;XW=WV=WV=WV=WV@@@@??@@?=<~z:tq8lj6a`5YW3QO2OM1KI1HG1HG2JI4MK7OM9RQ9TS;XW<[Y>_\>`^@daAgcAifAjgAliAmkAmkAmkAkj@ji>hg=gf;cb;`_9\[8[Z8YX7WW7UU8UT8UT9UT;WV;YW=[Y>^\@`^@a`BdcCfeCihCjhComCtrC|zBBBBBBBBBBBBCCDDE~E|xEwsEroEqmEokEnjEnjDnjDolDpmDroCroCtqCurCvsCvsCwuDzwE|yF|yF|FudT)K%H4=FJACh{BBBBAABCCEGIJn4d8l:l:l:l:l:l:l5f&T#R-]:l5f&T#R-]:l:l:l:l:n=VU[,0h!/\?>_\<[Y;YW;WU:VT:VT:UT:UT:VU:VU;WV;WV;WV;WV;WW;WW=WV=WV=WV=WV@@@@????>~<|y;vt9lk8fd6\Z5US3NL2LK2JI2IH2IH3KJ5OM8RP:US:WU;ZX=\Z?`]?a_@eb@heAliBnkBpmBroBtqBsqArq@qo>om>ml^[>a^@c`AdbCgeDigDljCljCqnCvsC~zBBBBBBBBBBBBCCDDE}E{wEvrEqnEplEnjEmiEmiDniDnkDokDolComConCpoCqpDqpEsqEusFwuGxvG|ysyk]2^5"N)X.\0_4d=oExnBBBBBBBCEFHwn7g9n:l9j.^(W:l5e'Q$R+]:l5e'Q$R+]:l:l:l:l:l9p%@$3\%2\!*]EW>xv@AABBBBBBBB~B|yBtqBomBliCliDliEkiEkiEljEnlFomFomFomFomFnlFnlEmkEljDljDkiCjhCjhCigCigCjgCjgEkhEmjEmkEomGpmGpmGpnGpnGpnGpnFpnFpnFomFomEnlEnkEnkEnjEmiEkiDkhCifBheAec@b`>^\=\Z;XW:UU:SS9RR9RR9RR9RR9SS9UT:VU:VU:VU:VU;VUyw>yw=xv=vt=vta_?c`@gd@khAplBsoBwsBzvB|xB{yB{yA{x@yw?xv?tt>rqa_?daAfcAhdCjgDliDnlDnlDspDxuD{BBBBBBBBBBBBCCDDE}EzvEurEqmEplEnjEmiEmiDnjDnjDnkDnkCmkCmkCmmCmmDmmEonEqpFsrGtsx[} - .I-[,[,[,[/^3c;l;j|fBBBBBBBCEFH@i7`:k:n5f&T#R-]8i#Q M*Y:l8i#Q M*Y:l:l:l:l:l9l@o)> b*-oy>yv@AABBBBBBBB~B|yBtqBomBkiCjhCigCigCigCjhCljDmkEnlFnlFnlFnlFnlEmkEljDkjDkiCkhCkhCigCigCifCifEifEkhEmiEokFplFpnGpnGpnGpnGpnFpnFpnFomFomEnlEnkEmkEmjEmjEkhDifCgdCfdAcb>`_<\[;ZY:VU9SS9QQ8PP8PP8PP8PP8QP8SR9TS9VU:VU;VU;VUqo>qo>qo>qo=qo=qo^\>b_?da@ie@miAsnBwrB|wBzB}B~B~A~A}A~|?|z>zx=xuzv@AABBBBBBBB~B|yBtqBolBkhBjhBigBigBigCjhCljDmkDmkEnlEnlEolEolFnlFnlEmkEmjDliDkhCkhCjgCifCifCifCkhDmiDokEplEqnFqoFqoFqoFqoEqoEqoEpnEpmDplDnlDmkDliDkiDjgCifBgdBed@bb>`_<\[;ZY9VU8TS8RQ7QP7PP7PP7PP7QQ7SR8TR8TS9UT:VU:VU;WVge>ge>ge>ge=fe=fe`^>ca?dc@ig@nlAurBzuB{BBBBAA@@??>}=}y|w@AABBBBBBBB~B|yBtqBolBkhBkhBigBhfBhfCigCkiDkiDmkEnlEnlEolEolFpmFpmFolFolEnlDmjCmiClhCkhCkhCkhCmjDokDqmDsoDuqEurEurEurEurEurEtqEspEqnDpnDnlDmkDkiDkiDigCgdAeb@cb>``<^]:ZY:XW9US9SQ8QO7PN7ON7ON7ON6PO6RQ7RQ8TS9TS:VU:WV;WV_]>_]=_]=_]<_]<_];_];_];_];^\;][;[Y:YX:WV:UU:UT:UT:VT:WU:YW;YW<[Y<\Z=][>][>_]?a^?ca@ed@jiAonAwtB|yBBBAAAAAA@@?>>}=zwnk@pmBqnDqnDqnEqnFroFtqFtqFxuF|yFECBBBBBBBBBBBBBBC~{CxuDspDolDnkDmjEmjEmjFnkFnkEolEolEnlEnlEnmEnmFonGqnGroHtq\9F.Z-[/]/_/_-\)W-\3e3e8iX|DCCBBn{yIp>e=j:l8j&S!N#P6k3e&T L.];l1c&T L.\;nenIV$&b .Z!)[?|y>ro=lilg>vq?}x@@ABBBBBBBB~B}yBuqBplBkhBjhBhfBgeBgeChfCjhDjhDljEljEnlFnmFpmGqmGqmGpmGpmFpmEnkEmjDliCliCliCmjColCrnCtpDvrDxtEyuEzvEzvEzvEyvEwtEusEsqEqoEomCljCjhCjhChfBec@b`@a`>_^<\[:XW:VU8SR7QP7ON6NM6NM6NM6NM6ON6QP7QP7SR8SR:UT;VU;VUZX>ZX=ZX=ZX^\?^\?_]?_]?a_?ca?ec@ed@jiApoAywB|BBBAAAAAABBB@?>>{>|w>yt>ws?xtAxtBwtDvsDurFurGvsGwtGwtGzwF~{FECBBBBBBBBBBBBBBC}zCurDqnDmkDmkDmkEmjEmjFnkFnkGolGolGpmGpnGpnGpoHqpIspJtq|Oz<,X.[/]0_0`-\+Z2b6g5f0a1`=dEDBBih;b5`7j9g=n:l+Z M"O5e9j"N M-Z?n5e!L M'L5W8]8c8f:k;n7l8n:j:`"6"6Z(%bHS?wt>ol=jfxs?~z@@ABBBBBBBB~B}yBuqBplBkhBjhBhfBgeBgeChfCjhDjhDljEljFnlGnmGpmGqnGqnGqnGqnFpmEnlEmkDmkCmkColCqnCspCurCyuC|wC~zD|D|D|D|E|E}zEzxEvtEtrEpnDmkBjhBhf@ec@ca>`^>_]<][:ZX8VT8TR6QP5ON5ML4LK4LK4LK4LK5ML5ON6ON8QP8RQ:SS;TS;US^\>^\?`^?`^@`^@a_@ca@ecAeeAjjAqoA{wB}BBBBBBBBBBBA@@?>>}?{?~z?~zA~zB}yD{wEzvGyvHyvHyvHyvH|yG|GFDCCBBBBBBBBBBBB~C|yCvsCqnCmkDljEliFliFliFmjFolHpmHpmHqnHqoHroHrpIsqJuqKvr: 0!K-Y.\/_0`/_/^1a1a/`*Z)X'T=dEECnpb2`li=he=b_<_\<\Y<\Y<\Y<^[<`]][][>][?^\?_]?`^?`^@`^@`^@b`@b`Ab`AcaAecAgeAgfAljAroAzwB}BBBBBBBBBBBAA@@@@@@AABD}F~{H|yI{xI{xI{xI~zI}GFDCCBBBBBBBBBBBB~C{xCspColCliDliEliFliFmjFolFqnGqoIsoJspJuqJvrJvtKwtKwvKxwE6)S,Y.]/_0_.]1a+['U'V,[2c5gGpƄGGwz|7f4e6f7a?i:n9j"N M+Z:n=n9l8n?j4Z(:+<&1u$-j$,k&/p'2u*8-A3V9g:l9m:nig=ge=casq>{y?}ABBBBBBBBBBC~zCvsCqoCljCjhChfCgeCgeChfCjhDjhEljFljGnlHnlHpnHqoHroHroHroGpnFpnFpnEpnDqoCtqBwtB{xB{BBBCCCCCCCC~zCzvCspBmlAhg@fd?c`>`^<\Z<[Y:WU8US6QP5ON3ML2KJ2IH1HG1HG1HG2HG3IH5KJ5LK7NM7ON9QP9QQ;SQ^\>_]?_]@_]@_]@`^@a_Ab`Aca@db@dbAdbAecAfdAhfBhfBmkBspB{xB}BBBBBBBBBBBBBAAAA@@ACDFG~I~{J}yJ|yJ|yJ{I~GGEDBBBBBBBBBBBBB}AzwAroBnkBkhCkhEkhFliFnkGpmHroHtqIvsJvsKwsLwtLxvLyvLzxL{ynf5,X,Y.]/^-\0`,[+Z/_2b4e4f5fBkÆJs{oBj4b4^9a4a,N

    e/E(6'2z%0v$0s$2y%6%7'5|(5{-G6`9k9k:gƄjdwAxvArp@mk?ig?ge>ec=db=db=fc=he=kg=mj>nl>sq?yv?}@@AABBBBBBBBC{CwsCqnCljCjiChgCgeCgeChfCjhDjhEljFmkGomHonHqnHroHroHspHspGrpFrpFspEsrDtsCwvB{yB}BBBBBBBBCCCC|C{wCspBlk@fe@db>`^=][;ZX;XV9US7SQ5OM4MK2JI1HG1FE0ED0ED0ED1ED2FE4HG4JI6LK6LK8NM8PN:RP;RQ;RQ_]>`^?`^@`^@`^@a_@caAcaAecAfdAfdBfdBgeBhfBjgBjgBnkBspB{xB}BBBBBBBBBBBBBBBAAAAACDFGI}J~{K}{K~{K}JHGEDBBBBBBBBBBBBB}AzwAroBnkBkhCkhEkhFliFnkGpnHtqHvsIxuJyuKzwLzwL|yL}zL}|L~|z:;+W,Y-\.],[-]/^4d5f2c0`,\(T%OLy{6f4b8d0O1M0U2R;i7lmj>qn>sp>vs?wt?{x@}@@@AABBBBBBBBC{CwuCqpClkCjiChgCgeCgeChfCjhDljEnlFnlGpnHqoHspHtpHtpHurHurGtrFtsFvtExvDywC}{BBBBBBBBBBBBBB}B{xBrpAkj?dc?b`=][;YW9US9TR7QO5OM3KJ3IH2GF2ED1CB0BA0BA0BA0CB1DC1FE2HG4JI4JI6LK6NL8PN9PO;PO;QO;QO=VT=VT=VU=VU^\>^\>_]>_]?`^@`^@a_AcaBcaBecBfdBfdCgeCgeChfCjhCjhCnlCspC{xA}AAABBBBBBBBBBBBBBBBBBCEFH}I~|K}{K~{K}KIHFECBBBBBBBBAAAA}AzvArnBmjBjgCjgCjhDliFnkGpnItrJwuJywKzwK|xK|yK~{L|L|L}Lx +B+W,Y-\,[,[-\3d2b-],[-]0`6g6eÊm@l3^.Y9^1S+E4T7S6\=p=ndb>a_<\Z:WU8SQ8RP6OM5MK3IH3GG1EE0CB0A@/@?/@?/@?/A@0BA1DC1FE2HG2IH4KJ6ML8ON9ON9ON:PO:PO=VU=VU=WV=WW^\>^\>_]>_]?`^@b`@b`AdbBecBgeChfChfCigCjhCjhCkiCkiCnlCrpCxvA}|AAABBBBBBBBBBBBBBBBBBCEFH}I~|K}{K~{K}KIHFECBBBBBBBBAAAA}AzvArnBmjBigCigCkiDljFpnGrpIvtJzwJ}zK~zK|K}KLLL FF+W,Y,[+Z+Z*Z.^+Z+[0a4d8k4d8hȔrq,\7Y4Z1R4W0L-C,B%?;k9o5`9c5S/G);&<&G'P'S%R#P#P#Q#R"P"N'Q1_9l;n*C (joljvAtqAroAqmAomAomAqoAtpAxt@|w@{@@AAAABBBBBBBBCCCCD|DxvDsqDnlDljDjhDigDigDkiDmkEomEqoFroFtqFusFwuFxuFxvFywFywEywE{xD}zD}CCCCBBBBBBBBAAAA|Azv@pm?ig=b`<_]:ZX8US6QO5PN5ML4KI4HG3GF1ED0CB0A@/@?/@?/@?/@?.@?.BA/DC0FE0GF2IH4KJ6ML7ML9ML9NM9NM=VV=VV=WW=YX_]>_]>`^>a_?b`?ca@dbBfdCgeCigDjgDkiDkjDkjDljDljCljCnlBqpBwtA{xA~AABBBBBBBBBBBBBBBBBBCEFH}I~{K}{L~|L~LJIGFDCCBBBBBBAAAA{AyvAqnBmjBjgCjgCliDmkFqoFtrHzvI}zI}I~IKKKKL#FI+X,Y,[*Y(V'U(W)X-\2c/^6i,Z*Y~Ԑ;f3Z5[5T.E/F0F)60B*5~4Hfd<_]<\Z:WU8TR6PO6ON4ML3JI3HG2HG1FE1DC0BA/A@/A@.@?.@?.@?.BA/CB/ED/ED1GF3IH5KJ6LK8LK8ML8ML=VV=VV=WW=YW`^>a_>b`>ca?ca?ec@geBigCjhCljDmkDnkDnlDnlDnlDnlCmkCnlBpnBtrAvuA{zA~ABBBBBBBBBBBBBBBBBBCEFH}I~{K}{L~|L~KKKIHFFDCBBBBBAAAA{AyvAqnBmjBjgCliDnkEpmEtqExuE~{G~GGGIIIIJd 1#N+W+Y+Z,[*Y!N$R$QH(W1a2c3b"N{֓4^6X/O/H/C,<(:-4z$(j+5"-u0X2[-N,D+D(H'N$S$R%R'Q$R R#T%R!S&SN'T6i0ZizGvrFwsDwuCxuCzwB{yB}zB}zB}BBAAAABBBBBBBBBBBBCCCCD|DwuDrqDnlDmkDljDljDljDlkDnmDrpDvtEyvE}yE{E}E~EEEDDDDCCCCBBBBBBBBBBA?z?wt=lj=db;][:ZX8US8RP6OM6NM4ML3LK3JI2JI1HG1GF0ED/ED/CB.BA.B@.A@.A@.BA.BB/CB1ED3GF5IH6KJ8ML8ML8ML=WU=WU=XV=ZX=ZY=\[=]\=^\>_]>`^>a_>a_?a_?b`?ca?ec@ecAgeAigBkiCmjColDpmDpmDpmDpmDomDmlDlkDlkCnmBpoAsrAxv@}z@AAAABBBBBBBBBBBBBBCEEG}I~{K}zK~{K}LLLJIGFDCCCCCCBBBB{ByvBqpBmlBkiCljColCroCxtE{xE~EEFGHHHHI0Y#M+X+Y-\)X%S/`$R78:?%R:l"M}w0Q.P-@*80 :$C$@'E%L%O9h4b3_3]3]+V%Q$Q N N M!NK"O$Q$R$S$T%S$TP}sHvsFwtExuEzwD{yC}|B~BBBBBBBBBBBBBBBBBBBBBCCDDE~|EwvErqEnlEmkEliEljEljDmlDpnDsqDxuD|wD{D~DDDDDDDDDBBBBBBBBBBBBA@@?~z>vs=jha_>b`>ca>ca@ca@db@fd@hf@ig@kiAnlBpnCroCtqDuqDuqDuqDtqDrpDonDmlDkjCkjBkjAmlAqp@vt@|zA}AAABBBBBBBBBBBBBBCEEG}I~{K|yK|yK~{L}LLLKIHFFDCCCCBBBB}{CxvCrpBomBnkColCspCwsC}yC}CCCDEFFFFG#IH,Y+X.](V#P$Q<89989 MGyx$86N.>"1z(L&U(U#V$S%S'VH~>p;n5f:j(V$R#Q!N!N LKJH M"N&S&S$QFuԏuIvsIvtIxvH{xF|E~CBBBBBBBBBBBBBBBBBBBBBBCCDD~E}zEwtErpEnlEmkEliEljEljDmkDqoDurD{wC{CCCCCCCDDDDBBBBBBBBBBBBAA@>|x=tq;hf;`^9XW9UU7RR6QQ6QP6RQ6SQ5TR5TR5TQ5TP4SP3QO2OO1MM1JJ0HG/FF/DD.CB.CB/CB1ED3GF5IH6KJ8ML8ML8ML>XV>XV>YW>[Y>]Z>_\>`^>b`?b`?db?ec?ec@ec@ge@ig@kiAmkAqoBsqBusCwtCyuDzvDzvD{vDytCvrCrpComCkjBii@ih?ji?mk?pn?vt@{x@~AABBBBBBBBBBBBBBCEFH|I}zI{xJ|yJ}zK~{K}LLKIIGFDDDDDCCCC}zCxuCtqDqoDqoCsoCwsC{wC}BBBBCDEEEFGuIuC-Z+X,[(V$RJ999::979Rzɋ0?+4"2(J(V$Q$Q$P$P H%O2b/c/^(U0a(V$R$Q M MIEEEFJ$SMLosJwsJwtJwuJyxI}{GECBBBBBBBBBBBBBBBBBBBBBBCCDD{E{xEurEqoEnkEmjEmjEmiEmkDnlDrpCvsC|yB}BBBBBBBCCCCBBBBBBBBBBAA@@?=xw|gf>cb?ca?ca@eb@gdAjgBnkBspCwtDyuD~zD~DCCCCBBBBBBCEEG~zHzwHwtIvtIutJusJutIvuIxvJzwJ|wI|xI~zH{H{H{H{H|H|G~{G}zF|yF{yEzxEzxD|zD|D~DCCBBBBBBBBBDEGrVB-Y+Y)W+X*Y$R@999884#F4h-a4e(F$;$=$= 7$<><EEDDDFGFACA=)TgwJutJwtJxuJywJzxJ}{I~GFDCCBBBBBBBBBBBBBBBBCCCCCC|yCwuCsqDroDpmDnkDliEliEliEliEmjDnkDroCvtC~zBBBBBBBBBBBBBBBBBBBBBBB@?=<|v:pl9ie9_]8ZX8XV8[X8_\9d`:jf;ok~>|<z:yt9qn7gd6a^4WT3QO3LJ4KI4JI4JI6LK9ON;RQ;SR;SRA^\A^\A_]Aa_Cb_CdaCfcCheDjgDmkDomDroCspCwtC{xC}BBBBCCCCCCBA|x@ur?mj>ge>ba>a_>a_?a_?ca@fdBjhCnlCspDvrD{wD|DDDCCBBBBBBCEEG|yHyvHusItrIrpIrpIrpIrqItrIurIwsIwtIyuHzuHzvIzwIzxI{yI{yH{xH{xG|xG|xF|yE~{E}DCCCCBBBBBBBBBCDFv2\D.\+Y(V'W$TJC<85/W.X4`4e+^$W4h/\+M*I2?;><988CFEEEE?<=A:1ZnIusIusJvtJxtJxuJzwJ{xJ~|IGFDCCBBBBBBBBBBBBBBBBCCCC~C~{CxuCtqCpmDplDnjDmiDkiDkhDkhDlhDmiDnjDqnDurD}zBBBBBBBBBBBBBBBBBBBBAAA?><~z;vr9lh8eb7^\7[Y7[Y8_[9ea:kf;sn{??????><|;yu9nk8fc6\Y5TR4NL4MK4LK5LK7NM9QP;TS;UT;UTC`^C`^Ca_CcaCdaCfcCheCjgDkiDomDsoDwsCyuC~zC~CBBBBCCCCCCB@}y@wr>mj=ge=a`=`^=_]>_]@a_@caBgeBkiDpmEspExuE}zEDDCCBBBBBBCEEG|yHwtHspGrpGpnGnlGnlGolGonGpnGpoGqpGsqHtqHurIvsIwtIxuIyvJyvIzwH|yG~{F}EEDCCCCBBBBBBBBBBCEF@o5*V0].[*X+Y$QFEC0`/`+^O$U*Y J(U*X1d4cC779::98=FEEEC=G K MAnʍgIusIusIusJvtJxtJxuJzwJ{xJ~|IGFDCCBBBBBBBBBBBBBBBBCCCC{zCxvCsqCpnCmkDljDkhDjgDifDifDifDjgDkiDkiDomDurD}zBBBBBBBBBBBBBBBBBBBBB@?=<~z:ur9nk7dc6_^6[Z6[Z7_\8d`:lh;so=|w>}@AAAAAA@>={;tq:lh8`^7YV6RP6QO6OM7OM9QO;TR=VU=WV=WVCaaCaaCbbCdbCdbCfdChfCjhEliEpmEtqEyuD|xD}CCBBBBBBBBBBA?|z?vs=lje55`6b"Q+]II;9-]QG)V,]+\-b(]%Z,\D{/^282999:8=EH LNN"TBsӁ茺tIvsIvsIvsIvsIvsIvtIwuIywJzxJ}|JHGEDBBBBBBBBBBBCCBBBBDDD~{DyvDvtDrpDomDljCkiCjhCihChfCheCheCifCjgBjhBnmBtrB|yB~BBBBBBBBBBBBBBBBBAAA?><{;yt9ol9he7`_6\[6[Y7\[9b`9ge;qm;xt=|>@AAAAAA@>>}xv=pn;fd:^]:XV:WU:US:US>=}<|;yw:tr8lj7fc5_]5[Z5ZX5[Y7a^8fc:pl:ws<}>@@ABBBBBBBBA?|y?tr=jhZX?[YA][A^\A^\GhgGhgGhgGhgFgfFigEkhEokEqnEvsE{wE}DDCCBBBBBBBBBBA?}y?vr=lh{x={x?AAABBBBBBBB@@|@xv@nl>ge>`^>_]>][>][@^\A_]Ca_Ca_Ca_GigGigHigHigGhgGihFkjFolEqnEvsD{xD~DDCCBBBBBBBBAA@>}x=vq=lg][@_]Ab`ChfEljGqoHtrHywH~}GFDCCBBBBBBCEFF|xFvsDpmCmkAig@ec@ca@ca@ca@cb@ecAfdCifDkiFnkGpmIspJusJxwJzyJ}IGFDCCBBBBBBBBBBBB@@}yAxtAroBpmBljBjhBhfCigCigCihCjjBkju0Z/a-c0c2c/d0d0c0c0b-`4fFz&X1j9l=lD+Y)R N L*[NْtKxuKwtKwtJwtJwtJwtJwtIwtIwtIwtIwtIvsIvsIwtIxuJyvJ|xJ{JKKKKLLLLKKJJIHHGFE|E{yDwuCusCqoCmlCkjCkjCkjCjiCjiBjiBjiBjhBjgAhfAhfAhgAigBjhBljBolBspCvsCzwC|yC~{D{D{D|D|C~{B|yAzwAxu@xu@vs?ur=sp=sp;qn:ol:mi9jg9fc8b_6\Y4WV3VU3WW5]\6ba8lj:tq<~z=?@BBBBBBBBBAAAA~?zw?pm?if?c`?a_?_]@_]A`^Aa_BcaCcaCcaIkiIkiHkiHkiGjiGkjFmkFqnEtqEyvD}zDDDCCBBBBBBBBAA@>}x=vq=lg][@_]Ab`ChfEljGqoHtrHzxH}GFDCCBBBBBBCEFF|xFvsDpmCmkAig@fd@ca@b`@b`@b`@da@ebBhdDkgFnjGolIspJwuJ{yJ|{JIGFDCCBBBBBBBBBBAA|@{w@uq?pl?kh@ig@ge@fd@ecAebAfdAgfAih@kje0V,\+`-a1c0d1c/a0b1b7iG~8r7l9k+c9lG,\#PH-]PwKzwKxuKwtKwtJwtJwtJwtJwtIwtIwtIwtIwtIvsIvsIwtIxuJyvK|xK{LMNNOPPOONMMLKKJ~H~{G|yEyvDvsDroCpnCnlCljCkiCkjCkjClkCmkBnlBnlBnkBnkAmjAmjAljAljBmkBomBpmBroCspCurCvsCvtDwtDwtDwtDwtCvsAtqAqo?om?ol=mj=kh;if;if9gc8d`8`\7^Z7ZW6XU4UR2RP2SR3XW5`_7gf9sq<|y>?ABBBBBBBBBBAABB~A|xAtpAnjAheAfdAdbBcbCcbCecDgdEgeEgeInlInlInlInlHmkFolEqnEurEwtE|yD}DDDCCBBBBBBBBAA@>|w=tq=jg]\@_^AbaChgEmkGspHusH{yH~GFDCCBBBBBBCEFF|yFvsDomCljAhf@ec@b`?a_?a_?a_?c`?daAfcCifEmjFomHsrIwuI|zI}IHFFDCCBBBBBBBBAA@}@zw?ur?nl>ig>dc>cc>ba>b`>b`@b`@db@ge@ki?lk?rq\O}Fz>p5c3c6g?rG}@uMR*]*a2g4j2k'U,["R$RG{x|xKzwKxuKwtKwtKxuKxuKxuKxuJxuJxuJxuJxuJwtJwtJxuJyvKzwK|yL|NNPQQRRQQPNMMLL~K~{IzwHyvFurEspEpmDnlDljCkiCkiCkiCmkCnlCpnBqoBsoBspBspArpArpArpArpBrpBrpBrpBrpBqoBqoBqoBqoCroCroCqnComBom@mk@ki>ig>hf{w=tq=jg]\@_^AbaChgEmkGspHusH{yH~GFDCCBBBBBBCEFF|yFvsDomCljAhf@ec@b`?a_?a_?a_?c_?daAfcBifDmjEolGtrHywH|HHGFEDDCBBBBBBBBB@|?yw=rp=nk=he=ba=^^<^]<^]<^]<_]>`^>ca>gd>mi?pm?wtqqd[(S,Z?rOUVK:r(Z2j-f5l-b8j9k%U2eX䑿mK|yK|yKzwKyvKyvKzwKzwKzwKzwKzwKzwKywKywKyvKyvLzwL{xM|yM~{N~PPRSSTTSSRPPNM~K~zK{xIwtHurFqnEolEmjDliDkiCkiCljCmkComCqpCurBwsByuB{vB{xAzxAzxAzxAzxBzwBxuBvtBrrApoAnmBmkBljCljCliCkhCigBif@ge@fd>db>b`<`^<^\:\Z:[X8YU7VS5RO4OM4MK3MK3MK2ML2RQ4YX6ed8om:}y=?@BCCBBBBBBBBCCCCE|EzvEuqEqmEolEmkFlkGlkGmlHnlIomIomMtqMtqLtqJtqJtpHvrGxtF|xE~|DDCBBBBBBBBBBBBA@@?{v>to>jf=da=_\=^\=^\>^]@`_AcbCifEmjGrpHusH{yH~GFDCCBBBBBBCEFF|yFvsEomDljBhfBec@b`?a_?a_?a_?a_@ca@fcAifCmjDolFurG{xG~GGFFECBBBBBBBB@@@@|x?ur>mk=jg=dbhe>nkgdlrl`;l@E.\%T#R'X!R/b7n5n2f7j8n8l;l(V:o\㒿sL|yL|yL|yL{xL{xL{yL{yL{yL{yLzxLzxLzxLzxL{xL{xL{xL}zM~{O~OQQSTTUUTTSQPNM}K}yJzwHvsHtqFqnEolEmjDliDliDliDljCnkCpoCsqCwuBywB}yB{B}A}A}A}A}A|A|zAywAusArpAnlAkiAigCjhCjhCigCgeBge@ec@db>b`>a^<_\<]Z:[X:YW8WU7UR5QN4NL4LJ3MK3MK3ML4SQ5[Y7he9qo;{>@AABBBBBBCCBBDDCCD~E{xFwsFsoFqnFomGomIomJpnJqnKroKroOxuNxuMxuKxuJyuH{wG}yF}EDDCBBBBBBBBBBBBA@@~?yt>sm>ie=d`=_]=^]=^]>_^@a`AdbCifEmjGroHurHzwH|GFDCCBBBBBBCEFF{yFusEomDljBhfBec@b`?a_?a_?a_?a_@ca@fdAigCmkCqnExtF~zFFFEDDCBBBBBBBBA??~z=ur`^>_\<]Z<[X:YV:WU8US7RP5PN4NL3LJ3LJ3ML4NM6UT7^[9jg;sq=}?AAABBBBBBCCDDEEEEFG}zHzwHvtHusHtqItqKtqLurLvsMwtMwtO{yO{yN|yL|yJ}yH{F}DDCBBBBBBBBBBBBBBA@@{?vr>pm>he=c`=_]=_]=_^>__@aaAdbChfDljFqoGtqGyvG~{GFDCCBBBBBBCDE~EzwEtrEomDmkBigBfd@ca?b`?b`?b`?b`@ba@ddAhgCnlDspD{vE|EEEDCBBBBBBBBBBA?}>zw_\=^[<\Y@BBBBBBBCCCCDEFGHHHH|J|yJywJwuJwuKwuMyuNyvNzwO{xO{xQ}P}O}M~JHFDDCBBBBBBBBBBBBBBA@}@zv?rn>mj>gd=c`=`]=_]=_^>`_@baAdbChfDkiFomFroFwtF|yFEDDCBBBBBBCDE|EyvEtrEomDmkBigBge@ec?ca?b`?b`?b`@b`AedAjiBpoCusC}zCCCCDDBBBBBBBBBBA?}y>vsp(X 34b{|QQQQOOO~O~O~O~O~OPPQSSUVVWWVVVVUSSQP}N}zM{yKyvJvtHtqHrpFpnEpmEplDolDqmDtoDxsCzuC~zC~CBBBBAAAAAA@@zx?sq>ji=ec=`^>__>^^>^]>^]?^^?^^>^^>^\=^[<\Y;[W;YU;XU;VS:TR8RP7PN7PN6PN6QP6RQ8YX9b_;nk=vs?@BBBBBBBCCDFGGHIJJJJ}L}{L{yL{xL{xM{xO}zP~{P}Q}Q}QPOMKIFDCBAABBBBBBBBBBBBBB{Axu@pm?ki?ec>a_>_]=`^=`^>a_@caAdbCgeDjhDnlEpnEusEzxE~DDCCBBBBBBCDE|ExvDsrDnmDljDjhChfAfd@db@ca@ca@ca@ca@fdAjiAroBwtB|CCCCCCBBBBBBBBAA@>}x=uq;jg:b`:[Y9YW9VT9US9TR9TR9VT:YW<][<_\>fb?lh?vq@|xmV>rqȀ}X.a.f*d(`.e5lsq>ig=cb=^]>]]>]]>]]>]]>^^>^^>_^>_]=_\=]Z<\Yvs@~AABBBBBBCEEGHHIIJJKK}L{L}zM|zM|zN|zP~|Q}SSSSRPNLHFDCBAABBBBBBBBBBBBBB{wAtq@lj?hf?db>a_>_]=`^=`^>a_@caAdbCfdDhfDljDnlDsqDwuD}{CCCCBBBBBBAA{B{wCurDpoDlkDljDjhChfBfdAecAec@ec@ec@ec@hfAlkAtqBzvB~CCCCCCBBBBBBBBAA@>{v=so;he:`^8YW8WU8TS8RQ8RQ9TR9VT:YW<]Z<_\>fc?nj?xt@~zAepCW^Bwagq&[$]+c6j9n9nyw=qo;ge;``;[[<[Z<[Z<[Z<\\=]\=_]>_^>_^=`]=`]=_]=][<]Z<[X;YW:WU9VT9VT9VT9WU9XV;][mk>uq@{AABBBBBBCEGIJJKKLLMM}N|N|O|O}P~RSUUUSSQOLHFDCBAABBBBBBBBBBBBB{BwsApm@ig?ge?ca>a_>_]=`^=`^>a_@b`@caBecChfCjhDkiDomDsqDywB}zB~BBAAAAAA~A{AzwBwsBqoCnlCkjCkjCjhCigCgeBfdAec@ec@ec@ed@ih@ol@wtB|yBBBBBBBBBBBBBBBB@?=zvfd?nk?xu@{AVN }?yBBBpvH|0f1b;j8n9n_^>a_>a_>a_>a^>`^=_]=][<][;[Y:ZX:YW:XV:ZX;[Y;_]lj>sp@|xA~ABBCCCCDFGIIKKMNNNNO~P~Q~QRTUWWWVTRNLHFDCBAABBBBBBBBBBBB~B}yBtqAmk@gf?fd?ca>a_>_]=`^=`^>a_@caAcaAecBgeBigCjhCmkCpnCtrBwtB{xA}yA{@{@{?z?}z?|y?zw?wt?sp?pnAljBkiCigCigCigChfCgeBfdAfd@fd@ge@gf@kj@qn@yvB{BBBBBBBBBBBBBBBB@?=wto,^6hQ;i-V~XXWUTTTTTTUUVVWWXXXXWUUSQO~N}L{L}zL{xKzwJxuIwtIwtIwtIxuHzvG|xF}yE}EDCCBBBBBBBBBBB@?=xt;nl9bb8[[8VU8VT8VT8UT:WV;YX=]\>_^>a`>ba>ba>ca>ca>b`>b^=a^<_\;^[;\Z;\Z;\Z;][;a_kh>pm@wtA|xA}B~CCDEEFHIKL~L~MNOPPPQRSSTVWYYYUTSOMIECCBAABBBBBBBBBBBB~B|yBtqAmkAge@ec@b`?a_?`^?`^?`^?a_?b`@b`@dbAfdAhfBigBkiBmlBqnBtpBvrAxs@xu?xu?xu?wt?vt?vs?tq?ro?nk@liAjgAieBheChfChfBgeBgeBfdBfdBgdBgeAgfAkjAqoAywB|BBBBBBBBBBBBBBBB@?=wsa_?b`?db?db?db>ca>ca=b`=`^<_]<]]<]\<]\<^\nk>mk=lj=kj=ki=jg=ig=ge>fe?dc?db@dbAecAfdBgeBgeBfdBgdBhfBihBihBmlBsqB{yB~BBBBBBBBBBBBBBBB@?}=urc`?eb?gd?hf?ig?ig?if>he>fc=ec=ca=b`=a_=a_=b`>da?he@jg@nkArnCvrDxtDzvE|xF~zG{I}I}K}K~|M~|N}N}O~PPQRSSTUUVXY[[[XWVRNJFDDCBBBBBBCCCCCCCC}zDyvDqoCljBgeAec@ca?a_?`^?`^?`^?a_?b`AcaAdbAecAfd@fd@fdAgeAgeAgfAgf@fe>fd=ed=dca`?a`@b`@b`@ca@ecAfdAfdBfdBgeBigBjiCjiCnmCtrC|zBBBBBBBBBBBBBBBBAA@}z>sp=mj;c`:\Z8VT7US7SQ7SQ8SQ9US;YW;^[=da=gdnqU`BY=fGdnCCCEFHJLcR4!X3f(?O|2`li=ki=ig>gf>ed>db>db?db@fdAgeBkhBnkCrnDtpDvrExuGzwH{xJ}zJ~{L~{L}{N}{O|O~OOPRRTUUUUVXZ\\\[YVRNJFDDCBBBBBBCCCCDDD~D{xDvtDpnCkiBgeAec@ca?a_?`^?`^?`^?a_?b`AcaAdaAebAeb@db@db@ca@ca?ba?``>__<_];^\;]\:\[:\[:\[:\[;][;][<]\=^\=_]>a_?a_@ca@caAecBecBgeBigBkiCliCqmCvrC~zBBBBBBBBBBBBBBBBAA|@yu>om=jh;b`:\Z8VT7US7TQ7TQ8VS9WU;\Y;a^=hd=lhqvuAaNn5Zl?V4Y$)esCCDFHJJLF]n?2e0Yr;iJ{Kz,>05x2>$2~G[g}QgyńRQQPPOOOOOOOONN~M|L}zK{xKyvKyvKyvJ{xH}zH{FEEDCBBBBBBBBBBCCBA@>;~z9pn7fd5ZX4RP2KI2JI2JI3LK5PO6UR8\X;a^=he>lh?rn@ur@xu@xu@xu@xu@vs>uq>qo>om>ki>ig>ge?ec@ecAfdAhfBkhDokDqnFtqGvsIxuJyvL{xM|yM}zM}{M~{N|O~PPQSTVWWWWXZ[[\\[YWSOJFDDCBBBBBBDDDDEEE|EyvDusComCjiBfeAecAca@a_@`^@`^@`^@a_@b`AcaAcaAdbAdbAcaAca@c`?a`>``>^^=]\;\Z:[Y:ZY:YX:YX9YX9YX:ZY:[Y;\Y;][<^\>_]>`^@a_Ab`AdbBdbBfdBhfBkhCmjCroCvtC~zCCCCBBBBCCCCCCCCBB~yAws?nk>ifpk@ytA{Al|1T([gbq}nCDDFIKKMsyrA1xYוu@tJ2T-G4Y1X-C&;n`yӂRPNNMLLMMMMNNNN~M|L}zL{xKzwJzwJzwI{xG~zG}EDDCCBBBBBBBBBBCCB@?=;}y9ok7eb5WV4PN2IH1IG1IH2KJ4ON6SR8[Y:b`uq>om>lj>hf?fdAfdAgeCigCkiEnlEpnGtrHwtJyvKywM{yN|yN}{N~{N}O}PQQRTUWXXWWXZ[]]][YWSPLHFFEDDDDDDDDDDFF}F}zFwuEtrComBkiBgeAfdAdb@ca@b`@b`@b`@ca@caAdbAdbAdbAdbAdb@b`?a_=_]=]\;[Z;YX9WV8WU8WU8VT8VT9WT9XU:XV:YW;YW;[Y<][>_]>_]@a_Ab`AdbBdbBfdChfCkhCmjCroCwtC}zC~CCCBBBBCCCCCCCCB{BxtAro?kh?ge=a_=\[;XW:VU:VS:VS:XU:YV:_\;ec=nk>uq@~zAmz2g<1~%/ruunwCEEGIKK~M~O~Qh-O뒼pXu;fEt-[>r;l7h(>-;8Pnl͂JJIHHHIJLMMNN~M|L}zL{xKyvJyvJ{xI|yG}FDCCCCBBBBBBBBBBCCA?><}9xt7jg5`^3TR2MK1HF1GE1IG2KJ4QP6VT8_]:fd{x>ur>qn>kh?geAedAgeCigCkiEmlEonGsrIvtKyvKywM{yN|yN~{N~{N}OPQQRTUWXXYZZ[\\]]\ZXTRNKIHGFFFFFFEEEEFF~|GzwGvsFtqDpmCmjCifBheAfc@eb@db@db@db@db@dbAecAecAdcAdc@db@b`?_^=]\<\Z:ZX:WU8US7TR7TR7TR7TR8US9US9VT:XV;YW;[Y<\Z>^\>_]@a_@caBecCecCgeDigDkiDnkDroDvsD|yD|DDDCCCCDDDDCCCCzB{vAtpAnk@hf?ec?`_>]\rn>xt@~Ap} gFUnBBBBCEFHJL}L}N}N}PtBT{VWW|4f.[:i:n:n7a&;\tՎk\wwGGFEEEGHJKMMM~M~|M|zL{xL{vK{vI|xH}zF~ECBBBBBBBBBBBBBBBA@>=;|x8rn6eb4\Y2RO0LH0GD0GD1IH2NL4TS7YX9ca;mi=wr={w?@@AAAA@@@}@yu?sp?mj@if@fd@fdBhfDjgFlkFnmHrqIutKyvKzwM|yN}zN|N|N~OPQQRTUWWYY[\\]]]][[YWTPNLLLKIHHHHGGGGG}G|yGxuGtqFspDqnCnkCliBjgAhe@gd@fd@fd@fd@fd@fdAgeAgeAgdAed@dc>ba>`_<][`^>`^@b`@ebBgdBgdDifEkhEmjEnkEroEurEzwF~{FFFEEEEDDDDCC|C~yCzuBwrAqlAlh@gd?eb>a_>]]=ZZtq?|x@@8IÁ_wgBBBBCEFHJ}L~{L|N|N}PyŁԇzTUVV{2`&M>o:o?l5X(<+8OcЀEDDCCCEFHIKLM~M~|M|zL{xL{vKzvI|xHzF~ECBBBBBBBBBBBBBBA?><;}z9ro6if4^[3WT1OL0KG0HE0HF2LJ3QP5YX7`^:khz>??@AAAAAA@@|y?vs?nk@ig@fd@fdBhfDjgFlkFnmHrqIutKyvKzwM|yN~{N}N|N~OPQQRTUWWYY[\\]]]]\[ZXVRPNNMMLKJJIHHHH}H~{H{xGxuGurFspEqnEnkDliCjhBhfAgeAgeAgfAgfAgfAgfAhgAhg@hf@fd?ec=ca=`_;\[;ZY9WV8UT8SR7RQ7RP7RP7SQ8TR8VT9WU;YW;[Y=][>_]>a_?a_?ca@fcBheBheDjgEliFnkFolFroFvsFzwF}yF{F}FEEFFE~E~E}E|D~{D|yDzvDvrCspCnlBjh@fd@db>`_=]]=[Zdc>ki?ur@|yABwyn|̃uBBCCDFGII}K~{K~{M~{M|O~O~QRRSTUVV~}Jp(T:r9iGuBd+B9LXj\uDCCCCCEFHIKLM~M|M}zL|xJzvJzvH|xG{EECBBBBBBBBBBBBAAA?><}{:wu8lj5ca3YW2SQ1MK0IH0HF0IH2OM4TS6^\8ec:qm~>@AABBBBBBA@}z?vs?nk@ig@fd@fdBhfCjhEljFnlHrpHusJyvJzwL|yM~{M}N}OOPQQRTTVWYY[\\]]^^^]\ZWUSQQONNMLLKJJ~J}J}{I|yHzwHxuGvsFurEspEroDpmComBmkAljAljAlkAlkAlkAlkAmlAml@mk@ki?jg=fd=cb;_^;\[9XW8UT8SR7TR7TR8UR8US9VT9XV:[Y<][=_]?a_@ca@ecAecAgeBifDkhEkhEmjFnkFpmGqnGspGvsGxuHywH{yH|zH}zG}zG}zF|yF|yE{xE{xEzwEyvDxuDvsDtpDqnColCkiBhg@dd?cb?a`>_^>]\>]Z>]Z>^\>`^>a_>fe?mk?wt@~{ABBBBBBBBBBCCDFGII|K}zK}zM~{N|N~O~PQSSSTTTTUvOz+S,O,;s“ݓׁϐuDBBBBCEFHIKLM~M|M}zL|xJzvJzvH|xG{EECBBBBBBBBBBBBA??=<|:tr8nk6c`5[Y3RP2NL1JH1IH1KJ2NM4UT6\[8ge:ok?@@ABBBBBBA@}z?vs?nk@ig@fd@fdBhfCjhEljFnlHrpIusIywI{yI~{J}KLMMNOOPRRTVXXZ[]]]^^^^][YWUSSQQOOMLL~K}K{J~{J|yJ{xJyvIxuGxuGwtEvtDvsDurCtrBsqArpArpArpArpArpArpAsqAsq@sp@qn?om=ki=hf;b`;^\9ZX8WU7US7US7US8VS:XU;YV;\Y;^[=a^?b`AdbBgdBifCigDkiDliEnkFnkFpmGqnGroGspGtqGurGwtIxuIzwIzwIzwHzwGzwGyvFyvExuEvsEvsEtqDtqDroDpmDnkCliBhgBfeAdc@dc@ba?a`?_^>_]>_]>`^>b`?cb?ig@om@yvA}AAABBBBBBBBCCDFGI~I|K}zK}zM}zN~{N}N}OPRRRRRRRSS{܏Ik5J@Vd~ECAAAABDFHJLMM~M|M}zL{xJyvJyvH{xG~{EECBBBBBBBBBBA@@??=};xu9mj8fc6\Y4US2NL2KI2JH2KJ3ON4SR6\Z8db:pl;wr=|>?@ABBBBBBAA@@~{?wt?ml?hf?ec@ecBgeBifDkjEmlGqpHvtHzxH|zH}JJJJKLMMNPPRTVWYZ\]]^^``_][YWUUSSQQON~N|M{L}yK|xJzxJzxJzxI{yG|yG}zE}zD}yD}yC|yB{yAzxAzxAzxAzxA{xA{xA|yA|y@{x@yv?wu=sq=nl;hf:ca:][9ZX9WU9WU9WU:XV`]?b_AebAgdCjfDmiDokEplFpnFqoGroHrpHspItqItqHurHurHvsHvsIwtIwtIxuIxuHxuGwuGvtFtrEtrErpEroEpmDpmDnkDmjDkhCigBgeBfdAdb@cb@cb@ba@ba@b`@b`@ca@ecAfdAki@qo@zwA}AAABBBBBBBBCCDFGI~I~{K|yK|yM|yN}zN}zN~{N}OOPPPPPPOOPPqqٌ~̌ԈECBAAABDFHJLMM~M|M}zL{xJyvJyvH{xG~{EECBBBBBBBBBBAA@>=};wt9ok7d`6]Z4TR3OL2JH2IG2KI3NM5TS6ZY8ec:nkxv>tq^\@b`AdbCheCigEmiFplFrnGsoGtqHusHusIurIurIvsIvsIvsIvsIvsIvsHwtHwtIwtIwtHvtHvtGusGsqFsqEqoDqnDolDolDmjCliBjgAhfAfdAecAecAdbAdbAdbAdbAdbAdbAecAgdAheAmjAsoA{wB}BBBBBBBBBBBBBCEEG}H}zJ{xJ{xL{xM|yM|yN}zN|O~OOONNNNMMMMMMLLKIGEDBBBBBBDFHJLNN~N|M|zL{xJyvJyvH{xG~{EECBBBBBBBBBBA??=|ws>mk>he>ca?caAcaAecCigCkiEqoFvtF|zF}FFFGGGGHHIKLNOQSVX[\^__a`_][YWUUSSQQO~N}N}{M|zL{zL{zK{zJ|{J~}IGFDCCBBBBBBBBBBAAAA}@zw>ro=mj=fb?AAABBBBBBBBBBA?}y>vr>li>fc>a_>`_>b`?dbAhfAljCrpDxvD~|DDDDEEEEFGGHHJLOQTW[\^__aa`^\ZXVVTSQQO}N~|N|zM|zM|zL|zJ~|J}HHFECBBBBBBBBBBBBBBBA@|>wt=rn=jf=db=`_>a_>a_?b`AebCheEliGpmItqIvsKyuL{wL}yM~zMzM{M{M~zM|yL{yL{xKzwKzwJzwIzwI{wH{wG|xG|xF|xF|xF{wFyvExvEvtDtqDqmCnkCkiBigBgeAfdAfdAfdAfdBgeBgeBhfBhfDhfDhfDigDkhDkiDolDtqDzwD{DDDBBBBBBBBBBCEEG~|H{xHyvIzwJzwK{wM{yM|zM~|MMLLKIHFEEEEEEEEEEDCBBBBBBBDFHJLNNN}M}yL{xJyvJyvHzwH{xF|E~EDDCCDDCBBA@?}>{x@AABBBBBBBBAAAA@>{w=tp=jg=ea=`]=_]=a_>db@hf@lkBtrCzwC~CCCCDDDDDDEFFHJMOSVZ\^__aa`^\ZXVVTSQQ~O|N~{N}zM}zM}zL~|J~JHGEECBBBBBBBBBBBBBBBBA@|y?vr?nj?hf?dc?dcAecCfeEjgFmjHrnJvsLzwL|yN{O|O~OOOOO~O~N}N~{N}zL|yK|yI}yI~zG|F}F~E~E~E}E|D~{D{xDxuDtqCqnCmjBjgBgeAfdAfdAfdAgeBhfBjhCjhCjhDjhDjhDkiDljDmkDpnDtqDzvD}yDDDBBBBBBBBBBCEEG}zHzwHxuIyvJyvKzwK{yK|zK~|K~KJJIGFDCCCCCCCCCCBBBBBBBBBDFHJLNNN}M}yL{xJyvJyvHyvGzwG|yF~{F~FFEEDDCBB~A|@~z?yu>tq}?AAABBBBBBBBAA@@?=yua`>ec@ki@pmBxuC~{CCCCCBBBBBBCDDFHLNRVZ\^__aa`^\ZXVUSQOO~N|N}{M}{L}{L|K~IIGFDCCBBBBBBBBBBBBBBBBBB{@xt@plAkhAgeAgdCgfEigGmjHpmJuqLyvN}zN|P~QQQQQQPPOO}N|L~{J}zH|H~FEEDDDDCC|C|yCwtBspBnlBkiBgfBfdBfdAfdAgeBhfCjhCkiDkiEkiEkiEljEmkEnkEqmEtqExuD{xD}DDCCCCBBBBBBCEE~G|yHyvHwtIxuIxuJyvJ{xK|zK|J~JIIHFECCCCCCCBBBBBBBBBBBBCEFHJLMM~M}K|{KzxJxvIxuIxuHyvH{xG}yG{F|F~E~E~D~D~D}D~{C|yAywAwu?sq?nl=hf;ca9\Z8WU6RP6PN6NL5OM5QO5SQ7ZX8b`:nl~?ABBBBBBBBBBAA@>>~om?vsA|BBBBBBBBBBBBCCCEGKNRVZ[]^^``_]\ZXVUSQOOM}L}J}IIHGFEDCBBBBBBBBBBBBBBBBBBCCC}zCusDroEolEolGqnIsoKwsMzvO~{QSSSTTTTTTTRQONLJHGEECBBBBBBBBzBzvBtpBolBkiCjhCjhDjhDkiEljEnlEomEomFomFomFpnFpnFpnFrpFtrFvtFxuF|yE}EDCBBBBBBBBCDE~F{xFxuGvsHvsHwtIyvI{xI~{IHHGEECBBAAAAAABBBBBBBBBBBBCEFHJLMM}M~{K{yKywJwuIvtIvtHvtHwtHxuHzvIzwIzwHzxFzxEywEwuEvtEtrDqoBomBmk@jh@ge>ca>a_<][|@ABBBBBBBBBAAA?><~{yt@~AABBBBBBBBBBBBCEGKNRVZ[]^^^^]\\ZXVUSQOOMLJJHGFEDDCBBBBBBBBBBBBBBBBBBCCC~{ExuFurGspGtpIvrKxtM|xO|QSUUUVVVVUTSRQONLJHGEECBBBBBBBB}B|xBvrBqnBmkBljDljEljGmkGnlGpnFqoFqoGqoGqoGrpGrpHspHsqHtrHvsHwtG{wF{EDCBBBBBBBBCDE}F{wFwsGtqHurHwtHxuH|yG|GFFECBBBBAAAAAABBBBBBBBBBBBCEFHJLMM~{M|zKzxKxvJvtIvtIvtHvtHvtIxuIxuIxvIxvIxvIxvGwuGusGtrGrpFomDmkDljBigBge@db@b`>`^>_]<][;\Z;^\;a_;ec{v@AABBBBBBBBBBBBCEGKNRVZ[]^^]]\\\ZWUUSQOPNLJIGGEECBBBBBBBBBBBBBBBBBBBBCDE{EyuFvsHuqHvrJxtLzwN~{P~RTVWWWWVUUTSRQONLJHGEDBBBBBBBBB~C}yCwsBrpBnmCnlEnlFnlFnlGnmGpnGqnGroHrpHrpHsqHsqIspIspItqIvsHwsH{wG{EECBBBBBBBBCCD|EzvEvsFtqGtqGvsGzvG~zG}GFDCCBBBBBBBBBBBBBBBBBBBBBBCEFHIKKK}{K{yKywJwuJvtIvtIvtIvtIvtJxuJxuJxvJxvIxwIxwIwuIusHtrHrpGomEmkEmkCkiChfAfdAfc?da?c`=a_<`^}y?@ABBBBBBBBAAA?><{;yv9om8gf8_^7[Y7WU8WT8WV9YX;`_;hf=tp>|w@AABBBBBBBBAABCCEHLNRUYZ\]][[ZZZXWUUSQOPNLJHFECCCBBBBBBBBBBBBBBBBBBBBCE~E~zGzvGxtIwtJyvL{xN~{PRTVXXXXXWUUSSQOMNLJHGEDBBBBBBBBBC{CyuDtrDpoEpnEpnFpnFpnGqnGqnGroGroHspHspHsqHsqIspIspItqIvsHwsH{wG{EECBBBBBBBBCCD~|ExvEtqFroGsqGvsGyvGzF~DCCCCBBBBBBBBBBBBBBBBBBBBBBCEFHIKK}K{yKyxKwvJvuJvtIvtIvtJwvJwvKxvKyvJzxJzxKzxKzxKywKwuJusJsqIqoGomGomEmkEljCkhCkhAkhAjg?jg>ig>ki>nl>tr>xv>|??@ABBBBBBBBA??=<|:us9ol7fc6_]6XW6UT6SR7TR9VT9YX;`_;hf=tp>|x@AABBBBBBBBAABCCEHLNRUYZ\\\[[ZZYWVTTRRPPNLJGEDBBBBBBBBBBBBBBBBBBBBBCCDF}F~zHzwHyvJyvK{xM|O~QSUVXXXXXWUTRRPNLMKIGFDCBBBBBBBCCD|DzvEusEqpEqoEqoFqnFqnGroGroGsoGsoHsqHsqHsqHsqIspIspItqIvrHvsHzvG~zEECBBBBBBBBBBC~{DxuDtqEroFrpFtrFxuF~{EDDCBBBBBBBBBBBBBBBBCCCCCCCCDFFHIK}K~{K{yJywJwuJvtJvtKwuKwuJxvJxvKywKzxKzyK|yK|yK|yL{xLyvKvuKtsJsqHqoHqnFqnFpmDpmDqmBqmBrn@rn?qo?sr?vu?{y?|?@@AAAABBBBAA@>><|:xt8nj8gd6^\5XW5SR5QP5QO6RO8US8XV:`^tq>|x@AABBBBBBBBAABCDFIMOSVXY[\\YYXWWVUUTRRPPNLJGEDBBBBBBBBBBBBBBBBBBBBBCD~E|E}zF{xHzvIzvK|xK}zM~OQSUVXXXWWWUSQPNLJKIGEECBBBBBBBBCCD~E|xEwtFsqGrpGqoFqnFqnGroGroGsoGsoHsqHsqHsqHsqIspIspItqIurHvsHyvG}yEECBBBBBBBBBB~C|yDvsErpEpnDqnDtqDxuD{CCCCBBBBBBBBBBBBBBBBDDDDDDDDEEFHI~K|K|yKzwJyvJwuJvtJvtKvtKwuKxvKzxLzxL|zM}{M~{M~{M~{L}zL{xKzwKxuJwuHusHurFuqFuqDwsDxtBzvA{vA|wA{xA}{A~AAA@@AAAABBBBB@?=<}:xt8ok6ea5_\5WU5QQ5MM5MM5OM6QO8US8XV:`^rq>zx@AABBBBBBBBAACEFIKNPSUXY[[[YYXXWUUSSQQOOMKIGEDBBBBBBBBBBBBBBBBBCCDD}E|E~zF}xF{vGyuGyuHzvJ|xK}zM~OQTVWWWWVVVTRPNLJHHHGEDBBBBBBBCCCCD~E|xEwtFsqGrpGqoGqnGqnGroGroGsoGsoHsqHsqHsqHsqHspHspHtqHurGvsFyuF|yE}DCBBBBBBBBBB|C{wCuqDqoDomDpnDtqDxuD{BBBBBBBBBBBBBBBBCCCCEEEEEEEEF~F~G}I}J|J}zK|yKzwJzwJxuJwtJwtJwtJxuKyvL{xM|yM~{M|M|N|N|M|M}zL|yLzwKzwIxuIwtGwtGytE{vE|yC~{B|B~A~AAAAAAABBBBBBBBA?><;}y9so8jf6`]5[Y5TS5PP5MM5LL5NN6QP8UT8XV:_]:gd<~z;ws9lh8d`6[W5WT5QP5MM5KK5LL5NN6QP8US8WU:^\:ec<{w;sp9ge8_]6WT6SR6ON6MM6KL6LL6NN7QP7TS8VT:]Z:cazx>}@AAAA@@AAACEGIKMOPRUWXXYYUUTTSQPP~O}O}N}N}N~LKIGEDBBBBBBBBBBBBB~B}B~{B|yBxuCvsCsqDroDpmEplEplFpmFroGspHwtHzwI{J~KKLMNOOOONNNLKIHFECCCBBBBBBBBBBCCCCD~{DxuDsqDomDomDmkDljDljDmkDmlDnlDnlEnkEnkEnkEnkEljEljEliEliDmjDolCpnCtrCwtC{xC~zC|B}B}B}B}B}B|zBywBtqApmAliAjgAjgAjgAnkAroAzwA|AAABBBBBBBBCCCCCEFG}G{G{wGxuGvsGurGurGurGvsHwtIyvIzwJzwK{xK{xK{xK{xL{xL{xL|yL|yM}zM|N}PQQPPOONLLJIHGFEDDDCBAAAABBBBBBBBBBBBA?>sq?xv?|y@}y@z@{@{@{@{A|A|A}C}E~G~I~KMOPRTVVVWWTTSSRP~O~O}O~|O}|N}|M}|L~}KJHGEDBAAAAAAAAAA~A|A|yA{wAyuAwsAuqBspCqnCpmDnlEnlEnlEolEqnFroGvsHzwH|HHIJKKKKLLLLLJIGGEDBBBBBBBBBBBBBBBBBC}yCvsCqoCmkClkCkiCkhCkhDliDljDmjDmjDmiDmiDlhDkhDjhDjhDjhDjhBihBkjBmkBpmBsoBvsBxuBzwA{xA{xA{xA{xAzxAxvAusAqo@nl@jh@hg@he@hf@li@pn@xt@~y@@@BBBBBBBBCCDDEFFG{H|yHxuHwtHurHurHurHvsHvsIwtJyvJzwKzwL{xL{xL{yL{yM|yM|yM}zM}{M}|N|O}QQQQQPNMKKIHGFFECBBBBBBBBBBBBBBBBAAAA@@?~=xtol?ro?ur?vs?xt?yu?yu?xu?xu@yvAzvB{vC|xD}yF~{I{K}MOPRSUUUVVR~R~Q}Q}P|N{M~{M|zM{yM{yL{yL{zK|{K~}JHGEDBAAAAAAAAA{A{wAxtAuqAtpArnAqmAokBnkCnkCmjDmjEljElkEnlEpnFqoFusGzwG}FFGGGGGGHHHHGGFEEDCCBBBBBBBBBBBBBBBB~{ByvBspBnlBjhAigAhfAhfAhfBihBjhBkhBkhBjgBjgBifBgeBfdBfdBfdBfd@fe@ge@hf@jhBmjBolApmAroAspAspAspAspArpApnAnlAlj@ig@ge@fd@ec?eb?he?lj?tp?yu?|@ABBBBBBCCCDEFGHI{I{wHyvHwtHurHtqHurHurHvsHvsIwtIyvJyvL{xM|xM|zL}{L}{M~{M~{N|N}O~OPPQQQQPNMKIGFDDDCCBBBBBBBBBBBBBBBBAAAA@@?|=ur=nl;db;]\9XW8WV8UT8SS8SR8TR8TR8TS8VU9WV9ZX:^Zkg>mi>mi>nj>ok>ok>nk?nl@omAqnBqnCspDusFwuGxvIzxK}{M}N}P~Q~SSSTTR|R|Q~{Q~{P}zN}yM|yMzxMywMywLywLywLyxJ{zI}|G~FDCCBBAAAAA}A}yAzuAvqArnAolAnkAmiAlhAlhBliCliCkhDkhEkhEljEnlEpnFqoFvsF{xF~EEFFEEEEEEEEDDDDCCBBBBBBBBBBBBBBBBBBzxAvtApnBljBhf@gf@fd@fc@fcAgdAgeAhfAhfBhfBhfBgeBec@db@db@da@da@ca@ca@db@fdAheAjg@jh@ljAmjAmjAmjAmjAmjAkiAjhAhf@fe@dc?cb?c`?c`?fb?jf?pl>uq>|w?|@ABCCBBDDDDEFGH|I}yJyvIxuIvsItqItqIurIurIvsIvsJwtKyvKzxL|zM|zM~|M}M}N~N~OOPPQQQQQQQOMKHFECCCBBBBBBBBBBBBBBBBBBAAAA@@?|y=rp=lj;db:^\:YX:YX:XW:WV:VT9WT9WT9WT9WV:XW:ZY;]Z;_\hf@jh@kiBnkDpnFspGtrIvtJywL{yL|zN~{N|P|Q}Q}R~R~P{yP{yO{xO{xNzwLyvKyvKxuKwtKwtKwtKwtJwuJywIzxG|zF}{D{C|C|B}B}A|A|A{A}yAzvAvrAsoAokAliAjgAjfAjfAifAifBjgCjgCkhDkhEkhEljEnlEpnFqoFvsF{xF~EEDDCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBB~{BvtArpAljAhgAed@dc@ca@ca@caAdbAecAfdAfd@ed@dd@dc@ca>ba>b_>a^>a^>`^>`^>`^>b`?ca?ec@fd@fdAgeAgeAgeAgeAgeAgeAfdAdb@db@b`?a_?a_>a^>c`>gc>kg>ok>uq?zu@~yA{B~BCDEFFFFGH~I|I}yJzvJxtKwtKwtKvsKvsKvsKvsKwtKyvLyvM{xN|zN~|N~|N~OOPPQQQQQQQQQQQOMKHFDBBBBBBBBBBBBBBBBBBBBBAAAA@?~{?wt>ol=ig=ca<_^<\[<[Z<[Yb`@db@edBhgDkiFnlFpnHrpHusJwuJxvLzwL{xN{xO|yO|yP|zP|zOywOywNywNywMxvKxuJwuJwtJvsJvsJvsJvsIvtIvtHwuFyvFzwDzwC{wC{wBzvBzvAyuAyuAyuAwsAurAqnAolAkhAjgAieBieBieAhfAhgBihDjhEkiEkiFkiFljEnlEpnFrpFwtE|yEDDCCBBBBCCCCBBBBBBBBBBBBBBBBBBBBBB|B{vBtpApmAjh@fe@cb?ba?ba?b`?b`@ca@ca@db@db?db?db?ca?a_=`^=`^=_]=_]=_]=_]=`^=a_>b`?ca?ca@dbAecAecAecAec@ec@ec@ec@ca?b`?`^>`^>`]=_]=a^=d`=hd>kh?pl?tp@xtAyvA|yB{D}DFGGHHH~H|I{J}yK{wKyuKxuKxuKxuKxuKwtKwtKxuKzwL{xM}zN~{N}N}NOPQQQQRRRRRRQQQOMKHFDBBBBBBBBBBBBBCCCCBBBBAABBB@zx?tr=mk=ig=ca=`^=][=][=\[=[Z=[Z<\Y<\Y<\Y<\Y;[Y;[Y;\Z;\Z<][<][<^\<^\=_]=_]=_]=_]=`^=`^>a_@ca@dcBgeBihDljEnlGpnGsqIusJvtKxvLywMywMzwNzwOzxOzxOwuOwuNwuNwuMvtKvsJusJurJtqJtqJtqJtqItrItrHtqFtqFtqDtqCspCsoBrnBpnAomAomAolAnlAmkAkiAigAgeAfdAfdBgdBgeChfChgCihCkiDljElkFlkFnlGpnGrpGtpGxtF}yEDCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB~B{xBvrBplAliAfe@cb@a`?`_?`_?`^?`^@a_@a_@b`@b`?b`?b`>a_>_]=^\=^\=][=][=][=][=^\=_]>`^?a_?a_@b`AcaAcaAcaAca@ca@ca@b`@b`?a_?`^>`^>^\=^\=_]=a_=ca>eb?if?li@olAqnAtqBvtDyxF{yH}{I~|I~}J}J}J~|J~zK}yK{wKzvKzvMzwMzwMzwMzwM{xM|yM|yM}zN~{O|P}PPPQRSSSSSSSSSSRQQOMKHFDBBBBBBBBBBBBBCCDDDDDDCCBB~A{yAtr@om@jh?hf?db?a_?_]?`^?`^?_]?_]>_]>_]>^\>^\=][=][=\[=\[<][<][<\Z<\Z=][=][=][=][=^\=^\>_]@a_@baBecBgfDjhEliGnkHpmHroIrpItrJtsLvsMwtOwtOxtOxtNusNusMusMusLtrJtqIsqIspIroIroIroIroIqoIqoHpnFpnFomDokCnkCliBlhBjhAigAigAigAigAhfAfdBecBebBebBebCfcCfeDgfDihDihDkjElkFnkGnkGpmHroHtqHurHyuG~yEECBBBBBBAAAABBBBBBBBBBBBBBBBCCCC}C}zCwtCroCmjBjhAfdAca@`^?_]?_]?_]?_]@`^@`^@a_@a_?a_?a_>`^>^\=^\=\Z=[Y=[Y=[Y=][=][=^\>_]?`^?a^@a_Aa`Aa`Ab`Ab`Ab`Ab`Ab`Ab`@a_?`^?`]>^]=^]=^]=_]=a_=c`?eb@gdAigBjiBnmCqoEurGvtIxvJzxJ|zK|zK|zJ{yJ{xK{wK{wL{wL{wM{xM{yN}zN}zO}zO}zO~{O}P}QQRSSSSSSSSSSSSSSRRQOMKHFDBBBBBBBBBBBBBCCDDEEEEEEDC|yBwuBqoAljAhfAfdAdbAb`Ab`AcaAcaAb`Ab`@b`@b`@`_@`^@`^@`]?_\>^\=][=\Z=[Y=[Y>[Y>[Y>[Y>[Y=[Y=][>^\@`^Aa_CcaDfdDhfEjgFliFnkGpmHpnHqoIrpKtqLuqNurNvsNvsNsqNsqMsqMsqLrpJroIqnIqnIpnIpnIpmIpmIomIomHnlFljFkiDigCifCgdBgcBecAdbAdbAdbAdbAcaAcaBcaBcaBdbBdbBecDgeEifFkhFkiFmkGnlHpmIpmIroJtqJvsJwtJ{wI{GECBBBBBBAAAABBBBBBBBBBBBBBCDEEEE|yEyvEspDolDjhDhfBdbAb`?`^?_]?_]?_]?_]@`^@`^@a_@a_?a_?a_>`^>^\=^\=\Z=[Y=[Y=\Z=\Z=\Z=\Z>][?_]?`^@`^Aa_Aa_Ab`Ab`Ab`Ab`Ab`Ab`Aa_A`^@`]@_]?^]?^]?_^?_^@`^Ab`AdbBfdCgfCjiDlkFpnGrpItrJvtJxvKywKywLywLywMzwMzwN{xN{xO|yO~{P|P|Q}Q~R~RSSTTUUUUUUUUTTTTTTSQQOMKHFDBBBBBBBBBBBBBCCDFGGGGGGF~{ExuDtrDnlCjhCfdCecCdbCdbCdbCecCecCecCecBfdBfdBecBcbBcaBa`Aa_@_]?_\?]Z>\Y>[Y>[Y>[Y?[Y?[Y?[Y?][@^\A`^Ba_CcaCecDgeEheFjgFliGnkHnkHomIpmKroLspNspNtqNtqOsqOsqNsqNsqMrpKqoJpnJpnIpnIpnIolIolHnlHnlGmkGkiFjiFhgEheCfcBfbBdbBcaBcaCcaCcaCcaCcaCdbCdbCecCecDfdEhfEigFkiGliGnkHpmJroKqnKspKurKwtKxuK|xJ|HGEDBBBBBBBBBBBBBBBBBBBBBCCDEFFF|FyvFvsFqoEmkDigCgeBecBcaAa_@`^@`^@`^@`^Aa_Aa_Ab`Ab`@b`@b`?a_?_]>_]>][>\Z>\Z>\Z>\Z>\Z>\Z>][@_]A`^C`^Ca_Cb`CcaCcaBcaBcaBcaBcaAb`Aa_Aa^A`^A_^A_^A_^A_^A`^Ab`BdbBfdCgeEihEkjGomHqoJsqKusKwuLwvLyvMzwMzwNzwNzwO{wO}yP}zP|Q|Q~R~SSTUUUUVVVVVVVVUUUUUUTSSQOLJGECCCBBBBBBBBCCDEEFGGHHHH~}GzyFusErpEnlDkiDhfDgeDecDecDecDfdDfdDfdDfdDgeDgeDfdDfdCedBcbBc`Aa^@`]?^[>]Z>]Z?\Z?\Z?\Z?\Z@][A_]A_]Ba_Cb`DdbEfcEheEheEjgFkhGliHmiInkJomLqoMrpOrpOsqOsqOsqOsqNsqNsqMrpKqoJpnJpnIpnIonInmImkHlkHliGkiGigFhgFfeEfcCdaBc`Bc`Bb_Bb_Cb_Cb_Cc`CcaCdbCecCecCfdDfeDhfEjgGliHnjJplJroLtqMsqMurMwtMyvMywL|zJ}HGEDBBBBBBBBBBBBBBBBBBBBBCDDEFG~H}zHwtHtqGolFkiEhfDgeCecCcaBa_Aa_Aa_Aa_Aa_Bb`Bb`Bb`Bb`Ab`Ab`@a_@_]?_]?][?\Z?\Z?\Z?\Z?\Z?\Z@][A_]A`^B`^Ca_Cb`CcaCcaBcaBcaBcaBcaBb`Bb`Ca_Ca_C`^C`^C`^C`^C`^Cb`CdbCfdDgeDigEkiGmkHomJqoKsqKusLwsMyuNzvOzwNzwOzwP{xQ}zP~{Q}R~STUUVWWWWXXXXVVVVUUUUUUTSSQOLJGECCCBBBBBBBBCCDDEGHJJJJ}J{yIwvHsrGrpFnlEkiDhfDgeDgeDgeDgeFfdFfdFgeFhfFigFigFhfFhfEgfDedDebCc`Bb_A`]@`\?^[?][?][@][@^\A_]C`^Da_Da`DbaDdcEfcEheEieEigFjgGkiHliInkJomLqoMrpOrpOsqOsqOrqOrqNrpNrpMqoKpnJomJomIomIomInlImkHljHkiGjhGhfFhfFfdEebCc`Bb`Bb`Ba_Ba_Ca_Ca_Cb`CcaDdbDdcDecDgdEgdEifFkhHmjHnkJpmJroLtqMspMurMwtMyvMzwL}zK}IGEDBBBBBBBBBBBBBBBBBBBBBCCDFGG}H{yHutHsqHomGkiFhfEgeDecDcaCa_Ba_Ba_Ba_Ba_Cb`Cb`Cb`Cb`Bb`Bb`Aa_A`^@_]@^\@^\@][@\Z@\Z@\Z@\ZA][A_]B`^B`^Ca_Cb`CcaCcaCcaCcaCcaCcaCcaCcaCb`Cb`Ca_Ca_Ca_Ca_Ca_CcaDdbDfdEgeEigFkiHmkIomKqoLsqLusMvsNxuOxuOzwOzwO|yQ|yQ~{Q~{Q}RSTUUVWWWWXXXXWWWWVVVVVVUTSQNLJGECCCBBBBBBBBBBCEFHIKKK}K~|KzxJvuHrqHpoFmkEkiEigEhfEhfEgeEgeFgeFgeFhfFigGjhGjhGigGigFhgDfeCecCcaBb`A`^@_]@_\@^\@^\A^\A^\B_]Ca_Ca_DcaEcaEecEecEgeFgeFigGigGkiGkiImkJnlLpnMqoOqqOrqOrqOrqOrqNrpNrpMqoKpnJomJomIomIomInlImkHljHkiGjhGhfFhfFfdEdbCb`Bb`Bb`Ba_Ba_Ca_Ca_Cb`CcaDdbDdcDecDgdEgdEifFkhHmjHnkJpmJroLtqMspMurMwtMyvMzwL}zK}IGEDBBBBBBBBBBBBBBBBBBBBBCCDFGG}H{yHutHsqHomGkiFhfEgeDecDcaCa_Ba_Ba_Ba_Ba_Cb`Cb`Cb`Cb`Bb`Bb`Aa_A`^@_]@^\@^\@][@\Z@\Z@\Z@\ZA][A_]B`^B`^Ca_Cb`CcaCcaCcaCcaCcaCcaCcaCcaCb`Cb`Ca_Ca_Ca_Ca_Ca_CcaDdbDfdEgeEigFkiHmkIomKqoLsqLusMvsNxuOxuOzwOzwO|yQ|yQ~{Q~{Q}RSTUUVWWWWXXXXWWWWVVVVVVUTSQNLJGECCCBBBBBBBBBBCEFHIKLL}L~|KzxJvtHrpHpnFmkEkiEigEhfEhfEgeEgeFgeFgeFhfFigGjhGjhGjhGjhFigDgeCecCcaBb`A`^@_]@_\@^\@^\A^\A^\B_]Ca_Ca_DcaEcaEecEecEgeFgeFigGigGkiGkiImkJnlLpnMqoOqqOrqOrqTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-16_ch.tga0000644000175000017500000003005410145416156015556 0ustar cedriccedric@@J~zIGFDCCBBBBAAAA|Ayv@ol?if=b_=`];[Y:YW9WU9XV9YV:ZW<\Y<^[>a_@dbBgfCkhEolFqnHtpHvrJytJ{wL~zL|N~OQQTUWXXYYYWVSQOMKKKJJHJ~|IGFDCCBBBBAAA@~{?xu@nk?gd<`]<^[;ZY:YW9VU9WU9XV:YW<[Y<^[>a_@b`BfdCifEmjFomHroHtpJwsJyuL|xL}zN|OQQRSUVVVVVURPMKIGGGFFFI}IGFDCCBBBBA@@@}y>vs?li>eb;^\;\[:YX9XV9VT9WT9WV:XW`^@b`BfdAgeCkiEmlGpnGroIurIwtKzwK{xM~{N}PQQRSTTSSSRPNJHGEEEDDDI}IGFDCCBBBBA@@?{w>tp=jg^\@`^BdbAecCigDkjGnlGpmIspIvsKxuKyvM|yL~{N~OOPPPPOOONLJHFECCCBBBJ}I~GGEDDCCBBAA@>zu>sn_]@caAdbCigDkjFnlFpmHspIvsJxuJxuLzwK}zM}N~NNNNNMMLLKHGEDCCCBBBK}I~GGEDDCCBBAA@z=vq=oj_]@b`AdbCgeCihDljEnkGqnItqHvsIvsJxuK{xK{L|LLKJJIIHHGFECBBCCBBBK|I}GGFEDCBAA@@z?zu=rn_]@b`AcaBfdBigCkiEljGomHqoGtrHvsIxtJ{wK{K}IIIGGEEEEDDDCAABBBBBL|I}G~G~FEDCB}A|?}z?{w>vr=rm`^@b`AcaAecBgeCigDjhFmkFomGrpHtqIxtJ{wI{I~GGFEDCCCCBBBCAABBBBBM|J|H|H|G|E~|C}{D}zB{x@yv?vs>uq=pmgd?ec@db@ca@db@dbAebCfdCgeEihFljFpmFroFwsF{wF}ECBBAAAAAABBBBBBBBBBAN|K}yIyvIwtGsqEomCkiBig@ec=ba;`^:`];a^:b^:da:gd;jhtq>tr>tr>qp>po>ml?ki?ig@fd@ec@eb@dbAebCfdCgeEihFljFpmFroFwsF{wF}ECBBAAAAAABBBBBBBBBBAN|L|yJyvIvtGrpDomBjhAge?ca<`_:^\:_\:a^:c`:he;khyu>|w>{x>{x?zx?xw?ut?qo@nm@ki@ge@fd@fc@fcAfcBfdCheDkgEmjFpmFroFvsF{xF~EDCCBBBBBBBBBBBBBBAA@N|L{yJwvIusGqoDmkBhfAec?a_<`]:^\:`^:da:he:ok;sp>zv?~{?@@@@@@?}|?wu@rq@mk@ig@fd@fc@fcAfcBfdCheDkgEmjFpmFroFvsF{xF~EDCCBBBBBBBBBBBBBBAA}?}yN~|LzyJvuItrGpnDkiBge@db>a_<`^:a_:b`:ge;mj;uqca}?@@AAAAAA@@}{@xv@om@jh@fd@fc@ebAdbAdaBebCgdDjgCmjDomDtrDzwD~DDCCBBBBBBBBBBBBA?}>xv>ro>nlM~{LzxJvtHtrFpnDlkBhg@fd>fc=he@@ABBBBAA@@~|@wv@om@jh@ec@eb@da@ca@caAdbBfdCigCljCnlCsqCywCCCCCBBBBBBBBBBAA@?zx>tq>mk=jhM~{LzxJvtHtrFpnDnmBkj@jh>li>nl>sp?xs?~y??@@@ABBBBAA@@~|@wv@om@hg@ca@c`@b_@a_@a_Ab`@dbAgeAjhCljCqoCwuC}CCCCBBBBBBBBBBA@|?{x=sptq?zw@~z@@@AAAABBBBAA@@{?xu?nl?gf?ba?a`?`^?_]?_]@`^@b`AdcAgfBigBnlBusB}{BBBBBBBBBBBBBBA~@zw>ur^\>`^?ba?ed@ge@lj@rp@zx@}@AABBBBBBBBBB}A{x?sp>nkwt>mj=ed=_^=_]=][=\Z=\Z>\Z>^\?`_?cb@ec@ki@pn@xv@~z@@@AAAAAAAAAA}z@xu>pm>kiurb`>ge>ki>sq>yu>}??AA@@AAAAA~{Awt@ro>jh>ge|w=tp;jf:c`:\Z:[Y:YW;XV;XVge>nl>tq={w?|?@@@?@@A}A}yAxuAro@mj>fe>db<_];\Z;[Y;[YJwsIvrHuqGtqGwsFzwD|CCBBAAAABBBBBBBBAA@>zu=rn;hd:a^:ZX:YW:WU9VT9VT:VT:WU9XV9ZX:[Y;]\vs>zw>zw>|y?~z?~z@~z@|xAyuAurAroAli@hf>ba>a_<][;\Z;[Y;[YIvsHurHuqHtqFwtEzwC}CCCCBBBBBBBBBBAA@@?=yusp=ur>ws?xs@ws@ur@sp@qm@nk@jf?fd?a`>`^=][<\Z;\Z;\ZItqHspHspGspFwtEzwC}CCCCBBBBBBBBBBAA@@?|=vrmi?ok@ok@mk@mj@ki@jg@fd?db?a`>`^=_]=^\<_];`^HroGqnGqnFroEvsDzwD}CCCCBBBBBBBBBBAA@@?|y=soa_>`^>b`=caca>cb>fd>ig>kiFlkEljEnlDpmDuqCyvC|BBBBBBBl恵H@~r7TR6RP5RO5PM5OM5OM5PN5ON5ONlWuy9UT:WV;YWhSxz?ec@ge@fd@ec@ec@ed@ed?db?fd>jg>mk>pmDigCjhCljCnkCsoCwtC{BBBBBBelIIkԬr@}xrpZX{Xx|Wuy7SR6RP5RO5PM5OM5OM5NM5NM5NMlWtx9SR9UTXx|斺ao?ge@jh@jh@ig@jg@ki@ki?jh?mj>qn>ur@yuBgeBhfBjhCliCqnBwsBzBBBBBB۬VBBBA^r@xtr[<_]:[Y9WU8TS>[[UtxUtwUrvUrv`^?b_@fbAgdAmjAtpA|xB~BBBBIBBBBB|VlIrqAigr[}=][;[Y;ZW9XV9WV7TT6RQ6PO6ON6NM4NL||Tqv5NM7RQvOvxZZE|>~z@AAAAAAAAAAB<_]=b_@fbAgdAmjAtpA|xB~BBBBBϬlBBBB}zV}Ager[}=][;[Y;ZW9XV9WV7UT6RQ6PO6ON6NM4NLtTqv5NM7SQe憭a`>_^=_^=^\<][;[Y;[Y9YW8WU8US8US8SQ8PO6NN5ML5LK5ML5ON5PO7WU8^\:jg;qn=}y>@@ABBBBBBBBBBB=`^=fc?li?qmAxtB{BBBBBBBBBAAAA}A{wAro@lj@ge?fd?db>ba>a_=a`=`^<_]<^[;^[:\Y9[X9YW9XV9VT8SR7PP6ON6NL5OM5QO5RO7YV8`]:li;tq=|>@AABBBBBBBBBBB<`]nk>sp@|xA~ABBBBBBBBAA@@|@{w@so?lj?ge>fd>db>ca>b`=b`=b`=`_=_\<_\;^Z:]Z:[Y:ZX:XV9UT8RQ7PN7PM6PN6QO6RP7YV9`^;mj}?ABBBBBBBBAAAAA<`]pm>wt@|AABBBBBBBBAA@@~@}y@vr?pm?kh>jg>he>hd>gd=ge=ge>fd>fb=db;ea:da:b`:a_:_]9[Z9WV8TR8SP7RP7SQ7TR7[W9b_;nk?ABBBBBBBBAAAA@ro>yv@AABBBBBBBBAA@@@|@zu?tq?pm>ol>nk>mj>mj>mk>mk>mj>mi=litq>{x@AABBBBBBBBAA@@@@{?|x?xu>wt>vs>wr>wr?ws?ws?ws?ws>vs>vs=ur=sq=sp=nl{x@AABBBBBBBBAAAAAA@}@{?~z?}z?}y?}y@}z@}z@}y@}y?}z>}z>|y>zw=yv=ur{x@AABBBBBBBBAAAAAA@@@@@@AAAA@@@@??~z>wu;nl:he;a^:][:ZX:ZY:_^;fd=om=wu?@BBBBBBBBBAA@?~?~y:fc;kh=sp>zx@AABBBBBBBBAAAAAAAA@@@@BBBB@AAA@@?}zxv@AABBBBBBBBB@?>{>yu:he;kh=sp>zx@AABBBBBBBBAAAAAAAAAAAABBBBAAAA@@?>xu=qnrp>zx@AABBBBBBBBB@?<{x=tq;jf

  • sp>yw@AABBBBBBBBBBBBBBBBBBBBBBBBBBBBA@@?zw>ro=hgqn>wu@}AABBBBBBBBBBBBBBBBBBBBBBBBBBBBA@@?|y>tq=jitr@|zAABBBBBBBBBBBBBBBBBBBBBBBBBBBBA@@?|y>uq>ki=fe=ba~pn@xvA}|ABBBBBBBBBBBBBBBBBBBBBBBBBBBBA@@?|x>uq>ki=fe=ba~ol?us?zx@~AAAAAAAAAAAABBBBBBBBBBBBAAAA@??>{w=sp=kh=fd=aa=a`=fc>ki>sq?zx@@ABBBBBBAAA?=~;vr9li=li=if=he>kh?pm?ur@{xA}AAAAAAAAAAABBBBBBBBBBBBAAAA@??|>ws=qn=if=db=a`=a_=ec>ig>qo?xu@~@ABBBBBBAAA?=~;ur9ki>mj>ig>gd>hf>li?pm@vsA{xA~AAAAAAAAAABBBBBBBBBBBBAAAA@?}?|x>tp=nk=gd=ca=a_=`^=db>hf>om?ur@~{@ABBBBBBAAA?=};tq8jh?ol?ig?fd>fd>hf?kh@pmAtqAyvA|yA{A|A|A|A|A{A{A{A{B|B}B~B~BBBBBBB~B~A}A}A|A~z@}y?xu?tq>nk=jg=eb=a_=_]=_]=b`>fd>ki>qn@xu@~{ABBBBBBAAA?={;ro8if@om@ig@fd?ge?he@ig@ljApmAtqAwtAxvAxvAxvAyvAyvAxuAxu@yu@yvAzwA{xB{yB|yC}zC}zC}zC}zB}zB}zB|yB|yA|wAzw@yv@wt@vs@sp?ol>jh=gd=b_=`^=^\=_\=a^=da=ig=mk?uq@{xB~BBBBCCB@@><~z:rn8hd@qo@ki@fdAgeAfd@ge@hfAjgAnkAolApnApnApnApnApnApmApm@qm@qnAroAspBsqBtsCutCutCutCutButButBtsBtqAtqAro@qn@ol@nk@kh?hf>db=c`=`]=^\=][=][=_\=b_=ed=ig?om@urB|xB{BBBCCB@@>}a_>^\>][>][=][=_]>a^>db?fe@kiApnBwsB{wB|BBCCB@?~=|wolfedb<`^<\Z:XV9UREusEonEjiEhfEfcEdbEb`Cb`Cb`Cb`Cb`Cb`Cb`CcaCcaDdbEdbEecFgeGgeGigGigGkiHljHljHljHljGljGljGkiGjhFjhEhfEfdDdbCcaBa_A`^A`^A`^A`^A`^A`^Ba_BaaCbaCdcDedDgfDifDkhDliDliCliCliBkiBigAge?ec>ca<_]<[Y:WU9URTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-21_c2.tga0000755000175000017500000060005410145416156015472 0ustar cedriccedricwwwwwwvvvuuusssssstttuuuwww{{{ý~~~}}}}}}}}}~~~ĿrrrcccZZZVVVTTTPPPOOOPPPRRRRRRPPPOOOPPPTTTVVVZZZccctttÿŽ~~~zzzvvvtttqqqooommmmmmmmmnnnoooqqqsssttttttvvvvvvvvvtttsssssstttuuuxxx{{{¼~~~}}}}}}}}}~~~ĿrrrcccZZZVVVTTTPPPOOOPPPRRRRRRPPPOOOPPPTTTVVVZZZcccttt¾Ž~~~zzzvvvtttqqqooommmlllllllllnnnppprrrssssssuuuuuutttsssqqqqqqrrrsssuuuyyy}}}|||{{{{{{{{{|||}}}ĿrrrcccZZZVVVTTTPPPOOOPPPRRRRRRPPPOOOPPPTTTWWW[[[dddtttǿ{{{uuurrrooommmkkkiiiiiijjjkkkmmmoooqqqrrrrrrssssssrrrqqqoooooopppqqqssswww}}}|||zzzyyyxxxxxxxxxyyyzzz|||~~~ĿrrrcccZZZVVVTTTPPPOOOPPPRRRRRRPPPOOOPPPTTTVVVZZZcccrrr|||vvvpppllljjjhhhfffeeedddeeegggjjjmmmpppqqqqqqsssrrrqqqpppnnnmmmmmmoooqqqtttzzz}}}yyywwwuuuttttttttttttvvvxxxzzz|||~~~ĿrrrcccZZZVVVTTTPPPOOOPPPRRRRRRPPPOOOPPPTTTVVVZZZbbbqqqþ~~~xxxqqqkkkgggdddbbb```______aaacccgggjjjnnnooooooqqqpppooonnnlllkkkkkklllnnnqqqwww|||ľ~~~{{{yyyuuusssrrrqqqqqqqqqqqqsssuuuwwwyyy|||ĿrrrcccZZZVVVTTTPPPOOOPPPRRRRRRPPPOOOPPPTTTVVVZZZbbbqqqzzzsssllleee```^^^]]][[[[[[\\\^^^aaadddhhhlllmmmmmmqqqpppooommmkkkjjjjjjkkkmmmppptttyyy}}}ü{{{yyywwwsssqqqpppoooooonnnnnnoooqqqsssvvvyyy}}}ĿrrrcccZZZVVVTTTPPPOOOPPPRRRRRRQQQPPPPPPTTTVVVYYY```ooo}}}½}}}vvvnnnggg```[[[YYYXXXVVVVVVXXXZZZ^^^cccgggkkkmmmmmmqqqqqqooommmkkkiiiiiiiiikkknnnrrrwww{{{|||yyywwwuuusssqqqoooooommmmmmmmmmmmoooqqqsssvvvzzz}}}ssscccZZZVVVTTTPPPOOOPPPRRRRRRQQQPPPPPPTTTVVVYYYaaannn|||Ŀ{{{ssslllddd\\\XXXVVVUUUTTTTTTUUUXXX\\\bbbgggkkkmmmmmmrrrrrrpppnnnllljjjjjjjjjkkkmmmqqquuuyyy{{{yyywwwvvvtttrrrpppooommmlllllllllnnnppprrruuuyyy|||ssscccZZZVVVTTTPPPOOOPPPRRRRRRQQQPPPQQQTTTVVVYYY```mmm{{{xxxpppiiibbb[[[VVVTTTSSSSSSSSSUUUXXX]]]bbbggglllnnnnnnuuuuuusssqqqnnnllljjjjjjjjjlllpppssswww|||þ}}}zzzyyywwwuuurrrqqqooommmlllkkkkkkmmmnnnqqqtttxxx{{{~~~ssscccZZZVVVTTTPPPOOOPPPRRRRRRQQQPPPQQQSSSUUUXXX___lllyyy}}}vvvooohhhaaaZZZVVVTTTSSSSSSSSSTTTXXX]]]ccciiinnnppppppyyyyyywwwtttqqqnnnlllkkkkkklllnnnqqqtttyyyĿ~~~{{{zzzyyywwwuuusssqqqooommmlllllllllnnnooorrrvvvyyy|||·ssscccZZZVVVTTTPPPOOOPPPRRRRRRQQQPPPQQQSSSVVVYYY___kkkxxx¿~~~yyyrrrkkkeee^^^XXXTTTRRRQQQQQQQQQSSSWWW]]]dddkkkpppssssss}}}}}}{{{xxxtttqqqnnnlllkkkkkkmmmooorrrwww}}}¾~~~}}}|||zzzwwwuuusssqqqnnnmmmllllllmmmooorrrvvvyyy|||ĹrrraaaYYYUUUSSSOOONNNOOOQQQQQQPPPOOOPPPRRRUUUXXX^^^jjjwww}}}{{{{{{|||~~~}}}{{{vvvoooiiiccc]]]WWWSSSQQQQQQQQQRRRTTTXXX^^^eeelllrrruuuuuu~~~{{{wwwsssooommmkkklllmmmnnnqqquuu{{{}}}zzzyyyvvvsssqqqooommmmmmnnnppprrrvvvxxxzzz}}}źrrraaaXXXUUUSSSOOONNNOOOQQQQQQPPPOOOPPPRRRUUUXXX___jjjwwwzzzuuurrrrrrrrrrrrssstttvvvxxx{{{}}}ÿ}}}zzzxxxtttnnngggaaa\\\VVVSSSRRRRRRRRRSSSUUUYYY```gggooouuuxxxxxx{{{vvvrrrooommmmmmmmmnnnqqqtttzzz~~~|||{{{xxxuuurrrpppnnnnnnooopppsssuuuxxxzzz|||ǻrrraaaXXXUUUSSSOOONNNOOOQQQQQQPPPOOOPPPSSSUUUXXX___jjjvvvyyyrrrllliiihhhggggggggghhhiiikkkmmmnnnppprrrssstttuuuwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyzzz{{{|||||||||}}}|||yyywwwsssmmmgggaaa\\\WWWSSSRRRRRRRRRSSSUUUZZZaaaiiirrryyy||||||}}}xxxtttqqqoooooooooqqqtttzzz~~~~~~}}}zzzwwwuuurrrqqqppppppqqqsssuuuwwwzzz|||ƻtttccc[[[WWWUUUQQQPPPQQQSSSSSSRRRQQQRRRTTTVVVYYY___jjjvvv{{{tttllleee```___^^^\\\\\\\\\]]]^^^___```aaacccddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffgggggggggggghhhjjjkkkmmmsssľ~~~zzzwwwtttqqqkkkeee```\\\WWWSSSRRRRRRRRRTTTVVV[[[dddmmmvvv~~~{{{wwwuuusssqqqqqqrrruuuyyy~~~~~~{{{xxxvvvsssrrrqqqqqqrrrtttvvvxxxzzz|||Ǽuuuddd\\\XXXVVVRRRQQQRRRSSSSSSRRRRRRSSSUUUWWWZZZ```kkkvvvzzzqqqhhh___ZZZXXXWWWUUUTTTUUUVVVVVVWWWWWWXXXXXXYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYYYYYYYYYYYYZZZ[[[[[[[[[[[[\\\^^^___```fffqqq|||ü~~~zzzwwwtttqqqkkkeee```\\\WWWSSSRRRRRRSSSTTTVVV\\\eeeoooyyy{{{xxxvvvttttttuuuwww{{{}}}{{{wwwuuusssqqqqqqqqqrrrtttvvvxxxzzz|||ƻvvveee]]]YYYWWWSSSRRRSSSUUUUUUTTTSSSTTTVVVXXX[[[aaakkkvvvyyyoooeee\\\WWWTTTSSSQQQPPPQQQRRRRRRSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUTTTTTTTTTTTTTTTUUUUUUUUUUUUVVVXXXXXXZZZ^^^hhhrrr|||ü~~~zzzwwwtttqqqkkkeee```\\\WWWSSSRRRRRRSSSTTTVVV\\\eeeppp{{{}}}{{{yyyxxxyyyzzz~~~~~~|||yyywwwtttrrrqqqqqqqqqrrrtttvvvxxxzzz|||ĺxxxiii```\\\ZZZVVVUUUVVVXXXXXXWWWVVVWWWYYY[[[^^^dddmmmwwwzzzpppeee\\\VVVTTTSSSQQQPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSTTTTTTTTTXXX```hhhqqq~~~º|||yyyvvvrrrlllfffaaa]]]XXXTTTRRRRRRSSSTTTVVV\\\gggrrr}}}}}}{{{yyywwwuuusssqqqppppppqqqrrrtttvvvxxxzzz|||¹~~~ooogggccc```\\\[[[\\\]]]]]]\\\\\\]]]___aaadddhhhpppxxx|||rrrggg]]]XXXVVVTTTRRRQQQRRRSSSSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQPPPPPPPPPPPPOOONNNQQQXXX]]]eeeqqq~~~{{{xxxtttnnnhhhbbb]]]WWWSSSQQQQQQSSSTTTWWW^^^iiiuuu}}}{{{yyywwwuuutttrrrqqqpppppppppqqqqqqsssuuuwwwyyy{{{~~~ÿvvvnnniiifffbbbaaabbbccccccccccccdddfffhhhjjjnnnttt{{{uuujjj___YYYWWWUUUSSSSSSTTTUUUUUUUUUTTTTTTTTTTTTTTTTTTTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRQQQPPPOOONNNNNNLLLKKKMMMSSSWWW]]]iii|||~~~{{{wwwpppjjjddd^^^XXXTTTRRRQQQSSSTTTXXX___jjjxxx}}}{{{yyywwwuuusssrrrqqqooonnnnnnnnnnnnoooqqqsssuuuwwwyyy{{{}}}{{{tttooolllhhhgggggghhhhhhhhhiiijjjlllnnnooorrrxxx}}}yyynnnddd___\\\ZZZXXXWWWXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYXXXXXXXXXWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXVVVTTTSSSQQQOOOMMMKKKMMMQQQUUU[[[fffyyyǿzzzsssllleee^^^XXXSSSQQQQQQSSSTTTWWW^^^kkkyyy}}}{{{wwwuuusssqqqooonnnmmmllllllkkkjjjkkkkkklllnnnppprrruuuvvvyyy{{{|||}}}{{{vvvrrrnnnmmmmmmnnnnnnnnnoooppprrrssstttvvvzzz~~~vvvmmmhhhfffdddbbbaaabbbcccccccccccccccccccccccccccccccccbbbbbbbbbaaaaaaaaaaaaaaabbbbbbbbbbbbbbbaaa___\\\YYYUUUSSSPPPNNNOOOSSSVVV[[[eeexxxƿ~~~vvvnnnggg```YYYTTTRRRQQQSSSTTTXXX___lll{{{~~~|||{{{zzzyyywwwuuutttrrrpppnnnmmmkkkiiihhhgggfffffffffffffffhhhhhhiiikkkmmmoooqqqsssuuuvvvwwwxxxzzz|||~~~|||xxxtttrrrrrrrrrrrrrrrrrrsssuuuuuuvvvxxxzzz}}}{{{wwwuuutttrrrrrrsssttttttssssssrrrrrrrrrrrrrrrrrrrrrqqqqqqqqqppppppppppppqqqqqqqqqqqqqqqqqqoookkkfffaaa\\\XXXTTTRRRRRRTTTVVVZZZddduuuýwwwoooggg```XXXSSSQQQQQQSSSUUUYYYaaannn}}}}}}yyywwwuuutttrrrqqqppppppnnnmmmlllkkkiiigggfffeeecccbbbbbbaaaaaaaaaaaabbbcccdddeeefffhhhiiikkklllnnnnnnoooppprrrtttvvvyyy~~~zzzvvvtttsssssssssssssssttttttuuuvvvwwwyyy{{{|||~~~xxxqqqjjjccc\\\WWWTTTTTTVVVXXX[[[ddduuuüzzzqqqiiiaaaYYYTTTQQQQQQSSSUUUYYYaaappp~~~zzzuuuqqqnnnmmmllljjjiiihhhhhhfffeeeeeedddbbbaaa``````^^^^^^]]]]]]]]]]]]]]]^^^^^^______```bbbcccdddeeeggggggggghhhjjjlllnnnrrrxxx~~~|||xxxuuutttsssqqqqqqqqqrrrrrrsssssstttvvvwwwxxx{{{~~~|||sssjjjbbb\\\XXXXXXYYYZZZ^^^gggvvv{{{rrriiiaaaYYYTTTQQQQQQSSSUUUYYYbbbqqq|||wwwrrrmmmhhheeedddcccaaaaaaaaa``````___^^^^^^\\\\\\[[[ZZZZZZYYYYYYYYYYYYYYYYYYYYYYYYZZZ[[[[[[]]]]]]^^^____________```bbbdddfffkkkrrryyy}}}yyyvvvtttrrrpppooooooooooooooooooppprrrssstttvvvzzz|||~~~tttjjjddd```______```dddlll{{{{{{qqqiiiaaaYYYTTTQQQQQQSSSUUUZZZcccrrr~~~{{{xxxrrrmmmhhhccc___\\\[[[[[[YYYYYYYYYYYYYYYXXXXXXWWWWWWVVVVVVVVVVVVVVVUUUUUUUUUUUUUUUUUUUUUVVVVVVWWWWWWXXXXXXYYYYYYXXXXXXXXXZZZ\\\___ccckkksss{{{{{{wwwuuurrrpppnnnnnnmmmmmmllllllmmmmmmnnnoooqqqtttwwwzzz}}}wwwqqqnnnlllllllllooovvvxxxnnnfff___WWWRRRPPPQQQSSSUUUZZZcccsss~~~~~~}}}zzzxxxuuuqqqkkkfffaaa]]]YYYWWWWWWVVVVVVUUUUUUUUUUUUUUUTTTTTTTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTUUUUUUTTTTTTTTTVVVXXXZZZ^^^fffooowww}}}yyyvvvsssooommmkkkjjjhhhhhhhhhhhhjjjjjjlllnnnqqqsssvvvyyy}}}~~~{{{yyyyyyyyy{{{tttkkkddd^^^WWWRRRPPPQQQSSSVVVZZZcccttt}}}|||{{{zzzvvvsssoookkkeeeaaa]]]ZZZVVVUUUTTTTTTTTTSSSSSSSSSSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSRRRQQQQQQSSSUUUWWW\\\dddmmmvvv~~~}}}yyyvvvrrrnnnkkkiiigggeeeeeeeeeeeeggggggiiikkknnnpppsssvvvzzz}}}}}}pppgggaaa[[[UUUQQQOOOQQQSSSVVVZZZcccttt|||zzzyyyvvvrrrmmmiiieee___\\\YYYWWWUUUTTTSSSSSSSSSSSSSSSSSSSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQSSSTTTWWW[[[cccllluuu}}}{{{wwwsssoookkkhhheeecccbbbbbbccccccdddfffhhhjjjmmmooorrrvvvyyy{{{}}}xxxkkkbbb]]]YYYSSSPPPOOOPPPTTTVVVZZZcccttt|||xxxuuuqqqkkkfffbbb^^^ZZZWWWUUUTTTRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQSSSTTTWWW[[[cccmmmuuu~~~}}}{{{zzzzzzzzz|||~~~}}}yyyuuuoookkkhhhfffcccaaa```aaaaaabbbdddfffhhhjjjlllnnnrrrtttwwwyyy}}}tttfff^^^ZZZVVVRRROOONNNPPPTTTVVVZZZcccttt{{{vvvrrrmmmgggbbb^^^ZZZVVVTTTRRRRRRPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRQQQRRRTTTVVVXXX]]]eeennnvvv~~~}}}zzzxxxvvvvvvvvvxxxzzz}}}~~~zzzvvvpppllliiigggdddbbbaaaaaaaaabbbccceeegggiiijjjlllppprrrtttvvvzzz|||~~~rrrccc[[[WWWTTTPPPMMMMMMOOOSSSUUUYYYbbbsss{{{uuupppjjjddd___[[[XXXTTTRRRRRRQQQQQQPPPPPPPPPPPPPPPPPPQQQQQQRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSTTTVVVXXX[[[```hhhqqqyyy|||yyyvvvtttttttttvvvxxxzzz}}}|||xxxrrrnnnkkkhhhdddcccbbbbbbbbbcccdddeeeggghhhiiikkkmmmoooqqqssswwwyyy{{{}}}~~~zzzxxxwwwwwwxxxzzzqqqbbbYYYUUURRRNNNLLLLLLNNNRRRTTTXXXaaarrr|||uuuooohhh```\\\YYYVVVTTTRRRRRRRRRRRRQQQQQQQQQQQQQQQRRRSSSSSSTTTUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWXXXYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZYYYYYYZZZ\\\^^^aaafffmmmuuu|||~~~{{{wwwtttrrrrrrrrrtttvvvxxxzzz}}}}}}yyyuuuqqqnnnlllhhhfffeeeddddddddddddeeefffggghhhiiikkkmmmoooqqqsssuuuwwwyyy{{{}}}|||wwwqqqmmmkkkjjjjjjlllooouuuqqqbbbYYYUUUSSSOOOMMMMMMOOOSSSUUUYYYbbbrrr~~~vvvnnnfff^^^YYYVVVTTTRRRQQQQQQRRRRRRRRRRRRSSSSSSTTTTTTTTTVVVWWWXXXYYYZZZ[[[ZZZZZZZZZZZZYYYZZZ[[[\\\^^^___aaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbccceeegggjjjnnnttt{{{~~~zzzvvvrrrpppooooooppprrrsssuuuwwwyyy{{{|||~~~~~~{{{wwwtttrrrooommmkkkjjjiiigggffffffffffffffffffgggiiijjjkkkmmmooopppqqqrrrtttvvvwwwyyy}}}~~~yyytttooojjjddd```^^^]]]___```dddkkkxxxsssddd[[[WWWUUUQQQOOOOOOQQQUUUWWW[[[cccrrrvvvnnneee\\\WWWTTTRRRPPPOOOPPPQQQQQQQQQRRRRRRTTTUUUVVVWWWYYY[[[]]]^^^_________^^^^^^^^^^^^^^^```bbbdddfffhhhiiijjjkkkkkkkkkkkkkkkkkkkkkkkklllnnnqqqtttxxx}}}~~~yyyuuurrrooonnnnnnoooooopppqqqsssuuuwwwxxxzzz|||~~~|||zzzxxxvvvtttrrrpppooommmkkkiiihhhhhhfffffffffffffffggghhhiiikkkkkkllllllnnnoooppprrrtttvvvxxx{{{{{{xxxvvvsssnnnjjjeeeaaa]]]YYYWWWWWWYYY[[[^^^fffttt¿uuufff]]]ZZZXXXTTTRRRRRRTTTWWWYYY\\\dddrrrxxxnnnddd[[[UUUSSSQQQOOONNNOOOPPPQQQRRRSSSTTTVVVWWWXXXZZZ\\\___aaaccceeeeeedddcccccccccbbbccceeegggjjjmmmoooqqqssstttttttttsssssssssssstttuuuwwwzzz}}}}}}yyytttqqqnnnllllllmmmmmmnnnoooppprrrtttvvvxxxzzz}}}~~~~~~|||{{{zzzyyywwwvvvtttrrrpppmmmkkkiiigggfffeeeeeeeeeeeefffgggggggggfffffffffggghhhjjjlllmmmnnnqqquuuxxx{{{yyyssspppnnnkkkgggccc```]]]YYYVVVTTTTTTVVVXXX\\\dddsssyyyjjjaaa]]][[[WWWUUUUUUWWWZZZ\\\___fffsss{{{qqqfff\\\WWWTTTRRRPPPOOOPPPQQQSSSTTTUUUWWWYYY[[[\\\___bbbeeegggiiijjjjjjiiigggggggggggghhhjjjmmmqqqtttxxxzzz{{{|||}}}}}}|||||||||}}}~~~~~~yyytttpppllljjjjjjjjjjjjjjjkkklllnnnpppqqqtttvvvyyy{{{}}}~~~~~~}}}{{{zzzyyywwwssspppmmmkkkhhhfffeeeddddddccccccccccccbbbaaa````````````aaaccccccdddfffjjjlllooottt~~~|||vvvpppjjjgggeeeccc___\\\ZZZXXXVVVSSSQQQRRRTTTWWW[[[cccrrrqqqiiifffccc___]]]\\\^^^```aaadddjjjuuu~~~tttiii^^^XXXVVVTTTRRRRRRSSSUUUWWWYYYZZZ]]]___bbbccceeeiiikkknnnooopppooonnnllllllllllllmmmqqquuuxxx}}}~~~xxxsssooojjjgggfffeeeeeedddeeefffhhhiiikkkmmmqqqtttvvvyyy{{{}}}~~~~~~|||xxxtttpppkkkgggdddbbbaaa____________^^^]]]\\\[[[ZZZYYYYYYZZZZZZZZZZZZ\\\^^^```bbbgggqqq{{{~~~xxxrrrlllfff```]]]\\\ZZZXXXVVVUUUTTTRRRPPPOOOOOOSSSUUUXXXaaapppº}}}vvvssspppllljjjiiiiiijjjkkklllqqqzzzwwwlllaaa[[[XXXVVVTTTTTTUUUXXXZZZ]]]```cccgggiiikkkmmmoooqqqsssttttttsssqqqooooooooooooqqquuuyyy~~~~~~xxxrrrlllfffcccbbbbbb`````````aaacccdddfffhhhlllooorrruuuyyy{{{|||}}}{{{vvvpppjjjdddaaa___^^^\\\[[[\\\[[[ZZZYYYXXXWWWWWWVVVVVVVVVVVVUUUUUUVVVXXXYYYZZZ___hhhqqqzzz~~~zzzxxxvvvsssnnniiiddd```[[[XXXWWWVVVTTTSSSRRRQQQPPPNNNMMMMMMQQQSSSWWW```ppp»~~~zzzwwwvvvvvvvvvvvvvvvyyyzzzoooddd^^^[[[YYYWWWWWWYYY[[[___bbbeeeiiimmmpppqqqsssuuuvvvwwwwwwwwwuuusssqqqqqqqqqqqqssswww{{{~~~wwwpppiiiccc```^^^^^^\\\[[[\\\\\\^^^___```cccgggkkkooossswwwyyy{{{|||~~~}}}wwwpppjjjccc___]]][[[YYYYYYYYYYYYYYYXXXVVVUUUUUUTTTTTTTTTTTTTTTTTTTTTVVVUUUVVVYYYaaaiiiqqq||||||yyyvvvrrrooonnnkkkgggccc___\\\XXXVVVVVVUUUSSSRRRRRRQQQPPPNNNMMMMMMQQQSSSWWW```qqq½uuukkkfffcccaaa______```bbbfffiiimmmqqquuuwwwxxxyyy{{{{{{{{{{{{yyywwwuuussssssssstttvvvzzz}}}uuunnnggg```\\\[[[ZZZXXXWWWWWWXXXZZZ[[[\\\___cccgggkkkooosssvvvyyy{{{}}}~~~wwwooohhhaaa\\\ZZZXXXVVVUUUVVVVVVVVVUUUUUUTTTTTTSSSSSSSSSSSSRRRRRRSSSSSSSSSSSSVVV\\\bbbhhhrrr~~~xxxtttqqqmmmiiifffeeeccc___]]]ZZZXXXVVVUUUTTTSSSSSSRRRRRRRRRRRRPPPOOOOOOSSSUUUYYYbbbrrrxxxsssqqqpppnnnnnnnnnppprrruuuxxx{{{~~~}}}{{{yyywwwwwwwwwyyy|||vvvnnneee]]]YYYWWWVVVTTTSSSSSSTTTVVVVVVXXXZZZ^^^bbbfffjjjpppsssvvvxxx|||~~~wwwooofff^^^ZZZXXXVVVTTTSSSTTTTTTTTTSSSSSSRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQPPPPPPRRRVVVZZZ___hhhvvv}}}zzzxxxtttoookkkgggccc___]]][[[ZZZXXXVVVUUUTTTRRRRRRQQQQQQQQQQQQQQQRRRRRRQQQPPPQQQUUUXXX\\\fffvvv¿}}}}}}}}}~~~}}}||||||}}}~~~~~~|||zzzyyyyyyzzz|||uuulllddd[[[WWWUUUTTTRRRQQQRRRSSSSSSTTTTTTVVVZZZ^^^aaaffflllppptttxxx|||~~~vvvnnneee\\\XXXUUUTTTRRRQQQRRRRRRRRRRRRQQQQQQQQQQQQPPPPPPPPPPPPPPPPPPPPPOOONNNOOOSSSVVV[[[cccqqq|||xxxtttqqqooolllhhhdddaaa^^^ZZZXXXWWWVVVTTTSSSRRRQQQQQQPPPPPPPPPPPPPPPQQQRRRRRRRRRQQQSSSWWWZZZ___hhhwww~~~}}}}}}{{{zzzzzzzzz{{{{{{}}}~~~|||{{{{{{{{{|||~~~vvvmmmddd[[[VVVTTTSSSQQQQQQQQQRRRSSSTTTTTTVVVYYY[[[^^^bbbhhhmmmrrrvvv{{{~~~uuummmddd[[[WWWTTTSSSQQQPPPQQQQQQQQQQQQQQQQQQQQQQQQPPPPPPPPPPPPPPPQQQQQQPPPOOOPPPTTTVVVZZZbbbooo}}}{{{uuurrroookkkiiigggfffbbb___\\\ZZZWWWUUUTTTTTTRRRRRRRRRQQQQQQPPPPPPPPPPPPPPPQQQQQQRRRRRRRRRUUUZZZ]]]bbbkkkzzz}}}|||{{{yyyxxxxxxwwwwwwvvvuuuuuuwwwxxxyyy|||~~~~~~xxxnnnddd[[[VVVTTTSSSQQQPPPQQQRRRRRRRRRSSSTTTVVVXXX[[[^^^dddiiinnnsssyyy|||~~~}}}uuulllccc[[[WWWTTTSSSQQQQQQQQQRRRRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRQQQPPPQQQSSSUUUXXX___lllxxxzzzpppkkkhhhfffbbb```___^^^\\\ZZZXXXWWWUUUTTTTTTSSSSSSRRRRRRRRRRRRQQQQQQQQQQQQQQQRRRSSSUUUUUUVVVYYY___ccchhhqqqxxxwwwvvvuuutttsssrrrqqqqqqqqqqqqppppppppppppqqqrrrtttxxx{{{}}}zzzpppfff]]]WWWUUUSSSQQQPPPQQQRRRRRRRRRRRRRRRTTTUUUWWW[[[```eeeiiinnnssswwwxxxzzz~~~}}}uuulllccc[[[WWWTTTSSSQQQQQQQQQRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSRRRRRRRRRQQQPPPQQQSSSTTTUUU[[[fffqqq}}}|||rrrgggaaa___]]]YYYXXXXXXXXXVVVUUUTTTSSSRRRQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRSSSSSSTTTUUUVVVZZZ\\\___cccjjjooottt}}}~~~|||{{{zzzyyyyyyrrrqqqpppooonnnmmmlllllllllllllllkkkjjjjjjjjjjjjkkkmmmoooqqqsssvvv||||||rrrggg]]]WWWTTTRRRPPPOOOPPPQQQQQQQQQQQQQQQSSSSSSUUUWWW[[[___dddhhhmmmqqqsssuuuyyy|||}}}uuummmddd\\\XXXVVVTTTRRRRRRRRRSSSSSSSSSTTTTTTTTTTTTTTTSSSSSSSSSRRRRRRRRRQQQQQQQQQSSSSSSTTTYYYbbblllvvvvvvlllaaa[[[XXXVVVTTTSSSSSSSSSSSSRRRRRRQQQQQQQQQQQQQQQQQQRRRRRRSSSSSSSSSSSSSSSUUUVVVWWWZZZ___ccchhhnnnvvv|||~~~zzzxxxwwwvvvuuuuuunnnmmmlllkkkjjjhhhhhhhhhiiiiiiiiihhhfffeeeeeeeeeeeefffhhhiiijjjmmmrrruuuyyy~~~tttiii___YYYUUUSSSPPPOOOPPPQQQQQQQQQQQQRRRRRRSSSTTTUUUYYY\\\___cccgggiiikkknnnrrrvvvzzz~~~}}}uuummmeee]]]YYYWWWVVVTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSRRRRRRQQQQQQQQQRRRRRRSSSVVV^^^fffooo{{{tttiii^^^XXXVVVTTTRRRQQQRRRRRRRRRQQQQQQPPPPPPPPPPPPQQQQQQRRRSSSTTTTTTTTTTTTUUUWWWXXXYYY]]]cccjjjpppxxx~~~{{{wwwuuutttsssssssssiiiiiiiiigggfffeeeeeeeeeffffffeeedddbbbaaa```______`````````aaacccgggkkkooowwwxxxnnnccc\\\XXXUUUQQQPPPPPPQQQQQQQQQQQQRRRRRRSSSSSSTTTVVVXXXZZZ\\\```bbbdddggglllpppuuuyyyxxxpppiiibbb]]][[[YYYWWWWWWWWWXXXXXXXXXYYYYYYYYYYYYYYYXXXWWWVVVUUUTTTRRRRRRQQQRRRRRRQQQQQQTTT[[[aaaiiittt~~~ssshhh]]]WWWUUUSSSQQQPPPQQQRRRRRRRRRQQQQQQQQQQQQRRRRRRTTTTTTUUUVVVWWWXXXXXXYYY[[[]]]___ccckkkssszzz}}}zzzxxxuuusssqqqqqqppppppeeeeeeeeedddcccbbbbbbbbbcccbbbaaa```^^^\\\ZZZYYYYYYYYYYYYXXXXXXZZZ^^^aaaeeennn}}}uuujjjbbb^^^YYYUUUSSSSSSSSSSSSRRRRRRRRRRRRRRRRRRSSSTTTTTTUUUWWWYYYZZZ\\\___dddiiimmmsssyyy~~~zzztttmmmgggcccaaa___]]]]]]]]]^^^^^^______````````````___]]][[[XXXVVVTTTSSSRRRRRRRRRQQQPPPRRRXXX]]]bbbmmm~~~~~~ssshhh]]]WWWUUUSSSQQQPPPQQQRRRRRRRRRRRRSSSSSSSSSSSSTTTVVVXXXZZZ\\\^^^______aaaccceeehhhlllttt||||||yyywwwtttrrrpppooonnnnnnnnncccccccccbbbbbbaaaaaaaaabbbbbb```^^^\\\YYYWWWVVVUUUUUUUUUSSSSSSTTTXXX[[[___hhhyyyĽ{{{ppphhhbbb]]]WWWUUUTTTTTTRRRRRRQQQQQQQQQQQQPPPQQQQQQRRRSSSTTTVVVWWWXXXZZZ^^^cccgggmmmtttyyy~~~}}}xxxrrrllliiigggfffdddccccccddddddeeefffgggggghhhhhhfffccc```\\\XXXTTTSSSRRRRRRRRRPPPOOOQQQUUUYYY^^^iiizzz~~~tttiii^^^XXXVVVTTTRRRQQQRRRSSSSSSSSSSSSSSSSSSTTTTTTVVVXXX[[[^^^aaaeeefffgggiiimmmooopppttt|||~~~~~~{{{xxxuuussspppnnnmmmlllllllllcccccccccbbbbbbaaaaaaaaabbbbbb```^^^[[[XXXVVVUUUTTTTTTTTTRRRQQQRRRVVVXXX]]]fffwwwžwwwnnnhhhaaa[[[XXXWWWVVVTTTSSSRRRQQQQQQPPPQQQQQQQQQQQQRRRRRRTTTTTTUUUWWW[[[___bbbhhhooouuu{{{|||wwwssspppnnnllljjjjjjjjjkkkkkklllmmmnnnnnnoooooonnnjjjeee```[[[VVVTTTSSSRRRQQQPPPOOOQQQUUUYYY]]]hhhzzzuuukkk```[[[XXXWWWUUUTTTTTTUUUUUUUUUTTTUUUUUUVVVWWWXXX\\\___cccgggkkkmmmoooqqquuuwwwyyy}}}~~~zzzwwwtttrrrsssuuuwwwzzz~~~}}}zzzwwwuuurrrooommmlllkkkkkkkkkdddddddddddddddccccccccccccbbb```]]][[[XXXVVVTTTTTTSSSRRRQQQPPPQQQUUUWWW[[[eeevvvſvvvoooiiibbb^^^\\\ZZZWWWUUUTTTSSSQQQQQQQQQQQQQQQQQQRRRSSSSSSSSSSSSUUUXXXZZZ^^^cccjjjpppvvv||||||xxxvvvtttsssqqqppppppqqqqqqssstttuuuuuuvvvvvvtttooojjjccc]]]WWWTTTSSSSSSQQQOOONNNPPPTTTXXX\\\gggyyyľzzzpppfffaaa___]]][[[YYYYYYYYYYYYXXXXXXYYYYYYZZZZZZ\\\```dddhhhlllqqqtttwwwyyy}}}wwwpppmmmjjjhhhhhhiiilllppptttyyy}}}}}}{{{xxxuuurrrooommmlllkkkkkkkkkffffffffffffffffffdddcccbbb```^^^[[[YYYVVVTTTRRRRRRQQQPPPOOONNNOOOSSSVVVZZZeeewwwyyyrrrjjjfffdddbbb^^^[[[YYYWWWUUUTTTTTTSSSSSSRRRQQQQQQQQQPPPPPPQQQSSSVVVYYY]]]eeelllssszzz~~~|||{{{zzzxxxxxxxxxxxxxxxzzz{{{||||||}}}}}}{{{vvvpppiiibbb[[[WWWUUUSSSQQQOOONNNPPPTTTWWW[[[eeewww¼yyypppkkkhhhfffdddbbbbbbaaaaaa```````````````aaabbbfffjjjnnnrrrwwwzzz|||~~~vvvkkkdddaaa___]]]]]]___ccchhhmmmsssxxx|||}}}|||{{{yyywwwtttqqqooommmlllkkkkkkkkkggggggggghhhhhhhhhfffdddbbb```\\\ZZZWWWUUUSSSRRRQQQQQQPPPOOONNNOOOSSSVVV[[[eeexxx¾zzzsssooommmjjjeeeaaa^^^[[[WWWUUUTTTTTTRRRRRRQQQQQQQQQPPPPPPPPPRRRSSSUUUZZZaaahhhpppwww~~~~~~}}}}}}||||||||||||~~~~~~yyyrrrkkkddd]]]XXXVVVTTTRRROOOOOOPPPTTTVVVZZZddduuuyyyuuusssqqqmmmkkkjjjjjjhhhggggggggggggggggggiiilllooorrrvvvzzz|||~~~zzzoooddd]]]ZZZXXXVVVWWWYYY]]]ccciiiooouuuyyy{{{{{{zzzxxxvvvtttqqqooommmlllkkkkkkkkkjjjjjjjjjjjjkkkjjjhhheeebbb___[[[YYYWWWUUUSSSRRRQQQQQQQQQOOOOOOQQQVVVYYY^^^iii{{{ÿ{{{wwwuuurrrlllgggccc___[[[XXXWWWVVVTTTSSSRRRQQQQQQPPPPPPPPPRRRSSSUUUYYY```gggooovvv}}}~~~~~~{{{tttmmmfff^^^ZZZWWWTTTRRROOOOOOPPPTTTVVVZZZccctttľ|||zzzvvvtttsssrrrpppooonnnnnnnnnnnnnnnoooqqqsssuuuxxxzzz|||~~~uuujjj```ZZZWWWVVVUUUUUUWWW[[[aaagggmmmrrrwwwzzzzzzyyyxxxvvvtttqqqooonnnmmmlllllllllmmmmmmmmmnnnnnnmmmjjjgggccc^^^ZZZWWWUUUTTTRRRQQQQQQRRRRRRQQQPPPRRRXXX]]]cccnnnÿ~~~{{{uuuoookkkfffaaa]]]\\\ZZZXXXVVVUUUTTTRRRQQQPPPPPPRRRSSSUUUYYY```gggnnnuuu|||}}}wwwqqqjjjbbb]]]ZZZWWWSSSPPPOOOPPPTTTVVVZZZcccrrr}}}{{{zzzxxxwwwvvvuuuuuuttttttuuuuuuvvvwwwxxxzzz{{{|||~~~{{{qqqggg^^^XXXUUUTTTSSSSSSUUUYYY___dddiiinnnsssvvvxxxxxxxxxvvvtttrrrpppoooooonnnnnnnnnsssssssssssssssrrrnnniiiddd___ZZZWWWUUUTTTRRRQQQQQQRRRRRRRRRRRRUUU]]]ccckkkwwwÿyyytttoooiiifffdddbbb^^^[[[YYYWWWUUUSSSRRRSSSSSSTTTUUUYYY```gggnnnuuu|||}}}xxxqqqiiiccc^^^YYYUUUQQQPPPQQQSSSUUUXXX```mmm|||¿~~~}}}}}}{{{{{{{{{zzzzzzyyyyyyyyyyyyzzzzzz|||~~~|||tttkkkbbbZZZUUUSSSQQQQQQQQQRRRVVVZZZ___dddiiiooorrrtttuuuvvvvvvuuussssssrrrrrrrrrrrrrrrwwwwwwwwwxxxxxxvvvqqqlllfff___YYYVVVTTTSSSQQQPPPPPPQQQRRRRRRSSSWWW```iiirrrĿ}}}xxxrrrooollliiiddd```]]]ZZZVVVTTTSSSSSSSSSTTTVVVZZZaaahhhooovvv}}}~~~xxxpppiiiccc]]]WWWSSSQQQQQQSSSSSSVVV\\\hhhttt~~~|||zzzyyywwwwwwwwwwwwyyy{{{~~~xxxppphhh```XXXTTTRRRPPPPPPPPPQQQTTTXXX\\\```eeekkkooorrrtttvvvvvvuuuttttttttttttttttttttt{{{{{{{{{||||||zzzuuuooohhhaaaZZZVVVTTTSSSQQQPPPPPPQQQSSSSSSTTTYYYdddnnnzzzþ~~~{{{zzzxxxxxxyyy{{{{{{||||||||||||||||||||||||{{{{{{{{{{{{|||}}}zzzwwwtttqqqkkkfffbbb^^^ZZZWWWUUUUUUUUUVVVXXX]]]dddkkkrrryyywwwoooggg```YYYTTTRRRRRRRRRRRRTTTYYYcccmmmwww~~~|||yyywwwuuutttssstttvvvyyy||||||uuunnnggg```YYYUUUSSSRRRPPPPPPQQQSSSWWWZZZ^^^bbbhhhlllooorrrtttuuuuuuuuuuuuvvvvvvwwwwwwwww~~~xxxqqqiiibbb[[[VVVTTTSSSQQQPPPOOOQQQSSSTTTVVV\\\iiiuuuvvvqqqooommmkkkkkklllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmlllllllllnnnoooqqquuu||||||xxxrrrlllgggccc^^^ZZZXXXXXXXXXYYY\\\```gggmmmttt{{{~~~uuulllccc[[[VVVSSSRRRRRRQQQRRRVVV^^^eeemmmyyy~~~{{{xxxuuusssqqqqqqqqqsssuuuxxx|||}}}yyyrrrlllfff___YYYUUUTTTSSSQQQQQQRRRTTTVVVYYY[[[___dddhhhlllppptttuuuvvvvvvxxxyyyzzz{{{{{{{{{{{{ssskkkbbbZZZVVVTTTSSSQQQOOOOOOPPPSSSUUUXXX```mmm{{{Ż}}}sssiiidddaaa```^^^^^^___``````````````````````````````_________aaabbbdddiiirrr{{{yyysssnnniiiccc```^^^^^^^^^```bbbffflllrrrxxx}}}{{{qqqfff]]]WWWTTTSSSQQQPPPPPPSSSYYY^^^dddnnn}}}{{{wwwssspppnnnmmmmmmooorrruuuyyy}}}}}}{{{yyyuuuooohhhccc]]]WWWTTTSSSSSSQQQQQQQQQRRRTTTUUUWWW[[[```dddiiimmmrrruuuwwwyyy{{{~~~~~~uuulllccc[[[VVVTTTSSSQQQOOOOOOPPPTTTVVVZZZbbbqqq|||sssjjjaaa\\\[[[ZZZXXXXXXXXXYYYYYYXXXXXXWWWWWWWWWWWWWWWWWWVVVVVVWWWYYYZZZ\\\aaakkkvvv}}}xxxsssnnnjjjgggeeeeeeeeegggiiimmmrrrwww{{{~~~ssshhh]]]WWWUUUSSSQQQOOOOOORRRVVVZZZ___hhhwww{{{vvvrrrnnnlllkkklllnnnqqqtttxxx|||{{{yyyvvvrrrlllfffaaa\\\WWWTTTSSSRRRRRRQQQQQQRRRTTTUUUVVVYYY^^^ccchhhmmmsssvvvxxxzzz~~~vvvmmmddd[[[VVVTTTSSSQQQOOOOOOQQQUUUXXX\\\dddsssļ~~~ssskkkccc[[[WWWVVVVVVTTTTTTTTTUUUUUUUUUTTTTTTTTTSSSSSSSSSSSSRRRRRRSSSUUUWWWYYY^^^iiittt{{{wwwsssooommmlllllllllmmmooorrrvvvzzz~~~ttthhh]]]WWWTTTRRRPPPNNNNNNQQQUUUXXX]]]fffuuu~~~zzzuuuqqqmmmkkkjjjjjjlllooorrrwww{{{~~~zzzwwwuuuqqqkkkeee```\\\WWWTTTSSSSSSQQQQQQQQQQQQSSSSSSUUUXXX]]]bbbgggmmmssswwwzzz}}}uuummmddd[[[VVVTTTSSSQQQPPPPPPRRRVVVZZZ^^^gggvvv½sssiiiccc]]]WWWTTTSSSSSSSSSRRRSSSSSSSSSSSSRRRRRRRRRRRRRRRRRRRRRQQQPPPQQQSSSUUUWWW]]]hhhsss}}}zzzwwwtttrrrqqqrrrrrrsssuuuwww{{{~~~uuuiii^^^XXXUUUSSSQQQNNNNNNPPPTTTWWW[[[dddsss|||wwwsssoookkkiiihhhhhhjjjnnnrrrvvv{{{~~~zzzwwwtttpppjjjddd___ZZZVVVTTTSSSRRRQQQQQQQQQQQQSSSSSSTTTWWW\\\```eeekkkrrrwww{{{|||rrrjjjaaaYYYUUUSSSRRRQQQPPPQQQSSSYYY^^^dddmmm|||ľtttggg___ZZZVVVRRRPPPPPPQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRQQQPPPQQQSSSUUUWWW]]]hhhsss~~~{{{yyywwwvvvvvvwwwwwwyyyzzz|||~~~zzzmmmaaaZZZVVVTTTPPPNNNNNNPPPTTTVVVYYYbbbqqq~~~zzzuuuqqqmmmiiigggffffffhhhlllppptttyyy}}}}}}yyyvvvrrrnnnhhhccc^^^ZZZVVVTTTSSSRRRRRRQQQQQQRRRRRRRRRSSSUUUYYY^^^ccciiiqqqwww}}}xxxnnnfff___WWWSSSRRRRRRRRRQQQRRRVVV]]]cccjjjttt¾tttjjj___XXXVVVTTTPPPOOOPPPPPPPPPPPPPPPPPPPPPQQQQQQRRRRRRSSSSSSSSSSSSRRRQQQRRRTTTVVVXXX^^^iiittt}}}{{{zzzxxxxxxxxxyyyyyyzzz|||}}}}}}pppccc\\\XXXUUUQQQNNNNNNOOOSSSUUUYYYbbbrrr|||xxxsssoookkkgggeeedddeeegggkkkooosssxxx||||||xxxuuurrrnnnhhhccc___ZZZVVVTTTSSSRRRRRRQQQQQQRRRRRRRRRRRRSSSWWW[[[```gggpppwww~~~sssjjjccc\\\VVVRRRQQQRRRRRRRRRSSSWWW___gggoooyyytttlllddd[[[VVVTTTSSSQQQPPPPPPPPPPPPPPPPPPQQQQQQRRRTTTUUUUUUVVVVVVVVVVVVUUUTTTUUUWWWYYY\\\aaakkkvvv~~~|||zzzyyyxxxwwwxxxyyyyyyzzz{{{|||~~~rrreee]]]YYYUUUQQQNNNNNNPPPTTTVVVZZZcccsss}}}{{{wwwrrrnnnjjjfffdddcccdddfffjjjnnnrrrwww{{{}}}yyyvvvrrrnnnhhhccc^^^ZZZVVVTTTSSSRRRRRRQQQQQQRRRRRRQQQQQQRRRVVVYYY^^^dddnnnwww{{{nnnddd^^^YYYSSSPPPPPPQQQSSSSSSUUUZZZcccllluuutttjjjddd^^^WWWSSSSSSRRRQQQQQQQQQRRRRRRRRRRRRSSSUUUWWWYYY[[[]]]^^^^^^^^^^^^]]]\\\\\\^^^```bbbhhhqqq{{{}}}|||zzzyyyxxxwwwwwwwwwxxxyyyyyyzzzzzz{{{}}}~~~xxxkkkbbb\\\XXXRRROOONNNPPPTTTVVV[[[ddduuu~~~|||yyywwwtttppplllhhheeecccbbbbbbdddhhhlllqqquuuzzz~~~|||xxxuuusssoooiiiddd```[[[WWWUUUTTTTTTRRRRRRRRRRRRRRRQQQQQQRRRVVVXXX[[[aaakkkuuuwwwhhh___ZZZVVVRRROOOOOOQQQSSSTTTVVV[[[eeepppzzzvvviii```[[[VVVRRRPPPQQQRRRRRRQQQQQQRRRRRRSSSTTTVVVZZZ^^^bbbeeeiiijjjkkkkkkkkkjjjiiihhhjjjkkkmmmqqqyyy~~~~~~}}}|||{{{{{{{{{{{{{{{{{{zzzyyywwwwwwvvvvvvvvvvvvwwwxxxxxxyyyzzzzzz{{{}}}~~~~~~uuukkkccc]]]UUUQQQOOOQQQTTTVVV[[[ddduuu~~~|||{{{yyyuuusssqqqnnnjjjfffcccaaa______```bbbfffjjjoootttxxx|||~~~}}}{{{wwwuuurrroooiiieeeaaa]]]YYYVVVUUUTTTRRRRRRRRRRRRRRRQQQQQQRRRTTTVVVYYY___jjjtttttteee]]]XXXUUUQQQOOOOOOQQQSSSTTTWWW\\\gggqqq|||{{{ooobbb[[[WWWTTTPPPOOOPPPQQQQQQQQQPPPQQQSSSTTTVVVYYY___eeejjjoootttwwwxxxxxxxxxwwwuuuuuuuuuvvvxxx{{{}}}zzzxxxwwwvvvvvvvvvuuuuuuttttttsssssssssssstttuuuvvvvvvvvvuuuttttttttttttuuuuuuvvvwwwxxxzzzzzzzzz{{{}}}~~~uuukkkbbbXXXSSSPPPQQQSSSVVVZZZddduuu~~~}}}{{{xxxvvvsssooollljjjhhhdddaaa___^^^]]]\\\]]]___ccchhhlllqqqvvvzzz|||~~~~~~~~~}}}zzzxxxuuusssoookkkgggccc___[[[XXXVVVUUUSSSRRRRRRRRRRRRQQQPPPQQQSSSUUUXXX^^^iiitttsssddd[[[WWWTTTPPPNNNOOOQQQSSSTTTWWW\\\gggrrr}}}wwwkkk```YYYVVVTTTQQQOOOPPPQQQQQQQQQQQQRRRTTTVVVXXX]]]dddkkkssszzzzzzuuussspppnnnmmmmmmmmmmmmlllkkkkkkkkkkkkkkklllmmmnnnooopppqqqrrrrrrrrrrrrsssssssssuuuvvvwwwxxxyyyzzzzzzzzz|||}}}~~~~~~rrrggg\\\TTTQQQQQQSSSVVV[[[eeevvv~~~}}}|||{{{wwwtttqqqmmmiiifffdddbbb___]]][[[ZZZZZZZZZ[[[]]]aaafffkkkpppuuuyyy{{{|||||||||zzzxxxvvvtttrrroookkkhhheeebbb^^^ZZZXXXUUUSSSRRRRRRRRRRRRQQQPPPQQQSSSUUUWWW]]]hhhtttrrrccc[[[WWWTTTPPPNNNOOOQQQSSSUUUWWW]]]hhhsss{{{qqqggg]]]XXXUUUSSSQQQPPPQQQRRRRRRQQQQQQRRRVVVYYY]]]cccllluuu}}}zzzqqqkkkiiifffdddccccccddddddccccccccccccccccccccceeefffhhhjjjlllmmmmmmmmmooopppqqqrrrtttuuuvvvwwwxxxyyyxxxyyy{{{}}}½yyylll___VVVRRRRRRSSSUUUZZZddduuu~~~|||zzzyyywwwsssooojjjfffbbb```^^^]]][[[YYYXXXWWWWWWWWWXXX[[[```eeejjjoootttxxxyyyzzzzzzzzzxxxvvvtttrrrqqqoookkkiiigggddd```\\\YYYVVVTTTRRRRRRRRRRRRQQQPPPQQQSSSTTTVVV\\\gggrrr}}}pppaaaYYYVVVTTTPPPNNNOOOPPPSSSUUUXXX___jjjvvv{{{qqqiii```XXXTTTSSSSSSQQQQQQQQQQQQRRRSSSSSSVVV[[[___dddlllwww}}}rrrgggaaa^^^\\\ZZZYYYZZZ[[[[[[[[[ZZZZZZZZZZZZZZZ[[[]]]___aaadddfffggghhhiiikkkmmmnnnppprrrtttuuuvvvxxxxxxxxxyyy{{{~~~¼pppaaaWWWSSSRRRRRRUUUZZZddduuu}}}yyywwwuuuqqqlllhhhddd```\\\ZZZYYYXXXVVVUUUUUUUUUUUUVVVVVVYYY^^^ccchhhmmmrrruuuvvvwwwwwwvvvuuusssqqqpppooonnnllljjjiiigggccc___\\\YYYUUUTTTSSSRRRRRRQQQPPPQQQSSSTTTVVV[[[dddmmmwwwpppaaaYYYVVVTTTPPPOOOOOOQQQUUUWWWZZZaaalllxxx|||ssskkkddd]]]VVVSSSRRRQQQPPPPPPPPPQQQSSSSSSTTTXXX___eeekkktttxxxmmmbbb\\\YYYWWWUUUTTTUUUVVVVVVVVVVVVVVVVVVVVVWWWWWWYYYZZZ\\\^^^```bbbccceeegggjjjllloooqqqsssuuuvvvxxxxxxxxxyyy|||sssbbbXXXSSSQQQQQQSSSXXXbbbrrr}}}{{{wwwtttqqqmmmgggccc___\\\XXXVVVUUUUUUSSSSSSRRRSSSSSSTTTUUUXXX]]]bbbggglllqqqtttuuuuuuuuutttrrrpppnnnnnnmmmmmmkkkkkkjjjiiieeeaaa^^^ZZZVVVTTTSSSRRRQQQQQQQQQQQQSSSSSSUUUYYY```hhhpppxxxpppaaaYYYVVVTTTPPPOOOOOOQQQUUUXXX\\\cccnnnzzz{{{uuummmeee```ZZZTTTRRRQQQQQQQQQPPPPPPQQQSSSTTTVVVZZZbbbjjjsss}}}wwwkkk```ZZZWWWUUUSSSRRRSSSTTTTTTTTTTTTTTTTTTTTTUUUUUUWWWWWWXXXZZZ\\\^^^___aaaeeehhhjjjmmmqqqssstttuuuwwwwwwwwwxxx|||ĹsssbbbXXXSSSQQQQQQSSSXXXbbbqqq~~~|||yyyuuuqqqmmmiiiccc___\\\YYYVVVTTTTTTSSSSSSRRRQQQRRRRRRSSSTTTWWW\\\aaaggglllqqqssstttssssssqqqpppnnnlllllllllkkkkkkkkkkkkjjjgggddd```\\\XXXUUUTTTSSSQQQQQQQQQQQQSSSSSSTTTWWW]]]ccciiipppvvvzzz}}}qqqbbbYYYVVVTTTPPPOOOPPPSSSWWW[[[```gggrrr|||yyytttnnnfff```\\\XXXTTTRRRRRRRRRRRRQQQQQQRRRTTTVVVYYY^^^hhhqqqzzzuuuiii^^^XXXVVVTTTRRRQQQRRRSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTUUUVVVWWWYYYZZZ[[[]]]aaadddhhhkkkoooqqqrrrsssuuuuuuuuuwww{{{źsssbbbXXXSSSQQQQQQSSSWWWaaappp}}}|||yyysssnnnjjjeee___[[[YYYVVVTTTRRRRRRRRRRRRQQQQQQQQQSSSSSSTTTWWW\\\bbbgggmmmqqqrrrrrrqqqooonnnlllkkkjjjiiijjjjjjjjjkkkkkkkkkiiifffccc___[[[XXXVVVTTTRRRQQQQQQRRRRRRSSSSSSUUUYYY]]]```eeeiiilllnnnpppqqqqqqqqqbbbYYYUUUSSSQQQOOOPPPTTTZZZ```fffooozzzyyyrrrmmmggg```[[[XXXUUUSSSQQQQQQRRRRRRQQQQQQSSSWWW[[[___fffqqqzzz}}}rrrggg\\\VVVTTTRRRPPPOOOPPPQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRSSSSSSUUUVVVWWWYYY]]]```dddgggkkklllmmmnnnpppqqqqqqtttyyy~~~ĺuuudddZZZUUUSSSSSSTTTYYYbbbooo}}}}}}{{{wwwqqqkkkfffaaa[[[XXXVVVTTTRRRQQQRRRRRRRRRQQQQQQQQQSSSTTTVVVYYY^^^ccchhhmmmpppqqqqqqooommmkkkiiigggfffeeefffgggiiikkkmmmnnnmmmllliiieeeaaa]]]ZZZWWWTTTRRRRRRRRRRRRRRRSSSTTTVVVXXXZZZ\\\^^^```aaabbbbbbbbbqqqaaaWWWSSSQQQOOONNNPPPUUU]]]eeemmmvvv~~~vvvnnnhhhbbb[[[WWWTTTSSSQQQPPPQQQQQQRRRSSSSSSVVV[[[___dddlllwww{{{pppfff[[[VVVSSSRRRPPPOOOPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRTTTTTTUUUWWWZZZ]]]___bbbeeefffggghhhjjjkkkmmmpppwww}}}ùvvveee[[[VVVTTTTTTUUUZZZbbbooo|||~~~{{{wwwqqqjjjeee___YYYVVVTTTSSSQQQQQQQQQRRRRRRRRRRRRRRRTTTUUUWWWZZZ___dddiiimmmpppqqqooommmkkkiiifffeeedddddddddfffhhhkkknnnppppppooommmjjjfffaaa]]]XXXTTTRRRQQQPPPPPPPPPQQQRRRTTTUUUVVVWWWYYYYYYZZZZZZZZZZZZppp___VVVRRRPPPNNNNNNQQQXXXaaakkkttt|||tttmmmfff```ZZZVVVTTTSSSQQQPPPPPPQQQSSSSSSTTTWWW]]]ccciiiqqq}}}yyyoooeee\\\WWWUUUTTTRRRQQQRRRRRRRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRSSSTTTUUUWWWYYY\\\^^^```aaaaaabbbdddeeegggjjjrrrzzzĿvvvggg]]]XXXVVVVVVWWW\\\cccooo{{{~~~|||wwwpppjjjddd^^^XXXUUUTTTSSSQQQQQQQQQRRRRRRRRRRRRSSSUUUVVVXXX[[[```eeejjjnnnqqqqqqpppmmmkkkhhheeecccbbbaaabbbeeehhhkkkooorrrttttttssspppkkkfff```ZZZTTTQQQPPPOOOOOOOOOPPPQQQSSSSSSTTTUUUUUUVVVVVVVVVVVVVVVqqq```WWWRRRQQQOOOPPPTTT[[[fffqqq|||{{{sssllleee___YYYUUUTTTSSSQQQQQQQQQRRRTTTUUUWWW[[[bbbhhhoooxxxwwwnnnfff]]]YYYWWWVVVTTTSSSTTTTTTTTTSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSUUUVVVXXXYYY[[[[[[[[[\\\^^^```bbbgggpppyyy¿wwwiiiaaa]]][[[[[[\\\```gggqqq|||{{{vvvoooiiiccc]]]WWWTTTSSSSSSQQQQQQRRRRRRTTTTTTUUUWWWYYY[[[\\\___ccchhhllloooqqqqqqooollljjjgggdddbbbaaaaaabbbdddhhhlllppptttvvvxxxxxxvvvqqqkkkddd]]]WWWSSSRRRQQQOOOPPPQQQRRRRRRSSSSSSSSSSSSSSSTTTTTTTTTTTTuuuddd[[[VVVUUUTTTUUUYYYaaalllxxx~~~yyyqqqiiiccc]]]WWWTTTSSSRRRRRRQQQRRRTTTVVVYYY[[[```hhhooovvv~~~}}}uuummmeee^^^ZZZYYYXXXVVVVVVVVVfac613 @>>[[[TTTRRRRRRRRRRRRRRRRRRRRRSSSTTTVVVVVVVVVUUUVVVXXXZZZ\\\bbbmmmwww{{{ooohhhdddbbbbbbcccgggmmmuuu~~~~~~yyytttlllfff```[[[VVVSSSRRRRRRRRRRRRSSSTTTVVVXXXYYY\\\^^^```bbbdddhhhllloooqqqrrrqqqooommmiiifffdddbbbaaa```aaadddhhhmmmrrrwww{{{~~~~~~}}}xxxrrrkkkddd]]]YYYWWWUUUSSSRRRRRRRRRRRRQQQQQQQQQQQQQQQPPPPPPPPPPPPxxxggg^^^YYYWWWWWWXXX]]]dddppp}}}|||xxxpppiiiccc]]]WWWTTTSSSRRRRRRRRRSSSUUUYYY\\\```eeemmmtttzzzzzzrrrllleee___\\\[[[[[[YYYYYYYYYhbemik946 HFFSSSQQQQQQQQQPPPPPPPPPPPPQQQQQQRRRRRRQQQQQQRRRTTTVVVYYY```kkkwwwuuuooolllkkkkkkllloootttzzz|||wwwqqqiiiccc^^^YYYUUUSSSRRRRRRRRRRRRSSSUUUWWWZZZ]]]```dddfffhhhjjjmmmooorrrssssssqqqooolllhhheeebbbaaa``````aaadddhhhmmmsssxxx|||~~~wwwoooggg```[[[YYYWWWUUUSSSRRRRRRPPPOOOOOONNNNNNMMMMMMMMMMMMMMM}}}lllccc^^^\\\[[[\\\```hhhsss~~~{{{vvvoooiiiccc^^^XXXUUUTTTSSSSSSSSSUUUXXX\\\```dddiiiqqqwww}}}}}}vvvpppkkkfffaaa^^^^^^]]]]]]\\\]]]\\\jfhpmn/.0`^^___PPPPPPPPPPPPPPPPPPPPPQQQQQQQQQPPPOOOPPPRRRTTTWWW^^^kkkxxx|||wwwtttsssssssssvvvyyyzzztttmmmeee___\\\XXXTTTRRRRRRRRRRRRRRRSSSUUUYYY]]]aaafffjjjmmmnnnoooqqqrrrssssssrrrqqqooommmiiifffcccbbbaaaaaabbbeeejjjoootttyyy{{{tttllleee```^^^[[[WWWUUUSSSRRRPPPOOONNNMMMMMMMMMMMMMMMMMMMMM¿vvvlllhhhfffeeeeeeiiipppzzz|||zzzvvvpppjjjeee```[[[WWWVVVUUUUUUVVVWWW[[[```dddiiinnnvvv{{{तānnnjjjfffbbb``````_______________^^^mikjik/.0 "$%%##d``QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPOOOPPPSSSUUUXXX___lllzzz|||vvvtttsssssstttxxx~~~}}}{{{zzzzzz{{{|||~~~wwwpppiiiaaa\\\YYYWWWSSSRRRQQQRRRRRRSSSTTTWWW\\\```eeejjjooorrrttttttvvvvvvvvvuuusssqqqooommmiiigggeeecccccccccdddgggkkkpppuuuzzz{{{tttmmmiiifffccc___[[[XXXVVVSSSQQQPPPOOOOOOOOOOOOPPPPPPPPPƽ{{{yyywwwxxx{{{~~~zzzwwwtttnnniiieeeaaa]]]ZZZYYYYYYYYYZZZ[[[___dddhhhmmmsssyyy~~~ົlllhhhfffcccaaa````````````aaaaaaaaa___ppq`_` ! pooTTTTTTSSSSSSSSSSSSSSSSSSSSSRRRQQQQQQUUUWWW[[[cccppp|||ooohhhdddccccccdddgggnnnyyyyyyrrrkkkddd]]]XXXVVVTTTRRRQQQQQQQQQSSSTTTUUUXXX^^^dddjjjoootttwwwxxxyyyyyyyyyxxxvvvtttrrrpppnnnllliiigggfffffffffgggjjjnnnsssxxx~~~}}}zzzxxxuuuoooiiiddd___ZZZWWWVVVVVVTTTTTTTTTTTTTTTTTTŻ{{{wwwuuurrrmmmiiifffccc___]]]\\\]]]]]]^^^```dddiiimmmrrrwww}}}১jjjhhheeecccaaaaaa`````````aaaaaaaaa``````poqZ[\$"" vuuVVVUUUUUUUUUUUUUUUUUUUUUSSSRRRSSSWWWYYY]]]eeetttvvviii```\\\ZZZZZZ[[[___fffqqq}}}|||tttlllfff___YYYUUUTTTSSSQQQPPPPPPQQQSSSTTTVVVYYY___eeekkkqqqvvvyyyzzzzzzzzzzzzyyywwwuuusssrrrpppnnnllljjjiiiiiiiiijjjmmmqqqvvvzzzwwwppphhhaaa\\\ZZZYYYWWWVVVWWWWWWWWWWWWżzzzvvvtttqqqmmmiiigggdddbbb``````aaabbbbbbdddgggkkkppptttxxx~~~qqqhhhfffdddbbb``````____________``````aaaaaabbbmnoGIJ  xxxXXXWWWWWWWWWWWWXXXXXXWWWVVVWWW[[[^^^bbbjjjyyy¿ttteee\\\XXXVVVVVVWWW[[[bbbmmmxxx~~~vvvnnngggaaa\\\VVVTTTSSSRRRQQQQQQPPPQQQSSSTTTWWWZZZ```ffflllqqqvvvyyyzzzzzzzzzzzzxxxwwwuuutttsssrrrpppnnnmmmllllllmmmnnnqqquuuyyy}}}|||rrriiiccc```^^^\\\[[[[[[\\\\\\\\\¼yyyuuusssqqqmmmjjjhhhfffdddccccccccceeefffhhhkkkooossswww{{{त}}}fffeeecccaaa___^^^]]]]]]]]]]]]^^^```aaabbbdddaccuvw,.. xvv^^^^^^^^^___````````````aaaeeehhhllltttrrrcccZZZVVVUUUTTTUUUXXX___iiittt~~~}}}|||||||||}}}~~~}}}wwwooogggaaa\\\XXXTTTRRRRRRRRRRRRQQQQQQRRRTTTVVVYYY]]]ccciiinnnssswwwyyyyyyyyyyyyyyyyyyxxxvvvuuutttsssqqqppppppppppppqqqrrrtttxxx|||vvvpppmmmkkkgggfffgggggggggggg}}}wwwsssqqqoookkkiiihhhgggffffffffffffhhhiiikkkmmmqqquuuxxx{{{೴nnn࿿eeecccaaa___]]]\\\[[[[[[[[[\\\^^^```bbbeeegggkkkpqrbfe#('   kkkkkkllllllmmmnnnnnnppptttxxx|||~~~ooo```WWWRRRQQQPPPQQQTTT[[[eeepppzzz|||zzzyyyxxxxxxxxxyyyzzz|||}}}~~~}}}vvvoooggg___ZZZXXXUUUSSSQQQQQQRRRRRRSSSSSSUUUYYY\\\___ccciiinnnrrruuuxxxzzzzzzyyyyyyyyyxxxwwwwwwvvvuuutttsssrrrrrrrrrssstttuuuxxx|||}}}|||||||||||||||}}}wwwrrrpppnnnjjjiiihhhggggggffffffgggiiijjjlllnnnrrruuuxxx{{{~~~~~~zzzଭooolllqqq|||cccbbb```^^^\\\ZZZYYYYYYYYYZZZ\\\```bbbeeeiiimmmqqqgkjaed  ###yyyyyyzzz|||}}}~~~|||mmm^^^UUUQQQPPPOOOPPPSSSZZZcccmmmvvv~~~{{{wwwuuutttssssssssstttvvvxxxyyy{{{}}}~~~vvvooohhhbbb[[[WWWTTTSSSQQQPPPPPPQQQSSSTTTUUUXXX\\\aaaeeeiiiooosssvvvxxxzzzzzzzzzyyyyyyyyyyyyxxxxxxwwwvvvuuuuuutttttttttvvvvvvxxxzzz~~~ļ~~~vvvrrrooommmjjjhhhgggggggggfffffffffhhhiiikkkmmmqqqtttwwwzzz}}}~~~~~~~~~~~~|||yyyvvv~~~nnnllljjjhhh~~~fffdddbbbaaa___]]][[[YYYXXXXXXXXXYYY[[[___bbbeeeiiiooossswwwxwyVVW   ! "}}}nnn___VVVRRRQQQPPPPPPTTTZZZcccllluuu}}}}}}yyyvvvsssqqqpppooooooooooooqqqsssuuuwwwzzz~~~wwwooohhhbbb]]]WWWTTTSSSSSSQQQPPPPPPQQQSSSUUUWWW[[[aaafffkkkpppuuuxxxzzz{{{{{{{{{zzzyyyyyyyyyyyyxxxxxxwwwvvvuuuuuuuuuuuuuuuwwwwwwyyy{{{»ýwwwrrrooommmiiihhhgggggggggfffffffffhhhiiijjjlllpppsssvvvxxx{{{}}}~~~~~~||||||{{{{{{{{{{{{|||}}}}}}}}}}}}|||{{{yyywwwtttrrrooommmkkkjjjhhhgggfffeeecccaaa```^^^\\\ZZZXXXWWWWWWWWWYYY[[[___cccfffkkkqqqvvvzzz~~~~}IHJ   ZZ[}}}nnn```XXXTTTSSSQQQRRRUUUZZZbbbjjjssszzz~~~|||xxxuuuqqqmmmkkkjjjjjjjjjjjjkkkmmmoooqqqtttwww{{{zzzrrriiibbb^^^YYYUUUSSSRRRRRRRRRQQQQQQSSSVVVYYY\\\aaagggmmmsssxxx|||~~~~~~~~~}}}{{{zzzyyyxxxxxxxxxxxxvvvuuuttttttsssttttttvvvvvvwwwzzz~~~ƿyyytttqqqoookkkjjjiiihhhggggggfffgggggghhhjjjllloooqqqtttwwwyyy{{{|||}}}}}}}}}|||{{{yyyyyyxxxwwwwwwwwwwwwwwwwwwvvvvvvuuusssqqqooommmrrr྾aaa```^^^]]][[[YYYXXXWWWWWWXXXZZZ]]]aaadddhhhmmmsssyyy~~~(*+ #%&WTV]Z\}}}nnn```XXXTTTSSSQQQRRRUUUZZZaaahhhpppvvv{{{}}}|||yyywwwtttpppmmmjjjhhhgggfffffffffgggiiikkknnnqqquuuzzz~~~|||tttkkkbbb\\\XXXUUUQQQPPPPPPQQQRRRSSSSSSVVV[[[___dddjjjrrrxxx}}}}}}{{{zzzxxxxxxyyyyyywwwuuusssrrrpppppppppppprrrrrrtttwww|||ƿ|||wwwtttqqqmmmkkkjjjjjjhhhhhhhhhhhhhhhiiiiiikkkmmmppprrruuuwwwyyy{{{|||||||||{{{zzzxxxwwwvvvuuussssssrrrqqqqqqpppppppppnnnmmmkkkjjj___^^^\\\ZZZYYYXXXXXXXXXYYY[[[^^^bbbfffiiinnnvvv{{{qrs  "# `[]}}}nnn```XXXUUUSSSQQQRRRTTTYYY___gggnnntttxxxyyyxxxuuussspppmmmjjjgggeeedddddddddddddddfffhhhkkknnnrrrxxx}}}xxxpppggg^^^XXXUUUSSSQQQPPPQQQRRRTTTUUUVVVYYY___fffmmmttt|||}}}{{{yyyyyyyyyxxxvvvsssqqqnnnlllkkkjjjjjjlllmmmnnnrrrxxx~~~ſ{{{wwwtttpppnnnmmmllljjjiiihhhhhhhhhhhhiiijjjllloooqqqtttvvvxxxzzz{{{{{{{{{zzzyyywwwvvvtttsssqqqpppoooooommmmmmlllkkkjjjjjjiii~ؿ^^^]]]\\\ZZZYYYXXXYYYZZZZZZ\\\___cccgggjjjooowww|||_aa "# $!#!¼}}}nnn```XXXUUUSSSQQQRRRTTTYYY___fffmmmssswwwwwwvvvsssqqqnnnkkkhhhfffeeedddddddddcccdddeeegggjjjmmmqqqwww|||}}}uuummmddd\\\WWWUUUSSSQQQPPPPPPRRRTTTVVVYYY]]]eeemmmuuu}}}~~~|||zzzyyyyyywwwtttqqqmmmjjjgggeeeddddddfffggghhhmmmtttzzzý~~~{{{wwwssspppnnnmmmkkkjjjiiiiiiiiihhhhhhiiikkkmmmooorrrtttvvvxxxyyyyyyzzzzzzyyywwwuuusssqqqooommmlllkkkiiiiiihhhhhhhhhgggggg෸gggfffeeedddkkk^^^]]]\\\[[[ZZZZZZ[[[]]]^^^```cccgggjjjmmmrrrxxx~~~-/0 !" ¼~~~oooaaaYYYUUUSSSQQQQQQTTTXXX^^^eeekkkqqquuuvvvtttrrrpppmmmkkkhhhfffeeedddddddddccccccdddfffiiilllpppvvv{{{yyyrrrjjjbbbZZZVVVTTTSSSQQQQQQQQQSSSWWWZZZ^^^dddmmmvvv}}}{{{yyyyyywwwsssooojjjfffbbb___^^^^^^^^^___aaafffnnnwww½}}}yyyuuurrrqqqooommmkkkjjjjjjhhhhhhggghhhiiijjjlllnnnpppsssuuuvvvxxxxxxxxxwwwuuutttrrrooommmjjjiiigggeeedddddddddddddddddd؞\\\[[[[[[[[[\\\]]]___aaaccceeehhhlllooorrrvvv|||bcd %$&[[[¼pppaaaYYYUUUSSSQQQQQQTTTXXX^^^dddjjjooorrrsssrrrpppnnnllljjjhhhfffeeedddddddddccccccdddfffiiimmmqqquuuzzz}}}~~~zzzsssllleee^^^WWWTTTRRRRRRRRRQQQRRRUUUZZZ___dddlllwww{{{zzzxxxuuupppkkkfffaaa]]]YYYXXXXXXYYYZZZ\\\bbbkkkttt~~~|||xxxuuusssqqqooommmlllkkkiiihhhhhhhhhhhhiiijjjlllnnnppprrrtttvvvwwwwwwwwwuuusssqqqoookkkiiigggeeecccbbbbbbbbbbbbcccdddeeeഴ\\\[[[[[[\\\]]]___aaaeeegggiiilllpppsssuuuyyy  311¾qqqbbbYYYUUUSSSQQQQQQTTTXXX^^^dddiiinnnqqqrrrqqqooommmllljjjiiigggffffffeeeeeeddddddeeegggjjjmmmppptttxxx{{{}}}}}}{{{xxxsssmmmfff```[[[VVVSSSRRRRRRRRRRRRSSSWWW]]]dddkkksss|||zzzxxxuuuoooiiiddd___ZZZVVVTTTTTTVVVWWWYYY___iiisss~~~ÿ}}}yyyvvvtttrrrpppnnnmmmllljjjiiihhhggggggggghhhiiikkkmmmppprrrtttuuuvvvuuutttsssqqqoookkkiiifffdddbbbaaaaaaaaaaaacccdddfffuuu[[[ZZZZZZ\\\^^^aaadddhhhkkkmmmppptttwwwzzz}}}Z\]"""¾qqqbbbYYYUUUSSSQQQQQQTTTXXX^^^ccchhhmmmpppqqqpppooommmlllkkkjjjhhhhhhgggggggggffffffgggiiikkknnnppptttwwwyyyyyyxxxvvvsssnnnhhhbbb]]]XXXTTTRRRQQQQQQRRRSSSTTTXXX```hhhpppzzz|||yyywwwsssmmmgggbbb^^^YYYUUUSSSSSSUUUVVVXXX^^^iiisss~~~|||xxxuuusssqqqooommmlllkkkiiigggfffeeeeeeeeeeeefffhhhjjjlllnnnppprrrsssssssssrrrqqqnnnkkkiiifffcccaaa```___```aaabbbdddeeefffnnneee[[[[[[[[[\\\^^^aaaeeeiiimmmpppsssvvvzzz}}}~  (&&nmm¾qqqbbbYYYUUUSSSQQQQQQTTTXXX^^^ccchhhmmmpppqqqqqqoooooonnnmmmllljjjjjjiiiiiiiiiiiiiiiiiikkkmmmoooqqqsssuuuvvvvvvtttppplllgggaaa]]]ZZZWWWSSSQQQQQQQQQSSSSSSUUUZZZccclllvvv}}}yyyvvvqqqkkkeee```[[[WWWTTTRRRRRRTTTUUUWWW]]]hhhsss~~~~~~{{{wwwssspppooonnnllljjjiiihhhfffdddcccbbbbbbaaabbbbbbdddeeegggiiikkkmmmooopppppppppnnnllljjjgggdddaaa___^^^]]]^^^___aaaccceeefffgggaaa^^^]]]\\\[[[\\\^^^bbbfffiiinnntttxxx{{{~~~7;<  ! "" geeqqqbbbYYYUUUSSSQQQQQQTTTXXX^^^ccchhhmmmpppqqqqqqoooooonnnnnnmmmmmmlllkkkkkkkkkkkkkkkkkkmmmnnnppprrrrrrsssrrrqqqmmmiiieeeaaa\\\XXXVVVTTTRRRQQQPPPQQQSSSTTTVVV[[[eeepppzzz}}}yyyuuuooohhhccc^^^YYYUUUQQQPPPPPPRRRSSSVVV]]]hhhsss~~~~~~xxxuuuqqqmmmkkkjjjiiigggfffeeedddbbbaaa```______^^^^^^^^^```aaaccceeegggjjjkkkmmmmmmmmmllljjjhhheeebbb___]]]\\\\\\\\\^^^```ccceeeggggggaaa^^^\\\\\\\\\]]]```dddiiimmmsssyyy}}}gjk !" CAAqqqbbbYYYUUUSSSQQQQQQTTTXXX^^^ccciiinnnrrrsssrrrqqqqqqpppooonnnnnnmmmllllllllllllmmmnnnooopppqqqqqqqqqpppnnnlllhhhddd```\\\XXXUUUTTTSSSQQQPPPPPPQQQSSSTTTWWW\\\gggrrr}}}~~~xxxsssmmmeee___[[[WWWSSSPPPOOOPPPRRRSSSUUU\\\gggrrr~~~xxxqqqmmmjjjfffdddddddddbbbaaaaaa```^^^]]]\\\[[[[[[ZZZZZZZZZ\\\]]]___aaacccfffhhhiiijjjkkkjjjiiigggdddaaa^^^\\\[[[[[[[[[]]]___bbbdddffffffaaa___]]]]]]^^^___ccchhhlllqqqwww}}}~  "#"&'$$$0..qqqbbbYYYUUUSSSQQQQQQTTTXXX^^^dddjjjooosssttttttrrrrrrqqqpppooonnnmmmmmmmmmmmmmmmnnnooooooqqqrrrrrrpppnnnlllhhhddd```\\\YYYUUUTTTSSSRRRQQQPPPOOOPPPRRRTTTVVV\\\gggqqq|||~~~xxxrrrkkkccc]]]YYYVVVRRRPPPOOOPPPRRRSSSVVV\\\gggrrr~~~}}}pppiiifffccc___]]]]]]]]]\\\\\\[[[ZZZZZZYYYYYYXXXXXXWWWWWWXXXXXXYYYZZZ\\\^^^aaaccceeegggggggggfffdddaaa___\\\ZZZYYYYYYZZZ\\\^^^aaaccceeefffcccaaa``````bbbdddgggmmmrrrwww}}}}}}vvvsss~*./'+,!"--- !pppaaaYYYUUUSSSQQQRRRTTTYYY___eeekkkqqquuuvvvvvvttttttrrrqqqpppooonnnnnnnnnnnnoooooopppppprrrsssrrrppplllhhhddd___[[[YYYVVVTTTSSSRRRRRRRRRQQQPPPQQQSSSUUUWWW\\\fffqqq|||~~~wwwppphhh```[[[XXXVVVRRRPPPPPPQQQSSSTTTWWW]]]hhhssswwwjjjbbb^^^\\\XXXWWWWWWXXXXXXWWWWWWVVVVVVUUUUUUUUUUUUUUUTTTUUUUUUVVVWWWXXXZZZ\\\^^^```bbbbbbbbbbbb```^^^\\\ZZZXXXXXXWWWXXXZZZ\\\^^^aaacccdddeee྿gggjjjnnntttzzzuuulllgggwz{Z^_  !&'*/0$$$&$$ +))pppaaaYYYUUUSSSQQQRRRTTTYYY___fffmmmrrrwwwyyyxxxwwwuuutttrrrpppnnnnnnnnnnnnnnnooopppqqqqqqrrrrrrqqqmmmiiiddd```[[[WWWVVVTTTRRRRRRRRRRRRRRRQQQPPPQQQSSSUUUWWW\\\fffpppzzz}}}uuunnnfff^^^YYYVVVTTTRRRPPPPPPQQQSSSTTTWWW]]]hhhsssttteee]]]YYYWWWSSSRRRSSSTTTTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTUUUWWWYYY[[[\\\^^^^^^^^^^^^\\\[[[YYYXXXVVVVVVVVVVVVXXXZZZ\\\___aaacccddd࿿lllooosssyyy|||pppeee___]]]svw!" 278%%%-++ :88~~~ooo```XXXTTTSSSQQQRRRUUUZZZaaahhhpppvvv{{{}}}|||zzzxxxvvvsssqqqooonnnnnnnnnnnnoooqqqrrrrrrssssssqqqmmmhhhccc^^^YYYVVVTTTSSSQQQQQQQQQRRRRRRQQQQQQRRRTTTVVVXXX]]]fffpppyyy}}}tttlllddd\\\WWWUUUSSSQQQOOOOOOQQQSSSUUUWWW^^^iiitttrrrccc[[[WWWUUUQQQPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSTTTVVVWWWXXXZZZZZZ[[[[[[ZZZYYYXXXWWWUUUUUUTTTTTTUUUWWWXXXZZZ]]]___bbbdddrrrtttyyy{{{nnnaaa[[[YYYvwwIHJ)&((%'###@@@}}}nnnaaaXXXTTTSSSQQQRRRUUUZZZbbbjjjqqqxxx}}}~~~|||zzzwwwtttqqqooommmmmmmmmmmmoooppprrrrrrrrrrrrppplllgggbbb]]]XXXUUUTTTSSSQQQQQQQQQRRRRRRRRRRRRSSSUUUWWWXXX]]]fffnnnwww{{{ssskkkccc[[[WWWTTTSSSQQQPPPPPPRRRTTTVVVYYY___jjjuuuqqqbbbZZZVVVTTTPPPOOOPPPRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSTTTTTTUUUVVVWWWWWWXXXXXXWWWWWWVVVUUUTTTTTTTTTTTTTTTVVVVVVXXXZZZʱxxx{{{|||nnnaaaYYYVVVtuvXWX  "!  ttt{{{mmm```XXXTTTSSSRRRSSSVVV[[[ccckkkssszzz}}}{{{xxxuuurrrooommmlllllllllnnnoooqqqqqqqqqpppnnnjjjeee```[[[WWWTTTSSSRRRRRRQQQRRRSSSSSSSSSTTTUUUWWWYYYZZZ^^^fffnnnvvv~~~wwwooohhhaaaZZZVVVTTTSSSQQQPPPPPPQQQUUUWWWZZZaaalllwww¿qqqbbbZZZVVVTTTPPPOOOPPPRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSTTTTTTTTTTTTTTTTTTSSSSSSRRRRRRRRRRRRRRRTTTTTTUUUWWWpppaaaYYYUUUSSSedf (%' zzzmmm```XXXTTTSSSRRRRRRVVV[[[ccclllttt{{{~~~|||xxxuuurrrooommmlllllllllnnnpppqqqqqqpppnnnkkkgggbbb^^^YYYUUUSSSRRRRRRRRRRRRRRRSSSUUUVVVWWWYYY[[[]]]^^^bbbhhhooouuu|||~~~{{{wwwpppjjjddd^^^XXXUUUSSSRRRQQQQQQQQQSSSWWWZZZ^^^eeepppzzzrrrccc\\\XXXVVVRRRQQQRRRSSSSSSSSSSSSSSSSSSRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSTTTTTTVVVƄrrrcccZZZVVVSSSlkm%"$xxxkkk___XXXTTTSSSRRRRRRVVV[[[ccclllttt|||}}}yyyvvvssspppnnnmmmmmmmmmnnnppppppooonnnlllhhhddd___\\\XXXTTTSSSRRRRRRRRRRRRSSSTTTVVVXXXZZZ\\\___aaaccceeekkkpppuuu{{{yyyvvvtttpppjjjddd___ZZZVVVSSSRRRRRRRRRQQQRRRTTTXXX\\\aaaiiittt}}}¿rrreee]]]ZZZXXXUUUTTTUUUVVVVVVUUUUUUTTTTTTSSSRRRQQQQQQPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRTTTƈwwwhhh^^^YYYUUUrqs  vvvjjj___WWWTTTRRRRRRSSSVVV[[[ccckkkssszzz~~~|||yyyvvvrrrpppooonnnnnnnnnnnnoooooommmkkkiiieeeaaa]]]ZZZWWWTTTRRRRRRRRRRRRRRRSSSUUUXXX[[[^^^aaaeeefffhhhjjjnnnrrrvvv{{{~~~xxxrrrooollliiiddd```\\\YYYUUUSSSRRRRRRRRRRRRRRRUUUZZZ^^^dddlllwww¾vvvjjjccc```^^^ZZZZZZZZZ[[[[[[[[[ZZZZZZXXXVVVUUUSSSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSUUUWWWYYY^^^eeekkkrrrzzz}}}mmmccc^^^YYYvuvBAC ???uuujjj___XXXTTTSSSRRRSSSUUU[[[bbbiiiqqqwww|||~~~~~~|||zzzxxxuuurrrpppoooooooooooooooooonnnllliiifffbbb^^^ZZZXXXUUUSSSRRRQQQRRRRRRSSSSSSUUUYYY]]]aaaeeeiiikkklllmmmqqqtttwww{{{yyyrrrkkkgggdddbbb^^^[[[XXXVVVTTTRRRRRRRRRRRRRRRSSSVVV\\\bbbhhhpppzzz¾|||rrrmmmjjjgggeeeddddddddddddcccbbbaaa___\\\ZZZWWWUUUTTTSSSSSSSSSSSSSSSSSSSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQ]]]WWW[[[ccckkkrrr{{{ƾuuujjjbbb\\\vuwgfgqqq}}}rrrggg]]]WWWTTTSSSRRRRRRUUUYYY___ffflllrrrwwwyyyyyyxxxxxxvvvtttrrrpppppppppoooooonnnnnnllliiifffbbb^^^ZZZWWWUUUTTTRRRQQQQQQRRRRRRSSSTTTWWW[[[```dddiiimmmooooooqqqsssvvvxxx{{{}}}tttkkkccc___]]][[[WWWUUUTTTTTTRRRQQQQQQQQQSSSSSSTTTXXX^^^eeekkkttt~~~¾{{{vvvtttqqqooonnnnnnnnnllllllkkkjjjfffbbb___[[[WWWVVVUUUTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQPPPPPPPPPzzzZZZbbbjjjȑö~~~qqqhhh```WWWttu&#%{{{qqqfff\\\VVVTTTSSSRRRRRRTTTWWW]]]bbbhhhmmmrrruuuvvvvvvvvvuuusssrrrqqqpppqqqpppoooooonnnlllhhhddd```\\\XXXVVVUUUTTTRRRQQQQQQQQQSSSTTTUUUXXX\\\aaafffkkkoooqqqrrrsssuuuwwwxxx{{{{{{rrrhhh___ZZZWWWUUUSSSRRRRRRRRRRRRQQQQQQQQQSSSTTTUUUYYY```fffmmmuuu¾}}}{{{yyyxxxwwwwwwuuuuuutttrrrnnniiiddd___[[[XXXWWWWWWUUUUUUUUUUUUUUUUUUTTTTTTTTTTTTTTTSSSSSSRRRRRRQQQQQQQQQQQQQQQQQQPPPPPPPPPࡢqqqȒźwwwmmmcccYYYvuvROQzzzoooeee\\\VVVTTTSSSQQQQQQSSSVVVZZZ___ccchhhlllooopppqqqrrrsssrrrqqqqqqqqqqqqqqqooonnnmmmkkkgggccc___[[[WWWUUUSSSSSSQQQQQQQQQQQQSSSTTTVVVYYY^^^bbbggglllppprrrrrrsssuuuwwwxxx{{{zzzpppfff]]]WWWUUUSSSQQQPPPPPPQQQQQQQQQPPPQQQSSSTTTUUUYYY```fffnnnvvv~~~}}}zzzuuupppkkkfffaaa^^^\\\[[[YYYXXXXXXXXXXXXXXXWWWWWWWWWVVVVVVUUUUUUTTTSSSRRRRRRQQQQQQQQQQQQPPPPPPPPPÒȽ|||pppfff[[[UUUkij zzzxxxoooeee\\\VVVTTTSSSQQQQQQRRRUUUXXXZZZ]]]aaaeeehhhkkkmmmoooppppppppppppqqqqqqqqqooonnnmmmjjjfffbbb^^^ZZZVVVTTTSSSRRRQQQQQQQQQQQQSSSTTTVVVZZZ___dddhhhmmmqqqsssssstttvvvxxxyyy|||{{{qqqfff]]]WWWUUUSSSQQQPPPPPPQQQQQQQQQQQQRRRTTTUUUWWW[[[bbbhhhooowww~~~yyytttoooiiifffeeecccaaa```___^^^^^^]]]]]]\\\\\\[[[ZZZZZZXXXWWWVVVUUUTTTSSSSSSSSSSSSRRRRRRRRRTTTપ|||qqqfff[[[UUUtrt2/1tttkkkcccZZZUUUTTTSSSQQQQQQQQQSSSUUUWWWYYY[[[___bbbdddgggiiikkkkkklllmmmnnnnnnnnnmmmlllkkkhhhddd```\\\YYYUUUSSSSSSRRRRRRQQQRRRSSSUUUWWWZZZ^^^cccgggkkkooossstttuuuvvvxxxzzz{{{~~~{{{qqqfff\\\WWWUUUSSSQQQQQQQQQSSSSSSSSSSSSTTTVVVXXX[[[___eeekkkqqqxxx|||wwwrrrooommmkkkiiiggggggfffdddcccbbbaaa_________^^^\\\ZZZXXXVVVTTTSSSSSSSSSSSSRRRRRRRRRTTTyyyҞxxxmmmcccYYYTTTljk1.0???rrrjjjbbbZZZVVVTTTSSSQQQQQQQQQRRRTTTUUUVVVXXXZZZ]]]^^^aaaccceeefffgggiiikkklllmmmmmmllljjjgggccc___[[[XXXTTTSSSRRRRRRRRRRRRSSSUUUXXXZZZ]]]aaagggkkkooorrrvvvwwwwwwxxxzzz|||}}}|||rrrggg^^^XXXVVVUUUSSSRRRSSSTTTTTTTTTTTTVVVYYY[[[^^^ccciiioootttyyy~~~zzzwwwuuusssqqqooonnnllljjjhhhgggfffddddddcccbbb```]]][[[XXXVVVUUUTTTTTTTTTSSSSSSTTTูοrrrhhh```WWWcbdXVW&#%}}}hhhaaaZZZVVVTTTSSSQQQQQQRRRSSSSSSTTTTTTUUUWWWYYY[[[]]]___aaabbbccceeehhhjjjkkkkkkjjjhhhfffbbb___\\\YYYVVVTTTSSSSSSSSSSSSTTTVVVZZZ]]]aaaeeekkknnnqqqtttwwwyyyyyyzzz|||}}}}}}sssiii```[[[XXXWWWUUUTTTUUUVVVVVVVVVWWWXXX\\\___bbbgggmmmqqquuuzzz~~~|||zzzwwwuuusssqqqooonnnllljjjiiihhhfffcccaaa^^^[[[YYYXXXWWWWWWWWWVVVVVVWWWǏʖϾxxxkkkccc\\\TTTRQSEBD  ```ZZZVVVUUUTTTRRRQQQQQQRRRRRRRRRSSSSSSUUUVVVWWWXXXZZZ[[[\\\^^^```cccfffggghhhhhhgggdddaaa^^^[[[XXXVVVUUUTTTUUUUUUVVVWWWYYY]]]aaadddhhhmmmqqqtttvvvyyy{{{{{{|||~~~wwwnnneeeaaa^^^]]][[[ZZZZZZ[[[[[[[[[[[[]]]```cccgggkkkqqqtttwwwzzz}}}{{{xxxuuutttrrrpppooonnnllliiigggdddaaa___^^^]]]]]]]]]\\\\\\]]]fffmmmsssʗҿrrreee___YYYSSSQPR1.0&&&000mmmZZZWWWUUUTTTRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSTTTVVVWWWXXXZZZ\\\___aaacccdddddddddbbb```^^^\\\ZZZXXXWWWVVVWWWXXXYYYZZZ]]]aaadddhhhlllppptttvvvxxx|||}}}~~~|||uuunnnjjjhhhgggeeeddddddddddddddddddeeegggjjjmmmppptttvvvxxx{{{|||zzzxxxvvvtttsssrrrpppnnnkkkhhhfffdddccccccccccccccccccddd~~~hhhlllrrrxxxӿlll```ZZZVVVhgh[Z\# "!!! OOO\\\WWWUUUTTTRRRRRRRRRRRRRRRQQQQQQQQQQQQQQQRRRRRRTTTTTTUUUWWWYYY[[[^^^___aaaaaa``````^^^]]]\\\[[[ZZZYYYYYYYYY[[[\\\^^^```dddgggjjjnnnrrruuuwwwyyy}}}}}}xxxuuusssrrrpppooonnnnnnnnnmmmmmmmmmoooppprrrtttvvvwwwxxxzzz~~~~~~|||zzzxxxvvvuuutttsssqqqooommmkkkiiiiiiiiiiiiiiiiiijjjkkkmmmnnnpppsssyyy~~~~~~iii]]]WWWnno[Z[0/1"$$%'' "#!$ sopXXXVVVTTTRRRQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSTTTUUUWWWYYY[[[\\\^^^^^^^^^^^^^^^]]]\\\[[[[[[[[[[[[\\\^^^___```bbbfffhhhkkknnnrrruuuwwwzzz~~~~~~}}}|||zzzyyyyyyxxxwwwvvvvvvuuuuuuuuuvvvvvvxxxxxxyyyzzz~~~~~~}}}{{{yyyxxxwwwvvvtttrrrqqqpppooonnnnnnoooooopppqqqrrrtttuuuwwwzzz}}}hhh\\\WWWccdCBD"!#!!#!! }z{WWWUUUSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSUUUVVVXXXYYY[[[[[[\\\\\\\\\\\\\\\\\\\\\]]]^^^___aaabbbccceeegggiiikkknnnrrruuuwwwzzz~~~~~~}}}{{{zzzyyyyyyyyyyyyyyy{{{}}}}}}|||{{{zzzxxxwwwvvvuuuuuuttttttuuuuuuvvvwwwyyy{{{}}}~~~¬~~~iii]]]srsXWY,+-""" +#$pppWWWUUUSSSSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSTTTUUUWWWXXXXXXYYY[[[[[[\\\\\\^^^___```aaacccdddeeegggiiikkklllnnnrrrtttwwwzzz~~~}}}|||zzzzzzzzz{{{}}}~~~}}}{{{zzzyyyxxxxxxwwwwwwwwwyyyzzz{{{~~~ìgfhYXZ:9; #"" )!"( !*$% GBCXXXVVVTTTSSSRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQQQQQQRRRRRRSSSTTTTTTVVVWWWWWWXXXZZZZZZ[[[\\\^^^___aaabbbdddeeefffgggiiijjjkkkmmmqqqsssuuuyyy~~~}}}{{{zzz{{{|||~~~}}}|||{{{zzzzzzyyyyyyyyy{{{|||}}}ţWVX546&%'#$ % #" %-%& 0*+liiWWWUUUSSSSSSRRRQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSUUUVVVWWWXXXZZZ[[[[[[\\\^^^___aaabbbdddeeefffgggiiijjjkkkmmmppprrrtttxxx}}}~~~|||{{{|||}}}~~~}}}||||||{{{zzzzzz|||}}}͟iijedf102  &!"(#$'!"$#!0()"|{{WWWUUUTTTRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSTTTUUUVVVWWWYYYZZZ[[[\\\^^^___```aaacccdddeeefffhhhiiijjjlllnnnqqqsssvvvzzz~~~}}}}}}}}}~~~}}}|||||||||~~~Π{{|``a$#%   "&,$%-%&+#$' $"+%&!*$%  ~||[[[VVVTTTSSSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSTTTUUUVVVWWWYYYZZZ[[[\\\^^^___```aaacccdddeeefffhhhiiijjjkkkmmmoooppprrrvvvyyy{{{~~~~~~}}}|||}}}~~~׼蝝lkm,+-   "' -%&/'(,$%( !$#("#" vvvYYYVVVTTTSSSRRRRRRQQQRRRRRRRRRRRRRRRRRRRRRRRRQQQRRRSSSTTTUUUWWWYYY[[[\\\]]]___```aaaaaacccddddddeeeggghhhiiijjjlllnnnoooqqqsssuuuvvvwwwyyyzzz{{{|||~~~~~~||||||||||||}}}̶訣:9;(') (0#%/$&/$&2'),!#"% # bbbWWWUUUTTTSSSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSSTTTUUUWWWYYY[[[\\\]]]______``````bbbcccdddeeeggghhhiiijjjlllmmmnnnooooooppppppppppppppppppqqqssstttuuuyyy}}}{{{{{{{{{|||~~~΢ĔdWZ(*$HGI NMO&%'  ,!4')3(*2')3(*/$&( !-%&% "  '''ZZZWWWUUUTTTRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSTTTUUUVVVWWWYYY[[[\\\]]]____________aaabbbcccdddfffhhhiiijjjkkkllllllkkkkkkjjjiiihhhhhhfffffffffhhhiiikkkpppyyy|||{{{{{{{{{|||~~~Ο{FDJ!%RUSф@?A324EDFeef.-/ "$1 #8'*7)+4&(0%'-"$*"#0()(#$""'!" $""[[[YYYVVVTTTRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSTTTUUUVVVWWWYYY[[[\\\]]]____________aaabbbcccdddfffggghhhiiiiiiiiiiiihhhfffdddbbb```^^^\\\[[[\\\^^^```bbbhhhsss}}}}}}|||{{{{{{|||~~~͝[et+)/+)/ADB}x!,+-WVXpop #& !0"5$'6(*2$&) %%)!""'!"&$$(&&\\\YYYUUUTTTSSSSSSSSSRRRRRRRRRRRRRRRRRRSSSTTTUUUVVVWWWYYYZZZ[[[\\\^^^^^^^^^^^^```aaabbbccceeefffggghhhhhhgggfffdddbbb___]]][[[YYYWWWVVVVVVXXXZZZ\\\cccnnn{{{~~~}}}||||||}}}~~~ǰ}('0('0W[Zʇ|}'#(hghΉ*)+$( !6!$9$'8'*5$'("!% #&$$\\\XXXUUUTTTTTTRRRRRRRRRSSSSSSSSSSSSTTTTTTUUUVVVWWWYYYZZZ[[[\\\^^^^^^^^^^^^```aaabbbccceeefffggggggfffeeeccc```^^^[[[ZZZXXXVVVTTTSSSTTTVVVXXX[[[bbbmmmzzz~~~}}}||||||}}}igv('0wy*vsw˙HGI  #( !<'*<'*;*-7&)(# !'!"-())$% ,**```XXXVVVVVVTTTTTTTTTUUUUUUUUUUUUUUUUUUVVVVVVWWWYYYZZZ[[[[[[\\\]]]]]]]]]___```aaabbbdddeeefffeeedddccc```^^^[[[XXXVVVUUUSSSRRRQQQRRRTTTVVVYYY```mmmzzz~~~||||||||||||}}}~~~~~~~~~~~~ɋUEY3+5,$.TYX-21*6'%őSRT546    $)!"B+/=&*;(+7$''$ % '!"&!"$ jjj___ZZZXXXXXXXXXXXXXXXWWWWWWWWWWWWWWWWWWXXXXXXYYYYYYZZZZZZ[[[[[[[[[]]]^^^___```aaabbbbbbbbb```^^^\\\YYYWWWUUUTTTSSSQQQPPPOOOPPPSSSUUUXXX```mmm{{{~~~zzzvvvtttssssssssstttvvvyyy}}}ǂpcsWG[EJIaTR657{z|ǯ]\^0/1   !"!  %*"#B+/;$(7$'3 ###!"'!"$" zzzccc\\\[[[[[[[[[[[[ZZZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZ[[[\\\]]]______``````___]]][[[YYYWWWUUUSSSRRRRRRPPPOOONNNNNNRRRUUUYYYaaannn|||~~~~~~~~~zzzuuuppplllkkkkkkkkklllnnnrrrwww|||{{{yyywwwuuuttttttvvv_\d?-09(+.!#)! !& !!$& ! RTTnnniiigggfffcccaaa^^^\\\ZZZXXXVVVUUUTTTTTTTTTUUUUUUUUUTTTTTTSSSSSSRRRRRRRRRRRRRRRQQQRRRTTTUUUVVVZZZaaagggoooxxx|||qqqhhhbbb]]]WWWTTTSSSTTTVVVWWWZZZ___hhhrrr{{{~~~~~~zzzlllccc^^^ZZZTTTRRRQQQRRRTTTUUUVVV[[[bbbiiiqqqxxxzzztttoooZZZXXXVVVTTTRRRQQQRRR>CQ#"!+a`hB=F /$&[H=¿Z\] ,$%&'). !8()>./=-.9)*0 8%(<+.;*-1$&)% "% '!" "  !!888jjjhhhfffbbb```^^^[[[YYYVVVUUUTTTSSSSSSSSSTTTTTTSSSSSSRRRRRRRRRRRRRRRRRRQQQQQQRRRTTTVVVXXX]]]eeemmmuuu~~~wwwkkkccc^^^ZZZUUURRRQQQRRRTTTUUUWWW]]]fffppp{{{zzzzzz||||||~~~ÿuuufff]]]YYYUUUQQQOOOOOOPPPRRRSSSTTTYYY```hhhpppxxxࡡtttnnnhhhVVVTTTSSSQQQPPPOOOPPPAAM ^Z_QJQ6/6"oaYwwwz|}JNO !$#%&/!"7)*:*+5%&2 7"%8'*9(+1$&)&#&( ! !! 333jjjfffbbb___\\\XXXVVVUUUTTTRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSWWWZZZ]]]ccclllttt{{{sssfff^^^YYYUUUQQQNNNNNNPPPRRRTTTWWW]]]fffqqq{{{wwwwwwyyyyyy{{{}}}¼rrrccc[[[WWWTTTPPPNNNNNNOOOQQQRRRSSSXXX___gggooowww~~~ʿTTTSSSRRRPPPOOONNN[bpOOZ)!]Z_F?F)")($ vvvlllbbbruv879'"#"%($'. !4$%4$%2 5 #5$'6%(/"$("!$'    kkk{{{dddaaa]]]YYYVVVTTTSSSQQQQQQRRRRRRRRRRRRQQQQQQQQQQQQPPPQQQQQQQQQRRRTTTXXX\\\```fffpppxxxqqqccc[[[WWWTTTPPPNNNNNNPPPRRRTTTWWW]]]fffqqq{{{ttttttvvvvvvxxxzzz~~~üpppaaaYYYVVVTTTPPPOOOOOOPPPRRRRRRTTTXXX___gggooowww~~~|||TTTRRRRRRPPPOOOOOOY^kICH1+0E==D?A vvvmmmddd\\\gjkkmn578!!! "#%*  4((0 ,*0",!#&$%"{{{aaa]]]YYYVVVTTTSSSQQQQQQRRRRRRRRRRRRQQQQQQQQQPPPPPPQQQQQQRRRRRRUUUZZZ^^^cccjjjttt{{{qqqbbbZZZVVVTTTPPPNNNOOOQQQSSSVVVYYY___hhhrrr|||~~~~~~pppppprrrrrrtttvvvzzz~~~|||nnn___XXXUUUSSSPPPOOOPPPQQQSSSSSSUUUYYY```hhhpppxxx~~~|||xxx{{{ࡢUUUTTTSSSRRRQQQPPPPPPZ_lMGL<6;7//.&&C>@olnvvvlllddd^^^WWWTTTpqrklm666)!!.&& %0$$!-*). + "'(,$%'  hhhaaaYYYVVVTTTSSSQQQQQQQQQRRRRRRRRRRRRRRRRRRQQQQQQQQQQQQRRRRRRUUU[[[aaagggnnnwww~~~Ŀ~~~pppaaaYYYVVVTTTPPPOOOPPPRRRVVVYYY]]]cccllluuu}}}}}}||||||lllmmmmmmnnnoooqqquuuxxx{{{ûuuuiii\\\VVVTTTSSSQQQOOOPPPQQQSSSTTTVVVZZZbbbjjjrrrzzz~~~{{{xxxuuuљ~___TTTSSSRRRRRRRRRQQQPPPQQQhdfUPRMCC8..<8=yyykkkbbb\\\WWWRRRPPPPPPnopgii355 )$##)!!'&%*( !&  '!".()("#"""yyyXXXUUUTTTSSSQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRTTTTTTUUUXXX^^^eeekkksss{{{Ľyyykkk^^^WWWTTTSSSQQQPPPQQQTTTXXX]]]bbbiiirrrzzz|||yyyxxxxxxiiijjjjjjkkkkkkmmmqqqtttxxx}}}ƽ{{{ooodddYYYTTTRRRRRRPPPOOOOOOPPPRRRTTTVVVZZZbbbjjjrrrzzz}}}yyyuuuqqqwwwmnnRRRRRRRRRRRRQQQPPPQQQkgh,')0&&@?K=>K=>K<=J:K=@K?@L@@LA@LAAMBAMB@LA@LA@L?@K?@K>@K=>K==L=9OA8QA9PB9PC;OC?MBAMCBMDBMDCNEBNEBNEMBK==L=9OA8PA9O=;K;K=>K=?K>@L?>MA@K>@K>>M>;OA6TE-\L)aO)aO*aO/\MK=;OB.\L)aO-[K8O>=J:=K;>K=>K=>K==L>;PB7TF.]M*aP*aP/\M;PC?K=?K=>M>7RD-\M(aQ%eT#eU#eU#eU*aP;RFAMCBMDBMDBNDBMDBND=RG.^O%eT#eU%eT-_P8UKMA:QC*aO#eU)aO8QA=J;>K;>K<>K==L=7RD-]M(aQ%eT#eU#eU*aP:QD>M?;PB6TE,^M%eT#eU#eU#eU%eT(aQ/\MMA@K@;PC/\L*aP*aO)aO)aO)aO)aO)aO'aQ%eT#eU#eU%eT.]M:QD7TF(aQ#eU)aO8QA=J;=J;=J;>K<:OA-\L%eT#eU#eU#eU%eT.]M;PB;PB/\L(aQ%eT#eU#eU%eT(aQ.\M7TGM@;PC:QD9QC9QB9QB9QB9QB9PB6TF+_N%eT#eU#eU*aP5VH.]M%eT#eU)aO7O@=I;=J;=K;>K=9QB)aO#eU#eU%eT(aQ.]M8SE>L>9QB)aO#eU#eU%eT(aQ.\M6TF;PC?MBAMCBMDBMDBMDBNDBMCAMBALB@LA?MB8SF.]M*aP(aQ%eT#eU#eU*aP:QD@K?@K?@K?@K?@K>=M=:OA9PB9PB:OA=N@7SF.]M*aQ*aQ/\M5UH*aP#eU%eT-\L9N>=J;>K<>K=?K=9QC*aO#eU#eU'cR0ZK7TF=M@>K=8PA)aO#eU#eU(aQ5UF;OB=M@;QD;RGM@;PC:QD7TF.]M*aO*aO/\L;PB@L?@K?>M@;PD:QD6TE-\L)aO)aO.\L;PB>MAK<>K=>K=?K=9QC*aO#eU#eU%eT(aQ.\L:OB>K=8PA)aO#eU#eU)aO9QB?K=;OB/\M+aQ+aQ+aQ+aQ*aQ.^O7UH?K=?K=?K=>K=?K=@K>@K?>M@;PB:QC:QC;OB=MA;PC:QD7TF.]M*aP(aQ%eT#eU#eU*aO:QD@L@@LAAMBAMBAMB;QF*aP#eU(aP4TF9QB:O@=L=>K=>K=;PB.]M%eT#eU#eU#eU)aO9QB>K=9PB)aO#eU#eU)aO9QB@K>;QD*aP#eU#eU#eU#eU#eU%eT(aQ>K=>K=>K=>K<=L=;OB:QD9QD;PB>M?@K>>M?8SE.]M*aP(aQ%eT#eU#eU#eU#eU%eT.]M;PC@L@@LA@LAALA@LA;QD*aP#eU%eT(aQ*aO-\L5TE9QB:OBK;=K;=K;=J;9O@.[L*aP*aP/\L;PC@K?;PD.]M%eT#eU#eU#eU%eT(aQ*aO)aO-\M8SE>MA@LA@L@@K@@K@@L@:QD*aP#eU#eU#eU#eU%eT'aQ)aO.\L:OB=M>;OB9QD:QD;REMA?K==L=9O@8PA9QB;PB?MBAMB@OE>QGK;>K;>K=9QB)aO#eU#eU(aQ7TG?MB;QF*aP#eU#eU#eU#eU(aP4TF9QB9QB:OB=N@;PC;QE;QE@L@@MA@MB@K@@K>>K=>J<>J<>K=@K>BMBBMDBMEBMDBMCAMB>OB2WI'cQ#eU#eU=K;>K;>K=@K?;RE*aP#eU#eU%eT.]NK<>K==L=7RD.]M*aP*aP0\M=QGBNC@NCM>;PC;QE;RF;RF:QE:QD9PB9PB9QB9QCKAMAAMCK=:OA-\M%eT#eU#eU+aQ;PC/\M*aP*aP*aP*aP*aP)aO)aO*aO*aP.]N9TH>OD;PD:QD;PC=L=7P@(aO#eU#eU#eU>MA=QE=SH=RG;RG/\M*aO*aO)aO/\L;OB>M?:PB9QB8PA7O?7O?9N>K=9QC*aO#eU#eU%eT.]N=QFAMC@MDK=>K=?K>@K@;QE*aP#eU#eU#eU#eU#eU#eU#eU#eU#eU%eT,^O2WI-\M*aP.[L9N=7O>(`O#eU%eT(aQ=QF0\N+aQ0\M:QE;PC9QB9QB9QC;PB>M??K=?K=>K==K;=I:=I:=I:=J;=J<>K=9QD*aP#eU#eU'cR4XK>OEBMD=QF0\M*aQ*aP*aP*aO-\M6TF;PB>M?@K?@L@;QE*aP#eU%eT(aQ*aQ+aQ+aQ(aR%eT#eU#eU%eT'bQ%eT#eU)aO7O?7O>(`O#eU(aQ5VG;RH*aQ#eU(aQ7TF>M??K=?K=?K>@K?@K?@L?>M?;OB8PA7O?7O?9O?=K=>K=?K=:QD*aP#eU#eU%eT.^O=QGBME@K?;PC.\L)aO.\M6TG;RF;RF;RG8UJ-_O%eT#eU#eU#eU#eU%eT-]L9O>7O>(`O#eU*aP;RE:QE*aP#eU%eT.]M;PB@K>@K?>M@;PD:QE:QE7TF.\M)aO)aO(`O,\L7RD>M>@K>;PB.\M%eT#eU#eU)bQ8VJAOE=RF0\M*aP(aQ%eT#eU#eU#eU(aQ6TF>M>@K=>M>:OB9QB;OB>M?@L@@LA@LA?MC9TH.]N*aQ+aQ+aQ*aQ.]M7SD=K=9O>.[K)aO.\L;PD9PB)aO#eU#eU(aQ7TG>OB;QD7TH.]N*aP*aP(aQ%eT#eU#eU#eU%eT.\M;PB@K>>M?7RD,^N%eT#eU%eT.]O=QF@ND=QF;QE7TF-\M(aQ%eT#eU%eT.]M;PB?K=>K==L=:OA9QB9QC9QD;PC>M?@L@?MBM>>K==L=:O@8PA9O@=L=9O?-\L%eT#eU%eT.]N8UI/\M(aQ%eT#eU#eU#eU#eU#eU#eU#eU#eU*aP:QD?K??K>>M?7TF(aQ#eU#eU*aQ;RGBMCAMB@LB>MA;PB4UG(aQ#eU#eU*aO:QC>K=>K=;OB.\L)aO)aO*aO.\M7SD>M@@LA@MBAMC@ND=QF;QF;PC>M??K=?K=>K=>J<>J<>K;=M>2WH'cQ#eU#eU+aQ6XL+aQ#eU#eU%eT(aQ*aP*aP(aQ%eT#eU#eU*aP;QE@LA@L@@L?:RE*aP#eU#eU*aQK=?K=9QB*aO#eU#eU#eU%eT.]ML?>K=>K=>K<>K;>K<7TF,^N%eT#eU#eU+aQ7XM+aQ#eU#eU'cR2YK9RE9QD7TG.]N*aQ+aQ0\NM@6TF(aQ#eU*aO9QC?K=?K=9QB)aO#eU#eU#eU#eU*aP;RFAMCAMBAMB;RF*aP#eU%eT,_N7RD=L>>K=>K=>K=?K=(aQ%eT#eU#eU%eT/^P8WL+aQ#eU#eU%eT.]M;PD@LA?MBL?>K=9QB*aO#eU(aQ6TF>L>?K=;OB-\M%eT#eU#eU#eU*aQ;RFAMB@MB@MB;RE*aP#eU#eU%eT,^M6TE9QB;OA>L>?K=#eU#eU%eT)aR/^O;UK=SJ.]O%eT#eU#eU*aP;QD@LAAMB@MD=QFL>7RD.]M*aP*aP*aP/\M=QEAMB@MB@MB?K=>M>;PB:QD:QD9QD;PD@NBAMB@MB@MB>MB7RE+^M%eT#eU#eU#eU#eU*aP;QFBMCOERHAOE;RG+aQ#eU#eU#eU*aP;QD@L@;PC/\M*aP*aP/\M;PC@K??K=>M>;PB:QD;PB>M?@K@@LA@MB@MA@L@>K==K<5RB,\L)aO'aP%eT#eU+aQM?MA@L?@K>;PB/\L*aP/\L;PC@K@@K??K>>K==J;=I9RHBMD@LA@L@@L@:QD*aP#eU(aP5UF:QD;QDM@:QD*aP#eU*aP:QD>K==L=9O?7O?7O>7O=7O=7O=8N=@K>?K=>K=>J=>K=:PA.\L)aO-\L5SE:OB>L?@K@@LAM@@LA@MBAMB@MB@K@>K;>K;>J;9QB)aO#eU#eU#eU#eU#eU%eT(aQ/\MM>;OB9PB9O?;K;=J;=L<9O?8QA9O?=L=>K=@K?@L@@MA;RF*aP#eU#eU#eU%eT(aQ(aQ%eT#eU)aO9PA8N>+\L$eT#eU#eU#eU#eU#eU%eT,^N9TG?MB@LA?K??K>>K=>K;>J;=J;9O?.\K)aO)aO'aP%eT#eU#eU#eU*aP;QD?MA8SF.]M*aP*aP.\L9QC7SD.\M)aO-[K8N==I:=J:=K;(`O#eU#eU%eT'aP'aP%eT#eU%eT,_O7TG9QD9OA=K==J<>K=>J<=J;=K=9O?9PA9PB5TD-\M)aO)aO)aO.\L;PC@L?>M@;PB:QD9QC:OA9QB-]M%eT#eU(`O7O?4SD,\L)aO)aO/\L;PC@LA?MB7O?)aO#eU%eT+^M5SC4SD+]M%eT#eU%eT(aQ*aO.[K9O?>K;?K=>K=>K<>K=>K=>K=>K==L=:OA9QB9QB9QB:OA>M?@K?@K?@L>@K>?K=>K=9PB)aO#eU#eU(`O7O?M@;PB:QD9QC9QC:QD:QD:QC:OB=L=9O?.[K)aO-\L7RB=K<=K<5SD'aP#eU#eU#eU#eU)aO9QB>K=>K=>K=>K==L=:OA9QB9QB9QB:OA=L==J<>K<=L=;PB:QD:QD;PB>M=>K=>K<8PA)aO#eU%eT,\L8N=M?@K=@L>@L?@K?@K>?K>>K=>J<=J;J;>J;9O?.\L)aO)aO)aO)aO.\L;PB?K=>K==L>:OB5TE-\M*aO*aO*aO.\L9O?=J;=J;9O?.\L*aP*aP-]M5TE:OA=L=9PA)aO#eU&cQ2VG;M==J:7O?)aO#eU%eT+]M5SD;OA9QB.\L*aP-\M7RD>M?>M@;PD:QD:QD;OB=K=>K;>J;>J<>K=?K=?K=>K==J;=J;=L=:OA9PB8OA8PA9PB;PB>M??K>>K=:OA.\L'aQ%eT#eU#eU#eU)aO8PA=K;=J;8PA)aO#eU#eU%eT'aP.\L;OA9QB*aO#eU%eT-\L9O>K=9QB)aO#eU%eT.\M;PB;QC/\M*aP*aP-\M7RDM>?K=>K==K=9O@9QB9QB9PB9O?K=?K=>K=>K==L=5TE'aP#eU#eU%eT'aQ)aO.[L9O?>K;=J;9O?-]L%eT#eU#eU#eU*aO:QD;PC.]M%eT#eU)aO8P@=I:7O?(`O#eU)aO8PA>K=>K=9QC*aO#eU#eU*aO:QD:RD*aP#eU#eU%eT-]L5TD.\L)aO/\L;OB>K=>K=:OB.[L)aO)aO)aO,\L6RC=L=>K=>K=>K=5TD+^M%eT#eU%eT+^M5SE9PB:OA=L=>K<>K<=H:8N=-[K)aO.\L:OA?K=@L@;QD*aP#eU#eU*aP:QD;QD.]M%eT#eU#eU'aP0YJ'aP#eU*aO:QC?K=?K=:QC*aO#eU#eU#eU%eT-\L9O@>K=>K=>K='aP%eT#eU%eT+^M7RD=L=>K=>K=>K=>K=>K=>K==L=9O?3TD'aP#eU%eT,_O8SF=M@:OA7RC5TD6QA8M=:L=9O>8PA:OA>M>@L@@MB;RF*aP#eU#eU*aP:QD>MA8SF,^N%eT#eU%eT'cQ%eT#eU*aP:QD@K>@K>;PB.\M%eT#eU#eU#eU)aO8PA=J;=J;=J;#eU#eU#eU'aP5TD=L=>K=>K=?K=?K=?K=?K=>K=>K<=J;9O>,\L%eT#eU%eT.]M;PB=M=7RD-\L)aO,\L6RB=K=>K;>K=?K=@LA@MC7TH(aQ#eU#eU*aP:QD@L?>M?7RD,^M%eT#eU#eU#eU#eU*aP:QD@K>@K>>M>6TE'aP#eU#eU%eT,\L9O>=J;=J;=J;)aO)aO)aO.\L:OA>K=>K==L=;OB9QC9QC9QB9OAK=>K=>M@=M?6TF'aQ#eU#eU#eU%eT.\M;PB?K=?K=>K=9OA.[K)aO)aO,\L6RB8P@.\L*aO*aP/\L6TF.]M%eT#eU#eU#eU)aO9QB=L>;OB7TF.]M(aQ%eT#eU%eT,_O8SF>MA?K?@K??K>;OB.\L)aO)aO)aO-\L7RD>M>>L>:OB9PB8PA8P@7P@8O@9O=M?:OB9QB8PB8OB9O@=L=>K=:OA.\L)aO,\L5RB;K;=J:=J:=J:=J:=K;=J;=J;=I:=J:=J;9O?.\L'aP%eT#eU#eU#eU#eU#eU#eU#eU#eU)aO9QC@K=@K?@LA@LA;PD.]M%eT#eU#eU#eU*aO9QD:QD*aO#eU#eU%eT(aQ.]M8SF>NB;PC;QD;PD>M@?K=>K==J<=J;=J;=J;>J<>K=>K<9QA)aO#eU%eT+]M4SC7O?8O=K<9QB)aO#eU#eU%eT'aQ)aO)aO)aO*aO*aP*aP.\L;OC@K@@LAAMBAMB?MB7TG(aQ#eU#eU#eU*aP:QD;QD/\M*aP*aO-\M6TF;PB>M?;OB/\L*aP.\L:OA>K<;K<8N>7O?9N>;K;=J;=J;=J;8QA)aO#eU#eU%eT'aP(aO,\L4SC9O=;K;K=?K=9QB)aO#eU%eT+^M5TE9PB9PB9PB9QC;RD;QD;PD?MB@LBAMCAMCAMBAMAK=?K=?K=9QB)aO#eU(aQ6TF>L>>K=>K=>L>;PC;RE;RF;QF;RF;RG;RH=QF@MDALB?MBK=9O?.[K)aO)aO'aP%eT#eU(aO7O>;H97O=(`O#eU'aP4RC;J:;H8;H8;K94Q@+\K(`O(`O'aP$eT#eU#eU$eT+\L8N==J;>K=>K=>K=:OA.\L)aO.\L;PB?K=?K=>L>7RE.]M*aP*aQ*aQ*aQ*aQ*aQ.]O7TI;QFM?>K=8PA)aO#eU#eU#eU#eU#eU)aO7O?(`O#eU%eT,\L8M=;H8;H8;H7:J97M=7O=7O=4RB+]L$eT#eU#eU)aO7P?=K;>K<>K;=J;K=?K=;OB.\M%eT#eU#eU#eU#eU#eU#eU%eT(aQ*aQ/\MK=9QB)aO#eU#eU#eU#eU#eU)aO8P@=J:8N=+\L%eT#eU'aP2TD7O=6O=6N=6N=7O=7M=:J9;J94QA+]L$eT#eU)aO7P?=K;=K;=J;=I:=J;>K<>K=>K=>K=>K=>K=9QC*aO#eU#eU%eT(aQ*aQ(aQ%eT#eU#eU#eU*aP;RE@MAAMB;RF*aQ#eU#eU*aO9QC>K=:OA-\L%eT#eU#eU#eU%eT-\L9O?=J;;K;4SC'aP#eU%eT'aP(`O(`O(`N(`N(`N-ZJ7N=9PB9QB:OA=L=>K=>K=:OA.\L*aP*aP.]N7TH;RF7TH.]M(aQ%eT#eU*aP;RE@MBAMB;RF*aQ#eU%eT.]M;PB?K==M>7RD+^M%eT#eU%eT+^M6RCM>?K=?K=>M>7SD-\L)aO,\L6RBK=@K>@M@@LA@LA@L@@L@@K>;PB.\L*aO/\L;QC@LA@LA;QE*aP#eU'aP6TE>L>?K=>K=>K==L=9O?8OA9O?K=>M>;PC:QD:QD9QD;PB=L==L=:OA9QC;PB>M@@L@@K?9QC*aO#eU%eT-\L:O@=L=:O@8QB9O?7O@8O@8OA9O>8M=;K;K<>K==L=:PB:QD;PB=L=9PB)aO#eU#eU)aO8PA9O>.[K)aO.[K7P?9O>4SC,\L)aO)aO)aO.[K9O>=J;=J:=J:;K;8N=7O=7M=;K:K<>K=:OB.\L*aP.\L:O@9O@-\L%eT#eU)`O8P@7P@)aO#eU'aP0XH,\L'aP%eT#eU#eU#eU'aP4SC;K;=J:=I98N=.ZK(`O+\K4RB;K;=J:=J:=I:8N=.[K)aO.[K9N==J;=J;>K=>K<=K;8OA9QB;PB>L?>K=>K=9QC*aO#eU#eU%eT'aP.[L:O@>K=>M>6TF(aQ#eU)aO9QB=L=6TF(aQ#eU)aO8P@8P@)aO#eU$eT&bQ$eT#eU#eU#eU#eU#eU%eT,\L9O==I9(`O#eU$eT+^M6RBK;>K<>K=>K==J;9O>.[K)aO*aO.]M7TF9QC9QC4UG(aQ#eU%eT+^M5TE;OB>M@>M@7SF,^N%eT#eU*aO9QC?K>:QD*aO#eU)aO8P@8P@)aO#eU#eU#eU#eU#eU$eT'aP'aP$eT#eU)aO8P?=J:=J:7O?)aO#eU#eU%eT+^M6RBK;>K<>K=>K=>K=>K==J;8QA)aO#eU#eU%eT(aQ*aP*aO(aQ%eT#eU(aQ6TF>M?>MA;QD7TH,^N%eT#eU#eU*aO:QD@L?;PB/\L)aO.[K9O>9O?,\L%eT#eU#eU$eT'aO+\L4RB2TD'aP#eU)aO9QB>K=>K=:OA-\L%eT#eU#eU%eT,\L9O?=J;=J;=J;>JK=9QD;OB=K=:OA-\M%eT#eU#eU#eU#eU#eU#eU#eU%eT.]M;OC>MB8SG.]M(aQ%eT#eU#eU%eT.]M:QD;PC9RD4UG2VF4SD;M==N@2WH'cQ#eU#eU#eU)aO8PA=K;=J;>J<>K=@K=@L?@L?@L@*aP/\L;OD>L@8SF.]N*aQ*aQ*aQ*aQ*aP*aP*aP.]M8TF?MB;PE.]N%eT#eU#eU#eU%eT,^N7SE9QD/\L*aP*aO)aO,\L4SD9O>;L=8N=7O?7O?8N=;J9.[L*aP/\M;PD@LA>MA7RE,^M%eT#eU#eU%eT-]M9OA>K=>K=>K=@K>@K@@LAAMBBMC#eU*aQ;RGAMB@ND=QFM?RHCNFCOFCOFCNEBMDBMDBMDAMCAMBALBAMB@MB@MA;QE*aP#eU%eT+^M5SD:OA=L==J:8N=-[K'aP$eT#eU#eU#eU(aO7O=;H8AMBAMBALB@LB@LA@LA:QD*aP#eU#eU%eT,^M7SD>M>>K=?K=?K=@K>@LAAMCBNECNFCNF=SJ>RIBOHDNFDNFDNFDNFCNFBNEBNDBMDAMBAMBAMB@MB@MA;RE*aP#eU'aP5TE=L=>K==J;K=>K=>K=>K=@K?@MABMDBNECNFCNFTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-21b_d.tga0000755000175000017500000003005410145416156015550 0ustar cedriccedric@@"fV"fV"fV"fV"fV"fV"fV"fV"fV"fV"fV"fV"fV"fV"fV"fV#fV#eU#eT#eU#eT"eU#eT$eT$eS&cR(bP+^M/[J3WH7SE;OA=N?>M>>L>@L>@K>?K??L??L??LA?M@?MA?MA?MA@LA?LA?MA>NA=NB;PC7SE4VH1ZJ-^M)aP'cQ&eS%eT#fU"fV#fU#eU#eU#eU#eU"eU"eU"eU"eU"eU"eU"eU"eU"eU"eU#eV#eV#eU#eU#eU#eU#eU#eU#eU"eV#eU#eT$eT%dR'cP+_M/[J3WH7SE;OA=M??L>?K=AK=AJ=@K>@K?@K?@K@?L@?LA?LA@LAALA@LA@LA?MA>MB;OC8RE5VG2YI/\M+`O(bQ'dS%dS$fU#fU#fU#eU#eU#eU#eU#eU#eU#eU#eU#eU#eU#eU#eU#eU#eU#eU$eT#eU#eU#eU#eU#eU#eU#eU"eV#eU#eT$eT%dR'cP+_M/[J3WH7SE;OA=M??L>?K=AK=AJ=@J>@K?@K?@K@AL@ALAALA@LAALA@LA@LA?MA?MB=OC:QE7TG4WH1ZK-^M*`O)bQ&cS$fU#fU#fU#eU#eU$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eT$eU$eU$eU#eV$eU$eT%eT%dR(bP,^M0[J3WH7SE;OA=L??K>@J=AJ=AJ=AI>AK?AK?AK@AL@ALAALAALABLAALAALA@MA?LB>NC;PD9SF6UG3WJ/\L,^N*aP'bR$eT#fU#fU#eU#eU$dS$dS%dS%dS%dS%dS%dS%dS%dS%dS%dS%dS%dS&dR&dS&dS&dS&dS%dS%dS%dT%eU%dT%eS&dR'cQ)aO-]M0ZJ4VG8RE;NB>L@?K?@K>AK>AJ>@J?@K@@K@@K@ALAALAALAALAALBALBALBAMB@LA?MBLA?K@@K?@K?@K?@K@@LA@LA@LAAMBAMBAMBAMBAMBAMBAMBAMBALA@LB=NBLA?K@@K@@K@@K@@K@@LA@LA@LAAMBAMBAMBAMBAMBAMBAMBAMBALA@LB?NB>NBMB@KA@KAAKA@KA@KAALBALBALBALBBMBBMBBMBAMBAMBAMBAMBAMABMAAMA@MA?NA>NBPC;QD8TF5WI3ZK0[M.]N-^O,_O,_O=L?=L?=L?OB>OB>OC>OC>OC>OC>OC>NC>NC=NC>NC>NC?MB?NC@MC?MC?MC?MC?MD@NE@ND@ND@ND@NDAND@NDAMCAMCALBAMBBLABLABLABLAAMA@MB>OB=PC:RE8UG6WI4XJ2ZK1[L1[L1[L=L>>L>=L>=L>=L>=L>=L>=K>=K>>K=>L>>K>>L?=M@=M@=NB=OB=OB>OC>OC>OC>OC>OC>OC>OC>NC>NC>ND>NC>OD?NC?NC?NC?ND?ND?ND?NE?OE?OE?OE@OE@OE@ND@NDANCAMCALCALCBLBBLBBLABLAALA@LB?NB>NCL>>K=>K=>K=>K=>K=>K=>K=>K=>K=>L>>L?=L@=M@PG>QF?PE>PE?OD@MDALCAMDBLBBLCALBALBALB@LB?MB?MB=OCK=>K=>K=>K=>K=>K=>K=>K=>L>>L?OF?NE?MD@LC@LCALBALBALB@LB?MB?MB>NC>OB=PC=PC=QD=PD=PE=PE@J<@JK=>K=>K>=M?NE?MD?MD@MC@MC@MB@LB?MB?MB?MB?NB?NB?NB?OB?OB?OC?OC@JL>>L>=L?;NA:PB8QD6TF4VH3XJ2ZJ2ZJ1[L1[L1[M1[M1[M1[M1[M1[M1[M1[M1[M1[M1[M1[M1\M1\M1\M1\M1\N0[N0[N0[N2[N2ZL3YL5WK7UJ9SH;QG=OF>NE>NE?MC?MC@MC?MC?MB?MB?MB?MB?MB?MB?NB?NB?NB?NB@J=M?;NA9PC8RE5TF3WH1ZJ/\L.^M-^M,_O,_O,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P-^P.]O/\O1ZM3XL6UJ8SI:QG;PFOD>ND=OC=OC>NB>NC?MB?MB@MA@MA@MA@MA@J>L>NC?NB@MA@M@AL@@L@@K=?J?L>=M?;OA8RD6TG3WI0ZL,]N+`O)bQ'dS%eS%eS$eT$eT$eT$eT$eT$eT$eU$eU$eU$eU$eU$eU$eU$eU$eU$eU$eU$eU$eT$eT$eT$eT%dT&dT'cS(bR)aQ+^P-]N.\N/\M/\M0[M1[M2ZL2YK4XJ5WI8TG:REOB@MA@MA@MA@MA?K=?J>L?>L?L>=M@;OB8RD4VH1ZJ-]M)aQ&dS&eT$fT"gV!fV!fV"fV"fV"fV"fV"fU"fV#fU#eU#eU#eU#eU$eU$eU$eU$eU#eU#eU#eU#eU#fU"fV"fU#fV#fV#fU#fU$fU$dT%dS$dS%dT%dT$dT'dT'cS(bR*`P.^N2ZK6WH9SF=PC?NB?NA@MA@MA>K=?J<>K=>K>>L>=M@;OB7SE4WH0[J,^M(cQ&dS%eT#fU!fV!fW!fW"fV"fV"fV"fV#fU#fU#fU$eT$dT$dT%dT%dT%dT%dT%dT%dT$dT$dT$eT#fU#fV#fU#fV#fV#fU#fU#fU#eU$dT$dT$dT#dU#eT&eT%dS'cR)aQ-^N1[L5WI9TF=PD?OB?NB@MAAMA>K=?J<>K=>K>=L>K=?J<>K=>K>=L>K=?J<>K=>K>=L>J=@I<>K=>K==L>=L?;OA8RD5VG1ZJ-]M*aO'cR'dR&dS%dS%eT%eS&dS&dS'cS'cR(bR*`P,^O.\M0ZL2XK4XJ5XJ5XJ5XJ5XJ4XK2XK0ZL.\N-^O*aP)bQ'cR&cS%cS$dT$eT$eT#fU$fU"fU"fV"eU#eU$eT%dS(bQ,_O1[L5XI9TF=PD?OC?NB@MBAMB>K=?J=>K=>K==L>=L>;N@9RC5UF2XI/[L,_N)aP)bP(cQ(cQ'cR'cQ(bQ(bQ)bQ*aP+`P-^N/[M2YK4WJ6UH8TG9TG9TG9TG9TG8TH6UH4WJ2YK0[L-^M+`O)aP(aQ'aQ&cS%dS%eT$eT%eT#fU#fU#eU#eU$eT%dS(bQ,_O1[L5XI9TF=PD?OC?NB@MBAMB>K=?J=>K=>K==L>=L>;N@9PA7SD4VG1YJ/[L-]M-^M,_O,_N+`O+`N,_O,_O-^O.]N/\N1ZL3WK6UI8SH:QF>K==L==L=:O@8QB6SE4VG2XI1YJ1ZK0[L0[L/\M/\L1[L1[L2[L2ZK3YL5WJ7UI9SG;QF=PE>OC?OC?OC?OC?OC>OD=L=;N>9O@7QB6SD5TF4VG4VH4WI4WI4XJ4XI5XJ5XJ6WJ6WI7VI8UI:SHOD?NC?NC?NC?NC?NC?NC=NC=OD;QE:RF8TG6VH5WI3XJ2YK.\M,^N*`P(bR%dS#eU"fV"eV"eV#fU$eT'cQ+_O1[L5XI9TE=PC?OC?NA@MAAMA;N@;N?:N>:N>;M=;L=;M=;M=:N?9O@9PA8QC8RD8RE8SF8SF8TG8TG9TG9TG:TG:TG;SG;RG=QF>PE?OD?OC@MB@MB@MB@MB@MB@MC>NC>NC=OC=OD;QE9SE8TF7UG5WH1YJ/[L,^O)aQ%cS#eU#eU#eU"eU#eT$dS(cQ,_N1[K5XH9TE=PC?OB?NA@MAAMA7RC7RB7Q@8P@9O?9N>;M=;M=;L=;M>;N?;NAPE>PE?OE>PE?OD@NCAMBAMB@LB@LA@LA@LA@LA@LA@LA@LA?MA?MB>NC=OC;M==L?=L?>L@>MA>M@>NA>NA?NC?NC@NC@NC@MC@NCAMCAMBALAALBALAALAALAALAALAALA@LAAK@@L@AL@@LA?MA>NB=PC:RD6UF3XI/[L,^N(aQ&cS%eT%eT%eT&dS'cR)bP-^M2[K5WG9TE=PC?OB?NA@MAAMA0ZI0YI2XG3VF5SC7QA9O?:M>L>>K>?L>?L??L??M@?M@@MA@MA@MB@MBALBAMBALBALAALAALAAKAAK@AK@AK@AK@AK@AL@AK@@K?AK?@K@?L@>MA=OA;QC7TE4WH0ZK-]N)`P'bQ&dR&dR&dR'cR(bQ*aP.^M2ZK5WG8SEOA?MA@LA@LA,^L-]L/[J0YI3VF6SC8Q@:N?=L==K=?K=?J=@K>@K?@K>4up4up4vq=WK@MA@LA:_X4ur4ur8icALAALA@LAAL@AL@5uq5uq4uq=VK@L@@K?AK>@K?@K?9`W*)'1h]2XI/[L+^N)aO(cP(cP${o#}$|*gY0\L3YJ5VG9SDNA?MA@LA@LA(bP)aP+_M.[K1XH4UE8QB:N?=L==K=?K=?J=@K=@K=@K>"@MA=VL+@LA@LA@LA?L@?L@4uq@L@@K?AK>@K>1~{'1XJ/[L-]L,_M,_M(z2ZJ5WH7TE:QCNA?MA@LA@LA&dR'cR)aO,]L0ZI3VF7RB:N@=K=>K=?K<@JM@>M@3vq?M@?K?@K=@K=,4VG/rh7TF9RD;PB=OA?M@?L@@L@@LA%eS&dS(cP+_M/[J2VF6RC:N@=K=>K=?K=@J<@K<@L<@K>@L>0|9`X>MA=MA3vr>N@?L??K>9^T$=M>#2eZ.{t:RD;PB=NA>N@?L@@L@AK@@L@$eT%dS'cQ+_M/[J2VF6RC:N@=K=>K=>K=?K=?L=?M=?L>>M?=N@!)M@>M@?L@?L@@L@@L@$eT%dS'cQ+_M/[J2VF6RC:N@=K=>K=>K=?K=?L==M==N@M@>M@?L@?L@@L@@L@%eT&cS(bQ+^M/ZJ2VF6RB:N?K=>K=>K=>L>MA>M@>M@>MA>M@?M@?L@&dS'bR)`P,]L0YI3UF7QB:N?K=>J<>K>=L>;N@:QB8RD#%0[K0[K0[K0[K0\K0[K:N@9^S=L==L>=L>&1vqMA=NA>MA=MA>MA>M@(bQ)`P+^N.ZK1WH4TE7QA:N>K=>K=>K=>K=0wq;OB;PB,!.>K<>K=>K=>K=>K=:VI!2md9QD8SD8SE8SE8SE8SF8SD9RD:PB0ZJ0YJ2WH3UF5RD7PB:N?;M=K<>KJK=>J==L>;L=K<>KK<>J<>K=>K>;N@:PA7SD3VF0YI,]M*`O(bQ'cR%eT$fT$fU$eU$eU#eU#eU#eU#eU#eU"eV#eU#eU$eT%dS'cQ+_M/[J2VF6RC:N?=L=>K<>KK<>K==L>=L?;M@:PB7SE4VG1YJ/\L-^M,_N,_N,_N,_O-^M/\L1YI;N@;N@:N?:M?;L=;N@9RC5UF1XH.[K*_O(bQ&dS%eT#fV"fV"fU"eU"eU#eU#eU#eU#eU#eU"eV#eU#eU$eT%dS'cQ+_M/[J2VF6RC:N?=L=>K<>KK<>K==L>=L?;NB8RD5UG2XI/[L+_N)aP(cQ(cQ(cQ(cQ)aP+`N/[K=L>=L>=L=>K<>KL==M>K=>K=>K==K=>J;?J<>J<>J==K==K=>K<>KL==M>K>>K>>K=>K=>JK=>K>=K==K=>K=>K=?KM>=N?;OA9QC5UG1XJ.[L+^O'aQ%dT$eU$eU$eU$eT%dS'cQ+_M>K>>K>>K=>K=>JK>>K>=M?=K=>K=>K=?K>?K>?M>L?>L?>L>>L>>K=?K==L>=L?L>>K=?K>>L>?L>>L?>N?;PB9QC7SE5VG0ZK-]M*_O(aQ%dT#eU"fV"eV"eV#eT%dT'dQ+`M=N@=M@=M?=M?=L>>L>=M@=M@?K>?L>>L?>L?>M@M@>M@?L>?K>?L?>M@=MAMA>MA>M@>MA?L@?M@>NALA?M@>MA>MA>MA>OB;PD9QE7SF5VH0YJ.\M,^N*`P'cR&dS%dT$eT#fU"fV"fV#eU#eU$eT&dS(cP,_M/\L/[L0[K0[K0[J0[J0[J0[J/\K.[K-\M,]N*_O)aQ'cS&dS$eU#eU#eU#eU#eU$eU%dT(aQ*_O-]L0YJ4VG6SD9RC;P@=N@>M?>L?>M@?L@?L@?MA>MA=NB>NB=NCM??L??L?>MA>LA>MA>NB=OB;PDM?@L??L??L?>MA>NBM@>M?@K?@L@?L@=NB>>...)))))))))444FFF444))))))+++555DDDCCC555111999OOOXXXZZZ[[[[[[XXXQQQMMMJJJGGGIIIMMMMMMMMMRRRXXX[[[XXXQQQNNNNNNNNNOOOPPPPPPRRRXXXWWWPPPMMMNNNSSSPPPOOOPPPPPPQQQQQQQQQUUUSSSNNNLLLKKKLLLNNNLLLFFF777000+++)))333EEE333)))+++555FFFNNNFFF111)))111IIIWWW[[[[[[[[[ZZZXXXUUUQQQMMMLLLGGG777333;;;RRR[[[SSS<<<333333333333333333<<>>KKKZZZXXXTTTPPPEEE000))))))111IIIWWWQQQ:::222222888IIIRRRVVVRRRNNNMMMOOOMMMLLLKKKJJJKKKPPPXXX[[[SSS:::+++)))+++777KKKLLL333)))///DDDVVVZZZXXXMMM222)))***///666GGGPPPXXX[[[ZZZXXXOOO;;;333333222333ZZZXXXUUUQQQFFF000))))))+++999PPPUUUMMMJJJKKKOOOVVVZZZSSS<<<333888HHHLLLIIIEEEHHHKKKPPPXXX[[[YYYKKK111))))))+++888DDD222)))+++:::SSSZZZXXXNNN777+++---999CCCOOOPPPOOOPPPPPPQQQTTTQQQMMMAAA///)))ZZZYYYWWWTTTKKK666+++))))))333LLLSSSQQQPPPQQQTTTWWWYYYPPP333)))111GGGKKKAAA444111222;;;RRR[[[\\\SSS:::+++))))))111???111))))))111HHHOOOPPPQQQDDD///***///666AAA888333333333;;;PPPWWWKKK777+++)))[[[ZZZYYYWWWTTTIII888333333888FFFHHHGGGJJJMMMQQQUUUXXXPPP333)))222HHHEEE333***))))))444PPP[[[\\\YYYLLL777+++)))000>>>666111222333333333;;;OOOKKK222))))))+++...+++)))))))))222JJJJJJ777+++))))))[[[[[[ZZZYYYXXXVVVQQQOOOOOOIII888111555DDDJJJNNNTTTXXXPPP333)))333EEE777+++))))))+++:::SSSYYYSSSPPPMMMAAA///)))000AAAEEEHHHKKKFFF111)))333NNNOOO888+++)))))))))))))))***...555???555+++)))))))))\\\[[[[[[ZZZYYYYYYYYYZZZYYYOOO333)))///BBBJJJNNNTTTXXXPPP333)))333EEE333))))))+++777JJJPPPKKK:::333333111+++)))000DDDMMMQQQRRRGGG111)))333NNNVVVKKK999333333333222111444>>>???333+++))))))+++111[[[[[[ZZZYYYXXXVVVQQQOOOOOOGGG111)))000DDDJJJIIIKKKPPPMMM333)))333FFF333))))))000HHHNNN;;;111+++)))))))))))))))111FFFIIIIIIFFF666+++)))333MMMXXXWWWRRRPPPOOONNNKKKHHHEEEGGGBBB///))))))+++777JJJ[[[ZZZYYYWWWTTTIII888333333111+++)))111HHHIII888222:::HHH:::222:::GGG333))))))222KKKKKK222)))))))))+++111333333:::FFF999222000+++)))***666MMMWWWYYYZZZXXXQQQNNNMMMOOOLLLJJJEEE777222333999LLLYYYZZZYYYWWWRRRFFF555+++)))))))))))))))222KKKKKK222)))222HHHLLLKKKNNNLLL333))))))111HHHHHH111))))))+++666HHHNNNNNNPPPLLL333))))))))))))...AAAMMMMMMNNNPPPJJJ999333999LLLPPPNNNMMMKKKIIIEEEGGGPPPYYYZZZXXXUUUKKK666+++))))))+++000333333999GGGEEE000)))111FFFNNNQQQSSSNNN:::222111666FFFGGG555+++)))000FFFRRRUUUVVVXXXQQQ;;;333222111000666GGGHHH888333333111+++)))333LLLTTTTTTTTTSSSIII888333<<>>AAADDDBBB666111777HHHJJJIIIKKKMMMOOOOOONNNLLLIIIFFFGGGLLLGGG111))))))))))))+++888OOOWWWVVVPPPHHH666+++)))444QQQZZZXXXUUUKKK888111555AAAKKKSSSXXXRRR999+++))))))***333CCCCCC555111222888@@@666000000777HHHKKKIIIHHHEEE777111222333;;;RRRYYYWWWTTTQQQPPPQQQLLL999222111000000666GGGRRRPPPIII999111+++))))))444QQQZZZYYYWWWPPPDDD???BBBMMMTTTWWWYYYPPP444))))))+++444BBBIIICCC000))))))+++...+++))))))222JJJTTTRRROOODDD000)))))))))333PPPZZZYYYUUUMMMJJJKKKJJJFFFHHHGGGEEECCCGGGOOOMMM:::111+++)))))))))+++:::SSS[[[XXXPPPGGG777111888NNNWWWYYYZZZQQQ444)))+++666GGGOOOOOOIII666+++)))))))))))))))+++888OOOVVVTTTQQQHHH777111222333;;;RRR[[[ZZZRRR:::222222222888GGGMMMKKKIIIKKKOOOJJJ222)))))))))+++111:::MMMYYY[[[SSS<<<111+++)))333NNNYYYZZZ[[[SSS<<<444999KKKUUUUUUTTTSSSIII666+++)))))))))+++777KKKWWWXXXVVVTTTOOOJJJIIIKKKMMMRRRXXX[[[[[[PPP444)))))))))+++666HHHKKKIIIKKKOOOLLL:::333444444:::KKKSSSYYY\\\\\\QQQ444)))))))))333OOOZZZ[[[[[[YYYSSSQQQRRRXXXYYYXXXXXXXXXVVVIII111)))))))))111JJJXXXZZZYYYXXXWWWUUUTTTUUUWWWXXXZZZ[[[\\\\\\QQQ444))))))))))))111GGGKKKJJJKKKPPPSSSPPPPPPQQQQQQSSSYYY\\\\\\\\\TRUEVISION-XFILE.gl-117-1.3.2/textures/gl-50_c2.tga0000755000175000017500000003005410145416156015471 0ustar cedriccedric@@WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVVVXY[_fls{Ƅʋ͑ϖљӚәӖёόΆˀ{xwwuuuvvWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVWZ\_dlszƃɋ͑ЖјӚәӖҒϋͅ~wqnlljjjkkWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXY^bflu}DŽʋ͒ЗҚӚӘӕёЋ̃{tmgdbb```aaWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVVWXY\bglt|DŽʋ͑ϗҚӛәӖѐϋ̈́{smga^]][[[\\WWWWWWWWWWWWWWWWWWWWWWWWWWWVVVVXY[_flr{Ƅʋ͐ϕјӚӚӗґϋͅ}tlgb][ZZYYYZZWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVWZ\_dlszƂɋ͑ЕјҙәӖҒЋ̓}ulfb^ZXXXXXXXXWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXY^bflu}DŽʋ͓ЗҚӚәӗёЌ΃{sld_\ZVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWVVVVVVWXY\bglt|DŽʋ͑ЗҚӜӛӗғЌ΅{slf_[YXUUUUUUUUUWWWWWWWWWWWWWWWWWWWWVVVUUUMM|Y[_fh`qʋ͑ϕҚӜԜӚҔЎ·~tmgb\YXWVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWVVVVCi~-7:-7:Fk_dlIcq-7:3?DfϖҙӜԜԜәёώwmgb^YXXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXS9P\-7:-7:-7:1>Cbll-7:-7:-7:-7:Xmwʝ՞ԞԜӘя΅|qga]ZWVVWWWWWWWWWWWWWWWWWWWWWWWWWWVWWWWXJv0=B-7:-7:-7:-7:-7:FbptBW`-7:-7:-7:-7:-7:CRX՞Ԝӗэ̓ynd^ZXVUVVWWWWWWWWWWWWWWWWWWWWWWWWVVVWWXY-7:-7:-7:-7:-7:-7:-7:-7:\}-7:-7:-7:-7:-7:-7:-7:L]d՞ԛӖь́wlb]ZXVUVWWWWWWWWWWWWWWWWWWWWWWWWWWVWXY[\Jr-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:5@D՝Ԛӕы́wlb]ZXVUVWWWWWWWWWWWWWWWWWWWWWWWWWWXYZ]`beRv-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:5@D՞՝Ԛӕыuj`[ZXVUVWWWWWWWWWWWWWWWWWWWWWWVVVWXZ]aeimsX{-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:5@D֡՞՝Ԛӕъuj`[YXVUVWWWWWWWWWWWWWWWWWWWWWVVVVXY\_ekpv{j-7:-7:-7:-7:-7:-7:-7:-7:-7:k¢֠՞՜Ԛӕы̀uj`[ZXVUVWWWWWWWWWWWWWWWWWWWWWWVVWZ\`dleVuNgsEXa3?D-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:5@DL]dj~ӕы̀vka\ZXVUVWWWWWWWWWWWWWWWWWWWWWWXXY^bfluG^i-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:K\dӕы̀vka\ZXVUVWWWWWWWWWWWWWWWWWWWWWXYZ\bgmt|b-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:iӕы̀uj`[ZXVUVWWWWWWWWWWWWWWWWWWWWWYZ\_fms{Ƅʄ-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:-7:ӕъuj`[YXVUVWWWWWWWWWWWWWWWWWWWWW[]_dltzƃɋ͐Pcl-7:-7:-7:-7:-7:\l-7:-7:-7:W8P\-7:-7:Dj~XXXX-7:-7:-7:-7:XSM|UX9P\-7:-7:S-7:-7:>]lX>]l-7:-7:SXXXXXXXXWWWWWWWWWWWWWWWWDi~-7:-7:8P\W-7:-7:-7:-7:-7:W8P\-7:-7:Ci~VVVV-7:-7:-7:-7:Q;Vc8P\=\lFo-7:-7:0=BKz-7:-7:Ci}VCi}-7:-7:KzVVVVVVVVWWWWWWWWWWWWWWWWDi~-7:-7:8P\W8P\8P\8P\8P\8P\W8P\-7:-7:Ci}VUUUJzJzJzJzP-7:-7:-7:-7:-7:-7:EoJz-7:-7:Ci}UCi}-7:-7:JzUUUUUUUUWWWWWWWWWWWWWWWWFo-7:-7:-7:TWODi~L{RW8P\-7:-7:Ci~VVVVVVVVV-7:-7:2CJCi~Ci~NVKz-7:-7:@btV@bt-7:-7:NVVVVVVVVWWWWWWWWWWWWWWWWT0=B-7:-7:2CJDi~0=B-7:-7:2CJW8P\-7:-7:Di~WWWWWWWWW8P\-7:0=B8P\8P\8P\FoW-7:-7:2CJR2CJ-7:0=BWWWWWWWWWWWWWWWWWWWWWWWWWWFo0=B-7:-7:-7:-7:-7:-7:IuW8P\-7:-7:Di~WWWWWWWWW;Vd-7:-7:-7:-7:-7:Di~W@bt-7:-7:-7:-7:-7:Di~WWWWWWWWWWWWWWWWWWWWWWWWWWWR@bt8P\8P\8P\>\lL{WWFoDi~Di~L{WWWWWWWWWL{Di~Di~Di~Di~Di~L{WWFo;Vd8P\8P\FoWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWTRUEVISION-XFILE.gl-117-1.3.2/textures/gl-50_ch.tga0000755000175000017500000003005410145416156015557 0ustar cedriccedric@@՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԓАϐϐϐϐϐϐϐϐϐϐϓМԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԋofffffffffffo‡ːϓМԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWWWZcfo‹͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWZl˓Мԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWZco‹͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԓАϐϐϐϐϐϐϐϐϓМԟ՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԓАχofffffffffo‹͜ԟ՟՟ՔoZWWWWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՜ԓЇofcZWWWWWWWWWZl͜ԟ՟ՐfWWWWWWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟՜ԋocZWWWWWWWWWWWWWZl͜ԟՐfWWWWWWWWWWWWWWWWWWWWWWWWWZo”П՟՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWZl͜ԐfWWWWWWWWWWWWWWWWWWWWWWWWWWb̜ԟ՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWWZoχbWWWWWWWWWWWWWWWWWWWWWWWWWWZo”П՟՟՟՟՟՟՟ՔoZWWWWWWWWWWWWWWWWWWWWfoZWWWWWWWWWWWWWWWWWWWWWWWWWWWfϟ՟՟՟՟՟՟՟ՐfWWWWWWWWWWWWWWWWWWWWWffWWWWWWWWWZcfcZWWWWWWWWWWWWWWfϟ՟՟՟՟՟՟՜ԇbWWWWWWWWWWWWWWWWWWWWWffWWWWWWWWW_{Ǎ·offcZWWWWWWWWWWfϟ՟՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWWWWWffWWWWWWWWWZo”МԓАϐτbWWWWWWWWWZo”П՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWWWWWWffWWWWWWWWWWfϟ՟՟՟ՐfWWWWWWWWWb̜ԟ՟՟՟՟ՔoZWWWWWWWWWWWWWWWWWWWWWWWffWWWWWWWWWWfϟ՟՟՜ԇbWWWWWWWWWfϟ՟՟՟՟՟ՐfWWWWWWWWWZcffcZWWWWWWWWWfoZWWWWWWWWWfϟ՟՜ԋlZWWWWWWWWZo”П՟՟՟՟՜ԇbWWWWWWWWZlːύ{_WWWWWWWWZoϋlZWWWWWWWZo”П՜ԋlZWWWWWWWWZl͜ԟ՟՟՟՟ՔoZWWWWWWWZl͜ԟՔoZWWWWWWWWb̜ԜԋlZWWWWWZl͜ԜԋlZWWWWWWWWZl͜ԟ՟՟՟՟՟ՐfWWWWWWWWb̜ԟ՟ՐfWWWWWWWWWfϟ՟՜ԋofffffo‹͜ԜԋlZWWWWWWWWWb̜ԟ՟՟՟՟՟՟ՐfWWWWWWWWfϟ՟՟ՐfWWWWWWWWZo”П՟՟՜ԓАϐϐϐϐϓМԜԋlZWWWWWWWWWZo”П՟՟՟՟՟՟՟ՐfWWWWWWWZo”П՟՟ՐfWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՜ԇbWWWWWWWb̜ԟ՟՟ՐfWWWWWWW_{ǍΓМԟ՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟ՔoZWWWWWWWfϟ՟՟՟ՐfWWWWWWWZcfo‡˓Мԟ՟՟՟՟՟՟ՔoZWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟ՐfWWWWWWWWfϟ՟՟՟ՐfWWWWWWWWWWZco‡ːϐϓМԟ՟՟ՐfWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟ՐfWWWWWWWWfϟ՟՟՟ՐfWWWWWWWWWWWWZcffo‹͜ԟ՟ՐfWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟ՐfWWWWWWWZo”П՟՟՟ՔoZWWWWWWWWWWWWWWWZl͜ԟՐfWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟՟ՐfWWWWWWWb̜ԟ՟՟՟՜ԇbWWWWWWWWWWWWWWWWZl͜ԐfWWWWWWWb̜ԟ՜ԓАϐϐϓМԟ՟՟՟՟ՐfWWWWWWWfϟ՟՟՟՟՟ՔoZWWWWWWWWWWWWWWWWZo”АfWWWWWWWb̜Ԝԋofffo‹͜ԟ՟՟՟ՐfWWWWWWWfϟ՟՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWfϐfWWWWWWWZlˇlZWWWZl͜ԟ՟՟ՐfWWWWWWWfϟ՜ԓАϐϐϓЙӋlZWWWWWWWWWWWWWWWfϐfWWWWWWWWZccZWWWWWZo”П՟՟ՐfWWWWWWWfϜԋofffo‹͙ӋlZWWWWWWWWWWWWWWfϐfWWWWWWWWWWWWWWWWWWfϟ՟՟ՐfWWWWWWWf΋lZWWWZl͙ӋocZWWWWWWWWWWWZo”АfWWWWWWWWWWWWWWWWWWfϟ՟՟ՔoZWWWWWZo‡oZWWWWWZo”МԓЇofcZWWWWWWWZl͜ԔoZWWWWWWWWWWWWWWWWWfϟ՟՟՜ԋlZWWWZl͍fWWWWWWWfϟ՟՜ԓАχofffffffo‹͜ԟ՜ԋlZWWWWWWWWWWWWWWWWfϟ՟՟՟՜ԋofffo‹͙ӇbWWWWWWWfϟ՟՟՟՟՜ԓАϐϐϐϐϐϐϓМԟ՟՟՜ԋlZWWWWWWWWWWWWWWWfϟ՟՟՟՟՜ԓАϐϐϐϐχlZWWWWWWWfϟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԋocZWWWWWWWWWWWWZo”П՟՟՟՟՟՟՟՟՜ԋocZWWWWWWWWfϟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԓЇocZWWWWWWWWWZl͜ԟ՟՟՟՟՟՜ԓАχlZWWWWWWWWWWfϟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԓЇofffffffffo‹͜ԟ՟՟՟՟՟՜ԋofcZWWWWWWWWWWZo”П՟՟՟՟՟՜ԓАϐϐϐϐϐϐϐϐϐϐϐϓМԟ՟՟՜ԓАϐϐϐϐϐϐϐϐϓМԟ՟՟՟՟՟՜ԋlZWWWWWWWWWWWWZl͙ӓАϐϐϐϐχoffffffffffffo‹͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWWWWZl͙ӋofffffcZWWWWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԋlZWWWWWWWWWWWWZl͙ӋlZWWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟ՇlZWWWWWWWWWWWWZl͜ԔoZWWWWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՜ԓАϐϐϓМԟ՟cZWWWWWWWWWWWZco‹͜ԟՐfWWWWWWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՜ԋofffo‹͜ԟWWWWWWWWWWWWZl˓Мԟ՟ՐfWWWWWWWWWWWWWWWWWWWWWWWWWZo”П՟՟՟՜ԋlZWWWZl͜WWWWWWWWWWWZl͜ԟ՟՟՟ՐfWWWWWWWWWWWWWWWWWWWWWWWWWWfϟ՟՟՟ՔoZWWWWWZo”WWWWWWWWWWWb̜ԟ՟՟՟՟ՔoZWWWWWWWWWWWWWWWWWWWWWWWWWfϟ՟՟՜ԇbWWWWWWWfWWWWWWWWWWWfϟ՟՟՟՟՟՜ԋlZWWWWWWWWWZcfcZWWWWWWWWWWb̜ԟ՟ՔoZWWWWWWWfWWWWWWWWWWWb̜ԟ՟՟՟՟՟՜ԋofffffffffo‡ːτbWWWWWWWWWWZl͜ԟՐfWWWWWWWWbWWWWWWWWWWWZl˓Мԟ՟՟՟՟՜ԓАϐϐϐϐϐϐϐϐϓМԟՐfWWWWWWWWWWWZo”МԇbWWWWWWWWZcWWWWWWWWWWWWZco‹͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟ՐfWWWWWWWWWWWWbʇlZWWWWWWWWWWWWWWWWWWWWWWWWZlːϐϐϐϐϐϐϐϐϐϓМԟ՟՟՟՟՟ՐfWWWWWWWWWWWWZccZWWWWWWWWWWWWWWWWWWWWWWWWWWZcffffffffffo‹͜ԟ՟՟՟՟ՐfWWWWWWWWWWWWWWWWWWWWWWWWWWWcZWWWWWWWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟ՔoZWWWWWWWWWWWWWWWWWWWWWWWWWWbWWWWWWWWWWWWWWWWWWWWWWWWWWZo”П՟՟՟՜ԇbWWWWWWWWWWWWWWWWWWWWWWWWWWoZWWWWWWWWWWWWWWWWWWWWWWWWWWfϟ՟՟՟՟ՔoZWWWWWWWWWWWWWWWWWWWWWWWWWԋlZWWWWWWWWWWWWWWWWWWWWWWWWWfϟ՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWWWWWWWW՜ԋocZWWWWWWWWWWWWWWWWWWWWWWWfϟ՟՟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWWWWWZc՟՜ԓЇlZWWWWWWWWWWWWWWWWWWWWWZo”П՟՟՟՟՟՟՜ԋoffcZWWWWWWWWWWWWWWWWZl˟՟՟՟՜ԋlZWWWWWWWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՟՟՟՜ԓАϐχocZWWWWWWWWWWWWWZl͜ԟ՟՟՟՟՜ԋofffffffffffffffffffo‹͜ԟ՟՟՟՟՟՟՟՟՟՟՟՟՜ԓЇofffffffffffffo‹͜ԟ՟՟՟՟՟՟՜ԓАϐϐϐϐϐϐϐϐϐϐϐϐϐϐϐϐϐϐϓМԟ՟՟՟՟՟՟՟՟՟՟՟՟՟՟՟՜ԓАϐϐϐϐϐϐϐϐϐϐϐϐϓМԟ՟TRUEVISION-XFILE.gl-117-1.3.2/textures/glitter.tga0000644000175000017500000004005410145416156015731 0ustar cedriccedric@@ ;6QL#Q m @mhi63}C'YA;9?H:'w 2*Yr'fM-f;#~,Q#YPX1YD0A463#MS[~H;# 5-QTY-60e,&8| /gtdR~0,oAqovm; '67A Y:[bG,+ z,j !@v58~b8SMqW,{r\ E =2H57#@QOD2!1OE, [ o,=,! 15O((QU: B+p@O&I g+ A-;Q 5XR<01; B ~6 Q!(kok (~B.QYYm6#U[2 G%Y5HfB6e0 ?#-8Y/=1-P Yfl9$5&Bd+0;+H=B+8 2Xo[6'Y6d#,B,D;oBO(M; D  .@FcI^3R 'D Y.6{df)#6--+\q[446#o:?G \BB D'{ -i] ;A{   &i3d O !bw\A,GB  *;)9;',QY8].i(N~;OU??bO  ,G+j~*;2d~XBAg4\U@;B!HK[ 8U+ =HHA3Y -q $=M  !b4,gw 1M 5&r{&&r' M4,Z2#F' oI\{=-'+6 4'Mrgp g B}+[DF+B=\ZgH?E$O#~,&kZ 056 \[Y+Zo,|E;&)#\!GMdi G5,'gD8AoL\muD88M8j,D^r;@\6;:6wY'&!k-(;= G M dc} @M;r !!-#LDAo4bp~\}&b02 , Rgw~:6 +mbEX;Y(  "=X22-=D;B\!Hr&,Og 5 !O;+,HZq +F##' P{;BGb4.43v& E,U  Og;' <2g2 @"H~Z&A4GAl0O0(F&2gG,RFwYQMHD(6LRUi [" 5 3H(' 'wd@jB=A@2AGO#O'o ;dNON)P!+ q{Q@o 'i\M(1d&3b'b8,R|D_Er:d{q*+g 4?@BD  = L2{gL?MB-3B Y.YSR.,d?;- \QR;D@@v,1 M,-0+"KDDi.&A ( "'{bQ:mG, }&,8 M~05gYb ,JG,4 H!:Ow o4gO Og 'NBDL+r5 ds -QO'+4G  ;fD:Z&ND4X56q,B#z -Q7!r4gq8@j )i 3\(d R'.]562 \#gX6Rb2NY 2D,[byD.Y@HAB{@&m b+0G@>.6dA# +!#"gm{&!Y 8{&Q~@6[ FN\ TRUEVISION-XFILE.gl-117-1.3.2/textures/grass1.tga0000644000175000017500000060005410145416156015461 0ustar cedriccedricƽʾݟ㨶଺շиڵׯҾոӻѻ˾찾ϻ׾׳̴ĸĮǴݿ蓥οᦱи垮ιۿͶٷʧٓӿֿˣܶưҧ⬷׻ⷿǷͲμҖ׼稶㭻ݴ魻ۿܲܝ鵼ж»μܫݻϾݺ֦ϴ⳼׵ؿٹ¶߼ƽصռ۶¯۸Ȳط᭻ƚ̹¨Ҵֺ첾ֲԮˮΩлڼ͹첾ռ۰ڱƜͻ۰۷Ѿా娶տ밾䯽ٸŻֻݽ̸᪸Ծ᰾׼ݾ֮׿Ժ稶޶檵Яȴ䤱ղ߶ºቜ޺ưԻҸĹݽ尾䭻ܵ⣳zձ׸ĶغԬШꭻѴ³ʴֳֿ׿̼ɻcww٥ׯݵޯ֙ۼ޿¸ļѿ׭Ѿˮʿٲݶ޹ܽŸĴϼܱں«띭˥ҽ꧴͹飳ܺѹŹųѥϺɾ⬺ܸҸĊƱҰкӸײ䱿ѽإڼͺϺž橷۾߾寽گ঵Թᬺ䰾ܼٱ߼޽ҽߩ׺밾վ¹î߿ܺޭҺ䭻󬺺ڽѶϼְܽాﯽ఺ܸⱿոǺϼ߱¿媸ܾƶΫݲɿظ϶»Ӹе˽׺쩷߿¿ݷ᭸󳿿ڻܪ౿ԻζߺݷٿҶ޶ֿ屿θĻݸ;ͼҺ䪸밾ϬݼƿϮ𭻻θ󆙙妵쯽ƌ礱Ѹⰾ寽ָӽ쬺ƺ̸Ϻƺӯޯ۷ܿ鮼Ϻǿ۽ν̳ڻԿϽʸּݺӲ߸ѽӸĹżαܶ²Ҹڳ޺겿бऴҬۿҧܶܿӸԲھܭʿޛؿᱽҺʝuŸܽԼݻȰ޳٬лּǿٽմ¶婷׼ǰѭڶ¶ʺڭ»ͼɤ̺Ƭ߿̸Ϻн޺޼ÿ־ӱضʣ᫹ƺ筻žٵڷױ毻رϡۺǚֶܿаұؿмٷԼ߽ܺԶغ𫹹ڿͦ͹򩷷ֿ̺뭻ϾƷøļɾݿչʿ׻·ìۿ׼ɬ̣ۻʼɷا笺ռѯ·ᘨ멷馴ط㨶֗ظܰݵںϿ޽ڸϷʹʾⰾΪ׿ܸĹݲ筻ηڿ׿ݸذּܿȯϾ͸ѻ꯽۸̹ҽغӼ񪸸˿Ķ󞮮ٶݺ͸򰼼˷ڸĹڼظ䮼ܛ߰զؿߨֹŲϲ׼㢰׾ڵ񰾾ٿ̹ݿͱҿΰɰ窸穷˻Կֽεּͫ峾㲺槵б۹֬ϡӸḿ͵֬DzЯ⮻߹ؿذ̬ͫԿ秵ОݽѼɸĿٲϸܻԷε譻׸ĿԼɮںҰ۶ٰܷƲѶҿ䰾۾頮𚪪ڽ۾힪᭻銝筻׭⢲ٙ۽˾۸飳ҽͳ譻㭻ԺǾɯޡӺѶ觴Կӛͨ㭻޽߿ʺ򭻻̔ʹڜٽ۽ü۪߲򨶶ؿ޲ߺĸ꠰۽̷౿ʹػϭݮ۪Уط׹ؽ̳ѽʻǭܼݹźಾٵſҮݿзçѺƿ᫹̹ؽǽʼԺشϜֽ̽˞̴ۼѼƿϳӺƸĺлؽܶ½ʸĿۻ퓥ۿƶϯɻͼɿպƿֳͼ޴ؼ䰾ڜһ߯ǼڬѲҟֿҲνշپԭͽ≜شȪͿٻͫӣڷ뭻死޺ֲִܾͿƽӽٲڧڸмϿºԶڿߺضݷٺͼٱ㰾γٷտḿ̹ϠٳʹñξϸشڿڵغϽٲ箼譻ܳݼإ˻䩷п׼ӼȺ߿װլľձ㱽˶ý䟯׷ݸߺưڰ׿ճ߿ۺٺխۼš˲諹ѯ߿ΡͲݪɹ벾ٶº뮼󲾾ݽʼ߻ͽѯ߸ͳٽ⩷ꙩ׸޺ںԽӦ視ֵޙ۪ͱ̶ʽ׵ȶ񩷷л즵Ͼκܷҷ笺߿޽Ͽ̲қ䰾ճɹټٻdzׯݴܺDZ𪸸ƹֿڴ¾ҽҾ󯼼ѹزù¼ƽʰݫç­ָ᪸ݵǽ򢯯սѻźŜ߯ﯽϽϺܼҤ̭ͻ蚪񨶶׸˴Ѷݻǻսʷվƪɹ±ѺԀثܻ߷׼ӽҭ߹ػ㜬Ϻزݓ禵ʣӼɷüɼɸپ˻뭻ڱ˿ȲϜ¶úǹؤļ㊝宼بϸ稶ǸĽʹջӲ䰺骸ܾ׿ͶͿ̨߶Ѵ¬쬺ݴɺ˹ӿ̘ҽжÿڣ߻ڿ󮼼۹ЗѺżžٰ۳޾нۧ➮ӸħܺǽŸڃ䲾ٵҭ־Ӿù䱿ؽض׮Үؿ¸ϰɠҸĬ̲ϲ߽ݶзëؼᘨؾȭһٻĪӻλǾ۷ҽݩϿѴдصذѭϳ׿̸ߦл߷عԹ߸޾ֹƱʽڶ˸ۺѿʭٲ׽ʼܹݶ৵ޫҺ񱿿יֽʼӺҼᢲݰ֮г簻ؽᱽ۽ԲѭدDzޮƮٳѤùݼɼɺƿϽȲꤴӾշϽʷܲλЮųؿüռѼԭֽ̦汹᯽Ϳݻ̮㣮ܺ谾ͬҮ޹޿ٱڰҼ׾ҵϻܺؿֿұ݌޼ɲ۟ž񬺺ٗܺضӱֽٻںơ޺ƽռֺǪνͭپͽʶ¿ϸڲ˽Ͼ˿ݾͤǰɿ۹ɸؠֳԝ޻ϢͰϿͽӿ̰Ӷѻ㢯ػټճֱ۸۸Ķ̠𪸸ݿۿ״ڿӽʺľuܻ׼Լͼּ谾஺ߟ߱԰ٲ۶­ܢ䲽ԯഽܢ˫ݺ؝Ϧ޿̼ܷͺӴܩϣڼ٦䯽ʶШкӴ˪޲˽˲簾ͮԽҦϭ޵ȼ᭻ппӚٵԺ̤툛޼뭻ɼɳӡְܻѼѹŸĮѾɿȺ̳޽ޟֿߨٿɿӶµݢѽ֮ɿĹжҶϩٿȼ󦴴о˻ںݽ˸ȸҸܸȪޱⰾⲾ߹ŵϻիϽۿٷѼӺʺͲҵոͲ̨Ͻ³ιܹܽ꧵ʹΠસ޺ͺܼͯ߻޸ɼݼٯúܯٸűدܽο詷صתؾ򠰰Ͻɸ襲߳Ƴѽʿײȸڷÿ۽βæڶͺݷ֨ڼӵկ䮼𭻻ҾԢܬпڿҪӹѾݸٽԪֽŵսҵ笺߾ضђ˻曫̼Խͭ׿ܾС˻㳽孻ھҾհߺڿǷսʸĸ笷˶¿ԽʞѲָ೾󮼼涿׼ش¯ӽʳθıտͶ׽DZ枮սַᢲֽ͗ʻǽҤָּݽεվݶϲӷͱտвحۼӺӲͻǺ޽ܿڼϻӼſդ䨶⟯̺йԸսʷӺβ߹ߨܹ࠰ƿ׾߹᪸Ʈ־䴽˶تѰٰм󲾾㧵ּɲϧӸ毽ʽѷܽݶظͺᵿ䱿ۼ߿屿ٽշԶ௻ᜬݿؾߥ־٨Ѿ˻ʾ궿ڽҼɿѷæչǰ¶оdzܺ橷ݹ´ջ²ԻڿԽϭӷݯʽҶҷּϺƺѸ¸ޞ»ݭϿĶì߸īѹŶڷਵѯ۬϶޷갾ͼ߾ϱ৴Ӵºʶ¹ݹܲҩݻȽǾշջι᪸׭ýѶ׶Ϲ⭻հƲʶͿԲոڿ孻ସٱ瞮ʹӞӚٿǹʺ沼ٶϬ鰾ϼͿնֿڹϻǸҶ¼Կ׮ѹؿƦڨƠٽޱͳԪ̴ח׿ŹйѴžԼ񦳳̽ݴѽںષҵ걿׽𭻻ષݣѿιݲۿͿϼ۽ʿ۰ϸƮ۱ݼұ޿߿ʴݶŽʷџۿڶ䭻Dz㯻٢壮ϬҮ𚪪Կи譻ſשȾٴļ߿񘨨ؼؼùѹνھؿƪпսϼکϽڰԿƿӲػط̹ϼټƿ׭Ӿ㶿ݵڿЫɻ׽͹ߺּ׹Ʃ̘ȳŶֿխ읭بӾղįѿ̳𡬬头묺䵿߿;ͽ⹿𩷷ٻ̧ںԩԷܿ߿߼ɯֿળƤۺԭԻǼշݼʼޱ髹ήǺڱ;񬹹⭹ּƶҽƶպƾݯȼøɼӺѫ㳾ϿݸػӺִ׼ƶϦܽ˿ܿɰ̭ɮ۹޼ױ׽ۿֿ諹ҿؕ߸ׯԪܼܿƲսݽշؿϵֻԬٻſ״½˾۠ռ̽ƺͰۮ𮼼ؿٶֱĽӯӹʽ߿ۻα死͑ᢲϴѹԹܪϦп篽Դͬ嬺氾ⲾϾʺվɼ͟ڿᱽ͸ﳿ̶ֿŹظĻĻܶڿڷö·ԾѽծﱿϻȾϺƺ믽ݽէ򱼼쮼ӽˠ⪵߿ָ۴Ͽܡ䧵襰ݷ߸ݺƶûٿӱݼϷشdzٞվȼؿީ筹ݾϿӹԽϡӦò᱿띭Զ߾۾۽㫷Ժij毽μɩ屺ک䰾ٿܼըٹܿᮺƾ䩷ڪ릱ٹžֲ׿ɾԺ㗧ҸоԬֱ̽ܽ᱿ɾνƳ쏢ڿٲھ˥¤񉜜Ǩ⨶͟ݺٳȿҾ᯽¯ҵϺߺƎ̰ԼԻľżãү䰾砰󱼼୹ٷпǶ޼ǷܽǸɵٯ맴Լܹܽӱɾѿԯӧ׾ٽݺҿ˼Ȩԧ񪸸ܼǾϽٵԿķۿݸɞ旧谼ܺҽįοۿ׿ٶӶܤۼнۨ篽ݽꨵӷíվײ֩Ϻظʻл஼ݹٶϯ䰾ߺ󱿿汿׹ٶսǸڿϩ۸Ϳ̽ӽʰ֬Ծ좲쭻ղ䥳ն׾ִ詷ٺ᧵եб󛪪ų稶ܪϲڜзۚѩվӺTRUEVISION-XFILE.gl-117-1.3.2/textures/gravel1.tga0000644000175000017500000001005410145416156015615 0ustar cedriccedric@@׷׶Ÿί軦ؽҴ¼ݨ魹õ㼰dz¶ܸѷثл̪ȴ򷦼ӣɽӷ̵Լէç̷ʩ˼ǮĪ˶գüdzģƵ¥˸ȯՎ㶹׵ɩܼټڻżıű޹ݿȹÿɻп¿Ȯ߾׹ػȯƾ۶ܫچѹѹͷ۶蠹¨ҷзϰٯἾϳ״ɵξѺͷͶȷӭٽޞܿij¶ܽ޺ȱֿ輿Ǽ۾Ȳةĩ˰ǩǶ޿ƧήڣܿĿů韥٬Ѵ۾Ƽؕξ𷴸TRUEVISION-XFILE.gl-117-1.3.2/textures/greendrk.tga0000644000175000017500000003005410145416156016057 0ustar cedriccedric@@+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+]N+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dN+dNTRUEVISION-XFILE.gl-117-1.3.2/textures/greenlit.tga0000644000175000017500000003005410145416156016067 0ustar cedriccedric@@EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE================================================================================================================================================================================================EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC================================================================================================================================================================================================EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE================================================================================================================================================================================================TRUEVISION-XFILE.gl-117-1.3.2/textures/greygrid.tga0000644000175000017500000003005410145416156016072 0ustar cedriccedric@@zvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuzvuTRUEVISION-XFILE.gl-117-1.3.2/textures/hall1b_g.tga0000644000175000017500000000605410145416156015732 0ustar cedriccedric ˮͭҪԣԪǩѪѫǭͩӨѭԨɩˢԡɣȫХǥ˩ͮԥӣЧϥ΢ϩ̩ɬǩɥҥҦЮҩȢΥѭЭͥͬͩӫѥΡǩˬΨǩͨͫήѤϢѬѢ̮ͩǭ̩ͤɧЩΩЬɮ˭ѭ˥ʭԭɧ˥ͬϡԨȧѫͪͪ͢ХȣͬϧԦˡͪʧɭȭԧͭҨʫʭȫ˧ϩЭϢӣΥѣӦɭԦѬҨӤǢǡͩʪѩѤԡʡѭʬȨΦɣɭͧѭϩTRUEVISION-XFILE.gl-117-1.3.2/textures/hall2b_c.tga0000644000175000017500000000605410145416156015727 0ustar cedriccedric ˮͭҪԣԪǩѪѫǭͩӨѭԨɩˢԡɣȫХǥ˩ͮԥӣЧϥ΢ϩ̩ɬǩɥҥҦЮҩȢΥѭЭͥͬͩӫѥΡǩˬΨǩͨͫήѤϢѬѢ̮ͩǭ̩ͤɧЩΩЬɮ˭ѭ˥ʭԭɧ˥ͬϡԨȧѫͪͪ͢ХȣͬϧԦˡͪʧɭȭԧͭҨʫʭȫ˧ϩЭϢӣΥѣӦɭԦѬҨӤǢǡͩʪѩѤԡʡѭʬȨΦɣɭͧѭϩTRUEVISION-XFILE.gl-117-1.3.2/textures/house_s1.tga0000644000175000017500000000605410145416156016007 0ustar cedriccedric TRUEVISION-XFILE.gl-117-1.3.2/textures/medals.tga0000644000175000017500000014005410145416156015525 0ustar cedriccedric.l #C]8*qf7Brձ E,ZL,2z  @ k9¢m2CnKiB!"$L#f/7&i/vI7%7b  J>. +T-A7B>x.E=\b1V""" QBAR jIt:::swQO'l!`6\\N((?+"Wxڛ RJFl<"6@ǽ ]dm^[Amy`E444/$L Fތ URN~ iYU.&M0<mjdX!`=*hq&iP|w0Z.X-#ޑ ]p U cv" #.\\-Vo$ttnfEh1uzn "dm^9d#J8iڞi _s M"Ity`&MK }tq]K %%Z W)<mjAl5_ #Ѣsk{p#hNy+2 }wo>[u.uKw$ttnCn&M"3Ρxt|!"Doz1uzKvs] z\Ͻ)  }tNy;f:}բ!$+Y"Z 5_EI s0xNgF!d+ }w:Mys׭)-.6839el k5/@)# PǶl.,(%#2zP|] KZ}ѹ788=;Ǽ)cpA5,# .A=822I GMzDDTKoF!Al7NA7,#C]OKD?Eu(@)# H`lQ=l.,(%9,]PC7.PfbYPNE8MyA5,#EGA=822ymrbPD1b|riaf* NA7,#C]OKD?EQ|"8 %wbMy|u ~"%]PC7.PfbYPNLTChp R&py2zp""""".IurbPD1b|riafHm傏TwW_vuct&U7JgywPWl<'9=V((/ 8J/R8JBR4_R_9hR]IwbMy|uLuqѮ F &hAK|8*:IYkz*]0 MY9YEB<ABFlKpRvO{ _ [~ _6p}vzAQ WB u+{4",4@Uytiti/ogv WQ __fim8LywPWlTLc M2pU.<9:aID O@r ~ :gq\3!w||!(AK|8*:IYkIR$w]>pEN{ _8J5~_\PG7&i*qF ~,|2dP] "SS4}l LpcOG><:xu+{4",4@UyA`grN~ UJ _^vJ/dwng`YRJ@3{TE)o\*$ Uu"+/l^jS:aID O@r ~ :g$ykk#-M~ BJ xsnhaZRI>*q!`)o^l+/.m|Y~[PG7&i*qF ~,|2dP] "S]c>=/.O  yslbWXj6܏u =;PuuSJJF•VLng`YRJ@3{TE)o\*$ U9Tx^)0# z}(]"O8,):\$悕hF xsnhaZRI>*q!`)o^l$#fWE80*",PA"doU@,#?rS7Y8bC yslbWXj6܏u =;Pul2]rfaTI?:=TyoN+r7wYC0!*Uz;g"0# z}(]"O8,):\rT,{prsAG*qyZE4$ =߄.=(NE80*",PA"doU@,#?rJ?L1oT[S5~0x'lT)o>7b:g*ilgaL%k8paJ7) vgduEt r6k+ iEˏN|{wrmZ+? i g7'AL# =+TKwQ|NyKvItItItItHsFqFqFqFqFqFq#G&H&H'H'HG4PB }wg/_zuvhLDpHtKwFq@k;f7a1\*S&M F=8-0 F#DMBv ^xOx R~ Wv V ]WN r6vXr 8("M_p m ]bc~ b=hG =E̬WF6.(W.^ompo1F#D\U;J=6)_Ap x !/F8("Md޴*FflkNE7kT9/),2w`Z6.(W6z$K鎷`fYIyY29:@mzMJ=6)_W>9:r bo]9XKOmF](wkNE7kaTHKY;Rd#ԽwK4mncr!/8=ifYIy;xvكme݂|c ތ݅b| Yӄo]OE%E߈޴ P2z*4FdwB&*r/@R gpC.W|良 @k eY 7YiSMo@4? ~HSWm vG̞9d %k*.ޭ_&i#'-;R fgp;lx 9JU6/7lWF: Oq}"I,?_".{;N]Om7x_+:Ur j_+#FxA.ٲZ(B5_F2  B&@It7UR B#J' "r.u 8"dy]O|5 &  $!I)&S%!G &'''WWW999 zQchMOLLL@@@,,,pu^+"B7qqq222^^^.*QOaxPON} &###000$$$***ڿ%; q*4 3 t 999555jjj:::cg+KCAn?Y_eeeiiiEEECCC%%%!!!NNNBBB *&Mv&#n 'xh"&7 ^^^PPPMMM888^^^kkkRRR::: Ot+,&:74_ 3/& ^^^[[[VVVJJJ!!!YYYbbb$$$_b/\6 4-&d  nuL7 ;i```ffffff___WWW::: YYYggglll___ '"GQ A < 5/*/+T;l AF@ 6󒒒sssooofffbbbOOOwwwvvvyyyIII RLE = 7+Pcf_NPO7⌌wwwoooiii```555MMM卍)))dh]ZWME> 7v%!F_ ]Z[ !keeeАxxxqqqlllNNNxxx '#JH$g"aVMF@ - 7WX5v)k)i%e ] 0™yyyuuueee+++BBBVVV@1t*k"aWNI ;Y 9 3.)$ ~lY I@>o`dmÄA?l???{{{|||qqqjjjeee___YYYSSSLLLFFF>>>555'''!!!&&&PPP DP"eYQLE? 9 3-# !5R`Թ/*QxCTunt ttt~~~xxxqqqkkkeee]]]TTTIIIJJJ[[[gggzzzGGG"<:|5|,n&g!_XQI?;@5Ycј74_zP;4x?zc݌'#JPPP}}}rrrllloooǵ DKyYMC;~2v)lb_,eST['pXB,q%g,fK{wߦVW###"""˻000 EO}zj^RGEQq㕻qshXs[G4y!cUS:gf֘0dddºBBB(((;lll9xyꑿ|u\I7{(jV FC)RUüߵ:7ceee888<<<'''~~~uuuyyy*kJn8Vߎw]I9|+l\K84?Ebyիjp@@@HHHMMMGGG444rrreeefff~~~MMM)%fI|/U)-)"!W&h\⌿x_K;~,n!`P A/'-8Li{Ȣ+&JLLLZZZ]]]XXXSSS@@@ؒôzzzhhhXXXVVVggg J7QpMx8 ; 7 2,*5]H.pZ}eQ?0v$fWJ :()7drÅFFw$$$~~~nnnmmmiiiccc^^^LLLsss˽uuudddQQQJJJSSS}}}111(&ZFDrPKrMGoHCmFBmFBmFBmFBmB@lA?lA?lA?lA?lA?lA?lA?lA?lA?lA?lA?lCAm9GPLGA < 5 4 GP [*g.8o@Cs:@r/9p&4m0k,i&e!b _ZVS MC69N #@@@```fffccc___^^^^^^^^^^^^\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZ```zzztttoooiiiXXXHHH111???NNN]]]```ZZZUUUOOOKKKFFF???:::555///+++%%% &&&555 R[RLG@=acfffzzztttddd =(l!_XRLI$ D@@@qqqV2x+m%e!_WT™}}}AAA6o91s+l$d#aɜ_bzzz.NK?7{0r-nН!@III$VYNF>9|֞ù888[cWMGۢYZIa|j_W:RRR+-\sk222 ޞ퀷UUbo;UUUzzz&U,,,IjꅺQP{{{;ASߩ4777sssD!b0sԟ $$$ 9UǙJIwIIIn =-^^^jjj1#888 lSR~ 3rrr PR ddd)))6""" TRUEVISION-XFILE.gl-117-1.3.2/textures/moon1.tga0000644000175000017500000000605410145416156015312 0ustar cedriccedric &&&555555&&&@@@zzz|||AAA"""{{{ʨ}}}+++111,,,"""Lj,,, yyy;;;إ@@@ www|||גޡ""""""檪&&&"""⦦&&&ؐԈ rrr߾sss+++ٛ000 rrr常ttt{{{佽}}}{{{ٶ}}}!!!rrrнsss +++oooppp+++  """""" TRUEVISION-XFILE.gl-117-1.3.2/textures/oilrig_c.tga0000644000175000017500000001005410145416156016043 0ustar cedriccedric TRUEVISION-XFILE.gl-117-1.3.2/textures/oilrig_c2.tga0000755000175000017500000003005410145416156016132 0ustar cedriccedric@@vvBB111111LLJJ1111MMJJ1111IIVVKKMMNNOOPPOONNLL]]VV55111111KK``LLLLbbWWGGGGGGGGHHIIIIGGFFXXyyDD1111HHXX661111111111111111KKLL11111111II~~RR66111111111111111111JJWWDD661111IIKK111166DDJJLLLLKKKKaaMM11111111GG]]HHGGHHIIDD66111166EELLLLKKLLLLLLbbYY6611111166ZZLL1111DDxxMM11111166TT[[LLLLMMddII1111111111111177VVLL111166EEYYLL1111IIbbMMLLJJWWYY77111111MM\\HHHHHHHHJJKKKK]]MM1111@@mmFF1166WWbbKKJJII]]II11111111GGXXKKMMOObbMM111166YYFF6611DD}}FF111111IIwwDD1111111177\\³TT6611111188[[\\771111KK111166WWYYFF77111111IIZZJJIIHHCC661111111111MMaaJJIIJJJJZZ[[66111111111177]]ZZKKKKbb1111EEXX661111111111II``FF7711111111111111111177^^MM1111111177GGNN__KK11111111111111JJ1111JJJJ111166EEKKKK__~~DD111177FFKKJJIIHHHHHHJJ\\NN1111111111111177[[~~KK11111111111111HH1111IIII1111DD||VV661166UUyyddMMMMNNNNHH771111JJ{{XX66111111111111GG\\JJKKMMMM[[1111IIII1111DDHH1111EEzzWWLLMM\\HH1111JJRR6611111155BBYYGG1111111177\\1111JJJJ111166SS\\IIJJ``VVHHHHCC66111166FF[[LL1111JJXXIIIIHHTTwwGG1111111111GG1111LL\\77111166EEYY~~QQ66111111111111111166XXEE1111JJ^^KKJJEE661177GG1111LLXX7711111166EEXX}}aaDD66111166DDIIIICC551111HHTT661166ZZ||EE1111111111KK[[FF6611111166DDIIZZGG11111166QQ||wwSSFFGGYYSS661111EE\\LLKKKKIIHHGGGGHHIIZZJJ1166EE1111DD{{[[FF7711111111JJ\\771155BBTT}}~~tt||WW66111177[[[[7711111111111111111177YYII11DDzz111166DDJJ]]ZZJJIIIIJJ^^KK1111BBrrzzTTGGGGSSzzJJ111111FFKK111166EEIIIIIIDD661111DD}}HH11IICC66111111II||uuyyKK1111GGRR55111155OO||KK111111KKJJ1111EE||||PP551166VVHH11IIxxVVIIIIII[[XXKKJJJJXXKK1111HHFF1111111155PPKK111111KK__KKKK``xxBB1111IIII11CCuuVV6611111166EEJJJJKK__}}KK1111DD~~GG111111111166XXaaLLKKKK__HH1111LLLL1166CCwwCC111111111111111111JJ{{YY661166ZZJJ111111111111IIII1111NNNN111111\\JJDD;;DDIIIIIIJJJJJJJJJJ^^UU6611MMaaEE6611111111II^^LLMMgg``771111WWLLGG771111EEzz\\NNddYYKKKKKKLL``[[KKKKIIII\\^^KKJJWW661111111111JJ^^JJKKLL``TT7711111111CCzzKK111111111166ZZ¹FF111111HHWW66111111111155TTLL1111111111EE^^HHHHIIJJJJKKLLLL\\ttTTII__UU771166EE\\II11111111111111HH__LL``\\7711111166ZZKK111111111111111177XX]]KKGGAA5511LLUU661111EE{{II11111111111166XX~~DD11JJYYHHHHHHXXKK1166EEKKKKFF66111177GGMMGG771111111166[[UU66111166XXII111111111111DDSS6611KKddNN\\SS661111111111111177FFLLYY]]MMFF77111155OOWW6611111166CC[[ZZ661111JJUUFFGGGGHHIIIIJJZZYY771111111166OOzzEE111155OOxxLL111166WWJJ111177FFKKWW}}__JJIITTyyLL1111??nnUUGGGGIIKKMMNNddJJ1111FF~~KK111166QQVV66111111111111KK^^JJJJ__VVGGGGHHIIKK[[JJ11111166WW``77111177HHNNMMKK]]ZZIIIIZZ__JJIIIIWWZZ66111111111177UUVVII^^[[BB551111LLNN111177XXHH1111GGKK11111166YYFF111177@@77111166EE[[WW6611HHwwSSFFGG__LL1166UUJJ1111GGKK11111111LL]]771177WWww]]HH771111HHHH1111GGJJ11EEYYKK]]LL1111HHKK11111111MMHH1111GGWW6611IIII1111CCyyII11JJVV661177XX^^7711CC{{KK11111111MM``KK\\yyXX771177]]YYII\\JJ111166PP~~JJ11IIHH11111177__FF1166WWLL11111111MMLL1177AA771111GGYY66111166PP||JJ11HHGG11111111LLJJ1111KKLL11111111LLJJ111111111166ZZTT66111155TT}}VVJJIIJJ^^KK^^GG11111111JJVV6611KKZZ66111111JJYY7711111111DD``LL^^XXCC5511BBuuTT66111111GG11111111GGxxCC11EEQQ661155UU[[KKKKJJJJ\\HH11HHrrBB1155SSppFF11111111UU66111111GGHH1166FF\\WWHHSSzzHH11GGXXJJJJYYFF1111GGmmGG11111111TTFFGGII]]HH11111177UU{{CC11FFVV66111166XXVV6611IIrrII11111111XXAA55111166ZZUUHHIIJJJJKKLLLLJJVVzz||QQ6611GGHH11111111HHEE11JJxxJJ11111111aaNNMMXX{{ssNN661111JJYY66111111111111111166CCDD661111HHII11111111HHFF11KKzzKK11111111JJ111166CCHHHHIIJJLLLLIISSvvzzPP5511DD||LL111177HHMMLLEE6611111111111166UUHH11111111II[[7711KK~~ZZ66111111WW661111111111111111111155RRwwBB1166VVKK1177WWYYFF7711111166PP~~GG11111111KKFF1166WWZZKKKKLLTTGGHHHHGGGGFFGGCC661111HHHH1111IIJJ11@@ww^^MMKKIIUU~~[[EE661111EEVV7711BBxxyyQQ6611II]]KKJJ]]II1177UUyyrruu[[LLFF<>11JJXX66111111111111KKGG11KKTT66111166VVMM11LLWW6611111111HHyyPP6611LLJJ11111111111166ZZUU7711MMWW~~YYJJHHUULL11LLRR66111155SSWWBB551111LLXX661111111166RRYYDD661111NN66DD^^KK11LLXXHHGGSSzzFF11111177[[WWHHHHHHHHUU^^MMMMMMLLEE6611111177]]1111KKZZGG]][[KKLLLL\\GG1111111111111177FF[[1111KKHH11111111111111FFTRUEVISION-XFILE.gl-117-1.3.2/textures/panzer1_.tga0000644000175000017500000003005410145416156015775 0ustar cedriccedric@@OrqNvtR}W[_`]YVRNzwImkEedA^\>YW=WV=VT>ca@BBCDvtEifFgeDfdCb`B`_DecEgfFihGroHusFspDmjCfdEgeFihDdc?[Z=WV=UT;RQ9ML8LK9ON[Z@dcCkiFrpGroGjhIljLtrPzxP|zQ|RQOLzxNsqKpnJtrN}zSWYYUKGGG~zFnlDigBeb>_]<[Y;XV;b`?BBBBAro@da>_]=\Z>][@b`BecCnlCCCBAtqBpmCqo@lj=cb;ZX9TR5ML3GF3JI7WV:_^=ki@~BCB@jhCgeIspMywLwuJ|yGFEEH}zInlIspLzxPRRSPFBBCE|yEurClj?ca=_]<[Y;`^=}zABBBA?ro=he;b`;\Z>`^AecBqoBBBBABBA>~{9_]6QO4NL4SQ6a_=}y?@ABB@=if@ecHqoKyvKxvH}{CBBBCHkiHrpJ~|LMM}O}MEBBBCCCwt@fd>`^>^\9VU5[Y;}yABBBA@?}jhAnlCtrCBBBBBBB?8^\5PO7a^<|x?ABBBA?=}y=fdAgdGpnJwtL{xK~EBBBBEecDpnDDEIL|zJ|EBBBBBBAom@ca?`^9UT2JH3ZW<{w?ABBBA@ACG{xH}EDCCBBB?7]Z6WV=}yABBBA?<|x7c`7ZW;\ZAgeDtrG}zL~L}H~CBBBBa_AmjABBEIHyvF~zCBBBBCDvsCif@b`;ZX6PN3NL6XV8ec<|x>ABBBBDJ~M|K~J~I|H}yF~{CC?}9^\8^\?BBA?=}y8gd7b_6]Z7ZX:\Z?omBCFK~IwtD|yBBBCb`AkiABBBDEurDnkBomAur@@ABDurDkiAec>_]<[Y9US6PO4ML2PN4[Y;yv>?@BEK~N|N|M}{L{yLzxK{yJ|H|yCro?ec=mj@BA=|7a_4TR6ZW>{=sp@BBDI}HurEyvCBBDecAfdAvrBBBBBpmAdb?b`>b`=fc.BA1OM5XV8_]=hfCspGyvJxuKzwM~{N}N|O~PQN}HurDspAAB?7b_1GG0ED6ZW?BAAABBCH{JwtH{xDCCFjgCgeAolBBBBAom@ca?a_>a_>_^=][=^\>c`@qoABBBol>`^6PO0DC.@?.A@0DC2HG5NM~:`^:WV;ZXol>b`@dbAfd@fc@kh@nkAqnExtJOQQPO}M|zKyvKxuOzwL|G{wFxuHyuGyvCro{8[Z7SR9`^>}y???@@@ADJ|QVUGBBBDF|FurFvtDvsCroCkiDljEnlEnlCigAec@dbAfdDmkI}{PRPNNMKJ{P}zDCFMM~{Gpm>`^8US8US=hfABBBBBB@_]<[Y;ca?|A@@@@@BEOW[YTPHCBBELPSSRNFBCEvsFpmExuCBBBBBBBFPBBGTXSJwt@db<\Z?caCqoFxuFyvFywG{xH~{I|H|yEqnBge>`_=`^>ge=hf;eb;da;dbjhBspH}yPWZYVTOEBBEPWYYVPEBCG|yIurH}zDBBBCCCDHRBBEPUSL|yCjh@b`AfdCigBgeAfdDkiItrL~{LI|FyvCrp@mk@ki?kh=ge:b`8][9XV<\ZAfcFpmJzwNRUWUSOGFFJU[]ZUMDBDJ}KyvJ~DBBC|yExuH|yI~{I~{L~SBBCHPQL{xFolChfBhfAec?a_?b`ChfIwuKFDCBAAA@?>~z=eb?b`DliIvsK~GFJSSO~M|MPRSUWWUPGBBDKM~{K~ECCEurGqoKyvL{xJwuLxvQ~{BBBDJKJyvGtqDtqBqo@kiAgeBifEmkH{xFBBBBBBBBBBBqnCjgFpmKzxMEBDLM}KyvLywO}RSQJGGGECBBDLO~N~KJJ|IwuJvtL|yM}zKyvKwuP{yDBBBDEHzwH{xDBBE|xHusIurH}zDBBBBBBBBBCFvsGqoJvsM~{NFBBEF}yEpmGqnJwuM~{O~LDBBBBBBBDK~ONMNQOM~{L}zL{yKywLyvO{xH~{CBBBCFyvG{xCBBEII~|G|yCABBCCCCDE}zFwtIvtKxvL|yN}NEBBBBBwtCrpEurHusJwtGywB@@@??@ACvsHvtJGEITTPL{xJxuJwtKvtNxuGmkCvsBCBBEtqExuCBBBDDE}{CrpAolBqnDurExuFywExuExuGyvIxuJwtLzxM~|M|N|MFBBBBBBCEwsEolAhf=ed;db:a_9_]9_]9`^;eb>hfBhfDsqDBBFQSOL}zI}yG{xGwuIqoDdb@ecBomExuDwtBpmCkhDspCBBBBBCCwsDljEliEmjEnkGpnGqnFpmHspKzxM}{N}O~N|M}zM|IDBBBBBCDwtBge:YX5OM3JI1FE2HG4LK6PO9VT=][AecCtqBBBDKN|M}KECCDmkBa_?`^AgeFpnFpnCigAfdBigAtp@@ABBBCHzwHroEnkDolEurExuEurFsqI}{KKMN~L{yJwuGurDzwCBBAAAAnk=^\6SQ3RP1QO/KI.BA0DC3KJ8TS>_]ChfEurDDDDH}zJzxIEBBBClkCb`@b`BigFqnGroEmkBge?a`=_]9`]:c`=olABBDJJvsEnlCrpBCCCzwDDDFJI}FywBspBspC{wC}yB{x@ur>lj=fc;][8WU8a_<{x=8ro.HG->=1IG8]\@mkEvsG{yI}J}I{G{xIwuJ~{EBBBBDnlBa_?a_BhfGqnHsqFomChf>_]:WU7SQ8TR;\Z?olBDGLKywGqoDvtBBBB|yBBBBDDCBBBBB@~jg=gd@fdGqoL|yN|N}N~JDBBBCurDyvDDDDDDDCBBB?7a_1JI5\Z=|ABA:xt+DB&22-JH<BBCH{xH}zECCBBBBD|xCjgCa_B_]?`^AljCCCBBBAA@@trEvtI~{N}PNFBBBBCspEpnH|yI}I|J~KKI{EwtCxuBBA;zv4[Y:yvABA=}5[Y-@?)66-IH<~BAAwtEpmFyvCBBBBBBDrpDheDcbCb`Ab`ApmBBBBBBBBBABFOQMEBBBCEtrGqnJwtJyvIusIvtKywJwuGqoCjhCkiBxuBB=7ec=BB@9ge3ML/CA,==0OM=BBCspFomGzwFFFEDCBvsBjhBfdDecCca@caAmkBBCCDCBBBBBFPQHCBBEIHvtHtqIwtH|xF{xFxuFqnEliBhfBfdCigDurBB?;mk?BA>|9]\5NL2IG2HF6[X?BCFzwJwuL~{NPPNKI}zFrpCjhBfdDdbCca?`^@ecBpmEvsFzwH}zI}IEDCBBEONEBBEKNM}zJxuGzvDCBAro?b`>`^@dbDkiExuCBA@urAA>}9eb7TS6QO6SQ8][~{ABBDI~{KzwKyvM|yQQN~|KywJwuItrFolChfEgeCca?hf@}BDIM}PRSQK~FDFLL}zK~KK~M~|M~{M~{L{xItrDvtBBBA@?~?spCtrFzwGzwGzwGyvGtqEnkAhe=ec:b`:_];[Y=hfABBBCGzwIurIusKzwMKH}zFyvFwtFqnEljChfFhfFjhCrpBBBELSVWTM~J|KMM}L{xKywJwtHrpItqIwtIusGqnDljBpmABBBBAABCDzwFrpGqoFpmDliBol@@?|>gd>jhABBAADqoEljFpnGzwEDCBCBwuBroBomFkiKrpH{yCBBBHTYYUN}KxuKzwM|zL{xJywH{xExuCqnBigBhfBge@ca>`^=`^>mj@@@ABBBBBEusFomEnkDmjBwtBBA>jh=ge?}@?~>ol>hf?db@caBhfDwsCBBBBBBBEyvNxuJ}{EBBBGV\XRM~|JxuJwtJvtIusHzxDBA>nk<_];[Z:XV8TR7RQ9XV=db=jg=nl?}@ABBBEwtFnlDmjCqoBBBA>jh=a_=gdb`=igge{8db6WU4NM6ON;YW?if@~@@ABCBAmk?a`<\[}CEUN}zIurF{xCBBBGUWRL~{J|I}H{xDwtBBBBBA?=~y9fc9^[<][?liABBBCF}DspAge>`^<[Z=gd@BBCyvDljAqnABBBBBBBDrpDkhBgd>`^:XV7QP7TR`^GnlQ}XRM}{K{xK}LMLMPSUQEBBAvs=ca;a^9`^:hf?ABBBBApmBhfBolBpnBpnCtqFxtIwtGroEmkDljCifBigCpmCspEusHvtIvsFqnBol?jhjg?ljAmkBjhBgeAlj@~@@?~=mj?caFmkQ~{WSN}KyvJwuKzxL|yL|yL|yL|yN|PNEBB@=fc:WU8RQ8TS;he?@ABBCrpBolBroBnlAgeBgeEljFpmEnkEljFolGpmGomGpmHspJyvN}N~I~zFxuCsqAol@li?db?a_?a_?ba?b`@nkABBA@?roEsqO|zVSPL|yJwuHwtH{xH}yI|yJyvJxuKyvJ~DBBA>spjh@olCurEwtCzwBBA@li@dbBjhCroCspDtqFzvH}zH|yI|yL~{PQNFCCBBAvs@nk>he<^\<\Z>if@ABBAADKURQO~KzxH{wDCDG{HurFpmFvsCBBBA@@?@}AmkCjhFqnHtrGywCBBA@nkAecBolBBBCDDFMQPHCBBBBBB@;hf9XW;\Z=lj?ABBBBDPNNNKzwFzxCBBCE|xDnkCljDxvCBBBBBBBDusHsqKyvKyvH}zCBBBBqnAecApmBBBBBBELPNEBBBBBBBA>|9^\9VT;\Z=gd@tqABBBBFEFK}IsqDtrBBBBBCyuCmkDmkCxuCCBBBBBEurHtqJwuJwuH}zCBBBBpn@eb?mjABBDFGHMN}MGFFEDCBBB?:a^9VT:XW=][AgeDywEFFFBBCG}Eol@jh?~ABBBBBpnCihDnkEtqDusCtqBroBroDurFwtHurIusJwuJvtH|yCBBBxu@fd?a_?jhBDFMSTSQO~N~OQPMKG~CA?<{v6YW6PN8US<\ZBheHvtNSSRBBBCAnk;\Z8b_=|ABBAAomBhfEliEmjDjhChfBhfDljGtqJ{J~I~{JzxJxvH}zCBB@ol=][<\Z@ecEuqI~{MTYYTPMLNPQN~KzwHusCro>ig9a^6WU2KJ3MK8[X@ABpnBpnDtqDsqDnlDjhDkiFomHzwFDFLM}zI}DBA>ig:YW:XW?a_EmkJwtN}RURIFEDEGLM~{K{xGywCsp=ec7US3KJ1FE2PN_]BhfGqoJzwKHFCBBBBDJM}zKEB?~:ge6[Y4VT5`]>BBCI|N|RVKDBBA@<|y6][2KJ6PO;ZY@cbDtqBBCF{xHrpFpmEljDusBBFOQL~{Fwu@mk;eb:b`>ABBCFwtHtqLyvR|JxvCABBBA=}9ec;][>_^?a`AomBBCE~{FqoEmjCjhCtqBBDMPM}zFom=a_:he>|@@@ljAfcDkhExuCBBB@?qo?khBpnGyvM}PMFBBBBBBBBAAvsCkiDliFnkKrpFljApn?~?ABBA??jg>`^<\Y=hfABBCCwuCliDliExtCBBGML|yEpn?pm?ABA?ki?a_AecBsqBBBA=mk<_]?a_CifGqoM|yPN~IB@>>====}yABCFhf@a_9VU5ON6_]=~{@A?}=fc:XV4NL5VT<|yABBBEwtGqoH{xEBBCG|yHspExuCBBB?~:a^7TR7SQ8VU;a_=if@ki@ec=`^=geAvsCCEJ~{JvtDki;ZX3JI/BA.BA.BA.A@.@?+<;*99/MK=BBBGjh?`^9VT6PO6SQ9_]=he?ki?jg>ca;a_6ZX3UT6`^=}y@ACEurFpnHvtH~DBABqnCigCtqBBBA?nk9YX6RP5OM6ON9UT<_]?jh@mk?ro@BBBCH|yGqnAfc8WU3SP2QP2QP2KJ1FE0DB.@?,>=1VT=BBBDfd>^\:[Y:a_;db;{w7a_8][;ca?kiBpmDmkEnkGqoHurDur@ol=ge=a_?b`ApmBBBBvs@db;ZX7SR5NM4ML7TS`^BgeEliEpnEurBro>gd9YW:XV=a_AurBBAApm?ba<][9WU7QP5ML7ZX>|ABBBAA@@spApm@nk|?ABBA?pm@^\=\Z>jgABBDJ}M}zI~{DBBA=~z6WU4LK9US=^]AebBomBB?}9eb8WUkh>jg~z:ge={ABBAABBBBA@}?caCa_>^\?liABBDLO~M~|IDBB>5WU1ED3KJ8SR;YW=hf@BA>~:fc;he@BBAA@A@>~{:`^;ca@BB@~ABBBBBBA@>kiA`_EecBecCroDBBFORPMFB@;yu2PO/A@1GF6ON9TS;db@BBA>|kh?pmAAABBBA?}=fd=fd@BB>5ZX5NM8TS8TS:`^?B@:c`9VU:ZYkh@mkBroFxuG{xFxuClj@cb@b`DdbImkJsqO}TTTUZZVQJusBfd;WU5LJ2FE3IH8PO:UT;WV<][>ljABBBAnlAfdAliAmkAmjCpnDsqCrpAol?ge=^\>`^@pmBB={w5UT5ML8SR8RQ:_]?B@>he>^\?_]?`^AcaCheFnlJurLzwLzwJtrEljDgeFgeOrqNwtSY\^_^][VNyvFig@][;TS8NM9NMZXAa^CspBBCErpEecCb`CcaEecGigHljGkiEgeBa_A`^CbaDhfDliAhf<][8PO9PO;TRYW=WV=VT>ca@BBCDvtEifFgeDfdCb`B`_DecEgfFihGroHusFspDmjCfdEgeFihDdc?[Z=WV=UT;RQ9ML8LK9ON[Z@dcCkiFrpGroGjhIljLtrPzxP|zQ|RQOLzxNsqKpnJtrN}zSWYYUKGGG~zFnlDigBeb>_]<[Y;XV;b`?BBBBAro@da>_]=\Z>][@b`BecCnlCCCBAtqBpmCqo@lj=cb;ZX9TR5ML3GF3JI7WV:_^=ki@~BCB@jhCgeIspMywLwuJ|yGFEEH}zInlIspLzxPRRSPFBBCE|yEurClj?ca=_]<[Y;`^=}zABBBA?ro=he;b`;\Z>`^AecBqoBBBBABBA>~{9_]6QO4NL4SQ6a_=}y?@ABB@=if@ecHqoKyvKxvH}{CBBBCHkiHrpJ~|LMM}O}MEBBBCCCwt@fd>`^>^\9VU5[Y;}yABBBA@?}jhAnlCtrCBBBBBBB?8^\5PO7a^<|x?ABBBA?=}y=fdAgdGpnJwtL{xK~EBBBBEecDpnDDEIL|zJ|EBBBBBBAom@ca?`^9UT2JH3ZW<{w?ABBBA@ACG{xH}EDCCBBB?7]Z6WV=}yABBBA?<|x7c`7ZW;\ZAgeDtrG}zL~L}H~CBBBBa_AmjABBEIHyvF~zCBBBBCDvsCif@b`;ZX6PN3NL6XV8ec<|x>ABBBBDJ~M|K~J~I|H}yF~{CC?}9^\8^\?BBA?=}y8gd7b_6]Z7ZX:\Z?omBCFK~IwtD|yBBBCb`AkiABBBDEurDnkBomAur@@ABDurDkiAec>_]<[Y9US6PO4ML2PN4[Y;yv>?@BEK~N|N|M}{L{yLzxK{yJ|H|yCro?ec=mj@BA=|7a_4TR6ZW>{=sp@BBDI}HurEyvCBBDecAfdAvrBBBBBpmAdb?b`>b`=fc.BA1OM5XV8_]=hfCspGyvJxuKzwM~{N}N|O~PQN}HurDspAAB?7b_1GG0ED6ZW?BAAABBCH{JwtH{xDCCFjgCgeAolBBBBAom@ca?a_>a_>_^=][=^\>c`@qoABBBol>`^6PO0DC.@?.A@0DC2HG5NM~:`^:WV;ZXol>b`@dbAfd@fc@kh@nkAqnExtJOQQPO}M|zKyvKxuOzwL|G{wFxuHyuGyvCro{8[Z7SR9`^>}y???@@@ADJ|QVUGBBBDF|FurFvtDvsCroCkiDljEnlEnlCigAec@dbAfdDmkI}{PRPNNMKJ{P}zDCFMM~{Gpm>`^8US8US=hfABBBBBB@_]<[Y;ca?|A@@@@@BEOW[YTPHCBBELPSSRNFBCEvsFpmExuCBBBBBBBFPBBGTXSJwt@db<\Z?caCqoFxuFyvFywG{xH~{I|H|yEqnBge>`_=`^>ge=hf;eb;da;dbjhBspH}yPWZYVTOEBBEPWYYVPEBCG|yIurH}zDBBBCCCDHRBBEPUSL|yCjh@b`AfdCigBgeAfdDkiItrL~{LI|FyvCrp@mk@ki?kh=ge:b`8][9XV<\ZAfcFpmJzwNRUWUSOGFFJU[]ZUMDBDJ}KyvJ~DBBC|yExuH|yI~{I~{L~SBBCHPQL{xFolChfBhfAec?a_?b`ChfIwuKFDCBAAA@?>~z=eb?b`DliIvsK~GFJSSO~M|MPRSUWWUPGBBDKM~{K~ECCEurGqoKyvL{xJwuLxvQ~{BBBDJKJyvGtqDtqBqo@kiAgeBifEmkH{xFBBBBBBBBBBBqnCjgFpmKzxMEBDLM}KyvLywO}RSQJGGGECBBDLO~N~KJJ|IwuJvtL|yM}zKyvKwuP{yDBBBDEHzwH{xDBBE|xHusIurH}zDBBBBBBBBBCFvsGqoJvsM~{NFBBEF}yEpmGqnJwuM~{O~LDBBBBBBBDK~ONMNQOM~{L}zL{yKywLyvO{xH~{CBBBCFyvG{xCBBEII~|G|yCABBCCCCDE}zFwtIvtKxvL|yN}NEBBBBBwtCrpEurHusJwtGywB@@@??@ACvsHvtJGEITTPL{xJxuJwtKvtNxuGmkCvsBCBBEtqExuCBBBDDE}{CrpAolBqnDurExuFywExuExuGyvIxuJwtLzxM~|M|N|MFBBBBBBCEwsEolAhf=ed;db:a_9_]9_]9`^;eb>hfBhfDsqDBBFQSOL}zI}yG{xGwuIqoDdb@ecBomExuDwtBpmCkhDspCBBBBBCCwsDljEliEmjEnkGpnGqnFpmHspKzxM}{N}O~N|M}zM|IDBBBBBCDwtBge:YX5OM3JI1FE2HG4LK6PO9VT=][AecCtqBBBDKN|M}KECCDmkBa_?`^AgeFpnFpnCigAfdBigAtp@@ABBBCHzwHroEnkDolEurExuEurFsqI}{KKMN~L{yJwuGurDzwCBBAAAAnk=^\6SQ3RP1QO/KI.BA0DC3KJ8TS>_]ChfEurDDDDH}zJzxIEBBBClkCb`@b`BigFqnGroEmkBge?a`=_]9`]:c`=olABBDJJvsEnlCrpBCCCzwDDDFJI}FywBspBspC{wC}yB{x@ur>lj=fc;][8WU8a_<{x=8ro.HG->=1IG8]\@mkEvsG{yI}J}I{G{xIwuJ~{EBBBBDnlBa_?a_BhfGqnHsqFomChf>_]:WU7SQ8TR;\Z?olBDGLKywGqoDvtBBBB|yBBBBDDCBBBBB@~jg=gd@fdGqoL|yN|N}N~JDBBBCurDyvDDDDDDDCBBB?7a_1JI5\Z=|ABA:xt+DB&22-JH<BBCH{xH}zECCBBBBD|xCjgCa_B_]?`^AljCCCBBBAA@@trEvtI~{N}PNFBBBBCspEpnH|yI}I|J~KKI{EwtCxuBBA;zv4[Y:yvABA=}5[Y-@?)66-IH<~BAAwtEpmFyvCBBBBBBDrpDheDcbCb`Ab`ApmBBBBBBBBBABFOQMEBBBCEtrGqnJwtJyvIusIvtKywJwuGqoCjhCkiBxuBB=7ec=BB@9ge3ML/CA,==0OM=BBCspFomGzwFFFEDCBvsBjhBfdDecCca@caAmkBBCCDCBBBBBFPQHCBBEIHvtHtqIwtH|xF{xFxuFqnEliBhfBfdCigDurBB?;mk?BA>|9]\5NL2IG2HF6[X?BCFzwJwuL~{NPPNKI}zFrpCjhBfdDdbCca?`^@ecBpmEvsFzwH}zI}IEDCBBEONEBBEKNM}zJxuGzvDCBAro?b`>`^@dbDkiExuCBA@urAA>}9eb7TS6QO6SQ8][~{ABBDI~{KzwKyvM|yQQN~|KywJwuItrFolChfEgeCca?hf@}BDIM}PRSQK~FDFLL}zK~KK~M~|M~{M~{L{xItrDvtBBBA@?~?spCtrFzwGzwGzwGyvGtqEnkAhe=ec:b`:_];[Y=hfABBBCGzwIurIusKzwMKH}zFyvFwtFqnEljChfFhfFjhCrpBBBELSVWTM~J|KMM}L{xKywJwtHrpItqIwtIusGqnDljBpmABBBBAABCDzwFrpGqoFpmDliBol@@?|>gd>jhABBAADqoEljFpnGzwEDCBCBwuBroBomFkiKrpH{yCBBBHTYYUN}KxuKzwM|zL{xJywH{xExuCqnBigBhfBge@ca>`^=`^>mj@@@ABBBBBEusFomEnkDmjBwtBBA>jh=ge?}@?~>ol>hf?db@caBhfDwsCBBBBBBBEyvNxuJ}{EBBBGV\XRM~|JxuJwtJvtIusHzxDBA>nk<_];[Z:XV8TR7RQ9XV=db=jg=nl?}@ABBBEwtFnlDmjCqoBBBA>jh=a_=gdb`=igge{8db6WU4NM6ON;YW?if@~@@ABCBAmk?a`<\[}CEUN}zIurF{xCBBBGUWRL~{J|I}H{xDwtBBBBBA?=~y9fc9^[<][?liABBBCF}DspAge>`^<[Z=gd@BBCyvDljAqnABBBBBBBDrpDkhBgd>`^:XV7QP7TR`^GnlQ}XRM}{K{xK}LMLMPSUQEBBAvs=ca;a^9`^:hf?ABBBBApmBhfBolBpnBpnCtqFxtIwtGroEmkDljCifBigCpmCspEusHvtIvsFqnBol?jhjg?ljAmkBjhBgeAlj@~@@?~=mj?caFmkQ~{WSN}KyvJwuKzxL|yL|yL|yL|yN|PNEBB@=fc:WU8RQ8TS;he?@ABBCrpBolBroBnlAgeBgeEljFpmEnkEljFolGpmGomGpmHspJyvN}N~I~zFxuCsqAol@li?db?a_?a_?ba?b`@nkABBA@?roEsqO|zVSPL|yJwuHwtH{xH}yI|yJyvJxuKyvJ~DBBA>spjh@olCurEwtCzwBBA@li@dbBjhCroCspDtqFzvH}zH|yI|yL~{PQNFCCBBAvs@nk>he<^\<\Z>if@ABBAADKURQO~KzxH{wDCDG{HurFpmFvsCBBBA@@?@}AmkCjhFqnHtrGywCBBA@nkAecBolBBBCDDFMQPHCBBBBBB@;hf9XW;\Z=lj?ABBBBDPNNNKzwFzxCBBCE|xDnkCljDxvCBBBBBBBDusHsqKyvKyvH}zCBBBBqnAecApmBBBBBBELPNEBBBBBBBA>|9^\9VT;\Z=gd@tqABBBBFEFK}IsqDtrBBBBBCyuCmkDmkCxuCCBBBBBEurHtqJwuJwuH}zCBBBBpn@eb?mjABBDFGHMN}MGFFEDCBBB?:a^9VT:XW=][AgeDywEFFFBBCG}Eol@jh?~ABBBBBpnCihDnkEtqDusCtqBroBroDurFwtHurIusJwuJvtH|yCBBBxu@fd?a_?jhBDFMSTSQO~N~OQPMKG~CA?<{v6YW6PN8US<\ZBheHvtNSSRBBBCAnk;\Z8b_=|ABBAAomBhfEliEmjDjhChfBhfDljGtqJ{J~I~{JzxJxvH}zCBB@ol=][<\Z@ecEuqI~{MTYYTPMLNPQN~KzwHusCro>ig9a^6WU2KJ3MK8[X@ABpnBpnDtqDsqDnlDjhDkiFomHzwFDFLM}zI}DBA>ig:YW:XW?a_EmkJwtN}RURIFEDEGLM~{K{xGywCsp=ec7US3KJ1FE2PN_]BhfGqoJzwKHFCBBBBDJM}zKEB?~:ge6[Y4VT5`]>BBCI|N|RVKDBBA@<|y6][2KJ6PO;ZY@cbDtqBBCF{xHrpFpmEljDusBBFOQL~{Fwu@mk;eb:b`>ABBCFwtHtqLyvR|JxvCABBBA=}9ec;][>_^?a`AomBBCE~{FqoEmjCjhCtqBBDMPM}zFom=a_:he>|@@@ljAfcDkhExuCBBB@?qo?khBpnGyvM}PMFBBBBBBBBAAvsCkiDliFnkKrpFljApn?~?ABBA??jg>`^<\Y=hfABBCCwuCliDliExtCBBGML|yEpn?pm?ABA?ki?a_AecBsqBBBA=mk<_]?a_CifGqoM|yPN~IB@>>====}yABCFhf@a_9VU5ON6_]=~{@A?}=fc:XV4NL5VT<|yABBBEwtGqoH{xEBBCG|yHspExuCBBB?~:a^7TR7SQ8VU;a_=if@ki@ec=`^=geAvsCCEJ~{JvtDki;ZX3JI/BA.BA.BA.A@.@?+<;*99/MK=BBBGjh?`^9VT6PO6SQ9_]=he?ki?jg>ca;a_6ZX3UT6`^=}y@ACEurFpnHvtH~DBABqnCigCtqBBBA?nk9YX6RP5OM6ON9UT<_]?jh@mk?ro@BBBCH|yGqnAfc8WU3SP2QP2QP2KJ1FE0DB.@?,>=1VT=BBBDfd>^\:[Y:a_;db;{w7a_8][;ca?kiBpmDmkEnkGqoHurDur@ol=ge=a_?b`ApmBBBBvs@db;ZX7SR5NM4ML7TS`^BgeEliEpnEurBro>gd9YW:XV=a_AurBBAApm?ba<][9WU7QP5ML7ZX>|ABBBAA@@spApm@nk|?ABBA?pm@^\=\Z>jgABBDJ}M}zI~{DBBA=~z6WU4LK9US=^]AebBomBB?}9eb8WUkh>jg~z:ge={ABBAABBBBA@}?caCa_>^\?liABBDLO~M~|IDBB>5WU1ED3KJ8SR;YW=hf@BA>~:fc;he@BBAA@A@>~{:`^;ca@BB@~ABBBBBBA@>kiA`_EecBecCroDBBFORPMFB@;yu2PO/A@1GF6ON9TS;db@BBA>|kh?pmAAABBBA?}=fd=fd@BB>5ZX5NM8TS8TS:`^?B@:c`9VU:ZYkh@mkBroFxuG{xFxuClj@cb@b`DdbImkJsqO}TTTUZZVQJusBfd;WU5LJ2FE3IH8PO:UT;WV<][>ljABBBAnlAfdAliAmkAmjCpnDsqCrpAol?ge=^\>`^@pmBB={w5UT5ML8SR8RQ:_]?B@>he>^\?_]?`^AcaCheFnlJurLzwLzwJtrEljDgeFgeOrqNwtSY\^_^][VNyvFig@][;TS8NM9NMZXAa^CspBBCErpEecCb`CcaEecGigHljGkiEgeBa_A`^CbaDhfDliAhf<][8PO9PO;TR܇߉=* A*  A ceŽȏPȏŽPŽ[;;5ƊZ]ňH/H5/5:܈RN C .ӈ B +QC .ӈ B +Q d6! #Y e9  &WDprpoMM؅܋Mׇ:hEׇ:MhEMt ъ,<އK:Pڇ_ʚ:PKڇ_ʇKKJdą98ՆV[ԇ55C܅~ Y} Y}q[[]"ԃڄ4\ʇKBʇKBJԊ<ه-.׆ԃކׇׇQ{ ŇRX0v0 0v0 !ՐMZوυ(NVX^(n6.jlЁׄkϘzϘ ޒ&7yMЂ؃قކ+Uǒ)5؇-.ֆNVC^כۙCכۆANI0A[[8SZ[_7ZƙZƆ|~D wh~|Մ{ׇ}8 =׈}8 >ۆuI'G87Մ܃܄߆59N59N`x܈l\} ݇  ] چ!J:]چ!: OnrpnGW^^_Fj1Hy1<zςi"pYj1Hi"p0 V߈D3׌^h+ۈSN `;+Xև=KŃ `;+Xև=KC |3 -T{D 89φچ΅v3a3ރv3asڇZ_a X  Xm_QTW\ba`V" LjT "T_ $ː(#" '+ˏY3ރ'+ˏYe IMކ߈ބeyWNjŃeWNjN߇&҇NYȐ \`!8^~m+gƊ #lE Y8^~m+ #lE T._^8"8K9W M# #=q D<qP×z͖Q v9~Bl4Y|O"cM$d{H-ߍI3{ M$%V,8, k :m :m+`i# $f D҉#$lQ/AnA* 0 *  ȏ/ȏŽH H:5C .C . d6! #Yׇ:5. 5ׇ:t цM:P/D:PKKTm YVш YqʇK{ʇKJԆƇCJQ{0v0 ݇ 0v0 !ՐM ϘϘ ޒ& ǒ)Cއ!CANIZLJJKZ|~D ׇׅ>ۆuI'X`x܆l]op]: j1HEGj1H0 V߈D3׈ `;+X85 7 `;+XC |3 -T{vvs  m"0"_'1 'eemeN߇&8^~m+ #e 8^~m+ T._^8 ^b#GR +`iLÌQ/1h#$lQ/'ΐ*UX A ceŽPŽ;;5/:5܈RNӈ B +Q d6! #YprpoMhEt цMއKڇ_ʆKK985~}q[[BJԆه-.׆ׇQ{!ՐMn6zޒ&U+ǒ)^؇-.ֆכۅNI[[ƅ~D =~}8 ۆuI'8759NlJ: ݇چ! Yy1<zςnrpni"pD3׈ńۈSNև=K |3 -T{3ބ893as _aX  LjQTT_3ބ$ː(+ˏYeńyIMWNj&YgƊ \`! #lE _^8K9<Qvl4TRUEVISION-XFILE.gl-117-1.3.2/textures/radar1.tga0000644000175000017500000020005410145416156015427 0ustar cedriccedric   !*29?DHJKLLLLLKJHD?93*" ".:ENW_fkptvwwxxxwwvuplf`XOE;/$ -;IUblv}~vmbXJ=- (9IYft~tiZK:+#5IYkxzk\J8# "7M_rrbM:#%:RfyziS>&5NcyzgO: 2Mdz{hN7 $AZtu^B) 6PlmV7"=\uy]C# -NhlN25RqrW6<_x}`A@_dA!"CghI#DdjE$!CijI"BciC =efD8[b9 /YzZ5 &LtuR'FjpG"5ab<,T|}Z. GlrH!6cd=%NyzU&@gnA'V{X/?noG+T[,BkqD%V|W-;jlC"L{|U#5`g6 EovF$W~X,2ef: BstJ#OW$1]e2 ItzKS|U')]_22fg;;noCBtuJIz{QN~V!$RZ%&U]((V_)(V_*)W_*)W_*)W_*)W_*(V_*(V_)%T\'#QZ$L}~T GxyO@rsH 8lmA /ce8'[]/PzR$EqwG9el:-Ya.K{|S >opF.ab6 RzS(@jqA/Zb1 GvwO 5eg= Pw}Q';dl=$M{{U&8gi@ Ou{Q( 9`h:FssN.[~]6 >dk?$KuvR%,XzZ3 =bh>BlmI&PsxQ,.RwxX/ 3[{\97Y|}_89_}`?9Z{|_:8]y}^>5TuuY60SotT6 )Ff~gL*!A]zzbB&1PinQ6 *Dax|bI*4Mh|iQ5 %@Wop[A*(AVm~mZB,-DYno]E1)?QeuwfT@-';L^l{{o^O<* ,;KXgq}}sg[K=, -;GT_jrzzsjaUI>>OOOIII~~~www>>>'''}}}߂QQQBBB''' XXXppp888 SSS```ʠڸ{{{kkk|||mmmǛjjj|||}}}QQQLLLaaa{{{vvvAAAGGGSSSzzzdddBBBYYY)))aaa]]]KKK,,, ```|||lll...HHHdddWWW```666 郃jjjUUUgggggg㥥yyyttthhhSSS222 qqqbbbƈ{{{```Ǖժ}}}"""...麺sssYYY000...|||ǝ???888΄iiigggCCCaaa{{{ݳ γtttnnnӳhhhyyyiiibbbgggdddQQQVVVcccSSSHHH;;;OOO RRR{{{{{{rrrsssvvvllliiijjjݩQQQwwwtttpppyyyrrrrrrvvv```oooEEEJJJ___UUU|||gggmmm|||pppyyyrrrrrrvvv```gggڜIII Σ[[[```}}}zzzpppyyyrrrrrrvvv```bbb樨}}}~~~uuu###CCCddd}}}کjjjxxxMMMzzzͣzzzpppyyyqqqrrruuu___cccǧiiiGGG===QQQTTTHHH>>>:::555666@@@PPPxxxأPPP888OOOqqq󶶶|||yyyzzz{{{}}}iii^^^Ƀ{{{݉DDD222XXXrrr}}}wwwjjj^^^QQQJJJJJJQQQ]]]xxx՘QQQ ZZZzzztttXXX BBBrrrWWVJJIߔOOO~~~ʦdddzzzVVVyyy{{{{{{|||zzz{{{{{{{{{|||SSSXXX AAAnnnQPOƽ蘘OOO###DDD~~~DDDrrrOOO}}}VVV蹹___RRR***sssnnn===112qqqкޏ::: hhh___000gggHHHIIIزحpppѷQQQ ```zzzbbb```OOO}}}ͻlll```ZZZ\\\wwwUUUnnn~~~qqqwww```###QQQJJJOOOCCCPPPGGGWWWBBBKKKfffAAADDDOOOǀŬ &&&%%%### !!!!!!!!!!!! """eeevvveee###  """  PPP===lllddd߱ؠzzzggg⟟######fffRRR+++nnn$$$lll'''SSSMMMXXX###NNNϙqqqxxxۭ...zzzbbbsss```~~~~~~ΩTTTƴccc􈈈ڃ嬬WWW###߶谰wwwzzzrrrhhhPPPUUU&&&LLL###EEE###kkkζт///ϋʈ|||}}}555Ӡrrr!!!FFFɫWWW&&&zzzZZZԗiiiƬ:::ѸOOOر񣣣|||kkksss666Ėqqq]]]PPP[[[oooЅהPPP###rrr///}}}pppzzzwwwwwwccc⬬ppp]]]WWW%%%kkk###jjjvvvxxxㆆ䰰ddd#########"""ߖ䚚lllYYY~~~---```kkk ooo############餤~~~{{{尰eeeWWWtttLLLccc RRRإ~~~fff^^^^^^cccggguuuooofff___+++LLLLLL***ssseee666#########aaa󰰰pppbbbcccyyy峳eee<<<###uuurrrvvveeedddEEEFFFZZZWWW######NNN###qqq~~~~~~٪^^^!!!}}}ccceeefffeeeeee```XXXddd```TTTppp{{{'''XXXBBBmmmddd@@@&&&LLL|||ǒ<<<ddd((( \\\ '''---QQQ===~~~wwwqqqkkkddd```YYYVVVRRRcccuuupppppppppppppppppppppkkkmmmXXXLi,TTT{{{zzzgNNNݑqqqpppmmmooopppssswwwzzzzzznNNN⚚ssseeedddjjjooossswwwzzz P "X i eXNNN楥rrrppprrrxxx}}}<= $W5B?3"7]NNNޱrrr}}}}}}“%P i[_ iz(Qb5scDMMMؼoooΝAL7]a f j oyy%y iv=L/MMMžwww^^^cccbbbccceeeYYYttt٦Lez,Zc jsxb`z j m3HP+MMMڀhhhpppkkknnnrrrcccvvv汱Dz5[ g r rF֜Hv k g.FHQNNN»nnn񵵵.mxByH e ks0ˉ0 i f%HBHe0b +NNNͻmmmꬬ(d:aP52gV j m$u e%HDGB$%7H$NNNmmmߤtVA5*0ˇ`zKs(?H;"(/KQNNN lll֜SRteP>2(""5XP"*.8%sx"0?tbNNN~~~www lllþ̕2MnnW;+$z rs5>%u j nv~(DnPNNNzzzvvvwwwmmm;Í_||seaaQ+'(/QRVe(dNNN{{{wwwxxx{{{mmmQ+7/yK؋RNNN{{{xxxwww{{{nnn"a2~vz(?>x.`}XLٵ OOOtttzzzoooxxxB} j e e q"5F8>vu|V eQڞQOOO|||ooo|||yyyuuu4sa nz%8HK;?Axse0[ fve2NNNʩppp~~~zzzwwwvvvzzz||||~(>WXK>>KAv oKئV^cx"3NNNԳqqqzzzxxxwwwxxx|||: +B\iWH?BFF\u q0˯e icv5NNN޼rrryyyuuuzzz~~~RFgznLH?GKA\bu q(ƥo q[%MNNN ppp~~~R|iMHADXGRosu q$Àkv~ZNNNlllOOOWWWRRRWWWXXXOOOtttʘ f|RHFDPMWi|x o%e|oF2]NNNׇrrrwwwtttwwwzzziiiwwwԡ;{#]b"2.%"PPguz m"WeK&bNNNnnnݨ j|s} m$k?bu nWLMMMºӽooo籱Qڕ~ k%eMMMýȳooo񵵵e~ f; rNNNýmmmꬬPu}2NNNļmmm㥥(%OOO梢jjj圜 iz666ZZZ\\\aaaeeejjjooouuuzzzrrrQQQUUUWWW\\\bbbhhhoootttzzzssseeeUUU3G5`k,Wd'Uc!QbN`K^H\EZ BX ?V:630;;;===QhUA@=:751/,)ȿ;;;{{{===QeL8641/.+)%"Ľ;;;~~~}}}ttt===Q`B0/-+(&$#"#Ž<<<~~~}}}|||}}}{{{===R_<*)&%#$%)),<<<}}}}}}}}}===R^3"$$&),-/02<<@CG<<<===Q_?38:=ADGJKP<<<===QcI97068{&&&RRRFFFBBB???;;;888666333000...+++(((%%%--- ???<<<]]]WWW```eee???<<<ooo󧧧CCC:::]]]WWW000RRR⍍EEE```???///xxxIII///eeevvvYYY&&&ooo󧧧CCC\\\bbbRRR⍍EEE222VVVߟXXX///xxxIIIIII)))QQQSSS333vvvYYYMMM777%%%---bbb󃃃VVV555\\\bbbUUU???@@@vvv!!!VVVWWWVVVߟXXXPPPAAA&&&QQQ[[[ꍍTTTIII)))QQQSSSOOO㫫:::!!!<<<VVVꔔUUU+++MMMbbb󃃃VVVMMM୭666)))hhhDDDHHHAAA---UUU!!!VVVWWW[[[欬;;;"""QQQ"""KKK񪪪YYY222PPP[[[ꍍTTT555bbbӗ***sssdddFFFeee888OOO㫫VVVꔔUUUDDD{{{"""+++jjj666ٓFFFMMM୭HHHAAALLLҾ̻bbb///777yyy|||qqq'''[[[欬KKK񪪪YYYYYYϝCCCBBB񈈈'''bbbhhh&&&555bbbӗ***FFFeee888UUUǸ{{{(((VVVړߞCCC333ccc...DDD{{{"""666ٓFFFYYYŚPPP&&&kkkooorrr߭VVVkkkiiiLLLҾ̻bbb|||qqqMMMppp...???ҾXXXbbbкĵsss***MMM<<<YYYϝCCCbbbhhhaaa===KKKǻMMMUUUǸ{{{(((333cccGGG}}}wwwoooYYYŚPPPkkkiiiFFFJJJWWWOOOMMMppp...MMM<<<WWWddd***111vvvTTTPPPwww999RRRTTTPPPxxxCCC)))WWWJJJ:::SSS888,,,TRUEVISION-XFILE.gl-117-1.3.2/textures/redsand1.tga0000644000175000017500000004005410145416156015760 0ustar cedriccedricӽպپغԻԻڷշͽڽڽӼӼ뿺̼㾸ټӺڸջڿֿԺฺٿջոظտ̸պ̽ືո̺ؾպپԺ̾߸ԺոظԾٸոٺԸվ߿պո̸ոջͻһվ׾̸ӸոպӾջӻպջպͺ澾ջպӺվػպӾ̺طӸ͸ٸ࿸ռӽ̷ջڸպովջٸջԿӷ̽Ժ滻ӻӻ渾ջԺӺվืո̽ڻӷԽҿҸָպ̸ؿԺ߼Ӿҷ̺̾Իڷ̽ٸջպͺԺҸ߻ٿٺԷӺսؽ̽轷պո׽̸Ӽӻӷ̽Էո־̻ԿڷTRUEVISION-XFILE.gl-117-1.3.2/textures/redstone2.tga0000644000175000017500000014005410145416156016165 0ustar cedriccedric־ȼܮѳխدد֯Ɠݸʵٲ׭ܖ˰ÿƲκʝ쵵֯Ы鯯Եѹ̺ͯڴհٽ̾鷷Ƹ·۳ְԸҽս˽ʻſŰ趶ůڶֶᮮŵŹﹼ糳ߴֲܷɿŪܲزҹѮٳҳګ짧گׯܾ֭֯û˾չǾï˹ǻϿҾȾټȻǼȿ˵ҾȾûĻ˹һȻٻҼþִǿεÿ⹺⸹۾ǿҿdzЧϧﱴҨРϩ䬬۵շⷷӸӶӮԭ״ï朜Ҩծ֮۶׺Ӵ۳ӫ״֪гӲԵǵμĹ㶷۫ǯعʹ˜՜ܹѥٸկù㹺ޭ۫۲TRUEVISION-XFILE.gl-117-1.3.2/textures/rocks1.tga0000644000175000017500000001005410145416156015456 0ustar cedriccedric@@ܻ˥ԷڶӱдҶ¥ĿŻȻȯҷӲܝݻŸ렶җ素ڷŶ̿⺥㩷Ѷҷ۲¿IJݫº֥ҧǩĶŚ̺答׫ѻк䩶ˢ޶̢ȧԽǯ˸Ի̸һට̲߲Ҷ׻˫޻Ӹĩԫ˻޿续ۭүλвآ±ұ緿ȯ栫̐һضܥ˚Կ⽯ڷԪڽ߽IJ颲Բޚ۠ŸЯҭпĥſſΠźֿȷ޲ݭߪ淸ߴ锻޲ת­ԠРοڤؚĠһίίښԱ¥޶Τظ˯ڷ̭ܯעѭ֤ḿ֌奠⻤̻ӲĠЩܴ̠ܷһĽ߭ȯĸ緱ŲλζԷ߭ں涠ߺ䫿޻Ѹ²ӽ޿Я޸һ̻ȿظ班ಧ۽ػڧק˫ֿпźȸ¶Ŕວǽ컩ҸڿӴֿإ岫ӷӝ̠өȱԷ­ࠩ㸶ȸڧ޸ֺײ̩ڠ䫠Ǻ»ԠǸ۲±׿ڿķβػѴЏѤŶ̫ȶдҚ±Ҹ̩Ѣۻۻ׷Դĝ븿߻߸֪ۯů´ȸӽű⴯ݿ¿ضڿ̔ݭ筶ӷиԻܚָީȿºԶ̶кҴԥοſ޴Ǻȸ⭫†Мȫᩢš˲ ȻםδĻڸ̯ԐҫȪҜޯ฻һԭԿк¸׻˷׽įֿ̪Ҹҷ̲婷ڧ߭¿TRUEVISION-XFILE.gl-117-1.3.2/textures/roof.tga0000644000175000017500000000605410145416156015226 0ustar cedriccedric TRUEVISION-XFILE.gl-117-1.3.2/textures/sand1.tga0000644000175000017500000001005410145416156015262 0ustar cedriccedric@@TRUEVISION-XFILE.gl-117-1.3.2/textures/ship2_fr.tga0000644000175000017500000003005410145416156015772 0ustar cedriccedric@@~~~~~~~~~|||{{{~~~~~~{{{zzzzzz}}}zzzzzzzzz}}}||||||~~~}}}|||~~~~~~~~~~~~}}}~~~~~~~~~~~~~~~~~~}}}~~~~~~||||||{{{{{{}}}|||~~~|||}}}~~~~~~|||{{{}}}}}}|||zzzxxxxxxyyy{{{}}}}}}{{{||||||~~~}}}{{{xxxwwwzzz{{{zzzvvvsssvvvyyy{{{|||{{{zzz{{{zzzzzzxxxvvvwwwwwwyyywwwsssrrruuuyyy~~~}}}{{{yyyyyywwwwwwuuuuuutttvvvuuutttqqqsssvvvxxx~~~|||zzzyyywwwttttttssssssttttttrrrqqqssswwwyyy~~~~~~}}}zzzxxxsssrrrqqqsssttttttssspppsssxxx|||}}}zzzuuurrrrrrtttuuuuuutttssstttyyy~~~|||xxxuuuttttttvvvwwwttttttuuuyyy|||yyyvvvvvvwwwyyyvvvuuuvvvzzz}}}~~~}}}~~~{{{zzzyyyyyyvvvuuuvvvyyyzzz|||{{{~~~{{{xxxuuutttuuuwwwyyyzzzzzz|||yyyvvvttttttvvvxxxzzz{{{~~~}}}wwwttttttuuuyyy||||||xxxuuuuuuwwwzzz|||}}}|||xxxwwwzzz||||||~~~|||xxxzzz{{{|||~~~{{{{{{}}}}}}~~~}}}|||~~~}}}~~~~~~|||}}}~~~}}}{{{}}}~~~}}}}}}|||zzz}}}|||}}}~~~~~~}}}{{{||||||}}}|||zzz~~~xxx{{{{{{|||}}}|||zzzxxxyyyyyy{{{{{{{{{}}}vvvwwwxxxzzz~~~{{{yyyxxxvvvwwwxxxzzz{{{}}}ssstttwww{{{}}}}}}}}}~~~~~~~~~~~~~~~|||zzzyyyxxxwwwxxxxxxyyy}}}~~~sssuuuwwwzzz{{{|||}}}||||||{{{~~~~~~~~~}}}yyywwwxxxyyyxxxvvvxxxyyy}}}~~~~~~vvvxxxyyyyyyzzzzzz|||{{{zzzzzz~~~~~~~~~~~~|||zzzxxxxxxzzzyyyxxxzzz{{{~~~~~~}}}~~~yyyzzz{{{yyyxxxyyy|||zzzxxx{{{~~~}}}|||}}}~~~~~~~~~|||}}}}}}zzzzzzzzzyyyxxxxxx{{{}}}~~~~~~|||{{{}}}{{{|||{{{yyyxxxxxxzzzyyywww{{{}}}}}}}}}||||||}}}~~~~~~}}}}}}||||||{{{}}}||||||yyyyyyyyy{{{~~~{{{zzz|||{{{{{{zzzzzzyyywwwxxxwwwwwwzzzzzz|||~~~~~~}}}}}}}}}}}}~~~}}}zzzzzz{{{yyy{{{{{{|||zzz{{{{{{}}}{{{|||}}}||||||{{{zzzyyywwwwwwvvvwwwwwwwwwyyy}}}}}}~~~}}}}}}}}}}}}~~~{{{zzzyyyxxxwwwxxxyyyyyyzzz{{{|||}}}}}}|||}}}~~~}}}|||zzzyyyyyyyyyxxxuuuwwwwwwuuuzzz|||}}}~~~|||}}}}}}~~~|||yyyvvvvvvuuuvvvuuuvvvwwwyyy{{{}}}}}}}}}|||yyyzzzzzzyyywwwvvvvvvwwwyyy{{{|||}}}|||||||||zzzwwwvvvuuutttsssttttttvvvzzz~~~||||||{{{zzzwwwvvvwwwwwwyyyzzz|||~~~~~~}}}}}}~~~}}}{{{zzzwwwtttrrrsssrrrsssvvvxxx~~~~~~~~~|||{{{yyyyyyxxxyyyxxxxxx{{{}}}~~~}}}~~~}}}|||wwwtttpppqqqqqqtttvvvyyy{{{~~~~~~}}}|||}}}}}}|||{{{yyyxxxxxx{{{}}}~~~~~~}}}xxxssspppqqqqqquuuvvvyyyyyyzzz}}}~~~~~~~~~{{{zzzzzzzzz{{{|||}}}~~~~~~yyytttrrrqqqqqqtttwwwxxxxxxzzz}}}||||||{{{zzz|||}}}~~~~~~}}}|||yyyuuuuuutttvvvvvvxxxxxxwwwxxxzzz~~~~~~~~~{{{{{{||||||||||||||||||~~~{{{zzzzzzyyyyyyyyyyyyxxxxxxyyyyyyyyyyyy{{{~~~~~~{{{{{{{{{|||{{{{{{{{{{{{|||}}}~~~|||zzzyyy|||{{{zzz{{{{{{{{{zzzzzzyyyyyyyyy{{{|||~~~|||zzzzzzzzzyyyyyyzzzzzz{{{|||~~~~~~|||{{{zzz||||||{{{|||zzz{{{|||{{{zzzyyyzzzzzz{{{}}}{{{zzzzzzxxxvvvwwwvvvwwwyyyyyy|||~~~~~~}}}|||{{{zzz}}}~~~|||{{{}}}}}}|||zzzyyyzzzzzz|||~~~{{{}}}zzzyyyvvvuuutttuuuvvvwwwwwwzzz}}}~~~~~~}}}}}}~~~}}}}}}~~~~~~}}}zzz{{{zzzzzz{{{~~~~~~zzz~~~|||yyywwwtttttttttuuuvvvwwwxxx|||}}}~~~~~~~~~zzzzzzyyy{{{|||}}}~~~{{{{{{xxxvvvuuuuuuuuuvvvvvvxxxyyy{{{}}}~~~}}}{{{zzzzzz|||}}}}}}~~~|||TRUEVISION-XFILE.gl-117-1.3.2/textures/ship_fra.tga0000644000175000017500000003005410145416156016051 0ustar cedriccedric@@~~~~~~~~~|||{{{~~~~~~{{{zzzzzz}}}zzzzzzzzz}}}||||||~~~}}}|||~~~~~~~~~~~~}}}~~~~~~~~~~~~~~~~~~}}}~~~~~~||||||{{{{{{}}}|||~~~|||}}}~~~~~~|||{{{}}}}}}|||zzzxxxxxxyyy{{{}}}}}}{{{||||||~~~}}}{{{xxxwwwzzz{{{zzzvvvsssvvvyyy{{{|||{{{zzz{{{zzzzzzxxxvvvwwwwwwyyywwwsssrrruuuyyy~~~}}}{{{yyyyyywwwwwwuuuuuutttvvvuuutttqqqsssvvvxxx~~~|||zzzyyywwwttttttssssssttttttrrrqqqssswwwyyy~~~~~~}}}zzzxxxsssrrrqqqsssttttttssspppsssxxx|||}}}zzzuuurrrrrrtttuuuuuutttssstttyyy~~~|||xxxuuuttttttvvvwwwttttttuuuyyy|||yyyvvvvvvwwwyyyvvvuuuvvvzzz}}}~~~}}}~~~{{{zzzyyyyyyvvvuuuvvvyyyzzz|||{{{~~~{{{xxxuuutttuuuwwwyyyzzzzzz|||yyyvvvttttttvvvxxxzzz{{{~~~}}}wwwttttttuuuyyy||||||xxxuuuuuuwwwzzz|||}}}|||xxxwwwzzz||||||~~~|||xxxzzz{{{|||~~~{{{{{{}}}}}}~~~}}}|||~~~}}}~~~~~~|||}}}~~~}}}{{{}}}~~~}}}}}}|||zzz}}}|||}}}~~~~~~}}}{{{||||||}}}|||zzz~~~xxx{{{{{{|||}}}|||zzzxxxyyyyyy{{{{{{{{{}}}vvvwwwxxxzzz~~~{{{yyyxxxvvvwwwxxxzzz{{{}}}ssstttwww{{{}}}}}}}}}~~~~~~~~~~~~~~~|||zzzyyyxxxwwwxxxxxxyyy}}}~~~sssuuuwwwzzz{{{|||}}}||||||{{{~~~~~~~~~}}}yyywwwxxxyyyxxxvvvxxxyyy}}}~~~~~~vvvxxxyyyyyyzzzzzz|||{{{zzzzzz~~~~~~~~~~~~|||zzzxxxxxxzzzyyyxxxzzz{{{~~~~~~}}}~~~yyyzzz{{{yyyxxxyyy|||zzzxxx{{{~~~}}}|||}}}~~~~~~~~~|||}}}}}}zzzzzzzzzyyyxxxxxx{{{}}}~~~~~~|||{{{}}}{{{|||{{{yyyxxxxxxzzzyyywww{{{}}}}}}}}}||||||}}}~~~~~~}}}}}}||||||{{{}}}||||||yyyyyyyyy{{{~~~{{{zzz|||{{{{{{zzzzzzyyywwwxxxwwwwwwzzzzzz|||~~~~~~}}}}}}}}}}}}~~~}}}zzzzzz{{{yyy{{{{{{|||zzz{{{{{{}}}{{{|||}}}||||||{{{zzzyyywwwwwwvvvwwwwwwwwwyyy}}}}}}~~~}}}}}}}}}}}}~~~{{{zzzyyyxxxwwwxxxyyyyyyzzz{{{|||}}}}}}|||}}}~~~}}}|||zzzyyyyyyyyyxxxuuuwwwwwwuuuzzz|||}}}~~~|||}}}}}}~~~|||yyyvvvvvvuuuvvvuuuvvvwwwyyy{{{}}}}}}}}}|||yyyzzzzzzyyywwwvvvvvvwwwyyy{{{|||}}}|||||||||zzzwwwvvvuuutttsssttttttvvvzzz~~~||||||{{{zzzwwwvvvwwwwwwyyyzzz|||~~~~~~}}}}}}~~~}}}{{{zzzwwwtttrrrsssrrrsssvvvxxx~~~~~~~~~|||{{{yyyyyyxxxyyyxxxxxx{{{}}}~~~}}}~~~}}}|||wwwtttpppqqqqqqtttvvvyyy{{{~~~~~~}}}|||}}}}}}|||{{{yyyxxxxxx{{{}}}~~~~~~}}}xxxssspppqqqqqquuuvvvyyyyyyzzz}}}~~~~~~~~~{{{zzzzzzzzz{{{|||}}}~~~~~~yyytttrrrqqqqqqtttwwwxxxxxxzzz}}}||||||{{{zzz|||}}}~~~~~~}}}|||yyyuuuuuutttvvvvvvxxxxxxwwwxxxzzz~~~~~~~~~{{{{{{||||||||||||||||||~~~{{{zzzzzzyyyyyyyyyyyyxxxxxxyyyyyyyyyyyy{{{~~~~~~{{{{{{{{{|||{{{{{{{{{{{{|||}}}~~~|||zzzyyy|||{{{zzz{{{{{{{{{zzzzzzyyyyyyyyy{{{|||~~~|||zzzzzzzzzyyyyyyzzzzzz{{{|||~~~~~~|||{{{zzz||||||{{{|||zzz{{{|||{{{zzzyyyzzzzzz{{{}}}{{{zzzzzzxxxvvvwwwvvvwwwyyyyyy|||~~~~~~}}}|||{{{zzz}}}~~~|||{{{}}}}}}|||zzzyyyzzzzzz|||~~~{{{}}}zzzyyyvvvuuutttuuuvvvwwwwwwzzz}}}~~~~~~}}}}}}~~~}}}}}}~~~~~~}}}zzz{{{zzzzzz{{{~~~~~~zzz~~~|||yyywwwtttttttttuuuvvvwwwxxx|||}}}~~~~~~~~~zzzzzzyyy{{{|||}}}~~~{{{{{{xxxvvvuuuuuuuuuvvvvvvxxxyyy{{{}}}~~~}}}{{{zzzzzz|||}}}}}}~~~|||TRUEVISION-XFILE.gl-117-1.3.2/textures/smoke1.tga0000644000175000017500000004005410145416156015456 0ustar cedriccedric@@      "(+-,("  %/8<>=80'  #&&#!")2=FLNMH?5*"  &18<<8437?KSY\[VMB70,*(&$$%$   )6DMSSOIFGNV`eigaXMD><;975553.'   +7FT_egc^XWZajosrkaVMJKKJHFEDA<4+"  #)09ER`jqutoiefjqx|{sh]VTWYYWTSQMH@8/%   (.4:@HQ[fqy~{upnpwync]^bffda^YUNHB;2'"-6>DJPU[bkt}~vtu{~rjginrrokf`YRLHD<1%   ,8BKRX]aehox{vw~yrrv{~}ztme\TNLIE;.  (5ALU]dhlnpu|xx~}~}uk`VPONLE9+  !/=HS\emsvwx}{z~sg[UTUVQG:+  $4ANXcmu{{~ymc]]_a`XK<, %4CP\gr{}}|tlhilpoj^N<*  #2AO]ju~}xssvy~}xo_L6" !/>M\ju~~}zz{zlXB+ #/=LZhrz|zz{}tbL4 (5BO[ensy~~}~{yxy{}yjU>) &2?KV`fknrw||wsqt{~{ywvx{{n^J4!  "1?KXahlllnrz{{wqllr||wsqux}{rfUA+ )9IWcmrsrootxzyvplmvztpqvz}}{vm_K6!-?O^ku|}{wwz{|{wqnr|{ww{~~|ysfT=& .ARbp{ztrw}vjXA) ,?Rcr~~xvzwkX@)  )+0CUcmuznbSB1!  !3EUajq{{pdXI9) *:JWajqz{wtu|ui\O@0  &5CQ\els{}~~|umgfm{{naSD3# #2AOYbjqw~{y||tu~yocYV]mrdTC2! ->MXbipw|{tsytlnywjZMIPczudR?,!4FU`hpv||qlnw{ohkwvgUFAI\stbL8% #7JZenu{~rihoxwmgjuygSD?H[o~~o[D/"5IZfpx}ulimt|}vlgit}jUFAIZkx}ueP:% /BTbmv{}{vrqyyroqv{~}vnhisoYICIYfqwwrgVB- &7HXemsrme^_gu|xvx{yqjjss]KCGR_imleXF3! )9IWafe^SLNZl||{z|~}vpovvaNBCKV`ebYI7%  *8GRWVOEAETgy}yutvy~|vv{yfREAEOZ^ZN>+ *7CIID>=FVi{~wpkimt}||}m[MEHOVXSE4"  )3;=<<@K]o}ukb_cmzxiYPORVTK<, %-37=FUeuxk_Y\gxtf^YWVOC4#  "+4?L[kz~pbZ[fw~~}phaZRH:) $2AP_mxwjaajy~xw}vkcXL=.  /AQ`lu|~slkr}yqpw}ul`RC2" +=N]gov{~zwv{vljsxrh[K8' &8HWahnrvy||z{}wkisytlcSA-.?NX_dglqtwy{{pnvytnfZJ7$  $3@JQVZ_ekpty}tryzsmg]O>+%/8>BGNV^fmt{}vu{zsmf]QB0 %*.3:DNYbks{zutw|}wqjd\RC4#  &1=IT]dmv|}xsqqrtvutpkf`ZPD6'  !,7AIPW_fjkkihhijkjifb]YTMD7) &-38?EKOQTWZ]_`a_\XTOJD=4*  "&+/4793-%   &-6>DEDA<61,'"  $,243/*$   !!   TRUEVISION-XFILE.gl-117-1.3.2/textures/smoke2.tga0000644000175000017500000004005410145416156015457 0ustar cedriccedric@@            !!   !#"   !##!  !"##" !!! !##$$$#!!#"   !#$%&''&%#!!##!   !##$%&()))(&$! !"! !#$%%%&'())))'$! !!   #$%%%%%&'()))'%#  !!  !######$%&'('&%#!  !""   !!! !#$%%%%$#"!!!! !"#!  !"#$$$$$$$$$#! !#"   !"#$%%&&&%$# !!!    "#%%&'''%$!   !#%&''''&$"   !$%&'''&%$#!   !!  #%%&&&&%%%$#!  !#$$#! "$&&'&&%%%%$$"   !#%&&&%$#! !#$&'('&%%%%%%%#!  !$%&'((('&%$##$%&(((('%%%%%&%%" #%'((()))(('&&&&'()))('&%%%&&&%"  !%()))))(((((((((())))(('&&&&&%$! #&)**))(''(())))))))))((('''&%$! !&)**)('&&&'()))))((((((((('%$!   %()))'&%$%%'()))('&&''((((&$!   #&()(&%###$%'()('&%%%&'(('%#    $'('&$"!!"#%'''&%%$%%&''&$    !%&&%#!  "$%''&%$##$%%%$"   #%%%#!!#%&'&%$####$##     #$$#! #$&'&%$#!!!!!!   ###!  #$&''%$!  !###! !#$&'&%#   ####"!!#$%&%$!  !$$$##""#$$$#     #$$#"!!!!!! !!  !##! !!                              TRUEVISION-XFILE.gl-117-1.3.2/textures/smoke3.tga0000644000175000017500000000605410145416156015462 0ustar cedriccedric          ###$$$  $$$###  !!!((()))&&&!!! """"""%%%***(((!!!   ''')))&&&$$$$$$'''++++++'''!!! &&&***)))"""  ###%%%%%%%%%'''+++000000---'''!!! %%%((((((###   ###%%%'''+++...222222000,,,'''######%%%((()))&&&###""""""   ###&&&(((+++///000222222222000---)))((())),,,---+++*********((("""&&&)))+++...000222222222222333333111///---...111111///......///,,,%%%  &&&---///000111333333222000000222333222111000111333333000...---...,,,%%% !!!***000222111111222111///......000111111000000222222111---******+++***$$$  ###***///000000//////...------...//////......000111000---(((%%%&&&))))))%%% %%%))),,,---...............///000111///......000222///***$$$"""%%%)))+++''' %%%((())))))+++...000111000111333444333111...///111222///((("""!!!$$$))),,,(((  %%%***+++))))))+++///333555555555666777444000---...000111---'''"""!!!$$$((()))%%% &&&***+++((('''+++000555888888888999888444///,,,,,,---...+++'''###"""###$$$### !!!%%%%%%$$$%%%***000666888999::::::888333...++++++,,,+++***((('''&&&$$$!!!  ###***111666888999::::::777222///---------,,,++++++,,,+++'''   !!!***111666777777888888666222000000000///------...000///)))   )))111444333222222222111//////000111000---,,,...111000***  &&&---///---++++++,,,---,,,,,,...---,,,)))***,,,000000))) """((()))'''%%%%%%(((***+++***)))(((&&&%%%&&&***///000***  %%%&&&$$$"""###'''+++,,,***'''$$$###"""%%%***000111+++ !!!''''''$$$!!!###''',,,---***'''$$$######&&&+++///000))) ###))))))%%%""""""&&&***+++***(((''''''((((((***,,,***$$$ $$$***)))$$$ ###%%%&&&''')))+++,,,***'''%%%""" $$$$$$###(((+++,,,((("""  """&&&&&&!!!        TRUEVISION-XFILE.gl-117-1.3.2/textures/sun2.tga0000644000175000017500000004005410145416156015146 0ustar cedriccedric@@     !"##$$$##"!   !#%&()**+++**)(&%#!   #%(*,./123333321/.,*(%#    #'),/2468:;<<<<<;:8642/,)'#    #'*-147:=?ACDEFFFEDCA?=:741-*'#   "%)-159<@CFIKMOPPQPPOMKIFC@<951-)%"  #',049=AEIMPSVXZ[[\[[ZXVSPMIEA=940,'#   $)-27:999999999999:;;;:9999999999999999999;Lkq_^^^^^_kqL;9999;?HUqglpkplprgQ?:999999999:>GLLLG>:99999999999999999;Kkp_^^^^^_kpK;99:>HUqhitb}___b}okQ?99999999:?QrglpkplprgQ?:9999999999999999:Grgb}^^^^^b}rgG:9:?Qqgitb}_^^^^^b}rgG:9999999?Qokb}___b}okQ?99999999999999999?Qokb}___b}okQ?9:?Qokb}_^^^^^^^_kpK;999999:Grgb}^^^^^b}rgG:9999999999999999:?QrglpkplprgQ?::?Qokb}^^^^^^^^^_kqL;999999<Mkp_^^^^^_kpK;999:;;;:999999999:>GLLLG>::?Qokb}^^^^^^^^^^_kpK;999:;?I|Zgu^^^^^^_kqL;9:>GLLLG>:999999999:;;;:9:?Qokb}^^^^^^^^^^^b}rgG:9:>GMUqhhua^^^^^^_kqL;:?QrglpkplprgQ?:9999999999999:?Qokb}^^^^^^^^^^_b}okQ?9:?Qrgkphub}_^^^^^^^_kqL;?Qokb}___b}okQ?999999999999:?Qokb}^^^^^^^^^_b}itqgQ?:9?Qokb}__^^^^^^^^^_kpK;Grgb}^^^^^b}rgG:99999999999?Qokb}^^^^^^^^^b~itqhUH>:9:Grgb}^^^^^^^^^^^^b}rgG;Kkp_^^^^^_kpK;9999999999;Hqgb}^^^^^^^^^b}nlUH?;999;Kkp_^^^^^^^^^^^b}okQ?;Lkq_^^^^^_kqL;9999999999?Uht_^^^^^^^^b}okQ@;99999;Lkq_^^^^^^^^^^b}okQ?:;Kkp_^^^^^_kpK;999999999:Gqgb~^^^^^^^^b}okQ?:999999;Kkp_^^^^^^^^_b}okQ?:9:Grgb}^^^^^b}rgG:999999999;Kkp_^^^^^^^b}okQ?:9999999:Grgb}^^^^^^^b~itqgQ?:999?Qokb}___b}okQ?9999999999;Lkq_^^^^^^a~nlQ?:999999999?Qokb}_____b}nlUH>:9999:?QrglpkplprgQ?:9999999999;Lkq_^^^^^^hu~V@:9999999999:?QrglpkpkpkplprgQ@;9999999:>GLLLG>:999:9999999;Lkq_^^^^^_jqM<;;;:99999999:>GLLLLLG>:999999999:;<<<;:9999G?;99999;Kkp_^^^^^_kqQILLLG>:99999999:;;;;;:9999999999:>GLLLG>:999qgUH?;;;;<Hrgb}^^^^^b~mmw_qhlpkplprgQ?:99999999999999999999999:?QrglpkplprgQ?:99b}itqhUMLLLHDQokb}___b}kqpikqb}___b}okQ?99999999999999999999999?Qokb}___b}okQ?99^_b}hukqkpkplprgRFRrglpkplpqhw_mmb~^^^^^b}rgG:99:;;;:99999999999999:Grgb}^^^^^b}rgG:9^^^_____b}okQDHLLLIQkq_^^^^^_kpK;:>GLLLG>:999999999999;Kkp_^^^^^_kpL;9^^^^^^^^^b}rgH<;;;<Lkq_^^^^^_kqL;?QrglpkplprgQ?:99999999999;Lkq_^^^^^^huU?9^^^^^^^^^_kpK;999;Kkp_^^^^^_kpL@Qokb}___b}okQ?99:;;;:9999;Lkq_^^^^^^b~qhH;^^^^^^^^^_kqL;999:Grgb}^^^^^b}rgIIrgb}^^^^^b}rgG;>GLLLG>:99;Lkq_^^^^^^_htU?^^^^^^^^^_kpK;9999?Qokb}___b}okQ@Lkp_^^^^^_kpLAQrglpkplprgQ?:9;Kkp_^^^^^^^b~qgG^^^^^^^^^b}rgG:9999:?QrglpkplprgQ?;Lkq_^^^^^_jqRSokb}___b}okQ?9:Grgb}^^^^^^^_kpK________b}okQ?999999:>GLLLG?:<Mjq_^^^^^_jr{Zqib}^^^^^b}rgG:9?Qnla~^^^^^^_kqLkpkpkpkpkpkpkplprgQ?:99999999:;;;::?I|Zgu^^^^^^_jsx^jr_^^^^^_kpK;9:@Uht_^^^^^_kpKLLLLLLLLG>:9999999999999:?Qqghua^^^^^^_jsx_js_^^^^^_kqL;99;Hqgb}^^^^^b}rgG;;;;;;;;:999:;;;:9999999?Qokb}_^^^^^^^_jsx^jr_^^^^^_kpK;999?Qokb}___b}okQ?9999999999:>GLLLG>:9999:Grgb}^^^^^^^^^_jq{Zqib}^^^^^b}rgG:999:?QrglpkplprgQ?:999999999:?QrglpkplprgQ?:999;Kkp_^^^^^^^^^b}qgMRokb}___b}okQ?99999:?IMNMI?:9999999999?Qokb}___b}okQ?999;Lkq_^^^^^^^^b}okQ?@QrglpkplprgQ?:99999:?IMNMI?:999999999:Grgb}^^^^^b}rgG:99;Kkp_^^^^^^^b}okQ?::>GLLLG>:99999:?QrglpkplprgQ?:99999999;Kkp_^^^^^_kpK;99:Grgb}^^^^^_b}okQ?:999:;;;:9999999?Qokb}___b}okQ?99999999;Lkq_^^^^^_kqL;999?Qokb}___b}itqgQ?:999999999999999:Grgb}^^^^^b}rgG99999999;Lkq_^^^^^_kqL;999:?QrglpkplpqgUH>:9999999999999999;Kkp_^^^^^_kpM99999999;Lkq_^^^^^_jqM;9999:>GLLLG?;999999999999:;;;:9;Lkq_^^^^^^gu{Z99999999;Lkq_^^^^^^huU?999999:;;;:999999999999:>GLLLG>;Lkq_^^^^^^ahu99999999;Lkq_^^^^^^b~qgG:999999999999999999999:?QrglpkplprgQAMkq_^^^^^^^_99999999;Kkp_^^^^^^_kpK;99999999999999999999:?Qokb}___b}okRQkp_^^^^^^^^99999999:Gqgb~^^^^^^_jqM;99999999999999999999?Qokb}^^^^^b}qh~Vqhb}^^^^^^^^999999999?Uhu^^^^^^^hu~V@;;:9999999:;;;:9999;Hqgb}^^^^^^_kpQRokb}^^^^^^^999999999;Mjq_^^^^^^a~nl~VMLG>:999:>GLLLG>:9:@Uht_^^^^^^_kqMAQokb}^^^^^^999999999;Kkp_^^^^^^^b~hukqlprgQ?:9:?QrglpkplprgQ?:?Qnla~^^^^^^^_kpK;?Qokb}^^^^^999999999:Gqgb~^^^^^^^^___b}okQ?:?Qokb}___b}okQ@Hrgb}^^^^^^^^b}rgG::?Qokb}____9999999999?Uht_^^^^^^^^^^^b}rgG;Grgb}^^^^^b}rgIMkp_^^^^^^^a~nlQ?99:?Qrglpkpkpkp9999999999;Hqgb}^^^^^^^^^^^_kpK<Kkp_^^^^^_kpMNkq_^^^^^^_htU@:999:>GLLLL99999999999?Qokb}^^^^^^^^^^_kqL<Lkq_^^^^^_kqNNkq_^^^^^^b~qhH;999999:;;;;;;;;;;:9999:?Qokb}^^^^^^^^^_kpK<Lkq_^^^^^_kqNNkq_^^^^^^huU?999999999999LLLLLLG>:999:?Qokb}_^^^^^^^b}rgG<Lkq_^^^^^_kqNMkp_^^^^^_kpL;999999999999kpkpkpkpkplprgQ?:999:?Qqgitb}_____b}okQ?;Kkp_^^^^^_jqNJrgb}^^^^^b}rgG:999999999999______b}okQ?9999:>HUqglpkpkpkplprgQ?::Grgb}^^^^^^hu~VEQokb}___b}okQ?9999999999999^^^^^^^b}rgG:99999;?GLLLLLG>:99?Qokb}^^^^^a~nlRFRrglpkplprgQ?:9999999999999^^^^^^^_kpK;9999999:;;;;;:9999:?Qnla~^^^^^b}okQDHLLLG>:99999999999999^^^^^^^_kqL;9999999999999999999:@~Vhu^^^^^^b}rgH<;;;:9999999999999999^^^^^^^_kpK;99999999999999999999;Mjq_^^^^^_kpK;99999999999999999999^^^^^^^b}rgG:99999999999999999999;Lkq_^^^^^_kqL;99999999999999999999^^^^^^a~nlQ?999999999999999999999;Lkq_^^^^^_kqL;99999999999999999999^^^^^^hu~V@:999999999999999999999;Lkq_^^^^^_kqL;99999999999999999999TRUEVISION-XFILE.gl-117-1.3.2/textures/tent4_fr.tga0000644000175000017500000003005410145416156016003 0ustar cedriccedric@@999?Uhu^^^^^huU?9999999999999999999999999999999999999999999999999999:Gqgb~^^^^^b~qgG:99999999:;;;:99999999999999999999999999999999999999;Kkp_^^^^^_kpK;999999;?GLLLG>:999999999999:;;;:9999999999999999999;Lkq_^^^^^_kqL;9999;?HUqglpkplprgQ?:999999999:>GLLLG>:99999999999999999;Kkp_^^^^^_kpK;99:>HUqhitb}___b}okQ?99999999:?QrglpkplprgQ?:9999999999999999:Grgb}^^^^^b}rgG:9:?Qqgitb}_^^^^^b}rgG:9999999?Qokb}___b}okQ?99999999999999999?Qokb}___b}okQ?9:?Qokb}_^^^^^^^_kpK;999999:Grgb}^^^^^b}rgG:9999999999999999:?QrglpkplprgQ?::?Qokb}^^^^^^^^^_kqL;999999<Mkp_^^^^^_kpK;999:;;;:999999999:>GLLLG>::?Qokb}^^^^^^^^^^_kpK;999:;?I|Zgu^^^^^^_kqL;9:>GLLLG>:999999999:;;;:9:?Qokb}^^^^^^^^^^^b}rgG:9:>GMUqhhua^^^^^^_kqL;:?QrglpkplprgQ?:9999999999999:?Qokb}^^^^^^^^^^_b}okQ?9:?Qrgkphub}_^^^^^^^_kqL;?Qokb}___b}okQ?999999999999:?Qokb}^^^^^^^^^_b}itqgQ?:9?Qokb}__^^^^^^^^^_kpK;Grgb}^^^^^b}rgG:99999999999?Qokb}^^^^^^^^^b~itqhUH>:9:Grgb}^^^^^^^^^^^^b}rgG;Kkp_^^^^^_kpK;9999999999;Hqgb}^^^^^^^^^b}nlUH?;999;Kkp_^^^^^^^^^^^b}okQ?;Lkq_^^^^^_kqL;9999999999?Uht_^^^^^^^^b}okQ@;99999;Lkq_^^^^^^^^^^b}okQ?:;Kkp_^^^^^_kpK;999999999:Gqgb~^^^^^^^^b}okQ?:999999;Kkp_^^^^^^^^_b}okQ?:9:Grgb}^^^^^b}rgG:999999999;Kkp_^^^^^^^b}okQ?:9999999:Grgb}^^^^^^^b~itqgQ?:999?Qokb}___b}okQ?9999999999;Lkq_^^^^^^a~nlQ?:999999999?Qokb}_____b}nlUH>:9999:?QrglpkplprgQ?:9999999999;Lkq_^^^^^^hu~V@:9999999999:?QrglpkpkpkplprgQ@;9999999:>GLLLG>:999:9999999;Lkq_^^^^^_jqM<;;;:99999999:>GLLLLLG>:999999999:;<<<;:9999G?;99999;Kkp_^^^^^_kqQILLLG>:99999999:;;;;;:9999999999:>GLLLG>:999qgUH?;;;;<Hrgb}^^^^^b~mmw_qhlpkplprgQ?:99999999999999999999999:?QrglpkplprgQ?:99b}itqhUMLLLHDQokb}___b}kqpikqb}___b}okQ?99999999999999999999999?Qokb}___b}okQ?99^_b}hukqkpkplprgRFRrglpkplpqhw_mmb~^^^^^b}rgG:99:;;;:99999999999999:Grgb}^^^^^b}rgG:9^^^_____b}okQDHLLLIQkq_^^^^^_kpK;:>GLLLG>:999999999999;Kkp_^^^^^_kpL;9^^^^^^^^^b}rgH<;;;<Lkq_^^^^^_kqL;?QrglpkplprgQ?:99999999999;Lkq_^^^^^^huU?9^^^^^^^^^_kpK;999;Kkp_^^^^^_kpL@Qokb}___b}okQ?99:;;;:9999;Lkq_^^^^^^b~qhH;^^^^^^^^^_kqL;999:Grgb}^^^^^b}rgIIrgb}^^^^^b}rgG;>GLLLG>:99;Lkq_^^^^^^_htU?^^^^^^^^^_kpK;9999?Qokb}___b}okQ@Lkp_^^^^^_kpLAQrglpkplprgQ?:9;Kkp_^^^^^^^b~qgG^^^^^^^^^b}rgG:9999:?QrglpkplprgQ?;Lkq_^^^^^_jqRSokb}___b}okQ?9:Grgb}^^^^^^^_kpK________b}okQ?999999:>GLLLG?:<Mjq_^^^^^_jr{Zqib}^^^^^b}rgG:9?Qnla~^^^^^^_kqLkpkpkpkpkpkpkplprgQ?:99999999:;;;::?I|Zgu^^^^^^_jsx^jr_^^^^^_kpK;9:@Uht_^^^^^_kpKLLLLLLLLG>:9999999999999:?Qqghua^^^^^^_jsx_js_^^^^^_kqL;99;Hqgb}^^^^^b}rgG;;;;;;;;:999:;;;:9999999?Qokb}_^^^^^^^_jsx^jr_^^^^^_kpK;999?Qokb}___b}okQ?9999999999:>GLLLG>:9999:Grgb}^^^^^^^^^_jq{Zqib}^^^^^b}rgG:999:?QrglpkplprgQ?:999999999:?QrglpkplprgQ?:999;Kkp_^^^^^^^^^b}qgMRokb}___b}okQ?99999:?IMNMI?:9999999999?Qokb}___b}okQ?999;Lkq_^^^^^^^^b}okQ?@QrglpkplprgQ?:99999:?IMNMI?:999999999:Grgb}^^^^^b}rgG:99;Kkp_^^^^^^^b}okQ?::>GLLLG>:99999:?QrglpkplprgQ?:99999999;Kkp_^^^^^_kpK;99:Grgb}^^^^^_b}okQ?:999:;;;:9999999?Qokb}___b}okQ?99999999;Lkq_^^^^^_kqL;999?Qokb}___b}itqgQ?:999999999999999:Grgb}^^^^^b}rgG99999999;Lkq_^^^^^_kqL;999:?QrglpkplpqgUH>:9999999999999999;Kkp_^^^^^_kpM99999999;Lkq_^^^^^_jqM;9999:>GLLLG?;999999999999:;;;:9;Lkq_^^^^^^gu{Z99999999;Lkq_^^^^^^huU?999999:;;;:999999999999:>GLLLG>;Lkq_^^^^^^ahu99999999;Lkq_^^^^^^b~qgG:999999999999999999999:?QrglpkplprgQAMkq_^^^^^^^_99999999;Kkp_^^^^^^_kpK;99999999999999999999:?Qokb}___b}okRQkp_^^^^^^^^99999999:Gqgb~^^^^^^_jqM;99999999999999999999?Qokb}^^^^^b}qh~Vqhb}^^^^^^^^999999999?Uhu^^^^^^^hu~V@;;:9999999:;;;:9999;Hqgb}^^^^^^_kpQRokb}^^^^^^^999999999;Mjq_^^^^^^a~nl~VMLG>:999:>GLLLG>:9:@Uht_^^^^^^_kqMAQokb}^^^^^^999999999;Kkp_^^^^^^^b~hukqlprgQ?:9:?QrglpkplprgQ?:?Qnla~^^^^^^^_kpK;?Qokb}^^^^^999999999:Gqgb~^^^^^^^^___b}okQ?:?Qokb}___b}okQ@Hrgb}^^^^^^^^b}rgG::?Qokb}____9999999999?Uht_^^^^^^^^^^^b}rgG;Grgb}^^^^^b}rgIMkp_^^^^^^^a~nlQ?99:?Qrglpkpkpkp9999999999;Hqgb}^^^^^^^^^^^_kpK<Kkp_^^^^^_kpMNkq_^^^^^^_htU@:999:>GLLLL99999999999?Qokb}^^^^^^^^^^_kqL<Lkq_^^^^^_kqNNkq_^^^^^^b~qhH;999999:;;;;;;;;;;:9999:?Qokb}^^^^^^^^^_kpK<Lkq_^^^^^_kqNNkq_^^^^^^huU?999999999999LLLLLLG>:999:?Qokb}_^^^^^^^b}rgG<Lkq_^^^^^_kqNMkp_^^^^^_kpL;999999999999kpkpkpkpkplprgQ?:999:?Qqgitb}_____b}okQ?;Kkp_^^^^^_jqNJrgb}^^^^^b}rgG:999999999999______b}okQ?9999:>HUqglpkpkpkplprgQ?::Grgb}^^^^^^hu~VEQokb}___b}okQ?9999999999999^^^^^^^b}rgG:99999;?GLLLLLG>:99?Qokb}^^^^^a~nlRFRrglpkplprgQ?:9999999999999^^^^^^^_kpK;9999999:;;;;;:9999:?Qnla~^^^^^b}okQDHLLLG>:99999999999999^^^^^^^_kqL;9999999999999999999:@~Vhu^^^^^^b}rgH<;;;:9999999999999999^^^^^^^_kpK;99999999999999999999;Mjq_^^^^^_kpK;99999999999999999999^^^^^^^b}rgG:99999999999999999999;Lkq_^^^^^_kqL;99999999999999999999^^^^^^a~nlQ?999999999999999999999;Lkq_^^^^^_kqL;99999999999999999999^^^^^^hu~V@:999999999999999999999;Lkq_^^^^^_kqL;99999999999999999999TRUEVISION-XFILE.gl-117-1.3.2/textures/title.tga0000755000175000017500000140005410145416156015404 0ustar cedriccedricIIIHHGEEDCCA@??>>=;;;;99998655553333110//.--------,,,,,*))))))))))(''''''''''&%%%%%%%%%%#!####%&''')++++,////1111233666779;;;;===>>?@AABCCEEEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGEEDCCBAA???;;;;9997776555332110//++++)))''''%%%%%%$$$$$&'''''''''''''''''''''&%%%%%$$$$$&'''())*+++,--///111334677899:;;;<====>AAAABEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFEEDCCAAAA???>==;;;;7776643311110///.,++++))))'''%%%$$$$$$$%%%%%''''''''''')))))))))))+,,,,,--------///1123333555578999:;;;<=>???AAAACCCEEEGGGGCDIIIHHGEEDCCA@??>>=;;::99998655553333110//.--------,,,,,*))))))))))(''''''''''&%%%%%%%%%%#!####%&''')++++,00//2111233666779<;;;===>>?@AABDCEEEHHGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGEEDCCBAA???;;;;9997776555332110//++++)))''''%%%%%%$$$$$&'''''''''''''''''''''&%%%%%$$$$$&'''())*+++,--///111334677899:;;;<====>AAAABEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFEEDCCAAAA???>==;;;;7776643311110///.,++++)))*''(%&&%$$$$$$%%%%%''''''''''')))))))))))+,,,,,--------///1123333655579:99:;;;<=>???AAAACCCEEEGHIJBBHHHGFEDDCBBCA?><<<<=>?8887754433221100/--,,,++++++*****)(((((((((('&&&&&&&&&&%$$$$$$$$$$#"###$%&'''())))*,,--./001224446678999;;;<<=>??@@ACCCDDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEDCA@@@?>::::8776654444221//.--****(((&&&&$$$$$$$$$$$%%%%%%%%%%%&&&&&&%%%%%%$$$$$$$$$$%%%%&'()***+,,...1113334666789:::;<<<<=?@@@ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDDCBB@@@?>>><<<::::665443220000/..--+****'''&%%$#""!#$$$$$$$$$$%%%%%%&&&&&(((((((((((******+++++,,,...11233112333556778999;<=>?@@@?@ABCDDEEDEC=;GGGGEDCCCBAEC?=::;=@BD8776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%$$$$$$$$$$$#####$%&'''''''()()++*-//011333555577799:;;;<>>>=?AAA@ADEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEECA@@@?>99997665543333110..-,,))))'''%%%%$$$$$$$$$$$$$$$$$$$$$$%%%%%%$$$$$$$$$$$$$$$$$$$$%&'()))+,,...1113333555678999:;;;<=>???@CEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDCCBAA???====;;;999955433211////.--,,+))))%%%#$# !#$$$$$$$$$$$$$$$$%%%%%''''''''''')))))))))))+,,...112330/.111323556768:;=>?@@?>?@BCDDECA@<97GGGGEDCCCBABA?=<<;=>?@8776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%$$$$$$$$$$$#####$%&'''''''())*+++-//011333555677799:;;;<>>>>?AAAABDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEECA@@@?>99997665543333110..-,,))))'''%%%%$$$$$$$$$$$$$$$$$$$$$$%%%%%%$$$$$$$$$$$$$$$$$$$$%&'()))+,,...1113333555678999:;;;<=>???@CEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!! #$$$$$$$$$$$$$$$$%%%%%''''''''''')))))))))))+,,...112330//111334556778:;<=>??>>?@BCEDDA@>;98GGGEEDCCBAA9:<>@?>;8667776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%$##########"!!!"#%%%%'''''())*+++-//011333555677799:;;;<>>>>?AAAABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA@@>>>=987766533331111//.,,,+)('''&%%$$$###########$$$$$$$$$$$%%%%%%$$$$$##############$$$'''')*+,,-./011123334567779999:;;>>>??ACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!! ###########$$$$$$%%%%%''''''''''')))))))))))+,,...112330//1113345567999999:;;;<>@BCDCA>=:876GGGEEDCCBAA9:<>@?>;8667776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%$##########"!!!"#%%%%'''''())*+++-//011333555677799:;;;<>>>>?AAAABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA@@>>>=987766533331111//.,,,+)('''&%%$$$###########$$$$$$$$$$$%%%%%%$$$$$##############$$$'''')*+,,-./011123334567779999:;;>>>??ACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!! ###########$$$$$$%%%%%''''''''''')))))))))))+,,...112330//1113345567999999:;;;<>@BCEC@<<9666GFFEDCCBAAA9:;=>=<86426776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%#""""""""""!   !"#$$$%&'''())*+++-//011333555677799:;;;<>>>>?AAAABCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBA@@?>=<<<877665432220000..-++++(''&&%$$###"""""""""""###########$$$$$$#####""""""""""""""###&&&'()+++,-./000122334666788899::==>>>@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBEEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!! """""""""""$$$$$$%%%%%''''''''''')))))))))))+,,--.011220//1113345567888888888:=>?ABCA=:85344GFEECCCAAAA89;==<;752/6776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%#!!!!!!!!!!  !"#$$$&'''())*+++-//011333555677799:;;;<>>>>?AAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@??>==;;;77766533211////--,++++'''%%%$$#""!!!!!!!!!!!###########$$$$$$#####"!!!!!!!!!!!!!###%%&'')++++,-.///01133366677779999<=>>>?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!! !!!!!!!!!!!$$$$$$%%%%%''''''''''')))))))))))+,,,-./11110//11133455677777776669=>?@AB?<974123FFEDCCBAA@@;<<<;:976426776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%"           !"##$&'''())*+++-//011333555677799:;;;<>>>>?AAAABC@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@??>=<;;:77765532211///.--,++**''&%%%$##""           ###########$$$$$$#####!          !!!"##%%&&')**++,-..//01123356677778999<==>>?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AEEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!!            $$$$$$%%%%%''''''''''')))))))))))+,,,--/01110//11133455677777888889<=??@@=:653011EEECCBAA@??C@=;744678:7776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%! !""$&'''())*+++-//011333555677799:;;;<>>>>?AAAACB????????????????????????????????????????????????>>=;;:966664431111///--,++*))'&%%$$$"""""##########$$$$$$#####  !!!"#$%%%'())+++---//01112345666677899<<<>>>???????????????????????????????????????????@EEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!! #$$$$$%%%%%''''''''''')))))))))))*++,,,//0110//1113345567777799:;;::<>>>=:6110//.EEECCBAA@??B@=;75467897776653321110///.,++++)))))))))))(''''''''''&%%%%%%%%%%! !""$&'''())*+++-//011333555677799:;;;<>>>>?AAAACB????????????????????????????????????????????????>>=;;:966664431111///--,++*))'&%%$$$"""""##########$$$$$$#####  !!!"#$%%%'())+++---//01112345666677899<<<>>>???????????????????????????????????????????@EEDCCBAA???====;;;999955433211////.--,,+))))%%%$$#!! #$$$$$%%%%%''''''''''')))))))))))*++,,,//0110//1113345567777799:;;::<>>><95111/..CCCCA@>>BA=B@>8881488;7665543321110///.,++++)))))))))))(''''''''''&%%%%%$$$$$! !!"%'''())*+++-//011333555677799:;;;<====>@AAACB????????????????????????????????????????????????>>=;;:96665543321110//--,++++'&&$$$####!!!!!!!!!!!!""""""!!!!!  "####$$%&&)++++,-.//1100222555667999:;<=>>>>???????????????????????????????????????????@EEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! #$$$$$$$$$$&'''''''''')))))))))))*++++,-///////11133455256589<<;=A;9;9<?741.,,,,+CCCCABA?AA=?A>;8666:9<7665543321110///.,++++)))))))))))(''''''''''&%%%%%$$$$$! !!"%'''())*+++-//011333555677799:;;;<====>@AAACB????????????????????????????????????????????????>>=;;:96665543321110//--,++++'&&$$$####!!!!!!!!!!!!!!!!!!!!!!!  "####$$%&&)++++,-.//1100222555667999:;<=>>>>???????????????????????????????????????????@EEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! #$$$$$$$$$$&'''''''''')))))))))))*++++,-///////11133455476489<<;=B=47;;<630-*+++*CCCBABB??BD888>:7;88697665543321110///.,++++)))))))))))(''''''''''&%%%%%$$$$$!            !"""%'''())*+++-//011333555677799:;;;<====>@AAACB@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@??>>=<;::777655443332110/.-,,++'''&%%$###"     !!!!!!!!!!!!!!!!!!!!!!      !###$$%%&'')++,,-//012222333566778:::;<=>>>??@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AEEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!!            #$$$$$$$$$$&'''''''''')))))))))))***++,-.//////111334557964897:>;<93<A9641/+())((CCCAA?=>?EM''9 04;=<965356665543321110///.,++++)))))))))))(''''''''''&%%%%%$$$$$"!!!!!!!!!!  !!"###%'''())*+++-//011333555677799:;;;<====>@AAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@??>==;;;88886665566333110..-,,((()&&&$$$$!     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!     "$$$%&&'(((*,,...11133455445678889;;<==????AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! !!!!!!!!!!!$$$$$$$$$$$&''''''''''))))))))))))))+++--./////111334556754885:@:87=I+)@640/-'$$&%$ BBB@@>;=>EN((J11;:7:>776556665543321110///.,++++)))))))))))(''''''''''&%%%%%$$$$$"!!!!!!!!!!  !!"###%'''())*+++-//011333555677799:;;;<====>@AAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@??>==;;;99997776666333110//.--))))'''%%%%"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#%%%&''()))+--///1113345555678999:;;<==????AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! !!!!!!!!!!!$$$$$$$$$$$&''''''''''))))))))))))))+++--./////1113345544469999>9>D!"N/.L-,:740/,'$$&% $ BA@@>>??=?DK;:E32@+*306786415665543321110///.,++++)))))))))))(''''''''''&%%%%%$$$$$###########"!!!"#$$$$&''''())*+++-//011333555677799:;;;<====>@AAABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBA@@>>>=<<<;::9987765543321100,,,+**)((''$########## "##########%''())*++,,.0012234456666888:;;<<=>>>?@ABBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! ###########$$$$$$$$$$$&'''''''''')))))))))))))))*+,----.//111334554456535-.2B++V;;S34;392.,($ !$ " " B@??==@?==><.,P@?N:9A,+:1464305665543321110///.,++++)))))))))))(''''''''''&%%%%%$$$$$###########"!!!"#$$$$&''''())*+++-//011333555677799:;;;<====>@AAABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA@@>>>=>>><<;::98865553342222.--+,+**)'(%$$$$$##### "#####$$$$$&''***,,+--02223434556777999<<<>>>>>>?@ABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! ###########$$$$$$$$$$$&'''''''''')))))))))))))))*+,----.//11133455567610-.6B-+R=<\BBF&(2422.*&# # ! ! @???====>?>)H;:QA@M>@AAABDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDBA@???>???==<;;:9976665553333/...-,+++*)&%%%%%$$$$$ "$$$$$%%%%%'**+++--...13334555667888:::===??????@ABCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! #$$$$$$$$$$$$$$$$$$$$$&''''''''''))))))))))))())*+,----.//111334557994.0*5! B0/M?=NCAH22858+ 1-(%!   "  ????=>><>@>"4+(I>@AAABDEEEEEEEEEEEEEEEEEEEEFFEEEEFEEEFEEFEEEFEEEEEFFEEFDB@@@?>@??>>=<<;::876666644440///.-,,,-*&%%%%%$$$$$ "$$$$$%%%%%(+-,,,-.///24445666668999;;;>>>???@@@ABCDEEEEFEEEEEEEEFEEEEEEEFFFFEEEEEEEEEEEEEEEEEEEEEEEEEDCCBAA???====;;;999955433211///.-,,+++))))$$$##"!! #$$$$$$$$$$$$$$$$$$$$$&'''''''''')))))))))))('))*+,----.//111334548:93/8#"8%#B32H>;LFC>=:2! 68500+'$    !   >>>?=AB=>><++E86LB@H@=MDAH<:@.-5445665543321100///.,++++)))))))))))(''''''''''&%%%%%$$$$$$$$$$$$$$$$#####$$%&&&''''())*+++-//011333555677799:;;;<====>@AAABDEEEEEEEEEEEEEEEEEEEEDDEEEEDEEEDEEDEEEDDEEEEDDEDDB@?@A@>>?@?>===;::876776654440000.---,,*&%%&&&%%$$#           #$$$%%&&&&&),,,---.00/24556666779:99;;;>>>???@AAABCDEDEEDDEEEEEEEDDEFFFEDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEDCCBAA???====;;;999955433211///.-,,+++))))%%%##"!! #$$$$$$$$$$$$$$$$$$$$$&'''''''''')))))))))))('))*+,----.//1114445687734A0.I:9LA?G>@DB:?=::9=78* %/234676310.,,,,,,++++++++++++++++*))))))))))(''''''''''%##########"!!###%%%''''))*++,,,,-///0133335566777999;;<>>?@@BCCEEEEEEEEEEEEEFHGGGEEEEB??CIGB>EHE?DH?BCC?@BGFB>?A@>89;CED@6CKG=?DF=9:68:;;:99740,5<5..44-*,*&(,0/.)(#$&''%#!###!"$%%&'')(%&+//+**.33)046,16;/38>@<647;@B@=88:>?=<>CA?KEA>GHG@GD;@EGEEDCA?@CMONG@???>@EEEEEEEEEEEEEEEEEEEEEEGGFEECBB@@@====;:9998766655433111////-,,++++)))''&$$##############&'''''''''')))))))))))++++++++++++++,,,////1-,/1238868@>3.1!:03<==3?@:ED9@?BA@=6=&&NCAIHF<@>@@?;;7-/0 %.39:954751/,,,,,,++++++++++++++++*))))))))))(''''''''''%##########"!!###%%%''''))*++,,,,-///0133335566777999;;<>>?@@BCCEEEEEEEEEEEEEFJHHGDDDDB??CIGB>EHE?DH>ABB>?AGFA=>@?=68:BDC?5CLG=?DF=9:58:;;:9974/+5<5..44-*+(*-,..0&""&&&''%#!###!"$%%&'')(%&+0/+**.33)046+16</38>A<647;@B@<779=><;=B@>KD@=FGF?GC:@EGEEDCA?@CNPOG@>>>>@EEEEEEEEEEEEEEEEEEEEEEGGFEECBB@@@====;:9998766655433111////-,,++++)))''&$$##############&'''''''''')))))))))))++++++++++++++,,,////1-+,.016;<9966> #F05H>A@BD6CD3CA=GCEB=7)"062/,*%$!       99::==>?A@@;81D53QKJBB@ADBCCCC>?C<=;02;+)6#!.,3559500/...--,,,,,+++++++++++*))))))))))(''''''''''%$$$$$$$$$$"!"###%%%''(())*++,,,,-//011333455677789::;;<>>?@@BCCEEFFFFFFFFFFGE>@DHJKJHC@>CIHC@FHF@DIDGGGDEGJHFDFFEC@@BGIIG8CJH?@DF?;:9:;;<<<<96207<6/065/,1)10-/,+*&**'((('%#$$$! !##%&&''()(&(+-.,,,/22+035/259148=?<758:?CCB@?@CDCCCGFDMJGDMMKDJG?BDEDEEEB@@CIKJFBAAA@BFFFFFFFFFFFFFFFFFFFFFFGGFEECBB@@@====;;:99986665543311100//-,,++++)))(''%$$$#$$$$$$$$$$$''''''''''')))))))))))+++++++++++***+++.///121.//1132005<+,D45H?@FAC=@A>DD@BANHFD305342/+*%$ !       8999<=>???@:9.5#"JBAKIGCDBEDCHDEGABD<@21/)-3772010///.-,,,,,+++++++++++*))))))))))(''''''''''%$$$$$$$$$$"!####%%%''()))*++,,,,-//011333555677799:;;;<>>?@@BCCEEFGGGGGGGGGHD4:AHOQOKD@=BIHDAFGGACIIKKKIJLMKJIKKJHFFGKMML:CIH@ADF@<:;;;;==>>;7428<601760.4+2-,2/,.*.+()))(&$$$$#!"#$$%''''))(')+,----/22,0351258358=><868:>CFFFDEHIHHHKJHPNLIRQNGMJBCBBBEFGC??CGHHECCCCACGGGGGGGGGGGGGGGGGGGGGGGGFEECBB@@@====;;;99996665543311110//-,,++++))))''&$$$#$$$$$$$$$$$''''''''''')))))))))))+++++++++++*))+++-///1450112.*(.9$#C55E>>D>=CA@@BB>=# 8712/+)$ # !      6779:;>???>;93*:0/PKJFECFCCKHHD?@GABKB?G=:A418&$.-20231000//.-,,,,+++++++++++*))))))))))(''''''''''%$$$$$$$$$$"!####%%%''()))*++,,,,-//011333555677799:;;;<>>?@@BCCEEFGGGGGGGGGHD:>BGLMLIEB@EJIFCHJHCFJGHHHGHJJHHHIIHFEEEHJKJ<DIHABDFA>;=<;;=>?@<8538<613861/6/1+,3000*.-)***)'%%%%$##$$%&'((()))(*+,-.../22.1352358469=><978:>CDCECDFGGGGIHFMLJHPOKDJIFEDCDFHIEBBDGGGEDDDDBDGGGGGGGGGGGGGGGGGGGGGGGGFEECBB@@@====;;;99996665543311110//-,,++++))))''&$$$#$$$$$$$$$$$''''''''''')))))))))))+++++++++++*))+++-///146221/,*+5$#H75L@@F@@C?>A@@BDDBFGDDEQHI?-,4<900-*'# !       55688:<=?>==;:,4 O@@QGGKFEIHGACBBDD<=9?@;CB>?853)'-+(0402331110....,++++++++++*))))))))))(''''''''''%$$$$$$$$$$#####$%&'''())+++,,,.../1123345556777799:;;<=>>?@@BCCEEFGGGGGGGGGGFCCDEGGGGHHHJNNLJMOLHKMECCCEEECCEGGFDCEDCCDFHCFHHEEEHFC=B@=;?BDE@;98:<668<744;65021*,1152.-,,,,*(((((((&'()++++++,.-,-023111355555568:;;===;9:>DA>EDBAEFGEEDCHGGHLJE>AISKGEGKMNLIHHEDCEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFEECBB@@@>>>==<;;99966665553333111//.,,++++*))''&$$$$$$$$$$$$$$$''''''''''')))))))))))+++++++++++*))++-/11136761-))-" 3-*952CAED?GFBHGHHIPFHR<@;:E:..+(%"       445789<=>><>=6/.<..QHHOLKGEEHIIEFGBC@BA=@>:A:6C75C32;&%,,102331110....,++++++++++*))))))))))(''''''''''%$$$$$$$$$$#####$%&'''())+++,,,.../1123345556777799:;;<=>>?@@BCCEEFGGGGGGGGGGFBBCEGGGGHHHKOOMKNPMILNECCCEEECCEGGFDCEDCCDFHBFHHEEEHFC=B@=;?BDE@;98:<668<744;6444-)/../-/-,,,,*(((((((&'()+++++*+.-,-023111355555568:;;===;9:>DA>EDBAEFGEEDCHGGHLJE>AIRLHFHLNOMJHGEDCEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFEECBB@@@>>>==<;;99966665553333111//.,,++++*))''&$$$$$$$$$$$$$$$''''''''''')))))))))))+++++++++++*))++-/1113664/+)6&$<1-B96B=:C@?9722M==G;;4%%(&)1332221////-,,,,,,,,,,+**********)((((((((((&%%%%%%%%%%$##$$$&''(()**++,,--../0123345566678889:;<<==>>?@@BCCEEFGGGGGGGGGGHNLJHFCCDGKLBFFFEGHFCDEECCCEDA@ADHGFEFFEB@ADHKJIIIHGKJGAGC><AEFD@====;78:<878?98:5-(  $ ')41-,./.*)(,-,*'()+---,/1210/046753389879877=>=<>?A?==?EA=FEC@GGGDEDCDEGIKGC>@GOC>=AFGHFCGNHEDFHIIHIHGGGGGGGGGGGGGGGGGGGGGGGGFEECBB@@@>>>>==<;::9777665543331110//-,,,,++**)(&%%%$%%%%%%%%%%%(((((((((((***********,,,,,,,,,,,,---.022344520-.0!"?44A:9A>==@>?C@FFEJHHGJJCIHFIIPKKJ9;67<;5,,)&$      112557::==;<=<93,;('MDEMKIHKIDLH@IE@FE@DCAB@@>=C>=G??E9:5'(&%24444320000-,,,,,,,,,,+++++++++++*))))))))))'&&&&&&&&&&$##$$$'''))*++++,,-.../1123355566679999;<====>>?@@BCCEEFGGGGGGGGGGIURNIDA@BGMM<@AABBCA@@?EBBBDC?>>CGFFDFFEA>?BHOKJKJJHLLHBID?<BGHD@?>?>;89;<889A:8;1# 5$%QCDWAC\DF6! 42-,/0/+)(-//+((),...+0352100588644;:98:987??>=>@B@?>?FA<FFB>GGFCDCBBDGJKFA=>EM>87<CDDB?EPIEFGJKJHJIGGGGGGGGGGGGGGGGGGGGGGGGFEECBB@@@>>>>===;;:9887665553331111//.,,,,++++*(&&&%$&&&&&&&&&&&)))))))))))+++++++++++,,,,,,,,,,,-.../13345551.0<),C67B::B==?@?;4++'$#      00144699;;;;<>:6.1K@?QLKDEDEMIDIFBGEDGEDECDDB><:A<;IA@B784()(-011121/011.----------+++++++++++*))))))))))'&&&&&&&&&&$##$$%'''))*++++,--.//01123355566679999;<====>>?@@BCCEEFGGGGGGGGGGINOLJIDBDFLN@DEGEHHGCBCGFGGHDAADEMKGJKMFFCBEJPLJHKGILJHEKFA=CEGC>=>B?<::;:879@98;- S?@Ķò9---5,,/00+').2,*')*-.0//08453/5569954:<;;;98;@A>>>@BA?ABFB?IFHBKKKDJGGDDGLLFCAAJQD<;BFHEEDIQHJCIGIJIKIGGGGGGGGGGGGGGGGGGGGGGGGFEECBB@@@??>>===;;:9887765553331111//.-,,,++++*('&&%%&&&&&&&&&&&)))))))))))+++++++++++,----------.00012244460-2;()E67I??C<>?>53J97SKIECCGMKJLKILJJMKFIGGKI=?=?A?=<;@>=A>>?@@BBBDDEHHHHHHHHHHIEJKMPHGGFIOGGIOLPOKJEHKOOQPGEENMVPJSTVLKIFJMROKEKFMKGGJOID@FDB>;:?GB==:9779:>::<915++/02*&*/5-*%+,./5242<3860956;=949>??<98@CC=>?AACBFHCCDPJPITSTERNPFGHQPHFHHRUJABKMMGHLOSJOBKFFKIMIHHHHHHHHHHHHHHHHHHHHHHFFEDDCBB@@@@@?>>=<<:::8888655444422200/..-,,+****)(&&&&&&&&&&&&&&&(((((((((((*++++++++++-..........13455435557)+<01G;;E;;B;:EA@DDCEIGFKIDLIKJJQILLFGPKJWMMH5639:61+((%"      ../2257789;=>>><8/:*(QIHLJIEJHIMKJMKILJEHFKNLFHFCDBA?>A>=B=<520@-/4&,/,.2432/..........,++++++++++)(((((((((('&&&&&&&&&&%$$$%&&'((*+++,,,...001222345666678888:<<<<==>>?@@BBBDDEHHHHHHHHHHFDFRRHFJDIFJHFFHRFK@ PCFJUJVMLJAJZ!PGLLQKV!A DDNJNNLCDMOKGABNID@FE; :9:@?C966668A=;<98a@CQ69& .+-3.),),.8/(((,331-8, 4005.5<9995:6=86:7:A;:;>C:DICF=>DRPC JWUPEHNMCLJPQLJJQROCCCHOKMEJJMW!B IAJGIFHKHHHHHHHHHHHHHHHHHHHHHHFFEDDCBB@@@@@?>>=<<:::8888655444422200/..-,,+****)(&&&&&&&&&&&&&&&(((((((((((*++++++++++-..........232224635753:,-E78J==I??G??FBAFEDFIGFKIEMJMLLRKNMHIQMLOFF7%&28:62,('$"      ,,-01355578;<=>=<11J;:VMJPKHRNNQOOONMEFFIJJHKJDIH@DC<@?>A@9:9D:;;..*$')/32/2/..........-,,,,,,,,,,+**********)((((((((((&$$&&&(((**+,,,-../0001223446668888:::<<<====>>?@@BBBDDFJJJJJJJJJJHJEHEA6;4 AJNA:ABQGJB6<7BENB >207AL? 5AOSH?:/ =9>NKE. 4@JJ=8ANJFFIH<)& 2C=C@B4,*/><0--'~cfkl*('42! 084  *4591912(/%--29C0(-:B9+'2>6/ 08;749<D@2- 8; 6:?TF5 3DLF9&<??<5<NJE6 5 <NPL<9>A>EFF=3;DKHKJJJJJJJJJJJJJJJJJJJJJIFFEDDCBB@@@@@@@>==<<<<::9886554444322000....++++***(('&(((((((((((***********,,,,,,,,,,,..........-57323115+'9""?22?9:E>?G@AGBCHEEFDDGGGJKJKLKJMLNOOOLOQJNVKLH5527;<61+&&#       +*-00133568;<=>>:5,3#!PFBWPMRMNPNNQOOHHHFGGGKJGLKBHG=DC>DC>ABD<11/ !()/10/2/..........-,,,,,,,,,,+**********)((((((((((&$$&&&(((**+,,,-../0001223446668888:::<<<====>>?@@BBBDDFJJJJJJJJJKF=KHC[/0W./S,,H AW OL!W+,[,-h25TFA wCESVzKMb985 @MI4 Z77pON|RR_/0@ \(*O,,\,-POF/\88vOOvMMC- LLO "U20T..T%'IY%'W--\22LKJFGKAR--F2.D.+H+*=AA?A8H/.G20L,-9:M21F),I*-. x{؝>77( 8))>-.G,/61<--;//;../7' >*,`RRZLLVEG404;4:>% )U::uVVpRRR77% 0=?F--G//O(*5 G!!J32C+*H*+9I"%T00Q0/L$%:M))U53O**IE4 ^= L,,rRQsNMM =U./U//Q$%LE `*-xMN{NOp>@SM> GnFEQTu@C5 9QLP))N))T-.BGKLJJJJJJJJJJJJJJJJJJJJJIFFEDDCBB@@@@@@@>==<<<<::9886554444322000....++++***(('&(((((((((((***********,,,,,,,,,,,..........-6944540-,6 I32F;;A<=F@AFACHEEKIIIGGJJJLLLNNNLNNNOPMLNTNQOCD5 !29;<61+&&#      ( ) +..022567:;<>>9:/&C31\OMSKMNJJPMNMMMIKKHLKHMLFKJCHGBEEDFFA>=D>=E?>>44/!"&()043/..........-,,,,,,,,,,+**********)((((((((((&%%&&'(()**+,,--.//0111233446678889:::<<<==>>>>?@@BBBDDFJJJJJJJJJKG@NCI?HEljĤJ!#Aqqе׾Űec6AEdJJ¯ĝwxI!^13A5}cbӾVA?: GxNPsuMrsrIKD IFHK;}|~|7 B@@>X:;<T02:bJM0%%  ~~^CF<#%@*,+5»J24. 7:3:, =-,Ӿqo0.cGG0 a<>@df__<a896 lDEòʶnnopB yQRrr=W./ҿsrmn= K!Ȫ[,.2O/.ιѳuuJBT&(Z/1DLJJJJJJJJJJJJJJJJJJJJJJIFFEDDCBB@@@A@@@?==<<<<::9986654444332100/...,+++***((''(((((((((((***********,,,,,,,,,,,..........-57531/)'6%#G86L=;C;;A=>FABGDDIGGLKKLKKNNNNNNPPPNPPOPQPNQTJND03-9;;94/)%$!       % & )++.014569:;==;:6+7WBAXMNRKLOJLRRRPRRLOOHMLINMHKKFGGHGG@DB>?@@BBBDDFJJJJJJJJJJKOK?G!":"!*=ľ5&%ogdX:;56êL./lLM5PA?D !7 y{̷MҼoq= HGJK8 7 ?AD< uZZ@lMM? #% 0""ܯoqG13R=? aIL\CE. <:47$ j_]*w]^. xUWF!"7mKL/ å5 Ծ/yx*kNOY<<'jl1 X.0oGI@ JEJJJJJJJJJJJJJJJJJJJJJIFFEDDCBB@@@B@@@@>==<<<::::877555544422100/..-,++***(((((((((((((((***********,,,,,,,,,,,..........-4640+&'4(&C:7FA>C?;@>=BBBGFFIGGIIIKKKNNNPPPQQQQQQQPPPPRTQUK=A64?=:62-'"!        % % ( *+-/03469:;===664+C.,YOPYSTOKLRRRRSSMPPHMLIONLNNHIIIGHDGE@DA@@>B?>D<;C88=-./+13/..........-,,,,,,,,,,+**********)(((((((((('&&&'(()***+,,...00022224445678889::::<<<==??>>?@@BBBDDFJJJJJJJJJJJLIE5YB?G##_89Ĺ5!!¤8;2kHJ<hj*wyŮCDZ}dg< HGJL0ɽ4 @@E8 iPP:^@A?!$' ½yce@)+I46ruV=?- <99/]ED@fMM |[\7.jHIK!#5 wwжַjk)E#%W??K"X.1`79: IEJJJJJJJJJJJJJJJJJJJJJIFFEDDCBB@@@B@@@@>==<<<::::877555544422100/..-,++***(((((((((((((((***********,,,,,,,,,,,..........-461/+)5'%J>;LCA@;7D@;GEDIGGMKKLJJKJJLLLPPPQQQRRRRRRQQQOORQMR9*.*::<:50+'"!         $ % & (*+,0235789;;<78>0;MDEZUVRNOPPPOPPMPPLQPLNNQPPMKKNIJBJH@KH=EB;=;B@?LEDJ>>=)+1/110000000000/..........+**********)(((((((((('&&&'(****+,,,...00022344445678889::;<<===???>>?@@BBBDDFJJJJJJJJJJJLGE3trhNPɹG EnoA##qMQT*.Ū+ x{BĶlp: GHOM/ɽ/<CKCcNM@cEF5 Y=>,{zqQReSR$ uYZ?!!.Z?AS-06 y{͵!l__jn; ۺH uxοnJLI()dBCFIEJJJJJJJJJJJJJJJJJJJJJIFFEDDCBB@@@BBA@@>==<<<<;::8775555444421000/.---+++**)(((((((((((((***********-..........0000000000021,.05)'B:7?<8@AE?EGEMKKOMMOMMNMMOOOQQQRRRRSSPRRORQQNQFIF?HEDGEEBAC;:I;;P:>?@@BAADDFJJJJJJJJJJKMQG8 gNKsghq^`M?AqmmؽQ*+;t_^? !G+*c?DU[MAB?!psD²{im9 HHPL2 ̿1:JE?eSQB ]>?1q\_jlA+-F67# >44,:=;:-XKHdVSrs`NM& mRS<,^EHX48rhg6 |˳$;,-kp4O25=׷@23jlB !`@@EEKJJJJJJJJJJJJJJJJJJJJJIFFEDDCBB@@@BBA@@>==<<<<;::8775555444421000/.---+++**)(((((((((((((***********-........--/00000//00042,3A.-H;9C;8A>;@C=?GAAKEGIGLIINLLNLLNMMQQQRRRRRRRSSPRSORQQPS0(/$<?G>5-'!!"!          " $ ' ) ,.145678:=;88884,J<>B?>D<=B78>01/ "++01,..-030110.-,,-/01.,,,,,,,,,,+**********)((()*+,,,----.//1112345555678899:;;<<=>>?@@@@@ABBDEEFFGHHIIIJJJKKKNNG>Y66dFHvx/ ?z{nmxLOP"?];@;V;>ÿtgg<,-Q79$  0:9859ū/ !ZJI* uSW>0eCFZ/559 {}ɳ. ~򭧥ei/* = xhhD&&[<@@>BCBDFDDIFJMJKKKLJLOMMRNOSPQURSSPQWVUUTSNONPUSI;=31=:=82+%!!"           " # ( ,.146568:>;69:;:2C**aURSSNRWTORQQQOWTTRPPTSSLOPFMLGNMFLKCHGAGFAHG>ED6;::<?@@@ABBCDDFHHHHHGGHHHJJJLLKMFHAGU(*M L ($>NJqADC W$(Q>=~@ N #S01np«Bjk= GFIO7 <(*L8:Q59G &G tNR9bDGC ÿojh:.-W37' ,;:644=cew|O7<~YLL. }UZA0jAE]+2D}nm< xyȴ6 Z!&il,9D lHJB K21Y=>AMILLLLLLLLLLLLLKJJIHHGGGHHHGGEDDBBB@@@@>==<<<<<<<<:98887655544322100....,,+****++++++,,,,,...........,++,-/0345587.0-25621(")"#:46?=>:>>7>=>FFAGFEIIIJKOLLNKOMMQRNOVQSYSUXRUUOQYVUTTRQSPOWU?''? ?;833.)#!!"          " $ ( ,.146568:=<9:9::6>%$_QOURNQTRSWURTRWVVRPPSRRTVWJQPHONHLKFJIDHGCGFAEE@CB????>>846E548%"(-1212/-0331.-,,.0130..........-,,,,,+++++*****+,-......./022224555666888::;<<<<=>?@@@ABBCDDFGGHHHGGHHHJJJLLJKFJD-򩢦<{|C U"&V,.@""U!%GBg;=; Z-0UA@srʸ5 U02U02moŲ>gh> IHKO8 ⨕mHMAtQU8bDGC!Ŀyx;..Q/3! & 7<:26:* #dVYɶ|lk^OO) uSW>.lFK\.4F rq; yzʳ8@ >)(ywŹtw%6A rVV6 L10hUU8 CKLLLLLLLLLLLLLKJJIHHGGGHHHGGEDDBBB@@@@>==<<<<<<<<:98887655544322100....,,+****++++++,,,,,...........,++,-//1234560,-315/*&2%';23B:;B???AA=CB?FEBGFEIHIJJNLLOMOOMQROQUQSWSUWTUXSTVSRSQPYXVKML;#$><;862.)# !!          # & ).0354689==;;99;<3M87ULHUSQRUSRWUVXXQRROOOVTTOQQNPPNMMKKKHIIEGGEGGHJJACC=??<<=B><=63,# &'+,0893,+,013430.,-..........-,,,,,+++++*****+,-..0/..0002224445667889:::;<<<<=>?@@ABBBCDDFGGHHHGHHHJJKLLLKLHJM5K:>0rs4YEDȽtUV3:hDE4 G&'R@?rYZ*umjN"%kmC0/egEPNQR; im7 nPS6[?CK %0$$ĿG79T58 +57@73G9?,*lDDbPOmXYD;;J78bBFR-2>sr8 z{ϱ<b8;0)&gi, 9< " G"#-?ILLLLLLLLLLLLLLLJJIHHGGHHHGGEDDBBBB@@@>==<<<<<<<<:::8888555443221000/..,,+****++++++,,,,,............-,,,,,./03*/676:35(!9--E:;D:;G@@EBBDDDCFFBGFDIHGJJJLLMMMROPTOQTQSRSTQTTRWVXXXVTSZSRXLLB457>;8770.(#           " % ) -/253578;>>=:9<:,2C:7UTRQUSOTRTWWTTUPOOSPPPRRORROOOMMMJKKGJJGIIJLLEGG@BBBBC?:8F>;A747'&-(51373,+,013430.,-..........-,,,,,+++++*****+,-..0/..0002224445667889:::;<<<<=>?@@ABBBCDDFGGHHHGHHHJJKLLLLNJGNBdd[HM~/vWW񡆆ȶX24ȸ@XHF`II󧚘º׿8mpprGQOQS8gk4nQT6^CG:ruľR47`>B8:8:I@3 p^]mY[_@CZ6:A !zy9 zzѲ.Ԍ[^{}c25ϠwVXI&'ۿ}WZ9 MLLLLLLLLLLLLLLJJIHHGGHHHGGEDDBBBB@@@>==<<<<<<<<:::8888555443221000/..,,+****++++++,,,,,............-,,,,,./03),23276).8&(?22F:H@AECCFGGFIIDIHEKJHLLLNNNOOTPRVQRURTRTUQUURWVUUUVTSYSQA55(4@;8880,(#            $ ( + .132467:=@?;9;:913 SIGZXVLPNNSQUVVVUUWSTVSSURSTQQQOOONNMMMKKKJKKHIIDFFBEE=>;>>:BB>LJF?96$%-0480,-134530.,.//////////.-----,,,,,+**+++-../0/./0112334456667889::;<<<===?@@ABCCCDDEGGHHHHHHHHJJKLLMMLMKKHc<=uNO< R*,R//ۺ<^DCD3vwzSVD MKOP8 sw: gJN6`ADEpPTý3iHJ- =><5W66UA@8 nXX"vW[R02W25;sr6 {zϳ0 mooEGk7:iPNX+-Z/09 MLLLLLLLLLLMLLLJJIHHHHHHHHGFEDCCCBAA@?>==<<<===<;;:98885555443221100/.--++***,,,,,,-----///////////10/,+++-/0221264/"&C>>QMMA<8(>0.VSPPVTLROSUT[XZ\VXYTUXRSWQSSQQRPPQPPMMMIIIJKKHJJBGFBGC;?:>B=V[UVVR73/'19>1+.246630.+/0000000000/.....-----+**+++...00/.00122344456667889::<<<<===@@@BBCDDDDFGGHHHHHHHHJJKLLMOJKNJIFQ&'H:{y]CBJ,+Ӷ@&$pQP2eei36= Z.0FLJNO: ۗ_?D@iIN:kHLN"(H&*¼jIJ, =<?- feƿSCB8 x_`1 zX\ɽ9\8:?xw5 {yγ4 W//Hħq==<<<===<<;::88855554442222000..-++***------.....00000000000210,+++-//1757<9*;:8UWVSUUB@@D>>JBCLFGMGHKIIKKKJLLKMNLNNOQQNQQWSUZRVTSVPUTNVUMUUMRPSLL>++.<<;;875/+'!            " & ( +.02357:;>B=9;<8;++H?E@MWRV_ZIOJ-,)"):=3/0344431/.00000000000/.....-----+**++,../00//0112334445677789:;;<<<<==>@@ABBCDDDEFGGHIIHHIIIJJLMMMOMHONL>Ѷ>L=F$$գ2 S--ųݱA$"jHG>?ǂli@ Hceֱŷ⦎EKLJMM8 # 6>nQTA!_<@̺H!0 lnԹאvxüſwml^=>2;7B2vghxx}ss^MLBeMNů7qINʹ̶弩wuޅih,_79ռI""ggԧ6 {yγ6=us҇kj2m7:/ `HFʷY-/; Z(*ܾN!!KMMMMMMMMMMNMMMKJIIIHHIIHHGFEEDDDBBAA@>>=<<<===<<;;:98866654443222000/.-,+***------.....00000000000220-,+,.0237795/%1/.IONPXVIPP?BBGCCMHIOKKOKKMKKMMMNOONPPNPPOQQORRWSUZTVUTVQUTOUTPUTRSRH>>+.B;9;963-+%          $ ' *-/1356::=C >:;<6<<1=&%[PNWWUORPTVTTRQXTTXTUUSSSSSRQQURRTOPRKMONNHKKDJIGJHCJGAQMA[U>_W@aZ>WR'1/ .78754310222410000000000/.....-----,+++,-./00000022244455568888:;<<<<====?@ABBBCDDEFFHHHJJIHJJJJKMNNNPRLPROEBPMA Q ^_zzrrpIJOJ U f>?igY348nPO`YTpVTGX K F QSuvqqb369MLX%({PQsGHT()Z.0ttmmCGMKJLI2 h_\vkio_^waa<kUUD#$8na_UPMjTSB<;z]]mmqSSH,,eGHsHKU33ž|pmfHHtthQQ! /<++S=<<4>9?0~,#$jGG2dUS^OMwTU.^',jACqGI]13e36nquvW00/ YYtt_`@; Q "qHInIIqCEJ_+.{NOmCC[016 |z̴:Q6qBDknqsssh?@CGc12ɫZ76SJ< Y-/gipoaaFB URmBDjFG`:;rGHpqnCD: ONNNNNNNNNNNNNNLKJJJIHJJIHHGFFDDDBBBB@??========<<<::98777555443220000..-++++------.....00000000000330.-,./367=<6$!(1/G_[?ZV>ZUKa`:MK@EELKKMMMNMMOMMROORPPQPPQQQPRRPSSVTVXUWUUURTTRTSUUSRJJ:''.:H:59852+)$          $ & *-/1246:9;C ?::<?>?6.E;9UVTOSQUWVVTSXTTXTUVTTRSSSRRURSUPQUOQQPPFJIGMLDFDCIFP_ZUoiFd]<[UKa\PYW>55,28654310222410000000000/.....-----,+++,-./00000022244455568888:;<<<<====?@ABBBCDDEFFHHHJJIHJJJJKMNNNNRPPOI5 mlHPMFCDAA!!:KRJBbHF3 F"#Ŀδf<=ITOJ?DFJQKL=DBAA>>JLKJLI1N*+eMM>U45ʽO%'<45=""3.6A8!ǿwlj.:0+4!+8;::D& uhe=bLKǸοBFCB@EAB:>AB?CJBB?ANDBBD8 |z̴7 HBHM KBA@MC>OKCAL!"B"!?ISMT A=<>L !EFONNNNNNNNNNNNNNLKJJJIHJJIHHGFFDDDBBBB@??========<<<::98777555443220000..-++++------.....00000000000330.-,./367?=4)D<>??@BBBDDEFFGGHHIJJJJJJJJLMOOOOPTPQQQ?fDD~QQJPNORMEJNU]OHԽd?=3X&&gECBVSKCEJOSLJHQQMGGLPTTSRM2N10\KI6\CAO"$A;6;:;>I?'Ǿ|ih2 843:( vce3;;;;A3 [=;η>kSQ7 GABEKBCFFBCHPPKIGJTOKJL> ur׷; PKLMOGHKSFZY:QSQNNGHRWTSHGHILKNOOOOOOOOOOOPOOONMKJJJJJJJJHHHGFFFDDCBBA@?>>>???>>=<<:::8887666554422200/.--,,//////0000022222222222222112219750-"!L^[Ie`?a^DeaJjhSrqUrqFVUAHGGMLKPOOPORQQTRRTRRTSSRTTOSRTWVTTTZYYYUU[RSYKL4/8@C82651,)'#         # & *,013589:>B@:49?ED<-@31YTRRRQQTRSSTSUUTVVSUUVUUWSTWPQ[TUVRSPQQFMLENNWgf^vsNvqDsm=oi>ke<]ZOb`GJK2+.) 84330431/35222222222210000000000.,,...000222222345666678889:<<<<==>>?@@BBBDDEGGGGHHIJJJJJJJJLNOOOOQTPQRS@Z66f87GOIRYVOT\`c[GiKGvNL> ^''oOLCNPPLLNQSLJQZYUPQRRYYWTM8 L42dUR8bKHV)*CCAABCFR?. xv6 >:5;23vw濪2<;;;@=6ee1zc_:DCEJPIKNHHKRURPPNQVVRQP= |ܹCTNQTWONPUPR! }z︢AORVVUOQWXWQNNPRSPOOOOOOOOOOOOPOOOOMKJJJJJJJJHHHGGGGDDCBBA@@>>>@@?>>=<<:::8888666555522200/..-,,000000000002222222222222222226678-$610BNLHb]Ae_AhcHlhMpnPsrWyxUhfFOMELKNSRMPOQQQURRVTTVUURTTNSRPTTSUUWUUYSS\PQB12/5:AC8264/*)'#          " % )+013589:>B@:59?ED@-*NDC\WVRQOUTTVVVTVVRVVUUUWSTZST[TVSQQPTSCOMSccbwva|zSyvJwrCqlHupAebC][ZiiMUW:-0-+03/445-+ 2222222222210000000000.--../00123222334566777899:;<<<<==???@ABBCDDEGGGGHIIJKKJJKKKMNOOOOQTPQRTHS''§T%$HOGRVSLQWXXYG-\85oA@FX !Ȫf>ɳH''_DBƻ=Z87ƸP#$DED@?@BL@6u][9?:7<9")~~~~5=;;;@F,V97ʞA2pRPĨ@FDFJOIJLKGJPSPNPNPTSQQRD dbƶLPMPSVQOOSRB@ trFOOSSSMMQTUSOMMNRRQOOOOOOOOOOOPOOOOMLKKJJKKJJIHHGGGGEDCCBAA@???@@??>=<<;;;9998766555532210//.---000000000002222222222212233335//5"/0/R\YRifDd_ChcKolProStsTvvTxwazwP`]BPNJSRLQPSRRUSSVTTVUUSTTOTSPSRVUUWRR]SSTBC.58;>@8253.)(%"         ! $ ')/13479:>A@;59?EGC<.?,+_TQZURWTSUVVQSSOUSTUUVTT[UVZTVRRSJRQFZWZvua^~V|zR{yJusJxuMwuCjh>ebCigYee%!##).58461+1222222222210000000000/.../0012243224446668888::;<<====>@@@@BBCDDEFGGHHHJJJLLKJLLLNOOPPPQTPQSWXIb21f;9a32j:9[1/GNNISTRKPTJKMNF> X!"SJSn23m=g<=b68g:;^89[34c9:CFb<<[66]01@Jd>>X87V11?FFA@==?CF;a56\>?64 JH! \<;`;;f;<>LGIKNJJKPHJPRMLSOPRRRSXR[%%h76n<;p01PNMPSVSQORNQWGSIOQQRPLJHNTWSNLJRWVPPPPPPPPPPPPPPPONMLLKJLLKJJIHHGGGFDDDBBB@@@@@@@@>==<<<<:::887665554322000....000000000002222222222201244771/')-)GgbFlf6e^FtmFqkTvuXxwYzyXzzR{{`XvpD\XBQOLTSUVVVTTWUUVUUUUUOUTTUTXSS]SRbNPF*+2>?<;9512/,(&$           # & ).023799=@?<59?EFAA30H<:WRNVSSTTTOQQNSRTVUWUUZTUZTUTTTGPOVjfc}|a~~]}|W~|U|R~{P}zOxvRywAfdBdcYcdJFH$'*9;335/1222222222210000000000/.../0012243224446668888::;<<====>@@@@BBCDDEFGGHHHJJJLLKJLLLNOOPPPQTPQSWZMC<:F<TNHEPTRKPTOTMJKEDMLUF; HKOOQRPNLKULHMUTQOUXYOPSVSOP=BA==9BE?53AII:1:EHC?@==?E@>=-07BB=:?@6096A@<;;@@KF850159I!J;62<AFGIKNJJKOHJPRMLSOPRRRSWQHADMNOMPSVSQPRLQ_ FGQIOQRPLJIOTVRNLKRVUPPPPPPPPPPPPPPPONMLLKJLLKJJIHHGGGFDDDBBB@@@@@@@@>==<<<<:::887665554322000....0000000000022222222222012454461''BOLQni>a[=jdHuoNxsXzy[{z]~}\~~V~^{e|SjfCQONUUVWWWUUXVVWVVUUUOUTTUTWSRVLLO;=56=?=;;723/+(&#           # &-/12589;?@<<<=>?@@:93M;9]RS[VWSRRNSRSVVUUUWTTTSTJTSG\XY|u\X~|[}\[ZYQ}zO~zJ{w9mi@dbG`_BTT#3524124444444444322222222220..00022244324445678889:::;<<===??@@ABBDDDFFGHHHHJJKLLLLLLLLNOOPPQSWPOQXSUQQLSNWOQOQROIIJFIKMPN[ONKSNPVUPQRSRPOXPKKPQOLRVYHKPTVVNPVUUHPPLNKLONNID<E?CFB><<<:EBA87@?:8?;=:>>CB<<=BA=;GHDEJF?AGINENGKMORSLHRHIOOJLVNNPOOQUXMJMTVLMOQSQQQOKQTZPOSOOPOKIIMPRRPNMPSSPPPPPPPPPPPRPPPONMLLLLLLLLJJJHHHHFFEDDCBB@@@BA@@@>==<<<::::888666644422100/..2222222222244444444444//25521$ $*%JUOChb6e_;icJyuGuqS{W}}X~YZZU~z]~WxrE[XHTRRVVVUVXVVWVVUUUNTSYRRbQRH57;:=@@;67520-(%#!           # % ,.02578:>?=====>A=;;( 3 VHJ^XYWWWNTSSVVTTTYVVSSSJTSZplaZX}]`^\[YP|K{AztBkhKhgPhhDKL,%'%*632124444444444322222222220..00022244324445678889:::;<<===??@@ABBDDDFFGHHHHJJKLLLLLLLLNOOPPQSWPOQXUYSVTWQORPMOQNIHIIEJOUTYOUMRWUWTTSSUTQPXQKJNONKRVYFINTVYOVVW\OSTVTLPTWWIE>IBDFA=;:::H@B88@>:8?AB:>@?C<<=BB>@GCKHEJDBLMQERIMOPSTLHRHIOOJLWNMOOOQUWMQQTTKLOQRQQQOKPTRRMNONONJHHMOQRPMLPSSPPPPPPPPPPPRPPPONMLLLLLLLLJJJHHHHFFEDDCBB@@@BA@@@>==<<<::::888666644422100/..2222222222244444444444//2554- 0/+ENI[jc9b\?rlFxrK|xR~WZ[\\\V}X{_}UliFTRNRQVVVXVVWVVTTTLSR]VWYGG3 1<?BA<5641/,(%"           # $ ,.02568;>?=@?<::<>?=6.D25ZPR[XXRUUTVVRTTYWWSWVO`]e~\\]bb_a_WUM|H}yKyvDmkAdbVihGOM#.56<64444444444322222222220./00023344434445678889::;<<===>??@ABBBDEEFFGHHHHJJKLLMMLLMMNPPPQRSYQOOTUTLQSTVMSOWWTQKHIQNOQWZOQOONRUVSONNQRRQZTPNRSQNQTYLOSVUVOQRRNNKJNMGKOMJDGCHCDFFC@==8FC>6;>=97>C?<<;BC<<>CA>CB<CA@IJFNKJDLBIMPSVMHUJKOOKNZOPSPPQURMRQPQNPQRRRRRPNNTURRPQRSRNNPNMNQSSSQQQQQQQQQQQQQQRQQPPONMLLLMLLLJJJHHHHFFFEDCBBAA@BBA@@>==<<<;;::8886666444331000/.2222222222244444444444//3663(OWQPe^Hh^BleMzuR~zU~\WVWZ[]WRx`d}yO_\MRQVVVXVVWVVTSSLRQ`STI01/9=CA>;773/.)'%!            " $ , .01468;>?=EB;548>C@B;.MADZTUTTUTVVSTTVUUS\Z]upaO{]aca_ecX\SN}MBws8gdCdaShd,31/&"%7<C92444444444322222222220.000023444444445678889::;<<===???@BBBBDEFFFGHHHHJJKLLMNLLMNNPPPRRS[RNLQSOJMRTYSQTa[XRLGFVWSQXYPQINOMTWTHGGLPRR\XTPUUSONQXQTXWURNLPNDLJGFFHGKD@CIFA@CHJHC??9AH@99<;65=?:>:;FB<<>D@<AAA<?FIKHMLIED?ELPSWMHXLLOOLO]PSWPPQTQQOPMQPSRRQRSSQONQYTVTTVWURSXNIIOVY[RMMRRRRRRRRRRRRRQPPONNLLLNLLLJJJHHHHFFFFDCBBBA@BBA@@>==<<<<;::8886666444431000/.2222222222244444444445..38703 673OaZCe[;m_R}vQxuZ~_^XSSVY^SQ|[~ibroOWTTSSXUUVUURSSOTSS@B95@@E@<:961-+'%%!            ! # * , .14679=?=DA;76::>?;@# =01VMNUSSSUTQUUTXWYeci~^~Ox[]a`_cbb^WUNN~JvsFfcK`]Xa_E?<"3:<74543444444322211112220.000023444444445678889::;<<===???@BBBBDEFFFGHHHHJJKLLMNLLMNNPPPRRSYRNNRUQOLTVRTPXYSWRMIHWVPRWRUOSOQORUSJIJNRSSZWSQUVTPPSXPSWWURQMLLKMOPKGIEJNKDDGBEEHIGD@>A>FB=6=;87=>=<:@BB<=>D@?CCG>CKIMJINLFAHHLPSWNIVMMPPMO[PRVPPQTTUOOMRQQRRSQSSRONQKTRPUUVTQRVNKKOUWXRNNRRRRRRRRRRRRRQPPONNLLLNLLLJJJHHHHFFFFDCBBBA@BBA@@>==<<<<;::8886666444431000/.222222222224443445434301464*J<;`d`L_YBc[LzoQ|uT~y`]^\YXXZ\Q|WX{goVb`TWVUUUUTTSSSQRS;'*18:B@?;:971-+'%%!             $ % (.0369<>?>>==<<<<<<<53W?>?@@@ABBCDDGGGHHHHJJJJKMNNNOPPPPRRSTTTTRRRRRRRRRRRRRRRRRRRRRRWWUROOOPRSTMMNOPQSVWWWVVVWYZ[ZZ[[RSTTVWWUROMNMLLJJJHHHHINSSMHFKID:BDBBA?@>>>>CC@===>@ABBA@BDEGJJIGEILJHHHLOSUVSPRSUVTSQPMORRTTTTTTRRTUJOU\SRSWOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSVTTTRRQPPPPNNNNLKJJJIHHHHGGEDDBBBDCBB@@@>>>><<<<:9888766665542210000022344555862/02:3/2*;A=.( #"IYVC_^EgfHrqP~~P~QUY\]_^[WS~ZYU}|[aeYnlHRRSST[QRK;=7@A?=:536951/+)'%              $ %(-0379<>?>>==<<<<<<<;, 8"YLGSVPJ\V`}c\\fSU`gbZUVWSKQRP~MxxGmlBabG\^EMN<57& :C>514-68762442/-,,-/2420022255566668888:;<<<<====>>?@@@ABBCDDGGGHHHHJJJJKMNNNOPPPPRRSTTTTRRRRRRRRRRRRRRRRRRRRRSWWUROOOPRSTLLMNPQSVWWWVWWXZ[\\\\\RSTTVXXWSPNNMLLJJJHGHHJOVVNIGLID:BDBBA@@>>>>DD@===>@ABBA@BDEGJJIGEILJHHHMPTVWTQSTVWUSQNLORRTTTTTTRRTUIOU]SRSWOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSVTTTRRQPPPPNNNNLKJJJIHHHHGGEDDBBBDCBB@@@>>>><<<<:9888766665542210000022344555862/1/352/(@B?(8.-MQOJ\YEcbImlMwvQRSW\]_a`]WS~V~\]V~~\je|zMVVQOQUMN1!$3CA><9447851.+)&%             $ % (+0269<>?>>==<<<<<<<;50 YDBpnjr~cYZ[gWV]_]\Z[YULRSQQ|zMtsHijFbbP__JNN#'5<65:2788776430.--.03520022255566778899:;<<<<====>>?@@ABBBCDDGGGHHIIJJJKLMNNNOPPQQRSTTTUURRRRRRRRRRRRRRRRRRRRRSWWURPPPQSTURRRRRSTUUUURRRTUVWWWWWQRSSTTTRNLJNNNNLLKJJJIDGMMGCBIHE<CDCBBA@??>>@@><<<=?ABCCBCEFFIIHHFJMJGGGIKMNPNKMNPRRQPQPQRRTTTTUUTTVVMQVZSRSXPPRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSVUUTSSRQPPPNNNNLLKJJJIHHHGGEDDBBBDDCBAA@?>>><<<<::9888766655422100000223445559740227<91/83% ,# NPNO[XJ`^KjiOtsR{zTVWX[ZYYYXTQV_`\\cin}prrM?@.?B@=<9778741.+(&%             $ % &)/258;==>>==<<<<<<<<B5 D**][Vw^OP|Z~gZW\[[]__[WMUVSU~RyyPrrKlkH\[MVV=;<*!-8:99:8888;7441/../1452002225556678889::;<<<<====>>?@@BBBBCDDGGGHHIJJJJLLMNNNOPPQRRTTTTUURRRRRRRRRRRRRRRRRRRRRSWWURPPPRTUVWVUUTTTTTTTOOOQQRSSSTTPQRRQQQNKIGNOOONMLLMMJ?@GGB??GGE=CDDBBB@@?>>===;;;=?ABDDDDFFFHHHHGKOJGGGFGHIKIGHILNPPPRRRRRTTTTUWWWWVORVYSRSXPPRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSVVUTTSRRPPPNNNNLLLJJJJHHHGGEDDBBBDDCBBA@@>>><<<<:::88886665542210000022344555;95125;<<881(,#FD@V_[J\XPgfQqpTyxV~W[[[[YVUVUSPZ_]a`Z~fqNVT7&'7EB?=<:9;9531.+(&$              " % &).247:<=>>==<<<<<<<>E:.'Ta[eZOyV}_ZY\[ZZ\]\YSYXUVT||TwwUutI`_O[\Y[\C=@8%&0295;8888:74420//02452002225556678889::;<<<<====>>?@@BBBBCDDGGGHHIJJJJLLMNNNOPPQRRTTTTUURRRRRRRRRRRRRRRRRRRRRSWWURPQQSUVWVUTTTTTTTTTQQQRRSTTSSSOPRRRRRPMKJNOOONMLLLLJACHHC@@FGE>CDDBBB@@?>>>>=<<<>@BCEEEEFFFHHHHHKMJHGGGHIJLKIJKMOPPQRSRQQSSSTTUVVWVPSVYRRSXQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSVVUTTSRRPPPNNNNLLLJJJJHHHGGEDDBBBDDCBBA@@>>><<<<:::8888666554221000002234455597523787;:5*/%!NHDY[WS^ZSgdTnmTutV|{WZ]]][YWVWWUS\^X\b_jO_\ (9@C?=<;<= :431-*(%#            # & (-0269;=>>==<<<<<<<==AB& D75ouso_O}J[]WTRRTVY\`\WUUT}|QwwRwuPspJheIa_GZXBJH&#! 59;:76686554322345532223456666788:::<<<=====>>>@@@BBCDDDDFGHHHHIJJKLLNNNOOOPRRRRSUVVVVTTTTTTTTTTTTTTTTTTTTTTVVUTRSUVWXYTTTTTSRRRRRVVVTRRRRQPPMNPRTSRRQPPOOONNMLLKJJDEHGC@@DEE@CDDDCA@@@@>>>>>>>@CEGKHGGGGGGHIJJJJJJIHHHILNMMMMNOPQSTVSNOPPPRRRTTUWTVWWPRUWSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTVVVVTSRRRQPOOONNMLLJJJHHHHGFFDDDDDDDDBA@@@?>===<<;::98866665542222222244455553335797993)"DTMJ[TH^YVrmOpkRvqSywT|{W^][[XURRTUVXX\TR`lpts<,,,:4BA=<<:== 9320,)'$"              " $ (,/168;<>>==<<<<<<<;8;F-%%.+Gic^O~N\`ZWUTVXZ]_\XVWV~SyxRvtQsoQnkI`^JZYUZXB<:*2:::76696554322345532223456666788:::<<<=====>>>@@@BBCDDDDFGHHHHIJJKLLNNNOOOPRRRRSUVVVVTTTTTTTTTTTTTTTTTTTTTTVVUTRSUVWXYTTTTTSRQQQQUUVTRRRRQPPMNPRTSRRQOOOOONNMLLKJJCDGFB@@DEE@CDDDCA@@@@>>>>>>>@CEGKHGGGGGGHIJJJJJJIHHHHKMLLLLMNPQSTVSMNPPPRRRTTUWTVWWPRUWSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTVVVVTSRRRQPOOONNMLLJJJHHHHGFFDDDDDDDDBA@@@?>===<<;::9886666554222222224445555433579<>41.AD?FTNP_XTidOjeWwrVxtV{yV~}Y`^]\YVTTVWXZ\]UYaLif##),> 3:A===<><720.+(&# "             ! " ( +.0479;>?>>=======<;7>=8( KGFo_ITWSQRQRNQVaZUVZYY}W}{MtoSvrOnkFa_Ea]CXS2:6)-7975215655444455642234466677889:;;<=====>>>??@AABBCDDEEFHHHIIJJKLLMNNOOOPQRRRSUVVVWVTTTTTTTTTTTTTTTTTTTTTTUUTTSTVWWXYUUUUVVVWWWW\\ZXVUUUUTTMNQUUUUUVWXTSSRRQPPONNMMNLHDCDDD?DEDDDCA@@@?@BBBBBADGKNHFGHHGGGHJMJHIKLLLLORUVWUTTTTTTUVVTTTTSSTUVXVUVYYVPRUXVTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUWVVVUTSRRRQOOOONNMLKKJIIIHHGFEDDDEEDDCBA@@@?====<<;::987776654332222234455666-/27::90 )$!5:49OHFc\Eb[KjeSvoVzuU|wV}X[`YVXXVTSUXY\WPOffzyGEE/7 B:.9><<=>>:631.+(%#!             " ( *-0358:>?>>=======<;:8?E:5 "^igiCRTPNPPQJLSdXTW]]YV}|T~yOvqQtpLnj?e_@b\GXT932$69740,474555555574224446668888::;<<=====>>>?@@ABBBCDDEFFHHHJJJJLLLNNNOOOPRRRRTVVVVWVTTTTTTTTTTTTTTTTTTTTTTTTTTTUVWWXYVVVVXXX[[[[ba^[XWWVWVVLNPVVWXXZ]^WVVTTSRRQPPSSSOKFDDDC>EEDDDDB@@@@BDEEEFCFJNPHGHIHGGGHJNJGGKMNOORWZ\][YWWWUTVVWXVVVTUVWXZXUWZZVPRUYWUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUWVVVVUSRRRQOOOONNNLLKJJJIHHGFFDDDFEDDDCB@@@@====<<<::988886654432222244455677)+18<<;) 6<8IZR@>8631.+(%#            " '*-/358:>???=>>>>>>?<=68?>&564PidX_TOLSRSNNQZTSW^`\W||]PvqQsoSspEidCd_Md`JNL8./,26522567456765564334456678889:;;<===>>>>>>?@AABCCDEEFFGHHIJJJKLLMNOOOPPQRSSSTVVVVWVUUUUUUUUUUUUUUUUUUUUUTTTTTTVWWUVYWUWUUUSSQQQRUVUTUUVUXYPNTVVSQQRTVTTTRRQPPONNNMNKKFEDDDAFFEEEDC@@AA@?BDAA?ADHLHADJHHGGHKOKGILMOLLOPUVXUTZSUUUWWYWYWTTRSTUVTPXYYVQSVYWUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUWVVVVUTSSRQPPPOONNMLKKJJIIHGGFEEEFEEEDCCAA@@>>>==<<;:998887655443332245556777.167;9/*22/DQMNg_IibKngOrmW|vTytU|vX|Z]`aSQUXVSRTUV[RV_Ree968& ?ID?7;<::>@ <7530-*'%#            " %*,.269;>@@@>?@@@@@GC<68;@=& %ovqlRJITSURPLKNRU\_b`[}X|xTwsPpmGniDlg?c_G`]Xfd)))%375683;268;7655555556678889::<<<>>>@@?>>?@@BBBDDEGGGGHHIJJJKLLMNNPPPRRRRTTTTUVWWWWVVVVVVVVVVVVVVVVVVVVVURUUTUWXVSTVWSWRPOMRQPQLKHGLQPVV\aVQYWTLECDFHMNMMMLKIIIIGBDDJGHEEEEGGGGFEDAABB<9<C;7446;BA8=KILHGIMRKDLMJNGEHDMKNINZQTVXXV_Z^YTRLMMNMKEXZYVRUXYWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWVVUTTSRRRQPPONNLLLJJJJHHHGGGGFFFFDDDBBA@@@@>>=<<;::888866655556534776888859=983 063Sgc?`[>kdHnhKpjOspSxtV{x[}^\\]_PNTXVRPNMNTXcdus/0 N D>=>F?:78=@ !:742/,)&$"           ! % ),.269;>@@@>?@@@@@FB<67>>50EPJbWIQJRURPMMORU\_``]~Y}yVxtRsoOvrGniIkgLda]hgTQQ(157-925299:9876555556678889::<<<>>>@@?>>?@@BBBDDEGGGGHHIJJJKLLMNNPPPRRRRTTTTUVWWWWVVVVVVVVVVVVVVVVVVVWWVPSSTVVTWZWTTXWQPR]"#t:;KKPPRR\\p;;MBKSMV]\_SXVUNPFDEGIKKJJJIHFFFFIABHCIHEEEEGGGGFEEBBCC;A<@?72249@7 DADONJHIKPFALNIIFEFKOIILUH ZWVVTS\bWSZRLMMNNNDRb]URUXYWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWVVUTTSRRRQPPONNLLLJJJJHHHGGGGFFFFDDDBBA@@@@>>=<<;::8888666555587557768888585C52.KOLXjfGf`DohKpiNrlRuqUzvX}y[}]\[\_PNTXVRTMLYXaa9MK ;?C?>>E>::=>=:742.,)&$"           # '*.0479=?@@??@@@@@CA?<;<<882F'&8<8tkSMLRWVTPRUX]`b`_~\{Z{wXvs[wvOnlPusEniGkgPkgKTS3(*&9<5589;556751255666888::;<<<<=>?@@@@@@@ABBCDDFFGGHHHJJJLLMNNNNOPQRRRSTTTTVWWWWXYVVVVVVVVVVVVVVVVVVWXYWTVVWYZWXb&(e+,d..mBDvNP\]ssƫ˴vvT//.ES_!]U]` f))vCCO))BHGGGGHHGGGGHFBAB::=D $]?A|~oJK> NPMKMS Y#_,,i97MLcdwxISVVVXYPJJ8 P)&c`T^[STXZWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWYWWWWVVVTTTRRRRPOONNNNLLKJJIHHGGGGFFFFEDDBBB@@@@>==<<<<:::88766555543456889::>A@4+)##LXUKeaJliIpmKvsNqoRtrUwvX{y\~|^^]]]]SQWXUOFNLRVxJB@-5>=;8:>F;7=? =:97310,(%$"          ! & *./368=?@@??@@@@@CA@=;8:<9@= Ib[wILJPYXUOQTW]_a`_~^{\}y]yv]wvWrrV|zJxrIsmIjf\hfUMN% ;C90588244541255666888::;<<<<=>?@@@@@@@ABBCDDFFGGHHHJJJLLMNNNNOPQRRRSTTTTVWWWWXYVVVVVVVVVVVVVVVVVVXXYY\_ "a"$e$&i(*p02s45r56x>?{CC~II}WYmo׺}~U $BZ\XZg&%a$$d21V11;HGGGHHHGGGFCB@@C7.5B %pUWmm8LNLHHNTT V%#h21~EE\]suCHVWZ`d!!a'&j:7k>9}WSJVYSUY[WVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWYWWWWVVVTTTRRRRPOONNNNLLKJJIHHGGGGFFFFEDDBBB@@@@>==<<<<:::88766555212466889::EHI6 SRQYjgJhdOtqR{xLvuRtsVxwXyyZ|{]~}^]]\\\SQVWTOBCKZcTa_ *C>>848>H<8@ !B"#=797310+'$# !         & *-/368=?@@??@@@@@??@@?>=<=@9# ..)TkdfXPOVYXWTUW\]^\[|[{Z}y]{x[xxXxxT~{N{Q}BojGeaWb_B;<6!35.124677532455667889::;<<<<=??@@A@@@@ABCCDEFFGGHHIJJKLLMNNNNOPQRRRSTUUUVWWWXXYVVVVVVVVVVVVVVVVVVYXZ[_ "c$&j*,q/1x79ACOOWWabjizzűﶕk9?: Ra##` s55v<BkHL}adƴrq5NOOIGHLGCJLMO%'gLL:HWZ_f#"l+)k20sC@zOLdaǵHYXTWZ[WTUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWYXWWWVVVUTTSRRRQOONNNNLLKKJIIHGGGGFFFFEDDCBBA@@@?>=<<<<:::98776555455799899::@?12!!<:9WgfBb`EqnUSO{{TyyVzyWzzY{{\}|]~}]^\[\USWWSPLHcjBih3*'/ ;9<:;;;>A;:@ !A"#=88531/*&## !         % )+/258<>@@@?@@@@@:<AEEE?;A<?C7#l~hTLSY^`YWXZ[ZV~~UyV~yX|x\{x\||X}}R}OSE}5me=_Z\ig@9;%+101299741156667889:::;<<===@@@@BA@@ABBDDDFFGHHHHJJKLLLMNNOOOQRRRSTTVVVVWWWYYYWWWWWWWWWWWWWWWWWWYY[[[^ "d$&k)+q14t79HHVUccrqưY6=E$`&&m12y@@]]yyL**DOKHGJHHHGGHKP!#W(*`13d78fCF~\ahlw{wz{mk4PSQKHGIIHNH> 7N:96LX\af#"l+'e/+a43uONsWTuqľK]XVY[\VRTWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYXWWVVVVUTTRRRRPOONNNLLLLJJJHHHHGGGFFEDDDCBBA@@@?==<<<::::88866668988:98::::7/ >>?_sq:_]3igJSQWVV{{VzzXzz[{z]}|^^]\]WVYXTOR\vXll 8 TH3:6>B@>9;=> !> <:5420.*&#"         $ ( +/258<>@@@@@@@@@<=ADDB?=9<?D1 $<5fVMSX[]WVWYZZV~}U~yU}xX|x\{w]~}YYUTWF|t;[VO][[UW2 #-12647542//37667889:::;<<===@@@@BA@@ABBDDDFFGHHHHJJKLLLMNNOOOQRRRSTTVVVVWWWYYYWWWWWWWWWWWWWWWWWWXYZYUUUWYX^%&^((`/.o?>po߽\29St78t:;UUrsM))AOKHGJHHHGGFEFJO!#Q$%R/2^<@mFJaf~zki3OSOJHJMLLVXX%&]67{fe8IW[_`b"h/,qA@ZXFVXXY[\VRTWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYXWWVVVVUTTRRRRPOONNNLLLLJJJHHHHGGGFFEDDDCBBA@@@?==<<<::::88866667764458::::3+>+-ggfL`^BfcO[TW]YX}}WzzWyyYzy[|{]~\~\\\UTWVSMOg_#66CF<;9<>@@@=? > ==;:531/-*&# !         " & +.245=@BCCBBBBBBEC?>><AC4 93=C>3bca}YRSV[ZZZZWUS}OzP~xU}xY}yN}KUTNMK:wo6e^D`\Sb_91/-(233123/+17667889::<<<<===@@@BBA@BBBBDEFFFGHHHHJJKLLMNNNOOOQRRTTUVVVVWWXYYYYWWWWWWWWWWWWWWWWWWWXXWSTQPRQTPV'&e:9sqͻq@@{FFll̨\/0LVOJGJHHHHGGHDCDDEEK GC#}ro6 MS["]%(d/2m;=xCGOMXUcbst֭<R\^^ZWe""o$(m+-d01mEFGV_TZ^^VQRXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYYYWWWVVVVTTSRRPOONNNNLLLJJJHHHHGGGGFFFDDDDBBB@@?==<<<<;::88866664456668:::=598Wb`@ZW@BCCCBBBBBGC?==>??=4.9CI5(&&4WRaKLORSVXYWVUOzPyV~xZ}yN}OUUXSOQEvnCb[Sc`cYVU8703667=A#"> -/8866679::<<<<===@@@BBA@BBBBDEFFFGHHHHJJKLLMNNNOOOQRRTTUVVVVWWXYYYYVVVVVVVVVVWWWWWWWWWWWWUZ^d "j'*p24GH]\xwݶʤe.-h22sACxQU]/0KYOIFKIIHHGGHCCCAACEH_9=ɱ}tq2NXUPMNR!S! X&"f+*k-.l67qGHuw<PY\\TNU_[\#%pBEO" U\SZ__VPPXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVYYYYWWWVVVVTTSRRPOONNNNLLLIJJHHHHGGGGFFFDDDD@ABA@?<=<<;<;997786667;5 9F H!"C8<<=<LFERWVVa`A[XMwsSOKTSQYYW}|VzzY{|Z{|[}}\~}[Z[SOROLO\,PQ!!&9[ B7;DHFHD@?B %B#&@"#=;86420.-)%"          " & * -146:<?ACDEEDDDDBA@@A@@C<9;?C;'i|xsri]}W}R~{S|S}{Q{yV~|ZJNSXYYRVR?kg@^^[gg`^^*#%%6#3#4'),'(#"J[YEED)+8=D>:88<==;;;<?@BCCCBCDDDFGGHHHHIIIJKLMMNOOOPPQRSSTTUWWWWXYYZ[[[ZZZZZZZZZZYUVWXXWVUSSRPQONRX'&j;;uJK|}ƫ^0.d32k?>igX-.FPOMKFADJIGGIFGN%&\./c9;kADyKOdhrq5MTTRQSV #T(']72kD@uKIXWrrE]h%&j()p//x77|?={>=EFNNfff67QXTZ[[VXYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[ZZYXXWWWWUTTSRQQPOOOONNNMLLJJJIIIHHGGGFEEEKE@<>@@==>?==>@>>:8652MPPPSS"$$/*+3&(4#0,# 6"%Xc^Pf`A^ZDplXXUSXUVXUTS}yRxtZ~z\~x_}[}yahs{z}x`ro#=HB<>EFDD?@C "B#$B "B ><86420,+(% #          " & * - 14668<@CEHHFFFCBBBBBBBBCD?==A?0K:6sunyvkffc{ghhabmxwa~WLyO}zW~T{}T{]HIR[VTQPVE}|9ehCacTgi7CF-*0!5%-1'.$'+&(B?bd~231!;JJB:56<>=:89:=@CDDDDDEFFHHHJJIHJJJJLMNNNOPPPPRRSTTTUWWXXXZZZ\\\]]]]]]]]]]\ZZ[^^`a c"!e$#i('k**p00n55l=;hE?oLHvQN[Zbd˾lHEfczS)*CKQQOA8=JIFEKHE!!J))^12f??iDDyRSefsuǶqq: LNV)&^-*g20p::zBF{USnh{ƮJf "j+*l1/w=;JLYZcburŭ~KPNYUZXWV`a\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]\\[ZZYXXWWWVTTTRRRPPPPPPPPPNNLLKJJJIHHGGGEEEVI?7=@B==?C=@CGFC9622/:9ci?=&(!)-2+20&(!-%+JLQMg^>dZ;iaLXRTXYWWURQSzR|sYvZt]{\ze]|xdk]ti\mcqk`poiK514 B==?A@BCDA=AF%%A$#AC?<8642/+*'% $           " & * - 14679<@CEGGFFFCBBBBBBBBBB>=>A>7 ++&XSO0!K)(?"$@./^[[bspc~yc~`~^~^U~~YRORWWQSOVYLsuDaaK_aYfh\]a<5:4(/0). 01Y|{_nV^[1%%8GA=96:==><;<=?ACDDDDDEFFHHHJJIHJJJJLMNNNOPPPPRRSTTTUWWXXXZZZ\\\\\\\\\\\\\\``ac! d"!g%$l+*r10|:9CAIHYZdcvtǞٮ轼qHF`]zR()? HMNMA7;EC@AJG>5;83 3 . qq9 LNP Y'%c.-m66u>B{PN_ZhbvsdzE^XX`#"o,.v87|CBTSda{y_bM ]XZYXW^_\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[ZZYXXWWWVTTTRRRPPPPPPPPONNLLKJJJIHHGGGEEEPF>8=@B==?B=?ABC?83*-7" UonbnRtr%&$(,'+:-3B8=`Z_fjmOga;`YLzsYUTTWWVUVSRV}\}Z}ubvhyj|wernIRP1,!9(J1)2'LJC)'"'1 ?>B@@@BCDBACE$$@#"AB?;9742.+*'% #            $ ) - 03678<@BEGGFFFCBBBBBBBBBB<<?FGD>;Q%&a%)-6+2t#(m'*h00UUzzyxrqohy^A|[aJFW_[KKYcCkh@kiKmlPggN]_/8;(*#$1ONm\WT{Nb^0%'* H"B?:<==ABCEFFFFDBCDFFFFHHHJJJJJJJLLMNNNOPPQRRTTTTUVWXXXXZZZ\\\\\\\\\\\\\[XYZ[\YYZ^be"!j')q33~ED[Xnm߫׹غY''Nb'%W51U,-6 >EKNGDGMFCBGHB:=9<C;+pp8 MNEMNNMQOEF@>T99A[ZVVZXe!"q)*m11NNy|J b_ZYXZ]]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[ZZYXXXWWVVUTTSRRPPPPPPPONNLLLLJJIHHGGGGFEC<87?BD>>@D@<95<=A@$,0,IbY]Yep??)*!#.7:UadSefGccKhiAkkOQINQTQNKTSUU\|`zp}v}yRRw/2{(-p)(o*(r'(a('O('67DB;>?ABBBBACE!!D""A"!AB>;8631.+*'#             # ) , 03568<@BEGGFFFCBBBBBBBBBB<<?FHBA3L!i-1{'/*1z'-t-1b++c99bDDSCBrxvjW;~`hNCUb^MGYudBljBbbOdeUceKSV]girelYIxRygxuTEF1BGC;9<=BCCEFFFFDBCDFFFFHHHJJJJJJJLLMNNNOPPQRRTTTTUVWXXXXZZZ\\\\\\\\\\\\\[WWXYY[[YYZ[XWUX%"b.,j65r?@b8>@D@<94;CH=/GIEg}tZ~e^ehn\fiS[^ZdgWgiMhiWqr^]OJKQVTPK\WRL~U}Vyn7A8bHDf23p'*,3v/.r.,s((k21B6?F?=@@ABBBABEG##C!!@! AA=:8530-*)& #           # ( + /3568;?BEGGFFFDCCCCCCCCCC>=>CDC>9X(*o-1}#-z((x)'}0.z.,{..{00t./zFEmPL~zs\ESSRRRTPVZcEz9lgAjhGffSjkYppdrcXWO|P|yRrp%22 4BD?8:>?BEGHGFDBDEFFFGHIIJJJJJKKLMNNOOOPQRRRSUUUVWXXXXYZ[[\\\\\\\\\\\\\\YZZ[[]\ZZ[\ca\Y]VY; di]_KN NQMc88g:9{A@QOvtlo|NO{ONwRORRVU[[^^ki}zάʲڿ>Q"$T))\53n@@{RSjlʣpp8 MOLTWTTVZ[%$j65tCDVXC\WUUWUV\ WO <>®J ]e[XY^^]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[ZZYXXXXVVVUTSRRQQPQQQPPONMLLLJJJIHHHGGGF>:9;BCB==?CA>;8:;03;8VunR|ZW~]fp^~}WppQhhJggFkj>BDE>BPr*0,6x(%w+#.(0.00/0.1-,g)&qMH}sV1R`SIHUYUCSWH?soBmkLnmGgfDecUxv`]SL?}zQCjg.98-@MF58<>BEHJIFDBDFFFFGHIJJJJJJKLLNNNOOOPRRRRSUVVVWXXXXZZ[\\\\\\\\\\\\\\[YZZ[[ZYXXX\kkhcd^ aE ѮV d me[[HEd:9o65DBc`a(,FHBMN QSY+*a<9tURxx, DEI X&%X//i@B{PSoqpp7 NPJQQNMRXUZ!"a,-uEGE_Z[]a_! j!"{&*z*-~25AE|MNZZ h[XY`_]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ZZYXXXXVVVVTSRRRQPRRQPPONNLLLJJJJHHHGGGG989=CCA==?BA?;9:1/<89Ulh]:vU}T}{\WMxv?fdGhgGgfCmkBtpJ~QVQRZVL@DM`E P35pp7MOMRRQQRUPLOb46xxF_\]a f!"d#$p**3569BD[^des9:W h\YZa_]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]\\[ZYYXXXVVVVUTRRRQQRRQQPONNMMMKKJJIHHGGGG=<=?DC@<=?BBA?=8%933ixulV@xU{y_T|zEpm>ecDhfPqpJlkCnkQcaRMQWXOFJQ`^cRDEm*/*/24/.0.,*,*0.0.,,}*-i))B@EGG>=ABCDCBFH!!G!!B?@?<8641/+(' $ "         ! & * - 0247;?ADGGFFFDDDDDDDDDDDFEB@>95/9X&(m'-}3.~1)/(0+0,/,0./.7462+&}kiaIELVSSMLQP]ZDyuGspFljKlkOlkC__Mfff|b|F~7AE6]W" -@=;6;?ABBBBDFFFFGGGJJJLLKJLLLNNNOOOPRRRRTVVVVWWXXYZZ\\\^^^^^^^^^^^^^^^]]]]\\\_bca !d$$g*)j1.r98q=;8530.+(' # !      ! & * - 0247;>ADGGFFFDDDDDDDDDDDFEB@?9528\*-p)0w.*~2*2+1,0,/,31530-403.PGEe`JHNXVQKNST\_dKvsLqoKlkMkkOllHdcXor]yKBEQe,***@<;6:?ABBBBDFFFFGGGJJJLLKJLLLNNNOOOPRRRRTVVVVWWXXYZZ\\\^^^^^^^^^^^^^][[[ZZ[[ZZ[YVWZ_$"i.-s=;xHF\[ooƨB[WWZ_^]]g#$p+,@AXXhjZi]Z[d_^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^]\\[ZZXXXWVVVVUSRRRRRRRRPOONNNNLLKJJIHHGGGDDDFEB?;<>BCFIH( 8;:iVURJ\yyXttJkjHjiGihSvuFljOzwd[TYRHISVXNPUd\?>{.22<18.00.3.2-1+z0*}1.w-,u11VB??DB@A@EDDCCHGDB??>;8420.+' & # !       " ' + . 0 47;>ACEEEFFFFFFFFFFFFFHGDCC@<=C_#'x)1.-/+1-0,.+3/404241414/25|@B~wQHOPWVVTPUY_[OwuOqpPmmWlmUijOfiXrxbYOPSK{t5JE7?;BAFD>>?BFHHHHIIJKLLNMLMNNOPPPQQRRTTTTVXXXXYZZZZ\\]^^_`^^^^^^^^^^^]_`bcf j$$n((w11<<9621/-*& % "          ! & * . 0 47:>ACEEEFFGGGGGGFFFFFIGDDDC@AF\!{'0--.*2/2./,40505162525//4-2dIEuSBFHHHHIJJKLLNNMMNOOPPPRRRRTTTTVXXXXYZZZZ\\]^^_`^^^^^^^^^^][\^``ceg!!l&&t..z55@@NN`^roҹzKLef`+,P [ 8b63KOKRPOOY[[""Z[)*5 ONONOQ "Z*-a8:mPSqsB Y ^!!^!"d&&e''e)*m35c00b42e;8qDCtGGuKLnoE^bc k&&y,.|35{A@RN_]rrÍ̞ͲSbZ\`g_]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`^^^\\[ZZZZXXXXWVUTTSRTTSRRQPPOOONMLLJJJHHHHKKKIDC>?KIIFC7 =&(fusfLHXXWuzSgiTiiTllTnnSppRtr[b\TOXVSPMMBBd~bON(+032352:2;2:161311121-.-.v)*a LIEBBB?FIFCFI HEB@?><9621/-*& % "         ! & * - / 47:>ACEEEFFGGGGGGFFFFFHGDDEED@EWv&/-.-+2042204141535352404546m/-nkfm\N[VVSKOQUX]\Z~|WvtYrrVlmTlnJfjEfhP}{\ZOYY|FLK8"&4>FIDD@>>BFHHHHIJKKLMNNNNNOOPPQRRRSTTTUWXXXXYZZZ[\]]^__`__________^\\\\\\]\\[[Xah**q:7zLI][p;=IJdeb10b v*+l:9ªh53OSMUSSUY[\!"^ g346 PJMOP"#O"$Z-1h@B|_bpq= RRKQH IK@ I@IEC^=>E_`_dm!#o%'k.-m:6~A?HGRPYXyXVɹf54YZ]afa__________________________________`_^^]\[[ZZZYXXXWVUUTSSTTSSRQQPOOONMLLKJJIHHHIIIFCA?DKFGD78!#OPOgaYZ[OzzHdhRhjUllUppWtsVvuX}{`_XQNRWKMLOObnsebu782141326191:28151311122.//0t--TLKCAAB?EHGEGIGEB@@><9621/-*& % "       ! & ) , . 46:>@CEEEFFGGGGGGFFFFFGFDDFHHAFSp'..1,.12443443324444532164,*7:)(~bZXXTUJHMLC??BFHHHIJJLLLNNNOOOOPPQRRRSTTTTVXXXXYZZZ[\\^^^``````````````aa`__^_aba`fi j#$m,,r<:vHFjhloCgb#&wKM[-,k/.SR}yo43UXOXXY^YPSXHfd9 PS!"K! T('V//fAApGJgino=RPQSNSLX&%a.-p?=~LKYZnqF`^]^cdYQZWUS!FjfJ[`deb````````````````````````````````````_^^]\\ZZZZXXXXWVVTTTTTTTRRRPPPPNNMLLKJJHHHGGFBA?HPKFE>0AIHDpiF{U^bTvvKdgSgmTnnUppWttZyxY}{[^YRMOHKAONP`nWS/-),5.7/607/80916241211223./00o/.KLKB>@B?FIHFHJEDCAB?;8530/,)& % !      ! % ) , - 36:>@CEEEFFGGGGGGFFFFFGFDDFGE?GPm%+/2./01334454435555644321<;,-75L4-hzXWWN=KLMPRUZZ[}|]{z^xx[xwWvuSnoJjiEnkBwsNLFyrIgdR]^G67;DHONC??BFHHHIJJLLLNNNOOOOPPQRRRSTTTTVXXXXYZZZ[\\^^^``````````````_^^]\]^``^^efba"!d/-oB@uQOfhE bS]34`21f*(FEc`n43TWOXWX\Wc$#c((c$$KK̩8 R`/0W-,\0/W10d>>pHJprħpqA W[XVh0/b,,c25r@?q?=][hg}~ڸF`\_fp"&t(*n-+j3-y95FD[YnlǭK[`deca```````````````````````````````````_^^]\\ZZZZXXXXWVVTTTTTTTRRRPPPPNNMLLKJJHHHGGFCA@KOLH?9G25\aaKrl>xoSK?nlBggOkmVkpXqrYtt[ww^|{][ZVQNQLEMHGaeZvoP<7}42/29370608091:27342322334-./0j*)NMHB>@B?FIGGIJ DCB@A>;8520.,)& %       # ' + - 369=@CEEEFFHHHHHHGGGGGFDBDFGC;>AS!$0102/101243555758675739752639695=8mejWXPOQRSVYW}Y~|Z~|Z|{^{xXtoOoiOtnKqkAgaNsoQvqJojCge=ec@TP("$=ELIFEEHJJJJKLLMNNNNOOPPPRRRRSTTVVVVXXXZZ[\\\\^^_````````````````__``^]^_`^PTSTZ'%c97rQOvWW0G -J1/}WUdayum34TWOWTUZ]TOXZu::qpmlllllmllolpkpnoprXZLP>W:8I/-5/K-.W67vZ\op> STY! [#"]('m=:8410.,( % %       # ' + - 269=?BEEEFFHHHHHHGGGGGFDBDEGE<=<D|*,3402/12536668697868463949486;8/+rE>WlajPYTNOPQTXV}W}{X}{WzyXuqYunWxqMtmHnhHlfGfcLkgKliEkj7heJc_LGD9'&9BKJGFFHJJJJKLLMNNNNOOPPPRRRRSTTVVVVXXXZZ[\\\\^^_``````````````acddffj""m%%o''u--|3398EEPP_^roŞָʟէͲνtQNuq˷m34SVNVSSZVPQWQ Q[! Z ^_Y V"V#Y#O!"Q"#QRT4 wtH1/S55abno<SQJLO8wSTʼpIE+9H mKMF``_adb__dad!!h**|?@``d;7T fgacc`````````````````````````````````````^^]\\\\ZZYXXWVVVUTVVUTTSRRPPPNNNNLLLJJJJFGFDDIIPB*50,JIMYgjBaa1ea8ni@,12455109473747291:1:28363320253l.+@@DE<<@GFJKJJIFBB@@A>:742/.+( % $         # ' + , 269=?BEEEFFHHHHHHGGGGGFDCEHKKA>>@r#%33330135567686:7958453982/9360;460b3.wie}p\PRTTWZY}X|{X{zTxwUupZypY{rQtlMohOqjKjfIifLmkMnnFjjFjeRrgNWQ1!9FHHGHJKJJJKLMMNNNNOOPPPRRRSSTUVVVVXXYZZ[\\\\^__````````````````abddh i!!j""q))y11~77EERRbbvuƌП佻ţԚҧ۹f<:PMlhn35WZRYVV\ZVRTVRFJOPIEEHA@DUJ'ݹlkkOOvwͻqrD [!]!"]&%`,*n= CIK@@DJILLKJIEBB@@A>:741/.+( % $        " ' + + 259=?BEEEFFHHHHHHGGGGGFEDFLNMB=ABi10652356667796;6;49355470/:/4)>281+-&+_cmcRVXXZ^[}}Z|{Y{zRwvW{sZ}pVzmYwnVtlRpjQnjKhhLkkMjlRjm>rj:sYuCG@.CJIIKNLJJJKLNNNNOOOOPPPRRRTUVVVVVWXYZZZ[\\\\^````aa``````````_\\]^_^\[]`aYc"$j''s--}89~ABYYpq9d]wEGȱʳVT_]~yp27[_W]ZZ\bYNPTSKRXZQKLOKHL[KJ-,sZYI01rsE \!"_$$h21h75rEC\ZF`]^bg`_cia\]go(,Z]ejhZ`a`````````````````````````````````a````_]\\\\ZZZZXWWVVVVVVUTTSRRPPPONNNNMLJJJJOOOMKMPL'?KBTuF|x>jhNll\jn\diakpXjnKggMnmRwuRxvXxw[yx]yyayz`z{^}}]VVWZCa~RW(,/243;841967416285696:5:4818160506.1/dEFNNDCIONPNKJIDBA@@A=:740/-+( $ $       " ' + + 259<?BEEEFFHHHHHHGGGGGFEDFKKH@=EFb,,7645656677:7;6;5:5325788917.6,93>?37_14KRRmWTWWZY~[}|[|{Y{zUyxWysYzpXzpYxoVunSrmNkhIhfJhgFeeLhiGvp=|ofipk5%#>FHJLMLJJKKLNNNNOOOOPQQSSRSSTVUVVXXYZ[Z[\\\\^````aa```````````^^___bb_^^\V[]`c b''c34wxC af$&^+,hDDiGBcFAaE@`E@`ECbEDbFFdEEgFFiEFjDGWXyxΘp27Y]V\YY[ZWQQPNMRVXQLLOIHKZ^./gfpq? TUPNM;zaavbaF`]^chdfjnedf k!_!W()x53cg\`a`````````````````````````````````a````_]\\\\ZZZZXWWVVVVVVUUUTSSQPPONNNNMLJJJJMMNLJKKE:+)ixqZ|O}zMsrJhhRgiWfiSdgRgjRnnRrrQtsPurVuu[vw]wx_yx`zz^}|YVUW[NiOLOo.214<=8651851.9749275696:5:39282615060*([JGLIDCHMLONKKIDBA@??=:740/-*' # #        # ' ) 3 5 69>ACDFHJJJJJJJJJJJJHGGGGGGGFGGKc!45421/9762948475;979585777657598765341.+sizQ~YY`}~K{c~yf{yYzyXwzVuuUtpUtqUtqUtqUtqPolKjgHgdGfcIhdFklNy}[[Rsq$..,DSRIKNNPNJNOOPPPOPTWY[YUOJLVNRW]VW[c^\\^^^`aabbbbbbbbbbbbbbb``abbbbaaa_Z`gq!u'*=AjmбO_ u!_^ec \ajlk^bac^c"%j).m/5Z04m34TXS\XUUUUTUVTRQQQPRRNEHIGI3xwMg/.q53{@>QNkh}Fbddkkn #w,/{35=>@BTWgjx|Ɠz|G adaebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba`_^^][WWWWXXXXXXXVWXY[[ZWUSRPPPPPONNNNNBEMPIB&7::Tro]MVxuPolIheIgdIgdHgdNmjSroXwtWvsSsoYpwapwesu[{sczt_zL|f|\YXc`.4-367;7:38293:4;455468795:4<4;394842044]DGGGGGGGGGHIKJIGDB?=;::752.*% !            # ' ) 3 5 69>ACDFHJJJJJJJJJJJJHGGGGGGGGGFK[z*+86864295<6:687:8785868777675987664520-]L?[\R\fGzd}xhzxVzxXwzVuuUtpUtqUtqUtqUtqQpmMliIheGgcIgdAdeBlrLVfMZY1CQRIINNPQOOPPQQPNPUY[]ZUMGIULQV\UV[c^\\^^^`aabbbbbbbbbbbbbbb`aabbaacddcY_eps#&p+/{GJefҶTlkhX_[ ]\ f i neeejm'*y6:GLgnm34SWR[WTTWXXXZY[Z]" `%#b'%f')k-/n56q>>{GIOSTXeidets@ T[ c(&d+(p>;`]нD\]aihdeg!o)*o*-x47@CQUad[deebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba`_^^][UVVVWWXXXXXWXYZ\\[WUSROOPPPONNNNNGJFRN:1W\\kY:zNolJifGfcHhdKkgKkgNnkSroWvsVvrSroYpwbpwgsu[zsdyt\}xLmcZPgzpPL/60857:6:39393:4;366678895:4;4?6:552<;&'QCGGGGGGGGGHIKJIGDB?=;::752.*% !            " & ' 1 5 68=ABDFHJJJJJJJJJJJJHHHHHHHHHHGIOa86A?31:7:7:7:798787867767585:89786756572uQLzydYeQ{\}yazwcwwZvzWuuVtpVtqVtqVtqVtqSpmPnkMkhJheIfcDddAeiDorKyw`^xuA?>;$#=MMJOOMPOKKKKKNSPPOORTWYYZ]UY]aZ[]c^\]^^^`aabbbbbbbbbbbbbbb`aabbbcdddd`cgn!"s)+r13MOffO"#UT [M U M ['#|LI}FGL=D P\i#"v)-~49IO\bm34V\W_\YYXXYXYYYYXXXZ["#Z%%Z)(_--f23m8;h:3""=EDZzweSzxDihHfcEc`Fc`KifQnkQolQolTqnVtqVtqTroYpv_qvbtuR{sayu^ywZ_\evtssPJ<:585974;5:3949596:68999:8;5:5;6<764:8<:bHGHHHHHHHHHHIJJIGDA?<<;:841.*$           " % & 0 3 68=@ADFHJJJJJJJJJJJJHHHHHHHHHHHGHQ}+)><86967596:788898968767585;8:7:7976734.0DId~Z_|~W}|V|y]yvltv\tyXssUrnVroVroVroVroUroSpmQmjMifIfbGddCbe>eh=igMxsVyuVe`D><5DNMQQJNJGGGFDLVPKGEIOXaffc\^ce^^_d^\^^^^`aabbbbbbbbbbbbbbb`aabbbbaaa`^bdj#"p**r34|HItsrSSWu23u22{==JF]X{w˻ɻhitGEe.-a#"az'+07@GBHdgm34X^Za_]]WVWVWURSPONKHD?@CJAE$$qp9LSMJH)mTPG``_^e\^abh!"f""h&&s46}GGkkɭAO_ebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba`_^^^`gfdca`^ZXXWNNPQQRTVVVVWWVUUSQPPPPCGTL8FDCMlhG}vKwtIhgQ_aGb_Eb_Fc`MjgRolSpmTqnTqnUroUroUroYpu^qu_ttK{s^yu`xw_P~}Q~d|wIM3222797994>6<594979898:;::<8=6<7<87657<=~+)IFHHHHHHHHHHHIJJHFDA?<<;8841.*$            " % & 0 3 68<?ADFHJJJJJJJJJJJJHHHHHHHHHHHHIMg20?=:78696:799:9:99987868696:7:79777764504bvqb\zzU}{Uzx\xvgtvXtwUrrVrnUroUroUroUroVspUqnSolNjgJfbGccA_b>ce9cbAjfMpkYlgTSP:&$6DLPQKNJLLMLLOTQPNNQTY_aa`Y\`b\\]b][^^^^`aabbbbbbbbbbbbbbbabbccbbcded`d h$!o))w12y:;xDEkko45OQUVkl~Ҡ㾽ljOO@D~17?~HK\]sr@ V\!X\! \&$U&$xuE_fc^eZ_d^de i%&q/2z>@\\~ǩqDED ]fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba`_^^^_cb``^]\YWWWSRSSSTUVVVVUUTSSPNMMMMGGK@?''X[YTrn=mg>fcFddQcdHdaHebIfcNjgQnkTpmUqnTqnTqnTqnTqnWos\qs]tsLzr^xu^xwX|{O{z[kytl155465997895?8;5:5:7:899::::<9=7=9<987<=23gKJHHHHHHHHHHHIJIGECA?<;:8751-) $          # & 0 3 58:>ADFHHJJJJJJJJJJJHHHHHHHHHHHEDFLo%#?==<;:;99898=7?7<69686867486979797=:/.5jcKjd8EA*6CLNMRRVY\]aYOUZ_ceb_]ZZ\WY[\XWX\YY^^_``bbbddddddddddddddcddeeiln!p#!s%#s'%t/*v51}=:FEPP`af69Sn-2v49GJabޭnqS^ "q27UXp34]d`f^YXZZ[[[]d$#e(&j-+o20o42v=<}GFSQ`_llyyФwvKe-,r64A?FDa_ǓLdffceUaoeffi!l#u+.u/3r59NQа@_gdddddddddddddddddddddddddddddddddddcbba``^^^\ZZZXWWWUUV]\ZYWWWWWXXPPPONJGGEEETI42&$=MHDd]Ale?icGgfOfgQ_aJebKgdNifPkhSnkVqnWroVqnUpmUpmVqnTppVrpVtqMxr]vv\vwSxxT{yig-4;7:5:69492;495:6:8::8;:7;7;8;9<<::==@?n OCGHHHHHHHHHHIJJIFDCA><;:8641-) $         # & / 3 57:>ADFHHJJJJJJJJJJJHHHHHHHHHHHCCJNe0.<;><=<::;:?9?8=7;89797859797:8:885<;2:fVTtUyxUxxTxxWvwaquMutQrpWqnVqnVqnVqnVqnVqnVqnUpmRmjNifNhgIddJffDfc>gb@mgDogVsmYd`XGII$'ALLOSUVZ]^aYNUZ`cec`^ZZ\WY[\WVW[XX^^_``bbbdddddddddddddddddefdddded]^` d$#j++m12yCDZ[ѥ`$FJ B\]|I LF ;p34]d`f^ZYXXYZYYXWVVTSSR#!V&%\+*_-.i79qEFzYYts? T\ a$"r75u><MKǟLafb\[RX b _ ^ ] \ dfcl+0VYӰRTR ddddddddddddddddddddddddddddddddddddcbba``^^^\YYYWVWWTUV^]ZYWWWWWYYPPPONIFFDDDRDI%%]MK[hcNmgCohAmgGgfKacNZ]JdaMheQliRmjUpmWroVqnUpmUpmUpmUpmTppUqoUspLwr]uu\tuSxxTm{tTQ6=:7:595;69291:5;7:9:;9<:7;7<9<:;;<<::,+gN@GHHHHHHHHHHIJJHECBA>;;98730- ) #         # % . 1 4 6:=@CEGHKKKKKKKKKKKIIIIIIIIIIIFDHHQg!1-=:A?>;;;>8?7>6<7;7;797:897;7;7>6;36779egm{{RyxXwwXuvRutLtsQqoVpmUpmUpmUpmUpmUpmUpmTolRmjPkhNhfGb`IcaIdbHgdElh?kdDidTnkellG@B:NGNQRSTUUVVWXYZZXVTUUX]Y[^_^^`baa__``abccddddddddddddddddeeffedbba\XQM PQLJY86͸DZȲƯƎoozz˦s24^c_bZSRUWWVVWXWUSRMKHFIMLJO((kML|rq> S[\Yk/.k32bbʤJ_ `]\af+*tpӻлϼϽμϽҾ̶Q]edddddddddddddddddddddddddddddddddddcbaa`___`__^^][[ZYXWWWXWVVUSRRNOOOOONOPPPD3MFC\pjRrkQslPniQhfJcbGbaGfeIdaNifRmjRmjUpmVqnUpmUpmVqnVqnUpmSqlQrnSspXts\tvWuuP{xpzw`_996974;5<5<5:392:4;6;9;;9<:7;7<:;<;:<;0.[QAAIIIIIIIIIIIJKKIFDCB@<<:7640 , ( #       # % - 0 3 6:=?CEFHKLLLLLLLLLLJJJJJJJJJJJHFBBIN h52C@?;;;>8?6>5=7<7<7;:<9;8<8=8C7:-9749wBFistN{yYvwYuvIvsItsPqoVpmUpmUpmUpmUpmSnkSnkRmjRmjRmjPkhJebLdbOfdNigDhd=jd@idIkh]nmJOQH-.YHPORUTSRRV][YWTQNNPQV]Z\`aabdffe````abcdddddddddddddddddeffiln!r%#u(&w+)|1/|64~>;DBKJOOUWUVfdYX]\pp׶u24^c^aWPNVXXWWWXYXYYVVV T" Y$#`**b,,f35rHJtVUwtrq= RY_]g((m22xBB^_a%*-22578CDKL_^ѻciWeddddddddddddddddddddddddddddddddddddbaa````aaaa``]]]\ZSTUVVUUSPNOLMOPRTVYZXWGE0/PUPNtlBneImfRigZfeRfdIgeAjgJfcOjgRmjQliRmjSnkUpmUpmVqnVqnUpmRrjOslQsp]ss]tvSuuJ{wqnlBB245694>6?7<5=6=793;6<9;;9<;8<9<<;=<;63aBA>GJJJJJJJJJJJJKKIGEDB@=<:7540 , ( #        " $ - 0 3 69<>BDFGKLLLLLLLLLLJJJJJJJJJJJIHBCJI U %!84?;?>>9>8>8=9<7<7<9>:=9>9=7>4;1:8:>:>ugh[{yYvvSssMssNqqSqoUplUpmUpmUpmUpmQliQliRmjRmjQliRmjQjgPheQhfNifCeaAjeGmiHifPedMXYMEDM1-@% G&"B@FILMOQTTXXWUTSVWX\[]^__`ceec``aaaccdeeeeeeeeeeeeeeeeeffhlp" v(&z-+}0.86?=KHWU`_cdpqst}ƪTJWb(*mFFʶs35^a]aXRPYZZZYXWWXYZY[" \$#\'%a)(f--l45vACTUnmκpo> QV[d$#^f))h11f67a7:bbp7:GLOQZZggnn㱷Vfeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeddcbaa``abcb`a`^[[ZXUWXY[ZZXRONPQOKHGCCJO%"K" J00ULJPYVJicBhaFf`NgcUgfTjhMigDgeLhePkhQliPkhPkhRmjTolUpmVqnUpmTolRskQrlSro\qrYsuVuuZzx~ed787987;8>9>9<6?8?9:3<6=9;;9;:9=:A>><41x$ R HADFHJJJJJJJJJJKLKIFEDB?=<:7530 , ( #        " , / 2 57:=@CEFJKLLMMLLLLLJJJJJJJJJJJJIIGEEIQn"94C?><<;><>:=9=8;7>:=9>9<780;3<8379@^atwvYusJqpQssXnpWpoTokTolTolTolTolQliQliQliQliPkhRkhTjfSjePfdOfdMheGfeFgfHjiHihDcd9\W-WJ1RG6NE1=6(%2" =#"BCFFDHTW\[[[ab]Z^^]\^_abbaaabbbdddffffffffffffffffffffeedddg_[X[_bbPd73bdd e#^-/q56[^\aYTSYZZZYXWVVVVSSSQRSUUQR%$U-.a35XYʧnnB VZSUVVRQK= 1 Z&({14y56~CBQNa_Whffffffffffffffffffffffffffffffffffeddcbbaabcfd`ca_YYWVX\_bfed`TNLYVNG?9"!* ##3=7?PH:OG@SNDYVKc`MieLidMhcOhdOgeNhfMifLjgPkhPkhPkhQliQliRmjSnkTolUpmTolSnkPrlTqlXmm]lpOrs[vuyyxY[8<58>79:9;;:=8?7>6>6=6>9>:;::9>;C>;4\!B IJID=GKJJJJJJJJJLMJHFECA?>;:873/ + ( #        " , / 2 57:=@CEFJKLLMMLLLLLJJJJJJJJJJJJIHGFFKUc :6A?<:;8?;@<>9<8>:=9>9C>=6:1=86;6]@?W22GBEIMSX^\WW\bc[]\]^ba___`aabbbdddffffffffffffffffffffffffflij#!m+*t//>>XYjkƛbdev-/{57HLstr56W `\aYTSYZZZYXWVVVVTTTRSTVVST('X01mBCggqp?TVUVTSONY!%D@I--Gaa^!b-*tDBrmų㳸Uhffffffffffffffffffffffffffffffffffeddcbbaabca`^^_`\\][W^bdee`XPNQUROT!$^78]CAQB?GB=EICEPICRJJXSJ]YMd`MhdLjeMidPieRigQkhOkhLkhRmjRliQliQliQliRmjSnkTolUpmUpmTolLnhQniWml\loOqr[wvkonIK8;9;=89::;;;>9>7@8B:>6=8A>?>?=C@83sUNJJHD>GKJJJJJJJJJLMJHFECA?>;:873/ + ( #         " * - 0 369;@BDFLMNNOONNNNNLLLLLLLLLLLHHJMKGCIJ Wu,%=9BBBC<=<>AC;:><=:;6B<=996<7=:887;Z]_snFto\nrRnoQomQolQolPnkOmjOmjNliNliNliNliMliSmkZnlWlkSliQljOmlNmlIihFgfHggEffGfdGc\@ZT@VPAUOAQL>NIEVQCUP9OH:RKBXR;KE! $:GONRVZ_Y\\]]`ba\_bbbbbddefffffffffffffffffffffffffglgeeio !},-{,-z76JIpn`(*n48KNsuުp89V`Zc_^]\\\ZZYWWVVVVVVVVUSRPRV$$a1/rFD}XWqqK ^`e%$i('o.-v34v57DEMN[\xzH^e**f30tHD`\xʺ㹽Whffffffffffffffffffffffffffffffffffffddcbbbb_^add_abda^]\VYWOE<2&%FYTAUP:PJ8NH?UO;SM7NH7OI9QK>UOA[UCb^Ec`IebKheNkgNjgNjgPliRmjQmjPliPnkOmjOmjMkhMkhMkhOmjQolRpmRpmQolJlgVlj]loPlnIpnopoVY78::=:<58<8=:==:?:?9@9<:76<;@ BHONKCILLLLLLLLLLMMLJHGEC@>=;753/ + ( "        " ) , / 269;@BDFLMNNOONNNNNLLLLLLLLLLLHHJOLG?GIN\'#99FH>A9=>C98=;>;:6=6=9;:96=8=<38EIVlf@sm^koQmnPnlPolPolNmjNmjMliLkhLkhLkhLkiLliSljZmkXkjTnkRnlQpoQpoLljHhgIgjFijIheKe_F`ZC[VBYT@WQ;WP?_WBe]CkbErhNwoQrjDOKVGHjCF^$(L M XXT ]^bc`\\`aY]`bbbbddefffffffffffffffffffffffffgpkeaefkkdr43SRjiTt *-8;PRihֽm98U]Zcbaa]\\ZZYWWVVVVVVWWWVUSVX$$c0/nA?uPNjgooK ^d! a! g&$o--x45z7:FHNN`avxÛδqGHVVeero˨㹽Whffffffffffffffffffffffffffffffffffffddcbbbb]\_bb^bfigd^bXXOA = L+(ZF@UHARPHHulIwnGtk@kb:cZ6]T4XP6WO<[TB_YCb[CieFhdIgdLifOkiOliOmjPolSolSliQkhNmkNmjMliLkhLkhLkhMliOnkPomPpmOnlKnhYnl_knJklEpmjfeBG45>=<8<38=8>;>>;@;@9?8=<::AAA;;7&!^ A;;IQQNCJLLLLLLLLLLMMLJHGEC@>=:763. + ' "        ) , / 259;@BDFLMNNOONNNNNLLLLLLLLLLLHHJMLJFILNPa#!::BD9<5<:>?;7<4A=9;7;cd^HqkYjmKmoLnlPolPolNnjNnjMmiKkhJjgJjgKkgLmiOljRkiQkiRnlSpnSrqRrqNnmLlkMklJkkJhgLheMgcIb_E]Z@ZWCa\Be`FoiL{tNzMzS~Z}zg|zlusVUTC=;G99Q<=H&*;GV[\ZX]ab]acbbbcdeefgggggggggggggggggggggggggljfehhgol#!u1/EEps׼J`ljk o&'^*)o45Y\Zca`a]\\[ZYXWVVVUVVWWWVTQRUW$"X,)\74X>;}njnoJ [^Y[_c d #f$%n..p12t9;xGIabͷvGHSU_`pm͡ݺSiggggggggggggggggggggggggggggggggggffedccbbbbba`abb`_a^BC;I('P97F96?>9QZUdxqazr`wIxMzOzJzsBng@hb?c^?^ZFb_JeaJc`KjgJigJjgKljMmjPokTolUpnTolPliJjfMliMmiLliLlhLlhKkhLlhMmiOokOnkNnkNokXonZkmIjjMqlq^\6::9@=;6;4:=:><>?=?=:761. + ' "        ) , . 248;@BDELMNNOONNNNNLLLLLLLLLLLIHJLLMMHGFEBMq! 8;?B8;<@;;=:BA?;>2A8:858xa\TqlVklDmpHnlPplOplNokNokMojLmiJkgJkgJlgNokMnlLkjLlkOnmRqpTsrRrqQqpPpoPpoMmkLijOjkPjkMggHcdDccDhfBolE{wILDDHB@9y>yDysLqmDPN7-/D&(V!!UQQRbdbbijabcddfffhhhhhhhhhhhhhhhhhhhhhhhhhfffhjhdigkm#"h59}}ׁMJR ma^_`U!"t14\]Zca`d]\\\[ZYWWWVTUVWWVVUSU[ "W$"V+&W3/_A=plnpI]XWWWXXVZZ^Y a02hiX%(o*-u45DBRPaaxuԾ׿Kkhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhgffeddbbbijfccdb\XZW6(&1((+-,DROYvrTyD}tA|D5<7===>>?>=>?>?;9=?=>87p$"RONKIJGGIMPMLLLLLLLLLLNOLJHGEC@>=:751 . * ' "       ( , . 1 48;@BDELMNNOONNNNNLLLLLLLLLLLIHJLLLKIFDEKO`!#9AB>?4=576>?xa\XtnVlmEmoInlPplOplOplOplOplNokLmiLmiMnjPqmQrpPpoPpoQpoRqpTsrSsrRrqSsrSsrNnmMkjOjjNhhLffLiiMmlFihGtqK|JMMSURPLJ|P~x\{wbjiaWYkNQk;:_'(RPP[ZX Zegabcddfffhhhhhhhhhhhhhhhhhhhhhhhhhkihhiimicm!s*(l:=\^wWTIWtgggaSw46\^Zca`c]\\\[ZYWWWVTUVWWW[^!!b'(j01r89{HEa]tpopB^ZVWX[[_Za_i/1W')^<=]*-9=??@?>??@?A@HI45_T TQIEGGHJMOMLLLLLLLLLLNOLJHGEC@>=:642 . * ' !       ( * , 1 47;>ADELMNNOONNNNNLLLLLLLLLLLOOLHHGJOLFCDECT.,EBB@HE>:A:?67=:EBB?7>4>4@@WTookJnnImpKnmMplMplOrnOrnPsoPrnNplNplOrnSuqQywKy{PwvSttVssXrtVvuTtsSutSutPqmMmkLjkIghJghLlmMppConFzwIEELSPUXRD@@~BsqAbbA[W8C@;8!6=BFNdbcddfffhhhhhhhhhhhhhhhhhhhhhhhhheegkkgor$!v%"20?=OUlqȋ㯲ؗ>Dk#&i620,@@QRllˀ՗ᶸ~-2_ ]W`][]\\\\[ZYWWWWQQRTTSRRQSWU[!Vd.,{GHgjtuJ[]XXXZ[[_kkh$JOrv۶i*.n#v&)x,.~44ILcf՚ڜbhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhgffeddbba]TPK;36)%=94;A95A94C;BINDUWHeeKxuIGFHNOSRRSOF|CwtGvtIrqEkjDhhJllPiiQllUooXrrXsrXtsUurRtpOspOupRwrVyuUxtRuqPsoNqmNqmOrnPrnOqmMplLokPmmJkkImmTooflgXT>><7:4@;A>>=>=>==>=?BCEEIG0/QCOPNOKHJHHIIKLLLLLLLLLLNOLLJHECA@>9651 - ) & !       ( * , 1 47;=ADDLNOOOONNNNNLLLLLLLLLLLQQLFFHOQMIF==BMc}-*IEAmlIlpMomNojMokPrnQsnRtpUuqRsoQsoSuqXxsX~~TV{{XvvZsu\ruZxwTutSutSvuQsoOomOmoMklQnoTqsOqrNywK~{MNIKTXZROEB@E~{Bkj=_[6YM;ND?qFF\DCdADn?Er>Fj?Fm@IkAGoAEjgdV`[Y[\\\\[ZYWWWWPOQTTSQPNMPMRSRR^*.Z]i?@V^]VVWYZ^_dik$h%,oAv>Bp@BlABjBAiC?p@@o@Br?Dw=F:F|>A:>8>9@=>=>=>=;=>ADF++tbN<HOPOMNJHGGGKLLLLLLLLLLNPLMKHECAA>9651 - ) & !       & ( + 0 38=@CFHJJKKMMMNNNNMMMMMMMMMMMNNLJJKNNLKKGGKMOT n/0@CGK>DBA@;A;C>A:E<@??==A@IGA?-+lP OOIJMNMMNKJJJJMMMMMMMMMMMLLJIGFCA?=<8530 , ( $        % ' + / 38>BEHKHGHHKLLNNNNNNNNNNNNNNNMLLMMLLLLLLRROHCBC[*4;J8QD:J/B8>;=9C>C;?;JIgiTt}DruFxvI{yQ|{P~|K{={EzN~zY|QHERVNIsrMpoUtrWurRqnQpnTpnWnnSqpKrqFwuE|IILPRRQMMMMOPI}zHurBmj9\ZgjDkkMpeF]V.4/=41I/.M%$KYkr~tpmifchimqphhhiiijjhilwmhiifivp^Z"$gtyulokqo j el i geeghjfe`jkjijkkjihhijhddcba`a`a_^^]\\ZZZZYXXWVUTTUURRSTTTTTS UT U WUXXXZZ]]\\]^^__acbccccc fc ifhijijlnnnnnnnnonv~qmowslhhtj`h"[djmnnlieceeeehecbbcbbffhgdec`cyvph]SX)+K/.B4473/U`]@BCEDC>.)PFEHMTNLLLLLLLLLLNNNNNNNNNNNKIIFDDB@=::852/ + ( "         % ' + / 38>ADHJHHIIKLLNNNNNNNNNNNNNNNMLLLLLLLLLLOONIFFLU n#./A>7L9D=::A?FB?8@PO=WWA_^DgfGqpI|yLNMMMNNOOOSURO~OywPusPqpKqlOrnTsoYrpZqqTmnWuvZXZWJNTYVRPOQSU~Utx]~}`uqa_;=CD<:A;D=?9EABADC<9"d R MHJMQMLLLLLLLLLLNNNNNNNNNNNKJIGEDB@=;:852/ + ( "       " & ) , 28>ADHJHHIIKLLNNNNNNNNNNNNNNNMLLLLLLLLLLKJLJHGHHGSS.-C@A@AIAI?CC|G|EyqDogImfFaZM[XW[YUQOWMI]OFbE?^/-Ze sw w zwpghliifbbec`kggijd`dS`:9}znoif@@`lcbhyvl_khebcfjmjhfiiihhgffeddfedddcaa```^^^^]\\ZZZZXWWVVVTTSRRRRRTTTVVVWWWWXXYZZ\\\\]^^^_`abbbddddfffhhhiijkkkkkkkkkklnrpkebmpcc!_>>_ngi55Zmkjghpstsqnjjlkpuv{yttsjeaf{*,~=?TFDMAARONW^\J`ZCc]EmfApiH{tN|H{HGIIJ}M~{HspBeaHdaF^\?SR@ST?XX@^^CjiIywJLPRQQPQQQUWUST~|UyxUuu\trZtqWspSqnNqoKvtYe]UOMQTYVUSQTVVE~ei?I=B>>F?F@IBLE* ub `WLEEEHKNLLLLLLLLLLLNNNNNNNNNNNKJIGEDB@=;:852/ + ( "       " $ ' , 1 6<@CGIHHIIKLLNNNNNNNNNNNNNNNMLLLLLLLLLLIILNNLIFCBDZ\ _ $+$)DESHKFHG:@_[zILRVXNPRVQRRRRSUYRIyrLqmXtrWvtPutTywU{zV~WYWURMMMLMMNKH{yLvuKii?YY@VVATRidFyuE~zEHGDCGHGKK~Avt@qpAnk@eeAdbFeaK`[JgaCh`>g_EmeMohMa\?@?L9;T48Kn i onpnnrlknkeceecbhcV_22mut|}V]c$t wp_\akhgedgilpomiihhhfffddddddddcba````^^^\\[ZZYXXWWVVUTTRRRRRRRRSTTVVVWWWWXXXZZ[\\\\^^_`abbbbcdddeffghhiiiiiiiiiiije`gfgivqdR#%a[Xss_-0^qvh_[bojYaipux{ulk` U Z%e7=T7;@::Tc_Npi>oe.k`&k^-k`IebEddCdcCedBghCpoCxvIC@@C>@A@A~CxCwpChd>\YHEK10:/k-JFE?E?> EGHHHHHKLLLLLLLLLLNNNNNNNNNNNKJIGEDB@=;:852/ + ( "        $ ( + 0 5:?BFGHHIIKLLNNNNMMMMMMMMMMMLKKKKKKKKKKIILPONFFLFBGMCSZ_Ur @=dfuorPMNQURPPQPPROLMNT[YS~yUvsTvtQywV}{XY[ZWUPKJMLOPQVM~GqpLjjJccE\\BZX@\Y=b]=keH|xLJIHJHFJINK}J|yGusBkiCgfFfdHdaMb^MgcIidFkeIoiPrlazuiutywvrhiV>AZ')]*+d.0Y!QU^ilmnlgeggcdlkZP\JMmovyn>Be eleabghgfehjlnmkiihhgffeddccdddccba``__]]]\\[ZYYXXWWVUUTSRRQQQQQRSSTUVVWWWWXXXYZ[[[\\]]^_abbbbcccdeefgghiiiiiiiiiiijgdikklkae#%lHGyuollCERdqskd`enk`ehkjeaUTa--[.0N*0`DHyhjsnokvt_wsSuoItm?pg7kc8g`Eb`GddEdcFeeKmmJssL}|H@ABKFFFDFI~G{tCje>]Z?ZWFXZH]^IcdIkkHsrNTWWUSPQRRUWUUWXY}{]tr[wuSwrO}wY]UMKQOSTRRQOKIJKNRznn\b>Bz c U UPMHGDLLDKIIHGJKKKKKKKKKKMMMMMMMMMMMKJIGEDB@=;:852/ + ( "      "' * / 4 :>ADFHHIIKLLNNNNLLLLLLLLLLLKJJJJJJJJJJJKLNNOQOMNRIFMROAH9 _B9~z]YWMIJNOLKKOUZTOLKNSTRP|wPwtT{yX~YZZXVURNLLKOQRURIxvIolJiiEba@a^@d`:hb7mfA~xJKJILMMQPRRJzxErpAjiCigAdb>^^HcdGgfCkj=om9sonlBlkCih@ecCfeEeeHghOnoMprO{|MJEERNMLIKIEzsBmh@eaBa^H\^IaaIggJppKzxQTVUSRQQQQTVVVXYY~XxuTytQ}wR~VTONNUU\WRMOMIGHJNHfn|x[0/I N<EJMGIMOSSOMJGEIJJJJJJJJJJLLLLLLLLLLLKJIGEDB@=;:852/ + ( "      "' * / 4 :>ADFHHIIKLLNNNNLLLLLLLLLLLKJJJJJJJJJJJKLOOOOPMRSHAKPJFC Q:+(!@vVTIIKPROMLOTXSQOOMLPUV{RzvT|{Z\]]ZWVSOMLKPSTTYQ~MrpMjjHcbEdaFif>ke6leA}wJKLKKNPQPORJzyErp@jiDigFjiFgfIeeGgfDlj>pm8sn:wqB~xA{uFzvM~{O~zG{sKxpZys[jega^x\Yk;9\c rvtnklkfiutsd[= llhj~uxfaa--bnfb`hhhiklmkjihhhhffeddcbbdddbba``_^^\\\\[ZZXXXXVVVTTTRRQPPPPPRRRTTUVVWWWWXXXZZZZ[\\\]^aaaabbbbdddfffhhiiiiiiiiiiijkmsuv_^.+~fa~vcc[>ghqrwqnlkmnnlf`RtFDx_\b^[WkcUzpKzqI|xDzvEy@~xA{>~x:wq;sm@qnCnlDkiBhfBedEeeJijNklRuxOy{I~}I?FMLLMMOIBxqDojHmhHgdI]^KbbLiiNssRVWXVSRPQQQTWXY[\[^}zVzvU{WQKNQPST\XSOQMJHIJPHST|s/# FVSB@JRLHMOOQOMJGEIJJJJJJJJJJLLLLLLLLLLLKJIGEDB@=;:852/ + ( "      !& * . 3 8 =AEGHHIIKLLNNNNLLLLLLLLLLLKJJJJJJJJJJIIHGEDFIIKKFEND<8BI</:%+\cekgWYQUONOVTSUUUUSRP}RzS}wU|x[~~_]YVVUUUSPOMOOQSVUQ}KwtIolKkgFlhBniCvpG{KMNNNNKNMJJ~JzwIuqHokHjgIjfGheEcfEfhFklFpqDssFywG~|D~|B~|A|@|=zx9}7|9{{7vv7sq9sp>pm9ea;`[@`YB\T=UM4ADDFGFGHGGGIJJJJJJJJJJLLLLLLLLLLLJIHFDDB@=;:852/ + ( "      !$ ) - 2 7 <AEFHHIIKLLNNNNLKKKKKKKKKKJIIIIIIIIIIHGFDCCEGHGEDEKFCCJGC=F*! CQRCmjGzRXTQO\WNRTTUUU~S~xS{uU|wW{x[~}^][XWVVUTRQOONORUURM~NzvUsoMrmHrmIxsK{MPSPMLHJKIK}N|xNwsNrmMlhKidJhdLhlHgkEilFrrFyyF|{E~}C~A~A}@~|>{|>yy?wv?sq=ki;ba;\Y=YU?UQ=QL>MITLNLEGXHKY;>P*.N')W+,\ !ZNHck_MgMGztf_Y0.Yircfknjijgdccfffeddcbbbbaaaa``_^^]\[[[ZZYWWVVVTTTSSRPOOOOOOOOPQRSTTTTSTUVVWWXXXZ[[[\\]^__`abbbccdeeffghhhhhhhhhifcg]Va52ohunbNFB`f\UKJV%&W**O)(M-+VC?VJDTMGPMJMPMFSN?UP8XT5^Y6eb:nl=srAwvCzyEzzE|{E~~C~C~E~~G|{HvwJprIkoKijOgcLhdIieHmiGrnFvrG|vJ~OPOPQPOQNKK}vMxsMsoLolPusPzwTXWXVSRRPQQRSVXY\][Y[|Y~zV|wU}xS~{RSRRSSYVPSXWWVM|DgfBSU&1=C?@DHFC@FFFGGFFHGGHIIIIIIIIIIIKKKKKKKKKKKJIHFDDB@=;:852/ + ( "       # ' , 2 7 ;@DEGHIIKLLNNNNKJJJJJJJJJJIHHHHHHHHHHFDCCDFHHGE@@@BOZb[NHGIOG0;BB;[X>qlXZ]W[RKPUXZ[\~{[zvYyu[{w[{y\~~]][XVUUUVUSQPONORRNJP}]xuVvsQuqPxtP}zQTUQMJIIHHL~Q~wSxrTrmRmgOjdOieThoKhmClm>ss:{y;~|;}>~F~J~}L}}DzDz|ExzCru{z@}|A~A~C~G~~I||IvwIprJloMjkOicNicNjeNniMrlKvpM}vP}OQPHJLNROK}J|uMwrOvqOurN|yP~TWTUTRQQPQRSSVXZ\]ZW^~^{\|x[{wZyxX|{URRRQPRKSceR+8 P\UHGFGHIOLIHGFEEGHHJHHHHHHHHHHHJJJJJJJJJJJIIHFDDB@=;:852/ + ( "      " ' , 1 7 ;@DEGHIIKLLNNNNKJJJJJJJJJJIHHHHHHHHHHFDCCDFHHGEAAACNW^XMGFIHB' T^^Fhe!UQ2ifKZP[UKNQRTU}{WzwXyuYzv\}y\~{_`^\YWVVUVUSQPONPSTSPVc~{[|xUzuQzvO|yOQSPNLKJHHMQxTzsTtoSoiPlfPkgTioLjnEno@tt<{y<~|=}@FJ~K~~D{E{|Fz|Dtv>kl@hh>bb:YX6SS3OM1LI3OO0LL0DEAILIJNDGHSQQbOOsVSxc]wlcgHALahNZ?:vqjyuPOUqdchkklhdcbbfffddcbbaaaaaa``_^^]\\ZZZZYXWVVVVTTTRRQOOONNNNNOOPRRSTTSRTTUVVWWWWYZZZ[\\]^^`aaabbbdddffghhhhhhhhhhklZ U yZTvyoiZ@<=`##YLeB=da}ebfWTZRRHKIENKBQM8ME7NE8LG;IH6JH2ML3UT5][1a_4hg:pq>vwBz{C}}@|{B~}CBC~GI{|HuvIoqKmpNlmPkeOkeOlgNojMrlLwqOyQPQRKLLMOLI{I|uNxsRytUzwUVY[XVUSRPPQRSSVZ\]^[Z`_}\}yYzvWxwSyxP|{LLOPONFQ\O1eb-^[NljIOP%AOSMFFFGGHMKIHGFEEGHHJHHHHHHHHHHHJJJJJJJJJJJIIHFDDB@=;:852/ + ( "      " ' , 1 6 ;@DEGHIIKLLNNNNKJJJJJJJJJJIHHHHHHHHHHGFEFILPRPLEMNBGIH;9=GFKP:]VUi}zFpk,VR;ieRW_YUVVTT{{UyxVwuXyuX{w[{[]^^][[ZWSSTVTRQPPRUVTX^[}X~zV|xT|zT~}TUTSPMIFEHKyM{uNvqJqkGohHniMkkNmmNppNsrLvtN{yN~zK|I|H|F|>{>~y@|y@wu>qmBljAdc>ZZeZPgbUmiIdbB``Bbe1UW0RU2PS2JL9JMSNNNNMLKJIHHHHHHHHHHHHHJJJJJJJJJJJIIHFDDB@=;:852/ + ( "      " & , 1 6 ;@DEGHIIKLLNNNNKJJJJJJJJJJIHHHHHHHHHHGEEFKNRUSNGQRBFFD23:GEQTDA54l}yU}vBid5`\@qnNWPPPRQ}|SxxUvuWwuYyu\}z^}^a`_]Z[YVSRTWURQPOQTVV[c_]~Z|W~|T~}Q~PPQNJFDBD~HyK|uLwrJtmGskHqkMlkQpoSsrStsOtrRywS~{O|K}I}E|=|;~x={w?xvBvrCnkAdcA[[BWXBTVDTUJRU@PR?SV=SX0W[0de(cc0`c:aa?lj7oi@sj8wl7tj@ofRURSFFVFFjlky{xngdO65OUbffihffghfeddbbbaaaa````^^^\\\\ZZZXXWVVUTTTSRRQPONNNNNNNNOOPRRRTSRRTTTVVVWWXYZZ[\\]^^^`aaaabbcddfffffffffffekyy9:gf{{yYigJDEWEGbNQ\ie:vg9sgPrkFie?eb=ef4^a7df5^a3VY;UWESYDSW?EEIII75;VQQQPONLJIHHHHHHHHHHHHHJJJJJJJJJJJIIHFDDB@=;:852/ + ( "      " & * 0 6 ;@DEGHIIKLLNNNNKJJJJJJJJJJIHHHHHHHHHGIIFFHJNOMICHICFFD==@FCIC?("h}wS~vU|wNtqFpn>sqORRRR}{QyxRvvRwuTyuV}wW}Y\aa___]YVRORXUSRQPRUXZ\]\\[Z~Y~T}|Q~QRQPNKHH|O~yR{vRvsPupMtnLsnLpmOsqQwtPwtMwtM{vMzJ{I|F}C{A{?vA}vD{uGysDojAebA^]C\[EZZFZZC\Z@\[C^`DZ`;Y`;dj2^eEgpGbiHio@mnAmkAsp6ge@he[nm]jjR`^Ld_^lg|{ywbb_,'T\eehhghijfeddbbbaaaa````^^]\\\[ZZZXXWVVUTTSSRRQPONNNNNNNNOOPRRRSSRRSTTVVVWWXYYZ[[\]^^^`aaaabbcddeffffffffffhYa+-hg|{y]kiMa`^fhchkbmmKjf9pe:ofGnkEkiFkmFin=\fAbjCbl>ZdA\d@XaC\a@[[>XX@YZA\]?\\DgfFpnExs@{u=~w>yB|D|H}J|M{M}xNzvOxtNurNspLroItnKuoMupOvrNwsPzwO}zM}MLLNOPOO~Q}T}T|S|VYXXWVVUTUVVUSSSSVXY[\]```^[|XzyUxwTwwQxxO{zP~}QMSKEutHmjMrnUyZ}cto-D?CH?AEKB>?NIIIKLLLJHFFGHHHHHHHHHHJJJJJJJJJJJIIHFDDB@=;:852/ + ( "      !& ) / 6 ;@DEGHIIKLLNNNNKJJJJJJJJJJHGGGGGGGGGFMNHEDEIIGC>>@EEDCEHFD@=69$$iyQu[zcXxx:igFzwR~}UvyVwxTvvSvvRvvQxvP|vQzPRW]``bd_YVPKO[UTSSQSUZ][SVYZ^`Z||U{{STSUUROO|{UzyXxwYutUuqRtqOuqLvqMwrNztN{tN}vJ~vHwEzE{B|@{EyCuEuH}tKypFriBhaCa_D`]F^[CZX:c\Ajf;]]NflOgo>\g2S_QhxIZiG`lCiq>hmCosmk6ni8rj=tn7igAop>fk=_gMds;R`K`qNctDbp4XdAekDdc<\[8[Z:_^8a_=jf?sm?|q<~t;v@;*'!f~vUyZ|X|yV|zEvt>spApnNtuNssOttQuuTxwSywT|xU{TVZ_aabd_ZWRMQYUUTTRTUZ\ZWZ\\__Z}}SzzP~{PN~O{|PPN~M|zRzxUxwWvuUvsSvsQwsPytPytOztQ|vRzM~yJyH{H}E|C|FzDxEwF}vHxqGsmElgEebDb]E^[AZXBgbPur:Y\Ofp\tBap+K^D\q7I^6Pa@drDjs@ipBlrBjmHll>dc6^[1[T:UPPYV|utpjd4/R`ghhhikkddddbbbaa``____^\[[[[YZZZXXWVVUTTRQQQPONMMMMMMMMNNOQQQRRRRRSTVVVVWXXXZZZ\\]^]`baaababcddefeeeeffdadj;:wvkur?WS7TR;SVEX]Jei@ef;lj4jeAus:gk;em*OZ,LZLfx/FYRi|[sGcs<]iKmtEfe>^]<^\@ebDkiAlj@rn@{s?w>y?{?zB{G{I{MzN~xQ~wU~yV|xTyuRvsUvrTvsTwtSxvQxvPyxLwvLxwO||Q~P~NPRT~U}}V~}ZZXX[YWUTUTUWWXVSTTUYXX^aa``_\\Y~|X{zYzzWyyTwwQuuOtvKvwBpqDqrQxw]{z]{Z~Uxi|s-LDEH?@CMKEBGBBCGIJKIFDCFGGGGGGGGGGIJJJJJJJJJJIIHFDDB@=;:852/ + ( "        $ ) / 58=ACFGHHJLNNNNOKJJJJJJJJJJJJJJJJJJJJJIHHHHHGGGGGHIIGGFHCEEFEC@,$#`urVTSPJ~QT~R}zMxuLusRywX|zYyx\|{^~_\`gfeeefb`[XUPRZ^_^`__\]_``_^YV~S~{T|zT|zU|zX{{X||W}|S|{PzyQ|{R{zQyxQwwRxxSyxQzuQytRzuV~yZW~U~~S}P}M|L}NzK}G|B}zBxyGv|DnrEogw/D~^kNa}H_rJgoDddCbaA`_@[[5NM4JGK`\j~|jiiU9V\J_gI_hJbnGgt=crCeRi0Gu+Br=U:R-DvczZt&@]Ic|Pn}7^a>ea;98630- ( $        $ ) / 58=ACFGHHJLNNNNOKJJJJJJJJJJJJJJJJJJJJJIHHHHHGGGGGIJJGGFEGHABEF>(! ZplK|uPPOLSZ[U~{SzwUzxWzx]{z`~}cdbdigfefgd`ZUSORX\__a`^\\_`a_^YVT|U|zU|zV|zZ{{Y||X||T{zQzyS||T|{SzyTyyTyyTzyS|vT|vU}wWzZYV~T}O|L{J{~LxI|E|@}y@xyCs{>jp@lc>lYIujV~|\{sld|;PpK\YiPDW8M]Z?]\>XX6PN.HE5NJSnl{~~cge$.d qmfb^^aaabbbc`^[WZZZZYXWVVVTVVVVUTTRRRROMLLKJJHHHHHHHHIJJLLLNQRRRSTTVVVVVVVVVWXYZZYbjfc`^[\_adhl_]]bkiXQ)+xeh{wxfmmALO2CI8NS=>@BBBBBEFFFFFFFFFFIJJJJJJJJJJHHHHHHHHHHHGGFECB@>;98630- ( $        $ ) . 48=ACFGHHJKMNNNNKJJJJJJJJJJJJJJJJJJJJJIHHHHHGGGGGFFFEEEEDHCICDA/!!bolNuqQ|Q~QMNPQPNL|N|xX}]```aecddfhfb]YVOTWZ^`ab_^^``a`^ZXV~V~|V~|V}|U|{U}}T}Q~}N}{O}Q~Q}Q~|Q}|Q}|T~~V~X~Z}Z|\}[}X~}T}|Qz|OyzO}xM{{L|zH{vHwuMrxJlqJmgGlaSuv`UsVq[uHaAWH_BY=T@XBYBYCWDYRkD_x0M\@]fFagD[\?SQ5HD.?:@RQqvw~oLOSYeiefaaaaaaaa_][YZZZYXWVVUUTVVVUTSSRQQQNLLLKJJHHHHHHHHIJJLLLMPQQRRSTUUVVUUVVVVXXYZZ]``_^^^_abeff^abdfTPmSUjnkMWR3A>4GF:ORCZ`DYfBXk4LdD`~Kl9X7QC\E^@X=UD\?Y=WGd]yKiPp_RstCf_EkbHqmErrDtvFwxIzxK|wM|yN|yP}|R~}T~VYYW|V{W}RQ}Q~|P}{Q~|R}|R}|S~}T~U~U~U}zT|zS|zS~{T|VY\^````_^`a`]WSQSTW\cgkmlkg``aab`Z}Q|yL~yNQNQON^WIzCwocie8?CEEACEABBBBEFFFFFFFFFFIJJJJJJJJJJHHHHHHHHHHHGGFECB@>;98630- ( $        $ ) . 38=ACFGHHJKLNNNNKJJJJJJJJJJJJJJJJJJJJJIHHHHHGGGGGEDDDDEE>CGLAAD5""dkiVwuQ{yQ}{QOKGGJKKOV[]\\^bacdfhgc`^XQUVW^`bc`````a`^\ZXX~X~W~T~}UTROOPRSPQXZ[]\{`|`}^{Y}yVyxTwwOwwNuzNwvLwqMtqOotQlrQmiKieRnw^vA_1MxC^D_F`>ZEa=X=W@Y;S;UMgVp4Ot+HcA\nB[eDYZ@PLJ@2A95ID7MLE[`AWgCZs.Gh?WOlGe9W9U>ZA\D\F_@[A]A_?_-KwB[_xPluIieMncKohHpkGrpHsuKuuNtwRr|St}UvXzY{\_^[|\{\RRRQRRSTUUUW~|V~|T~{U}V~XY]^``ba`_aba]URQSSU[bfjnnkgZ\]\]ZWQMMMHJJN]U~|I|wIxrcgd9;AFIEEEABBBBEFFFFFFFFFFIJJJJJJJJJJHHHHHHHHHHHGGFECB@>;98630- ( $        $ ) . 38=ACFGHHJKLNNNNKJJJJJJJJJJJJJJJJJJJJJIHHHHHGGGGGDCCCCDD??DDAAE1T[ZUxuNyvO{xQQNIHLORVX[][\_cbdeffec`]XQUTV]`abaaa``a`_^\ZZZXVWWUTRRTURSWXXYZ|_~_~\|V|ySywQwvLsqJrtJsqIslKqmLknNimLieHgcPmw\wB^,Gw;VJD7DDS[7M`H`{;Ty>W@\=[4R3O9UA\BZB[B\Fa;98630- ( $        $ ( - 36;?ADEFHIJLLMNNKJJJJJJJJJJJJJJJJJJJJJHGGGGGFFFFFB@@@@@CGDA>DCI0EDDSspMxuPxvU}UNHFGIMPRWYZ[`dceefaaa__YPVWX^acdddc`ab`^_]Z[[YSUUSRNNONNMJKLNS~X~Y|W{T~xQyvOvsNsjMplLpiMqeOoeVnlWmmMebKgiSoZvG^:SD];V8U+I:XV~7Mj:L^9FN@LMALJ:EE3ED8OMYrnt{wm]ZP(%Xm egcbba`^\\]^^[YXXXWVVUTTTTTRRQPPPPOMLLJJJHHHGGGGGHHHJJKLLNOPPPPRRSTTTTTVVVXXXXZYXX[^`abca`^_hibVV-+q\[~~^hh8JM/A?7F?BPN@OO:IQ:L^4JiF_C\?X:P1L(I4Q8R?X?V;98630- ( $        $ ( - 36;?ADEFHIJLLMNNKJJJJJJJJJJJJJJJJJJJJJHGGGGGFFFFFB@@@@AEC@EEEAJ-=<v(F~.K=W6O-D-L8V5R9UB]G`G]wK]mUbh`jj]heBMM9II8NKC[Wrxs}zwKH[] kjbbba`^\\]^^[YXXXWVVUTTTTTRRQPPPPOMLLJJJHHHGGGGGHHHJJKLLNOPPPPRRSTTTTTVVVXXXXZYWW[^`abca`__ea^X{OMyxzuuLUU6HK6IGETLSa^SbaP`gJ\mCYvF^B[AZ@V:T-O3P7R=V5L&=4w"=.J2R5U?\XtgVooTncQn`LlaJmfJmiJojKomPrrRuuUzzX}~YXWWXWVSRRSTUUUWSS^\[[\\]```bgfdbbb`[USQSW[]`cfjhii`_^[ZYVNGEECADHRyyOwvHuqV|v9741BEFGJD?BBBBBDDDDDDDDDDDIJJJJJJJJJJHHHHHHHHHHHGGFECB@>;98630- ( $        # ( , 26;?ADEFGHIKLLMNKJJJJJJJJJJIIIIIIIIIIIGGGGGGFFFFFCAA@@@<::<>AEN4@>>\~zBsoIrpOusTxwMyQUQLMNVY[^aeihfdc_\[ZXUQVZ\^adefedaaba_`^\]\ZUVWXVRONMONINSTWWXWTzQvN{rNtlLqnKojLnfNnfPiiVkpToqb]}Hg0I7N1J0I!u9m#;98630- ( $        " ( , 16;?ADEFFHIJLLLNKJJJJJJJJJJIHHHHHHHHHHGGGGGGFFFFFDBB@@?:R,,O))4;AJP7A>>Vyv;qlFpnMonRqpL{uT~{Z}VOMMQSW]agljhdb`\XVRQQU]_^bdfgfdaaba_`_]]\ZTUXYURNKKMMEOVWVUVUSzOtN~qPwnNtpLplNohPohQjkSjpOjn^Vy;\2K6M/F6O2L0K"I`;Jl:R>Z<[5S2L4O4R0L8O*=z0l.>|5G8M3N.L(L$R8`]~^{LhiLghLijKikImkFniHolPtuQwwT~yV{TyXUW^ZROLLNOQTWVRR\ZYZ[]^a`abjfca``]\YVPQQRUX[^bbaaole]URPPSTRL}I}yL}{DwuFnnFqoDqnUvqD76>L8::9O'(U,->BCDDDDDDDDDDDDDGHHHHHHHHHHHHHHHHHHHHHGGFECB@>;98630- ( $        " ' + 15:>@DEFFHIJKLLMKJJJJJJJJJJIHHHHHGGGGGFFFFFFEEEEEECCA@?<tON}YY:3?HI5?:;Ool;niEmjKkjQkkIsnOwsSyxR}{N~K}J|L{M~{Q|V\eifeb`^[XURQQW]^]`cefdcbccb``_]\[XSSUVUSOMLMNLYabd_\XU}UyR}tSytOssLpmNpiRriPjiPhlNjnZ|Nq5T,H.H-F6O9T8R*Dz6m(=y4F=M6U3S.N8UXU;TOGYTjql{w`^TU`cefd`\Z[]_YWWWVVUSSSRQQQPPONNNNLKJJIIHGGFFFFFFGGGHIJJJKMNNNNOOPQQRRSSTUWWWWW^b_\\\_`ab`_\UZ*)z]Z}gqnEXV7OOAWYBSY=PVG\a^luQ]l=Hb7Fk7P?[;Z4S6R5Q7V5Q0H%8u(:v4E7J8N1M-K'K%Q0WLm^|PlnLghLkkKklJnlIqlLsoRvsTzwV~zX}Y\`efbZQNMOPSVWUQQ[ZYYZ\^aabciecab`]\ZWQRQPSWY^a_^_lh^TN{M{M|PR~P|N}zIzvHusItsAqoFjjHnmCljPniA43=G77. C }YYtMM9ACDEDCCCCCCCCCCFGGGGGHHHHHHHHHHHHHHHHGGFECB@>;98630- ( $        ! % * 0 48<>CDEFGHJJKLLJJJJJJJJJJJHGGGGGFFFFFEDDDDDDDDDDFGFCA?:nKKrrX<:47AA3>78Nig:jfCfeMeeVegIifLnkRsrQvtNwtKurIspJqoJpnIomLtrU~_aa`]ZVSPNPPRWXXZ[_bc``ddecaa_\[Y~V~RROPVROOMKNZjokvplb]^VzwUx|NqwKnoMrkSsgQmhOjkYx{\Ce'F(H)G+G.I1L4N.H&?w,A}+?~AT2S+O-P5W:XA\8O)=oZTB]Vevp}xbKIAT^cefc]Z[]^XVVVTTTRRRRPPPOONLLKJJJJJHHHFFEDDDDDFFFHHIJJJJJLLLNNNOOQRRRSTVVVVV_e^YXX]_bed[QC`LI}}ycvqy6I9N6N,I(G$HF(OGh`~WszLikLllKnnMqpOvsSzrWyo[~v[}|]efowlpkQQNNOTVURMO[ZYY[]^abddfdbab_][WUQQPPPQPX]VXYe_S|ItpLrpMsqMsqQtsNrpLqoMsqMrpMmmKhjCghKhiKjjAecTlhC11>A.-+]A@sqkIH7@BEFCBBBBBBBBBBEFFFFFGGGGGHHHHHHHHHHHHHGFDB@>;98630- ( $        ! % * 0 48<>CDEFGHJJKLLJJJJJJJJJJJHGGGGGFFFFFEDDDDDDDDDDFGFCA@9;W76tsnPP1 =M/ 823Kfd2b_=`_G__PabFhdHjgMlkKpnIspJurJurEljEljEljFnlIurR^eb]ZVSPNOOOTVW[Z\`cbcddeca`^\ZX~U}QQNPTQOOMLM]umZ[~kwri\X}xSvzQtyQttRvoSshUpmKfgUtwgIl$D)I*H-I0K4O7Q4N2K3I9K^^@][A[XBYW@[WA\WC[UTa[wsljY/0Z\fg`_^Z[]^XVVVTTTRRRRPPPOONLLKJJJJJHHHFFEDDDDDFFFHHIJJJJJLLLNNNOOQRRRSTVVVVV_e^YXX`dd^a]Ud65ok{yuQa]A]Y>][=[ZBY[EX]CY]F_cI\fUcwO]{CT>W>\6V0Q3R/N0O9V7P6K;M;N9N6N.K)I#GF&LLnnXtzKikMmmLnnMqpNuqQxrY{qZ~v^jlsf]byyOPONOSTRPLMY~X~W~X[\^bbddfec`^\ZXUROPOOOQQUXWXXeUDom>ifDliDkiEljMrpQvtPvtOvtGmkGhhEde=aaB_`A``@BEFCBBBBBBBBBBEFFFFFGGGGGHHHHHHHHHHHHHGFDB@>;98630- ( $         % ) . 48<>CDEEGGHJJJJJJJJJJJJJJJHGGGGGFFFFFEDDDDDDDDDDFGFEB?A86y[ZqqkOL5:8[ZOirVpRk>Y=Y5T0P5T4S1R;[:W-H4M4N1K-J(H#GA$FAbXx^~NphMqeNtgLuiOvlQxnRzsV]codZ{IjJnWgeQQONOPRRPNPW}W}W~X[]_bcddccb_\[[YUTRRQPONPRUXVTOByt:kgAjgIkjNmkPooOpoMrpGomAljFjiJffJ`cD\^GX[CWYC]\J]Z<++<- 0aOM{xnTR+ 8<@BEGCBBBBBBBBBBEFFFFFGGGGGHHHHHHHHHHHHHGFDB@>;98630- ( $         % ) . 48<>CDEEGGHJJJJJJJJJJJJJJJHGGGGGFFFFFEDDDDDDDDDDFHFFB?@;2@"!oQPurgNJF""* A13NVW7XXjf;pl@soFsoHnlJjjOiiQkkPmmIpnHtqAyu@~GL[UQQQQTTRSUWZXX[]acddedc`_][YX~W~}URRTTRPOKNWW`n]}IeNhPlb\{bf\~W}wVkWbQw\Pv_Gn[Sy~_Da!J"H#G'H-K/M.L(G"?=YC^6[2X-R/R<\=ZHbWpYqRjlKfYGbbE``C__@_\@_\@`\C`[D]YM`[dqmu|yWXV"#K `d`[XY[^WVVTTSRRRRPOOOMMLJJIHHHHHHGGFDDDDDDDDEFGHHHHHHHJJJLLMNNOQRRRRTUVVVZ[UPQV_\ge\Z%&sXY||jqoG\[?]]C_`E_`D\_B^_A`_@a^Bd\@_ZPlsXtWqA[=Y4R.O4S9X9Z>^7U#?}*F6Q0M+J'I!EB)HFfaQryGj\SweRzfQ|iU}mXpWuW]_cLlKiKi`h`XRQOOOPQQPPRW}W}XY\^`ccdddca]XYZWSRQQPPOLPQVWNLB{@{uEwsNusPonOkkOjjJihHljFolAnkImlMghL_bFZ]IWZEWYAXXN^]@//, @$#\LI~{aNK6/7;@BEGCBBBBBBBBBBEFFFFFGGGGGHHHHHHHHHHHHHGFDB@>;98630- ( $         $ ) . 48;>BDEEGGHIJJJJJJJJJJJJJJHGGGGGFFFFFDCCCCCCCCCCDEDCA?>9;, AmOLtpsQP* 1"$HNO9ZY:WV>UVEWX>^[=gc?plFwsJxtGqoDihIhgLjiMmlNusV~RIFI\USSSTUWXVVWZZZ[\_accedcaa_][ZXXUSUTRPNKMVRWnl[Tw?bPtTy_i\U|SyS}qLtiNul?f^Nu_6T'M(K(I+J/M3R6T)G!=}7RHc>_7W-M.M=ZDaNlRoOmxLjiLj`EdcCcbBba@b_Aa]Ba]D`\Jc_I^[M_\k|xvufCCHQ]]ZXX[^WVVTTSRRRQPNNNMMKIIIHHHHHHGGEDDCCCCCDEFGHHHHHHHIIIKLMMMOQQRRRTUVVVXWSQRV]_`NRlIIwxwvwKYY>VVDabE`bE_`E^_B``@c`?c_Bg_Cg`JnmNp{PpIgC`8U/N0P9XA^@]4P$>~,G=X6R/M,L%H&H.M=]`Mp|FkfQvoOwqPzvU}|Z[YXSzOu?eMtWniXSQOOONQQQQQSX~YZ[^``ccddfc`\Z[\YVUTSSTROPQYWJJH~NSR{yKnmHihIihEhgGnlIspFspInlKffH\_AXZGVYDXZ@YYEUS-0nVTqohQO0,67=ABEGBAAAAAAAAAAEFFFFFGGGGGHHHHHHHHHHHHHGFDB@>;98630- ( $         # ( . 47:>ACEEFGHHIJJJJJJJJJJJJJHGGGGGFFFFFCBBBBBBBBBBBBB@@@A:@=94oSOlk[<>)ABD>]\8XW8UU?ST8WT6^Z9heEurL{yJxuGroEkiFihGihKrpYYSQO\XTSSWW[^[WW[^]\]]^bbcdbba__^\[\YWVUROLLJMPIUaabIwO{R|Yi^YVQ~MyS~JtwRzWz6U,O,K*H*H-K3Q>[3Q/K1MB_A];U3N3Mec@c^Db^E_\Ia`Hb`>[XEhcx|rkgL43>P[XWWZ_WVVTTSRRQPPMMMMLJHHHHGHHHGGFDDCBBBBBDDEGGGHHGGHHHHJLLLLNPPRRRTTUVVSQPQSW\^Q: V72{qpnz{Oac9TUnb?nkFq}SuJh>Z5R/P7VD\AY5N0K:V=Z6S.M-L(I*J3P=\Z}RyMvzOx}OyR}X^`^WOxJtMz[W^TNSPOONLPQQSTV[[[\a``cbbdgb_]]_`]ZYXUWXTRQS\WLPRWQ~Fsp?igCjhGnlIqnMvtKxuFsp?geB^^@TW;SUCTWCVXD^]4DB%dHHzheoRQ&2?2<>BCEFA@@@@@@@@@@EFFFFFGGGGGHHHHHHHHHHHHHGFDB@>;98630- ( $         # ( . 47:>ACEEFGHHIJJJJJJJJJJJJJHGGGGGFFFFFCBBBBBBBBBBBBB@@?BD??C2 3dEDuwQ?BBFH>]\9YX9UU>RS5SP.TQ0]Z>liHwtM{xOzwNtrKonEhgCkiJspJ{wMURWZTRRUTWYWTTW\\[\Z[`abcaba__^]]]ZXVVSPMMJJPHKRWf_`]bqjjh_WY\]RuCb)M'G$B#@&C,H9V=Z@\6Q=X;( 3<6?<>BCEFA@@@@@@@@@@EFFFFFGGGGGHHHHHHHHHHHHHGFDB@>;98630- ( $         # ( . 26:<ABCEFGHHIJJJJJJJJJJJJJFEEEEEDDDDDCBBBBBBBBBB?>>>?@>DFDDJ:5cfsu\aa:`_8_]8\[@WW9TQ:QQ@RU@^^AljDwsF}xJ~yIyvColAhfBhfAjiHuuWSRUROMNMRZYYY~Z}}_`_`]\^_aaa`_]^\\]\YWVTQNLIIMOPTSWda^aibX~U{S{JoFi@aJp]Jo2R0J+C%=$:%<*C2K$=(@(B'F3SQrhIn@gGmKpPsTu\}kkdad]SWSTSOPPOONORTSV\\]]___a``aec``bca]}~X~~WUQTWWUWVNLOQSvtIon?ig;jg@upF|xK~zP~{MvtChf;][1UT6RR9PR5SU:WY<^^2WTPda~oowXX04 CC=C>BBCDDA@@@@@@@@@@CDDDDDEEEEEGHHHHHHHHHHHHGFDB@>;98630- ( $         # ( . 26:<ABCEFGHHIJJJJJJJJJJJJJFEEEEEDDDDDCBBBBBBBBBB?<<>?BCEEHKEB6@#&^QTr|}9ge:fd?dcH]]AXVCTUDRT9TT3^\8ni=ytFzK~{KxvJomHjh?fd;ffEnn@om:pm;zvNKIJHMUUVX|}Yz{]~~`aa]\^_aba_]Z\[Z\\YVTTQMKHHLMRUSX\^[\giSxKoLqGjEdAaCgKs@e7V9N0E)=':(=-C(?}0G;R;Q/C}3Dp4@~:E@N@WGgS}GxvCuq@ppAnu@ljBmjDmjDjgHgfFddEccGb`Da^B`\>]X8_TMaZ|wsvut;wqp}pPc_AVZ?Y^?[aB_dB_dGbhIcfJfdGidFneHmjJjnFtjDyiD{kDxrX}Ge=X6R&L(E2?v6F@P@Q1E(A'?&=%;+A.G,J9VEdPqEi@eDjHlLmMiWuuo]\XSSYSWSPQQOOKMQSRT\[[Z\]_b```ccdabca}[yzVzzT~}SORTUSVM6zu3om=sq9kjGed@bbAigFtqE}xFyHzHyu?kh7\[6VU1TS:UVBVY?\^B`aA@>?BBBCDDA@@@@@@@@@@CDDDDDEEEEEGHHHHHHHHHHHHGFDB@>;98640- ( $         " ' - 148:BCDEGGGIJKKIIIIIIIIIIIFEEEEEEEEEEDCCCCCCCCCCA??@@BCBADG=>=. :""THHerpPifEfbAgb7ia:[XBSU=VV2TS8`^DrnJytP{O~zL{vGxr>ni9fdBffEffEgg?gfBxtOQNOOQ~{U|X~{X}zX}zU}zY[^][W[][[]`a`]\]\ZZZWUSRQOLNPQUVVYYW_teS~Bne8]7Y8X0P(H$G%Gunpk@qn?nnAmnAjiBlh@ibBh`Dhd?ab9Y_:\X?XTWb_}{hhP,,>NTS]UQMOMPPRQONNNNLLKIIHHHGFFEEDBBA@@@@@AABDDDEEFGGGGIKKKKMLLOQQPNNOQTVUVYVP?Q43ykitzuRe_?YUegAijDnnDpnAon@rp@uoBypEzsEwxOwBd>Z:S0I*>1=}7F8K1I9};"C"A-J9T:X4Y:b9c@jCkElEkBhDnO|geY\ZVUTOQNKNPQSQTVXVW]``ad^YY[\\]_^_^[|Y}z[}QxwS|{S~}JyNUSWR@wo9ic:e_Ahc<`\AdcCljDtpG|xK}N}M{yFlkBbb?Z[9SS5VW5XZ?ef>jiDedPfefnoXKKE%%6 ;A????BAABBBBBBBBBBBBBBDEEEEEEEEEEGHHHHHHHHHHGGFECCA?=;:40 /+ ( % !          " & - 0379BDEEGGGIJKKIIIIIIHHHHHFEEEEEEEEEEDCCCCCCCCCCBBBAAA@@@?@;8;<50^PN\e`Ooh8of$qd6faFUWCYY_^EsoI{S[Q{MzsQztTysTzrR}tO~vP}RZ^[SYZWX^cgd_]][Z[\WUVWVSMONNUSTVWVXowgHxBoHuDpBm@h@h9b7d;e4_-X&T*V%O"I)H1L,C.@4G8M=QE]CcKrFs?vq=zk6vcie>>>>>@@BCBFGGGGIKKKKMJHORQNJGINRWVY_WFA)*^][s}Sjg9US9YU:]X>b]L3>4?8E1F,IB"I,S%J3UC_Aa7c8j2g JFE@@@@@@AAAAACCCCCCCCCCCEEEEEEEEEEEGHHHHHHHHHHGGFDCCA@><<3- .* ( % !         " & - 0379BDEEGGGIJKKIIIIIIHHHHHFEEEEEEEEEEDCCCCCCCCCCBAAAAA@@@@A<:<<94IPL^xsGsl*g]DojJ_`?ZYB^^@^]9\W>d`BmiDtnEysE~wH}yBml@baE^^CZ[MggHnm9jf8qkS^R}KupJpkKnjOrlOvoP|uO~yO|Ya^UYZZ\]`c`]\[YWXXTRSTRQPRRPTTUUVUS\roXYTIuBnAkAk?h?h;b7_9`4]Ai@h3X*J*F)A.@~4Hpr>osDry@pp?pj?pd?n`@kf?fi<^j=__>\Y8ROM\ZrsrxxnTTEIYTQPLFALPSROMOOOMMLJJIHHFEECCCAA@??>>>???AABCCFGGGGIKKKKMIHNRQPLKLPTWX[\UP"!u]^}ywdnlH]Z?ZW=\X@b_Aea?fc=hf?ji=lm@qrAqt>lsCpvAuy:vw=wxByzI|O~XNpGc?V<<3. .+ ( % !         " & - 0379@CEEGGGIJKKIIIIIIHHHHHFEEEEEEEEEEBAAAAAAAAAA@?????>>>>>==@BA?02 e`_mtqZjgGgcFuo=e`@c^7USD]^C\]C``HjhIqoNzwR~|R{{LqqDggEggLppNyxQMPQTVpqPgiUjk^ss`xvZzvW{yV}}Z`]SUVWZXZ\Z}Z~[~_}[}}X||W~~XTUWWVW\^]XXYYWV~U}R~yM{oV}XP}N}STOMDxgk>gf?ba=ZXBWUWbay{{~wvQ96>L]_[YSMQOPOOOMMMMLKJHHHHFEECCCAA@??>>>???AAAACDFGGGHIKKKLFEIORTTUVW[[UXJ>]CCxxs{yLa^;VS?^\=a`?gfBjh@jg@kiCmlGrt@kqDlwPtSuMsHsIsNwRzU|Z{TrQlKbH^=R0E,E,G1N8XDeBe?cEjFiCgBhBkFoOzO{VWUQLR]SzxW}{[~Z}]\YY[YTTSSSUUV~W}}Z\[~zadc]UTYXTQSTRUT{S{vUxuQpoTopUlpSjo[xyN{zF|@={@yuDrqKnn@ee;edDrpK{yP~M{yDrpAffAab@[\E`b=`^>fc9fc?omCgfRffxwxgTX698:69>>>>>>?????AAAAAAAAAAADEEEEEEEEEEGHHHHHHHHHHGGFDCCA@><<3. /, ) & "         " & - 0379@CEEGGGIJKKIIIIIIHHHHHFEEEEEEEEEEBAAAAAAAAAA@?????>>>>>==@BA?53 !)$#S\XcurLoj4e_BkfEidFebAZZAZ[@\\DfeCkiGtqMzwS{zUzzMqpDggEiiAmlHywK|I}?xt@kiOghXnoYlnVjjVmjWuqWywY~_c^VVWZ^^^^Z}X|Y|]{}Y|{UzzRzzR|{M}{M}NMMNSWVSSU~V~T|S}zS}{UzWuN|rN{wO|O}L}OOXTMAb=\DbOlB_<[=^;^4Y2V5VH^Pf\rf|mdTy?f=d>>???AAAACDFGGGHIKKKLFEIPSUUVWX[_XVIR''ii|ss]ebFZW@[WDb`DgfCjiEljCmjDmkFonEoqR|Iqz:]kKm|Nt9d:f=e?f@g`dgby]tPe@U>W=W:V<\=^9[BfNsBe6Y?dOv\[P|XVPKD}zG~yU|TzxY~|[}[~|Z~WTSTRKJJIKMO~|QzySzzV||Y~}Z}y_~c~d`YY]ZVUVWTUTzT|vVzuTrqRklRjlRhmJegFrqC~yA>~D{AroAeeDjiFpoL|yN}K|yDsp>ji@ee@``D`aC^`;^]:c_>li8ljBihg}~WVW/ 3<;66;>>>>>>?????AAAAAAAAAAADEEEEEEEEEEGHHHHHHHHHHGGFDCCA@><<4/.- * & "         " & - 0379@BDEFFGHIKKIHHHHHGGGGGEDDDDDDDDDDBAAAAAAAAAA@?????>>>>>==?ABC>4/8%%]JLeom=c]Ed`Ca]=YW@[[A]\_:[-Nz7]zBl|HwyBvn>sj>rj?pm>>>??@AAABDEFFFGHJJJJHGGIKMPQSTUXSDK,*j[Z{}zZkg?ZV>`\=ebbGmHq6_5`O`_VRTNK}~KKK}|P{R~{S|S|T~{T}zS}{S~{T}VTKL}K}{K|zMzyOxwQvvSvvWvwYxyZyzY}x^{_}`a[YXTONQROQO}MwtHlkMklJehPhmLek?jmI}~HEHDstBfiA^bImpO{~AuvGruCmo>>>>>?????AAAAAAAAAAACDDDDDDDDDDFGGGGGGGGGGGGFDCCA@><<50/-+ ' # !          " & - 0379@BCEFFGGIKKIHHHHHGGGGGDCCCCCCCCCCBAAAAAAAAAA@?????>>>>>==>ADED;=/ H#ZVWTwr@]YLieD`^KggOkkIefGceC^cD`dLruHwz-F/L8XAa6U8W6R8Q4S5U1Q*H0T|>gHwAys=um;tj>>>???AAAADEEEFGHIIIIIHFEFIMOQRQRKH##jXV|}{bvqBb]7^XrrDtyLz8cz)Qt-P2U4V5W6W7V6T5R:U5P3L-C)> :@-M4T7X=]?`FjBi2\-YEtajf[VUQQSSPP}SP|P~|Q}zQ{yR{xRxvSxwTyxRywFusHtsHrqJsrLrrNqqQqqTstYtuYtuYuvW{v\}y\~z]a]XRNJIPQNQPJutEiiRopHbhIagE^dT\PEOGntC_fNfnVyIw{1ilLsyDlp>fi_cIgiGacNhhHgdEhe6_Z`pp[WX08 LF<57<;=>>>>>?????AAAAAAAAAAACCCCCCCCCCCFGGGGGGGGGGGGFDCCA@><<61/-+ ) % !          " & - 0379@BCEFFGGIKKIHHHHHGGGGGDCCCCCCCCCCBAAAAAAAAAA@?????>>>>>=<=@A@@A8:89./XjgTebZolWomYuuXvvTstPoqLjnMknMquQ};eiBincZ{KjpQrxW|ZcmhR|Bgk8Z\BcdOutR~|SRWYSQQQT[][ZV~yW{w\wxYuvVstTqrRpqKllIllImmInmJonHnmFnlIqoLsqOwuS|zR~{R|SRONLPSVRPU\\YZXT5b)R>cLoDf<^7Z1T1Q4G0C+A*C'D*I7X6V:Z7U3O7W5T2R2O1Tsr?nlDkjDif@b^>^YTeb{wxrtd;?GOUOPLIHJLOMLKKJIHGGGGDCCCBAA????>>>>???AAAADEEEFGHIIIIJJFEEGLOQQQJCbBByxpvsOe`;]X@gb=he;ig,B&B$H2S2S;\@bFiNu?i'S3bX^X\a]WUVWSOQROPO|O{P|yOwuOusOtrMsqComDnmEmmGnnJooLnnNnnRpqWrsWrsWstUytYzvY{w[}^]WQNLJRSQTSP|{KqqJjk@]bIejWtyhm`MM}LsxJgo]v~d?hm3eiV|IquDloCknHmpVwyTop_wwQhgOhfLfcdhi4()+CAB>49=>=>>>>>?????AAAAAAAAAAACCCCCCCCCCCFGGGGGGGGGGGGFDCCA@><<610-+ ) % !          " & - 0379@BCCEFFGHIIHHHHHHGGGGGDCCCCCCCCCCBAAAAAAAAAA?>>>>>=====;99;;<9>AK!A:A!$yef[XYSa_VspIooKstJqsKosRpuLmsX|Glt@emZ~YzWvIhqPpyjuc\lX,XZ&LN?kjL~{UNMPSQPOOSVXX|X{wYxuYtvWstUqrSopQmnOklOklOklOklOklNllFljHomJrpNwuR|P}NONKIEBFNKQZ^M{;f5aGXI?wRWOvNrFg@\B\4K/E*?%=7:/O0P5T6T1O/Q1P/M/L.K9YEjIrFsyFssGur;usAxxAtu@pm><<<>>>??@AABCCCDEFHHHGMOHA@@HMOOO=E+/rgir}{Iea:b^2`]tqBwtEwuDutDrwIsQw8\-O4T.M,L3U3V4U3S0P)F95!;)D'H+S8^5[BgHoZ\I{??;72;@I>=====>>>>>AAAAAAAAAAACCCCCCCCCCCFGGGGGGGGGGGGFDCCA@><<622/, ) % #          " & - 0379@BCCEFFGHIIHHHHHHGGGGGDCCCCCCCCCCBAAAAAAAAAA?>>>>>=====;99;;<D=C@F<3,aaaeur5SPMttU}~W}[~c[|[ZRw=_hQqzcTr{Nmw[np_^z`%LN+VVExuZWTTRQPMMMRUVzVyuVurVrsUqrSopPlmNjkPlmPlmOklOklOklMklHnkHomJrpOxuT~SRTTQLDLLMPSSWO}[dRWQPHwP{_aVwHfJe7M3G/C)@9:0P-M/O5T3Q-P5U1O.K-J9[AgGq~FtyGvuHxu@zx?vv@ssCroAmlAlk=gdEdaTbbropuwpMN?EPMMIFHJMKJIIHHGEEEECCCAAA???>><<<>>>??@AABCCCDEFHHHGMOHA?@GMOON@kNR{~emkPie=d`;he@nkCspCus@wtByuFzwHzxEvvDsxGq~:c|6\.Q(J,K3S3V4V3T0P-M+H ;!;)B0I*I0XBgChV{\ZP|EwOU[]\SQWTQNQUSPRRVSPQR~{RwuQsrQqpOnpNlmMklMklPlmRnoQmnQjlUlnYprZstRvrVyuUzvT}xR~TQMONKQSSUYAsq+VU&NPl~keeeYOoxRmxgQjvA^hYz^^~Y|]UN|}T||Wut>POjpp]Z[&:EHC@997@@K>=====>>>>>AAAAAAAAAAACCCCCCCCCCCFGGGGGGGGGGGGFDCCA@><<621/, ) % #          " & - 0379?ABCDEGGHHHGFFFFFFFFFFCBBBBBBBBBBA@@@@@?????>==========<;9888:9<=?EE=9!YOPZ__GZ\XtuJmnW~^X~XxY|^UDswFuzLy~PzVx`|g`lt/KO3TT?ffM~}WXTUUURPOO~Q~xUytXvsWtrSrqSqpQonNmlOjjOklPkkQllQllSlmQlmLmlMonNrqQxuR~{RUWURNIJIJNPU]NJx]PUaWN}Zd^UuXtZtGc>Z7S4O.J,I1Q0P3S6U6T8S=VXOm[}Ou|JruOwy@uu@uuBuuCtrCrpAnlClkFigGcbQffdttxnl`HH>BRHLJJMLIHHHGFFDDDDBAA@@?>>>==;:;<==>>???ABBBCDDFFFELPJFGISLLJLbKLqmonttLea>b^Amj>liApmEurEwu>wtBwvHxxIwuIssNuxWyMk;Wz5O3N=W:V;[8Y5U2S0R,N-N0O3R8W=^HnUyNqQuac]S]bYYPCvN[RMKOTVTUTVXOO~Q}zRvuSrqTonQlmQllQllQllQllRmmRlmRlmSmmTnoTppTvrUwsSxtS|wQ}zRRTVVRQVVQI};ig,RR(JMtljeXzSy~U|Nx|HtxLw|Uz\}[{Ox}ZWWKnoVppLZZfceZHJ> $:CFDBA?@@@>?===========??????@@@@@BBBBBBBBBBBEFFFFFFFFFFFGFDCCAA?==731/- * & "          " & - 0379?@ACDEGGHHHFEEEEEEEEEEBAAAAAAAAAA@?????>>>>>============<8665589=<HRH- =+-\Z[]ln=WX@deBknHvwMtwPmtKmsGnuO}I~;suAuxCpt@`gCXaFaj:clGhr\z`{=UZ:VW>bbGutQUTWVVSOMN|O{uTvqYurXtrRrqRqpPonNmmPjjOkkPkkRllSlmUnnTnnMnmMonNrqQxuO{wO|RTRPNHEEGKNU]PEtTDM_OGxO|T|}PtuKkoQlvPizHfCbA_?Z7S3P1O2Q5U9V;W:P?T;Q1DOcTj]w^{OpzJntJosBtuDwxGz{HyxHxvHtrMutKomHihFddMhh}zwpnZ:;@PONLMJKHGGGFEECCCCA@@@?>>====:9;;<==>>>>@AAABCCEEEDLQKHIKRVOGe78wxvz|[hgKieAieBomDrpGurJxvIzxAzwEyxJxyIutJqrQtv[yeUlF]1G8M8R8W6V4S3S4U1T2U4U9Y=]BfIoMq~HlsHlmSyuV}{S~K{U^SOJ}@sPZMIGLQUTTSQTKJ|N{xQusTqpUnnSllSlmSmmRllRllRllRllTmmTmnSnnRooUvrSuqRwrQzuP|xR~RUVXVQVRJ>vr:gf4XY5X[]Sy~BinJ_fG`f=Z_@eiGptIz{@suH|}T~OquQlrDptHuxKvzAik=_`>VV_jjcY[; #6 KIEBAABCC@=9===========>>>>>>?????AAAAAAAAAAADEEEEEEEEEEFGFDCCAA?=>841/- + & "          " & - 0379>@ABDEFGHHHFEEEEEEEEEEBAAAAAAAAAA@?????>>>>>=<<<<<<<<<<>><:8768:<=CL@@2G58c`bYcdCY[8YZfk0[_8ehI{}Fz|Cuw=kn2Y]0NT1NU#BK)EM-GNJbhH^b_=^=_6Z3W2T4S2O4O8SC^]y[zUvHlrBimEnq@in@utCyxF|{G}zG{yIzxMzyGqoFnlCig@dberm|{wsddD$$=MMILHJGFFFEDDBBBBA@@??>>==<<:9:;<<=>>>>@@@@ABBDDDDJNKJJKJK=F&&zda}{cssOfdGlgCpkAtoExtGzuI}xG|xA}wBzxCvwBqpDmlInmOor^{^xXs;W3P3Q0O0Q1S3U4YAeij>>>>>?????AAAAAAAAAAADEEEEEEEEEEFGFDCCAA?=>8430. + & #         " & - 0379=?AACDEGGGGEEEEEEEEEEEBAAAAAAAAAA?>>>>>=====<;;;;;;;;;:?CA?;978:;=<BBL> ED!$moRRS>UR<`\7ea9mm}y@|xAzwDyw?qo=pm7nj2lg=iaXwqj{vPMJ;&%>IGILJFEEEDCCAAAA@@@>>>==<;;999;;;===>>????@AACCCCGJKNMNH30 RTNr{RoiCjf?ke7kc6ng@|s@|tA}uBv?|t<|s:xt7pr7ki=====;;;;;;;;;;;======>>>>>@AAAAAAAAAADEEEEEEEEEEFGFDCCAA?=>8551/, ' $ !          " & - 0379=?AACDEGGGGEEEEEEEEEEEBAAAAAAAAAA?>>>>>=====<;;;;;;;;;:?B@>;978:;==AIFE?7$ceeXXHkkN}|DBHOPNK~|KzxKxvLwsNupTspZsqYtqPtpRsoQrnPqmPolQolTpmUpmUpmVomWomUmmSllQllPmmOonOsqKurIxuNQPOOOPPQI}J~PLKL}}JvyDloAcgA^_Fa]F`YG_WD]XAYWH``Cc]IijOoxPqNvQyQyPzT}Z]TwPsKoHl~InuElj@jb=ia=kg>nn=mq;sq=wt@{w@~zD~zC{xG{xGxvCur:nj8niCldPkeernwpmgOO@AIGMJEEEEDCCAAAA@@@>>>==<;;999;;;===>>????@AACCCCGJKMMMEAbNLtqliumMfaHkhClgDtn>tm=vnDwExDwA}u=|sjfDieFgcHffNmrSsMqHnSv\{X|X}W~VQyNvQxUxMnyIgiKf\H`XI^XK_ZK^[FZZ>WX=]^<`d@hmGtxH|~ONQNLKKMPRTTRK{EwsIvsMtrOpoSnnWmnXmmSnkTolSolRolSpmRolQnkQpmRqnTspTspUtqQtpOsoOtpNusNutOvvQ{zO~RSJJFIM|zKllAWZ;LO2GL5OT8V[B_`FkjItsGzxG|ylj=nl5pk5c`7TSJSSi]`6"4>@FGAAAA@>=====;;;;;;;;;;;======>>>>>@AAAAAAAAAADEEEEEEEEEEFGFDCCAA?==9552/,' % !         " & - 0379=>?ABCEEFGGDCCCCCCCCCC@??????????>>>>>>=====<;;;;;;;;;;=?>==<<==>@:8FBQHJC2]VSac^Kc^:keBplErmDok=fb.UR6]ZHqmP|xGysNxuTpr9YZ3RS+KJ-NJ8ZWAjhL~|IDELOONzxRxxPvtNtrOtpStpWtqWtqStpSroRqnQpmRolSpmUpmUpmWomWomWomUmmSkkRjjRkkRllSpoOooLpnOyvT~|U|V|V}VXXVO{zO{|P|LxKv~PwhKndCa[CZZEXYI\[G[XDYV@YW=XYEacEdZEgbFjjIqvM~NILORSNOKzCmjKpjOriLmcMofJieEfeEggFmjHqmKtpNwsNxuOywR{yHnlEhfIhgTnnPieMb]Zify}{vljB+*3EDDFFDCCCBA????>>>>===;;;;9999:;;====>>>>???AAACDFIKJG6I43~vstztXe_Qd`QhgOheTrnNplFmiMzsLzsKyrKwpMtnJsoEnlEifLieQjeQhcVlhTqmKmkEroH{zPTQPMKMOO}~LvuEkkEecJe`Jb_G\[FZ[J\aI[aEY_H^cB]aB_bKljPumQxrMwrP|wP|P|R|T~VVWV}U|S|zOvtLpoNpoQooSmmUklWklWllQnkRnkRolSpmSpmRolRolRqnSroSspUspXspTroQrnQtpQtsPsrQttSxxP~|PQMMKNP{HkgC[Z:NP1KM3UV;deCspIzvM~{K{xJtr:`^5XW8]\<:88:<>;;;;;;;;;;;======>>>>>???????????BCCCCCCCCCCFGFDCCAA?==:7520-) % "         " & - 0379=>?ABCEEFGGDCCCCCCCCCC@??????????>>>>>>=====<;;;;;;;;;;>??>>==>>>@:4>DOOK?47*'kgc]uo2f_:kd>leCmg>c_3VS.SO3[V;jc?vnRz]y{VwwMnnEge1TO3WS=heI~|KCBMPNOyxVyyQvtPurPtpSuqVspVsqRsoRqnQpnQpmRolUqnVqnUpmWomVnlVnlUlmSkkRiiRiiRiiRmmNllIkkJpnNtsPwtT|sT|uU}{V|V|Qz{MwwMuyHrwClwEmxMs\Jl\HdYJ^[IZZHYYGYXH\ZD\\@[^DaeGfYFh`FkhJrtM~OMOPMKIG|J}}IwoLuiLseLpbJmbHidEfdEhgBjeBkfEnjGqkGrnItqItq@jgImkPpoSlmTsmTojZokkvs|vccG&'=HCDFDCCCBA????>>>>===;;;;9999:;;====>>>>???AAACCDIKJCD%&ufd|ivp[ohYrmYsqSolPokIkgEmhGumEtlDslDqjHohEojAljCieKieQkeSjdZrlQoiKpiL|tM}NUSSPOSVO|IspGmkIifJc_I_]F[\FX]GW`FW_FV_J\dD\aC]aIhdJnaLqhJriKvnJwtMyuPzvS{xU|{UzS~xQxvOvtMsqLpnLmlNmlOllQkkThjWjkVkkPmkPmjQnkRolSpmSpmSpmRqnRqnRspTspWroSqnQrnQtpRtsSutUvvVyyP|zOQOPNON}wFhd>TS@RTLefKkmS|~I~yF|xBwr8ie3\Z/QP6UT:]\BmkBur2mgEgagxuca`>%%?LKHD@>BB@>:8569=@;;;;;;;;;;;======>>>>>???????????BCCCCCCCCCCFGFDCCAA?==;7520.*% "          " & - 0379=>?@BCEEFFGDCCCCCCCCCC@??????????>>>>>>=====<;;;;;;;;;;:9::;<=>?@A?>=FCIE@=2R74edaXupLniAkdAph9g`9a[1TN/NI5WQBhaQwrQwv\U{Qzv5\V1VQ>fcL{yQLHLPN~|OwvVwxUxvSwtRvrRuqRsoSsoRqmRqnRomRpmSolVqnWqnVpmWomWmkVmkRlmQkkOhhPhhPiiPkkNkkIkjIljLpnMspNynPxrS{xTz{Tz{RxwRxuPusJpoHlnHkoEjaEfaIddJ_cGY]CVWEXXG_[C_\@_]?a`Gh_FkfHqqKx}KKKLMKHMNR{Uzva|xcusfrqblkfmnellfnl]mk^lkaomcpn`qp]ppZoo[nojqs^\aG;AL@ALAAK@@L@@}kj_:;:HF?EDCCCBA????>>>>===;;;:8999::;======>>???AAABCFIKJA[78v`_Q?>UCBMCDFCEFBD\]^fnnbpo]tp\to\sn`qmgpmdpn`oncnlimlmonnpokrqapo\wuPwtR~OKMONMPPKzFuqEpmFmjDec@_^A_^D__B[]@YZAYZF^`F``GbcLgdMh_OmhKpkJroJstPvvSwwUxxV{wS|uQztPtsNrpLomKmkMllNlkOjjOiiPhhRjkRjjPmiOliPmjRolSpmSpmSpmSqnRpmRqnTqnWqoTqnQrnQtpRtsUwwWyySwxIxvK~PPRPLFyrClf4TP@][T{zM}|MO}zHrp>ec3UT+LK/PO;^\:eb@ol>qm8kgktnkfbF435HKCEA:>BB?=<<<<997;;;;;;;;;;;======>>>>>???????????BCCCCCCCCCCFGFDCCAA?==;7520.*& #          " & - 0379=>??ACEEEEGDCCCCCCCCCC@??????????>>>>>>=====<;;;;;;;;;<63569;=?ACBDHDF>AEJ? KB P20`fcbxsHqi?uj:rh@ld=]V>>>>===;;;9789999;====<<>>>>?AAAADGIKJCY02bd_35? J = 2 7Z:?iRV`RTWUVWVUYUTaSTlSVgRTbSSfSUhPTiRVkUY[QVSVZdvyTvxVOAGGGFHHKL~EyuAsqAqq=ji=heAicAe`@c]@c\Cd]GeaKifQjfXhdTmkNpoJqsMtyVv|Zw|\xzYztS{pPxpRssRqpNnmMlkPllQkkPjjNhhNhhMjjMjjOlhOliPmjRolSpmTqnTqnTqnSpmSolSolXonUqnRrnRuqTutVxxUxxLrr?pnDzyMPQNH@xo=lc2\UHrlMA~3|uIpmB`_<=ACB:4-:;;;;;;;;;;======>>>>>???????????BCCCCCCCCCCFGFDCCAA?==;8531.*( $           " & - 0379=>??ACEEEEGDCCCCCCCCCC@??????????>>>>>>=====<;;;;;;;;;<74679;=?ABBBEHEDBDDJCJ.%'$WhcMpiBqhAukHskGibD^X:RM2JE3TO3c^:keN~wT|\:`\?ebMusN~QPGLHvtGllMlmWywW{yRytQvrQtpQqnSpmRolSolTolSnkWomWomVnlXnlWmkVmkPmmOkkMhhNhhOiiOiiPlkNmlLlkNnnPsqLvkQwrTywTzyVzz\|z]{v[xq[xrZvpWqnQpsLhmPhoRdnRbjUehYmlVoiQngTtnMmiPlfMkjOsuS|QMJHIIJSvP{oSvm`usMSV!(.,.%'''" ,< F KFB78;:G@><BCCCBAA???>>>>>===;;;9789999;====<<>>>>?AAAADGIJJGB;C@J@; 97,$'0+',,-0% T_a_xyZz{O{|IMMLJMO~W[PurHkiKmlKmlPqnPplQnjPlgOjeLgbOfcSkhXmi_njXplTroSttXx|]y~^z}\zzYzvRypOwoRssRrqOonNmlOkkPjjNiiMhhNhhMiiNjjNkhOliQnkQnkRolUroUroSpmSpmRolRnkWomUpnSroRuqSvuVxxRvuGmm<=@A@:50:;;;;;;;;;;======>>>>>???????????BCCCCCCCCCCFGFDCCAA?==;8531.*( $           # ( .148:ABCCDDEEEEECCCCCCCCCCCBAAAAA@@@@@>==========<;;;;;;;;;;:999:;====>???AAACCCEDKL?p]YsuqRkfGsk=nh:jg4[Z7UU3OR0NS;XXFgdQxrZ~:_]>caHolIwpOxSLKyvMtqIlkHomM{L~E|wKurWvuYssQpmRolRolSpmVspUqnVpmXpnVomUljSjhOjgMjgMjgNkhLkhMmiMnjNokOnkPolPomPnpXnpZsqWzsXun~w|wusvtuspoxlixkixkixkiwjg|oltqyvzw|yI86WZZ[YWWVVUTWWWWURRQQQQMLKKIIIGGHIJIHGFFFEEEEBAA??>==<;;99999999999;;;;;;;;;;;;;;===>>?@@BCCCDEEEGGGHHHHHIIJKKMOPPPQRRSWWWWVVVVWXY[[ZXPg==}z{wxr|rlymgxicxgbyidymhypl}rmupwsxuzut}xYvp\|RsqVwuOtpQqnRmkSkiQliKjgGjfEjfJjgPigTjhPjjOiiNiiOllPonTsrTsrQqpPpoPqpSrqYppTrqPusLxuKwuT~{X}KpnHnlKqqT}H~OS{VvqCoi1^Y7a^`}PvvCfg<\]/OV-LQ4SW6WZ?ffJtpFpiQjftuso[\<EFFGEDCCCBA>====<;999999999999999<==========?@@@@@AAAAACCCCCCCCCCCBBAA@@@@?>>:6531/-+( $ $         # ( .148:ABCCDDEEEEECCCCCCCCCCCBAAAAA@@@@@>==========<;;;;;;;;;;:999:;====>???AAACCCEDJR=B,)ornUql3d[:qj6ig7``?\\Hbf>Y_=VX5UR7]W?hcFliDhfCheDrjKrJv@zu>njFlkIkjIqoN}PK|OwuXstXooSrnTqmRolSpmTrnSplUolWolUmkTkiRigOkhMkhNliNliLliLnjMokMokOnkOnkPolUsubvx]tsWys[x8I@2.)K32A.+@-+E319.+:/+9/+9/+9/+;1-=3/@62>3/G=:(Z\\\YXYXXWUWWWWUWWTTUTQONNLLMKJIIJIHIGGHEEEFBAA??>==<;;99999999999;;;;;;;;;;;;;;===>>?@@BCCCDEEFGGGHJJJKLMNONPRTTSTUWXWWWWXWWWYY[[[\ZMIZ;7D2-90)=4-<2+<.'<,&<.'9/)4.*7/(@1+I2,N2.:/)ENHb{OtpXwuTsrMtoOpmRmjTljRmiLkgHkgFkgKkhRjhUjhPjkQkkRlmQmmPpoPpoPpoOonPpoPpoSqq\rsTqpOrqNxvS}V}W}{MqoInlGmkItq====<;999999999999999<==========?@@@@@AAAAACCCCCCCCCCCBBAA@@@@?>>:6630/-+( $ $         # ( .148:ABCCDDEEEEEBBBBBBBBBBBA@@@@@?????===========<;;;;;;;;;;:999:;<<===>??AAACCCEEDQE>O86icaarnLjfCkgBniFpm>eeGjlCfc=_Z9[U7[VGpmLvuHsrCmhBrhFvnHtqGmkJmlIkjJtqL}OLL|JxvIqnRrpRqoQonRpoUqpSomUomTnmTmlRkjQihSkhRkiRkiSljSmjRnkQnkQnkPnkPnkOmjVnq[rsRomQxqax560" @>::BBBBB@AC>GE[[ZZYXWWVUUWWWVUTTSRRRNMMMKKKIIIIIHHHGFFEEEDA@@??>=<;;;99999999999;;;;;;;;;;;;;;<<=>>>?@ABBCCDEEFGGHIIIJKKLMMNPQQRRSUUVWWVVWWWWYYZ[Z^aSJ:7<>@??=;9;>?% ;:6d|vKrnNwtFljOplPnkRmjSmjRmkNnjJnjHmiIliMkhOkhNkkRmmTopSooSooRnmRnmRonRooRooRpoQusKtqHxtI{RQO|yIpnHkjEhgFkiBqjGwpFqkLmhDuoJzuClhBXW<][?b`AdbAjmBloAlmAmmAheJhebspc`_I01:EGGGFEDCCBAA====<;;999999999999999<==========>?????@@@@@BBBBBBBBBBBBBAA@@@@?>>:7730/.+( % $          # ( .148:ABCCDDEEEEEBAAAAAAAAAA@?????>>>>>===========<;;;;;;;;;;:999:;;<===>??AAACCCEEEMLN9 [;roFrqBoiJoiIkc<]X?lhSXKrn=jb?icIkjPnnOonGjhGspF~yLLKF}EwtSrqRqpRqpSqqUqqUppVppUooTnnRllRkkWkhWkiWkiWljYmkWnlUmkTnkQnkPnkNliWjmRjkKljLxp[yoZRNEQVW"O`````^^b`_b[[ZYYXWWUUUWWWUUTSSRQQMMMMKKKIIIIHHHHGFEEEECA@???>=;;;;99999999999;;;;;;;;;;;;;;;<=>>>>@AAACCCEEFGGHIIIJKKLMMMOPPRRRUUUWWVUWWWWYYY[Z`nh[SSSWZZZZ\WUSPA_WUaupKup@qmBolOljPliQmjRmjRomNplKplInjGniIlhJlhLkkQmmTppSooTmnVooVopVopTooTooRpoIvrI{wK~JONH}xCnkFihIjiMlkGfbAgbCheSuqQK~xEnhGXWIidGmhHrnCvv=tt7qo9soHrn^ro^\\I.16 IHGGGEEDCCBAA====;;;999999999999999<==========>>>>>>?????AAAAAAAAAAABBAA@@@@?>>:7731/.+( % $          # ( .148:ABCCDDEEEEEBAAAAAAAAAA@?????>>>>>===========<;;;;;;;;;;:999:;;<===>??AAACCCEDJIJIA5/%%jroczvRupFok_XwvSto_xsXlg6NJ=fcR^W}Crj8d]=`_KkjMmlEfeEnlEzuNPROK|QutQutPsrQrqRppUqqVqqUppUooSmmRmlRliRliTmjTljVmkUnlUnlSnkQnkOmjOljXopQjjSqoSwpcwotbaW*+TRW"QZZZZZYYZ]WW[[ZYYXWWUUUWWWUUTSSRQQMMMMKKKIIIIHHHHGFEEEECA@???>=;;;;99999999999;;;;;;;;;;;;;;;<=>>>>@AAACCCEEFGGHIIIJKKLMMMOPPRRRUUUWWVUWWWWYYY[[]gdZURPTXYXX[VUTRO'&{ljmyuStpDmjLtrNkhOliPliRnkSpmPplMplJnjInjJlhKlhLkkOllQmmQnmRmmWqqWrrUppSqpTqrRsrIxtPVSOPI{wAkhEhgNonRrp>`]9b]DnjZ}RGysFkfGOOQgeTolZzwQxyKuuHtrKwt^|y_ig/&&/FFJGGGEEDCCBAA====;;;999999999999999<==========>>>>>>?????AAAAAAAAAAABBAA@@@@?>>:77420.,) & %         # ( .148:?@AABBCCCCCAAAAAAAAAAA@?????>>>>>===========<;;;;;;;;;;977999;;;==>???@AABCCCDHGFP@/ bKJ~trvvtkpoklm|uv~|xxvhSS* EdcI{yM]O}BojHfeKjiMlkHgfIjiMvsTSOIEK{J|zJwvKsrMooQpqSpqRnoRnoPmnLmmDqkFojJojNnjPmjSnkTolSnkQnkOmjOnkTstNki\roamizyu=BT k_VQ\\\\\\ZV[][[ZYYYXWWUUUUUUSSRQQQQPMMMKKJIIHHHGGGGEEECCCC@??>>=;;:9999999999999;;;;;;;;;;;:99;;;===>>?@AABCCDEEEGHHIIIKKKMMNOPPPPSSSUUUUUVWWYYYYZah`\[Z[^bcbaa]]]^K l@@llgml]ppNihSkiRliOliNnkQpmQolQnkPmjNmjKmiJmjKmlLlkLlkNmlQmmSqpQqpPpoMsqPwuOzxB{KSQLNHwtCjhFgfOonQpp:]]>ljNZGLz=UQ2n_`ousmpqqyyktsltrww\@AAQRSFEFEECCCAAAA===;;:9987799999999999<==========>>>>>>?????AAAAAAAAAAABBAA@@@@?>><97641/.+ ( %         # ( .148:?@AABBCCCCCAAAAAAAAAAA@?????>>>>>===========<;;;;;;;;;;977999;;;==>???@AABCCCAJHP> K=2;52pur9BA%%'%%'($3(%2! CcbEvuKaZU}ZvvOlkNlkLkjGihJtrP~LHGIURP}{OutOooRppSopRmnQlmPlmNnmHunIrmLpkPokQnkSolSnkSnkQnkPnkLkiOmnVtr\so3B>6$#X"&ao^Y]_____^^\\a`[ZYYYXWWUUUUUUSSRQQQQPMMMKKJIIHHHGGGGEEECCCC@??>>=;;:9999999999999;;;;;;;;;;;:99;;;===>>?@AABCCDEEEGHHIIIKKKMMNOPPPPSSSUUUUUVWWYYYYZad[]_]_bfgfed`a`bUC;+*9A@]tsWrrTliSmjPmjNmjOolPmjPmjPnkOnkNokMpmOqpOnmNmlQonUppSooQnmRppQvtW|zXKMNJGF~yBrnCkiFfeMkjOmlRtuX^Y@}F{s@YU$/$%*(')'(.0''>>>>>?????AAAAAAAAAAABBAA@@@@?>><:76430.+ ( % !         # ( .148:?@AABBCCCCCAAAAAAAAAAA?>>>>>=====<<<<<<<<<<<;::::::::::877889::;<=>>>??@AABCBFCGFEFA7<Z9:@ 084>C:E]\EyxFWVWPyvDnkFkiIjiJhhSnnYyxU}{NNLNNML~MzzNwxOuwNruNqsNqtLttGzrHwqJuoNsnQqmQnkRnkRnkOokMokMnkWqrVkkW^]4)):X^c^\[ZZZZZYY\XXVZYYYXXWVUTTTTTRRQPPPPOLLLKJIIHHHHFFFFDDDBBBB?>>==<::98888888888888:::::::::::988:::<<<==>?@@ABBCDDDFHHHHIJJKLLMNOOOORRRTTTTUUVWXYYYYZVUVVPWZ[[YXYVW[`]P98'*^]_cnoXomSnkOnjLnjNnkSljUmjWomWqnVspRurOwuNusMurNusQvuKusIvsK|xL~NOOPPNO{MusHljIkiCgeGmkIqoP}~TSK6{BxoHWS;C6' 5/<Z8;:D> JHFDGEEDCBBA@@@=<<;:99877788888888888;<<<<<<<<<<======>>>>>@AAAAAAAAAABBAA@@@@?>><;97520/,( ' "         # ( .148:?@AABBCCCCCAAAAAAAAAAA?>>>>>=====<;;;;;;;;;;:99999999998777899:;;=>>>???AAACCDBB>J!AAFHKJLNKVWGI]]Dzy@PRSM|yM|yIpnBdbNhhUgiZpqUtsO|yPKGKPRVSS}Sz}Tz|Tz}Q{|IwI{uKysMupRtoPnjQnkQnkNokLpkMol]wvTeeZXYI01Sad^^]XWWWWWYTZXWVYYYYXXWUUTSSSSQQQPPPONKKKKIIIHHHHEEEECCCAAAA>>><<;998777777777777799999999999877999;;<==>>??@AABCCCFHHHHIIJKKKLMOOOOQQQSSSSUUVWXYYYZUMRNRPUVVTRRUPRX_c\PM/3bSVdfh\trSolMnjJnjMliUljZnl]qo_sr]wtZzwS}zR|yS}zR}zQzxN}zORROLMPOM}zNurPppLjiKih>dbHqoP|zL~LKG3~AyoOYULSJCGKLJLUGEDDBFEECCBAA@??=<;;999777777777777777:;;;;;;;;;;======>>>>>@AAAAAAAAAABBAA@@@@?>><;:7520/,( ( "         # ( .148:>?@@AABBBBB@@@@@@@@@@@>>>>>>=====<;;;;;;;;;;:99999999997667789::;<=>>>>?@AABC@DACGFGJHJGKHETVCOaaAwv>?@@ABBBEGGHHHIIJKKLLNNNNPPPRRRSTTUVXXXXZUQTQXZYYXVTVWSTW\aVR ^DHc[\X`a\rpYtqOolIlhKlhTnjWpmZsp[vtZ{wV}yL{SSQRUXXUQNOQP~LyvJomKlkFgfEhgFomS}XRNQQ9EzpR\WHMJJCGOJPKJCBAEDDDCBBA@???<<;:998766666666677777:;;;;;;;;;;======>>>>>?@@@@@@@@@@ABAA@@@@?>><;98630/,) ( "          # ' .148:=>??@@AAAAA??????>>>>>===========<;;;;;;;;;;:9999988888655666999;;<====>?@AAABCEGIMPPOKIIICRWKP``?tr;ORK}L}MWWBmjEddOhhSkkRonTwuQ~CLMMQ[TREILU~V|VzVyuRroUspNkhPmjRpmPpm]vtcaf_^_eZZdLLJJOOV^dXXXXXXXXXXXXWWWUUUSSSSPPPOONMMLKKKKKIIHGGFEECCCCBA@>>>=;:99986655555555566666899999999996556669999;;;====??@AACEEGGGHHHJJKKKMMMOOOPPQSSSTUWWWWXWUWZ[\ZYWUUVWUTTWWTO fOQ\]]M\\Xji`zwTspJnjIlhPolRsoSvrQytQyJ~x?{MIHPUTLGFJVS|RxvSsrNlkHfe@b`EnlX\RXO}~TX?}KyqOVRETTMDIMQLD<9<AECCCCAA@>>>>;;;9986655555555566666:;;;;;;;;;;===========>>>>>>?????@AAAAAAA@??=<:9741/- + ) #           # ' .148:=>??@@AAAAA??????>>>>>===========<;;;;;;;;;;:9999988888655666999;;<====>?@AAABCEGILOONKIIICRWJFWWCzx:HG~DzwOOVYMxuIgfMggPggMkjOtrK|z?IMNRRX^VRQ[\Z~VzwVurUroTqnVspQqnRspYtr``e]]^bXXmVUh:>>=;:99986655555555566666899999999996556669999;;;====??@AACEEGGGHHHJJKKKMMMOOOPPQSSSTUWWWWXWUWY[\ZYWUUVWUTTW[Lm:=jRT[ZZSaaTgeZtqVvsPtpMplRqnWwtYzvSzvOzvMzQTPRVUQMHDEO~LzwIqoKlkIhgGfeJkjU|{^YOXM|}PT>>>;;;9986655555555566666:;;;;;;;;;;===========>>>>>>?????@AAAAAAA@??=<;9741/-+ ) #           # ( .148:=>??@@AAAAA?>>>>>=====<;;;;;;;;;;:99999999998777776666655555678999:;;===???AADFEFHJOONIGILFRVN:::LonB||OUR|zUSTUKDxsEpmGigIhgLjjMpoN|{RTROJQSVOHQPNL{NzuQwsStpXtqaywawt\lk_[^abb]VUu`_j@?GSV[[YRRRRRRRRRRRWWVUUTSSSRQOOOMMLKKJIIIIIIHHGEEEEAAAA@?>===;9877765543355555566666777777777774335557777999;;;;>>>??BEEEFGGHHHHIIIKKKMMMOOPQSSSSUVWWWY[]_`_[YXWWX[[XVRSHlABq_aRWVScbT``Xki_wt]zwQtpQvrPzuL}vK{MMNKRWSPOQQMM~UxvPrpIjjGhgEjhBmkIzvX[TM[~P{{T~[E}uPtl672KQONGHIJGECDGJLCCCAA@>>===999977655555555556666699999999999;;;;;;;;;;;======>>>>>@AAAAAAA@??=<<97510-+ + $ !          # ( .148:=>??@@AAAAA?>>>>>=====<;;;;;;;;;;:99999999998777776666655555678999:;;===???AADGEGIKPONHEHLFRVO*''Hgg>uvN|~V}~T{zS|QOPKJHyuGlkJihLggLjjMvuP~|QOLJIFRTIPJJKL~wQ{uUxtYvsh}dwuUbab]`]^_d_^p]\O&%JRW\ZWPPPPPPPPPPPWWVUUTSSSRQOOOMMLKKJIIIIIIHHGEEEEAAAA@?>===;9877765543355555566666777777777774335557777999;;;;>>>??BEEEFGGHHHHIIIKKKMMMOOPQSSSSUVWWWY]_aba\ZYYXY]]YVQMNS,-m`aT_\Ma^R^^Qcb]tr]{wUzuT|wL{uE{tIKJJJWSAIMPOJ~I|xTrqPonKjiHjiIpnGvsM~VUMKZz~PxyT{zZ~|BxoIkb$&JPRQHGGGEDEGJMOCCCAA@>>===999977655555555556666699999999999;;;;;;;;;;;======>>>>>@AAAAAAA@??=<;97520-+ , & "            # ( .148:==>>??@@@@@?>>>>>=====<;;;;;;;;;;:99999999998777776666654555678899:;;<==???@@DGCCDFLNNKILQKSVP-!#Kac@opNzzQvuQtsQxvP{NPMM~JxuGmkLkjPllPmmOqqOwuM|zMMOJFObYSNPRR}S|w^{a{xfwu`nlT\]`_a\\]rfgaCDDQUZ\XSTTTTTTTTTTTWWVUUTSSRRQNNNMLKJJJIIIIIIHHFEEDD@@@@??><<<;9877764432255555566666777777777774224447777899::;;=>>??BDDEFFGHHHHIIIJJJLMMNNPQRSSSUVVWWXZ\]^\XVUWXYZ\YVQNRFaGIkefW_^U^^S__\lk]sp_{x[}zS|xM~wUSRZ_bN>|LQRQL|yLvsSpoSooOlkMlkMrpNzwO~QQL~M~{TvyKvuPzxUzwBqjGb[#KPPOKJIHHHIJJKKCCBA@?>>===999877655545555556666699999999999;;;;;;;;;;;======>>>>>@AAAAAAA@??>=;:8620.- , ' "             $ ( .148:<<==>>?????>>>>>>=====<;;;;;;;;;;:99999999998777776666643555577799:;;;<=>???>CGA>>@GLOPNRYQUUR; &TY]HjjQyxSrnSpmQpoOutMyvN|IzEytBpmBigJjiSmmWooXmmRppMtrL|yMQOK|CtpejTUSSTV~ycfzx^gf^bb\]^Z_`dabpZ\N#%RVZ`]SKYYYYYYYYYYYWWVUUTSSQQQMMMMKJIIIIHIIIHHGEEDCC????>>=;;;;877665332114555556666677777777777311333666778999:;<=>>>ACCEEEGGGHHHHIIIIKLMMMOQQRSSUUUWWWWWXXVSQPUYZX\ZVQRQKP&(vZ]nae[`a[_`]cd^ghgxwa{y^}Y~]Y_mr_@wqEzSUTV}zTuuVqpUooWnoRjjNiiHmkKurIxuH|xO~{NzwKtqNqqFsqMyuRwrFlfM[V.LONLQMJILNOOLIGCBAA?>>====999776555435555556666699999999999;;;;;;;;;;;======>>>>>@AAAAAAA@???><;9720/- , ' "            $ ).148:<<==>>?????>>>>>>=====<;;;;;;;;;;:99999999998777776666643555577799:;;;<=>???>CGA??AHLOOMQWOSTP8 $LTWDhhQzyTtqSqnJkjHnlDqnEws@up>pl=ig>cbDcbMfeRiiTllNnmHpnFvsG{KPF{v0a\U|m[YSO{N~x[|`~z[omWaa]aa_`a`delghQ;=@UVX^]TLXXXXXXXXXXXWWVUUTSSQQQMMMMKJIIIIHIIIHHGEEDCC????>>=;;;;877665332114555556666677777777777311333666778999:;<=>>>ACCEEEGGGHHHHIIIIKLMMMOQQRSSUUUWWWWXYYWTRQUYZX\ZVQSROBU;=thj\bc^bcYaaYccbsr`{ybY|V}Qy^nhFuq)_Z?ztPOM{OvtPrqRpoUooSkkMeeHaa?baAjg@nkBtpJxuGsp@ifIkkDqoKwtQuqDjdHXS-KOPMNLJIKMNMJHFCBAA?>>====999776555435555556666699999999999;;;;;;;;;;;======>>>>>@AAAAAAA@??@?<;:830/- - ( " !            ! %).148:<<==>>?????>>>>>>=====<;;;;;;;;;;:9999999999766666555554335557779999;;<=>????ACAABELNNJFHLEFFD<$'RWYHjjHxuMsmMniHhhGhfHhfPmmNkkMhhLfeF_^F[\I\]MbbPliMnjGpkCsmExrNz\UurOca`kk}xwl}|o~apo[ddcdfhdficfhcfq]_F QZQNT]YSRRRRRRRRRRRWVUUSSSQQQQMMMKKJIIHHHIIIHHGEEDCC???>>=;;:9966665431111333333444446666666666631112346666777999<<=>>ACCEEEGGGHHHHHIIIKKKMMOQQQRSSTUUWVSWXWUQPRX]]T[^\VU\ZVP!wX\`efgegdacgbekkmirsn}|k~|vr{yVklFfdNxuR~N|yMvtPrqTnmWlmQmmNeeK]_L\^I\]G``HffJmlNpnJjhDbaLhgCnjIupPsmIjdOVR2OJLJCCDFHHEB><:AAAA?>>====999776554333333334444489999999999;;;;;;;;;;;======>>>>>@AAAAAAA@??@@?;:8530.- ' # #            ! %).148:<;<=>>?????>>>>>>=====<;;;;;;;;;;:9999999999766666555554335557779999;;<=>????ACAABEMOOIDFJCCCC<$(X[^LllAtpJoiJjdIggEcaEa`PiiPggLbbLbbG]]EXYIZ\NbbPkhNokGql@qj?skHyrU}xPljWkj7CC167@=?257LVVo}}ats_srWhg[gggjlgehlgkoorNV\OKR^[TPPPPPPPPPPPWVUUSSSQQQQMMMKKJIIHHHIIIIIHFFEDD???>?=;;:9966665431111333333444446666666666631112346666777999=<=??BDDFFFHHHIIHHHIIIKKKMMOQQQRSSTUUWVSWXWUPORX_^S[_^WTZaVKY:@dpqgkmfdhkhkefi]hi^oo`vulCSR+56>=C*6:4KMLnnJqpGwtFtqJroNonTlmXlmLkjH__GXZMZ\N]^I^^IccIhfHgfFcbGaaLefAlfGslOslMkeW]Z6VGGFAABFHGD@<86AAAA?>>====999776554333333334444489999999999;;;;;;;;;;;======>>>>>@AAAAAAA@??@@?<:8530.- & " #            " '*.248:>?@????????>>>>>>=====;::::::::::98888888888666666555554334556778899::;<>>>>?@BBBCDIJKHFHKGGF@?#%U\[DliEonEmlCjiDhi@ce>ccDhiHijAaaB__C]^D[\H\]K``LgdLmjLnlHmj@lhElhLpkNojk\]: !/2.A''R;;cQP{mkzlj|ompo~nm{ffa=@J!KWYTRUZYVSSSSSSSSSSSVVUTSRRQPPPLLLKJIIHHHHGGGFFECCBAA>>==<;:998855554432222444444555556666666666642223345555666778::;<<>@@BBBDDDFFGHHHHIJKKLLNOOPQQRSSTUUTVWVUSSTWZZVY[ZWUW\UQN"aGHefnoooziixkjvkiZOMP==<&&*2,7%%bb_IqjImjGlkEmmSmmRkjOhfNggH^^GZ[I[]G^_C_`CceChhBfhBceEceHhjElkJpoNonDjfZ^\=!!JLJEEEEGGFDB@>=AAA@?>>==<<888776544324444445555578888888888:::::::::::======>>>>>???@@@AAA@@?><<:86410/* & $ "          # ( +.2479?CDA@@??>>>===========:99999999998777776666655555555555433345566668999:;====>?ACCCCDEFGGIKJIG<A"#Q[X:leMnnDorAnrCloAjn>jl?lmEor>fg>abA_`E__G^_H__IdaJiiQllRjkEihIecJjeHofk8:T\ZYUDc**~LJwLIsLImLHmOJhC?S YZWWXXWVWWVVVVVVVVVVVUUTSSQPPOOOKKKKIHHGGGGEEEBBA??>===<;;89977774333333333355555555555555555555554333333333345555668988:<<===@@@CBEGGGGHIJKKKLMMNOOQQQSSTUUUUUVVUUTUWWVVWWWVWYTR{A@OMtLImJFqMItLIP#!@TYZ[PhE@JrfQjgMghAhkWkmQlhIgbPdeL_`H]^G]_C_`@bdBgjCmoEkpDhmEhlGnpLnsPouOkr>>==<;;77776653321555555555556666667777799999999999<=============>>>AAAAA><;;9864311- ( % $ !         # ( +.2579?BCA@@??>>>===========:99999999998777776666655555555555433345566668999:;====>?ACCCCEFGGGIKIIG=B"#S\Y:keMqqIuvGtwJsvHruFstGtuKvxGpoEijDddFaaI`aJbaJebJjiQnmRnnHnlMkhKlg@e\K PXXRTMME;953:XWWWWWWWWWWUUUUUUUUUUUUUTSSQPPOOOKKKKIHHGGGGEEECCB@@?>>=<;;99977774333333333355555555555555555555554333333333345555678999;==>>>AAACCEGGGGHIJKKKLMMNOOQQQSSTUUUUUUUUUUVWWWWWWWWWXUJNB;85?AGPRVUNJ-(HncOjgLgiBikUkmSolNkgLbbJ_`H]^I`bGcdFikIprJuvKswKptKosKtuNswPsxNnr>>==<;;77776653321555555555556666667777799999999999<=============>>>AAAAA><;;9864311, ( & $ !          # ( ,/2589?AAA@@??>>>===========:99999999998777776666655555555555313333555668999:;;<===?AABCCEEEGGIKIKI@F##V]Z8icMtsL|}I|~L}H}~G~}G~HH{yGtsClkEedHddJdcJebIjiQooTqqKsqIjgJidOleHW[XVXZLPROMLOWWWWWWWWWWWSSSSSSSSSSSUTSSSQPPOOOKKKKIHHGGFEEEECCB@@?>>;;;;99977774333333333355555555555555555555554333333333333555678999;==>>>AAAACDEGGGHIJKKKLMMMNOPQQQSSSSSSSSSSSSTWWWWWWWWWVZ\UOOLEIRVXYVVN>PndJfcJijIqsZstTpmLjeGaaF``E``EdeDkjFttI{{JJ}Jz}Kz|F}}I{}Ky|Iqt8heUWV?DMIFGGFEEDCCAAA@?>>===;;;;77766533211555555555556666667777799999999999<=============>>>AA@?A><;;9865311, ) ) $ !             $ ( ,/358:?AAA@@??>>>===========:99999999998777776666655555555555313333555668999:;;<===?AABCCEEEGGIKIKI?F$%V^[9jdQwvPNSPQPNRP}|JsrJjiKffJddKebJkjRqpWssPxvGgeDc^RqiJPUXXW[RPOMKKMXWWWWWWWWWWSSSSSSSSSSSUTSSSQPPOOOKKKKIHHGGFEEEECCB@@?>>;;;;99977774333333333355555555555555555555554333333333333555678999;==>>>AAAACDEGGGHIJKKKLMMMNOPQQQSSSSSSSSSSSSTWWWWWWWWWWY[USRINMQUWYVXK@RrgLheOopPxz^wwTpmKidHaaHbbHcdJhiLrrO}|QRRSTNPP}Ksv7gdWYX@DMJEGGFEEDCCAAA@?>>===;;;;77766533211555555555556666667777799999999999<=============>>>AA@?A><;;9875322-)) $ "            ! % ),0368:>@AA???>>>>===========:999999999976666655555444444444442123335555678899:;;<==?AAABCDDEFFHJJLKDL#%WZX9keMzxOMPPOLJNOL{yKpnIhhIedJfcIkjQqpWvvQ{yW{xXupYmgO!PVZYUVYUTSRRSVVVVVVVVVVVSSSSSSSSSSSTSSSRPPOOOOKKKJIHGGFEEDDDCBA@?>>>;;;:98876663222222222244444444444444444444443222222222223455577899;====>@@AABCEFGGGIIJKKKLMMNOPQQQRRSSSSSSSSSSTVVVVVVVVVVW\XWUQQNQVXXUXLH$ Vkc[vsX{{Oz{XssQolMlgHcdIfeHhhIonK|yLMNNPQJMMGvx4heXYYE DLJDGFEEDCCBAAA?>>>===;;::76666533211444444444445555556666689999999999<===============>@@@?@=<;;9875421.* ) & #            ! & ),1368:=@AA?>?>>>>===========:9999999999766666555554333333333321133355556777999;;;==?AAABCCDEEFHIKMLGM"RSQ;ngJ|zOMMNLIGKML}KtrHjiGfdJfcIkjPqpVwvQ|ybkJWTHRWZXWTYZZZZZYUUUUUUUUUUUSSSSSSSSSSSSSSSQPPOOOOKKKIIHGGFEECCCCAA@>>>>;;;998776662111111111133333333333333333333332111111111123355577899;====>?@AAACEEGGGIIIKKKKMMNOPQQQQRSSSSSSSSSSTUUUUUUUUUUU\[YVXSSTY]YQWODM]Ul`N{|SopPnkNmiJgfJjiHljHsrJ}JIILNNGKLFxz3jgTUUG !CKKDGFEECCCAAAA>>>>===;;:976666533211333333333335555556666689999999999<===============>?@@??=<;;9875421/, ) ' #           " & *.1469:>@AA?>?>>>>===========:9999999999766666555554333333333321133355556777999;;;==?AAABCCDEEFHIKMMHIHIH=qjK~|OOONLIILML}LtrJjiIffKheIkjNpoSvtN|y\t8B?@ TUSQWTTWXYYYXUUUUUUUUUUUSSSSSSSSSSSSSSSQPPOOOOKKKIIHGGFEECCCCAA@>>>>;;;998776662111111111133333333333333333333332111111111123355577899;====>?@AAACEEGGGIIIKKKKMMNOPQQQQRSSSSSSSSSSTUUUUUUUUUUSVWWSUWXUX\YOUS:DNHu^O}~TrsPnkKjfMiiMkkIlkHsrJ~KJILNOIMNH{}8liKKKFDJJDGFEECCCAAAA>>>>===;;:976666533211333333333335555556666689999999999<===============>?@@??=<;;9885422/, +' # !            ! $ ' ,/168;<>@A?>>>>=<<;;;;;;;;;;;8777777777766666655555433333333331/1123345556777899:;;=>??@AACCCEEFHKNOMIA?>=smH}MMMLHFFJKH}zJrpKjiLggLifIjiKonLusH|xT}|DA?HYUJKSRQPRSSSSUUUUUUUUUUUSSSSSSSSSSSSSRQQPOOMMMIIIIHHGEEEECCCAA@>>===9999777666621111111111333333333333333333333321111111111233345677779;;===???AACEEEFGHIIIIJKKKLMPPPPQRSSSSSSSSSSTUUUUUUUUUVRPPTQQVWQPRQQRR: JGCwTJ}~UvvNokHidPijMkkGkjEqpF|GEEFJMFKLF}~>GHFECEEDCCBAA???>====<;99996666443110/333333333335555556666677777777777:;;;;;;;;;;;;;===?????=<;;9886432/-, ' % "          ! $ ' ,/168:<>@A?>>>>=<<;;;;;;;;;;;8777777777766666655555433333333331/1123345556777899:;;=>??@AACCCEEFHKNOMD976?uoIMMJJGEFJIEzwHqnKkjMihMjfIjiInlKtrEyuU~|DC@FPSPSRPRQTUUUUUUUUUUUUUUUSSSSSSSSSSSSSRQQPOOMMMIIIIHHGEEEECCCAA@>>===9999777666621111111111333333333333333333333321111111111233345677779;;===???AACEEEFGHIIIIJKKKLMPPPPQRSSSSSSSSSSTUUUUUUUUUUSTLRUYUSTRPNUSO?JHDzR~EvvPrqOqlKmgPiiMkkFjiCnmC}yFEEFIMAHKG~>so632AJEBEEEDCCBAA???>====<;99996666443110/333333333335555556666677777777777:;;;;;;;;;;;;;===?????=<;;9886432/-, ( % "         ! # % *-0357;=>??>===<<;:;;;;;;;;;;;7666666666654444444444322222222220/00123344556667799:;<=>>?@@BBCDDEFJLMLJ>:9?uoD~Yn{VNLLMKLywHkiQklOffLieLmlKrpKxvG|Q|\GHF RSQQPPQPQQQQRTTTTTTTTTTTRRRRRRRRRRRQQQPPOONMLLIIIHHGFEDDDBBBA@?>====9998766554410000000000222222222222222222222210000000000122334566668:;<<=>>>??BDDEEFGHHHHIJKKKLNOOOPQRRRRRRRRRRSTTTTTTTTTSRNMPRUSRROMNPSQ? YFD~T?wvPxvSwrOoiQhhNjjHihGmmG{xEEIIP[yn^H{}Gwu@68DICBDDDCCBAA@???====<;:9988554422200//222222222224444444444466666666666:;;;;;;;;;;::;<<=>>>>>==<<:9754330/- +' #          " $ & +.1457;=>>>>===;;;9;;;;;;;;;;;7666665555543333333333211111111110///0133335555666999;;<>>>?@ABCCCDEJKLLI?:9AxrIlw~nUHIHG}zGqpGhgNfgOeeJhdMnmLsrK{wH~TaEHJ PTPOOOOPOOOOQSSSSSSSSSSSQQQQQQQQQQQPPPPOOOMMLKIIIHHGEEDCCAAAA??>====999776554330//////////11111111111111111111110//////////011333555668:;;<==>>>>ACCEEEGGGHHHIKKKKMNOOOPQQQQQQQQQQRSSSSSSSSSSQINOPRSRPMKNPONGgNM|WIS|{NrnQqkRiiKffBaaAggDus?|zGGIWp}sOHvuD8:FHBBCCCCCAAA????====;:999875433111////111111111113333333333355555566666:;;;;;;;;;;:9;;<==>>>>==<<:97544310.,($ !           " % ' +.2479;>>>>>==<;;:9:::::::::::7666665555543333333333211111111110.//0023334555666899::<>>>??ABBCCDEIJKKH @:9B{sLvkapiMII}GwuCiiGeeG^_MccJhdLmlJsqJ|xGWpJ*,PPRSRRRRQQPPPQSSSSSSSSSSSQQQQQQQQQQQPPPPOONMLLKIIIHGGEDDCBAAA@??>==<<888776544330//////////11111111111111111111110//////////001233455668::;<<=>>>>@BCDEEFGGHHHIJJKKLMNNOPQQQQQQQQQQRSSSSSSSSSSRNPQRTTSRPNPROMNV77kTNR|zIniPpkQiiIccB__?bcAnl@vvKDOordm}VGvtB68GHABDCCCBAA@????==<<::988874432110///.1111111111133333333333555555666669:::::::::::9:;<<=>>>>==<<:9754431//,(% !            " & (+/358:<@>>>==<;;:9999999999999766666555554333333333321111111111/-////1233345555678999;==>>>AAACCDEHGHJNE?>BzsEsb_ebTS~}ImmHefJaaJ\]K__JhdKnlIvsH{HXSje4 TVOXXXXUTRQQQQSSSSSSSSSSSPPPPPPPPPPPPPPOONMMKKKHHHHFFECCBAAAA??>==<;;777766533330//////////11111111111111111111110////////////112334555799;;;===>>?ACCDEEFGGGHIIIJKKLMMOOPPPPPPPPPPQSSSSSSSSSSSTSTUUUUUSTQNRRN3 VroSGO}zMtoLmhMddLddKddEbcBddGpqJyzN_i_ayVIyvE68HH@AECCBAA@??>>>=<;;9997777333110///.-11111111111333333333335555556666689999999999999;;;===>>==<<:976544100,)' !           # & (,/359;=@>>>==<;;:9999999999999766666555554333333333321111111111/-////1233345555678999;==>>>AAACCDEHGHJNHAA@xqDp^ohcP|{>ccDacF__QdeMaaJgdLomKxuL~L_Rie: OPRWWWWUTRQQQQSSSSSSSSSSSPPPPPPPPPPPPPPOONMMKKKHHHHFFECCBAAAA??>==<;;777766533330//////////11111111111111111111110////////////112334555799;;;===>>?ACCDEEFGGGHIIIJKKLMMOOPPPPPPPPPPQSSSSSSSSSSSSSTUUUUUSSPLNQT7 Yur_NTU|wJlfLcdKccHbb>[\8[[>iiBrsiftnsJ}IyvG9:HH@AECCBAA@??>>>=<;;9997777333110///.-11111111111333333333335555556666689999999999999;;;===>>==<<:986544210,*'" !             % ' )/038:<>@>===<;;99999999999999976666655555211111111110//////////.--///1113333555577799;====>?@AABDEHEEGH E>>>xqJ|yQz}pxawUqrI`bF[\J\]I^]JhdMpnL{wLLZWjhKWORWWWWUUUTTTSQQQQQQQQQQQPPPPPPPPPPPOOOOMMMKKKKHHHFFECCBAA????>>=;;;;77766533211.----------//////////////////////.----------.//111334557999:;;<===?AACCCEEEGGGHIIJKKLMMMNPPPPPPPPPPPQQQQQQQQQQSVVVUSSTUVVVWPQYJWtp\OTQ{vImhJhhGaaE]^DY\KdePmp]|xV}~wK@vsC68IG?CICBAA???>>>>;;;;9997776333110//.--///////////1111111111145555566666899999999999999:;;======<<:986554420/+'$ !             % ( ).048;=>A====<;;99999999999999976666655555211111111110//////////.--///1113333555577799;====>?@AABDEHEDGG D??>wpHprwMtvy~sPfhL`aGYZMbbIfcMomL{xNN[[nkC\RQXXXXUVVUUTSQQQQQQQQQQQPPPPPPPPPPPOOOOMMMKKKKHHHFFECCBAA????>>=;;;;77766533211.----------//////////////////////.----------.//111334557999:;;<===?AACCCEEEGGGHIIJKKLMMMNPPPPPPPPPPPQQQQQQQQQQSWXWVSSTVXXVPOUXJ]yvZJWMvrImhJihEa`D\\EY\Tjlo~ztRvzwxtD~AwuC79IG?CJCBAA???>>>>;;;;9997776333110//.--///////////1111111111145555566666899999999999999:;;======<<:997655531.+(% "               % ) *.048<?@A====<;:99989999999999965555544444211111111110//////////.--.//0112333455577799;====>?@AABDFHDBEKFAA>wp?zYp}Nru]x|\uwg}NbdCWXATUMbbEb_KmkKzwMN`^roHVOPTTTTSSTTTTSQQQQQQQQQQQPPPPPPPPPPPOOOOMMLKKKJHHGFFECBBAA????>>=;;;:77766533211.----------//////////////////////.----------.//011334457899::;<===?AABCCEEEFGGHIIJJKLLMMNPPPPPPPPPPPQQQQQQQQQQSVUTSQQRSUVTMOUWK ^{x_I[MwrFlfBecA^]?WX>RTThjjUpubStxlS={{A|xA9:GF?DLBBAA???>>>>;;;:9987776332100/..--///////////1111111111144444455555899999999999899::;======<<:997655541.+(% "               & ) ,/149<ABA>===<:999979999999999954444433333211111111110//////////.---.//011333355577799;====>?@AAACGIB>BME??@{t;zuOz|Ux|gbr~Ndi?RUXimaqu8LM@TUDZZB`[HjhHytIKZDTQWSMPOOOOQQRSSSSQQQQQQQQQQQPPPPPPPPPPPOOOOMLKKKJIHGFFFECAAAA????>>=;;:977766533211.----------//////////////////////.----------.///0133335679999;<===?AAABCEEEEGHHHIIIKKKMMNPPPPPPPPPPPQQQQQQQQQQRUSQPMMOPSTTQPQXRA\YXNWMyrEje:a_=\Z;SU98FE>EPAAAA???>>>>;;;998776663211///----///////////111111111113333334444489999999999879999;======<<:997655540/,(% "                & ) ,/159<ABA>===<:999979999999999954444433333211111111110//////////.---.//011333355577799;====>?@AAACGIB?DG A;;F|v>}ySLquCil;_bs]w{I]bG[^j|H\]H[]=TTA^\EhfGvrJMOR\VOPPPPQQRSSSSQQQQQQQQQQQPPPPPPPPPPPOOOOMLKKKJIHGFFFECAAAA????>>=;;:977766533211.----------//////////////////////.----------.///0133335679999;<===?AAABCEEEEGHHHIIIKKKMMNPPPPPPPPPPPQQQQQQQQQQRTSQPNNOPSTQKOPYT'$LPM~IsnFkf=a_77EE>ENAAAA???>>>>;;;998776663211///----///////////111111111113333334444489999999999879999;======<<:997655540/,(% "                " # *,.26;>>====<;;:9977775555555555543333333333211111111110/////.....,++,,,///11233345677779;;<==>>>@@@ACCEI>J@>Ssp8yuJIz{>nfCgbPjfUgeN^]EZXNgfXsss====<;999966665553331111//.,,+++-.....////////////////,++++++++++-01111345557999:;====>???AAACCCEEGIIIJKKLMMONMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMNLGURMM*xKK{yEikJfjLbd>QTFVY{_qrMabF\]F`aLddQhfQigQlmCvsG}@|u\roE77;FCEHAA@??>==;;;99997665555111//.,,+++....../////1111111111133333333333555555555556777899;;;=<;;;;;998776541/.*( $ # "           " # *,.39<>>====<;;:9977775555555555543333333333211111111110/////.....,++,,,///11233345677779;;<==>>>@@@BCCEKC+"Ca^BGBuuCsjGjcMe`TcaP_]H\Y@YXHeeKffG]]}_7^aEflWuyYm*UVSNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMONMMKKKIIIIGGGGEDCCCBA>====<;999966665553331111//.,,+++-.....////////////////,++++++++++-01111345557999:;====>???AAACCCEEGIIIJKKLMMONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLGVRLK2# |GHvtJnqB]bsAPSXgjWijG[[F]^FaaJa^OdbVjgWnpJ}yG}DwFXU/! >FCEGAA@??>==;;;99997665555111//.,,+++....../////1111111111133333333333555555555556777899;;;=<;;;;;998876542/.*( & # #               " % * ,/3:=>>===<;;;:997777555555555554333333333310000000000/.....-----+++,,,///01123334666779;;;<==>>?@?=@ADKF!F\ZHD~G}}HyqFmjIhfMedJ__I`_;VU;YY0LL:RR[x{>_c=]bOosWi{v1XRMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMKKKIIIIGGGFEDCCBAA====<;;999966655443221100//.,,+++,-----................,++++++++++-/0111334557999:;<<===>??AAACCCEEGIIIJKKLMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLGSPKM7!tL?kiCaeAX^[xx8LO8ILDTVIY[I]_H`aGbbIgfLlkNvuE|?yFzATQ#>ECEHA@??>==<;;;99997665544100//.,,+++------.....0000000000023333333333555555555556777899;;;<;;;;;;9998865510.*)& # #              # & * ,05;>>>===;;;;:99777755555555555433333333330//////////.-----,,,,,+++,,,////1113333666779;;;<==>>>@>9=?CKH'M\\H|GONxJsqIlkJggGaaD^^=XX;XXWss\vwyKdhVrwlPpsIwtjws8WQKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKKIIIIGGGEEDCCBAA====;;;99996665543321110///.,,+++,,,,,,----------------,++++++++++-//111334557999:;;<===>??AAACCCEEGIIIJKKLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLGQOKO9lytB{tMwulVjq@eet`y{`qu@NQIVYL\_J`bGdfHkkHqrK{D@}DzFZW"<DCEHA@??>==;;;;9999766554310///.,,+++,,,,,,-----///////////23333333333555555555556777899;;;;;;;;;;9998865510.*)& # #           " % ( * -27<>>>===;;;;:99777755555555555433333333330//////////.-----,,,,,+++,,,////1113333666779;;;<==>>>@>;?ADKH,M[ZJ}KNP~N{xMtrKllHdd@[[?ZZB]]zQimxfIvseok:TQLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKKIIIIGGGEEDCCBAA====;;;99996665543321110///.,,+++,,,,,,----------------,++++++++++-//111334557999:;;<===>??AAACCCEEGIIIJKKLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLHPNKP=! gqmAwplOqqHY\EVYI]`IceIjkLqqNyxNKLFxGWT%>DCEHA@??>==;;;;9999766554310///.,,+++,,,,,,-----///////////23333333333555555555556777899;;;;;;;;;;:998876520/+)& $ $             ! $ ' * -/4:>?>===;;;;9987766643333333333211111111110//////////.-----,,,,,+++++,-.///0113336666789;;<==>>>>>?GGGHA1VZYQ}zFEGGF~{BtrAihEee?YY;SS]vvMjjezWv{tVRQ@XMHIMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLKKJIIHHHGFEECCCAAAA===;;:9987765555433211////.-,++++,,,,,,----------------,++++++++++-///0112335677999;;;==>???@AABCCCEHHIIIKKKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKJJSDfcasv_{UrrYqsSln4LN@]_?adBikCssF{{HCBKR~vPPO-BCACE????>==;;:999977655433////--,++++,,,,,,-----///////////111111111113333333333356677799:;;;;;;;;::99887542/+)(& $                ! % (* .05;>?>===;;;;9987766643333333333211111111110//////////.-----,,,,,+++++,-.///0113336666789;;<==>>>>>?GGGH=.RXWM|yCHIMNJ{xJqpPnoC]];SS9SSZxwC``cw}fwQ|y@=<9ZLFIMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLKKJIIHHHGFEECCCAAAA===;;:9987765555433211////.-,++++,,,,,,----------------,++++++++++-///0112335677999;;;==>???@AABCCCEHHIIIKKKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKJJU9HFDP~xpgXstF`aRkm8RTAY[D_bEfhKqsL{{OOE;@zTzOQP-ACADF????>==;;:999977655433////--,++++,,,,,,-----///////////111111111113333333333356677799:;;;;;;;;;::99985421,*(& % !               ! $ ( +- 037<>>>=<;::::9877666643333333333211111111110//////////-,,,,,+++++***+++--.///012235566679::;<=====?BGFEEE0H;;]spZOFIHFI{yLqpFbbE[\?XX2POFeea~fQ}y9,,?ZHEILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKJIIHHHHFEEDCBBA@@@=<<;:99877755554332110///.-,++***++++++,,,,,,,,,,,,,,,,+**********,..//011234577889::;<=>>>??@AABCCEHHHHIJJKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLJIIVA=33^la=WX:QT>SU9SVBegCppE|}FHIKOX~btoK78:ID?>??>>>><;::9988876654333///.-,++***++++++,,,,,///////////1111111111133333333333566677899:::;;;;;;::99997531-+)' & "                ! & * -/149<>>>=<:99999877666643333333333211111111110//////////-,,,,,+++++*))+++---////1123456667999:;=====AFHGECF8.HURcS@DDDLMtsLghI\]G^^5RQAaamuyW;)*IXFIIKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKIIIHHHHEEECCBAA@??=<;;99977775555333111////--,++*))++++++,,,,,,,,,,,,,,,,*))))))))))+--///112335777899:;;=>>>???AAACCEHHHHIIJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKMIHIWDC55axzk@Y\AVYDWZ:UZDkmDxxCDDDJZdLQN6FMF>;;?>>>><:999977776653333///--,++*))++++++,,,,,///////////111111111113333333333356667779999:;;;;;;::99998531.,)' ' #                 # ( +-/47:<>>><;98999887665553222222222210000000000/..........,,,,,,+++++*()*++,--..//0012445567899::<====?@CBA@@C+ /++Na__TKKIPR|{NmmDZ[B[ZA_^;^^b|SbD01KUFKJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJIIHHGGGDDDCBBA@???<<;:99877775544222000/...-,,+**)(++++++,,,,,,,,,,,,,,,,*))))))))))+--.//012224667789::;<=>>>>?@AABBDGGGHHIJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKNHGHUAK==]S{[CbcBZ]EWZH`dHmoL~}KKJL^`H]Y/)(3JKD><=>>>>=;:999877766543322...-,,+**)(++++++,,,,,...........000000000002222222222245566678999:;;;;;;;:99::8642/-*(( #                # ( ,../ 8:;=>>=;:8799977655433111111111110//////////-,,,,,,,,,,+++++++++++)'))*++,,,,.///0133335679999;<===;68888?HM@4```jYSJKL}GpnDba@`_>^]Bkj?wwXaIvN25HUFHJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJIIHGGEEECCCCAA@>>>>;;;998776665433111////,,,,+++)))'*+++++++++++++++++++++*))))))))))+---.//0111355666999;;<====>?@AAACEEFGGIIIKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLQGFGQBL<\]K]`OadIllOMPQWz~]^Z#9NJJA==>====;:9998766655433211,,,,+++))('+++++++++++,,,,,,,,,,,.//////////1111111111123355577899:;;;;;<<;::;;77530.,+)$               # ( +-/28:;=>>=;:8799977655433111111111110//////////-,,,,,,,,,,+++++++++++)'))*++,,,,.///0133335679999;<===;79999<FKB* %$9_^`PMFAuqDkjHgfCbaFfeIooLYW\sK03HUFHJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJIIHGGEEECCCCAA@>>>>;;;998776665433111////,,,,+++)))'*+++++++++++++++++++++*))))))))))+---.//0111355666999;;<====>?@AAACEEFGGIIIKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLQGFGQCM=====;:9998766655433211,,,,+++))('+++++++++++,,,,,,,,,,,.//////////1111111111123355577899:;;;;;<<;::;;87530.-+)$               $ & ) -.27:<==>>=;97677776653333111111111110//////////,++++++++++*))))))))))('')))+++,,,-////123335777899:;;=<97899<FMT;/- MRPwcQ}Ny;gc;`_=cbGonEutGULYVop= KOHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHGEEEECCCAA@>>===99997776666333110////-,,,++*))(''))))))))))))))))))))))(''''''''''*,,---//01135555678999:;;===???AACEEEFGHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJPGGIOI8 !XurTDNBDwvAjj?^_A`_ChgOyv\s{KOO@%#1:?BH@=>AC=<;;99977775555333110/,,,++*))('')))))))))))+++++++++++.//////////1111111111123334567777:;;;;;<;;;:;;:8531/.+*& " "               % ( * /04;;<==>>=;97677776653333111111111110//////////,++++++++++*))))))))))('')))+++,,,-////123335777899:;;=<86788>IOXK@- *"!9IFVzvUDyr5fa;ec>===99997776666333110////-,,,++*))(''))))))))))))))))))))))(''''''''''*,,---//01135555678999:;;===???AACEEEFGHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJPGGINH*F`^QEQIF||ErrBffCedAigFpmdcwu>CC)<GCCEC=<>BF=<;;99977775555333110/,,,++*))('')))))))))))+++++++++++.//////////1111111111123334567777:;;;;;;;;;;<;;86421.+,($ $                " & ) , 247<<<==>>=:9757777664332200000000000/..........,++++++++++*))))))))))(''())*++,,,-.///122335777899:;;<<<9;<<<EKMGA?+7DASmhTrnEecHkj@kjJyxNINP`Uce0 LJIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHGFEDDDCCBA@?>>===99987776665333110///.-,,,++*)((''))))))))))))))))))))))(''''''''''*,,---./00134555678899:;;<==???@@BDDEFFHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJNGGJMK/UgfRHRMKKzzHnmIihHfeYrpYif=;9#,@IFIB>=<>BD<<;;99977775554332110/,,,+**)(('')))))))))))+++++++++++...........0000000000012234467777:;;;;;;;;;;<=;86421/-,(% % "             ! $ ( * . 79;<===>>>=986467766533211///////////.----------,++++++++++*))))))))))('''())*+++,--///111334677899:;;;=A>@AA8;DE;>RD;)>40kjiXccPkkEqpI~ILKSibbg5 JEKIHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHFEECCCCBAA?>>====99977766654333110//.--++++*))''''))))))))))))))))))))))(''''''''''*,,,,--.//123555577799:;;;<=>????ACCDEEHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKFHKKQ5gmoVHLMMH}|DonGieSeckmk@0.2 IMHGLI<<9<>AC;;;;9997776555332110//++++)))'''')))))))))))+++++++++++-----------///////////01133366677:;;;;;;;;;;<=;964210.,)' ' $ !            ! " % )+ /8<;<===>>>=986467766533211///////////.----------,++++++++++*))))))))))('''())*+++,--///111334677899:;;;=@=?@@98DI<=KC>0IJIS`_RllJutKMIPPf[^b4 JFKIHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHFEECCCCBAA?>>====99977766654333110//.--++++*))''''))))))))))))))))))))))(''''''''''*,,,,--.//123555577799:;;;<=>????ACCDEEHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKFHKKQ/ `hiZJMMPG{zHqpJjgYkh?B@"@>HGJJA>?:<>AC;;;;9997776555332110//++++)))'''')))))))))))+++++++++++-----------///////////01133366677:;;;;;:;;;<==<965310.,*( ' % "            # % ' ,.1;==>===>>>=975467766533211///////////.----------,++++++++++*))))))))))'%'''')*+++,---.//0112466777999;;986<BD<6;G>C BEEOJ;XCGfhmUzzG~SNQPli]c?IBMJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIHHFEECCCAAAA?>>====999777665443211///----++++*(''''%()))))))))))))))))))))(''''''''''*,,,,--.///1335557779999;;<=>????ACCDEEHHHIIIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGKOMMBjcfaJOHMO`egiK35;A NC?BD>EA=>?=;9;;:998776665433321////++++*('''&%)))))))))))+++++++++++-----------///////////01133366677:;;;;;::;<<=>;:97530/-*)( % # !            # % & + .3;<=?===>??=975467766533211///////////.----------,++++++++++*))))))))))'%'''')*+++,---.//0112466777999;;964<CF99;F9=EGOTTA4 ;>====999777665443211///----++++*(''''%()))))))))))))))))))))(''''''''''*,,,,--.///1335557779999;;<=>????ACCDEEHHHIIIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGKPNSA936QPMEGRf68:3EQLC=<@?AA@??=:7;;:998776665433321////++++*('''&%)))))))))))+++++++++++-----------///////////01133366677;<<<<<::;<<=>;;97530/,*)( & # !          "$ % * 059=<=>==<=<<;876666665422210///////////-,,,,,,,,,,+**********)(((((((((('%&&''()**+,,,--./0012466667899:::98<@A;==B;>IHLJKH3.FKJn~qXJWU&HOEEHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIHHGFEDDCBBBA@?>>===99987766555332100/.---++**)('&&&%(((((((((((((((((((((('&&&'''((()+,,,,-./00024455678899::;<==>??@@ABCDDDGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGGKMETF+PWLQkd{xGFF3:IJDDD=@A>?@>><;::::987766664432210/...++**)('&&&%(((((((((((***********,,,,,,,,,,,.//////////0112225666688888999:;;=>=<;96420.,)) '$ "         $$ % .7<>>====<;;88977775555421111////////////,++++++++++*))))))))))(''''''''''&%%%&''())++++,,,///1135555678999:;<<=<?>>@ADJGEDDHFA'fJF||ybDNT}1QTH;DJHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGGGEEDCCCCAA@>>===99997765555333110..-,,+*))(''%%%%''''''''''''''''''''''&%%%&''))),+++,,,//01135555678999:;;===>>>@@@ACCCCEFGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGEGJK>QN8V~VMac}qLE?.NLF?BGIBA@??>==;;;99997665555333110..-,,+*))'''%%%%''''''''''')))))))))))+++++++++++-.....//////011113555544444578999<>>=<;97312-)) '$ "          ! " $ (09<=>====<;;99977775555421111////////////,++++++++++*))))))))))(''''''''''&%%%&''())++++,,,///1135555678999:;;<==>>>@@CHFEEEEBD-(242_UXVz0NRG=FKHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGGGEEDCCCCAA@>>===99997765555333110..-,,+*))(''%%%%''''''''''''''''''''''&%%%&'')))++++,,,//01135555678999:;;===>>>@@@ACCCCEFGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGEGJJ@OK3W|YV]/& >IHE?AEGAA@??>==;;;99997665555333110..-,,+*))'''%%%%''''''''''')))))))))))+++++++++++-.....//////011113555555555678999<>>=<;97411-))'$ "            " & & ) .4=?>>===;;;;9997777555332110//-----------,++++++++++*))))))))))(''''''''''&%%%&''()))*++,,,////123555678999:;;;;===>>?ACAABEHEF=9,."p||}gom:IMD@MRGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGGFEECCCCBAAA@>>===99997765543333110..-,,))))(''%%%%''''''''''''''''''''''&%%%&''))))*++,,,////123555678999:;;;<==>>>@AAABCCEEEGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGEHHG=HK?m|yzm|y5!6GW"JE<7;@CA???>==;;;;99997665543333110..-,,))))'''%%%%''''''''''')))))))))))+++++++++++,,,,,,-----.//1113345543555678999<>>=<;;8520.*(&%# " !           " & ' *07>?>>===;;;;9997777555332110//-----------,++++++++++*))))))))))(''''''''''&%%%&''()))*++,,,////123555678999:;;;;===>>?ACAABEHHG@:. "0/Uher|{9KMD@MRGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGGFEECCCCBAAA@>>===99997765543333110..-,,))))(''%%%%''''''''''''''''''''''&%%%&''))))*++,,,////123555678999:;;;<==>>>@AAABCCEEEGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGEHHG<PIE!p~Lfc&#)8DJKD<6:?BA???>==;;;;99997665543333110..-,,))))'''%%%%''''''''''')))))))))))+++++++++++,,,,,,-----.//1113345543555678999<>>=<;<9630/+(&%$# !           " & ) .38<>?>===<;;;:988766654432110///-----------,++++++++++*))))))))))(''''''''''%$$%%&''())*++++,..//0134455778999:;;;===>>>?@??AEHLIA6>F)8)*Q?@DJHCBNQFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHGGGGFEECCCBAAA@?>====9998765543322210/.-,,,)))('&&%$$$&'''''''''''''''''''''%$$%%&'(())*++++,..//0134555778999:;;<==>>>?@AAABCDDEFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFIHE:HMJI?@4)*#FEKMN@=:>BE@???>==;;::9988765543322210/.-,,,)))('&&%$$$''''''''''')))))))))))+++++++++++,,,,,,-----.//0012334543455577899;===<;=:753/++)'%$ # "            $ ) , 59=>==>===;;;;998776665433211////-----------,++++++++++*))))))))))(''''''''''%$$%%%'''))*++++,-.///1334557779999;;;===>>>>>>>@EILID=I^E74FGFCDORFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHGGGGFEECCCAAAA?>>====9997765543311110/.,,,,)))''&%%$$$&'''''''''''''''''''''%$$%%%''())*++++,-.///1335557779999;;<==>>>>?AAABCCDEEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGJHD8EKG+8HZTTQNA=<@DH????>==;;:9998776553331111//.,,,,)))''&%%$$$''''''''''')))))))))))+++++++++++,,,,,,-----.///011333543355577899;===<;=:8760+,*(&% & $ !          # ' , 29<>?==>===;;;;998776665433211////-----------,++++++++++*))))))))))(''''''''''%$$%%%'''))*++++,-.///1334557779999;;;===>>>>>>>@EJJIIGIRB@;AEGCDLOFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHGGGGFEECCCAAAA?>>====9997765543311110/.,,,,)))''&%%$$$&'''''''''''''''''''''%$$%%%''())*++++,-.///1335557779999;;<==>>>>?AAABCCDEEGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGKHD9FGF2D"GNRNHHE?>ADF????>=<;;:9998776553331111//.,,,,)))''&%%$$$''''''''''')))))))))))+++++++++++,,,,,,-----.///011333543355577899;===<;=;:994..,*('& $ !          ! $ ) . 5:@@AA>=>=<;;99997776666433110//.--,,,,,,,,,,,*))))))))))(''''''''''&%%%%%%%%%%$$$$$%%&'''())+++---//1333456777789999;====>=<>@BGJKOLGIJIEGJDFCEGHGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGEEECCBAAAA??>==<;;77776653333111//.,,+++('''&%%$$$$%%%%%%%%%%%%%%%%%%%%%%$$$$%%%''''())+++--.//133345677778999:;====>>??@AACCCEEFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGNJC<?INBQTDBABAEEEEDB?>>>><:999977776553333111//.,,+++''''%%%$$$$%%%%%%%%%%%''''''''''')))))))))))++++++,,,,,---///11233333345677779;;;;;<<<;;8441.,)'$ "         " & * /6<@@@@??>=<;;99997776666433110//.--,,,,,,,,,,,*))))))))))(''''''''''&%%%%%%%%%%$$$$$%%&'''())+++---//1333456777789999;====>=<>@BGHJMEJJLJIMEJECEGHGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGEEECCBAAAA??>==<;;77776653333111//.,,+++('''&%%$$$$%%%%%%%%%%%%%%%%%%%%%%$$$$%%%''''())+++--.//133345677778999:;====>>??@AACCCEEFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGNJC;DJEFRSF@ACGDEEEEC?>>>><:999977776553333111//.,,+++''''%%%$$$$%%%%%%%%%%%''''''''''')))))))))))++++++,,,,,---///11233333345677779;;;;;;<<=>8331-,)'% "        " % ) 18<=AAA@>>=<;;:9998766554422210/.--,,+++++++++++*))))))))))(''''''''''%$$$$$$$$$$#""##$%%&'''()**+,,,--/222345666678999:<<===>>BCEGGGGDGD>EHKFFDDECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGFFFDDDBBAA???>>==<;::66665543222000/.-,++++(''&%$$##""$$$$$$$$$$$$$$$$$$$$$$#""#$$%&&'''()**+,,---0223345666678999:<<===>???@ABBCDDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGNKEAFFAEMNB??@DDEEA=;>===<;9998866665443222///.--,++++'''&%$$##""$$$$$$$$$$$&'''''''''')))))))))))+++++++++++,,,-..01122222334566669;;;;;;;;<;>@=951,(% !          # ' .5=?=BBB@>>=;;;99997765543311110/.,,,,+++++++++++*))))))))))(''''''''''%##########"!!###%%%''''))*++,,,,.1123355566679999;<===>?CDFGGFEEFA6BHJHDDEEBBEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEGFEECCCAAAA>>>>===;;:966655433211////.-,++++(''%%$##"!!######################"!!###%%&''''))*++,,,,/1133355566679999;<===>???@AABCCCDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEGNLFCFEADKM@>>>CDEE?:6====;:9998766655433111....,,,++++'''%%$##"!!###########&'''''''''')))))))))))+++++++++++,,,,-./1111111333555669;;;;;;;;;9AEA<84,)% !    ! !    " & ,5:>>=BBA?==<::::8887765443311100/-,,,,***********)(((((((((('&&&&&&&&&&%##########"!!"##%%%&&''()**+,,,,.0123345566678889:;<<=>@DEFFEDCDEC<EIJFCCEEBAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFEDCCBAAA@>>>>==<;;:966654432210///..-,++**'&&%%$#""!!######################"!!"##%%&&&''()**+,,,,/1123345566678899:;<<=>???@@ABBCCDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFNKEDGE?CGHDA@@BCDDA=;=<<<::9888766654432110...-,,,++**&&&%%$#""!!###########&&&&&&&&&&&(((((((((((***********+,,,--/0111101233455668:::;;;;<<;@DA>:6-)& $ " ! ! ! !  $ ( + 4=??><BA?=<:9999;77776653333111//.,,+++)))))))))))(''''''''''&%%%%%%%%%%$##########"!!!"#$%%%%&'')))+++,,-/1123345556777799:;;<>AEFGEB@?ADEDIKKC@AEEA@EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDCCBAAA@?>>>==<;;:995555333110////--,++*))&%%%$$#!!!!######################"!!!"#$%%%%&'')))+++,,.01123345556777899:;;=>>>???AAACCDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEMJDGHD:A??JGCAABCCCCA=;;;99977775555333110/...,,,++*))%%%%$$#!!!!###########%%%%%%%%%%%''''''''''')))))))))))*++,,,//0110/1123345557999:;;<==<AECB>:1+('% # " " "  $ )07>@?><BA?=<:9999;77776653333111//.,,+++)))))))))))(''''''''''&%%%%%%%%%%$##########"!!!"#$%%%%&'')))+++,,-/1123345556777799:;;<>AEFGEB@?ADECIKKC@AEEA@EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDCCBAAA@?>>>==<;;:995555333110////--,++*))&%%%$$#!!!!######################"!!!"#$%%%%&'')))+++,,.01123345556777899:;;=>>>???AAACCDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEMJDGHD;A@@IFCAABCCCB@=;;;99977775555333110/...,,,++*))%%%%$$#!!!!###########%%%%%%%%%%%''''''''''')))))))))))*++,,,//0110/1123345557999:;;<==<AECB?;3.*'%$ " " ! ! $ ) 06;=?>>=?><:87678:;7776653321110//.-,++++)))))))))))(''''''''''&%%%%%%%%%%$##########!!!!$$$%%&'''())*+++-//011333555677799:;;;;=ACEC?>>AEHGJIG@?AED>=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEDCCBAA???====;;;9999555332110//----,,+))))&%%$$#!! "##################### !!!$$$%%&'''())*+++-//111333555677899:;;;<>>>>??@AACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBID=EGD=FA=DCBA???@DFF;;;;999777655433211///,,,,+++))))%%%$$#!! ###########%%%%%%%%%%%''''''''''')))))))))))*++++,-///10//111334556778:;;<=>>@B@@@>962.,+ ) ) ( ! % * 2;=<>>>>>><977678:;7776653321110//.-,++++)))))))))))(''''''''''&%%%%%%%%%%$##########!!!!$$$%%&'''())*+++-//011333555677799:;;;;<@CEC?>>AEHIKJF??AED>=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEDCCBAA???====;;;9999555332110//----,,+))))&%%$$#!! "##################### !!!$$$%%&'''())*+++-//111333555677899:;;;<>>>>??@AACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAHC<EGD=G@;CCBA?>>@EII;;;;999777655433211///,,,,+++))))%%%$$#!! ###########%%%%%%%%%%%''''''''''')))))))))))*++++,-///10//111334556778:;;<=>>@B??@?=:61/., * ) % ' + 3=>=>>>=>=;876578:;7776653321100//.-,++++)))))))))))(''''''''''&%%%%%%%%%%#""""""""""!!!!$$$%%&&''(()*+++-//011333455677789::;;;:>ACA>>>BFGDEEC?@CFC<;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEEDCBBA@???====;;:9998554332100//----,,+)))(&%%$$#!! """""""""""""""""""""" !!!$$$%%&&''(()*+++-//011333455677889::;;<>>>>??@AABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@GA9CGE>JD>ACCC?=;;>AB;;;:998777655433210///,,,,+++)))(%%%$$#!! """""""""""%%%%%%%%%%%''''''''''')))))))))))*++++,-///00//011334456778:;;<=>>>>>===?>;8741/ . * + - 5=AA@>=<=<:765468:;77766533211////.-,++++)))))))))))(''''''''''%$$$$$$$$$$"!!!!!!!!!! !!!$$$%%%%'''')*+++-///0133335566777999;;:8:?A?<=>CGF=>>>?BEGB:9DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEDCCAAA????====;:999875433321////----,,+)))'%%%$$#!! !!!!!!!!!!!!!!!!!!!!!! !!!$$$%%%%'''')*+++-///0133335666777999;;<>>>>??@AAABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB?E=4AFF@OH@?BDE@;6469;;;:998776665433321////,,,,+++))('%%%$$#!! !!!!!!!!!!!$$$$$$$$$$$&'''''''''')))))))))))*++++,-////////01333356778:;;<=>><9<;;:?@@@@<865+ + - 5;ACA?=<=<:765468:;77766533211////.-,++++)))))))))))(''''''''''%$$$$$$$$$$"!!!!!!!!!! !!!$$$%%%%'''')*+++-///0133335566777999;;:8;?A?<=>CGF>????BEGB:9DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCEDCCAAA????====;:999875433321////----,,+)))'%%%$$#!! !!!!!!!!!!!!!!!!!!!!!! !!!$$$%%%%'''')*+++-///0133335666777999;;<>>>>??@AAABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB?E>5AFF@NG@?BDE@;757:<;;:998776665433321////,,,,+++))('%%%$$#!! !!!!!!!!!!!$$$$$$$$$$$&'''''''''')))))))))))*++++,-////////01333356778:;;<=>><:<;;:>?@AB>976TRUEVISION-XFILE.gl-117-1.3.2/textures/transp2_.tga0000644000175000017500000003005410145416156016006 0ustar cedriccedric@@ʙ}z|z|˧Ҥ̪˶ӷϴ̰ʻնҵϺҶϵ͵ͺҺҹѻӼԹѼйͷش̷ѵиӾҾӾҺжϫǣǞ×||zpu{ůʲ̱˯ʱͲ̶ϵδ̰ȷϸйѵͷϸпԼҷθжиӶйμмҿӵ˰ɬȣƞ“}zvvqwƫȫǮʯʮȮȴͱɶεͱʸийѹѺлѺлӳ˸Ѳ̶ϺлѽտҿҹϯȭʥǙwzrwu}âƣĭ̧ŰʯɰʸүȴͷдͲ˳̷иѽպѹѸзϹѸе͹ϾԺмԾӾֿҴ̱̩ǠÚxxoqv~œª˱έȲ˯ɶаʮǶϴͱʸѺӹҺҹѵ͸жλӸжͺкнӾԿӽӿӹѯ˪ɟÛ{{~yxvy}|~~ƘÞ«ɶбɲ˰ʯɱ˵Ͻֲ̳ʹλյϲ̸̲кҵ̼ҺйилҽԻоҼпҿؿӳ̱ͩȤ˔wuotz~uw|}{}z{ŵδ̰Ȳͱ˰ʭDz̼֮ȹұ˵б̰ʷ϶νӷ˻ϺҼԾչнӻԾ׿׾Ҷϯˬ̞ǚĐ{qlkjryst}{||wÜáűʰʱ˯ɰˮȯɲ̸Ҳ̵гκղ̸вʴʻϼѼԵ͸ϹмҼҾҾոΰʮˢØ~|phhYwZxdhqtt}xy{ƠĥïȬî̭˩ȩȪȮ̭̯ή˲βεϷѷϳ˺ҷмռնϺҴͶϽӾԼг˰̫̥ǒwmh^{WtUrSqmurrr{y|y~řӱЫ˫˦ƤŤĨȪʱΰ̲ηѸҷйҴ̴ͳ̳̻ԺӹҼսֹ̾ӼѴ̪ǫ̟vusg^{TqOlJh\yhmntuwu{z–ʴձӥǧɣšåƦǬȰ̰̮Ȱɸѹҷ϶ϸѳ̹ҸѹҴͺӻϿּկ̤ŝ{pocbTsNmIfFcTphnqrqrqzyzĚÙ¢ŬϣƠáġĥɣƨĩŮʰˮȷеηϲ˸ѵδͷжϸѹҺϽѿӽԴͫɥƞ”ƒ~zti`|VtKlEdGeJfKfSmVq`|hlvrtxw}ƢƛÚƦ«ǩŲ̰ʸѷйѸѴʹ͵δ͸ѸѹҺлϾҺҮȬˢşÍ|yqlgVtMqQsGeIeIdNiNhPkSnWscoowvz|~âƫƱ˶ϰɳ̳̲˵κӱʲ˷кӺӽӻѺмԳͬ˧ʚ~ykkcbPvPtGhGdHcLgGcPmIdJgboslq{w{}™ś›ëǩîȷдͷиѳ̼նϵγ̷лԶͶ̽ӻӶЫ̢ŘvnlncXOsLlFdHcKeMhMgQlIfSqrsjmkrx}éŬɮȱʳ̺ҶκҶγ̻ӸѷдͲ˽ԼҸιҰ˭͢Ś{{kfg``cTrRmHeEdJcYdadOlRrMjVrZx`a`oy}Ŕ̮ϭ̰̱ʹϹͽ̺̹Ϸѷҵд͸иηͺжα˭̢Ęvhca\zWwXzUsQlMkNoKe`mhjLgSo_{ZtTqNnTxclo~ŮαͯȲɻѿξϾԵϷѶѲ˲ʹϴʸϹѲ̪ɢŔuhcZyPmWwKmRpOgGcPqOlgvciXpSl[te{fZuMmasq}~¬ʫų̴͹λкѻչӹԴ̷Ϻлѷεͱ˨ǠÛxlaVtQnHgGjIfOhRoDeUtauiuay\si~klgbh~zz§ȧŮȱ̰ɸѺӼջԹҽշ͵˺клӱ˯ΡĘxhXvSpGcIgDeKgVo\wVxQs[tdug~f}pusgflxęūʰή̰ͮ˵ϸѹѺҸмԽӺйϵͰ˩ȣƕ|k[xRoKfD`AbKfNfZs^]]yaw^xkjsqsnis}̩ͨʭ̩ȮЮ϶Խ׿׿սӻѾԹϾԷϱ˩Ȣŗo`}SoRm=X6X?\TkVp]^ac}^zdjlnmlflqɩ̧ȧȦ̭аλӺػϹϸη̹ѱ̫ʞk_|NjKfEa5W9UOffc]iec^zfnorpioq{ĢǧʨƬųʴɸͺаDzɫǪŦŞzhXvOmDc8V=\6TB`b~\xWtchgefmnmst|~}{~~z}ĢȠåǢæǦŬ˩ɣŤƢťɡǜ•vhYvKiDc9W6W.M4SIhLiGcWqlpmc~hiigx{~|~||y}~}}~{}~äƤǣǡŝÝڊ~wcSqLhMhC`1S9Z0PA`HfIeNha|faehcglr}|~{~xy~~{}|{|ŸĝzyjWtVrKgD`BdEgDeEdGdLjJeXtRrOpZ{_b`fn}}{}{}{~}{{wvx}|zoldVsIdKfGhGhMnMkIgQoSoUrVvSt[}\eegn~{~~}}{u~u}sxu~z~zvymefWtToXsRoXvOmUsXvSrVuZy\{bijmpsr|zz|tytusrpqlnltnv|y{y}~lgteVuc`}fb}gea~chdhnehry{zyz|unmimmebda~fgmirrplpdjggeelqsnmooqpmqsvu{{~z|wpiijca~Zv\xXtXz`^egcg_dc[yjurrty{xyxwzz{y|~ymfda~b_}PoXxWvSoZvYsc~c`\W}^}Zwcls|{z{|}y||ÖwslYwYxYwQqIiJgMiSl\w[vYwSuVyTsbblyzŞƝś˜Ò{mVtTsQoLi=\C`JfNiVpVqSp^{Wv_|emr}Œ™ş¡ĤǣšáĜȢɝĞÕxeQoXuZvDeEdC`E`OhXp\tTmSrcgku~țƟÚƞǞğŤƜƟß§ɧȧȧȪɩǦŧƤŝţȥʡàĞĘuc~]wLmEfD`7QD]LdSi^u]zfgtw|•ʥ˧̧̩ɫ̪ˡȠťǭˮˬɭʩǬέϪ˪˫ʭ̪ɦŬˮͨǩȩʦƣŧɣŤǣǟşƝƘŸɛőĕLJn^|TrHe4O2K6OKbRiYwiiszàĦɪ˨ȬɪƬą̇ɫʫǬƮȬƯ˭Ϊ˭̪ͭɮ̰έ˫̮ϰϨǧƨƩǧŤţƠàġƚŜŠʟƖœłidRo7T#?|2L@ZRlNl^|hq|¤ȧʯϫʪƬȮȧɨȭʨ­ĮƨŰά˯̯̯ͯ˯ɰ˫˫˰ϯͫǧ§äƦȣŢƜ˜ǟȔ{b[xGeEb8T4PGbEaa~jsɥŪƯˬǧéĬ˫ʪȧũǪɨƬʬʮͭˬʧŭ˯̯̬ʩȩǭˮ˩ǭʪȧȡ£ĢġàÚØÐvYrQi@Z:U=YMjVrfs~—ĨȮʬǬƯ˭ȨƦũȦŤħƦūʪȪȰή̮̦į̬ͮʭ˪ȪȫɩǬʪȩȨɨɤƣŦɡĘSmayZtPkEcWsTpjyíʬȯɫǭɩȧƩȩȧƧƧƪɬʪȭ˪Ȯ̭˭ˬʮ̱Ϯ̭˪ȫɬʬɩȬ˨ɧȡåǤơĖt`}kocfmsȥūǪưʯ˨çƪɤèǫʩȩȨǫɭ˫ɫɭ˭˭˭˰̳ϳжӰ̰̰̱ͫɨǫʩʪ˨ʣšálro}{ĜƩɫǬȬƮʮɭ̫ʭ̬˦ũȭ̩ȩǭˬʪȭˬʲваͰ̱ͯ˯ʲγϮʭʪȦĪɧǪˮϥǣÈyzĖţťŮʯˮɮɭɭ̧ƭ̬ˬ˩ȫʮͬʬʭˬʪȮ̭˱ϸҵϮȲ̸ҳα˱˯˭ˮ̥çƦǩ˯ЮʨǙ©ɭɮɰʯ˰˪ɭ̫ʫʪɫʩȩȭ˫ɫɪȫɱϮ̴ҹӵϵϳͶаʴΰʰ̴Щƪɬ˫ʩˮϪŬɦʏĢƩ˥ŬȰͲͮʱͯέ̬ˮ̪ͮͭɬ˪Ȯ̯̮̯ͮͭʯʹηѸҳ͹ӷѯɳͯ˲έɪȪȰϰϮΪư̙ͪŔūίϯγϺԴ̴˴ʮȫȮͭάϬάɯ˰̯˰̰̯˱ͽճʷε̵̸϶͵ͯʶүˮʮʬȬȲϯѲѶҬǥ›—Ţũʮ̴гض̸ΰʯ̪ȭήѮЭʪư̰̰̳ϳϱ̵̺Ѷ̹жͿִʸϵϴβ̯ɴβ̱˱˱Ү̵̱ϲͭΞč—ɠê˪ʮʶжε͹ѱ˯ˮ˪ɪ˯ϱ̭ɱͯ˯˰̳ϹԳʷξն͸ϻҺѹзϷϴ̸вʻӹѴ̯ʹа˵ϲͱЩ̘ŕÖȜɧȫʪƯɷϸԸԳϯ˯ʰ̵̰ѳδΰˮȯɰʳ͵϶δ˵̹кѶ͹жͶ̹ηͻѶ̽׳ɮɹҼԽӸдϯ̧ǕÒȠĠġĦǪɭɮȳ̲δг϶ҬƯɮȺԸұ˵ϯɳ̵ϱ˵ϵ̺Ѷͳʺѵ̼ӿֹϺϻлйν׹ѲɸսԺҸЯɜÜőȡƠġĥƧƩŪĮƯ̯αβ̵϶ͶͲɹҸѷеΰɲ˳̴ηαȷιиϽԶ͸Ͻӻѽӹ׾ԿԽ׿ӻϾӳӪ͕™àĤǣĨǪƪìħƩȮ̺յιммикӼյαʰȯȲ˺ѷζ͸ϷκѾսԷιѶοҶͳϪ˙ßĜŜŐǧɪɩŧ¨ȧƪȰ˴γɹ;ѵ̵ͳ˹ѹҳ˳˵͵̹мӷμӺѹкѹѸϹѼӼԻؾտѻϴ˯̧ʘãǪ̨ɥƫǪȬ̯ͫЭ˰˴εͷϹѴ̷ϷϷϷϳ˵̲ʻӶθйѸйνѼлϽѽѿײ͢¡ğ؏՚ŦʨʦȩŮʮ̬˭ͱβ̸иϲʳ˵ͷ϶ε͵ͻӶγ˵Ϳ׷ϻӸкμϷ˿ӾҼо۷ѧŢĦɠŘƙݨ̨̥ǯͭʴжд˺Ѹжΰȶγ˺ҸизϺҾֶθкҸѺѻϺκιͽѽٺӵЧĦƦɝĞěתĨ̭ʩijα˱ʼӹϷ͹ѹѳ˷ϱɺҹѹѼԶμԸлӸд̸кξҼнѹͿӽѿֿٿհ˪ǛǞśƬʰ̼պҼҽӻѷμԵ͵ʹ̷Ͽ׹ѻӶιѷϺҸкҼӹκλϿֽվؿۿ׫š áǘĨɯͺӹѼһѼӺѸнչѺһӻӷϷϻӻӺҺһӷϺѼѽѼоҽԿӿԽֿѷΫɧɢɠȓǗ•°ϵϼջҺһӺҶθкҺҹѽռԽռԼԻӽոмԺҽѺϽѺεɾҽԾѼϽչϰΪˠƝŕĚőʴбɵʹ̽׸йѺҷϻӶεͻӵͽչѼԺҽպһӼѺλϿӾҸ̾ҽмϰ̬TRUEVISION-XFILE.gl-117-1.3.2/textures/transp4_.tga0000755000175000017500000003005410145416156016013 0ustar cedriccedric@@TRUEVISION-XFILE.gl-117-1.3.2/textures/tree1.tga0000644000175000017500000020005410145416156015275 0ustar cedriccedric BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4wM3a4>5S2N2N2N2N2N2N7\5z4_4_3W3l4yN7lKBBBBBBBBB2`2`5S7lKBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB3j7~a4;2K2N2I2N2N5X2N62}3Y4b^2N2N2N2N2N2N53|:r2d4U4b2`H~IB5|P4b2e5mG|MMKE{5m?vBy:r8o1r6:2N2N2N2N2N2N22h3Z3Z3Z5|P4Q3]4k5n:rCz5n4R6yOBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB3Z3W5R6uN4R3^4a4a4_4k2c4bBBBBBBBBBBBBBBBBBB7fIBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB6uN3X2`8p3=DӇ4NMCzKL׀NMބK؀?v 9XE7zP4Q3ZK؀KMLLNK֐HגGԍL׊HՇKֆK܅KֆIB4T3Z88oK؀NᅴLفK܂NᅕNᅪNᅱMⅻLㅻLMMMMLLMLLLCz5jOD~7zP)3[Dz:r3d25R5V5X5V3W2d34_94U3X3d3X4T7pMBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB3Z2`3X3Z3W4a5g3W)4yN4T 4TIB5~Q2eBy=t5m2c5R7lK5X4k?vL׀DzKNLLK܈3¯L݉MފKֆ57U~8gT3dG|By=tG|K؀MMބKMބK8p6uN|=HA88gJD6oKM3Zt8mL;TD@CA^7bG4\=t4b3W4U2e3dE{4k4bIB4U5j5j8pE{MLLN5©2EԒHՇ45<:_R4Q4b5nIB@CAo>IBG@CAC?B@>8]F4R6yO9bH7lK:SC7fI4b7lK=NC7pMK؀KNMNMڏ3m4<3d3kEASpn7lQ4T;TDV6yOL2`@vDz3g3g5R4\u9bHR=HAZ7bGT4T3X3gSK؀L׀KH}K܂Bx4a3Zi4Q-7pM4T(3Z5X3X@4T4U5Rm5~QW3Z}5SW3W6uNv3]23XA3[3]2c5~Q5SR4U6K*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB6yO2c 4U4U3Z3Z5X4yN6uNBBB7fI?v4T-2cF5R3X3[4\4U6BBBBBB6yO&4Q2`3lKu8]M=HAL@CA:4yNs4k3Z4_5n5m5m3Z8pr:rgK؀L݃ByE{MބLفK:rOD8mL5j:YFG4yNpBxDzKKLMMMKMڂH~E{8o5n3^2d3WJ7fIBBBBBB7lK7lK 4T3Z55|PZ4Tc4T 3Z4U<7fI6uN 5|PBBBBBB8gJ7lK 7fI7fIBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4b3^v8pP3^y4_4\5V5S2d05S55R3X4yNG5XM3^u3l:r5m3}33GԉMMNK܂LفL݃Dz5m4\2dOD6uN4Q=tH}MڂNLLNLL݃H~4h:rG|3g4\3['5VB6oK 7pM5S6uN"7pM$BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fIBBBBBBBBB7fI4T?5XBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4Q2`)4\/4U3^3l=t5n4k2`r3Xc2`3l:r3X5~Q4\4a2do2`BBB4T 3]V4T4b4hHՄL׀MڂMNNNNL׀8o8]F@CA6uNKBщ4ǎ4@χ@ϔ3p4Ǖ4k4yQ3W3Z3]5~Q5~Q2`4kK܂KKMLNK܂K؀H}DzG|Bx=t3g5X5RG7zP/5VL4TV3^BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB2`3Z 4Q7lKBBBBBB7fI4\D5Ve7zPBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB5X-5j2e5nK4bByH~L׀K2eG|KH~LفK܂MބMK܂K5g4b4hCz8ͅ3|Bт54B342j3Z:YFe@CA[IBn4R4_G|MMNMMބG|CzKL݃K܂K܂MڂLفE{:r4_Y4hN3WQ4Q5|P5g5V3dH~5V[4TA8mL7lKBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fI7lK 3Z4\3X3^4kq3X{3d5mH~G|By8mL=HAT4yNm5m3l7zP:]G3WKMڂMڂK؀By5n2`=tL׀L׀LفG|5g3X2`3X8]F};NB<4RR5SP5j4a2cBxCzK؀L׀?vH~IB1@CA)>IB;7pM?7lKA9bH?4\^:YF@CAq6uN92eq2`ODt4U4yN;NB}?B@68gJ>4a5j5R2c2k5|23ZBӆ8oKML׀KLفK4a4a2d3X4T3X3W6uN;TD;TD4U2d2`3]3d3X4_6uN6uNBBB7fI4\75RY4TB7pM7fI3]R3X3]s5Xv3Z3X{8mL<7lK8mLBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB5|P4T!3^4_5VJ6uNBBBBBBBBB7fI3W5X<5jO3[G3Zl5g5g3X3W5R6uN;TDn;TDY7pMz5|Pd=HA"@CA5V?3[5X9bHx7bGX7fI4_4k4h4T:YF\9XED7lK^8gJ5V5m:r5|2633mGԃ?v5g2e?vLفK؀:r3d4_4\4_3Z5V3W9bHIBo7fI7fI4R3X4_4Tf3l3g5gJ7fI4T 4\5jIB7lK3lByDz3g3Z?vH}KK؀CzE{H~3d2`8oDz4357435c6by5?CQhKMN6yV3l8mL@CABBB;TDG7fI4OD3^3i3d3Z5X4_4T75~QT5X3Zb4UH3^3W2d3WBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB5|P 5S%4U4TI2e+5SY3ZD3]4k/2dL׀G|3]5V3Z4R4bH~L݃NMLفKCzE{L׀L݃3g7lK@CA7zPBx=tCzBy3d7fI9bH4a3]=tCzBx4k7zP4Q2`3e4uEECԄ3e5mIBP9bH4Q3iDzE{5n4\3gL݃K܂E{G|By?vG|3W7fI8]F5R9XE:SC7pM4a3Z:r5n5g3[3^3g3[:r3d3d3g2d2d2`^3^^4b3X2d2e5V4b[3Z3Z|3W3X4T<7fIBBBBBB5S3ZBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB6yO5V34\4TBBB3Z42d4kBxIBR4T3g3l4b4Q3g3Z=HA?B@IB\8]F3X8o7pM#5Xy5S}5X/7lKBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fI7fI3ZBBBBBB6uN6uN5|P4T4a2dBx:r3l3XH}LفLفCzDzG|L݃L݃L݃K܂K؀H~8o3l8p4k5j3]4T3Z4\4\3^4h4k3]2e5|43HCԄGIB=HA:]G4T4a3d3lBxK܂KCz:r5gK3i4R5R=HA7fI3[2d4U5V4QBBBBBBBBBBBB7fI7fIBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fIBBBBBB5X4T{4\4To3d3i=t3d3[6uN&5S82dBxDzG|IB?B@N?B@*ADB8G\U;nR7pQ35̘CԄ4a<4kIB2d5jBy3l4\z7lKBBBBBB7fI3Xb4\3[2`5X4U3X3Z4b3XBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB3Z 5X:7zPA5|P25R 4yN5RP5V3[3Z5g4h2e3l2co:r[4_4a3Z3d4Q8mL5V4TODGcp5G?JG?JC3t3E3y3Z3d3^8p2d4Q5X4\2c4U2e4k4b4h4a3[4_|6yOP7fIBBB6yO.5V3Z5V5R:SC5R4_3^5XHBBBBBBBBB3Z BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB3Z 4_3^`4R95~Q BBB3^-3^3[5g?vIB;8gJ7pM:]G4T2d:rDz5t4_4t554f4b2`3Z4Q5g6oK@CA?B@:YF`9XEj7pM3^5S8mL 4QC4a3l8p5g3^4_3Z5V5XR5|P(3Z4Q5g3g?v5m3Zz4\O4a3W4U"BBBBBBBBB6oK6uN BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB5|P 3Z$K؀"5V4T3ZX3ZO3]2c3i4_3l3X6uN6oK3W5g2`3Z8gJ7lK7lKBBB8mL 3X98gJ7fI7fI7fI7pM'5R"5X6yO6yOBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB6uN2`\2c?4Um3Z7lK5SL4T7zPd7zPBBBBBBBBB5~Q<3Z4a5g8p7lK4T8gJ7fI5g5m5j=t5g7pM>IB>Y[492B{5j3i3Z3Wp3Wf3Z<2`BBBBBBBBB3Z;4a2e3Xv5X3[4R$7fIBBBBBBBBB3X+4T4U5R=7lK7lK6uN/6uN%7fIBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB3Z5|P-5S_3Z5~QH3]g5|P$4aa2`5j@vK؀E{3]4yN@CAW:YFi4bBy5S3]7fIn3t4a3Zx2`3gKK܂MڂK؀L׀KK؀LفG|L4w`5r4hy44db3X4U4b7pM4Q4R7lK:YFP3ZA7lK3Z&5|P 6uNBBB5|P4T%2`2`BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4T"4R}4RQ7fI5mC2`5gDz:r4\3Z5j5g4_3Z5X5g5X3Z2c[5R3^N3i4k2cDzG|HՄ3ʡ45~8s2d4Tb3WH4Qv3dR5j3Zf4d3r3‡3t4b4U3Z)BBB4Q24\3^w2d`4Q7lK5Xw3[4a3[5V@4a$5RA5SG5V,BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fI7fIBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB6uN3g5|P$4U5~Q!BBB2`12d5x5V3W3b5|Pn3dBBB5|P6yO06uN BBBBBB7lK4R54U3Z3lI3[3Z3Z7pM'3]7lK7fI7fIBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB2`7pMBBBBBBBBBBBBBBB5|P4Q3XP3^BBB4\@4a4h3d4a4Tw2dV5jN@v?vDz?v2{4f4}@y5n3Z3Z4_2c5S7fI3d?3ZI4\Y3]:5X2eBBB4TV4a93W8gJ7lKBBBBBBBBBBBBBBBBBBBBBBBB7lK7lKBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB6uN5V.4RL4U]4Rj3X4\U3W'5RW3gP5~Q5X#5|P5|PBBBBBB7lK5R24TE3ZM5X(5|P5g3XP5j~4az3]3Z5Xn7lK5R5V5V4b2e3Z6yO_5S55|PBBB7lK4RBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fI4RT4\3g3l5X3^DzH~DӁCԀBӃ3~3k2e6uN 4h83[T2c4a5~Qh4T5V$3[p5X5S4R5S4T5SE4T7lK5R%3XY3]BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fIBBB5X 3Z 5|P4T$5X4a5~\5K8\m>IB:_H3Z8oG|2c}4T;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4yN6uNBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB7fI5R$3WT3]5V5X5V5X6uX4^34h4h5}8w8p8o4_3W<4U6yO BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB6uN3^3d3g2e3WY5R4T4hJ4\`4Z 45e?ҋ45@2r5m2c3[S3Xy3W5Sd4T BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4T%3Zf4ac@v"5S5|PBBBBBBBBBBBBBBB4lK43>225P7^l 6uNBBB3Z5V 4T5SNBBB5|P5~Q<4T+4QBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4T3Z0qTs 9e?sAtAt9nFf+Z*fDvPDtmy5^[gFz'r1xMЁKЀ6s(l6{C|6ŀ9@ۮI,I4V4xCD.{=Tx>dݴhߣQ?6ӖFQ?4H߳B矚$z88児QVXDߪJt>^ߤ-ړk:囂3ރP7䈫Aޖc+}B喨1℮HN߭7F}0}7F9;yR6BPAtP<}I5<r;v1pA7?4Ӿ=%sL2lݮ/>r5nSM<匭AK:=vX.*۫!P嚈|HiSD8D=ҰIka޳o>BM6/DϽ<˵AجU,sIQMR'w=Vӽ2EJGy^W/~:BAҸ-Ħ=E"&ŖLǗ2ݏP㙎Xᕩ3fdߘo=vAm6x6υ;QNީS3䆞.یdݴ$GB[2ːQȳO͹75־O~:UD xɘE衛A擖{У24߀Z.<݀_=iMj+ZL~Ow>yB͐`aد*ݭCغ4ͤlCFuiA%iV:u44ߙQŽAW%\X~LzKГ?ؕHߚ=XDB+¹=Hݒl6$.1%iI^BtP6}phק>A揼GࡆA䒁?ʄ>Lᒦ0p`8tlCޅSގKЀ(M2JḣH;H݋ 4^aGyY9+c.]GMJѰ8s }ʨE虀Aی՞(Cܶ/@K棜XXM8`CܨPq\4k$SG~FM{ZEڮOܹ>ױGL)ΡXۜS8XBׁKs/c$\QGUҜ&t4ŚO0-_ڼGࡣ0ݖ?ع+ޭ;:\$ n՜U9C҆Al̴26߆S15AƟME虁E_ڜiF卶@RηSޑ>8K޺(+b7d׻)vj3x,p,o^1> x1?ENP\6߂2SLA`ǤM3xYڙI5~ި"~HH8;=։8KCunGy@ӹ3H@Cؗ`O;Q?ҠKJFDߘ>0ŋ86׍V6Gœ>׊K+-A޴?B0zJݚJń:u5~;mIΧFIMKwh0l>u7{jߞPE5U ߫ZL```WWW/TArN2JoPCʖbCkT}@CsELSCI޽<>?Ҹ8ۣY޷3հGABK`_O[Y;懄H-މc୸->{B?Eڙ8"E5E@V۴Eл.:fQ{aܕ^7t<0eQʁo7k=֢QޝB1!D߱&ߠSEB3|N6ݘ+ڳ@?2>J~S-rA*۟scBK޽GJ{K{Ix=qEdߡՍ6B1+DߍAރ:6H݇9|Aދ2ەhߣX>卿A`.sNn8j7|IʃI،>@8/>m3jvEԅJ[:S9ΰ+0ռOS?WWW&_OαHx4hBr<2q[z8l=n Cx)s,nOhAa޳@lߟ~H3<]A_9AްNFۚJݤm;攣>Oܕ?BՀ C}NX=uVߍlݙP喝8剮-_NߏCޓ%7M6\3<<9rWWW<"ۆJ4uI謳tLo9n+qA61bU;g /CީaDE 7ֽX˿0yJ#[ <5}4ŤC䓒56=x 89g~YraN7KafߜABLA<@BXۺPAإ?64fA(?kKHcE䌽O9;I4g>d0JэC܇=ƄH65B\8㩳e"Dߘ;U2Ž؆=ڝK&Ib=ڃB߄eެ8=̀3v5䘰pDAްlݦ_fߜDϙ¡+<匊1E\XIJ:BU|ӯCA揧W?sL=E⡇C dߡ11q%nQc/Ң:@;5Ao }HABP喅wxH;拘BD3>J‰|ѶSoZ۩Yܚ]%|uڳ5@@BM\E1܊D0u"e8A?̼,:R,7ASOA=BKܱ=5I7ւ3zE ?ع U̇>x@7dߛLQ=I7ւF}JJے{ܴ\?P>>{=~3LxA9փ{%n:w;؅Zۚ.ۈ3;Aް82pM܍pݰ@۞/֍+ʌ}D\EQ@!˲1Ѥ(E?ʫ7xbAҸ1ܵIK@5r&_BX(Mʷ;=2ۭX᥯ENI s:YܠZMAWaj߯@OD͎FGlE`EܷE2AAA&` 7|*}bݜAaʒHu5Q/;}7;-4ߥKKaޙ+s>8剿B:ZlߟM7|HPjߞ\nգn>剠b۞2˂-ҹHEdߡG>ì"Tg?@1XkK;ƐR˰(ӹ)رݍiHH>aB'r.$zE/M:x Q¶;@Q"j=dX02۩Q䚾S}8F߶AҌofߙoA7.7+5iNB>?iJݠJם7XWڈ7\0uSBZߕ5c E܅Z2-J1`<?ع VB!x@x" Կ )SÂ1ȱ;C܇ c:ˤ7~ TRUEVISION-XFILE.gl-117-1.3.2/textures/tree3.tga0000644000175000017500000003005410145416156015300 0ustar cedriccedric@@!`twttwwr?U(9Poruwwrd(8OlrtrUr3F %clqG^ "c^}qPn!-d^}r]{ (9lnuc 6Gnnwf!AUnctg!-I`ttwd%AXrwog(9"/fufuX[" 'gx}qcR!f"'  '8lzd?M5'xn</X$oD !G nG % 6Glz`;o^/$l+;a!$F g-"xqo/-%u^rJxU8nr2!d5 6u"G !3UzAf5/-'L2J ('3U-/'+/+DozX2IlP;+!o? !+/'5R $cX +`O2o $<6R536$- r+(9%+$R 6U +32'}"356DDRl+9gfF2/%ZD w(('((]5'aO2X MRg`U{?n%'6+5 ]f%u/((6`JRA?M?Z}}%-Duto62/$--$w$^$+{5/ X 2o[(/$35?Or`;JdZ[]-((!d+q'f52`c{}[6-3-wo3(uP3xuG5/+5?5q5PO^``x}wPI 3lc]9'(+g<<5^gZM-o9M+"a6uXdzr`A2'(+tt8+f+uufL<<[{P<afxd6M -(/[XR!5D 2`!l3Ux}Xoc`]dUnggXw^ncx{xJ632(]Zf8-$6oz{XZntrO6A;x5l$+-+D^x"(/Mrrqnqu{rRafF3+-/!PRa8%'8cuP?]zdx5D%+2+t< %!/c2`x;R A +6Orqz{znz^}Rn<388//++(}!"l[f2(5Xo]39c{PorG3/$gf''J[OgA fr+D56;?GGAu5{!<%-+-/39-!9(gLJ(u%2LtR(<l}UFu?r$$%tu<oo<6;`2Xa2"$$rq{}}$<+(3M[`AtMxfP3MJZ2!!/GZ;%z(?qacU98$+DPA%LX'/ '$Fuqff"gzg" Pnd'!OAOo`{xl]t[czox/-RIx;-'2?G3;8+"l/gfX`ot`JD9AJOad?` O -Zx^"l%6fXn;- `$gtnwJ<nzRf;xM'-2/68X^/u^2M9Pzf[{{}n[JZ^GOzRLM ';cg2$dF8rI 3fufM5GlU/$6nugX"!-%5Odqta?!'+(-JxM`"/XG]]POM;Mt(2L '9LU]l<G 5'<{A'5FDDI?MM5'-9^rI<+3U{uro?'!%/I`I G 23O%"; O-F$X (?]qDDuRc(< "6{U!`(26Zw]<3++2D?dc2-6`{{]lxOI-!-/GgFO +DD^"+X9`{wg(5gr{Aa8n!UxU$ f$6`xP++-(A]AUU2'2[rLOz}cl%8rJX I "a +29"IX?69$F`?Z};R O (Azot<$q%xdgMF93-8RfZAcc}2<F%-<wA[ "d68%F65^%5l"6L^! c+8^[+"JFF{]nJ8D6?gzu?I2Id/?8"(3XLRA'6 ! '+O (63{?<+%<;!%%L+ZxzUwxX9P[Mrw`//  (8^FX  r"? 6O 8]n8%/!!-z^wfF[J2Lq`z]]L-u9< !-6[aM;+rx! G G 5O 3I 6O 2Pzll<']$%z{A{w??936OOXwuo?-+!+'-?<"a9"2AO(n; $cod6-([R %/MfgD`'n%`^gF%JA2J $25OL+-!+(%-22'`{3OI3 A /8P8IF;/$+g%{f9 $Zzc/?`!5XwJ%fDP6%x-/6aq^2%'(-2/+u  g6A?"z3JIxx{qJ9DG;-Pn%3/3'(%6PnnRqXZnaq}F-r3]uLGc%//ZxZ?Z538JJGDf(;58DHM ¦զբ զզզ!%' 29>˦զՠ զՕ rզ|  զՍ ¦զզՕ )/3æզ՝)/3  zզզv KX_À  ӦզզՇ EPWզդңp/6: sզդҦա$(+ )-1Xgp 7@EզՄAKRmΦզՌHT[ ewͦxЦզՕ!%' 5=B{զՒk}HT[)/3 m=FL Tbjզ՝7@E sզrCMTզՁՕ CMTզաΦզզզզզՇhyEPW WfoԤҦզ՛hyhyct~LX_զՖ=FLզEPWyՕP]eHT[_oyhyyǝɦզ՘Tbj )/3HT[hyզզզ@JP  N[bɦզզզզզզզզզզզզ՜ȘP]e,37 5=Bզ_oyyզզզզզզզզզՔEOW  08=դ!$& ]mwӦզե~Zhq5=B yxP]eJV]eu:BH!%' &+/զv ~՚Q^fEPW)/3)/3 HT[Ҧ՝!$ $(+ CMTեԅ;DJ  &+/ !%'զՒ m 5=BҦա#'* mEPW 29>ѦFQY CMT{ IU\զԦIU\ eu +14Цա!# N[bbr} $(+ƦQ^f CMT դӦ՟ #'*ͦՊ 4Ձ KX_s Q^f{ /6:y՝s!# ՛ǣѦբVen  &+/:CIN[bhyæզՄ5=B ,37 ՠ =FL 5=B _oy՚Wen՚5=B k}զ՟̄զզՏ աϦEPW \kuҦ՚9BF  k} ~զզզզ՗¦զաΞ˦\ku HT[obr} զզՕhy:CI k}*04CMT 8AFΦգeu 5=B՚Řæա}vfw!#N[b~  /6:Ձ !#բЦզզգyN[b!#Ʀ՝ʃՁ&+/ yiyѦՠ_oy եԦ~!# sKX_ 07;ՠ ՒZir{ѦզզՏ{:CIգ_oy k}Մ !#k}զ՝qՖ՚ =FLՄ {զ!# Օ :CIk}æզզaq{ \kuђ @JP՝!%' $(+|աΦQ^gՇ ʦ!# N[bɦ=FL z~\ku )/3ct՞ $(+ EPW mզՌ19={ k}Tbj VenZhq ,37 peu  $(+Ven  ѣ29>/6::CIm 5=BՊ 7@Ew \ku\ku  Σ$(+ s$(+ _oym HT[_oy æ$(+ 7?Dՠ )/3Տ Zhqy #'*˦&+/ TbjQ^f euZhq 29>ʦզ!# N[bЦ&+/ 7@E Չ br}EPW $(+7@E  CMTѦՠͦcs} !#br}ʦզ՚ƦZhq EPWՌ  =FM m7@E N[bզTbj$(+Φ5=B ʦզs29>,37Տ KX_ ʦ eu&+/ br}գCMT EPW՘*0329>  br}!# p~,37 )/3um ՘ pՠ7@E pդҚ!# Օ TbjՊ  )/3ƦՄ ,37Ձ ~՘)/3 `pzզՊ Ѡ Q^f Tajk}!$& CMThy 9BGե`pz բϤӣ)/3 æ /6:՝!# 7@Eu ZhqQ^f MZbՓъ  5=BæՒ,37TbjՏ 7@E)/3  hyp k}Tbj EPWk}29> ,37mΦզՊ5=B Zhqզs k}   ʦ!# HT[զգќȦ@JP br}գTbj "$ѣNZbhyզP\d!# :CIՄ  br}ʦզ՘Tbj?IOՊ  %'3;@ mՄզզզ՛Ȧs mKX_ ~{=FL {CMT { &+/՟FPW)/3 Ʀ5=B 7@E  )/3!%' &+/Օ  HT[ՓՄ {Q^f KX_Ռ   VenQ^f Ʀ:CI Ձ 5=BՕ  N[b  /6: hyv  y  )/3 /6:՝ ,37ՠ!# $(+ $(+ pQ^f VenVen !%'  =FL ,37  TRUEVISION-XFILE.gl-117-1.3.2/textures/tree5.tga0000644000175000017500000004005410145416156015303 0ustar cedriccedric@@ "2k>2k""6nL8p""3lFK#<;;sTWFq3dTXGN#<#L}XWBLBo7 <J}GS8q0Z0b+\6,_7pBP6n';,^;,_6n2_F{B2k"+[+^6# @:sDx&F6n;}3n;6+^+^6 &&&# "";3dGx4fH3c @2k:{3n+[6,_/`6 &&B(0́6ٛ6՜6՜6Ƥ2x+\+\6nRHul3d7;+/6ٛ60΀4֕33343p/^,Z2dBo3S,n+_#G{7sBT,s44 #<H|Gs 74.7ѣ;<7L/?*$'#?BT34.uBN76G20ÌPG(67L>06֕7/| 3dRGt 7&^4Ɲ76ٛ7ޝ7c<*p/2;,p6՛6؛6՜4җ/}/}6֕60΀6;ޠO7s26D.6ܘ0́ #BN7<2фB(&& ?*0΀6ܘ337FDO ,,/>>8778ܟDJ",p:?>8778>>:><>7ڟ4җ0́/|<$4.78fB;87:SK:ܛ*p 0́<87777ݝ:?L#<;2n63BN(&20.u3^_3ԉ>;63`d7ܟ0*/;.s>@>0΀.y.y/|/|<$  D.72ԃB(&&&263s?SD6026.d:s,`+^66+^.d[\3ԉ7ޝ`d2|.g2{2{$R+_4;>80΀B(+G+L/G++B(0΀0΀B(20.6ܘ0΀<$ 3?CB86ؙ2}+^0X2|.u,,60bCt$c`8:7ޝSK7:27 +k6Ƥ6ٛ0́G+B(+B(0́6ٛ6՜6ٛ77778>:c<+& ,36ɣ7ڟ6<:7DS,bPL7ڟ>0:&#:LPD86/|.y'h#&&B(0́7ٛ;ݠ<6;<7G+B(2ф<64֕0΀670΀?* :0f3}26&<,pRF(k362{8<6:0Ì<$7VOZKG++& <$2ф>@P:cc7ܟ7ޝ/} :cc6>0΀ ?*?էR;ҧ0́<$<$2ф<6BS:ʤ0́/|B( 6+^+[ (kD.BN:TL <#.D.  :4>:>?7& /}:Ԥ<>0ŋ?*& <$2ф>6 SlKNTG+ +`3BN(&+B(44+`6nH}8n& G+60΀'h+`87ݝ7;/  ?*0ŋ><7Ѥ70΀B(  0́>;6̠0>@*p 263|6Ƥ0́67777ݝ4?O(C,bNG0΀88h@B(;,b26?*(w:&B(8?80΀<$ .4/@/BN67ޝB(<$0́6ɡ,p/2B(0΀778<7ޝ0Ƀ?O2w2ő>@<2ф/|<$"+\#>(<$&7@?<;?>2фB(& "?*73/>7&:&0Ì4RF0΀/|&/23}60/|B(&&&  0΀??8Ԩ:;;>86(k<$0΀8<8/| />8__2ф776(k+.+[+[ ,3,b;<$03}&??*(k<$*p@K#`b0́0́6֕77/| <$0΀2ԃ|O8թ;;;70΀<$ 0́>>2фB(  :;TP;7770΀<$$+\#>#44,s44 *.0dBn(>?*0c<?8G+&&&<$*o66ٛ6՜/?* &6ٙ;.u20&# :0cOVG8G+&&  :,pRF0΀8;0Ƀ'h"<K}<7ٙ60΀7FJ#4.s:>;ޠ:ٜ0/2(G+L/L/G+&B(7ڟ4#>?*0́6ɡ2{4q>B8/| +k4ğ0́7RTB46Ƥ6՜6՜6ٛ0́B(& <$2ф<.uLC2ф>;,g?O6ٛ2фB( 6&T/2(BN/u,S(k/|RF;K@872ԃnW4.s?H/}2ф<7ޝ6ٛ/} <$2ԃ>6FL0́7ޝ;6̧/2&.?* &02*W6+[2k+^ :(^:0΀2΅4şDV.pRF0΀60́6؛;4/^:2ф><8u/Z/8/6՜6՜7ޝ><;/ <$2ԃ??/D,0́cb66ٙ+/2+n (k6;ޠG#;/`.Z+^2x/0΀c<ZH.(B+\#>#+G+h@86:.s#7(G+G+G+0́6ٛ/:&*o>?2ԃB(G+6ٙ6<2ф^:/+n (PG7ޝ.s6<$2ф><.s:L/0́B(&+<$<$0΀0΀<$&0́>;0Ì^:2ф6ٛ/2<$/|/2{,p?P6}26ؙ?H"#4ğ6>8c<0́7ޝ<:,p<$0΀8>:,c6^::?;6:>0,3,3(y*/  B(7<0?*G+7ޝ444B(2ԃ8s[/{?O#>&TLC2΅?<̥ &6՜;7ڟ/|&/237ڟ7ޝ6՜/2 B(0́7Υ8.s?H2ф>87ޝ>:6:3,d0u$R*o<0ŋ:& (k6՛8/0΀>?86֕/,p7G:c<G+0́/JD//,3"<$*o<$&NG.j26G+8@8L/PF40ÌO@.u>H" 0́6ٛ/2"*Z"&6՜4#>B(7ޝ;;>0́&    <$/+n /|7/|B(0́<87ڟ<:ޤ:ܛD.&G+6ܘ.;,_;(6ٙ:3. &0́>;;7̧/2<$2ԃ720&G+D.830́0΀RF3.uRF6ܘ8/|H+76ܘ#+`8,p300́><7ޝB( "ZB(^:3ֈ>;;,g :# <$2ф>7&<$0΀6ؙ,s/2&44,p :#4?7H+/|/|&/24?7ޝD.B(2ф>?0΀&7"*o0΀N88<32{6ɡ0́<$ 0́>>6ܘ&<$2ԃ?>.u/2B(0́/#6ܘ@8L/G+B(+0Ƀ<:;*p <$0΀8:ޙ?*<$/|0΀/|`>/DS2|6<2фB( <$0Ì;>0́&<$2ԃ??6^_2ф86ܘ?*#6ܘ@?86(kB(6ٙ4DS.xPF& 60?3?*&&& #+kDS0cc6>7ޝ/}  *p^_67ޝG+B(0΀8><;8??4/2.>@?3ڇ^:L/7ڟ3#F2w6̧0́B(&#(>47Υ0́<$/22|4;3ֈ<<<7Ҥ?*&3ё0;2ф^:0΀0΀^:0́7ޝ>@?<4. KC8@8d<0΀8>4?P.g<7ٙ/|/|/|NG3u<>0΀ *p;<8N2ф6ٛ7Υ;/ &0́pV+sX6*o/|<$B(h@:?;3HR/}& /;?8d<0΀78<2·DO@DO(B(/|0Ì:>:720B(7ޝ<>2фB(&?*//}  .y*o7" &&B(/|2ф<;:},cRF/|&&6՜<>?3ڇ^:+D.:ޙ0́F.8Ɵ0s&`>8:R7/4#0́>>7B(    <$/|2ф6ٛ^_/u:}3n?O0́0΀B(G+7ڟ;;>8/|&60@RB0:ܛG22 0́<878<.<$2ф>>*o 0́7ޝ`d2|'W+T3p2y;8/|d</|2ф;;;8N*oB(0́@0́H+6;0:&+6ٙ4WJ0Ѐc<2ф6ܘ?*<$0΀0΀<$<$0Ì84w3BN7:47ΥfB0Ѐj@2фcc33p3<2ф<$+7@7N/0Ѐs[4/B(/3HR/}+<$0΀/|    *ojX4x;<7ޝ8<87776ٙ2}+^;#>46ٙ&&7C7N/67ޝ46ɡD.D.6̠64Ɲ#<$(k &67ޝ4<8;>3ڇyK+qc<0ЀTK.g?O# ,s4ԗ&&:ܛR;j@8:cb40Ì^:2ф>4&62фTD0́WJ47ޝ^:#^<$G+/|8:2{7ڟ/|#/2/?*+;ٝT<ޠ78>7ޝ4<2ф^:0́/ (k<$+/|fB6ܘ0́&&0΀7HR4?7& 2/H+:ٜJVL0Ѐj@8:cb67ޝG+&  /}77B( 0΀<7>@7&"36՜N/6֜736'hB(0΀>8;<0Ì:&,,/4֕&<$2΅>@?0΀&/246ٙN/6ٙ4&<<$2ԃ??<;/ ,,(l /24?8B(&0́>7H+0́<,p<$2ԃ??<6ٙ&"3>0΀  0΀?7+B(7ޝ3 <$0΀76ܘ/} "37ڟB(<$0΀/|  0Ƀ4Ɲ && +n.   ,,&bTRUEVISION-XFILE.gl-117-1.3.2/textures/treeu1.tga0000644000175000017500000004005410145416156015464 0ustar cedriccedric@@ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNNNNN5X5X5X5XNNNNNNNNN5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5X5X5X5X5XNNN5X5XNNNNNNNNN5X5X5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNN5XN5X5X5XNNNNNNN5X5X5XN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5X5X5X5XNNN5XNN5XNN5XNNNN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5X5XNNN5XNN5X5X5X5XNNNN5XNNNNN5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNNN5X5X5X5X5XN5X5XNN5X5XNNNNN5X5XNNNN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5XNNNN5X5X5XNN5X5X5XNNN5XN5X5X5XN5X5XNNN5X5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5X5XNNN5XNNNN5X5X5XNNN5XNNN5X5X5XNNN5X5XNNNNN5X5XNNNNNNNNNNNNNNNNNNNNNNNN5X5XNNN5X5X5XNN5X5XNNNNN5X5XNN5XNNN5X5X5XN5X5X5XNNNNN5X5X5XNNNNNNNNNNNNNNNNNNNN5X5XNN5XNNNNN5X5X5X5XNN5XNNNNN5X5XNNN5X5X5X5X5XN5X5XNNNN5X5XN5X5XNNNNNNNNNNNNNNNNNNNN5X5X5X5X5X5XNNNN5X5X5X5X5X5X5XNNNNN5X5X5XN5X5XNN5XN5XNNNNN5X5XN5X5XNNNNNNN5XNNNNNNNNNNNNNNN5X5X5X5X5XNNNNN5XNN5X5X5XNNNNN5XNN5XNN5X5XN5X5X5X5X5X5X5XN5X5XNNNN5X5XNN5XNNNNNNNNNNNN5X5XN5XNN5X5X5XNNN5X5XNN5X5X5X5XNNNN5X5XN5XNN5XN5X5X5XNNNN5X5XNNNN5X5X5XNN5X5XNNNNNNNNNNNNN5XNNNNN5X5X5XN5X5XNNNNN5X5X5X5X5X5XN5X5X5X5XN5XN5X5XNNN5X5X5XNN5X5X5X5XNNN5X5XNNNNNNNNNNNNNN5X5XNNNNN5X5X5X5X5X5X5X5XNNNN5X5XN5X5XNN5X5XN5X5X5X5XNN5X5XNNN5XNN5XNNNN5XNNNNNNNNNNNNNNN5XN5X5X5XN5X5XN5X5XNNN5XNNNNN5X5X5XNN5X5X5XN5X5X5XNN5X5XNNNN5XNNNNNN5X5XNNNNNNNNNNNNNNN5X5XN5X5X5X5XNNN5X5XNN5XNN5X5X5X5XNNN5X5XNNN5X5X5X5X5XNNNNNN5XNNNN5X5XNNNNNNNNNNNN5X5XNNNN5X5X5XNN5X5XNNNN5XN5X5XN5XNNNN5X5XNNNNN5XN5XNNNN5X5X5X5X5XN5X5X5XNNNNNNNNNNNNNN5X5XNNNNN5X5X5X5X5X5X5XNNNNNN5XNN5XNN5X5XNNNNNN5XNN5XNNN5X5XNNN5X5XNNNNNNNNNNNNNNNN5X5XNNNNNN5X5X5XNN5X5X5X5X5X5X5X5X5XN5X5X5X5XNNN5XNNN5XN5XN5X5X5X5X5X5X5X5X5XNNNNNNNNNNNNNNNNNN5XNNNNN5X5XN5XNN5XNNNNNN5X5X5X5X5X5X5X5X5XN5X5X5X5X5X5X5XN5X5XN5X5XNN5X5XNNNNNNNNNNNNNNNNNN5XNNNNN5X5X5X5X5X5X5X5X5XNNNNN5X5X5X5XNN5X5X5X5X5X5XNNNNNNN5X5XNN5X5X5X5X5X5X5XNN5XNNNNNNNNNNN5XNNNNN5X5XNNNN5X5X5X5X5XNNN5X5X5XNNNNN5XNN5X5X5X5XN5X5X5X5X5X5X5XNN5XNNNN5X5X5XNN5XNNNNNNNN5X5X5X5X5X5X5XN5X5X5XNNNNN5X5X5X5X5XNNNNNN2N2NN5X5XNN5X5X5XNN5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5XNNNNNNNNNNNNNNNN5XNN5X5X5X5X5X5X5X5XN5X5X5X5X5X5X5X2N2N2NN5X5XNNN5X5X5X5X5X5X5X5X5X5XNNNNNNNNNNNNNNNNNNNNNNNN5X5X5X5X5X5X5XNNN5X5X5X5XNNNNNN5X2N2N5XNN5XNN5X5X5X5X5XNNNNN5XNNNNNNNNNNNNNNNNNNNNNNNNNN5X5X5XNN5X5X5X5XN5XNNNN5X5X5X5XNN5X5X5XN5X5X5XNN5XNNNNNNN5X5X5XNNNNNNNNNNNNNNNNNNNNNN5X5XN5X5X5XNNNN5XNNN5X5X5XNN5X5XN5X5X5X5X5X5XNNNNNNN5X5X5X5X5XN5X5XNNNNNNNNNNNN5XNNNNNNN5X5X5X5XNNNN5X5X5X5XNN5X5X5X5XNN5X5XNN5XN5X5XNNNN5XNNNNNNNNNN5XNNNNNNNNNNN5X5XNNNNNN5X5X5XNN5X5X5X5X5X5XN5X5X5X5XNN5XNN5XNN5X5XNN5XN5X5X5X5X5X5XNNNNNNNN5X5XNNNNNNNNNNN5X5XNNN5X5X5XNN5X5X5XNNN5X5XNNNNNN5X5XN5X5XNN5X5XNNN5X5X5X5X5XN5X5X5XNNNNNN5X5X5X5X5XNNNNNNNNNN5X5X5X5XNN5X5X5XNNNNNN5X5X5XN5X5X5X5XNN5X5XN5X5X5X5X5X5X5X5X5X5X5XN5XN5X5XNNNN5X5XNNNN5X5X5XNNNNNNNNNNN5X5X5XNNNNNNN5XNN5X5X5XNNNN5X5X5XN5XN5X5X5X5XNNNNN5X5X5XN5XNNNNN5XNNNNNN5X5XNNNNNNNNN5X5XNNNNN5X5X5X5X5XNN5XN5X5XNNN5XN5X5X5XN5X5XN5X5XNNNNN5X5X5X5XNNNN5X5XNNNNNNNNNNNNNNN5X5X5XNN5XNNNNNNN5X5X5X5XNNNNNN5XN5X5X5XNN5XNN5X5XNNNNN5XN5X5X5XNN5X5X5XNNNNNNNNNNNNN5XN5X5X5XN5X5X5X5XNNNN5X5X5XNNNNNNN5X5X5XN5XNN5X5XNN5X5XNNNN5XNN5X5X5X5XNN5X5XNNNNNNNNNNNN5XNNN5X5X5XNNNNN5XN5X5X5X5XNNNN5X5X5X5X5XN5XNN5X5X5XNN5X5XNNN5X5XNN5X5X5X5X5XN5X5XNNNNNNNNNNNNNNN5X5X5XNNNNN5X5X5X5XN5XNNN5X5XN5X5XNN5XNN5XNNNNN5XNNNNNNNNNNN5X5X5X5XNNNNNNNNNNNNNNN5X5XNNNNNNN5XN5X5X5X5XN5X5XNN5X5XNN5X5XN5XNNNNN5X5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNN5X5XN5X5XNNNNN5X5X5X5XNN5XNN5XN5XN5X5XNNN5X5X5X5X5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5X5X5X5XNNNNNN5X5XN5XNN5XNN5XN5XN5X5XNNN5XN5XNN5X5X5X5X5X5X5X5XNNNNNNNNNNNNNNNNNNNNNN5XNNNNNNNNN5XN5X5XNNN5X5XN5X5X5XNN5X5XNNN5XNNNNNNNNN5X5X5XNNNNNNNNNNNNNNNNNNNNN5XNNNNNNNN5XNN5X5XNN5X5XNN5X5X5XNNN5X5X5XN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNNN5X5XNNN5X5XNN5XNNN5XN5X5X5X5X5X5XNN5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5XNNNNN5X5XNN5X5X5XNN5X5X5XNN5XNNN5X5XNNNNNN5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5XNNNNNN5X5XN5X5XNNNN5XN5XNN5XNNN5XNNN5X5X5XNN5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5X5X5XNNNN5X5XN5X5XN5XNNN5XNNNNN5X5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5X5XNNNNN5XNNNN5XN5X5XNNN5XNNNNNNN5X5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNN5XNNNNNN5XNNNNNNNNN5X5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNN5X5XNNNNNN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNNN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTRUEVISION-XFILE.gl-117-1.3.2/textures/treeu2.tga0000644000175000017500000004005410145416156015465 0ustar cedriccedric@@ DDDDDDDDDDDDDDDDDDDDDDDDDDD>y>y>y>y>y>y>y>y>y>y>y>y>y>y>y>y>y>y>yDDD>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>y>yDDDDDD>y>y>yDDDDDDDDDDDDD>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>yDDDDDDD>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>yD>y>y>y>y>y>y>y>y>y>y>y>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>yD>y>yDDDDDDDDDDDD>y>y>y>y>y>y>y>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>yDD>yDDMzDDDDDDDMzMzDD>yDDDDDDD>y>y>y>y>y>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>y>y>y>y>yDMzDDDDDDDD>yMz>y>yD>y>y>yDDDD>yDDDDDD>y>y>y>y>yDDDDDDDDDDDDDDDDDDD>yDDD>yDDDD>y>y>yMz>yDDDDD>y>y>yMzDDDDDD>y>y>yDD>yDDDDDDDDD>y>y>y>yDDDDDDDDDDDDD>y>y>yDDDD>yDDDDDMzMzDDDDDD>y>y>yMzDDDDDDDDDD>y>y>yDDDDDDDDDDDDD>yDDDDDDDDDD>y>yDD>y>yDDD>y>yD>y>y>yDDDDDD>y>y>y>yDMz>yD>y>y>y>y>yDDDDD>y>y>yDDDDDDDDDDD>y>yDDDDDDDD>y>yDDDD>yDDD>y>y>y>yDDDDDDD>y>y>y>yDDMz>y>y>y>yDDDDDDDDDD>y>y>yDDDDDDDDDD>yDDDDDDD>yD>y>y>y>y>y>yDD>y>y>yDDDDD>y>yDDDD>y>yDMzMz>yD>y>y>yDDDDDDDDDD>y>y>y>yDDDDDDDD>yDDDDDDD>y>y>yDDDDDDD>y>yDDDDD>y>y>y>yDD>y>y>y>y>yD>y>yD>y>y>y>yDDDDDDDMzD>yDDDDDDDDDD>yDDDDD>y>y>yDDDDDDDDMzDDDD>yDD>yD>yDDD>y>yDD>y>y>y>y>y>y>y>y>y>y>yDDDDMzMz>y>y>y>y>y>y>yDDDDDDDDDD>y>y>y>yDD>yDDDDMz>y>yDDDDDDD>y>yDD>yDDDD>yDDDD>y>y>y>y>y>y>y>yMzMz>y>y>yDD>yDD>y>yDDDDDDDDD>yDD>yDD>yDDDMzMz>yD>yDDDDDD>y>yDD>yDDD>yDDDD>y>y>y>y>y>y>yMzMz>y>yDDDDD>yDDD>yDDDDDDDDD>yDD>yDD>yD>y>yMz>yDDDDDDDDD>yD>yMzDDDD>yD>yDDDDD>yDDD>y>y>y>y>yDDDD>yDDDD>y>y>y>yDDDDD>yDDDDD>y>yDMz>y>yDDDDDD>yD>y>y>y>yMzMz>y>y>y>y>yD>y>yDDDDDDDD>yDD>y>y>y>y>y>y>yDDD>yDDD>yDDDD>yDDDD>y>yDD>y>y>yDDDD>y>yDDD>y>y>yDD>y>yDDDD>y>y>yDDDDDDD>yDDD>y>yDD>y>yDD>y>yDDD>yDDDD>yDDD>y>yD>y>y>y>y>yDDD>y>yDDD>y>y>y>yDDDMzMzD>y>y>y>y>y>yDDDDD>y>yDDDD>yDDD>yDDD>y>y>y>yDDDDD>yDD>y>yDD>y>y>y>y>yDDD>yDMzMz>y>y>y>y>y>y>y>y>yMzMzMz>y>y>yD>y>yDDD>y>yDDDD>y>y>yDD>y>yDD>yDDD>yDDDD>yDD>y>yDD>yD>y>y>y>y>y>y>y>y>yMzMzMzD>y>yDDDDDDMz>yDDD>y>y>yDD>yDDDD>y>y>yDDD>y>yD>y>yDDDDDDD>y>yD>y>y>y>yD>yD>yD>yDDDDD>y>yD>yMzD>y>yDDD>y>yMz>y>yDDD>y>y>yDDDDD>y>y>yDDDDD>y>y>yDDDDDDDD>y>y>yDD>yD>yDD>y>y>yDDDDD>y>yD>yDD>y>y>yD>y>yDMzD>y>y>yDD>yD>yDD>yDDDDMzMzMzMzMzD>y>yDDDDDDDD>y>yDDD>y>y>yDD>y>y>yDDDDD>y>y>y>yDD>y>y>y>yDDMzMzDDD>y>y>y>y>yDDD>y>y>y>y>yDDDDDD>yD>yDD>y>yDDD>y>yDDDD>y>yDD>yD>yDDD>y>yD>y>y>yDD>y>y>y>y>yDMz>y>y>yDDD>y>y>y>yD>y>yDDD>y>yDDDD>y>yD>yDDD>yDDD>y>yDDDMzMz>yDD>yD>y>y>yD>yDD>y>yD>y>y>yD>yD>y>y>yDD>y>yD>yD>y>yMz>y>yDDDD>y>yDD>y>y>y>yDD>yDDDDDD>y>yDDD>yMzMzDD>y>yDD>y>yDD>y>yDDDD>yD>y>y>yDD>y>yD>yDD>yDMzDD>y>y>y>y>y>yDDDD>y>yDDD>yDDDDDD>y>yDDDDDMz>yD>y>y>y>yD>yD>yD>yDDDD>y>y>y>y>yDDDD>y>yMzD>yMz>y>yDDDDD>y>y>yMzDD>yDDDD>yDDDDD>yD>yDDDDD>yMzD>y>y>yDDD>yDD>y>yDDD>y>yDDDDDDDMzMzMz>y>y>y>yDDDDDD>yDDMzMz>yDDDDD>yDD>yDD>y>y>yDDDDD>yMz>y>y>yDD>y>yDDMz>y>y>yD>y>yDMzDDDDDDD>yD>y>y>y>y>y>y>y>y>y>y>y>y>y>yMzMzDDD>y>y>y>y>y>yDDD>y>y>yDDD>y>yD>y>yD>y>y>yDDMzD>y>y>yD>yDDMzMzDFw>y>y>yD>yDDDD>y>y>y>y>y>y>yDDD>yDMzMzDDDD>yDDDDDDD>y>y>yD>yD>yD>y>y>y>yDD>yMzD>y>y>y>y>yDDDFwMzFwDDD>yDD>yDDDD>y>y>y>y>y>y>yDD>yDDMzMzDD>y>yDDDDDDDD>y>y>y>yD>y>y>y>y>yDDDD>y>y>y>y>y>y>yMzMzD>yMzMz>y>yD>yDD>yMzMzMzMzMzMzMzMzMzMzDDD>yDDDMzD>y>yD>yDDDDDDDDD>yDMzMz>y>yDD>yDDDD>yD>y>y>y>yMzDDDFw>yDDDDDDMzMzDDDDDDD>y>yDDD>y>y>yDMzD>yD>yDDDDDDDDDD>yMzMz>y>y>y>y>yD>y>yDMzMzMzMzMzMzMzMzMzMzDD>y>y>y>yDDD>y>y>yDDDDDD>y>yDDDD>yD>yD>yDD>yDDDDDDDDDMzMz>yDDD>y>yD>yD>y>yD>y>y>y>y>y>yMzDD>yMz>y>y>y>yMzDD>y>y>yDDDD>yD>y>y>yDDDDD>y>y>yD>y>yDDD>y>yDDDDD>y>yDDDD>y>y>yDD>y>y>y>y>yDDDDDDMzMz>yDDDMzD>y>y>y>y>y>y>y>yD>y>yD>y>yDDD>y>y>yDD>y>yDDDDDDDDD>y>y>yDDDDDD>yDD>y>yDDD>yDD>yDD>y>y>y>y>yDMz>y>y>y>y>yMzMz>y>y>y>yDDD>yDDD>yDD>y>y>y>yDDDDDDDDDD>y>yD>y>yDD>y>y>y>y>y>yDDD>y>yDDDD>yD>y>y>y>yMzMzD>y>y>y>yMzMz>y>yDDDDD>yDMz>yDD>y>y>y>y>y>y>yDDD>y>yDDD>yDD>yD>yDD>yDMz>y>yDD>yMz>yDD>y>yDDDDD>yMzMz>yDD>y>yMz>yDDDD>y>y>yDDMzDD>y>y>yDDDDDDD>yDDDD>yDDD>yMzD>y>y>yDMzDD>y>yMz>y>y>y>yDDDDDD>y>y>yDD>y>y>yMzMzDD>y>yMzMz>y>yDMzMzMz>y>yDDDDDDDD>yDD>yDD>yDD>yMzDD>y>yDD>yMzDDMz>y>yDDD>yDD>y>y>y>y>y>y>y>y>y>yDMzD>y>y>yMzDD>yD>y>yMzMzMz>yDDDDDDD>yDD>yDD>y>yD>y>yDDD>y>y>yMzDMzMz>y>yDDDD>yDMz>y>y>y>y>y>y>y>yD>yDD>y>y>y>yMz>y>y>y>y>y>y>y>y>y>yDDDDDDD>yDD>yD>yD>y>y>yDDDDD>y>y>yDD>y>yDDDDDDMzMzDD>y>y>y>y>y>y>y>yD>y>y>yDDDMzMzD>y>y>yDDD>yDDDDDDD>yDDD>y>yDDD>y>y>yDD>y>yD>y>y>y>y>yDDDD>yDDMzMz>yMzMz>yDDDD>y>y>y>yDDDDDDDD>y>yDD>yDDDDDDDD>y>yDD>y>yD>yDD>yDDDDDDD>y>y>y>yDD>y>y>y>y>y>y>yMzDMzMz>yDD>yDD>yDDDDDDDDD>y>yDD>yDDDDDDDDD>y>y>y>yDD>y>yD>y>yDDDDDDDDD>yDDDD>y>y>y>y>yD>y>y>yDD>y>yD>yDDDDDDDDD>y>y>yDD>yDDDDDDDDDDDDD>y>y>yDDDD>y>y>y>y>yDDDD>yDDDD>y>y>y>y>y>y>y>y>yDD>y>y>yDDDDDDDDDD>y>yDD>yDDDDDDDDDDDDDD>y>y>yDD>y>yDDDDDD>yDD>y>y>yDDDD>y>y>y>y>y>y>y>y>y>y>y>y>yDDDDDDDD>y>y>y>y>y>yDDDDDDDDDDDDDDD>y>yD>y>yMzMzMzMzMzMz>y>yD>y>yD>yD>y>y>y>y>y>y>yMzDDDD>yD>y>y>y>yMz>y>yMz>y>y>y>yDD>yDDDDDDDDDDDDDDDD>y>yDMzMzMzD>y>y>y>y>y>yDD>y>y>y>y>y>yDDDD>yMzDD>y>yDDD>yDMzMzD>yMz>yD>y>yD>yDDDDDDDDDDDDDDDDDD>y>y>y>y>y>yDDDDD>yDDDDDDMz>y>yDDDDMzD>yDDDDDD>yMz>y>y>yMzD>y>yD>y>yDDDDDDDDDDDDDDDDDDD>yDD>yDDDDDDD>yDDDMzMzMzD>yDDDDMz>yDDDDDDDMzMz>yDDMz>yDD>y>y>yDDDDDDDDDDDDDDDDDDD>y>yD>y>yDDDDDDD>y>yDDDDDD>y>yDDDDDDD>yDDD>y>yDDD>y>y>y>yDD>y>yDDDDDDDDDDDDDDDDDDD>y>y>y>y>y>yDDDD>y>y>y>y>y>y>y>yDD>y>y>y>yDDD>yDDD>yDDD>y>y>y>y>yDDDD>yDDDDDDDDDDDDDDDDDDDDD>y>yD>y>y>y>y>y>y>yDDDDDDDDDD>y>y>yD>y>yDD>y>y>y>y>yD>y>yDDDDDD>yDDDDDDDDDDDDDDDDDDDDDD>y>y>y>y>yD>yD>yD>yDDDDDDMzDDD>y>y>y>y>y>y>y>y>y>y>y>y>yDDDDDDD>yDDDDDDDDDDDDDDDDDDDDDDD>yDDDD>y>y>y>y>y>yDDDDDMzDD>y>y>y>y>y>y>y>y>yDDDDDDDDDDDD>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>yD>yDD>y>y>y>y>y>y>y>y>yD>y>y>yDD>y>yDDDDDDDDDDD>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>yDDDDDDD>y>y>y>yDDDDD>y>yDDDDDDDDDD>yDDDDDDDDDDDDDDDDDDDDDDDDDD>yDDDDDDD>y>y>y>y>y>y>y>yDDDDDDDDDD>y>yDDDDDDD>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>y>yDDDDDDDDDDDDDDDDDDDDDDD>y>y>y>y>y>y>y>y>yDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>y>y>y>y>y>yDDDDDDDDDDDD>y>yDDDDDDDDDDDDDDDDDDDDDDDTRUEVISION-XFILE.gl-117-1.3.2/textures/treeu3.tga0000644000175000017500000003005410145416156015465 0ustar cedriccedric@@2252E+$>m[>v>5$52>5>>ag>+++)+9+5 5>>{o>O2Em[52E+ ?:62Q> )>9++9>5>v>57/8E}C@m[E92529+5>Q+3(7LleJ$f"5>E92  +2E758>}>81EobGM6'x+Qj>+ /"){ov>2++-E}};; I;DB9;o^/" >jJOB '  "xq7>2+Q>|*Lv6)prJxU8nr2!d> )>E1w+@ &J ('4  7P7}mqtVp90+DozX2IlP;+,zjlx`uA&&*!G YX - r+(9.2? ).3IqI*+356DDRl+9gfF2:3t6z|B7('E {$\U{?n%'6+5 `p$*3(6`JRA?M?Z}}%-Duto62..}Wc5|*c*?(y6/ Or`;JdZ[]-(%v%x'g52`c{}[6-3-wo3(uP3xuG5/,y|Ay6XMa^`w}wP+g<<5^gZM-r"IX,"a6uXdzr`A2'(+tt8+f+uufL<<[{P<afxd6M -2`!l3Ux}Xoc`]dUnggXw^ncx{xJ632(]Zf8-$6oz{XZntrO6A;x5l$+-+D^x"(/Mrrqnqu{rRafF3+-/!PRa8%'8cuP?]zdx5D%+2+t< %!/c2`x;R A +6Orqz{znz^}Rn<388//++(}!"l[f2(5Xo]39c{PorG3/$gf''J[OgA fr+D56;?GGAu5{!<%-+-/39-!9(gLJ(u%2LtR(<l}UFu?r$$%tu<oo<6;`2Xa2"$$rq{}}$<+(3M[`AtMxfP3MJZ2!!/GZ;%z(?qacU98$+DPA%LX'/ '$Fuqff"gzg" Pnd'!OAOo`{xl]t[czox/-RIx;-'2?G3;8+"l/gfX`ot`JD9AJOad?` O -Zx^"l%6fXn;- `$gtnwJ<nzRf;xM'-2/68X^/u^2M9Pzf[{{}n[JZ^GOzRLM ';cg2$dHy8rI 3fufM5GlU/$6nugX"!-%5Odqta?!'+(-JxM`"/XG]]POM;Mt(2L ':LU^i>K= $BmD'5FDDI?MM5'-9^rI<+3U{uro?'!%/I`I G 23O%"; O-F(Z&A[cHKj`Z;#; :iQ"c(26Zw]<3++2D?dc2-6`{{]lxOI-!-/GgFO +DD`!)0 d9YiyX19a}k}=QB v&PyK8&m$6`xP++-(A]AUU2'2[rLOz}cl%8rJX I "a u(=P$BOM8)M$TcI^%8 }=}P0$Z'Azot<$q%xdgMF93-8RfZAcc}2<F%-<qq */+5+ s/:T21G$ : p&v~yy`v7.7>/)Ax\v9.n):Y[+"JFF{]nJ8D6?gzu?I2Id/?8"(3Xqpfv;.>E>>>A5GY#'/++@}}y}}Ut{oQBE]}l|G.):;!%%L+ZxzUwxX9P[Mrw`//  (8]j\IQ{oo{u{}}}E.5,/.+:F'~)/<8])7Q5{o~~j? %.!!-z^wfF[J2Lq`z]]L-u9< !-7RL99>H"L0u{}}?2++$B aH XSt(3+>E@?BX~vleP2i#%z{A{w??936OOXwuo?-+!+'0>:,12++ADH>:n; $gqhM A A'u"4Wa^G\.'n%`^gF%JA2J $25OL+-!+(%-31$g) 7 4Dc0*A /8P8IF;/$+g$}f9 $Zzc/?`!5XwJ%fDP6%x-/6aq^2%'(-20.| 0  q5<W*x rB JIxx{qJ9DG;-Pn%3/3'(%6PnnRqXZnaq}F-r3]uLGc%//ZxZ?Z538JJGDo-H6$!qq%}In]pYt6"6qF("A+wcU3$qL ^9 z+z +]0#7}qu6=G9Q{o'\q9<"w/?F2r 9("+Qt,#3pxnb2aI r1499Q{o>+!GJr;X n{2XzAg+Qq/!i7)f{li$)E .9E{oQ25#eLr32!I (XR2u'%57vcN%? |oZ!- 8+2Q5{oE+?>:K "D`A+o$])7])>/%!^XKqu(5+>E9+$   }2M}3+%/>{oE22S&!B965>vE92G z;f>vE927 $ "BvQ++E99254 2E992, \xY_,Qj>529E9++E99+  5+E2+Ej>25)b>255+2)5+7O+$x0j+5>m[5$+27+5TRUEVISION-XFILE.gl-117-1.3.2/textures/treeu4.tga0000644000175000017500000003005410145416156015466 0ustar cedriccedric@@hz}*15*15}}*15*15hz*15}*15hz*15*15}hz}}}}}}*15}}*15}}*15*15}*15}*15}*15}*15hz}}*15hz}}}}*15*15}*15*15}*15*15}*15hz*15}>IP*15hz*15}}}}}}}}*15}}}*15*15}}*15*15}*15}*15}*15}}Ց*15}}>IP}*15}}*15}}*15*15}}*15}hz*15}hz}}}}*15}*15*15}}*15*15*15}*15*15*15*15*15}}}>IP}}*15*15}hz}}}*15hz}}}*15*15*15>IP*15}}*15*15>IPSbk*15hz*15*15}*15}}}>IP}*15}զ}*15*15}}}*15*15}}hz*15*15}}*15hz}}}*15}*15>IP}>IP}}*15}}*15*15hz}*15*15}}*15*15hz}}}*15}}*15}}*15}Ց*15*15}*15}}>IPhz*15*15}}*15*15}}*15*15}*15}*15}}*15*15}}*15*15*15*15}>IP*15}*15*15}*15Ց*15}}}*15*15Ց}*15*15}Ց}}*15hz}զ}*15*15}}*15զզՑ}*15>IP}}>IP}զՑ}*15*15}}hz*15}Ց}Sbkhz}}*15*15զՑ>IPhz>IP}}Sbkhz*15>IPՑ}*15*15}}*15*15}Sbk}}>IP*15}}}զ}*15}*15*15}hz>IP*15}*15*15}}*15*15}*15զ}*15*15*15*15>IP}}>IP}*15hz}}*15*15}*15}զՑՑ*15*15}Ց}*15*15}hz*15}}*15hz}}*15*15}զզզզՑզՑ}*15*15*15}}*15}*15*15}}*15}Ց}*15>IPզզզզզզՑ}*15*15}}}*15*15}Ց}*15*15}*15*15}զՑզզզզզզՑ>IP*15}}*15*15}}hz*15}*15>IPզզզզզզՑզզզզզզ}}>IP}>IP*15}}*15*15}}}Ց}*15*15}}զզՑ}>IP}զզզզՑSbk}}*15*15}}*15hz}}*15*15}զՑՑ}*15>IP}*15*15զՑզՑ>IP*15}>IP*15}}>IPՑ}*15*15}}*15*15Ց>IP}զ}*15*15>IP}}*15*15}}*15}}*15*15}}}}*15*15}Ց>IP}>IP*15}}}*15*15}}*15}}*15*15}*15*15}}}}>IP*15*15}>IP>IP}hz*15*15*15>IPզՑ}*15*15}}}}Ց*15}>IP}}}*15*15hz>IPՑ}*15hz*15*15}}}>IP}}*15*15}*15>IP}*15}*15*15}*15}*15}>IP}*15}*15*15}}>IP*15}*15*15}*15*15}*15*15hz>IP}*15*15}}}>IP}hz}}hz}}}}}}}hz>IP}Ց}}>IP*15}*15*15}*15}*15*15}*15*15}Ց*15*15}}}*15*15hz}*15*15}}*15>IP*15hzՑ*15*15}hz*15hz*15*15}}*15}}Sbk>IPhz*15*15}Ց}}}}}*15}}*15hz}}}*15*15*15*15hz}*15}*15*15}}*15*15}*15*15}*15*15}}hz>IP*15}}}}}*15*15}}*15}}*15*15hz*15*15}*15}hz}}>IP}}}>IP}*15hz*15}*15*15}}*15}}}hz*15Sbk}}}զ}}}}}*15>IP}*15hz}*15}*15*15}}*15}}hz}*15*15}}}*15}*15*15}*15hz}}}*15}*15}}*15}*15hz*15}*15Sbk}}}*15}}*15hzTRUEVISION-XFILE.gl-117-1.3.2/textures/treeu5.tga0000644000175000017500000004005410145416156015470 0ustar cedriccedric@@ #(&hF- (D02ґ-)t((.D%jj-F- -3ԗLG4ԗ*w((((+{=H&hn,}-#%h*wB+F- 3ԗGG3ϓ-(,,(-cB3ܗ+{(-,}%jjE3ԗ-(F- +y0.܆%h#(,(#%h4ԗG4ڙF- (*w17+{((,(B++{4ܗ65,}B+(+y3֓+y(F- 5כL=+{(`<22e?2"F- +y0+y_=,C:4,}.܆0+yL1@WNE=4ڙ+{B+(*w+yF- ((2"H3]P5כ0D0-L1@06ܟK:+y=>C9,}F- 0$>>>,~3֓+{F- ((*w00*w((,((*w004ۗGG4ۗ+ye?1;L5כF- 0$3֔3XM"2,JBvH>-F- (F- jB20-(+y3֓+y((+y6:7=>;7,0:L4ҙ-+!3՗=FArArJK!O_D0(,(B++{4ܗ60--3ԗJ7ΤJ35-F- .A;HLMG!O^XM2J0( -DGBx,J0,J?6ɢ+{F- D006ז,{F- F- ,;B7+y(-3ԗML7Υ+y-%<9,~3ԗ4ҙ9̨KGB})WyD!H^ - 5Ar.O*+! NWB94ڙ7ΥLX;121Ŏ=LGJJBv$=ilAr"2(,F- +y19:HJ>=76=J<1*w(B+,>"2000"2!K\HM<,B+B++y00+yB+(,(F- 4ڙLBx -(0$YK265+y((+y:NCz9<,F- +{6ɢEAr?p?p?p?pArE6ɢ+{B+B+,9;:6+y(4903ԗ+{B+-+{*w01561F- -0ߋ>OG4ԗ1ߊ4ڙ=NL$=il 40000 -*!(B+,9,F- (#$e*v3֔GJ<6ڡAM7̧J35*!3K?6OVO5ޜ;JA;ݮ1 EXl2>>*:;7̧MMM7̧:;B++y2=SM4ؚ,}`<2"((F- +{4ڙ73ܗJ35,((+y4ڙ=MOCz EXl1:>NP<ĸ XUXM,0+yB+(F- +{3ԗ4ҙ4ҙ4ҙ.]?+{3ԗ4ҙ4ҙ5כ92`<,JJJ>տJN;=H4ؚ0*w((L1@1>OKGKLLKOLFD71.܆%h#(,,,,((,,,F- +y.܆&m49,J;g GVl(p!J\F9ЪJN6ܟ50--0;H%am14ҙ4ҙ0PM04ҙ4ҙ3ԗ+{F- ,((,,,,,((0$GVlBx:g&?%1MC}#ma4G%dj,+yF- ,,,L1@1:G1Ď`<2",((,,,((F- +y0017ؖ7ؖ,~66)EBvCzCTK*BxK0SKBxCzGVlJ35+y0.܆*v*v.܆296.ˆD0(#$e*v.܆01;[Y:ӥ>,J,JBvCz$`e(n( -C=0ߋ0$)EBvBv LY162e?2",F- ,}9E7У+{F- ((,,,F- ,{7ޙ6ږ XUHKGB}$`e,*w(4905+y()EBxD965+y(B+,>4ڙ6520L1@(B++{3֓1ߊ0*w((L1@1ߋ9ӨH<1ߊ+y*wF- F- +{9̨K6ܟ0e?+y.܆%hD13֔62R11+yB+(,,,((,,(B++y2)E:;4ڙ61F- -D03KCzK4ؚ+yF- (F- 1;L=+{(+!6ʢMM<-Ђe?F- (*!()EB}H9+y(B+.FLK!K\+!(+y6=J5ޜ`<(+{920+yF- ,(%6o5Ġ3ԗ+{F- -F- ,;:5כ3ԗ+{B+(*!,-F- +{4ܗ9F;&mF. 3ԗH3ԗ-(+y:H&fo9ӨF4ܗF- -,}&hnHAMMLLLH9,}B+B+,