crossfire-client-1.70.0/0000755000014500000120000000000011731277220012040 500000000000000crossfire-client-1.70.0/configure.ac0000644000014500000120000004266511731277061014266 00000000000000# Process this file with autoconf to produce a configure script. # IMPORTANT: Do not specify a version number with a "-" in it. The number is # used to create RPMs, and some RPM build tools do not allow use of dash in # the version number. # AC_INIT([crossfire-client],[1.70.0]) AC_CONFIG_SRCDIR(crossfire-client.spec) AC_CONFIG_AUX_DIR(utils) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE AC_CONFIG_HEADERS([common/config.h]) # AM_ACLOCAL_INCLUDE(macros) # These are subdirectories that have make files in them CF_SUBDIRS="common pixmaps utils help" # Check for some needed programs AC_PATH_PROG(MKDIR, mkdir) AC_PATH_PROG(TAR, tar) AC_PATH_PROG(DEPEND, makedepend) AC_PATH_PROG(CP, cp) AC_PATH_PROG(RM, rm) AC_PATH_PROG(PERL, perl) AC_PATH_PROG(AR, ar) AC_PATH_PROG(PKG_CONFIG, pkg-config) # Check if svnversion is available to get the rev number AC_PATH_PROG(SVNVERSION, svnversion) # Put this early on, since gtk may rely on it. AC_PATH_XTRA SOUNDDIR="${datadir}/crossfire-client/sounds" # Add some options to 'configure'. AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug], [Turn on debugging (default=no)])], if eval "test x$enable_debug = xyes"; then DEBUGFLAG="-g" fi) AC_ARG_ENABLE(ansi, [AS_HELP_STRING([--enable-ansi], [Turn on strict ansi (default=no)])], , enable_ansi=$enableval) AC_ARG_ENABLE(sound, [AS_HELP_STRING([--disable-sound], [Disable sound support (default=implement sound support if supported libraries exist)])], sound=$enableval, sound=yes ) # These are because some of us use OSS sound, even with ALSA or ALSA9 libs # installed AC_ARG_ENABLE(alsa9, [AS_HELP_STRING([--disable-alsa9], [Disable ALSA9 sound support (default=use alsa9 sound support if alsa9 libraries exist)])], alsa9=$enableval, alsa9=yes ) AC_ARG_ENABLE(alsa, [AS_HELP_STRING([--disable-alsa], [Disable ALSA sound support (default=use alsa sound support if alsa libraries exist)])], alsa=$enableval, alsa=yes ) AC_ARG_WITH(sound-dir, [AS_HELP_STRING([--with-sound-dir=dir], [Directory where the sounds are located (default=/usr/local/lib/sounds)])], SOUNDDIR="$withval") # The following two are really just a way to specify where the xpm information # resides if not with the normal X11 stuff (ie, in /usr/local and not /usr # /usr/X11) AC_ARG_WITH(ldflags, [AS_HELP_STRING([--with-ldflags=dir], [Provide additional linker directives to find libraries])], EXTRA_LIB="$withval") AC_ARG_WITH(includes, [AS_HELP_STRING([--with-includes=dir], [Provide different compiler options to find headers with])], EXTRA_INC="$withval") AC_ARG_WITH(loglevel, [AS_HELP_STRING([--with-logevel=level], [Sets default loglevel])], MINLOGLEVEL="$withval", MINLOGLEVEL=0) AC_ARG_ENABLE(gtkv2, [AS_HELP_STRING([--disable-gtkv2], [Do not make gtk-v2 client (default=make it if available)])], gtkv2=$enableval, gtkv2=yes ) AC_ARG_ENABLE(sdl, [AS_HELP_STRING([--disable-sdl], [Disable linking with the SDL library, default is to use it if available])], use_sdl=$enableval, use_sdl=yes) # SDL_mixer support is experimental. Do not enable by default until it is # ready for general use. # AC_ARG_ENABLE( sdl_mixer, [AS_HELP_STRING( [--enable-sdl_mixer], [Enable use of the SDL_mixer library, default is not to use it] )], use_sdl_mixer=$enableval, use_sdl_mixer=no ) AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable checking for dmalloc library, default is to use it if available])], use_dmalloc=$enableval, use_dmalloc=no) AC_ARG_ENABLE(metaserver2, [AS_HELP_STRING([--disable-metaserver2], [Do not build in metaserver2 support])], metaserver2=$enableval, metaserver2=yes ) AC_PROG_CC AC_C_BIGENDIAN networklibs="yes" case "$target" in alpha-dec-osf*) # If we are not using gcc, we want the ansi version of cc. if test -z "$GCC"; then # CFLAGS="$CFLAGS -std1 -warnprotos" # Not yet ready for warnprotos... CFLAGS="$CFLAGS -std1" fi ;; # SGI systems don't need -lnsl -lsocket mips*-sgi-irix*) networklibs="no" ;; # linux systems don't appear to need -lnsl *-linux-*) networklibs="no" ;; *-*-solaris2*) need_r_flag="yes" ;; *-*-mingw32*) win32="yes" # -mms-bitfields is needed for GTK+ in Windows. It is set # automatically by pkg-config, but it is also needed in common, so we # explicitely set it CFLAGS="$CFLAGS -mms-bitfields" WIN32_LIBS="-lwsock32 -lwinmm" AC_SUBST(WIN32_LIBS) ;; *) ;; esac # dnl # dnl Detect pthreads libraries # dnl # # pthreads is required by both metaservers. Only metaserver2 is optional, so # we cannot build any client if pthreads is not present. # # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # Default is to define HAVE_PTHREAD. PTHREAD_CC and PTHREAD_LIBS are set. # Both compile and link with these flags. # AX_PTHREAD(,AC_MSG_ERROR(POSIX threads not found. Cannot build any client.)) # Check to see if gtk-v2 client will build. # if eval "test x$gtkv2 = xyes" ; then # # Check for GTK+ 2 # AM_PATH_GTK_2_0(2.0.0, HAVE_GTK2=yes, HAVE_GTK2=no) if eval "test x$HAVE_GTK2 = xyes" ; then # # Check for Libglade-2.0 # PKG_CHECK_MODULES(LIBGLADE, libglade-2.0 >= 2.0.0, [HAVE_LIBGLADE=yes], [HAVE_LIBGLADE=no]) if eval "test x$HAVE_LIBGLADE = xyes" ; then CF_SUBDIRS="$CF_SUBDIRS gtk-v2" AC_SUBST(LIBGLADE_CFLAGS) AC_SUBST(LIBGLADE_LIBS) AC_MSG_NOTICE(GTK+ >= 2.0.0 & Libglade-2.0 found; will build gtk-v2 client) else AC_MSG_WARN(Libglade-2.0 libraries not found; will not build gtk-v2 client) gtkv2="no" fi else AC_MSG_WARN(GTK+ libraries missing or < 2.0.0; will not build gtk-v2 client) gtkv2="no" fi else AC_MSG_NOTICE(gtkv2 client disabled) fi # # End of gtk-v2 client check AM_MAINTAINER_MODE AC_SUBST(PACKAGE_LIBS) AC_SUBST(INTLLIBS) # sound.c needs sqrt. So does png (on some systems). Lua also needs it, so # put it near the top # AC_CHECK_LIB(m, sqrt) AC_SEARCH_LIBS(pthread_create, [pthread, pthreadgc, pthreadgc1, pthreadgc2], [AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define to 1 if you have the 'pthread' library.])]) PKG_CHECK_MODULES(LUA, lua >= 5.0.0, [lua_scripting=yes], [lua_scripting=no]) if eval "test x$lua_scripting = xyes" ; then LUA_LIBS=`$PKG_CONFIG --libs lua` fi PKG_CHECK_MODULES(LUA, lua >= 5.1.0, [HAVE_LUA_5_1=yes], [HAVE_LUA_5_1=no]) if eval "test x$HAVE_LUA_5_1 = xyes" ; then AC_DEFINE(HAVE_LUA_5_1, 1, [Define to use Lua 5.1]) fi CPPFLAGS="$CPPFLAGS $EXTRA_INC" LDFLAGS="$LDFLAGS $EXTRA_LIB" if eval "test x$need_r_flag = xyes"; then LDFLAGS="$LDFLAGS" fi if eval "test x$lua_scripting = xyes" ; then AC_DEFINE(HAVE_LUA, 1, [Define to use Lua 5.x]) else lua_scripting="no" LUA_LIBS="" fi AC_SUBST(LUA_LIBS) # Check for OpenGL AC_CHECK_LIB(GL, main) AC_CHECK_LIB(GLU, main) AC_CHECK_LIB(opengl32, main) AC_CHECK_LIB(glu32, main) AC_CHECK_LIB(glut, main, [opengl="yes"; AC_DEFINE(HAVE_OPENGL, 1, [Define if you have OpenGL.])], [opengl="no"]) if eval "test x$opengl = xyes" ; then if eval "test x$win32 = xyes" ; then OPENGL_LIBS="-lopengl32 -lglu32 -lglut" else OPENGL_LIBS="-lGL -lGLU -lglut" fi AC_SUBST(OPENGL_LIBS) fi # End of OpenGL checks # Checks for programs. AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_CPP AC_PROG_RANLIB AC_SUBST(X_LIBS) AC_SUBST(X_CFLAGS) if eval "test x$sound = xyes"; then if eval "test x$alsa = xyes"; then AC_CHECK_LIB(asound, main, alsa_sound=yes, , -lm) fi AC_CHECK_LIB(audio, alNewConfig, sgi_sound=yes, ) if eval "test x$alsa9 = xyes"; then AC_CHECK_HEADER(alsa/asoundlib.h, alsa9_sound=yes, alsa_sound=no) fi if eval "test x$use_sdl_mixer = xyes"; then AC_CHECK_LIB(SDL_mixer, Mix_OpenAudio, sdl_sound=yes, sdl_sound=no) fi AC_CHECK_HEADER(sys/soundcard.h, oss_sound=yes, oss_sound=no) AC_CHECK_HEADER(sys/audioio.h, sun_sound=yes, sun_sound=no) # alsa9 sound support is now independent of other sound systems, so don't # preclude compilation of others just because we find it. if eval "test x$alsa9_sound = xyes"; then AC_MSG_NOTICE([Using ALSA sound system (0.9.x)]) CFLAGS="$CFLAGS -DALSA9_SOUND" ALSA9_TARGET='cfsndserv_alsa9$(EXEEXT)' ALSA9_LIBS="-lasound -lm" SOUND_SRC="sound-src"; # It appears that alsa9 sound while having the same headers, is not # backwards compatible, so if you have alsa 0.9 or later, you can't # compile the old old sound daemon, so if we find alsa9, disable old # alsa. alsa_sound="no"; fi if eval "test x$sdl_sound = xyes"; then AC_MSG_NOTICE([Using SDL_mixer sound system]) SDL_CFLAGS=`sdl-config --cflags` CFLAGS="${CFLAGS} ${SDL_CFLAGS} -DSDL_SOUND" SND_LIBS="-lSDL_mixer" SOUND_SRC="sound-src"; else if eval "test x$alsa_sound = xyes"; then AC_MSG_NOTICE([Using ALSA sound system]) CFLAGS="$CFLAGS -DALSA_SOUND" SND_LIBS="-lasound -lm" SOUND_SRC="sound-src"; else if eval "test x$sgi_sound = xyes"; then AC_MSG_NOTICE([Using SGI sound system]) CFLAGS="$CFLAGS -DSGI_SOUND" SND_LIBS="-laudio" SOUND_SRC="sound-src"; else if eval "test x$oss_sound = xyes"; then AC_MSG_NOTICE([Using OSS sound system]) CFLAGS="$CFLAGS -DOSS_SOUND" SND_LIBS="-lm" AC_CHECK_LIB(ossaudio, main, SND_LIBS="$LIBS -lossaudio") SOUND_SRC="sound-src"; else if eval "test x$sun_sound = xyes"; then AC_MSG_NOTICE([Using solaris sound system]) CFLAGS="$CFLAGS -DSUN_SOUND" SND_LIBS="-lm" SOUND_SRC="sound-src"; else AC_MSG_WARN([No suitable sound system found.]) sound="no" fi fi fi fi fi fi # Basically, only want to put sound-src once in the subdirs listing. # if eval "test x$SOUND_SRC != x"; then CF_SUBDIRS="$CF_SUBDIRS $SOUND_SRC"; fi AC_SUBST(GUI_OBJS) AC_SUBST(GUI_SRCS) AC_SUBST(SND_LIBS) AC_SUBST(LDFLAGS) AC_SUBST(TARGET) AC_SUBST(CF_SUBDIRS) AC_SUBST(ALSA9_TARGET) AC_SUBST(ALSA9_LIBS) # Check for SDL 1.1.3 and sdl_image. Note SDL_image does not ship with an # sdl-image-config, so I'll just assume it is in the same dir as SDL. if eval "test x$use_sdl = xyes"; then AM_PATH_SDL(1.1.3) if eval "test x$no_sdl = x"; then AC_CHECK_LIB( SDL_image, IMG_LoadPNG_RW, have_sdlimage="yes", have_sdlimage="no", $SDL_CFLAGS $SDL_LIBS) if eval "test x$have_sdlimage = xyes"; then AC_MSG_NOTICE([sdl image detected!]) SDL_LIBS="$SDL_LIBS -lSDL_image" else no_sdl="yes" fi fi if eval "test x$no_sdl = x"; then AC_DEFINE(HAVE_SDL, 1, [Define if you have SDL]) else use_sdl="no" fi fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) # The following hacks for modifying CFLAGS were borrowed from the GIMP. if test -n "$DEBUGFLAG"; then CFLAGS="$DEBUGFLAG $CFLAGS" fi if eval "test x$GCC = xyes"; then if echo "$CFLAGS" | grep "\-Wall" > /dev/null 2> /dev/null; then CFLAGS="$CFLAGS" else CFLAGS="$CFLAGS -Wall" fi if eval "test x$enable_ansi = xyes"; then if echo "$CFLAGS" | grep "\-ansi" > /dev/null 2> /dev/null; then CFLAGS="$CFLAGS" else CFLAGS="$CFLAGS -ansi" fi if echo "$CFLAGS" | grep "\-pedantic" > /dev/null 2> /dev/null; then CFLAGS="$CFLAGS" else CFLAGS="$CFLAGS -pedantic" fi fi fi # We need to check for socket/nsl here - some versions of the windowing # systems need these to properly link with X (I thought AC_PATH_XTRA should # take care of this, but apparently is does not). If it is not here, the # check for xpm fails, and configure quits. if eval "test x$networklibs = xyes"; then AC_CHECK_LIB(nsl, main, LIBS="$LIBS -lnsl") AC_CHECK_LIB(socket, main, LIBS="$LIBS -lsocket") fi # Save and modify CPPFLAGS and LIBS (to include X and GTK paths temporarily). gcfc_save_CPPFLAGS="$CPPFLAGS" gcfc_save_LIBS="$LIBS" CPPFLAGS="$GTK_CFLAGS $CPPFLAGS $X_CFLAGS $EXTRA_INC" LIBS="$LIBS $GTK_LIBS $X_LIBS" # Put this here so we get the gdk libs # AC_CHECK_LIB(gdk_imlib, main,GTK_LIBS="$GTK_LIBS -lgdk_imlib") # Need to check for Xext while we still have X_LIBS set. AC_CHECK_LIB(Xext, main, X_LIBS="$X_LIBS -lXext") # AC_CHECK_LIB(Imlib, main, X_LIBS="$X_LIBS -lImlib") # Restore previous CPPFLAGS and LIBS. CPPFLAGS="$gcfc_save_CPPFLAGS" LIBS="$gcfc_save_LIBS" LIBCURL_CHECK_CONFIG() LIBS="$LIBS $LIBCURL" CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" AC_SUBST(LIBS) # png on some systems need the zlib, so check for it AC_CHECK_LIB(z, main) AC_CHECK_LIB(png, main, , [AC_MSG_ERROR([You must have the png library installed to compile the client])]) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([curl/curl.h fcntl.h pthread.h string.h sys/ioctl.h sys/select.h sys/time.h unistd.h]) # Metaserver support is pretty critical to the client, so fail unless the # user explicity tells us to compile it without metaserver2 support. if eval "test x$ac_cv_header_curl_curl_h = xno" ; then if eval "test x$metaserver2 = xyes"; then AC_MSG_ERROR([curl/curl.h header not found, but metaserver2 support is enabled. Install header file or use --disable-metaserver2]); fi fi # Used to control default behavior when client starts up - even if user has # necessary files, if they use --disable-metaserver2, they won't try to get # data from those servers. # if eval "test x$metaserver2 = xyes"; then AC_DEFINE_UNQUOTED(METASERVER2, 1, [If metaserver2 support is enabled.]) else AC_DEFINE_UNQUOTED(METASERVER2, 0, [If metaserver2 support is enabled.]) fi if eval "test x$use_dmalloc = xyes"; then AC_CHECK_LIB(dmalloc, main, DMALLOC_LIB="-ldmalloc") AC_SUBST(DMALLOC_LIB) AC_CHECK_HEADERS(dmalloc.h) fi # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T AC_HEADER_TIME AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) # Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_FUNC_VPRINTF AC_CHECK_FUNCS([getaddrinfo mkdir socket strcspn sysconf]) AC_SUBST(XPM) AC_SUBST(SOUNDDIR) AC_SUBST(LIBXPM_LIB) # Run evals on the original variable names so that they get expanded to the # actual path - otherwise, the substitution below will contain the unexpanded # variables that don't resolve. test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ndatadir=`eval echo ${datadir}` ndatadir=`eval echo ${ndatadir}/crossfire-client` # Datadir should be working directory in Windows, as there is no set # installation directory (choosable at installation time) if eval "test x$win32 = xyes" ; then ndatadir="." fi # Do this twice to cover variables within variables. nbindir=`eval echo ${bindir}` nbindir=`eval echo ${nbindir}` AC_DEFINE_UNQUOTED(CF_DATADIR, "${ndatadir}", [Location of read-only machine independent data.]) AC_DEFINE_UNQUOTED(BINDIR, "${nbindir}", [Location of other binaries.]) AC_DEFINE_UNQUOTED(MINLOGLEVEL, ${MINLOGLEVEL}, [Default logging level.]) AC_SUBST(CF_DATADIR) # Make all Makefiles, even if CF_SUBDIRS are not set for that directory. # since CF_SUBDIRS won't be set in the top level Makefile, we don't descend # into these subdirs. AC_CONFIG_FILES([ Makefile common/Makefile sound-src/Makefile gtk-v2/Makefile pixmaps/Makefile gtk-v2/glade/Makefile gtk-v2/src/Makefile gtk-v2/themes/Makefile help/Makefile utils/Makefile ]) AC_OUTPUT AC_MSG_NOTICE([]) AC_MSG_NOTICE([Configuration summary....]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Paths]) AC_MSG_NOTICE([ prefix default value ${prefix}]) AC_MSG_NOTICE([ exec_prefix default value ${exec_prefix}]) AC_MSG_NOTICE([ Will put executables in $nbindir]) AC_MSG_NOTICE([ Will put config in $sysconfdir]) AC_MSG_NOTICE([ Will put data in $ndatadir]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Build options]) AC_MSG_NOTICE([ Will build GTK2 client? $gtkv2]) AC_MSG_NOTICE([ With OpenGL renderer? $opengl]) AC_MSG_NOTICE([ With SDL renderer? $use_sdl]) sound_system="" if eval "test x$sound = xyes"; then if eval "test x$sdl_sound = xyes"; then sound_system="$sound_system (SDL_mixer)" fi if eval "test x$alsa9_sound = xyes"; then sound_system="$sound_system (Alsa 0.9.x)" fi if eval "test x$alsa_sound = xyes"; then sound_system="$sound_system (Alsa)" fi if eval "test x$sgi_sound = xyes"; then sound_system="$sound_system (SGI)" fi if eval "test x$oss_sound = xyes"; then sound_system="$sound_system (OSS)" fi if eval "test x$sun_sound = xyes"; then sound_system="$sound_system (Solaris)" fi fi AC_MSG_NOTICE([ Will build sound server? $sound $sound_system]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Scripting options]) AC_MSG_NOTICE([ Will include lua interface? $lua_scripting]) crossfire-client-1.70.0/pixmaps/0000755000014500000120000000000011731277217013527 500000000000000crossfire-client-1.70.0/pixmaps/close.xbm0000644000014500000120000000051211731277006015256 00000000000000#define close_width 24 #define close_height 13 static const char close_bits[] = { 0x00, 0x00, 0x00, 0x26, 0x18, 0x73, 0x29, 0xa4, 0x10, 0x21, 0x24, 0x33, 0x29, 0x24, 0x14, 0xe6, 0x19, 0x73, 0x00, 0x00, 0x00, 0x40, 0xc4, 0x03, 0xc0, 0x46, 0x00, 0x40, 0xc5, 0x01, 0x40, 0x44, 0x00, 0x40, 0xc4, 0x03, 0x00, 0x00, 0x00 }; crossfire-client-1.70.0/pixmaps/coin.xpm0000644000014500000120000000101011731277006015111 00000000000000/* XPM */ static const char *const coin_xpm[] = { "20 16 5 1", " c None", ". c #000000", "+ c #FFD700", "@ c #FFFF00", "# c #DAA520", " ", " ... ", " ..+++.. ", " .+++@#++. ", " .++@++#+... ", " .++@+++..+++.. ", " .++@++.+++@#++. ", " .++@++.++@++#+. ", " .++@.++@+++#++. ", " .+++.++@+++#++. ", " ..+.++@+++#++. ", " ...++@##++. ", " .+++++++. ", " ..+++.. ", " ... ", " "}; crossfire-client-1.70.0/pixmaps/unpaid.xbm0000644000014500000120000000031011731277006015425 00000000000000#define unpaid_width 24 #define unpaid_height 6 static const char unpaid_bits[] = { 0x29, 0x1d, 0x69, 0x69, 0xa5, 0xaa, 0x69, 0x9d, 0xab, 0xa9, 0x85, 0xaa, 0x26, 0x85, 0x6a, 0x00, 0x00, 0x00 }; crossfire-client-1.70.0/pixmaps/unlock.xpm0000644000014500000120000000103111731277006015457 00000000000000/* XPM */ static const char *const unlock_xpm[] = { "20 16 6 1", " c None", ". c #7F7F7F", "+ c #BFBFBF", "@ c #FFFFFF", "# c #404040", "$ c #000000", " .. ", " +. ", " @#. ", " +. ", " +# ", " ++ ", " @+.+++...# ", " +.+.##...$ ", " @.+#$$#... ", " ++.#$$#..# ", " @...$$..#$ ", " +...$$..#. ", " ....$$.#.$ ", " +...###.## ", " ...##$.#$# ", " "}; crossfire-client-1.70.0/pixmaps/test.xpm0000644000014500000120000000143111731277006015147 00000000000000/* XPM */ static const char *const test_xpm[] = { "24 24 4 1", " c None", ". c #FFFFFF", "+ c #7F7F7F", "@ c #000000", "........................", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".++++++++++++++++++++++@", ".@@@@@@@@@@@@@@@@@@@@@@@"}; crossfire-client-1.70.0/pixmaps/magic.xpm0000644000014500000120000000040311731277006015246 00000000000000/* XPM */ static const char *const magic_xpm[] = { "24 6 2 1", " c None", ". c #000000", ".. .. . ... . ... ", ".. .. . . . . . . ", ". . . ... . ... . . ", ". . . . . . . . . . ", ". . . . ... . ... ", " "}; crossfire-client-1.70.0/pixmaps/applied.xbm0000644000014500000120000000031311731277006015566 00000000000000#define applied_width 24 #define applied_height 6 static const char applied_bits[] = { 0xe7, 0xa4, 0x3b, 0x11, 0x25, 0x49, 0x13, 0x25, 0x39, 0x11, 0x25, 0x09, 0xe7, 0x98, 0x0b, 0x00, 0x01, 0x00 }; crossfire-client-1.70.0/pixmaps/unidentified.xpm0000644000014500000120000000074311731277006016644 00000000000000/* XPM */ static const char *const unidentified_xpm[] = { "20 16 2 1", " c None", ". c #000000", " ", " .... ", " ...... ", " .. .. ", " .. .. ", " .. .. ", " .. .. ", " .. .. ", " .. ", " ... ", " ... ", " .. ", " ", " ", " .. ", " .. "}; crossfire-client-1.70.0/pixmaps/hand2.xpm0000644000014500000120000000110511731277006015162 00000000000000/* XPM */ static const char *const hand2_xpm[] = { "20 16 9 1", " c None", ". c #BFBFBF", "+ c #7F7F7F", "@ c #404040", "# c #FFFFFF", "$ c #DAA520", "% c #CD853F", "& c #A0522D", "* c #000000", " ..++@ . ", " #.++@ ..# ", " #.++@...@ ", " ..++@..@ ", " #..+++@ $%&%&% ", " #...+@@@ &&&%&&%% ", "#....@++@ &%$&%%$%", "...@@.++%$%$%$%%$$%$", "@@@ #.+%%*&*&*&%%%%", " #.++&%&%&%&%%%%", " #.+%*%***%%%%%", " #.+&%&%%%%%%&%", " #.+&%*&*%%%%&", " #.++&%&%&%& ", " #.++&&&% ", " #.++@ "}; crossfire-client-1.70.0/pixmaps/locked.xpm0000644000014500000120000000040411731277006015430 00000000000000/* XPM */ static const char *const locked_xpm[] = { "24 6 2 1", " c None", ". c #000000", "... ... ... .. . ", " . . . . . . . ", " . . . . .. ", " . . . . . . . . ", ".... ... ... .. .. ", " "}; crossfire-client-1.70.0/pixmaps/cursed.xbm0000644000014500000120000000031011731277006015432 00000000000000#define cursed_width 24 #define cursed_height 6 static const char cursed_bits[] = { 0x4e, 0x1a, 0x77, 0x51, 0xaa, 0x10, 0x41, 0x1a, 0x73, 0x51, 0x2a, 0x14, 0x8e, 0xa9, 0x73, 0x00, 0x00, 0x00 }; crossfire-client-1.70.0/pixmaps/lock.xpm0000644000014500000120000000102711731277006015121 00000000000000/* XPM */ static const char *const lock_xpm[] = { "20 16 6 1", " c None", ". c #BFBFBF", "+ c #FFFFFF", "@ c #7F7F7F", "# c #404040", "$ c #000000", " ", " .+..@@ ", " +#@@@@.# ", " .@ .@ ", " .# .# ", " .. @@ ", " +.@...@@@# ", " .@.@##@@@$ ", " +@.#$$#@@@ ", " ..@#$$#@@# ", " +@@@$$@@#$ ", " .@@@$$@@#@ ", " @@@@$$@#@$ ", " .@@@###@## ", " @@@##$@#$# ", " "}; crossfire-client-1.70.0/pixmaps/16x16.png0000644000014500000120000000107211731277006014736 00000000000000‰PNG  IHDR(-SqPLTEÿÿÿÂÁ§pR/-jfaÿúú;66PRTî4Âÿ<*OQQTQQY[[+¹!æ ^ÿ-¤ùB1$íííµµµ|||QQQUVV³Ú ]þ.¥ùððð®®®uvvRPP­­­uuu/¶!Þaÿ/¨ÿñôö¯°³vwzQQSUUV!ªÈ2ÚvÎH1û׽õ}€}LZW,WWMpl@¡›g˵‰ÿ×¹˜èÞ®¦99[ lmp“”–º¼¾öðì"@Ìÿ#ÿÌ'¹¼¡tuu“““ºººóëæ =Éÿ ùÇ.–™Œº¹¹2..™šš øÔOL[òòëŽŠŠº»»ÿr¯¨ ‚‚oggÒÔÔõíè@Îÿ ÿ åâÙwuu-((óëå&PyÞ…ÿÿüUIr/„IDATWcb€F(ÍÂÌ ,¬¬Lì œNNΜ‚\\.0âˆÀGŸ¨ˆj03à U+ææààA2Cža7àØÉ ;@±± Bæ@ÝÁÆÆ&..Žä°© 0±¯îÒžnæn¦`&CvàC¿>IEND®B`‚crossfire-client-1.70.0/pixmaps/damned.xbm0000644000014500000120000000031011731277006015375 00000000000000#define damned_width 24 #define damned_height 6 static const char damned_bits[] = { 0x8f, 0x6c, 0x09, 0x52, 0x6d, 0x0b, 0xd2, 0x55, 0x0b, 0x52, 0x55, 0x0d, 0x4f, 0x45, 0x09, 0x00, 0x00, 0x00 }; crossfire-client-1.70.0/pixmaps/all.xpm0000644000014500000120000000077011731277006014745 00000000000000/* XPM */ static const char *const all_xpm[] = { "20 16 4 1", " c None", ". c #A0522D", "+ c #CD853F", "@ c #000000", " ", " .+ ", " .+.. ", " @+..@ ", " .@@@ ", " .+.+@+ ", " .+.+.+.. ", " .+.+.+..@. ", " +.+......@. ", " .+......@.@ ", " +.+....@.@. ", " .+....@.@.@ ", " +..@.@.@.@ ", " +@.@.@.@ ", " @.@.@ ", " "}; crossfire-client-1.70.0/pixmaps/hand.xpm0000644000014500000120000000110411731277006015077 00000000000000/* XPM */ static const char *const hand_xpm[] = { "20 16 9 1", " c None", ". c #FFFFFF", "+ c #BFBFBF", "@ c #7F7F7F", "# c #404040", "$ c #A0522D", "% c #000000", "& c #CD853F", "* c #DAA520", " .+@@# .+ ", " .+@@..++# ", " .+@@@+@@# ", " ..@@@@@# ", " .++@@@##$$ ", " .@@@@#%%$$$$ ", " .+@@##$$$$&%*&*&*&", " ++@##%&&&&&**&*&*&*", " +# &&%$%$%$&&&&*&*&", " $&$&$&$&&&&&&&&", " &%&%%%&&&&&&&&&", " $&$&&&&&&$&$&$&", " $&%$%&&&&$&$&$", " $&$&$&$ ", " $$$&@@# ", " .++@@# "}; crossfire-client-1.70.0/pixmaps/bg.xpm0000644000014500000120000000144611731277006014566 00000000000000/* XPM */ static const char *const bg_xpm[] = { "24 24 5 1", " c None", ". c #000000", "+ c #7F7F7F", "@ c #404040", "# c #BFBFBF", ".+++....................", "..@@+..#................", "..@@++#.................", "...@+++.................", "..@+@@.......#..........", "@@++@@.......#+.........", "@++@@........#+.........", "@+#..........#+........@", "++..........##+.......@@", "+#.........##++.......@+", "#..........#++........++", "...........#+........++#", "...........#.........++.", "..........@+++........+.", "..........@@++++#.....+#", "..........@@@@+++.....+#", "..........@++++##+....++", "##........@+++...+#....+", "++.......@@+.....+#.....", ".+.......@@+.....++.....", "........@@++......++....", "......@@@@+........++...", "##....@............+++##", "++#...................++"}; crossfire-client-1.70.0/pixmaps/dot.xpm0000644000014500000120000000073211731277006014761 00000000000000/* XPM */ static const char *const dot_xpm[] = { "20 16 2 1", " c None", ". c #000000", " ", " ........ ", " ............ ", " .............. ", " .............. ", " ................ ", " ................ ", " ................ ", " ................ ", " ................ ", " ................ ", " .............. ", " .............. ", " ............ ", " ........ ", " "}; crossfire-client-1.70.0/pixmaps/close.xpm0000644000014500000120000000071011731277006015274 00000000000000/* XPM */ static const char *const close_xpm[] = { "24 13 2 1", " c None", ". c #000000", " ", " .. . .. .. ... ", ". . . . . . . ", ". . . . .. .. ", ". . . . . . . ", " .. .... .. .. ... ", " ", " . . .... ", " .. .. . ", " . . . ... ", " . . . ", " . . .... ", " "}; crossfire-client-1.70.0/pixmaps/sign_flat.xpm0000644000014500000120000207242711731277006016155 00000000000000/* XPM */ static const char *const sign_flat_xpm[] = { "500 500 3262 2", " c None", ". c #B4A9C1", "+ c #FDFDFD", "@ c #FBFBFB", "# c #F8F8F8", "$ c #F9F9F9", "% c #FAFAFA", "& c #FCFCFC", "* c #FEFEFE", "= c #F5F5F5", "- c #F2F2F2", "; c #EFEFEF", "> c #EDEDED", ", c #EEEEEE", "' c #ECECEC", ") c #E9E9E9", "! c #EAEAEA", "~ c #E8E8E8", "{ c #F3F3F3", "] c #F7F7F7", "^ c #F6F6F6", "/ c #F4F4F4", "( c #F1F1F1", "_ c #EBEBEB", ": c #E6E6E6", "< c #E2E2E2", "[ c #E1E1E1", "} c #DADADA", "| c #D9D9D9", "1 c #D4D4D4", "2 c #CFCFCF", "3 c #CDCDCD", "4 c #CCCCCC", "5 c #C9C9C9", "6 c #CBCBCB", "7 c #CACACA", "8 c #CECECE", "9 c #D0D0D0", "0 c #DDDDDD", "a c #E5E5E5", "b c #F0F0F0", "c c #E7E7E7", "d c #E3E3E3", "e c #E0E0E0", "f c #DBDBDB", "g c #D7D7D7", "h c #D5D5D5", "i c #D2D2D2", "j c #C7C7C7", "k c #C4C4C4", "l c #C1C1C1", "m c #BBBBBB", "n c #B6B6B6", "o c #B0B0B0", "p c #AAAAAA", "q c #A4A4A4", "r c #A1A1A1", "s c #9F9F9F", "t c #9D9D9D", "u c #9E9E9E", "v c #A2A2A2", "w c #B4B4B4", "x c #B9B9B9", "y c #BFBFBF", "z c #C6C6C6", "A c #DEDEDE", "B c #DFDFDF", "C c #D8D8D8", "D c #D3D3D3", "E c #D1D1D1", "F c #C8C8C8", "G c #C5C5C5", "H c #BDBDBD", "I c #AFAFAF", "J c #9A9A9A", "K c #959595", "L c #8E8E8E", "M c #888888", "N c #818181", "O c #7A7A7A", "P c #747474", "Q c #6E6E6E", "R c #6A6A6A", "S c #676767", "T c #686868", "U c #696969", "V c #666666", "W c #6C6C6C", "X c #6F6F6F", "Y c #757575", "Z c #7B7B7B", "` c #878787", " . c #8F8F8F", ".. c #989898", "+. c #A8A8A8", "@. c #ADADAD", "#. c #D6D6D6", "$. c #E4E4E4", "%. c #DCDCDC", "&. c #C0C0C0", "*. c #B2B2B2", "=. c #A7A7A7", "-. c #A6A6A6", ";. c #A0A0A0", ">. c #9C9C9C", ",. c #999999", "'. c #969696", "). c #939393", "!. c #909090", "~. c #828282", "{. c #7C7C7C", "]. c #6D6D6D", "^. c #636363", "/. c #5D5D5D", "(. c #585858", "_. c #525252", ":. c #4C4C4C", "<. c #454545", "[. c #3F3F3F", "}. c #3A3A3A", "|. c #383838", "1. c #363636", "2. c #373737", "3. c #353535", "4. c #393939", "5. c #3B3B3B", "6. c #404040", "7. c #494949", "8. c #515151", "9. c #595959", "0. c #616161", "a. c #717171", "b. c #787878", "c. c #7F7F7F", "d. c #858585", "e. c #8C8C8C", "f. c #9B9B9B", "g. c #A5A5A5", "h. c #AEAEAE", "i. c #BABABA", "j. c #C3C3C3", "k. c #B7B7B7", "l. c #B1B1B1", "m. c #ABABAB", "n. c #A3A3A3", "o. c #919191", "p. c #8B8B8B", "q. c #838383", "r. c #7D7D7D", "s. c #737373", "t. c #6B6B6B", "u. c #646464", "v. c #626262", "w. c #606060", "x. c #5C5C5C", "y. c #5A5A5A", "z. c #545454", "A. c #4F4F4F", "B. c #474747", "C. c #313131", "D. c #303030", "E. c #2C2C2C", "F. c #252525", "G. c #202020", "H. c #1C1C1C", "I. c #171717", "J. c #151515", "K. c #191919", "L. c #181818", "M. c #141414", "N. c #161616", "O. c #1A1A1A", "P. c #131313", "Q. c #1B1B1B", "R. c #232323", "S. c #262626", "T. c #2B2B2B", "U. c #323232", "V. c #3E3E3E", "W. c #444444", "X. c #4A4A4A", "Y. c #555555", "Z. c #5E5E5E", "`. c #656565", " + c #777777", ".+ c #B3B3B3", "++ c #949494", "@+ c #898989", "#+ c #767676", "$+ c #707070", "%+ c #5B5B5B", "&+ c #424242", "*+ c #3C3C3C", "=+ c #343434", "-+ c #333333", ";+ c #2F2F2F", ">+ c #292929", ",+ c #1F1F1F", "'+ c #121212", ")+ c #0C0C0C", "!+ c #090909", "~+ c #0D0D0D", "{+ c #070707", "]+ c #0A0A0A", "^+ c #050505", "/+ c #080808", "(+ c #040404", "_+ c #0E0E0E", ":+ c #060606", "<+ c #101010", "[+ c #0F0F0F", "}+ c #1D1D1D", "|+ c #242424", "1+ c #272727", "2+ c #2D2D2D", "3+ c #B8B8B8", "4+ c #929292", "5+ c #8A8A8A", "6+ c #565656", "7+ c #4D4D4D", "8+ c #414141", "9+ c #212121", "0+ c #111111", "a+ c #0B0B0B", "b+ c #010101", "c+ c #7E7E7E", "d+ c #535353", "e+ c #4B4B4B", "f+ c #030303", "g+ c #020202", "h+ c #868686", "i+ c #B5B5B5", "j+ c #5F5F5F", "k+ c #2A2A2A", "l+ c #282828", "m+ c #2E2E2E", "n+ c #222222", "o+ c #484848", "p+ c #4E4E4E", "q+ c #575757", "r+ c #464646", "s+ c #BEBEBE", "t+ c #1E1E1E", "u+ c #979797", "v+ c #8D8D8D", "w+ c #000000", "x+ c #848484", "y+ c #C2C2C2", "z+ c #727272", "A+ c #3D3D3D", "B+ c #505050", "C+ c #ACACAC", "D+ c #A9A9A9", "E+ c #BCBCBC", "F+ c #FFFFFF", "G+ c #797979", "H+ c #808080", "I+ c #434343", "J+ c #FEFEFD", "K+ c #FEFDFB", "L+ c #FDFBF7", "M+ c #FCFAF4", "N+ c #FBF9F2", "O+ c #FDFCF8", "P+ c #F9F5EB", "Q+ c #F8F3E5", "R+ c #F7F1E1", "S+ c #FBF8F0", "T+ c #F4ECD8", "U+ c #F1E7CC", "V+ c #EEE3C5", "W+ c #F2EAD2", "X+ c #ECDEBA", "Y+ c #E5D3A3", "Z+ c #E2CD97", "`+ c #F3EBD5", " @ c #EBDDB7", ".@ c #E1CC94", "+@ c #D8BD74", "@@ c #D2B461", "#@ c #F7F1E2", "$@ c #E3D09C", "%@ c #D6BB6F", "&@ c #CBA848", "*@ c #C59E32", "=@ c #FAF7EF", "-@ c #F4EDD9", ";@ c #DDC788", ">@ c #CFAE56", ",@ c #C49B2D", "'@ c #BE9117", ")@ c #FAF6ED", "!@ c #F3EBD4", "~@ c #E8D8AE", "{@ c #DAC17C", "]@ c #CCA94A", "^@ c #C19725", "/@ c #BC8F14", "(@ c #F9F5EA", "_@ c #F2E9D1", ":@ c #E7D6A9", "<@ c #D7BD73", "[@ c #CBA745", "}@ c #C29826", "|@ c #BE9118", "1@ c #FDFCF9", "2@ c #F1E8CE", "3@ c #C9A441", "4@ c #C19623", "5@ c #BD9016", "6@ c #F0E6CB", "7@ c #E4D2A1", "8@ c #D6B96D", "9@ c #C8A33D", "0@ c #BF941D", "a@ c #BB8D10", "b@ c #C8A33E", "c@ c #D6BA6F", "d@ c #F0E6CA", "e@ c #E3D09B", "f@ c #D4B767", "g@ c #C7A13A", "h@ c #BC8E12", "i@ c #BF941E", "j@ c #C8A23B", "k@ c #D5B86A", "l@ c #EEE2C3", "m@ c #E0CC93", "n@ c #D1B25D", "o@ c #C69F35", "p@ c #BD9015", "q@ c #C0951F", "r@ c #C7A038", "s@ c #D3B564", "t@ c #E3CF9B", "u@ c #F9F4E8", "v@ c #FCFAF5", "w@ c #F6EFDE", "x@ c #EADCB6", "y@ c #DCC484", "z@ c #CEAC51", "A@ c #C39A2C", "B@ c #C59D30", "C@ c #D0B15A", "D@ c #E0CA90", "E@ c #EEE2C2", "F@ c #F8F3E6", "G@ c #FBF9F3", "H@ c #E6D6A8", "I@ c #D7BB70", "J@ c #C9A440", "K@ c #BC8E11", "L@ c #BA8B0C", "M@ c #BC8F13", "N@ c #CDAB4E", "O@ c #F6F0E0", "P@ c #FEFDFA", "Q@ c #F0E6C9", "R@ c #E1CD96", "S@ c #D0B059", "T@ c #BB8C0D", "U@ c #BF931C", "V@ c #C9A43F", "W@ c #D8BD75", "X@ c #F4EDDA", "Y@ c #ECDFBC", "Z@ c #DCC382", "`@ c #CBA746", " # c #BB8D0F", ".# c #BA8B0B", "+# c #BB8C0E", "@# c #E5D3A2", "## c #FBF8F1", "$# c #F4F3EF", "%# c #EFE9D8", "&# c #E3D4AB", "*# c #D5BA70", "=# c #C6A139", "-# c #BD9117", ";# c #C29827", "># c #D0AF58", ",# c #E1CD95", "'# c #F1E7CD", ")# c #DDDBD7", "!# c #DBD5C3", "~# c #D6C69A", "{# c #CCAF62", "]# c #C29A30", "^# c #BA8C0D", "/# c #C09622", "(# c #CDAB4F", "_# c #DFC98F", ":# c #F9F5E9", "<# c #BBB8B1", "[# c #BDB6A1", "}# c #C0B083", "|# c #C0A353", "1# c #BD9528", "2# c #BB8D12", "3# c #BE931E", "4# c #C8A545", "5# c #D8C07F", "6# c #E9DDBC", "7# c #F4F0E4", "8# c #F9F8F4", "9# c #8C8A85", "0# c #958E79", "a# c #A19062", "b# c #AD8F3E", "c# c #B68E20", "d# c #B98C10", "e# c #BA8C0E", "f# c #BC9019", "g# c #C29D3B", "h# c #CDB571", "i# c #DACCA8", "j# c #E7E1D3", "k# c #EAE9E4", "l# c #575652", "m# c #69614B", "n# c #7E6D3E", "o# c #9A7C2A", "p# c #AE8618", "q# c #B88A0E", "r# c #B98D14", "s# c #BA942E", "t# c #BEA35C", "u# c #C2B58F", "v# c #CBC5B4", "w# c #D4D2CC", "x# c #2C2B26", "y# c #413925", "z# c #615022", "A# c #886A19", "B# c #A77E11", "C# c #B6890C", "D# c #B98B0C", "E# c #B78A10", "F# c #B08A21", "G# c #A98D42", "H# c #A4956B", "I# c #A69F8C", "J# c #ACA9A3", "K# c #16140D", "L# c #2C240E", "M# c #513F11", "N# c #7F610F", "O# c #A37B0C", "P# c #B4870B", "Q# c #B98B0B", "R# c #B98A0B", "S# c #B5880E", "T# c #A98216", "U# c #957828", "V# c #827143", "W# c #7A735E", "X# c #7C786F", "Y# c #828180", "Z# c #0C0A04", "`# c #241C06", " $ c #503D0A", ".$ c #7F5F0B", "+$ c #A37A0A", "@$ c #B5880C", "#$ c #A67D0F", "$$ c #886A17", "%$ c #665424", "&$ c #514832", "*$ c #4C4940", "=$ c #4D4C4A", "-$ c #10100F", ";$ c #131109", ">$ c #312709", ",$ c #59440C", "'$ c #84640B", ")$ c #A67C0A", "!$ c #B6880B", "~$ c #A57C0C", "{$ c #83630E", "]$ c #554310", "^$ c #382F15", "/$ c #2B281E", "($ c #262624", "_$ c #272726", ":$ c #282723", "<$ c #2E291B", "[$ c #453917", "}$ c #6A5314", "|$ c #916E0E", "1$ c #AC810C", "2$ c #B7890B", "3$ c #A67C0B", "4$ c #81620B", "5$ c #513D08", "6$ c #2C2309", "7$ c #1C190F", "8$ c #11100E", "9$ c #51504E", "0$ c #514F47", "a$ c #59513C", "b$ c #6B5B2E", "c$ c #866B20", "d$ c #A27B13", "e$ c #B3860D", "f$ c #B88A0B", "g$ c #A77D0C", "h$ c #86650B", "i$ c #544008", "j$ c #2D2409", "k$ c #1B170C", "l$ c #0C0B07", "m$ c #8C8C8B", "n$ c #888682", "o$ c #858176", "p$ c #887E64", "q$ c #937F48", "r$ c #A2822B", "s$ c #B08717", "t$ c #B78A0E", "u$ c #B8890B", "v$ c #AC820D", "w$ c #8D6C10", "x$ c #5F4A11", "y$ c #382E12", "z$ c #211D12", "A$ c #0E0D0B", "B$ c #BCBBB9", "C$ c #BBB9B3", "D$ c #B6B1A3", "E$ c #B2A583", "F$ c #B29A57", "G$ c #B5912F", "H$ c #B88C16", "I$ c #B98B0D", "J$ c #B98A0C", "K$ c #B18610", "L$ c #997718", "M$ c #745E22", "N$ c #514627", "O$ c #373328", "P$ c #232321", "Q$ c #DFDFDD", "R$ c #DEDBD3", "S$ c #D6CFBD", "T$ c #CDBE93", "U$ c #C5AA61", "V$ c #BE982F", "W$ c #BB8E14", "X$ c #B58A13", "Y$ c #A88524", "Z$ c #90793A", "`$ c #756949", " % c #5D594D", ".% c #4C4B48", "+% c #F5F4F2", "@% c #F0EDE4", "#% c #E9E1CB", "$% c #DDCC9E", "%% c #CFB264", "&% c #C29B2F", "*% c #B98D15", "=% c #B5912E", "-% c #AC9454", ";% c #9D9273", ">% c #8E897D", ",% c #807E7B", "'% c #F2E9D2", ")% c #E4D3A4", "!% c #D3B565", "~% c #C49C2F", "{% c #BC8F16", "]% c #BF9A36", "^% c #C2AB6A", "/% c #C1B594", "(% c #BAB5A9", "_% c #B2B1AF", ":% c #FAF6EC", "<% c #F2E9D0", "[% c #C49C2E", "}% c #BD9018", "|% c #C5A03B", "1% c #D0B876", "2% c #D9CCA9", "3% c #DAD6C8", "4% c #D9D8D6", "5% c #E3D19D", "6% c #C39B2C", "7% c #C8A23D", "8% c #D8BF7B", "9% c #E8DCBA", "0% c #ECE8DA", "a% c #F0EFEC", "b% c #E4D19E", "c% c #C8A23C", "d% c #D9C07A", "e% c #ECE0BD", "f% c #F8F4E8", "g% c #FBFAF7", "h% c #E4D29F", "i% c #D2B35E", "j% c #D9BE77", "k% c #EBDDB8", "l% c #F8F4E7", "m% c #D3B462", "n% c #D7BC71", "o% c #D3B665", "p% c #C59D31", "q% c #D5B96C", "r% c #E9DBB2", "s% c #E4D2A0", "t% c #C59E33", "u% c #E8D9AF", "v% c #F7F2E3", "w% c #D4B666", "x% c #F6F0DF", "y% c #D4B768", "z% c #E9D9B0", "A% c #F7F2E4", "B% c #C69F34", "C% c #E8D8AD", "D% c #D5B869", "E% c #D5B86B", "F% c #F6F0DE", "G% c #FBFDF9", "H% c #FAFDF7", "I% c #F9FDF6", "J% c #FBFDF8", "K% c #FEFFFE", "L% c #E9DAB1", "M% c #F9FCF5", "N% c #F5FBF1", "O% c #F4FAEE", "P% c #F2F9EB", "Q% c #F3FAED", "R% c #F4FAEF", "S% c #F7FCF4", "T% c #BE9219", "U% c #F6FBF2", "V% c #F0F9E8", "W% c #E9F6DE", "X% c #E4F4D7", "Y% c #E2F3D3", "Z% c #E2F3D4", "`% c #E7F5DC", " & c #EEF8E6", ".& c #DDF1CC", "+& c #D1EBB9", "@& c #C7E7AB", "#& c #C3E5A4", "$& c #C8E8AD", "%& c #D1ECBA", "&& c #DFF1CE", "*& c #EBF6E0", "=& c #D7EEC3", "-& c #C3E6A5", ";& c #B0DD88", ">& c #A3D874", ",& c #9ED66D", "'& c #B1DE8A", ")& c #DCF0CA", "!& c #ECF7E2", "~& c #FCFEFB", "{& c #D8EEC4", "]& c #C0E4A0", "^& c #A7D97A", "/& c #90D058", "(& c #7FC93F", "_& c #79C635", ":& c #7FC83E", "<& c #92D05A", "[& c #AEDC85", "}& c #CAE9B0", "|& c #E7D7AA", "1& c #C4E6A6", "2& c #A5D978", "3& c #89CD4E", "4& c #75C42E", "5& c #68BF1B", "6& c #63BC14", "7& c #97D362", "8& c #BAE298", "9& c #DAEFC7", "0& c #EEF8E5", "a& c #EBF7E1", "b& c #D3B563", "c& c #C39A2A", "d& c #E6D5A7", "e& c #F5EEDB", "f& c #E6F4D9", "g& c #ABDB81", "h& c #8CCE52", "i& c #67BE1A", "j& c #60BB10", "k& c #5EBA0C", "l& c #6DC123", "m& c #8BCD50", "n& c #D3ECBD", "o& c #EAF6DF", "p& c #F7FBF3", "q& c #F5FBF0", "r& c #E5F4D8", "s& c #E4F3D6", "t& c #EDF7E4", "u& c #D2B35F", "v& c #EDF7E3", "w& c #D6EEC2", "x& c #B7E093", "y& c #95D25F", "z& c #78C634", "A& c #61BC11", "B& c #5EBB0D", "C& c #6BC020", "D& c #86CB48", "E& c #D0EBB8", "F& c #E1F2D2", "G& c #C2E5A3", "H& c #B8E195", "I& c #BEE39D", "J& c #CDEAB4", "K& c #DDF0CB", "L& c #F3EBD6", "M& c #FDFEFC", "N& c #C5E6A8", "O& c #82CA43", "P& c #6CC022", "Q& c #87CC4A", "R& c #ACDC82", "S& c #B7E092", "T& c #A0D66F", "U& c #94D15D", "V& c #92D15B", "W& c #9DD56B", "X& c #C8E7AC", "Y& c #F8FCF4", "Z& c #C09521", "`& c #CEAD53", " * c #D4EDBE", ".* c #B3DF8C", "+* c #8FCF57", "@* c #74C42D", "#* c #64BD16", "$* c #5DBA0B", "%* c #61BC12", "&* c #6FC227", "** c #8DCE53", "=* c #B2DE8B", "-* c #D4EDBF", ";* c #D9EFC6", ">* c #BCE29A", ",* c #73C32C", "'* c #B0DD87", ")* c #CBE9B1", "!* c #F1F9EA", "~* c #CDAA4D", "{* c #EFE5C8", "]* c #FEFEFC", "^* c #FCFEFA", "/* c #F2FAEC", "(* c #DFF1CF", "_* c #C1E5A2", ":* c #9ED66E", "<* c #6AC01F", "[* c #5FBB0E", "}* c #65BD16", "|* c #76C530", "1* c #DBF0C8", "2* c #CEEAB5", "3* c #ADDC84", "4* c #71C229", "5* c #63BD15", "6* c #6CC021", "7* c #7EC83D", "8* c #98D364", "9* c #BF931B", "0* c #60BB0F", "a* c #68BF1C", "b* c #A0D770", "c* c #E3F3D5", "d* c #C6E7AA", "e* c #A4D875", "f* c #70C228", "g* c #84CB46", "h* c #A2D773", "i* c #F0F9E9", "j* c #C69F36", "k* c #DBC381", "l* c #EDE1C0", "m* c #FDFBF6", "n* c #E1F2D1", "o* c #9BD569", "p* c #7BC739", "q* c #6EC125", "r* c #89CD4D", "s* c #D2ECBB", "t* c #C1E4A1", "u* c #9DD56C", "v* c #7DC83B", "w* c #69BF1D", "x* c #62BC13", "y* c #67BE19", "z* c #BE921A", "A* c #E8F5DD", "B* c #AEDD85", "C* c #8ACD4F", "D* c #78C533", "E* c #BDE39B", "F* c #DEF1CD", "G* c #BEE39C", "H* c #99D365", "I* c #6ABF1E", "J* c #9FD66F", "K* c #E5D4A4", "L* c #D6BA6E", "M* c #C6A037", "N* c #F5EFDD", "O* c #7CC73A", "P* c #85CB47", "Q* c #A8DA7C", "R* c #DAEFC8", "S* c #BCE39B", "T* c #96D261", "U* c #75C42F", "V* c #E7D7AC", "W* c #BAE297", "X* c #EFF8E7", "Y* c #DBF0C9", "Z* c #BBE299", "`* c #96D260", " = c #83CA44", ".= c #A4D876", "+= c #C6E7A9", "@= c #E0F2D0", "#= c #E6D5A6", "$= c #F3EAD3", "%= c #A7DA7B", "&= c #E7F5DB", "*= c #94D25E", "== c #65BE17", "-= c #66BE18", ";= c #D6EDC1", ">= c #C39A2B", ",= c #71C32A", "'= c #77C532", ")= c #B9E196", "!= c #6FC226", "~= c #C29928", "{= c #8BCE51", "]= c #72C32B", "^= c #9AD467", "/= c #7AC636", "(= c #C19724", "_= c #E2CE99", ":= c #BFE49F", "<= c #9CD56A", "[= c #CDEAB3", "}= c #B3DF8D", "|= c #BFE49E", "1= c #A2D772", "2= c #CFAE55", "3= c #7AC637", "4= c #C9E8AE", "5= c #CFAE54", "6= c #ABDB80", "7= c #7DC83C", "8= c #A5D977", "9= c #B6E091", "0= c #F1E8CF", "a= c #C09520", "b= c #8FCF56", "c= c #E6F4DA", "d= c #CCE9B2", "e= c #A9DA7D", "f= c #88CC4B", "g= c #D7BC72", "h= c #AADB7F", "i= c #6EC124", "j= c #81C941", "k= c #A1D771", "l= c #90D059", "m= c #CCE9B1", "n= c #FAF7EE", "o= c #D9BF78", "p= c #C9A542", "q= c #CFAF57", "r= c #91D059", "s= c #B5E090", "t= c #D5EDC0", "u= c #B4DF8E", "v= c #9BD468", "w= c #B8E194", "x= c #DBC380", "y= c #97D363", "z= c #76C531", "A= c #DEC88A", "B= c #93D15C", "C= c #80C840", "D= c #6DC124", "E= c #7BC738", "F= c #E2CE98", "G= c #C29929", "H= c #CAE8AF", "I= c #84CB45", "J= c #A6D979", "K= c #80C93F", "L= c #88CC4C", "M= c #84CA45", "N= c #78C532", "O= c #6CC121", "P= c #66BE17", "Q= c #81C942", "R= c #6EC226", "S= c #72C329", "T= c #66BE19", "U= c #86CC49", "V= c #A9DA7E", "W= c #D3ECBC", "X= c #67BF1A", "Y= c #75C430", "Z= c #7FC93E", "`= c #83CB45", " - c #6BC01F", ".- c #62BD14", "+- c #F5EEDC", "@- c #CAA643", "#- c #E2CF9A", "$- c #7AC737", "%- c #61BB11", "&- c #71C228", "*- c #64BD15", "=- c #EDE1C1", "-- c #DDC686", ";- c #CCAA4C", ">- c #CFEBB7", ",- c #9DD66C", "'- c #7DC83D", ")- c #69BE1C", "!- c #5FBB0F", "~- c #62BC12", "{- c #65BD17", "]- c #69BF1E", "^- c #70C227", "/- c #74C32D", "(- c #B5DF8F", "_- c #EFE4C6", ":- c #E0CB92", "<- c #A6D978", "[- c #63BC13", "}- c #60BC10", "|- c #61BC10", "1- c #65BE18", "2- c #C5E6A7", "3- c #80C940", "4- c #AEDC84", "5- c #61BB10", "6- c #5FBB0D", "7- c #64BE16", "8- c #B1DE89", "9- c #8DCF54", "0- c #5EBA0D", "a- c #6BC021", "b- c #8ECF55", "c- c #C0E49F", "d- c #9AD468", "e- c #5DBA0C", "f- c #80C83E", "g- c #6ABF1F", "h- c #6FC126", "i- c #CFEAB6", "j- c #AADB80", "k- c #86CB49", "l- c #6EC225", "m- c #B3DE8C", "n- c #70C226", "o- c #79C636", "p- c #95D261", "q- c #66BD18", "r- c #73C32B", "s- c #9FD66E", "t- c #63BD14", "u- c #92D059", "v- c #B2DF8C", "w- c #DFC98D", "x- c #F0E5C8", "y- c #B4E08E", "z- c #63BD13", "A- c #84CA46", "B- c #9CD56B", "C- c #ECDFBB", "D- c #99D466", "E- c #A9DB7E", "F- c #ACDC83", "G- c #DAC07B", "H- c #92D05B", "I- c #5EBB0E", "J- c #C7A139", "K- c #F4ECD7", "L- c #7EC83E", "M- c #E6D4A5", "N- c #FBFEFA", "O- c #70C127", "P- c #A3D773", "Q- c #75C530", "R- c #74C42E", "S- c #91D05A", "T- c #B3DE8D", "U- c #D1B25C", "V- c #67BF1B", "W- c #82C942", "X- c #A1D873", "Y- c #C6E6A9", "Z- c #DFCA8F", "`- c #FFFFFE", " ; c #6DC022", ".; c #73C42D", "+; c #D5EDBF", "@; c #CDAC50", "#; c #8DCE54", "$; c #A0D670", "%; c #CCA949", "&; c #FDFFFD", "*; c #BAE197", "=; c #67BE1B", "-; c #72C32A", ";; c #8DCF53", ">; c #D3EDBD", ",; c #E8F6DD", "'; c #F5FCF2", "); c #EFF8E6", "!; c #E9F5DE", "~; c #E3F3D4", "{; c #BFE39E", "]; c #AFDD86", "^; c #EDF8E4", "/; c #F3FBEE", "(; c #E8F5DC", "_; c #BDE39C", ":; c #D1EBBA", "<; c #F4FBF0", "[; c #C6E7A8", "}; c #A1D772", "|; c #CDE9B4", "1; c #F0F8E7", "2; c #D8EFC4", "3; c #F6FBF1", "4; c #77C533", "5; c #96D262", "6; c #DBF0CA", "7; c #CDE9B3", "8; c #E9F5DD", "9; c #85CB48", "0; c #A9DA7C", "a; c #E5F4D9", "b; c #A5D877", "c; c #7CC83A", "d; c #69BF1C", "e; c #82CA44", "f; c #C7E8AC", "g; c #E5F4D7", "h; c #D8EEC5", "i; c #FBFEF9", "j; c #93D15B", "k; c #71C329", "l; c #76C52F", "m; c #8CCF53", "n; c #ABDC81", "o; c #94D25F", "p; c #D5ECBF", "q; c #93D15D", "r; c #B6DF91", "s; c #C2E5A2", "t; c #BBE297", "u; c #D6EDC2", "v; c #EAF6DE", "w; c #EFF8E5", "x; c #8FD057", "y; c #6FC125", "z; c #95D260", "A; c #87CC4B", "B; c #C5E6A6", "C; c #CBE9B0", "D; c #E3F2D3", "E; c #F5FAF0", "F; c #8ECF56", "G; c #AFDD87", "H; c #F0F8E8", "I; c #E4F4D6", "J; c #CCEAB2", "K; c #90D057", "L; c #BEE49E", "M; c #FAFDF8", "N; c #E7F5DA", "O; c #8BCE50", "P; c #F8FCF3", "Q; c #E5F3D8", "R; c #C4E6A5", "S; c #90CF57", "T; c #DDF1CB", "U; c #ADDC83", "V; c #6CC123", "W; c #BAE196", "X; c #7DC73B", "Y; c #D4ECBE", "Z; c #ECF7E3", "`; c #6CC122", " > c #82CA42", ".> c #9ED66C", "+> c #CCEAB3", "@> c #DCF0CB", "#> c #E0F2D1", "$> c #E1F3D2", "%> c #7CC739", "&> c #A0D771", "*> c #D9EFC7", "=> c #FAFCF7", "-> c #FCFDFA", ";> c #F8FBF2", ">> c #F0F8E9", ",> c #E5F5D8", "'> c #E3F4D5", ")> c #FDFDFB", "!> c #DAF0C8", "~> c #6FC225", "{> c #ACDB82", "]> c #C7E7AA", "^> c #EDF8E5", "/> c #A2D874", "(> c #D4EDBD", "_> c #FCFDFB", ":> c #78C534", "<> c #9FD670", "[> c #E1F2D3", "}> c #F3FAEE", "|> c #F8F5E9", "1> c #FCFBF6", "2> c #A9DA7F", "3> c #B2DE8A", "4> c #B9E195", "5> c #B5DF90", "6> c #FCFCF9", "7> c #C9E9AE", "8> c #C8E8AE", "9> c #CBE8B0", "0> c #D2ECBC", "a> c #FAFDF6", "b> c #F9FDF5", "c> c #F5FAEF", "d> c #A7D97B", "e> c #7CC83B", "f> c #C4E6A7", "g> c #65BD18", "h> c #DCF1CB", "i> c #F8FBF5", "j> c #F4F9EF", "k> c #EFF6E9", "l> c #F9FCF7", "m> c #A2D873", "n> c #B3DF8E", "o> c #F0E8CE", "p> c #F4F3E4", "q> c #F5F9ED", "r> c #83CA45", "s> c #6DC122", "t> c #B6E090", "u> c #F7FBF2", "v> c #E0F2D2", "w> c #A4D976", "x> c #C7E7A9", "y> c #D9EEC6", "z> c #DEF1CC", "A> c #EAF7E0", "B> c #8ECF54", "C> c #94D15E", "D> c #BBE298", "E> c #8CCE51", "F> c #91D15A", "G> c #B3DE8E", "H> c #DFF1D0", "I> c #E0F0D3", "J> c #D6E9C6", "K> c #CDE3B9", "L> c #D0E5BD", "M> c #DDECCF", "N> c #EEF5E7", "O> c #F8FCF6", "P> c #F8FDF5", "Q> c #73C32D", "R> c #6EC126", "S> c #E3D3A0", "T> c #E7E4C0", "U> c #E4EDCB", "V> c #DDEFC9", "W> c #68BE1B", "X> c #D0ECB9", "Y> c #F6FCF3", "Z> c #C7E8AA", "`> c #8ACD4E", " , c #7EC83C", "., c #A8DA7B", "+, c #D7EEC4", "@, c #CEEAB6", "#, c #B6E092", "$, c #EFF9E7", "%, c #C9E8AD", "&, c #A8DA7D", "*, c #9BD469", "=, c #D9EEC5", "-, c #81CA42", ";, c #95D25E", ">, c #B7DF94", ",, c #B6DC95", "', c #A8D184", "), c #97C66D", "!, c #9BC872", "~, c #B8D89D", "{, c #DBEBCD", "], c #F3F8EE", "^, c #FAFDF9", "/, c #73C42C", "(, c #66BE1A", "_, c #8ECE54", ":, c #B4E08F", "<, c #D1B15B", "[, c #D0B968", "}, c #D6D091", "|, c #D2DEA5", "1, c #C2E09C", "2, c #AEDC83", "3, c #64BB16", "4, c #64BB18", "5, c #64BC18", "6, c #66BC1A", "7, c #6FC128", "8, c #9BD467", "9, c #DEF1CE", "0, c #E2F2D2", "a, c #E0F1CF", "b, c #DDF0CC", "c, c #AFDC86", "d, c #81C940", "e, c #EEF6E8", "f, c #EBF4E4", "g, c #F0F7EA", "h, c #F5F9F1", "i, c #F7FBF4", "j, c #EBF7E2", "k, c #D0EAB8", "l, c #76C432", "m, c #8BCD52", "n, c #60BB0E", "o, c #F7FCF3", "p, c #7CC639", "q, c #86C84A", "r, c #87C550", "s, c #7DBA48", "t, c #6EAF34", "u, c #71B139", "v, c #95C46C", "w, c #C8E0B2", "x, c #ECF4E4", "y, c #CFEAB7", "z, c #96D362", "A, c #6BC01E", "B, c #70C329", "C, c #70C328", "D, c #7BC838", "E, c #9CD46B", "F, c #C0E4A2", "G, c #BC941B", "H, c #BFA336", "I, c #C2B85C", "J, c #BDCC76", "K, c #ACD374", "L, c #93CE58", "M, c #7DC73A", "N, c #F2FAEB", "O, c #7CC73B", "P, c #77C632", "Q, c #74C32E", "R, c #64BC16", "S, c #66BC1B", "T, c #6BBB23", "U, c #6DBB28", "V, c #70BD2D", "W, c #78C137", "X, c #8BCC52", "Y, c #B2DD8C", "Z, c #DCF0C9", "`, c #B1DD89", " ' c #A2D774", ".' c #89CC4D", "+' c #76C430", "@' c #E4F3D5", "#' c #ADDD84", "$' c #CCE2B7", "%' c #C6DFAF", "&' c #C9E1B4", "*' c #D8E9C9", "=' c #DEEDD1", "-' c #E6F1DC", ";' c #EBF4E3", ">' c #F2F8ED", ",' c #F6FAF3", "'' c #FAFCF8", ")' c #ECF6E2", "!' c #C1E5A0", "~' c #B0DD89", "{' c #62BA14", "]' c #77C334", "^' c #8ECD56", "/' c #6AC01E", "(' c #65BC16", "_' c #6ABC20", ":' c #68B622", "<' c #69B02B", "[' c #65AA28", "}' c #69AC2E", "|' c #87BC57", "1' c #BCDAA1", "2' c #DDF1CD", "3' c #D5EDC1", "4' c #C0E4A1", "5' c #98D362", "6' c #80C83F", "7' c #81CA41", "8' c #D6EEC0", "9' c #F7F9F0", "0' c #F3F3E2", "a' c #ECE6C7", "b' c #E0D099", "c' c #CEB25A", "d' c #C09A28", "e' c #BB8F12", "f' c #B98C0C", "g' c #B68E0E", "h' c #B29616", "i' c #AEA72E", "j' c #A7BA47", "k' c #97C54B", "l' c #82C63C", "m' c #6FC124", "n' c #A3D875", "o' c #EAF7DF", "p' c #60BB11", "q' c #86CC4A", "r' c #A4D877", "s' c #9DD56A", "t' c #92CF59", "u' c #88CC4A", "v' c #7AC738", "w' c #68BA1F", "x' c #6CB92A", "y' c #6FB631", "z' c #76B93C", "A' c #8AC456", "B' c #AAD783", "C' c #CEE9B7", "D' c #E0F1D0", "E' c #77C633", "F' c #7CC638", "G' c #78C633", "H' c #71C22A", "I' c #77C531", "J' c #83CA43", "K' c #9ED56C", "L' c #99D465", "M' c #DDECD0", "N' c #BAD99E", "O' c #9AC772", "P' c #90C164", "Q' c #94C46A", "R' c #9BC773", "S' c #A4CC7F", "T' c #AED28E", "U' c #C2DDAA", "V' c #D4E7C4", "W' c #DCECCE", "X' c #E4F0D9", "Y' c #EAF3E2", "Z' c #F0F7EB", "`' c #F4F9F0", " ) c #F7FAF3", ".) c #F9FBF6", "+) c #EBF6E1", "@) c #84CB47", "#) c #B2DD8B", "$) c #ABDC80", "%) c #F3FAEC", "&) c #7EC63F", "*) c #68B921", "=) c #7AC13C", "-) c #8CCA57", ";) c #80C742", ">) c #68BE1C", ",) c #FAFCF6", "') c #A1D770", ")) c #64BA18", "!) c #5DB113", "~) c #63AD22", "{) c #63A925", "]) c #67AB2B", "^) c #82BA50", "/) c #B6D699", "() c #D8EEC3", "_) c #C5E7A8", ":) c #B9E297", "<) c #DEEFCA", "[) c #DCEAC1", "}) c #D8E1AE", "|) c #CECD86", "1) c #BFB350", "2) c #B59E26", "3) c #B09311", "4) c #B2910D", "5) c #B18F0C", "6) c #B38E0B", "7) c #B48E0B", "8) c #B58E0B", "9) c #B48E0C", "0) c #B0900C", "a) c #A9950D", "b) c #9F9E13", "c) c #93AD22", "d) c #84BA2B", "e) c #74BE24", "f) c #6ABE1C", "g) c #CCEAB4", "h) c #DFF1CD", "i) c #BAE195", "j) c #B2DE8C", "k) c #AADA7F", "l) c #8ACE50", "m) c #5FB90F", "n) c #63B719", "o) c #68B226", "p) c #66AD28", "q) c #6BAF30", "r) c #8BC15B", "s) c #B9DB9B", "t) c #E1F0D2", "u) c #D6EEC1", "v) c #BAE296", "w) c #62BD13", "x) c #F3F9EE", "y) c #CEEBB6", "z) c #C4E6A8", "A) c #F2F9EA", "B) c #9DC977", "C) c #74B23D", "D) c #6CAD32", "E) c #6FAF36", "F) c #6EAE34", "G) c #76B340", "H) c #7BB648", "I) c #84BB53", "J) c #8CBF5F", "K) c #97C56E", "L) c #A0CA7A", "M) c #AAD088", "N) c #B5D698", "O) c #C3DEAC", "P) c #CEE4BB", "Q) c #D6E8C6", "R) c #E1EED5", "S) c #E8F2DF", "T) c #FBFDFA", "U) c #E9F6DF", "V) c #C8E8AC", "W) c #F2F9ED", "X) c #B9DF96", "Y) c #90CB5B", "Z) c #76BC38", "`) c #6EB42F", " ! c #75B73A", ".! c #84C14E", "+! c #7DC340", "@! c #68BD1D", "#! c #CEEBB5", "$! c #E3F3D6", "%! c #C3E6A4", "&! c #B9E296", "*! c #BCE39A", "=! c #C5E7A7", "-! c #D0EBB7", ";! c #96D361", ">! c #87CC49", ",! c #71BF2D", "'! c #68B524", ")! c #67AD28", "!! c #62A823", "~! c #64A926", "{! c #7DB749", "]! c #B0D490", "^! c #DEEDD0", "/! c #F8FBF3", "(! c #F6FAF1", "_! c #B8E193", ":! c #AFDC85", "~ c #78B542", ",~ c #A3CD7D", "'~ c #CDE6B8", ")~ c #C3E5A3", "!~ c #7DC63A", "~~ c #7FC437", "{~ c #7DBF2D", "]~ c #7AB820", "^~ c #79B114", "/~ c #79AD0D", "(~ c #7BAB0B", "_~ c #7DAA0B", ":~ c #80A80B", "<~ c #83A70B", "[~ c #85A60B", "}~ c #84A60B", "|~ c #80A90C", "1~ c #77AE0C", "2~ c #6EB30E", "3~ c #65B80F", "4~ c #64BA10", "5~ c #67BC16", "6~ c #6BBE1E", "7~ c #7CC637", "8~ c #8FCF55", "9~ c #7CC839", "0~ c #98D363", "a~ c #88CD4C", "b~ c #5EB90D", "c~ c #61B715", "d~ c #6AB726", "e~ c #74B838", "f~ c #85BF51", "g~ c #A8D283", "h~ c #D1E7BE", "i~ c #EFF7E8", "j~ c #C7E8AB", "k~ c #DFF2D0", "l~ c #8CCF51", "m~ c #DAF0C7", "n~ c #F6FBF0", "o~ c #CAE9AF", "p~ c #79C634", "q~ c #D0EBB9", "r~ c #B7D79B", "s~ c #81B950", "t~ c #75B23F", "u~ c #66AA29", "v~ c #61A723", "w~ c #64A927", "x~ c #63A926", "y~ c #68AB2C", "z~ c #6BAD31", "A~ c #72B13A", "B~ c #73B13C", "C~ c #7AB545", "D~ c #7DB74A", "E~ c #88BD59", "F~ c #A2CB7D", "G~ c #ADD18D", "H~ c #DAEACB", "I~ c #E1EED4", "J~ c #E9F2E0", "K~ c #E3F1D7", "L~ c #D7ECC4", "M~ c #C4E4A7", "N~ c #A6D879", "O~ c #8ACC4F", "P~ c #78C635", "Q~ c #C3E5A6", "R~ c #A2D476", "S~ c #81C049", "T~ c #6AB02B", "U~ c #61A921", "V~ c #62A922", "W~ c #6CB12F", "X~ c #6BBD23", "Y~ c #61BB12", "Z~ c #B6DF90", "`~ c #E5F3D7", " { c #E6F5DA", ".{ c #F1FAEB", "+{ c #96CE63", "@{ c #80BF48", "#{ c #6BAF2F", "${ c #60A720", "%{ c #60A721", "&{ c #6EB033", "*{ c #8BC359", "={ c #AAD682", "-{ c #C4E4A6", ";{ c #F1F9E9", ">{ c #E4F3D7", ",{ c #A5D976", "'{ c #68BD19", "){ c #66BC15", "!{ c #65BA11", "~{ c #66B70E", "{{ c #63B70C", "]{ c #65B60B", "^{ c #64B60B", "/{ c #67B50B", "({ c #69B40B", "_{ c #6BB30B", ":{ c #6AB30B", "<{ c #63B90D", "[{ c #66BA12", "}{ c #73BE23", "|{ c #84C63D", "1{ c #98D05F", "2{ c #A8D97A", "3{ c #5EBA0E", "4{ c #73BF30", "5{ c #89C753", "6{ c #A4D27B", "7{ c #C4E2AB", "8{ c #E2F0D6", "9{ c #F5FAF1", "0{ c #91D058", "a{ c #C9E7AD", "b{ c #C3E5A5", "c{ c #ABDB82", "d{ c #86CC48", "e{ c #B4DF8D", "f{ c #DFF2CF", "g{ c #9AD466", "h{ c #7EC93D", "i{ c #C5DFAD", "j{ c #95C46B", "k{ c #79B544", "l{ c #6CAD31", "m{ c #83BA52", "n{ c #A7CE85", "o{ c #B1D493", "p{ c #BAD99F", "q{ c #BEDCA3", "r{ c #BEDCA2", "s{ c #B6DB97", "t{ c #A5D47D", "u{ c #90CB5A", "v{ c #7AC339", "w{ c #6BBE22", "x{ c #63BB17", "y{ c #73C22C", "z{ c #A0D76F", "A{ c #B8E094", "B{ c #AADA80", "C{ c #8CCA54", "D{ c #70B931", "E{ c #62AC21", "F{ c #5FA71E", "G{ c #5FA81F", "H{ c #67AF28", "I{ c #72B932", "J{ c #6BBC23", "K{ c #84CA47", "L{ c #7BC33B", "M{ c #6EB82E", "N{ c #64AD24", "O{ c #5FA71F", "P{ c #65AD24", "Q{ c #80C541", "R{ c #92CF5A", "S{ c #B0DE88", "T{ c #67BD18", "U{ c #65BB14", "V{ c #63BA10", "W{ c #62B90D", "X{ c #5FB90B", "Y{ c #60B80B", "Z{ c #62B80B", "`{ c #61B80B", " ] c #61B80C", ".] c #69B710", "+] c #74BA1E", "@] c #87C139", "#] c #98CC58", "$] c #A3D46F", "%] c #A4D873", "&] c #9AD469", "*] c #6DC025", "=] c #83C946", "-] c #A2D574", ";] c #C1E3A3", ">] c #DCEFCC", ",] c #F9FCF6", "'] c #E0F2CF", ")] c #9FD76F", "!] c #89CC4C", "~] c #EFFAE7", "{] c #98D365", "]] c #6ABF1D", "^] c #C9E9AF", "/] c #B7E192", "(] c #F6FBF3", "_] c #E6F2DD", ":] c #CAE2B5", "<] c #6FAF37", "[] c #65A928", "}] c #67AA2A", "|] c #6AAC30", "1] c #7FB84C", "2] c #85BB55", "3] c #88BD58", "4] c #8BC05C", "5] c #89C059", "6] c #81BE4C", "7] c #75BA38", "8] c #64B51B", "9] c #61B616", "0] c #63B817", "a] c #69BB1F", "b] c #79C337", "c] c #92CE5D", "d] c #B2DC8B", "e] c #CEEAB7", "f] c #E6F3DA", "g] c #EEF9E7", "h] c #85CB46", "i] c #ACDB81", "j] c #EAF6E0", "k] c #78C237", "l] c #66B421", "m] c #5EAA1C", "n] c #5DA61C", "o] c #5EA61D", "p] c #64AC23", "q] c #71B831", "r] c #6EBE28", "s] c #C3E6A6", "t] c #D6EDC0", "u] c #6BBF20", "v] c #68BB1E", "w] c #62B419", "x] c #60AC1C", "y] c #5DA71C", "z] c #5EA71D", "A] c #5FAB1B", "B] c #63B41C", "C] c #78C432", "D] c #77C22D", "E] c #73BE22", "F] c #6EB917", "G] c #69B60F", "H] c #66B60C", "I] c #66B60B", "J] c #63B70B", "K] c #64B70B", "L] c #6AB50D", "M] c #75B415", "N] c #83B929", "O] c #8FC444", "P] c #97CC58", "Q] c #96D05D", "R] c #8ECF53", "S] c #BBE198", "T] c #B2DD8A", "U] c #8ED055", "V] c #61BB0F", "W] c #AEDB86", "X] c #9FD470", "Y] c #8ACB50", "Z] c #7AC538", "`] c #6CC024", " ^ c #9BD568", ".^ c #60BC11", "+^ c #F2F9EC", "@^ c #F1F8EB", "#^ c #EDF5E5", "$^ c #E9F3E0", "%^ c #D6E8C5", "&^ c #C3DDAB", "*^ c #A9CF87", "=^ c #7BB647", "-^ c #6DAE33", ";^ c #62A824", ">^ c #69AC2D", ",^ c #66AA2A", "'^ c #6AAD2F", ")^ c #6AAD2E", "!^ c #68AD2A", "~^ c #64AC24", "{^ c #61AC1E", "]^ c #5EAD19", "^^ c #5EAE17", "/^ c #60B11A", "(^ c #67B522", "_^ c #76BD38", ":^ c #8CC758", "<^ c #A7D380", "[^ c #BDDEA0", "}^ c #CFE7BC", "|^ c #E5F1D9", "1^ c #E6F3DB", "2^ c #DBEFC9", "3^ c #C1E5A1", "4^ c #BDE29B", "5^ c #E5F5D9", "6^ c #F6FCF1", "7^ c #7DC73C", "8^ c #61B21A", "9^ c #5EAA1B", "0^ c #63AC22", "a^ c #70B831", "b^ c #73C031", "c^ c #B7E193", "d^ c #B7E091", "e^ c #68BC1E", "f^ c #63B619", "g^ c #61AF1B", "h^ c #5EA91B", "i^ c #5FAA1C", "j^ c #60AF1A", "k^ c #64B61B", "l^ c #67BC1B", "m^ c #A6DA79", "n^ c #7BC639", "o^ c #64BC14", "p^ c #A1D871", "q^ c #A0D671", "r^ c #99D364", "s^ c #92CE58", "t^ c #8BC848", "u^ c #84C035", "v^ c #7BB820", "w^ c #75B212", "x^ c #72B00D", "y^ c #73AF0B", "z^ c #74AE0B", "A^ c #75AE0B", "B^ c #70B00B", "C^ c #6DB20B", "D^ c #70B10C", "E^ c #75B00F", "F^ c #7CB319", "G^ c #83B92A", "H^ c #86C139", "I^ c #85C640", "J^ c #7EC73B", "K^ c #76C533", "L^ c #5FBC0F", "M^ c #69BE1D", "N^ c #7FC740", "O^ c #A2D674", "P^ c #C3E4A8", "Q^ c #DEEFCF", "R^ c #E7F4DC", "S^ c #E2F2D4", "T^ c #A3D576", "U^ c #A3D377", "V^ c #9CCE70", "W^ c #95CC65", "X^ c #8FCA5B", "Y^ c #86C94B", "Z^ c #7CC63C", "`^ c #78C535", " / c #7EC73D", "./ c #80C841", "+/ c #7EC93E", "@/ c #6FC327", "#/ c #67BD19", "$/ c #61B912", "%/ c #61BA12", "&/ c #65BD19", "*/ c #71C22B", "=/ c #90CF58", "-/ c #D2EBBB", ";/ c #E9F6DD", ">/ c #E9F3E1", ",/ c #D5E8C5", "'/ c #99C670", ")/ c #8FC162", "!/ c #78B443", "~/ c #5FA620", "{/ c #5FA720", "]/ c #60A821", "^/ c #5DA81B", "// c #6BB12D", "(/ c #77B63E", "_/ c #84BD52", ":/ c #90C363", "( c #A0D374", ",( c #A1D375", "'( c #A3D478", ")( c #A7D67D", "!( c #ABDA83", "~( c #B1DD8A", "{( c #7FC83F", "]( c #A3D873", "^( c #64B71A", "/( c #67B91F", "(( c #71BD2D", "_( c #84C748", ":( c #C1E3A2", "<( c #D2EBBC", "[( c #CCE9B3", "}( c #E5F1DB", "|( c #CFE4BC", "1( c #9DC876", "2( c #93C368", "3( c #61A821", "4( c #5EA71E", "5( c #62A923", "6( c #68AB2B", "7( c #71B039", "8( c #86BC56", "9( c #A0CB7A", "0( c #AFD58D", "a( c #ABD684", "b( c #96D064", "c( c #7DC73D", "d( c #6CBF21", "e( c #99D464", "f( c #CAE8AE", "g( c #5FB711", "h( c #5EB014", "i( c #5EAA1A", "j( c #63AB23", "k( c #6EB530", "l( c #73BC32", "m( c #6BBC24", "n( c #62BB16", "o( c #62BB13", "p( c #66BD19", "q( c #77C631", "r( c #8ECE55", "s( c #8CCD54", "t( c #8BCA53", "u( c #88C850", "v( c #85C74C", "w( c #85C84A", "x( c #84C948", "y( c #81C943", "z( c #8DCD52", "A( c #82C840", "B( c #79C32F", "C( c #72BD21", "D( c #6CB915", "E( c #67B60E", "F( c #68B40C", "G( c #79AB0B", "H( c #86A60B", "I( c #81A80B", "J( c #7CAA0B", "K( c #77AC0B", "L( c #73B00C", "M( c #6FB10C", "N( c #6DB30D", "O( c #6CB711", "P( c #68BA14", "Q( c #8DCF52", "R( c #60B910", "S( c #67BA1C", "T( c #72BA32", "U( c #7BBA42", "V( c #89C158", "W( c #A9D185", "X( c #C4E2AA", "Y( c #C7E5AB", "Z( c #6CBE23", "`( c #72BC30", " _ c #6EB430", "._ c #64AB26", "+_ c #64AA25", "@_ c #6BB02E", "#_ c #73B737", "$_ c #75B938", "%_ c #73B935", "&_ c #72B934", "*_ c #74BA37", "=_ c #7BBD41", "-_ c #87C253", ";_ c #92C763", ">_ c #9ACA6F", ",_ c #9FCC76", "'_ c #A1CD79", ")_ c #A0CC79", "!_ c #A1CD7B", "~_ c #A4CF7F", "{_ c #ABD389", "]_ c #B9DB9C", "^_ c #CCE5B5", "/_ c #D8EDC6", "(_ c #9CD66B", "__ c #61BA13", ":_ c #60B615", "<_ c #63B31C", "[_ c #66B123", "}_ c #6BB42A", "|_ c #76BA3A", "1_ c #89C455", "2_ c #A0D076", "3_ c #B6DA96", "4_ c #C0E0A5", "5_ c #BBDF9C", "6_ c #A8D87D", "7_ c #AFDE87", "8_ c #E2EFD7", "9_ c #D3E6C1", "0_ c #C8E1B3", "a_ c #BEDBA4", "b_ c #B0D391", "c_ c #A3CD7F", "d_ c #95C56A", "e_ c #86BE54", "f_ c #76B63D", "g_ c #69B02A", "h_ c #60AB1E", "i_ c #5DA51D", "j_ c #5EA61F", "k_ c #8ABF5A", "l_ c #90C661", "m_ c #88C552", "n_ c #78C138", "o_ c #6ABD21", "p_ c #65BC15", "q_ c #63BB14", "r_ c #5EB710", "s_ c #5EB114", "t_ c #5EA61E", "u_ c #6CB52B", "v_ c #66B61F", "w_ c #61B515", "x_ c #5FB612", "y_ c #6DBE25", "z_ c #7CC53B", "A_ c #86CA49", "B_ c #7BC73A", "C_ c #F8FCF5", "D_ c #83CA46", "E_ c #93CF5E", "F_ c #8FCE58", "G_ c #89CC4E", "H_ c #C4E5A7", "I_ c #66BB14", "J_ c #63B90F", "K_ c #60B90C", "L_ c #71B00B", "M_ c #79AC0B", "N_ c #68B40B", "O_ c #64B70C", "P_ c #64B80E", "Q_ c #61BA0E", "R_ c #60BA0E", "S_ c #C1E4A2", "T_ c #8DCF55", "U_ c #72C32C", "V_ c #66B81D", "W_ c #69AE2C", "X_ c #6FB035", "Y_ c #91C463", "Z_ c #BDE19D", "`_ c #66BB1A", " : c #69B824", ".: c #65B024", "+: c #60A820", "@: c #63AB22", "#: c #61AB20", "$: c #66AD27", "%: c #6CB030", "&: c #74B33B", "*: c #79B643", "=: c #7DB748", "-: c #7CB648", ";: c #7CB647", ">: c #80B84D", ",: c #9BC873", "': c #C1DDA7", "): c #DFEFD2", "!: c #BBE399", "~: c #66BA1A", "{: c #65B51F", "]: c #65AC27", "^: c #6CB031", "/: c #78B640", "(: c #86BE55", "_: c #91C464", ":: c #9AC971", "<: c #9FCE75", "[: c #97CD66", "}: c #83C847", "|: c #6EC127", "1: c #EEF8E4", "2: c #F2F8EC", "3: c #DFEED2", "4: c #D5E8C4", "5: c #C5E0AC", "6: c #B0D78D", "7: c #96CB68", "8: c #7EC043", "9: c #6AB628", "0: c #62B01C", "a: c #60AE1C", "b: c #63AE21", "c: c #67AE27", "d: c #69AE2D", "e: c #69AD2D", "f: c #65A927", "g: c #6EAF35", "h: c #74B43C", "i: c #75B73B", "j: c #6FB72E", "k: c #66B61E", "l: c #60B714", "m: c #6ABE1E", "n: c #A5D878", "o: c #B5E08E", "p: c #5FB810", "q: c #5EB313", "r: c #5FAC1A", "s: c #62AA23", "t: c #63AC23", "u: c #61AD1E", "v: c #5FAE1A", "w: c #5FAF18", "x: c #63B21B", "y: c #6EB92A", "z: c #81C245", "A: c #96CE65", "B: c #A3D477", "C: c #A2D576", "D: c #94D060", "E: c #79C737", "F: c #7CC737", "G: c #83CB47", "H: c #79C535", "I: c #6EC123", "J: c #B4DE8D", "K: c #5FB90C", "L: c #60B90B", "M: c #6AB40B", "N: c #6EB20B", "O: c #67B40B", "P: c #66B50B", "Q: c #64B81B", "R: c #6AB329", "S: c #8EC25E", "T: c #B2D890", "U: c #BAE099", "V: c #64BB17", "W: c #62B01D", "X: c #5FA91D", "Y: c #61A822", "Z: c #D9EBCA", "`: c #E4F2D9", " < c #D5ECC0", ".< c #6ABF20", "+< c #70BF2A", "@< c #5FA61F", "#< c #6BAD30", "$< c #75B33E", "%< c #7CB947", "&< c #82C04B", "*< c #7BC23B", "=< c #F6FCF2", "-< c #F6FAF2", ";< c #E4F1D7", ">< c #D2EABC", ",< c #B8DE97", "'< c #9ED270", ")< c #78C038", "!< c #74BE34", "~< c #79BE3C", "{< c #82C14A", "]< c #88C256", "^< c #8BC059", "/< c #82BB50", "(< c #76B33F", "_< c #65AD25", ":< c #62AF1D", "<< c #5FB117", "[< c #5FB414", "}< c #63B818", "|< c #76C333", "1< c #89CC4F", "2< c #9CD56C", "3< c #A5D979", "4< c #9AD569", "5< c #67BD1C", "6< c #64B71B", "7< c #64B120", "8< c #5EA81D", "9< c #5EA71C", "0< c #5EA91C", "a< c #67AF27", "b< c #8AC258", "c< c #9ECD75", "d< c #AAD485", "e< c #A8D580", "f< c #9BD16B", "g< c #86CA4B", "h< c #73C22B", "i< c #DAEFC6", "j< c #EEF7E5", "k< c #62BA0E", "l< c #61B90C", "m< c #62B80C", "n< c #63B60B", "o< c #68BC17", "p< c #6FBF23", "q< c #79C533", "r< c #9FD66D", "s< c #88CD4D", "t< c #D2EBBA", "u< c #E6F4D8", "v< c #5FBA10", "w< c #71B633", "x< c #7DBB46", "y< c #96CA68", "z< c #AED989", "A< c #B3DD8D", "B< c #62BB14", "C< c #60B814", "D< c #5FB116", "E< c #5EAB1A", "F< c #ADD18C", "G< c #D8EAC7", "H< c #DCEECB", "I< c #79C536", "J< c #82C746", "K< c #82C24A", "L< c #77B73E", "M< c #6CAF31", "N< c #69AD2E", "O< c #61A823", "P< c #68AC2C", "Q< c #74B739", "R< c #73BD33", "S< c #6BBD22", "T< c #B7E194", "U< c #F8FBF4", "V< c #EDF7E5", "W< c #BCE19B", "X< c #A9D97E", "Y< c #9CD36C", "Z< c #99D267", "`< c #9ED370", " [ c #A9D680", ".[ c #B5DB92", "+[ c #B9DB99", "@[ c #B2D691", "#[ c #A6CF83", "$[ c #70B038", "%[ c #63A924", "&[ c #5FA91E", "*[ c #5FAD1A", "=[ c #61B11A", "-[ c #62B518", ";[ c #61B714", ">[ c #62B915", ",[ c #70C129", "'[ c #8BCD51", ")[ c #5DB90C", "![ c #5DB70E", "~[ c #5EB511", "{[ c #60B515", "][ c #66B81E", "^[ c #73BF2E", "/[ c #85C949", "([ c #7EC63D", "_[ c #79C338", ":[ c #77BD39", "<[ c #71B635", "[[ c #69AE2B", "}[ c #63AA25", "|[ c #66AB28", "1[ c #70B136", "2[ c #7EB84A", "3[ c #8CC15D", "4[ c #96C869", "5[ c #94CA64", "6[ c #88C750", "7[ c #78C334", "8[ c #E7F4D9", "9[ c #8ACC4E", "0[ c #63BB12", "a[ c #63BB11", "b[ c #63B80D", "c[ c #62B70B", "d[ c #5EB90B", "e[ c #67B60C", "f[ c #6BB611", "g[ c #72B91B", "h[ c #7ABF2A", "i[ c #92CE57", "j[ c #9FD56C", "k[ c #B2DF8B", "l[ c #ECF7E1", "m[ c #F1FAEA", "n[ c #D4ECBD", "o[ c #C2E6A4", "p[ c #ADDC82", "q[ c #5FBA0F", "r[ c #66BA1D", "s[ c #6FBC2B", "t[ c #7CC13F", "u[ c #8CCA56", "v[ c #9BD26A", "w[ c #9FD56E", "x[ c #5DB410", "y[ c #5FAA1D", "z[ c #61AB1E", "A[ c #60AA1F", "B[ c #62AB21", "C[ c #66AD26", "D[ c #6DB031", "E[ c #7AB645", "F[ c #7EB84B", "G[ c #C2DDA9", "H[ c #D6EBC5", "I[ c #C8E7AE", "J[ c #A0D772", "K[ c #5FBA0D", "L[ c #A0D571", "M[ c #A4D479", "N[ c #9ECD74", "O[ c #88BE58", "P[ c #78B543", "Q[ c #66AB2A", "R[ c #69AD2C", "S[ c #72B635", "T[ c #6EBB2B", "U[ c #65BC18", "V[ c #8FD056", "W[ c #D7EDC2", "X[ c #CFEBB8", "Y[ c #B4DF8F", "Z[ c #C9E6AF", "`[ c #CBE6B2", " } c #C9E4B0", ".} c #C1DFA7", "+} c #B8D89A", "@} c #A7CF85", "#} c #92C366", "$} c #7BB746", "%} c #6BAE30", "&} c #5EA81B", "*} c #5EB015", "=} c #63B61A", "-} c #79C139", ";} c #9DD26C", ">} c #ABDA82", ",} c #5DB70D", "'} c #5DB311", ")} c #5DAF15", "!} c #5DAD17", "~} c #63B51B", "{} c #81C843", "]} c #9AD366", "^} c #9AD367", "/} c #98D068", "(} c #90C85F", "_} c #82BF4D", ":} c #61AB1F", "<} c #5EA81C", "[} c #5DA71B", "}} c #6DAF33", "|} c #76B43F", "1} c #7AB842", "2} c #7BBE40", "3} c #72BF30", "4} c #62BC11", "5} c #69BE1B", "6} c #67BD17", "7} c #66BB13", "8} c #64B90F", "9} c #62B90C", "0} c #5EBA0B", "a} c #6EB20C", "b} c #73B10E", "c} c #7BB216", "d} c #84B828", "e} c #92C244", "f} c #A2CF66", "g} c #B1DA83", "h} c #BFE29C", "i} c #F4FBEF", "j} c #D9EFC5", "k} c #BFE4A0", "l} c #BDE29A", "m} c #7AC638", "n} c #64BC15", "o} c #71C129", "p} c #60B811", "q} c #62B519", "r} c #62B31B", "s} c #64B31D", "t} c #67B422", "u} c #6BB629", "v} c #6FB72F", "w} c #76BA39", "x} c #8EC55D", "y} c #9CCB72", "z} c #A7D082", "A} c #ADD28C", "B} c #B0D390", "C} c #B1D492", "D} c #B5D697", "E} c #BCDAA2", "F} c #CBE2B6", "G} c #D6EAC5", "H} c #CCE8B3", "I} c #A8DA7E", "J} c #69C01E", "K} c #C1E3A1", "L} c #CAE6B0", "M} c #CAE4B1", "N} c #C3E0AA", "O} c #BCDBA1", "P} c #B1D491", "Q} c #89BF5A", "R} c #7FBA4B", "S} c #7AB942", "T} c #78BC3B", "U} c #6DBC26", "V} c #76C331", "W} c #ADDB85", "X} c #ABDA80", "Y} c #A8D97D", "Z} c #A1D773", "`} c #9DD56E", " | c #9DD46B", ".| c #A8D97C", "+| c #AFDE88", "@| c #BEE1A0", "#| c #C9E6B1", "$| c #CBE5B6", "%| c #BBDB9F", "&| c #9FCC77", "*| c #82BC4E", "=| c #62AA22", "-| c #5DAA19", ";| c #61AF1D", ">| c #77BB3B", ",| c #9ACE6E", "'| c #B5DA93", ")| c #B4DD8F", "!| c #9DD46D", "~| c #5DB014", "{| c #5DA91A", "]| c #5EAF16", "^| c #65B81A", "/| c #80CA41", "(| c #B6DE92", "_| c #B2DC8E", ":| c #A1D275", "<| c #88C551", "[| c #73BB35", "}| c #66B322", "|| c #60AB1C", "1| c #60A722", "2| c #6DBA28", "3| c #66BC19", "4| c #6DBF21", "5| c #69BD19", "6| c #6CB30B", "7| c #72AF0B", "8| c #78AC0B", "9| c #7EAA0C", "0| c #85A910", "a| c #8FAB1C", "b| c #9CB637", "c| c #ACC55E", "d| c #BED78A", "e| c #CEE5AD", "f| c #DCEFC8", "g| c #A2D872", "h| c #AEDD86", "i| c #92D15C", "j| c #9CD569", "k| c #C9E8AF", "l| c #BFE39D", "m| c #5FBB10", "n| c #5DB80C", "o| c #5DB80D", "p| c #60BA10", "q| c #68BC1F", "r| c #6CBD24", "s| c #7BC33C", "t| c #87C84D", "u| c #98CF66", "v| c #A8D780", "w| c #BBDE9A", "x| c #C9E5B1", "y| c #D6EAC3", "z| c #DCECCD", "A| c #DFEED3", "B| c #E2EFD6", "C| c #E0EED4", "D| c #E5F1DC", "E| c #E4F2DA", "F| c #D8EDC5", "G| c #E4F3D8", "H| c #EAF5DF", "I| c #EAF4E1", "J| c #E8F3DE", "K| c #C9E2B4", "L| c #B7D998", "M| c #A3D07A", "N| c #90C95E", "O| c #7EC440", "P| c #6DBF25", "Q| c #63BC15", "R| c #ADDC86", "S| c #93CF5D", "T| c #7CC43C", "U| c #62BA16", "V| c #5FB90E", "W| c #7CC53C", "X| c #78C337", "Y| c #79C238", "Z| c #7AC23A", "`| c #78C238", " 1 c #78C236", ".1 c #73C030", "+1 c #6FBE28", "@1 c #71C02C", "#1 c #D2EBBD", "$1 c #D6EBC3", "%1 c #C1E0A5", "&1 c #9FCF74", "*1 c #7FBE47", "=1 c #6AB22A", "-1 c #60AB1D", ";1 c #60A91F", ">1 c #6DB130", ",1 c #88C058", "'1 c #B7DA97", ")1 c #B2DB8C", "!1 c #65BB19", "~1 c #5DAE16", "{1 c #60B513", "]1 c #65BC19", "^1 c #94CF60", "/1 c #69BB21", "(1 c #62B718", "_1 c #66B51F", ":1 c #6DB62D", "<1 c #79B741", "[1 c #74B33C", "}1 c #69B228", "|1 c #75C52F", "11 c #D1ECBB", "21 c #A3D775", "31 c #6EC022", "41 c #66BC16", "51 c #62B90E", "61 c #65B70C", "71 c #69B50D", "81 c #75AE0C", "91 c #8AA30B", "01 c #90A00C", "a1 c #989F0F", "b1 c #A1A41F", "c1 c #B1B142", "d1 c #C4C773", "e1 c #D4DCA3", "f1 c #E2ECC8", "g1 c #EDF6E2", "h1 c #95D361", "i1 c #8ACD50", "j1 c #66BF19", "k1 c #5EB90E", "l1 c #5FB910", "m1 c #5EB60F", "n1 c #5EB610", "o1 c #5EB411", "p1 c #5FB611", "q1 c #5FB80F", "r1 c #6FC127", "s1 c #93D05D", "t1 c #C2E4A2", "u1 c #EDF8E3", "v1 c #F1F8EA", "w1 c #E4F1D8", "x1 c #D1E9BD", "y1 c #B7DE97", "z1 c #9AD267", "A1 c #7EC73E", "B1 c #6BBF21", "C1 c #DBEFCA", "D1 c #C4E5A8", "E1 c #AAD881", "F1 c #90CC5B", "G1 c #79C13A", "H1 c #6BBA26", "I1 c #64B61C", "J1 c #60B516", "K1 c #63BB16", "L1 c #65B91B", "M1 c #61B417", "N1 c #63B41B", "O1 c #61B31A", "P1 c #63B31D", "Q1 c #62B21B", "R1 c #62B21C", "S1 c #60B218", "T1 c #5EB214", "U1 c #60B415", "V1 c #CBE8B1", "W1 c #D3EBBE", "X1 c #B5DD91", "Y1 c #91CB5D", "Z1 c #74BD34", "`1 c #65B31F", " 2 c #5FAE19", ".2 c #89BE59", "+2 c #A9D086", "@2 c #BCDE9F", "#2 c #B9E097", "$2 c #88CB4C", "%2 c #63B51A", "&2 c #5EAC19", "*2 c #5EB611", "=2 c #ABDC82", "-2 c #66BD1A", ";2 c #61BA14", ">2 c #8CC857", ",2 c #97CA68", "'2 c #95C868", ")2 c #7DBA47", "!2 c #71B435", "~2 c #6BB32B", "{2 c #68B623", "]2 c #D8EFC3", "^2 c #7BC638", "/2 c #7FC83C", "(2 c #64B60C", "_2 c #6BB40D", ":2 c #71B310", "<2 c #78B112", "[2 c #7FAC10", "}2 c #86A70E", "|2 c #8EA20D", "12 c #959E0C", "22 c #9B9A0C", "32 c #A3980C", "42 c #A89711", "52 c #AF9D20", "62 c #BEAD46", "72 c #D0C67B", "82 c #E2DEB3", "92 c #F1F1DD", "02 c #F9FAF2", "a2 c #5EB711", "b2 c #61B518", "c2 c #61B318", "d2 c #61B219", "e2 c #61B01A", "f2 c #60B01A", "g2 c #62B11C", "h2 c #64B61D", "i2 c #68BB1F", "j2 c #6ABE20", "k2 c #BBE29A", "l2 c #CFEBB6", "m2 c #E2F2D3", "n2 c #E9F5DF", "o2 c #D1E9BC", "p2 c #B9DD99", "q2 c #9ED073", "r2 c #73BA33", "s2 c #66B223", "t2 c #60AE1B", "u2 c #5FAC1B", "v2 c #60AE1A", "w2 c #62B31A", "x2 c #6ABB23", "y2 c #7EC63E", "z2 c #B0DE89", "A2 c #63B918", "B2 c #63B31B", "C2 c #5FAB1C", "D2 c #5DAB18", "E2 c #5EAD17", "F2 c #64B919", "G2 c #69BD1E", "H2 c #99D368", "I2 c #7AC439", "J2 c #66B91C", "K2 c #5EA91D", "L2 c #98C66F", "M2 c #C1DEA7", "N2 c #CDE7B5", "O2 c #A4D775", "P2 c #6DBA29", "Q2 c #61AE1C", "R2 c #5DB112", "S2 c #5DB70F", "T2 c #5DB90D", "U2 c #70C128", "V2 c #85CA48", "W2 c #9CD26A", "X2 c #AAD882", "Y2 c #A9D681", "Z2 c #9BCF6D", "`2 c #89C754", " 3 c #78BF3A", ".3 c #6EBA29", "+3 c #67BA1E", "@3 c #74C52F", "#3 c #A1D671", "$3 c #89CB4B", "%3 c #71C127", "&3 c #62BB10", "*3 c #65B911", "=3 c #68B70F", "-3 c #70B20D", ";3 c #79B012", ">3 c #83AF19", ",3 c #8DAD1D", "'3 c #94A719", ")3 c #9A9F12", "!3 c #A0990D", "~3 c #A5960B", "{3 c #AA930B", "]3 c #AE910C", "^3 c #B39210", "/3 c #BA9921", "(3 c #C7AB49", "_3 c #D9C682", ":3 c #EADFBA", "<3 c #F5F1E0", "[3 c #FCFCF7", "}3 c #72C42C", "|3 c #5EB80E", "13 c #5FB712", "23 c #63B01E", "33 c #64AF21", "43 c #63AD21", "53 c #61AA21", "63 c #62AA21", "73 c #6EB52F", "83 c #7BC13C", "93 c #81C743", "03 c #74C42F", "a3 c #76C431", "b3 c #F7FCF2", "c3 c #CDEAB5", "d3 c #EBF5E1", "e3 c #A9D385", "f3 c #8BC35A", "g3 c #77B93E", "h3 c #6BB22C", "i3 c #5FA91C", "j3 c #64B020", "k3 c #73BD32", "l3 c #8FCD57", "m3 c #75BE34", "n3 c #6AB32A", "o3 c #6FBC2C", "p3 c #7FC640", "q3 c #9CD467", "r3 c #65BB17", "s3 c #5EB70F", "t3 c #5DB510", "u3 c #5EB312", "v3 c #63AF1F", "w3 c #6AAF2C", "x3 c #9CC874", "y3 c #DEEFD0", "z3 c #A3D675", "A3 c #82C547", "B3 c #6CB729", "C3 c #5FAE18", "D3 c #5DB80E", "E3 c #ACDB83", "F3 c #A6D97A", "G3 c #95D161", "H3 c #83C846", "I3 c #72C02C", "J3 c #68BC1D", "K3 c #64BC17", "L3 c #98D465", "M3 c #D7EEC2", "N3 c #9BD365", "O3 c #82C83F", "P3 c #72C127", "Q3 c #6FBD1E", "R3 c #72BA1D", "S3 c #77B619", "T3 c #7CB116", "U3 c #84AF19", "V3 c #8FAF23", "W3 c #9CB130", "X3 c #A5AF33", "Y3 c #AAA629", "Z3 c #AB9C19", "`3 c #AE930F", " 4 c #AF900C", ".4 c #B38F0C", "+4 c #B68D0C", "@4 c #B88E10", "#4 c #BE9722", "$4 c #CCA94B", "%4 c #DDC585", "&4 c #FBFCF6", "*4 c #62AF1F", "=4 c #61A922", "-4 c #64AA26", ";4 c #95CB65", ">4 c #A1D573", ",4 c #A4D977", "'4 c #D8ECC7", ")4 c #AFD68C", "!4 c #83BD4F", "~4 c #6AAE2D", "{4 c #63AA23", "]4 c #5FA81D", "^4 c #68B227", "/4 c #81C347", "(4 c #A2D675", "_4 c #97D262", ":4 c #A6D77B", "<4 c #99CD6A", "[4 c #7EBB47", "}4 c #68AD2C", "|4 c #6DB42D", "14 c #8BC856", "24 c #AAD87F", "34 c #5EB70E", "44 c #6EBA2A", "54 c #80BF49", "64 c #8CC25C", "74 c #8DC060", "84 c #99C770", "94 c #DDECCE", "04 c #EEF7E7", "a4 c #C1E5A3", "b4 c #A1D574", "c4 c #84C649", "d4 c #70BC2D", "e4 c #65B71D", "f4 c #7AC736", "g4 c #CEE9B4", "h4 c #69C01D", "i4 c #A3D774", "j4 c #BEE39E", "k4 c #72C22A", "l4 c #B7DE8F", "m4 c #9FD36B", "n4 c #90CB50", "o4 c #8AC541", "p4 c #8BC13C", "q4 c #90BB37", "r4 c #96B735", "s4 c #A0B63B", "t4 c #AAB746", "u4 c #B7BA56", "v4 c #BDB754", "w4 c #BCAB40", "x4 c #B89C26", "y4 c #B79315", "z4 c #B88E0D", "A4 c #DDC687", "B4 c #F5F0DF", "C4 c #F7F8EE", "D4 c #82C943", "E4 c #95D15F", "F4 c #62BB15", "G4 c #66B71D", "H4 c #64AA27", "I4 c #70B137", "J4 c #7BB745", "K4 c #B4DA93", "L4 c #C6E4A9", "M4 c #C7E7AC", "N4 c #D3ECBB", "O4 c #D1EBBB", "P4 c #E3F2D6", "Q4 c #C7E4AC", "R4 c #98CB6B", "S4 c #6EB133", "T4 c #5FAA1E", "U4 c #65AF24", "V4 c #77BC3B", "W4 c #97CE66", "X4 c #B1DD88", "Y4 c #BADD9B", "Z4 c #A4CF7D", "`4 c #80B94C", " 5 c #71B237", ".5 c #68AE2A", "+5 c #5EAB1B", "@5 c #6CB32E", "#5 c #8BC458", "$5 c #B5DB93", "%5 c #CFEAB9", "&5 c #7BC43A", "*5 c #9CD16D", "=5 c #B4D993", "-5 c #BEDDA4", ";5 c #CAE2B4", ">5 c #A5D77B", ",5 c #8CCC53", "'5 c #69BE1F", ")5 c #89CD4F", "!5 c #84CB44", "~5 c #F0F9E7", "{5 c #D1EAB8", "]5 c #BFE19A", "^5 c #B3DA84", "/5 c #ACD475", "(5 c #ADCF6E", "_5 c #B1C969", ":5 c #B8C76B", "<5 c #C0C873", "[5 c #C9CA7E", "}5 c #CFCA83", "|5 c #D2C57B", "15 c #CDB45D", "25 c #DFC98E", "35 c #F4F1E0", "45 c #EFF5E3", "55 c #C5E7A9", "65 c #64BE17", "75 c #6EC024", "85 c #73C12D", "95 c #75BE35", "05 c #71B634", "a5 c #68AC2B", "b5 c #70B037", "c5 c #7DB849", "d5 c #85BC54", "e5 c #90C364", "f5 c #9CC975", "g5 c #ADD38B", "h5 c #C7E0AF", "i5 c #DAEDC9", "j5 c #E4F2D7", "k5 c #9BD567", "l5 c #BCE29B", "m5 c #D9F0C6", "n5 c #E5F3D6", "o5 c #D6EDC3", "p5 c #B8DE96", "q5 c #8FC75D", "r5 c #6DB230", "s5 c #61A920", "t5 c #5DA81A", "u5 c #61AE1D", "v5 c #68B326", "w5 c #77BD3A", "x5 c #B3DC8E", "y5 c #D1EABA", "z5 c #E6F5DB", "A5 c #C1E4A0", "B5 c #BBE09B", "C5 c #BBDD9C", "D5 c #B0D68E", "E5 c #ABD287", "F5 c #A3CF7D", "G5 c #98C96C", "H5 c #85C14F", "I5 c #63B21C", "J5 c #64B41E", "K5 c #73BB33", "L5 c #91C95F", "M5 c #DDEDCC", "N5 c #E8F4DB", "O5 c #D7EEC1", "P5 c #86CB4A", "Q5 c #AFDC87", "R5 c #D0E9B9", "S5 c #E1EFD4", "T5 c #EBF5E3", "U5 c #DEF0CC", "V5 c #C5E6A9", "W5 c #7AC537", "X5 c #DBEEC6", "Y5 c #D2E8B5", "Z5 c #CEE4AA", "`5 c #CEDFA4", " 6 c #D1DDA2", ".6 c #D6DCA6", "+6 c #DCDEAE", "@6 c #E1DFB4", "#6 c #E5DDB3", "$6 c #E3D4A3", "%6 c #CEAD52", "&6 c #EFE6CA", "*6 c #F0F2DD", "=6 c #E9F4DB", "-6 c #66BD17", ";6 c #91CF5B", ">6 c #94CD61", ",6 c #8EC65C", "'6 c #84BD51", ")6 c #82BB4E", "!6 c #89BF59", "~6 c #91C366", "{6 c #9CC974", "]6 c #A7CF84", "^6 c #B4D696", "/6 c #C0DCA6", "(6 c #CBE3B7", "_6 c #D5E7C3", ":6 c #EAF4E2", "<6 c #BBE197", "[6 c #D5EDC2", "}6 c #C6E6AB", "|6 c #A7D77C", "16 c #87C74E", "26 c #6EB82D", "36 c #63B01F", "46 c #6BB926", "56 c #7BC13D", "66 c #93CE60", "76 c #B0DB8B", "86 c #CEE9B6", "96 c #96D161", "06 c #A6D67B", "a6 c #ACD984", "b6 c #AAD782", "c6 c #9AD06A", "d6 c #81C644", "e6 c #64B918", "f6 c #65B91A", "g6 c #75C032", "h6 c #97CF65", "i6 c #C0E2A2", "j6 c #E1F1D3", "k6 c #F4F9EE", "l6 c #B8E295", "m6 c #96D360", "n6 c #75C431", "o6 c #EAF4DB", "p6 c #E7F1D5", "q6 c #E5EECF", "r6 c #E8EDCE", "s6 c #EAECCF", "t6 c #EFEED6", "u6 c #F2EFDB", "v6 c #F1EBD3", "w6 c #EEF2DD", "x6 c #E2F1D2", "y6 c #7AC635", "z6 c #8DCE52", "A6 c #BDE09D", "B6 c #BBDD9B", "C6 c #B7D999", "D6 c #C0DDA5", "E6 c #CAE3B6", "F6 c #DBEFC8", "G6 c #E3F2D4", "H6 c #6EBD27", "I6 c #96D163", "J6 c #7FC73F", "K6 c #94D05F", "L6 c #BFE39F", "M6 c #CAE8B0", "N6 c #65BD15", "O6 c #F7FBF1", "P6 c #F5F9EE", "Q6 c #F5F8EC", "R6 c #F7F8ED", "S6 c #F9F8EE", "T6 c #FAF9F0", "U6 c #EDE0BE", "V6 c #D8BE76", "W6 c #EDE4C5", "X6 c #F1F0DB", "Y6 c #EBF3DB", "Z6 c #DBEFC7", "`6 c #C4E7A7", " 7 c #DCEFCA", ".7 c #E0F1D2", "+7 c #E2F1D4", "@7 c #E5F1DA", "#7 c #EEF6E7", "$7 c #70C22A", "%7 c #60B911", "&7 c #5EB90F", "*7 c #6EC026", "=7 c #CDEAB2", "-7 c #8BCE52", ";7 c #F3EDD9", ">7 c #F2F4E2", ",7 c #EAF5DC", "'7 c #BDE49D", ")7 c #7BC637", "!7 c #E6F5D9", "~7 c #F7F4E7", "{7 c #F3F6E7", "]7 c #EAF5DE", "^7 c #A6DA7B", "/7 c #F9FCF4", "(7 c #DFF2CE", "_7 c #F0F9EA", ":7 c #85CC48", "<7 c #FAF9F1", "[7 c #EAF6E1", "}7 c #91D05B", "|7 c #B1DE8B", "17 c #D3EDBE", "27 c #F2FAED", "37 c #B0DD86", "47 c #86CB47", "57 c #81CA40", "67 c #C6E6A8", "77 c #BCE299", "87 c #DCF0CC", "97 c #C8E7AB", "07 c #BEE49C", "a7 c #DDF0CD", "b7 c #DEF1CF", "c7 c #E4F4D8", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ @ & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * * + + @ % @ % = = - ; > , ' ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ' > ; ; { = # % + + * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + + & % @ @ $ # @ @ $ $ @ @ # $ @ % ] % @ # ^ ] ^ / { ( ; _ ' : : < [ } | 1 2 3 2 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 8 2 9 1 | 0 < a ) > ( b = ] ] ] @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + + @ % @ @ # ] ] ^ - ( b , ! ' _ ! ) ! ! _ _ ! ! ) ) ~ ~ ~ c a : a d e e f g h i 6 j k l m n o p q r r s t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u s v r q p w x y z 3 i h } A [ a c ~ ) _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ' ' ; { ] $ + . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + + @ % @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ ] ] ] ^ b - b > ! ' ) ~ c < B 0 C h D E 8 4 3 8 4 4 2 8 6 4 3 4 5 7 5 F z z G l H H n I p q s J K L M N O P Q R S S T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U U U W X Y Z ` ...s +.@.w x H l j 5 7 3 8 6 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 5 6 3 8 9 #.0 $.' = @ + . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & @ % # { { b > ' ' _ ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ~ : c : [ B %.| D 1 9 6 7 7 G &.H x *.@.=.-.r s u s ;.;.;.r r s s t >.J J ,...'.).!.L ` ~.{.Y ].T ^./.(._.:.<.[.}.|.|.1.1.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.|.4.4.5.6.7.8.9.0.U a.b.c.d.e.!.K f.u s ;.r s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.>.t u ;.g.h.i.F #.$.; # + . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ # ^ / - > ' ~ $.B 0 #.h E 4 4 8 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 4 F z F j.y m k.l.m.-.n.;.s ,.'.o.p.q.r.b.s.Q t.U T S R t.t.t.t.U V V V u.^.^.v.w.x.y.(.z.A.B.[.5.1.C.D.E.F.G.G.H.I.J.K.L.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.Q.I.N.H.R.S.T.U.4.V.W.X.A.Y.y.Z.`.T R t.t.U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.`.`.`.U Q +M t .+5 B ; # + . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ) a c d 0 | h 4 j j.H w h.p -.v s ;.u t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t >.f.J ++o. .@+N Z #+$+t.t.T u.w.%+Y.A.7.&+[.*+2.1.1.2.2.4.5.5.|.2.2.3.=+-+=+U.C.C.;+T.>+T.S.,+O.O.J.'+P.M.)+!+~+~+{+{+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+!+^+)+<+_+[+N.K.K.}+R.|+1+2+C.-+2.5.5.|.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+-+-+=+3.3.4.&+8.S q.n.z e b @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 5 6 6 5 j z &.3+.+p r J 4+5+N O P X t.U S S T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T V u.`.u.Z.y.6+_.7+B.8+*+4.|.1.1.-+E.1+1+9+Q.O.O.N.P.I.K.J.N.H.Q.N.J.K.I.P.M.I.M.'+J.J.[+[+M.0+]+!+)+/+(+/+a+^+b+/+a+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+a+^+(+a+a+{+]+[+~+)+'+N.M.N.H.Q.N.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.P.N.I.P.M.H.S.2.z.Z g.7 a ^ + . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N ).u s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.>.>.>.f.f.++L ` c+s.t.^.x.d+e+<.8+*+|.2.2.1.1.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.3.1.-+C.C.2+>+1+S.,+K.O.K.M.J.K.I.<+_+0+)+{+!+)+/+^+a+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+a+^+^+~+)+^+^+]+/+f+!+[+a+!+[+M.P.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.J.'+M.0+!+/+)+/+g+^+]+:+f+!+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+a+:+^+]+_+N.2+Y.h+i+C , % . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [+^+(+]+I.T.&+6+v.U U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.V `.`.`.`.j+9.8.B.[.|.U.;+k+9+}+H.Q.N.J.K.L.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.P.N.'+~+_+0+a+^+!+a+{+{+~+~+^+^+a+!+g+:+]+{+(+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+~+]+]+'+M.[+[+P.P.'+I.,+G.9+l+m+D.-+1.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.3.1.1.=+D.2+S.,+Q.K.P.~+_+[+]+{+a+~+/+{+[+[+/+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+]+^+(+:+^+:+I.}.W r 6 : ] . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n+)+(+f+:+~+I.R.D.3.1.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+-+-+3.1.3.=+U.2+F.,+H.N.'+P.P.a+{+)+~+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+a+!+f+:+a+{+b+:+]+{+{+[+<+]+!+[+[+)+[+M.P.'+N.K.J.N.H.Q.N.J.K.I.P.J.I.J.P.K.}+H.,+1+k+>+k+2+D.U.}.&+o+p+Y.y.w.^.u.`.T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S T S `.^.j+q+A.r+[.4.D.>+S.|+}+Q.H.Q.N.I.H.Q.N.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.'+J.P._+]+{+(+^+<+T.(.L s+B / * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r+Q.{+b+b+g+:+!+~+I.K.J.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.P.N.L.J.J.L.M.)+]+~+/+(+/+)+{+f+!+a+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+)+]+^+/+~+!+(+!+_+/+^+]+)+{+:+~+)+/+a+0+_+a+[+P.P.N.t+9+t+,+|+S.F.>+m+D.C.=+1.1.4.5.5.|.2.2.3.=+=+3.=+1.}.6.W.7.p+z.6+9.%+w.V ].Y r.h+p.!.u+,.t f.t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u t f...K v+q.{.s.T j+(.8.X.<.&+6.*+}.}.*+*+4.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+U.C.;+k+G.I._+/+{+~+G.o+c+*.C ; @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c+&+N.(+w+w+b+f+f+(+a+~+/+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+)+{+{+_+)+(+f+!+/+f+!+<+_+~+'+J.P.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.M.M.L.I.M.N.O.I.P.N.O.N.M.I.L.J.N.Q.H.O.,+F.S.F.>+m+U.|.[.W.W.o+e+A.d+q+%+j+^.`.V U t.t.t.t.U V V V `.`.V U W $+b.c+x+M v+ .).u+t n.p l.3+H k k z 7 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 6 6 F y+y 3+I =.s u+ .@+N Z #+z+X Q ].W t.t.U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.0.9.p+A+>+I.)+^+{+I.*+z++.1 > @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x c+8+N.^+b+w+b+f+f+(+)+~+{+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+)+{+{+_+[+/+{+)+]+^+/+a+/+^+]+)+{+/+[+0+a+a+0+'+'+L.n+F.1+E.C.U.=+1.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.3.1.1.3.3.2.3.3.2.|.2.1.2.|.1.1.1.2.1.4.*+[.&+B.:.B+z.q+x.^.R $+Y Z r.N h+5+v+o.K ,.f.t s ;.;.r r s s t >.>.u t s n.p C+l.k.H H l G F 7 8 h } %.< a a : ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ~ c d d %.C i 8 z y m k.o m.D+=.n.v v v r s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.'.5+O Z.V.9+~+(+(+P.2.W n.9 ' @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [ E+x+<.Q.{+g+b+f+:+!+_+I.K.J.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.P.N.K.J.N.H.Q.N.J.K.I.P.J.I.M.P.I.K.N.L.,+F.n+|+>+m+U.5.<.7+Y.y.Z.^.`.u.V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V S S V V T T T S U T T T T S V R W Q s.b.{.~.` e. .K J ;.-.m.h.l.k.m m &.j.z j 5 3 4 4 2 8 6 4 3 4 5 7 6 3 6 9 1 #.C %.e B < d : ) > ' ( - = = @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] % $ ^ { b ' ) c d B f C 1 1 i 2 8 9 8 6 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 y+i+>.O B+k+P.!+]+I.2.U ;.3 ! $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . % $.H @+p+G.!+g+b+^+)+I.R.;+3.2.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+-+=+3.1.2.4.5.5.|.2.2.3.=+-+=+-+=+1.2.4.A+&+o+7+8.Y.x.u.].b.~.e.!.++J f.t t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u t u u t s t t t s u u u s u u u s ;.r -.D+@.l.k.i.H y z 7 6 E g g } %.B B < $.: : ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ) ! ' ' ; ( { / ^ ] = # % @ @ 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+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+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+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+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+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+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+* * + + % # ] = b - b > ' > ' _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ < 1 3+v+x.U.I.a+)+K.2.T ;.8 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ c l !.q+1+~+(+f+!+N.T.&+Y.v.U U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.V V V U t.t.t.t.U V V V `.u.u.V S S W a. +{.q.M v+K >.n.C+n m l z z F 6 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 3 7 7 3 4 5 4 3 3 6 4 3 4 7 4 2 4 3 i h h | %.A B d a ~ ) > > ; - - / ^ ^ = % @ $ # @ @ $ $ @ @ # $ @ % ] % @ % @ + + * * 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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* + + @ % @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % ] $.G f.u.=+J.{+{+J.2.U ;.4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ~ 5 '.x.m+'+/+/+<+R.6.^.~.).>.s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.>.t u s ;.;.r r s s t >.f.>.f.>.u r v =.@.*.n m &.G 7 2 #.%.B $.c c ~ ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) _ ' ' > b { b ^ ] ] = @ @ % & + + * * 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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+@ ! 4 ;.R |.N.{+{+N.4.t.;.4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ! 6 J v.U.J.!+/+P.E._.r.g.s+z 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 5 6 3 4 4 2 8 6 4 3 4 5 7 7 6 5 6 8 2 9 h } } B [ a ~ > > - / ] ] @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ % @ + + * 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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ _ 2 ;.t.5.H._+_+H.5.t.;.2 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 7 t V =+P.^+^+'+C.j+o.m 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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+$ _ 8 r t.5.Q.[+[+Q.5.t.r 8 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 4 u T 1.N./+/+N.=+V >.j $.] @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ @ + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+@ ! 6 r t.|.N./+/+N.|.t.r 6 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ! 4 s U 2.J.{+{+J.2.U s 4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . % ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+# ) 3 s V 2.K.)+)+K.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+$ ) 4 t V 3.I.]+]+I.3.V t 4 ) $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . % ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ~ 5 >.V =+P.^+^+P.=+V >.5 ~ @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+% ~ 7 f.`.-+J./+/+J.-+`.f.7 ~ % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+] ~ 7 >.u.=+I.a+a+I.=+u.>.7 ~ ] . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+% ~ 6 f.u.-+M./+/+M.-+u.f.6 ~ % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ~ 5 >.V =+P.^+^+P.=+V >.5 ~ @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+$ ) 6 t V 3.N.]+]+N.3.V t 6 ) $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+# ) 3 u V 1.K.)+)+K.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ! 4 s U 2.J.{+{+J.2.U s 4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ! 4 ;.t.4.N.{+{+N.4.t.;.4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+$ _ 2 ;.t.5.H._+_+H.5.t.;.2 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+$ _ 8 r t.5.Q.[+[+Q.5.t.r 8 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 4 s U 2.N./+/+N.3.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ! 6 r t.|.N./+/+N.|.t.r 6 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 8 r R 4.O._+_+K.2.S >.4 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ! 4 s U 2.J.{+{+J.2.U s 4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . % _ 2 r t.4.I.!+!+N.3.`.J j ~ % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+# ) 3 s V 2.K.)+)+K.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ' 9 q Q 4.J.(+(+'+C.0.u+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+$ ) 4 t V 3.I.]+]+I.3.V t 4 ) $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ b 1 D+s.6.O.]+!+M.;+%+o.l d # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ~ 5 >.V =+P.^+^+P.=+V >.5 ~ @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . & , C l.{.o+R.0+)+P.k+z.@+H B { * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+% ~ 7 f.`.-+J./+/+J.-+`.f.7 ~ % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . { %.k.x+B+S._+:+a+9+e+N w %.{ + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+] ~ 7 >.u.=+I.a+a+I.=+u.>.7 ~ ] . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = B m p.Y.>+~+f+/+H.W.O h.g b + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+% ~ 6 f.u.-+M./+/+M.-+u.f.6 ~ % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] $.y+4+y.2+'+!+)+}+6.s.D+h > @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+@ ~ 5 >.V =+P.^+^+P.=+V >.5 ~ @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] c F '.w.U.N.a+~+Q.5.].q 2 ' % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+$ ) 6 t V 3.N.]+]+N.3.V t 6 ) $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 5 t `.-+M.{+:+J.1.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+# ) 3 u V 1.K.)+)+K.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ > 3 v t.|.N.{+{+P.C.0...z c @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+@ ! 4 s U 2.J.{+{+J.2.U s 4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ > D +.a.V.H.~+a+M.2+9.!.j.$.= 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+@ ! 4 ;.t.4.N.{+{+N.4.t.;.4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ; C I G+W.,+)+/+_+1+d+@+E+[ / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+$ _ 2 ;.t.5.H._+_+H.5.t.;.2 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - } i+H+X.,+/+b+/+G.e+q.i+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+$ _ 8 r t.5.Q.[+[+Q.5.t.r 8 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / e x ` B+|+a+^+]+t+<.Z I | b * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+@ ! 6 r t.|.N./+/+N.|.t.r 6 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / [ &.L 6+T.'+]+~+H.[.z+=.D ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+@ ! 4 s U 2.J.{+{+J.2.U s 4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % : z ++Z.;+P.{+/+N.2.R r 3 > @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+# ) 3 s V 2.K.)+)+K.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ 5 >.V =+P.(+^+'+-+u.J 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+$ ) 4 t V 3.I.]+]+I.3.V t 4 ) $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ , 2 g.Q }.K.]+!+M.;+x.).z : # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+@ ~ 5 >.V =+P.^+^+P.=+V >.5 ~ @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & , g C+P &+,+_+]+0+k+Y.v+s+< = 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+% ~ 7 f.`.-+J./+/+J.-+`.f.7 ~ % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - | .+c.7.G.]+(+a+|+A.` x 0 / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+] ~ 7 >.u.=+I.a+a+I.=+u.>.7 ~ ] . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / A x h+A.|+a+f+]+9+7.c.w | - 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+% ~ 6 f.u.-+M./+/+M.-+u.f.6 ~ % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = < s+L 6+T.'+]+_+,+I+#+m.C , & 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+@ ~ 5 >.V =+P.^+^+P.=+V >.5 ~ @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # : j ++Z.D.J.]+a+O.*+Q q 8 > @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+$ ) 6 t V 3.N.]+]+N.3.V t 6 ) $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ 5 u V =+P.^+^+M.1.T t 5 ~ % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+# ) 3 u V 1.K.)+)+K.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ , 2 q X *+K.!+!+M.D.Z.'.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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+@ ! 4 s U 2.J.{+{+J.2.U s 4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ > h C+G+<.9+<+~+M.E.6+e.s+e - * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+@ ! 4 ;.t.4.N.{+{+N.4.t.;.4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * - f w N :.F.[+{+)+R.7+q.n A { + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+$ _ 2 ;.t.5.H._+_+H.5.t.;.2 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / 0 m 5+d+S.)+g+:+H.r+{.I #.b + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+$ _ 8 r t.5.Q.[+[+Q.5.t.r 8 _ $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] d &.!.y.E.0+/+a+}+8+Y m.h , & 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+@ ! 6 r t.|.N./+/+N.|.t.r 6 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = a z '.w.-+I.)+_+}+V.Q g.9 ) % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+@ ! 4 s U 2.J.{+{+J.2.R s 4 ! @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ 4 t V 3.J.!+/+I.2.T u 7 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+# ) 3 u `.1.L.)+)+K.2.S ;.3 ) # . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 8 r W 4.J.^+^+'+C.v.u+k a $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+$ ) 5 f.u.=+I.]+]+I.1.S u 3 ! $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ; D +.s.[.H.a+]+M.2+9.L l d ^ * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ : z ,.v.C.'+^+^+M.1.T s 6 _ @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & ; | o O o+R.<+]+0+1+B+h+x A { * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% : G K j+;+P.{+/+N.2.R r 8 ' @ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . { f 3+x+B+|+~+(+!+,+7.c.*.| ( + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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 y+!.y.m+M.a+)+Q.*+X -.E ! % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = e E+e.6+>+_+^+!+H.I+b.C+#.; + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+= [ H e.Y.>+[+:+!+Q.6.P p 1 , & . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ d y+4+%+m+M.a+~+H.V.X =.D ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+/ %.3+h+A.F.)+f+{+H.<.Z I g b + . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # c j '.w.C.J.]+]+L.|.R r 3 ' % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( } o {.7.R.[+!+_+|+7+q.n 0 - + . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 5 t `.=+P.^+(+'+U.u.J j c @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ; 1 p P 6.}+_+a+P.T.6+p.y [ / * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ > 8 v W |.N./+/+P.m+/.++k a % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ _ 3 r W 4.I.{+{+P.D.j+K k a $ . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ' D D+z+[.H.~+]+'+T.Y.v+&.[ / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 7 f.u.-+M.{+{+N.2.T u 7 ! % . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * b C I O <.t+]+^+a+|+A.` x e / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+= a z ).x.;+M.a+~+H.A+a.=.9 ' @ . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - %.i+q.:.9+/+g+/+,+X.H+i+| - 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+= < s+v+Y.>+[+/+~+G.<.G+I C ; + . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / [ E+5+z.l+[+/+)+,+<.Z o | ; + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+{ %.3+d.A.R.!+g+!+G.e+N n } - . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = $.G ).%+;+J.a+~+}+[.s.D+1 > @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+- } .+c.7.9+)+^+~+F.8.@+m [ = . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ 7 J ^.-+M.{+{+I.}.W v 8 , @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& > g h.b.W.G.[+a+M.m+(.L l < = . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ _ 3 v ].}.L./+{+J.1.S u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ b D =.a.A+K.]+!+M.C.Z.K k : % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ b 1 m.#+&+,+<+_+L.-+0.'.5 c # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 8 v ].4.M.(+(+'+U.^.J j a @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + b } o Z 7.|+<+~+M.2+9. .y d ^ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% _ 2 ;.R |.I.!+!+N.3.`.f.5 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . { f n q.7+R.a+f+a+F.8.` 3+0 / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 8 r U 4.O._+~+K.|.S >.4 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = [ m ` 8.|+a+f+]+G.o+c+*.| - 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 s U 2.N./+/+N.3.T u 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = < &.e.Y.l+0+!+)+}+6.P p 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # : G 4+%+2+'+{+/+I.4.].n.2 , @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ c j J 0.D.0+f+f+P.-+T u 7 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ' 7 s T 2.N.!+/+J.-+v.J 5 ) % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ _ E g.Q V.}+_+)+N.C.Z.K j a ^ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + b h D+Y 6.H.]+:+[+T.9.!.l $.] 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ( #.I Z <.H.{+f+~+1+Y.e.E+e ^ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + - | w c+7.9+~+/+<+S.A.h+m e / * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * - A x q.p+S.0+]+[+|+e+H+n 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ A m 5+d+S.~+(+!+}+r+Z I 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] [ s+L (.k+[+^+!+Q.8+ +m.h ; + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ a k ++%+;+J.]+~+}+[.$+-.h ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # c 7 u+0.U.N.]+a+K.4.t.v 3 > % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 7 u T 3.M.^+^+M.=+V >.F c @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ , 2 n.Q }.I.!+!+M.C.w.u+z : @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ' 1 m.P 8+t+_+a+M.m+9. .l < / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * b C I Z r+,+a+:+~+F.8.` i.e / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - %.i+~.e+,+{+w+{+,+7.c.w | - 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / e i.M B+|+a+^+]+H.&+G+h.C ; + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / d j.!.q+E.'+]+a+O.A+$+=.D ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ c F ..w.C.P.:+{+N.|.t.v 3 , @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 4 ;.t.|.N.{+{+J.3.S u 7 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ b i D+P 8+t+[+~+L.=+w.u+5 c # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + b } o Z 7.|+0+)+M.m+y.o.&.$.^ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . { f k.x+7+R.a+(+a+S._.M i.A / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = [ m @+d+S.)+(+a+n+X.H+i+} - 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = d l .q+T.'+]+~+G.I+#+C+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # : z './.;+M.]+]+O.5.].q 8 , @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ F f.u.-+P.^+(+P.=+V t 5 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ > 3 r R 2.N./+/+P.;+/.'.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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ' i +.z+V.H.~+]+'+T.6+L l [ / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * b C I O W.t+]+^+a+|+A.` x e / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - %.i+q.:.9+/+g+/+,+7.c.i+| - 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / [ E+5+z.l+[+{+)+,+W.b.h.C ; + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = $.G 4+%+m+M.a+~+H.A+$+=.9 ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ 5 ,.^.U.M.{+:+N.1.S u 7 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ _ 3 r W 4.I.{+{+P.C.w.'.G a $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ; 1 m.Y 8+}+_+a+P.E.q+e.l < / * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ( f l.r.X.|+[+!+_+F.p+d.3+0 { + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / 0 x M 8.S.)+f+/+t+o+c+l.C ( + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ < s+L (.T.<+{+a+}+W.b.C+#.b + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ $.k 4+/.C.N.~+_+t+6.s.p 1 _ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % ~ j ..0.U.J.!+!+L.5.Q q 9 , @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ : F f.u.-+P.(+(+M.|.t.r 3 _ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % ! 7 >.V 1.N.!+!+I.2.R ;.3 _ % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 3 u S |.O.~+~+O.|.U ;.3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 4 t T 1.N./+/+N.2.U u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ) 7 u S 1.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 3 ;.S 2.L.)+)+L.3.`.>.3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ! 2 s T 2.L.]+]+I.3.`.J 5 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ' 3 v W 2.M.^+^+P.C.^.J j : @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ; i -.$+5.L.!+/+M.D.j+K k a @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ' h C+Y &+,+_+a+M.2+(.L l < / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * b C o Z r+,+a+:+~+|+B+` i.e / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - %.i+~.e+,+{+w+{+,+7.c+w | - 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / e i.M B+|+)+^+]+H.&+ +@.#.; + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / d j.o.9.E.'+]+a+O.*+Q g.9 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ c F f.v.U.P.:+{+J.2.T t 5 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 9 q X *+L./+{+M.U.w.K j.$.] 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ( #.h.Z B.n+0+_+N.m+Y.@+H B { + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + { B k.h+d+2+N._+'+|+X.c.l.} ( @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] [ y o.%+D.M.{+/+K.[.P +.D , @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ a k K w.U.P.{+{+J.|.W n.2 ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # c F ..v.-+N.a+a+I.3.S s 8 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ) 5 J v.U.M.{+{+M.=+`.>.7 ) $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ~ 5 >.u.U.'+f+f+'+-+`.>.5 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % ) 6 >.V =+N.!+!+N.=+V >.6 ) % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # ) 4 u S 2.K.~+~+K.2.S u 4 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ ! 4 t S 1.J./+/+J.1.S t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % . . . . . . . . . . . . . . . . . . . . . . ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 1.M.:+:+M.3.S t 7 ) @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T 2.L.)+)+L.1.`.f.3 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 2 ;.T 2.I.]+]+N.=+^.,.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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 8 n.W |.J.^+^+P.C.0.u+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ; D +.z+A+K.!+/+P.m+y.!.l < $ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ > #.o O r+9+<+)+M.>+_.h+x 0 - * 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+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+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+* - %.k.~.p+F._+{+a+G.o+{.o C ( + 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+/ [ E+v+Y.S.)+b+:+L.V.$+=.E _ + 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# : k '.j+m+0+:+/+I.3.u.>.6 ) % 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 1.M.^+^+P.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ) 8 ;.U 4.L.a+!+'+2+y.4+l d ] 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+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+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 s S 1.L.]+]+I.3.`.f.6 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+, 1 C+Y &+}+!+f+a+|+_.M i.e / 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# ) 2 v T |.K.)+)+L.1.^.f.5 ~ # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+( } w H+:.9+]+f+]+G.e+N w 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 2 v W |.J.{+:+P.U.v.u+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+= e m 5+d+k+0+]+_+,+W.b.l.| , & 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+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+F+F+F+F+F+F+F+F+F+F+F+@ , 9 -.$+5.I.{+{+'+m+x.++l < $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# : l !.y.m+M.!+a+Q.A+s.+.D ; @ 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+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+F+F+F+F+F+F+F+F+F+F+F+@ ; #.@.b.&+t+_+a+P.E.Y.@+m < / * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ a G ..0.D.'+^+^+J.4.Q n.3 > @ 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+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+F+F+F+F+F+F+F+F+F+F+F++ ( f i+H+e+|+<+!+_+|+7+N i+%.{ + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 J `.3.N./+/+I.|.R r 9 ' @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+/ B i.5+z.1+~+f+{+}+<.Z h.#., + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 4 >.S 2.O.~+~+O.4.U ;.2 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+^ a l ).x.m+<+{+]+Q.V.a.-.E ' + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 t S 2.I./+!+I.|.T s 3 ! % 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# : 7 J ^.3.K.)+~+O.|.T t 6 c # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 3.P.(+(+P.1.U u 6 ~ @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+& _ 2 v W 5.O.]+{+0+m+/.++j.: # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+F+F+F+F+F+F+F+F+F+F+F+F++ , i D+s.[.K.:+g+a+S.Y.v+H [ ^ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F++ ( #.h.G+<.t+]+:+~+|+p+d.i.B / * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+* b %.n c.e+R._+!+~+n+7.H+n f b * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 1.M.^+^+M.3.T u 7 ) @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+^ A m @+8.S.~+^+!+t+r+{.o | - + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 u S 1.I.]+]+I.3.V t 4 ! $ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+] [ &.!.9.k+[+^+!+}+<.O h.#.b + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 2 s V 2.L.)+)+L.1.u.>.4 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+] : k ).j+U.N.~+<+9+W.Y C+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ _ 4 ;.R 1.J.{+{+M.-+`.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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ~ 7 ..u.1.K._+[+t+6.a.D+D , % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 3 r W 4.N.:+:+P.C.^.J z : @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ c 5 t S 3.N.{+{+I.5.Q q 8 ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ' i -.X *+Q.~+a+N.C.Z.++z c ] 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 1.J.{+{+N.|.t.v 8 _ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ > h m.P 8+}+)+!+'+2+9.!.y+$.] 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 2.K.)+)+K.|.T r 2 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F++ b g h.O <.H./+f+~+l+Y.p.m B = 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+a+I.2.T u 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F++ { %.w N e+9+a+:+_+F.7+~.i+%.{ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.1.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+* { B H @+z.>+'+)+<+n+<.G+h.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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u S 3.N./+/+N.3.S u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# d l !.%+m+P.!+!+L.*+X g.9 , @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# ) 4 u S 2.K.~+~+K.2.S u 4 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% : G ..0.D.'+f+f+'+=+V u 6 ) @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+% ) 7 >.V 3.J./+/+J.3.V >.7 ) % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 7 u S 1.J./+{+P.D.0.u+F c # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 5 >.`.-+'+(+(+'+U.u.>.5 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ _ i q W 5.O.)+!+M.m+%+).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+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+F+F+F+F+F+F+F+F+F+F+F+F+$ ) 6 >.`.=+M./+/+M.-+^.J 5 ) $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ; h p Y 6.Q.!+(+[+k+9. .&.d ] 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# ) 8 ;.S 1.I.a+a+N.-+0...F c # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( g I {.B.t+]+^+[+>+q+e.H e ^ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 2 v W |.N.:+:+M.U.0.K k : $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* { %.n ~.p+S.'+~+M.T.d+M E+e / * 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+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+F+F+F+F+F+F+F+F+F+F+F+@ , D +.s.V.K./+{+M.;+%+o.y [ ] 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* / e H M z.k+M.~+'+1+A.~.k.%.{ * 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+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+F+F+F+F+F+F+F+F+F+F+F+@ ( | l.c.7.R.0+_+N.E.d+h+k.B { + 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ e H L (.>+_+^+]+,+7.c+l.C ( + 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+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+F+F+F+F+F+F+F+F+F+F+F++ { B H @+6+2+I._+0+n+B.O h.#.( @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+] d l !.y.T.[+^+!+}+W. +C+#.; + 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+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+F+F+F+F+F+F+F+F+F+F+F+F+] $.j.K w.U.M.{+{+L.5.X q 2 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ a G ).x.D.M.]+~+}+[.$+D+1 ' @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 5 t T 2.N.{+{+P.U.^.f.F c @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# : z '.j+C.J.!+]+K.}.W q 9 ' % 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 9 g.X *+O.)+]+'+E.9.!.y+d / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ : j ..^.D.'+^+^+P.3.U u 4 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F++ ; #.h. +&+}+]+^+)+F.8.M i.[ / 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% c F ,.^.U.M./+/+J.=+V t 4 ) % 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+- } w c+7.,+{+w+{+,+e+~.w 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+] ~ 7 J ^.=+I.a+a+I.3.`.t 6 ~ ] 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+/ e i.` B+F.)+:+a+,+B.{.l.| b * 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ~ 6 J u.-+M./+/+M.=+u.f.6 ~ % 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+/ < &.L (.2+J.a+_+t+&+Y C+h ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 5 >.V -+P.^+^+P.=+V >.5 ~ @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ a k ++j+D.M./+/+L.5.$+-.E ; @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ) 6 t V 3.N.]+]+N.3.V t 6 ) $ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ a z J ^.U.P.^+^+M.|.W v 3 ' @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.K.)+)+K.1.V u 3 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 5 J u.=+N.]+]+I.2.T s 2 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 s U 2.J.{+{+J.2.U s 4 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 >.`.1.L.)+)+L.2.S s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 ;.t.4.N.{+{+N.4.t.;.4 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.1.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ _ 2 ;.t.5.H._+_+H.5.t.;.2 _ $ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ _ 8 r t.5.Q.[+[+Q.5.t.r 8 _ $ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 6 r t.|.N./+/+N.|.t.r 6 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 s R 2.J.{+{+J.2.U s 4 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 ;.S 2.K.)+)+L.1.`.u 3 ) # 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 3 u S 1.I.]+]+I.=+u.f.5 ) $ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ _ 6 s T 1.P.^+^+'+C.^.,.z : @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 8 r R 2.N./+{+P.;+j+K z : % 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! E g.Q *+Q.)+a+M.m+y.4+k $.= 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+& , D +.s.[.Q.!+:+[+>+6+L &.d ^ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F++ b h C+G+&+Q.{+f+)+S.d+p.E+B ^ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( | *.r.o+G.)+/+[+F.p+d.x B / * 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+* - 0 k.~.p+S.<+]+[+R.X.c+i+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ A i.@+d+1+~+^+!+}+<.Z I 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+] < s+L (.k+_+(+!+H.8+ +C+#.; + 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ a k ++x.;+J.]+~+H.V.X =.h ' @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# c 7 u+v.U.J.]+]+K.4.t.v 3 > % 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 6 u T 3.P.^+^+M.3.S >.5 c @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ , 2 q Q }.L./+/+M.U.0...j : @ 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 1 m.Y &+,+[+)+J.m+%+o.j.d / 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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* b | *.r.B.G.)+:+~+1+d+@+E+[ = 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+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+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+- f n x+7+G./+w+/+9+p+q.n %.- 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+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+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+= [ E+@+z.1+_+:+)+G.B.{.o | b * 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+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+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+/ d y+!.%+;+J.)+[+,+&+Y m.1 ' @ 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+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+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ : j ..0.C.M.!+!+L.5.X n.2 , @ 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+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+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ c F >.S 3.M.^+^+M.3.S u 7 ) @ 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+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+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% > 3 v W 4.K.a+]+N.U.0.'.F c # 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+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+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' h +.$+[.}+~+a+J.;+%+).y+d ^ 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+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+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ; #.@.G+I+H.!+^+[+>+6+e.E+e = 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+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+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( | *.c.7.,+!+(+~+|+B+x+3+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+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+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* { A x h+B+1+0+]+<+R.o+O o | ; & 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+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+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* ^ d l L 9.2+M.]+a+H.[.s.+.D ; @ 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+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+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ a k u+v.C.'+^+^+J.|.W r 8 ! @ 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+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+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 7 u T 2.N./+/+J.3.`.>.4 ~ @ 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+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+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ) 9 n.W *+H._+)+I.U.j+'.z a = 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+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+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& , D =.z+[.Q.]+{+<+T.9.!.&.d ] 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+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+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ b h m.b.&+O.:+b+a+F.d+5+E+A ^ 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+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+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( | l.Z r+t+]+:+)+R.:.x+k.A / * 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+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+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* b %.k.N :.|+_+!+_+9+7.r..+} b * 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+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+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ B H p.d+S.~+(+!+H.W.O h.#.( + 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+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+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+] d y+4+/.E.<+^+!+H.8+P p D > + 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+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+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ~ 5 f.V 1.K.~+[+t+A+].r 2 ! @ 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+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+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! E q Q [.,+[+~+L.1.u.J j : # 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+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+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ > h m. +&+}+]+^+<+T.9.L s+[ = 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+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+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( | l.c+o+t+!+^+~+|+7+N n } { 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+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+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* { 0 3+x+A.F.<+]+~+,+&+Y p D ' & 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+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+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* ^ d &. .q+T.0+/+/+N.2.T t 5 ~ $ 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+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+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ : F ,.v.C.'+f+f+0+m+x.).y+d ] 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+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+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% _ 2 n.Q 5.L./+{+<+l+8.h+3+A { + 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+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+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& ; C o r.7.R.<+a+_+G.<.O I #.b @ 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+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+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ e H e.q+T.'+{+/+L.*+a.-.i , @ 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+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+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# c z J u.3.N./+{+N.2.T ;.3 ~ @ 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+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+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 2 =.z+6.,+[+_+K.=+0...z c # 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+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+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ b g I O 7.|+0+)+M.2+9.L H [ ^ 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+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+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+{ 0 k.q.7+R.a+(+)+|+p+q.i+%.( 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+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+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+= d E+p.z.S.a+f+]+}+I+#+@.h , 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+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+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+] $.k ).x.m+'+]+)+O.4.t.r 8 ) $ 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+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+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ) 4 u V 3.I.!+{+0+m+j+'.k : # 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+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+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ _ 9 =.a.V.K.:+g+)+1+Y.v+H [ / 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+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+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( C o r.o+G.a+{+[+|+7+~.n %.- * 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+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+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* - 0 i.M d+k+P.)+[+9+<.G+@.h > @ 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+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+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ $.j.).%+;+M.!+!+L.5.X q 2 , @ 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+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+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ~ 5 t V 3.M.^+^+P.=+V u 5 ~ @ 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+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+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ > 8 q Q *+O.a+]+J.D.Z.++j : # 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+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+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& , C m.#+I+,+_+]+'+T.6+L s+< = 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+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+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+- | w c.7.9+]+f+a+|+B+h+x A / 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+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+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+/ 0 x ` B+|+a+(+]+G.7.H+w | - 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+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+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+= < s+L Y.T.'+]+_+,+I+#+@.| , & 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+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+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# : G ).x.;+M.!+a+O.A+$+-.i ; @ 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+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+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ c j J u.-+'+^+^+M.2.t.;.3 ! @ 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+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+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' 4 ;.R 2.N./+/+J.=+u.f.4 ~ @ 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+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+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! E q ].A+H._+)+I.C.j+'.z a = 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+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+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& , 1 =.z+[.Q.]+{+<+T.9.!.&.d ] 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+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+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ b h m.b.&+O.:+b+a+F.d+5+E+A ^ 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+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+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( | l.Z r+t+]+:+)+R.:.x+k.A / * 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+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+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* b %.k.N :.|+_+!+_+9+7.r..+} b * 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+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+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ B H p.d+S.~+(+!+H.W.O h.#.( + 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+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+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+] d y+4+/.E.<+^+!+H.8+P p D > + 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+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+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ~ 5 f.V 1.K.~+[+t+A+].r 2 ! @ 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+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+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! E q Q [.,+[+~+L.1.u.J j : # 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+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+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ > h m. +&+}+]+^+<+T.9.L s+[ = 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+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+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ( | l.c+o+t+!+^+~+|+7+N n } { 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+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+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* { 0 3+x+A.F.<+]+~+,+&+Y p D ' & 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+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+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* ^ d &. .q+T.0+/+/+N.2.T t 5 ~ $ 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+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+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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 ,.v.C.'+f+f+<+2+%+o.y+d ] 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+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+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% _ 2 n.Q 5.L./+{+<+1+A.~.n 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+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+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& ; C o c+7.R.<+a+_+,+&+#+m.i > @ 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+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+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+^ e H e.(.E.'+:+{+N.2.U u 6 ~ # 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+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+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+# c 7 >.S 1.I.{+{+P.;+%+!.l [ ^ 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+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+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+@ ' i p +W.9+[+)+P.l+p+N w C b & 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+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+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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 n h+_.>+P.]+)+}+6.s.g.2 _ % 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+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+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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 G ).Z.D.'+^+^+M.=+u.,.j a ] 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+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+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+$ ) 3 r ].5.L./+/+'+E.6+e.H B / * 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+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+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+@ > 1 h.Z o+R.0+)+0+|+X.c+o #.; @ 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+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+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+* / 0 m @+z.T.'+/+!+K.A+a.-.E > @ 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+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+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+] a j.K w.C.P.^+^+M.3.V u 6 ~ @ 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+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+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+% ! 6 ;.t.}.O.]+]+J.D.j+..z : # 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+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+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+& > h p Y &+G._+]+'+E.(. .l d = 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+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+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+- | i+c+X.9+a+(+)+S.d+@+m [ = 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+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+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+/ A i.` _.S.a+(+a+R.7+x+k.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+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+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+^ $.&.o.y.m+M.)+0+|+7.Z o } b + 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+# c 5 u+w.=+L.~+[+t+8+P D+i b @ 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+@ ~ 7 u S 3.J.{+{+N.|.t.;.4 ! @ 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+@ , 3 v t.|.N.{+:+P.C.w...F c @ 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+@ ' D =.$+A+O.a+]+'+E.q+!.j.d / 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F++ ; C h.G+&+H.]+^+a+|+B+M i.e / 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+- | w c.7.,+{+w+{+t+7.c.i+%.- 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+/ e i.M 8.F.~+:+a+t+W.#+m.D b * 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+/ < y+4+%+m+J.a+~+}+A+].n.6 : @ 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ c 7 J ^.-+J.!+!+J.U.j+).&.$.= 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.1.T u 4 ! @ 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ ) i g.X }.N.^+(+<+l+A.c.o C ; 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+O.|.T s 3 ) # 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+@ - #.I r.B.G.)+!+_+}+A+t.;.5 a ] 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.N.!+!+N.2.T u 4 ! % 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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+& = [ s+ .y.;+J.]+{+<+T.q+5+x f b + ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u U 1.P.(+(+P.1.U u 6 ~ @ 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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+J+K+K+K+K+J+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% c 8 g.Q [.H./+g+/+t+W.s.+.E ~ @ ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 u S 2.I.!+!+I.2.S u 3 ! % 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+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+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+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+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+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+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+F+F+F+F+F+F+F+J+K+L+M+N+N+M+L+K+J+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+& > | w q.B+F.~+(+!+I.U.Z.o.l e ] ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O.~+~+O.|.T s 3 ) # 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+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+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+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+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+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+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+F+F+F+F+F+F+J+O+N+P+Q+R+R+Q+P+N+O+J+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+= [ k ..`.1.K.)+]+<+|+e+c+o h b ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 t T 2.N./+/+N.2.T t 4 ! @ 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+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+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+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+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+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+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+F+F+F+F+F+J+O+S+Q+T+U+V+V+U+T+Q+S+O+J+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+* ' i m.G+7.F.<+:+{+L.}.].r 8 ~ ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 5 t T 3.M.^+^+M.3.T t 5 ) @ 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+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+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+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+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+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+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+F+F+F+F+F+K+N+Q+W+X+Y+Z+Z+Y+X+W+Q+N+K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+{ [ &.!.x.C.J.{+:+P.C.x.o.j.[ ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t V 3.I.]+]+I.3.V t 4 ! $ 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+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+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+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+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+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+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+F+F+F+F+J+L+P+`+ @.@+@@@@@+@.@ @`+P+L+J+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+% ~ 4 q z+8+,+[+)+P.l+A.~.w C ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s V 2.L.)+)+L.2.V s 3 ) # 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+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+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+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+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+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+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+F+F+F+F+K+M+#@V+$@%@&@*@*@&@%@$@V+#@M+K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F++ ( #..+~.B+l+P.]+)+}+6.s.g.2 ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 t S 3.M.:+:+M.3.S t 7 ) @ 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+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+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+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+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+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+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+F+F+F+F+K+=@-@ @;@>@,@'@'@,@>@;@ @-@=@K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+] < j.!./.D.'+^+^+M.=+^.u+j ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u S 3.M.{+{+M.3.S u 7 ) @ 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+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+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+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+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+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+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+F+F+F+F+K+)@!@~@{@]@^@/@/@^@]@{@~@!@)@K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ) 3 ;.W 5.L.!+/+'+E.Y.5+H ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 u V 1.L.)+)+L.1.V u 3 ) # 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+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+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+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+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+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+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+F+F+F+F+O+(@_@:@<@[@}@|@|@}@[@<@:@_@(@O+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+@ > 1 h.{.o+R.0+)+0+|+7.{.h.", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+$ ! 4 t S 1.I.]+]+I.1.S t 4 ! $ 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+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+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+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+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+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+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+F+F+F+F+1@P+2@Y+%@3@4@5@5@4@3@%@Y+2@P+1@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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+* / 0 E+p.6+T.P./+!+K.}.R t ", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ) 7 u T 3.M.^+^+M.3.T u 7 ) @ 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+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+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+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+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+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+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+F+F+F+F+K+(@6@7@8@9@0@a@a@0@b@c@7@6@(@K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+] a j ..^.=+M.^+^+'+;+%+p.", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ! 4 u T 1.N./+/+N.3.V J j : ] # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ @ @ + + + * 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+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+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+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+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+F+F+K+P+d@e@f@g@0@h@h@i@j@k@7@U+P+K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% _ 9 -.s.8+}+)+]+'+1+X.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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 3 s T |.O._+_+K.=+w.4+H h d ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) _ _ , _ b ( - - ^ ] ^ # @ @ @ * 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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+O+Q+l@m@n@o@i@p@p@q@r@s@t@d@u@O+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& b | w q.B+>+P.)+_+}+2.j+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 4 u T 2.J.!+/+M.m+Y.H+n.x F 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 8 8 3 9 1 h #.| A A [ a c ) > ' b - / = @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ % @ + + * * 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+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+F+F+F+F+F+v@w@x@y@z@A@5@a@a@'@B@C@D@E@F@O+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^ [ j.'.w.U.J.{+:+'+S.&+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ~ 6 u T 3.'+(+f+_+S.r+V c+ .f.s u u u s t t t s t u u t u u s u u u s t t t s t u u t u u s u u u s t t t s t u u t u s ;.s r q D+m.I w x m s+k 5 5 8 D C %.[ $.: c _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ) ! ' ' ; ( { / ^ ] ^ # @ @ @ + + + * 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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G@!@H@I@J@q@K@L@L@M@}@N@y@X+O@L+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ~ 2 -.s.[.Q./+{+~+I.1+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ! 3 s S 1.J.{+{+_+t+C.W.Y.w.S T T U S T T T V V S S V S T T T T U S T T T V V S S V S T T T T U S T T T V V S S V S T U U R t.Q a.#+Z c+q.5+L ).'.t v D+I i+E+j.z F 3 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 6 4 4 9 1 #.C %.e e d $.c ~ ' _ b ( - - ^ ] ^ # @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ @ & F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+P@(@Q@R@S@A@p@T@L@T@a@U@V@W@~@X@M+J+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ b f 3+@+(.2+J._+a+]+0+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+# ) 2 v t.|.L.a+!+)+P.}+1+m+C.3.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.|.2.5.6.I+<.7.p+z.(.%+w.V W z+O q.@+o.u+>.s s ;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.t t u q D+C+l.k.E+H &.G j 5 6 i h #.| A A [ a c : ) ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ' > ; , - / / ^ # # ^ % @ @ @ + + + * L+Q+Y@Z@`@i@ #L@.#L@+#p@B@s@@#W+##K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ] c 7 q +X.T.N.]+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ' i g.X }.N.{+^+{+!+~+P.J.'+N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.I.M.L.t+}+H.9+S.1+k+m+C.=+|.[.<.:.z.y.0.S R R t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.`.V U W $+ +c+~.M e. .4+K f.;.-.D+I w x m s+k j j 7 4 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 2 9 3 D | | f B d < : : ) ) , _ b ( - - $#%#&#*#=#-#L@.#.#.#L@h@;#>#,#'#=@K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ ( A &.u+t.I+R._+^+{+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ > h @.G+8+L.^+f+^+(+^+!+!+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+_+]+{+~+0+~+_+M.J.P.N.H.t+9+l+m+U.3.}.}.|.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+=+3.=+3.}.[.W.7.A.d+q+9.%+j+u.R X Y Z c+q.5+L 4+K J f.t t u u s t t t s t u u t u u s u u s ;.r n.+.I *.n i.s+y j.j 6 6 3 1 h #.| A )#!#~#{#]#/@^#.#.#.#L@a@/#(#_#Q@:#K+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ # ) g w p.x.3.K.)+{+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ - A i.@+z.>+0+]+!+^+^+]+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+/+)+:+f+/+]+(+^+]+]+^+/+~+]+/+[+J.M.J.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.K.}+}+,+1+T.>+k+2+;+U.|.V.8+<.7.p+z.(.%+j+u.S V T U S T T T V V S S V S T T T T U T U R Q a.#+c+q.h+p. .4+'.J u v =.m.I w x <#[#}#|#1#2#L@.#.#.#L@ #3#4#5#6#7#8#* 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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ ] c G t $+<.|+<+:+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& = ~ 3 n.#+:.m+G.L.P.'+N.N.P.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.K.N.P.J.N.<+~+<+[+!+!+~+]+(+/+]+^+g+/+a+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+~+!+]+'+M.[+_+P.P.'+I.}+H.H.9+S.1+k+;+C.-+3.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.|.4.|.4.A+I+7.7+B+d+q+x.w.u.T W $+#+Z c+q.9#0#a#b#c#d#L@.#.#.#L@e#f#g#h#i#j#k#- / ] # + + * * 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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+@ : 7 n.b.:.l+'+{+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+% ; A j.u O /.o+*+3.-+3.3.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.3.|.1.-+-+C.T.1+S.|+}+Q.H.L.'+P.'+a+/+)+~+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+!+]+^+^+~+~+^+(+!+{+f+!+_+]+{+~+0+~+[+J.J.P.J.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.I.J.Q.,+G.n+1+l+l+E.U.-+3.}.6.&+<.7.p+l#m#n#o#p#q#.#.#.#.#.#L@r#s#t#u#v#w#} B $.~ _ , / ^ $ % # $ @ % # @ @ $ # @ @ $ $ @ @ # $ @ @ @ + + + * 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+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+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+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+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+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+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+F+F+F+F+F+F+F+* % ( B y J $+B.S.'+/+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& = ' %.j.m.++H+z+R S `.V T T T T U S T T T V V S S V S T T T T U S T T T V V S S V S T T T T U S T T T V V S S V S T T S V V 0.Z.y.Y.A.e+r+8+V.|.U.m+T.|+,+,+t+L.I.H.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.M.'+J.M.[+[+M.'+]+!+)+/+f+/+)+:+f+/+]+(+^+]+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+a+_+]+a+<+<+~+<+N.J.P.L.t+H.H.9+S.x#y#z#A#B#C#.#.#.#.#.#D#E#F#G#H#I#J#w E+y+6 E C 0 $.$.c ~ ) ~ ) ) ! ) ! ) ! ! _ _ ! ! ) ! _ > _ b ( - - ^ ] ^ # @ @ % & + + * 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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+@ { ) | G p ~.9.|.t+_+^+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& = ' B 9 y+w D+r s u t u u s u u u s t t t s t u u t u u s u u u s t t t s t u u t u u s u u u s t t t s t u u t u u u >.f...++!.e.h+H+Z #+X U u./.Y.A.X.r+6.*+}.*+*+4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.-+-+=+U.D.C.D.T.>+k+S.t+Q.O.J.'+M.N.[+~+<+[+!+!+~+a+^+!+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+/+~+/+^+!+]+(+f+]+/+f+{+~+!+(+!+_+]+{+~+0+K#L#M#N#O#P#Q#Q#.#.#.#R#S#T#U#V#W#X#Y#@+4+>.-.I 3+y j.j 7 7 5 6 4 4 5 4 3 4 6 8 8 6 6 3 4 4 8 D h #.| A A [ a c ~ ' ! , b { b ^ ] ] ] @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ # $ @ @ # % @ % # @ @ $ # @ @ @ + 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+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+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+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+F+F+& # ( ) 0 8 m ;.N Z.V.R.M.a+:+", "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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& # ( ~ e | D 3 4 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 5 F F z l E+m n I p g.r J ++v+` H+Z P $+Q ].W t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.^.^.^.j+x.y.(.z.p+B.6.5.2.U.U.D.T.1+S.|+}+Q.}+O.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.'+J.'+a+]+[+~+/+a+_+!+(+/+)+:+f+/+]+Z#`# $.$+$P#R#.#.#.#.#Q#@$#$$$%$&$*$=$d+x.`.$+Z d.L '...,.J >.>.u t t u ;.s r r ;.s u t >.s v =.p I w x m s+k F 5 4 E #.h } 0 B [ : c : ~ ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ' , > ; - = = % @ % @ + + * * 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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F++ @ # ^ > : %.8 E++.!.P q+*+n+<+]+a+~+", "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+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+& ] / b > _ ' ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! : ~ a $.e e f g h D 3 j k &.x i+l.C+-.q n.n.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.J J ,...'.).!.L M ~.{.Y ].U V 0./.9.Y.A.e+r+&+6.5.|.2.4.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.3.2.2.3.C.;+T.|+n+R.G.H.H.}+L.P.J.I.<+~+<+-$;$>$,$'$)$!$R#.#.#.#.#R#!$~${$]$^$/$($S.E.3.A+B.8.y.j+v.v.^.u.V S T T S S R t.R R U T u.V T W $+#+Z c+q.5+L ).'.t ;.-.p @.*.x E+y j.F z F 4 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 2 3 2 1 | } [ < : : ' _ ; ( { / ^ ] ^ # @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ @ @ * F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+& $ ] { > ~ B D F i.-.!. +j+r+D.G.'+{+f+]+L.", "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+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+F+F+F++ @ @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % = ] ^ / - ( ; ' ' c a [ e | | h E 2 E 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 F j z G l H H n I p g.;.>...++!.e.h+H+Z +a.].W R T T U S T T T V V S S V S T T T T U S S `.^.x.6+_.7+X.r+W.8+[.}.3.-+C.E.1+_$:$<$[$}$|$1$2$Q#.#.#.#.#R#!$3$4$5$6$7$8$a+<+I.O.,+>+D.C.U.-+U.U.=+2.1.1.1.|.2.|.5.5.2.=+=+=+=+4.V.&+<.7.p+z.(.%+w.V W X P O c+q.5+ .o.++J f.>.t u u s u u u s t t t s t u u t u u s u u u s t t t s t u u t u u s u u u s t t t s t u u t u u s u u u s t t s r r q p o n m l k j 6 i h g f e e d a : a c ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ! ' , > ( / ] % + + * * F+F+F+F+F+F+F+F+F++ @ # ^ , ) d f E 4 s+I t ` s.x.B.3.|+N._+~+!+{+'+>+", "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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+* * + + @ % @ % / / - ; > ; > _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ c : : a d e e %.g h D 4 F F z l E+m n I m.D+g.r s ;.u u u s t t t s t u u t u u s u u t >.J ..4+L @+d.c+{.O Y $+].T u.Z.y.Y.9$0$a$b$c$d$e$f$Q#.#.#.#.#Q#!$g$h$i$j$k$l$g+{+a+!+]+P.I.M.P.N.M.'+N.K.J.M.L.K.J.N.Q.Q.N.M.N.M.P.I.}+H.H.9+S.1+k+;+C.=+4.V.8+W.X.p+d+q+y.Z.u.`.u.V T T T T U S T T T V V S S V S T T T T U S T T T V V S S V S T T T T U S T T T V V S S V S T T T T U S T T T S S R Q P O N M L K J s q p I n H H l G z z F 5 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 8 8 8 i #.f e a ~ ' b { ^ $ % # % @ $ # $ ] { > c B #.4 G n m.>.v+r.R 6+I+D.9+L.'+/+(+]+<+L.k+o+", "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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F++ @ @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ # ^ ] ^ / { ( ; _ ' ~ ~ a $.e e f g h h E 4 8 8 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 4 5 G G &.m 3+n *.@.p =.v u J '.!.m$n$o$p$q$r$s$t$D#.#.#.#.#.#.#u$v$w$x$y$z$A$:+!+]+^+^+~+~+{+{+a+{+f+!+~+/+^+]+)+{+/+[+_+{+{+a+{+f+!+_+]+{+~+0+~+[+J.N.P.N.}+H.Q.9+1+1+>+2+C.C.-+1.3.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.1.1.|.|.}.[.<.:._.(./.^.T ].Y {.~.` L !.).'...,.J J >.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.;.;.;.v -.h.i+E+k 3 i C %.d d c ~ ) ~ ) c : [ %.D 7 H I r 4+x+#+S y.e+*+2+9+J.]+/+]+{+^+[+,+-+p+$+", "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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+* * + + % % % % = ] ^ / - ( ; ' > _ _ ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ) a : $.e %.0 | 1 h 1 3 7 5 j l B$C$D$E$F$G$H$I$L@.#.#.#.#.#.#J$K$L$M$N$O$P$K.L.J.[+[+P.<+/+{+a+{+f+!+~+/+^+]+)+{+/+[+_+{+{+a+{+f+/+)+:+f+/+]+(+^+]+]+^+/+_+a+:+a+0+[+~+'+N.P.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.L.K.J.I.H.G.G.F.E.D.C.1.5.[.B.A.z.(.y.x.w.v.^.^.u.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.R T U W a.b.N p.K u =.I 3+y y+F 7 5 5 5 F k y i+m.t v+r.W /.B+I+1.m+S.Q.0+[+a+f+f+]+[+P.n+}.q+b.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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* * + + @ % @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ ] / = / b ( ( b _ , ) ) a $.Q$R$S$T$U$V$W$L@.#.#.#.#.#.#.#D#X$Y$Z$`$ %.%6.|.U.E.>+1+G.L.J.I.M.'+N.K.J.M.L.K.J.N.Q.Q.N.M.N.M.0+M.N.[+~+<+[+!+!+~+a+^+!+~+{+g+{+a+:+f+!+a+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+{+{+~+~+!+)+M.P.'+J.O.O.,+S.T.>+T.;+C.C.U.=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.|.2.2.|.5.W.:.z.Z.T z+Z q.v+K ..J f.>.J ..K .d.b.T 9.7.5.;+1+,+N.P.P.)+^+{+]+/+a+J.9+D.<.^.x+n.l ", "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+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+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+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+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+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+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+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+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+F+* + + + % @ % % = ] +%@%#%$%%%&%/@L@.#.#.#.#.#.#.#L@*%=%-%;%>%,%s.R 0.%+Y.p+<.*+2.3.-+-+=+2.1.1.1.|.2.|.5.5.2.=+-+U.D.C.D.T.1+S.|+}+Q.}+K.M.J.I.0+)+[+0+a+/+)+~+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+)+]+^+/+_+!+(+!+~+/+^+]+)+:+{+a+/+b+^+a+/+(+/+)+!+]+0+M.[+[+J.J.'+M.I.M.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.I.M.I.,+|+1+D.4.[.r+A.q+j+v.u.`.^.^.0.0.%+d+r+|.2+|+L.'+<+_+{+{+)+]+^+!+'+K.9+C.<.y.P o.@.F 0 ", "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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+1@P+'%)%!%~%p@T@.#.#.#.#.#.#.#^#{%]%^%/%(%_%D+r ..o.p.H+G+a.R V `.`.V S T T S S R t.R R U S ^.^.v.w./.9.Y.A.e+r+8+[.}.2.-+-+2+1+1+S.G.Q.H.Q.N.J.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.M.L.I.M.N.O.N.P.I.O.N.M.I.L.M.P.M.[+!+a+[+!+f+/+]+^+^+)+~+^+^+a+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+a+^+/+_+_+~+P.K.Q.,+S.2+D.-+3.=+C.-+-+U.;+E.n+I.P.0+!+(+{+]+:+{+[+P.P.K.l+2.7.Z.#+v+g.E+D d , ", "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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+1@:%<%7@s@[%5@T@L@.#.#.#.#.#.#L@}%|%1%2%3%4%i 3 j &.m k.@.-.;.s >.>.>.u t t u ;.s r r ;.s t f.,.,.'.). .e.h+H+Z +$+W U `.w.%+6+8.p+o+&+[.*+4.1.2.1.1.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.2.3.3.1.1.3.1.|.2.1.2.|.2.3.3.1.-+D.m+l+9+G.,+I.'+P.P.[+[+M.'+]+]+~+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+^+/+a+/+^+]+)+{+/+[+_+{+{+)+]+(+{+a+:+g+/+)+/+!+0+M.'+J.K.J.'+M.N.M.M.N.'+/+{+a+{+f+!+<+'+N.9+k+U.[.B+u.O o.=.H 8 %.! { @ ", "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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+K+P+U+5%@@6%M@T@L@.#.#.#.#.#.#T@|@7%8%9%0%a%> ) a a B f #.E 8 8 7 5 6 4 4 5 4 3 4 6 8 8 6 6 4 F j z G l E+m n I m.=.n.u f.'.o.v+@+~.r.b.s.Q W R V S T T T T U S T T T V V S S V S T T T T U S T T T V V S S V S T T T T U S T T T V V S S V S T T T T U S T T T `.u.^.w.y.Y.p+o+&+}.U.D.2+k+>+k+1+,+H.}+K.P.J.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.K.N.P.M.I.J.P.I.K.J.N.Q.H.N.J.L.N.'+'+0+a+{+a+a+(+^+a+]+^+/+~+/+(+/+a+:+{+_+[+{+/+_+0+0+L.R.2+1.W._.w.z+x+,.@.H 3 %.~ ( % & 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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+K+P+'#b%@@6%/@T@.#.#.#.#.#.#.#T@5@c%d%e%f%g%+ % # ^ { b ; , ' ~ ~ c ) ) ! ) ! ) ! ! _ _ ! ! ) ) : c a $.e e f g h h 2 7 6 j l y E+3+l.@.D+-.r ;.s u u u s u u u s t t t s t u u t u u s u u u s t t t s t u u t u u s u u u s t t t s t u u t u u s u u u s t t f.t ,.u+!.p.h+r.Y ].V w.%+9.6+z.p+7.W.6.}.1.=+3.=+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.2.1.3.=+-+=+-+=+3.2.2.|.5.5.4.1.3.-+D.E.1+,+K.O.N.[+_+<+)+^+!+~+/+(+/+a+:+/+0+I.J.L.G.l+;+}.o+q+S +` '.g.i+z 1 A ) ( # & 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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+O+(@2@h%i%,@/@T@L@.#.#.#.#.#.#L@5@r@j%k%l%K+F+F+F+F+F++ @ @ @ ] $ % % ] @ @ $ # @ @ $ $ @ @ ] $ % % = ] ^ / - ( ; ' > ~ ~ : $.e B %.| h h i 3 4 2 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 3 7 7 3 4 7 4 3 4 6 3 3 4 5 4 7 z k k H 3+l.p n.t u+). .v+M x+c+b.$+W U V `.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U V V V u.u.`.V V V U t.t.t.t.U `.^.j+q+B+o+[.}.U.T.S.R.H.N.I.O.J.'+M.I.N.K.|+m+=+5.<.8.Z.W r.p.>.p k.j 9 C < ! - % 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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+1@(@'#5%@@,@/@T@L@.#.#.#.#.#.#L@/@o@<@x@Q+K+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+F+F+F+F+F+* * + + @ % @ @ = # ] ^ b { b > ' ' _ ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) ) ) ) ! ) ! ) ! ~ ! ) ! ) ! ) : a a < %.} h 8 7 F G l H H k.l.C+p n.s t u >.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s u t >.f.>.f.>.t s s r r ;.;.s f.,.K L d.{.P R 0.9.8.7.6.5.|.|.1.-+=+1.|.V.X.q+^.].G+h+4+r I H 7 E f d ! ( # @ * 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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K+:#6@$@m%[%M@L@L@.#.#.#.#.#.#L@/@*@n%x@R+O+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* + + @ % @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ # $ @ @ ] % % % ] @ @ $ # @ @ = = - ( ' > ) : d < B e %.C #.1 9 6 3 6 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 3 6 5 6 7 7 5 4 3 4 6 8 2 4 4 4 z j.y 3+l.p r .. .` Z Y X t.T S `.`.S W s.c.p.u+r @.x k 4 #.B c ' { ] $ @ * 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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+P@(@U+5%o%p%5@T@L@.#.#.#.#.#.#L@M@p%q%r%Q+1@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+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+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+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+F+F+F+F+F+F+F+F+F+F+@ @ % # = ] ^ / { ( ; ' ' ! ) ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) ) ~ ~ ~ ~ ~ ) ) ! ! _ _ ! ! ) c $.[ 0 C D 3 z y x w p q r ;.t >.>.;.v +.l.H z 8 1 %.d ) , ^ # @ + 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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+O+(@2@s%o%t%'@+#L@.#.#.#.#.#.#L@h@~%8@u%v%K+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+* * + + @ % @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ @ % ] % @ $ # @ @ $ $ @ @ # $ % # - ( > ) a < 0 | 1 9 2 3 7 5 6 8 2 D | B $.! > { ^ $ @ 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+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+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+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+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+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+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+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+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+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+F+F+K+P+2@h%w%B@5@T@L@L@.#.#.#.#.#L@M@~%q%~@x%P@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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+K+(@U+b%w%t%p@T@.#.#.#.#.#.#.#L@h@[%k@r%O@O+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+1@P+2@s%w%t%5@ #L@.#.#.#.#.#.#L@h@,@y%z%A%K+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+O+(@<%7@o%B%'@+#L@L@.#.#.#.#.#L@h@,@k@C%R+K+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+K+P+2@s%D%p%p@L@L@.#.#.#.#.#.#L@h@[%E%~@F%1@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+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+G%H%I%H%J%K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+K+P+2@s%D%o@5@T@L@L@.#.#.#.#.#L@M@,@k@L%#@O+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%M%N%O%P%Q%R%S%H%K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+1@:%_@7@y%o@T%+#L@.#.#.#.#.#.#L@M@[%D%u%A%K+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%U%V%W%X%Y%Z%`% &R%I%J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+1@:%<%7@D%o@|@ #L@L@.#.#.#.#.#L@K@~%8@~@O@K+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%N%W%.&+&@&#&$&%&&&*&R%I%K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+K+P+U+h%f@*@5@T@L@.#.#.#.#.#.#L@M@[%D%z%O@1@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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+R%W%=&-&;&>&,&>&'&@&)&!&U%J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+J+~&~&~&~&J+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K+P+'#b%w%*@5@T@L@.#.#.#.#.#.#L@M@[%y%~@Q+1@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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+U%*&{&]&^&/&(&_&:&<&[&}&Z%P%I%K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+J+~&H%S%U%U%S%H%~&J+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+F+F+F+F+F+F+F+F+F+F+F+F+F+O+(@2@h%m%B@'@+#L@.#.#.#.#.#.#L@h@A@y%|&O@K+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%V%)&1&2&3&4&5&6&5&_&7&8&9&0&M%J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+J+J%U%P%0&a&a&0&P%U%J%J+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+F+F+F+F+F+F+F+F+F+F+F+F+1@(@'#5%b&~%p@T@L@L@.#.#.#.#.#L@K@c&o%d&e&K+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+N%f&}&g&h&4&i&j&k&j&l&m&;&n&o&p&J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+J+J%q&0&r&.&{&=&)&s&t&q&J%J+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+F+F+F+F+F+F+F+F+F+F+F+K+:#6@$@b&B@p@T@L@.#.#.#.#.#.#L@K@;#u&Y+T+M+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M%v&w&x&y&z&i&A&B&B&j&C&D&g&E&W%U%J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+~&U%0&F&%&G&H&x&I&J&K&!&N%~&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+F+F+F+F+F+F+F+F+F+F+F+P@(@U+5%o%*@5@+#L@.#.#.#.#.#.#.#a@^@>#t@L&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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&Q%Z%N&>&O&C&A&k&k&k&A&P&Q&R&+&*&p&K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+J+H%P%s&E&S&T&U&V&W&;&X&)&v&Y&J+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+F+F+F+F+F+F+F+F+F+F+O+(@2@s%w%B%|@+#L@.#.#.#.#.#.#.# #Z&`&Z+W+S+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+Y&a& *.*+*@*#*B&$*$*k&%*&***=*-*0&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+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+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+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+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+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+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+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+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+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+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+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+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+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+~&S%v&;*>*W&O&@*,*:&U&'*)*Y%!*J%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+F+F+F+F+F+F+F+F+F+F+K+P+2@s%y%p%5@T@L@L@.#.#.#.#.#.#+#q@~*D@{*:%]*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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^*/*(*_*:*(&<*A&B&$*k&[*}*|*y&>*1*V%^*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+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+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+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+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+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+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+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+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+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+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+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+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+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+~&q&`%2*3*m&4*5*6&6*7*8*S&n&W%p&K%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+F+F+F+F+F+F+F+F+F+K+(@U+s%y%o@5@T@L@.#.#.#.#.#.#.#+#9*`@;@V+l%1@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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+U%o&%&'*h&4*6&[*k&k&k&0*a*7*b*N&F&U%J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+~&O%c*d*e*O&C&A&j&}*f*g*h*G&.&i*M&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+F+F+F+F+F+F+F+F+F+1@P+2@@#k@j*T% #L@L@.#.#.#.#.#.#T@T%J@k*l*l%m*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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&!*n*]&o*p*i&[*k&k&k&k&A&q*r*3*s*!&H%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+G%/*&&t*u*v*w*x*j&A&y*4&+*'&+&`%U%K%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+F+F+F+F+F+F+F+F+O+(@<%Y+k@r@z*a@T@L@.#.#.#.#.#.#T@'@9@{@k%R+M+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+I%A*E&B*C*f*6&B&$*k&k&[*}*D*7&E*F*/*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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+G%/*)&G*H*_&y*0*B&B&j&I*(&J*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+F+F+F+F+F+F+F+F+K+P+2@K*L*M*'@+#T@L@.#.#.#.#.#.#T@'@r@n%L%N*N+J+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+F+F+F+F+F+F+F+F+F+F+F+F+F+G%P%&&]&u*O*5&j&B&k&k&[*x*l&P*Q*}&A*p&M&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+~&P%R*S*T*U*#*B&k&k&B&#*4&/&.* *W%S%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+F+F+F+F+F+F+F+F+K+P+2@K*I@j@z*+#L@L@.#.#.#.#.#.#T@p@*@k@V*T+##K+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+F+F+F+F+F+F+F+F+F+F+F+F+K%p&!&s*'*h&4*6&B&k&k&k&[*y*z&y&W*R*X*^*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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+~&P%Y*Z*`*U*5*B&k&k&[*x*l& =.=+=@=!*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+F+F+F+F+F+F+F+1@:%_@K*I@9@i@h@+#L@.#.#.#.#.#.#L@h@A@b&#=$==@K+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+F+F+F+F+F+F+F+F+F+F+F+F+J+P%Y%G&u*7*I*j&k&$*$*k&j&6*g*%=)*&=O%M&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+J%!*.&S**=|*==0*B&B&[*0*-=D*y&x&;=o&p&J+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+F+F+F+F+F+F+1@:%<%K*n%9@i@h@+#T@L@.#.#.#.#.#L@h@>=n@s%W+)@K+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+F+F+F+F+F+F+F+F+F+F+F+K%p&o&%&'***,=5*[*k&k&k&0*=='=*=)=;* &M%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+G%!*&&E*T*'=-=0*[*B&k&k&x*!=Q&%=$&F&i*^*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+F+F+F+F+F+F+K+P+U+Y+%@g@T%+#T@L@L@.#.#.#.#.#L@K@~=S@e@_@(@O+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+F+F+F+F+F+F+F+F+F+F+F+^*P%(*G&u*7*a*0*k&k&$*B&x*l&P*^&}&s&N%M&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+~&i*K&I&8*z&==[*B&B&B&[*%*I*O*H*H& *`%p&M&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+F+F+F+F+F+K+P+'#7@L*j@9* #T@T@L@.#.#.#.#.#L@K@}@S@t@2@(@1@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+F+F+F+F+F+F+F+F+F+F+F+S%a&s*B*{=]=6&k&$*$*k&[*y*_&T*W*Y*V%J%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+^*i*.&]&^=/=y*0*[*0*j&j&%*==,=3&Q*N&.&X*I%K%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+F+F+F+F+O+(@2@7@E%g@U@K@+#L@.#.#.#.#.#.#L@ #(=>@_=6@:#K+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+F+F+F+F+F+F+F+F+F+F+~&/*Y*:=<=v*a*A&B&k&k&[*6&f*r*g&[=&=R%M&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+H%i*&&_*W&p*a*%*j&%*%*%*0*A&I*p*T*}=E&r&O%^*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+F+F+F+F+1@(@'#h%E%r@T% #T@T@L@.#.#.#.#.#L@a@^@>@,#U+:#P@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+F+F+F+F+F+F+F+F+F+K%S%W%2*3*C*f*x*B&k&k&B&j&I*v*o*|=Y*V%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+^*P%(*G&:*v*a*A&j&%*5*x*0*j&y*,*Q&1=:={&o&S%J+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+F+F+F+K+:#6@s%q%M*'@ #T@L@.#.#.#.#.#.#L@a@}@2=R@U+:#L+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+F+F+F+F+F+F+F+F+F+~&/*F*|=H*3=y*[*k&k&$*k&6&]=h&'*E&W%U%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+~&Q%(*-&1=(&a*0*[*x*-=y*5*5*}*C&z&/&3*4=(*V%I%K%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+F+F+P@(@U+7@L*c%0@a@T@L@.#.#.#.#.#.#.#a@(=5=_='#:#P@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+F+F+F+F+F+F+F+F+K%H%&=J&6=Q&!=x*B&$*k&k&0*a*7=,&_*(*P%^*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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+~&R%Z%@&8= =l&6&x*#*w*<*a*}*%*6&l&:&8*9=%&f&q&~&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+F+F+O+(@0=K*%@V@a=h@ #T@L@.#.#.#.#.#.# #(=>@_=6@:#K+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+F+F+F+F+F+F+F+F+G%i*R*S*H*_&y*0*k&k&k&0*#*,*b=;&s*a&p&K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+M&R%c=d=e=f=4*==x*#*I*q*l&-=0*0*y*,*Q&>&t*;*a&M%K%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+F+K+)@W+H@g=9@9* #T@L@L@.#.#.#.#.#L@a@}@>@,#'#(@1@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+F+F+F+F+F+F+F+K%p&W%2*h=f=i=%*k&k&$*k&A&<*j=k=-&c*Q%J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+p&A*E&B***]=#*[*6&C&,=,*6*#*x*}*<*z&l=B*m=F&!*H%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+F+K+n=`+|&o=p=9* #T@L@.#.#.#.#.#.#L@K@}@q=_=0=(@O+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+F+F+F+F+F+F+F+J+V%Y*W*T*D*-=0*$*$*$*B&#*4&r=s=t= &Y&K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+Y&a& *u=r=4&#*0*x*C&4&z&,*C&}*%*6&l&(&v=w= *`%N%M&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+K+##X@L%x=]@4@K@+#L@.#.#.#.#.#.#L@a@(=>#e@2@P+K+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+F+F+F+F+F+F+K%U%f&m=Q*D&l&%*B&k&k&B&A&6*O&.=@&Z%O%M&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+H%0&;*8&y=3=I*5*}*6*z=7*O*]=y*j&0*i&U*C*2&-&R*v&H%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+]*N+F%e%A=2=c&p@ #T@L@.#.#.#.#.#L@a@}@S@$@2@P+K+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+F+F+F+F+F+F+^*X*R*8&`*'=}*[*k&$*k&[*==|*B=S&=&v&~&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+^*!*&&_*,&(&P&#*6&a*4&C= =3=D=}*6&==6*E=V&;&m=Z%!*J%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+m*v%V+F=u&,@5@T@L@.#.#.#.#.#.#L@h@G=S@_=_@:%1@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+F+F+F+F+F+F+p&&=H=2&I=P&A&k&$*$*k&A&6* =J=X&&=p&K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+J+/*Y%@&8=g*i=%*B&}*4*K=L=M=N=O=P=x*5*i=Q=W&8&t=W%N%M&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+O+:#2@@#y%B%5@T@L@.#.#.#.#.#.#L@h@~=C@$@<%:%1@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+F+F+F+F+F+~& &w&x&B=|*==[*k&$*k&[*-=D*T*8&;*X*J%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+J+U%f&d=R&C*4*#*A&==R=O*f=L=:&S=T=[*[*y*U*m&%=N&.&X*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+K+n=$=~@W@j@T%+#L@.#.#.#.#.#.#L@a@}@S@5%'#P+K+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+F+F+F+F+K%p&X%$&8=O&<*A&k&k&k&[*6&!=U=V=)*r&Y&J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+K%p&W%W=.*r=|*X=5*}*P&Y=Z=`=:&z= -.-%*}*6*p*y&u=E&c=q&~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+M++- @x=@-i@ #L@.#.#.#.#.#.#L@a@;#>##-2@P+K+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+F+F+F+F+~&!*w&S&r=@*#*B&$*$*k&0*5&p*^=G*.&Q%~&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+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+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+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+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+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+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+", "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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+J%t&;*Z*7&$-a*%*%-T=l&,*D*E=z&&-w**-%*5*!=D&8=-&K&X*I%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+L+O@=---;-Z& #L@.#.#.#.#.#.#L@a@}@2=Z+0=(@O+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+F+F+F+K%Y&Z%d*h*j=<*j&k&$*$*B&6&f*{=B*>-W%Y&J+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+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+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+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+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+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+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+", "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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+^*i*&&t*,-'-)-!-[*~-{-y*]-^-U*/-l&}*[*0*a*3=y&(-n&`%N%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+O+F@_-:-z@4@a@L@.#.#.#.#.#.#L@K@^@q=#-2@(@1@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+F+F+F+J%v&t=(-r=,*#*B&k&$*k&j&a*v*u*]&F*R%^*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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&O%Z%X&<-g*l&[-}-|-j&0*j&1-l&]=4*w*.-6&i&,*f=2&2-&&i*^*K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+O+u@d@F=>@}@K@L@.#.#.#.#.#.#.# #(=2=_=6@:#K+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+F+F+M&U%Y%+=k=3-I*j&k&$*$*k&x*4*h&'*+&v&J%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&U%`%E&4-{=]={-5-[*6-k&k&5-T=q*]=q*a*7-==C&p*7&x&-*W%p&K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K+P+U+Z+>@^@K@L@.#.#.#.#.#.#L@a@(=2=,#U+:#P@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+F+F+G%*&s*8-9-,*5*B&$*$*$*0*5&O*,&#&n*q&M&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+I%v&=&x&B=|*{-[*0-0-k&k&B&A&a*&*4*a-*-0*5*4*C*V=H=s&!*^*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K+(@U+F=q=;#a@L@.#.#.#.#.#.#L@a@}@2=R@U+:#L+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+F+~&O%F*]&u*7=w*j&k&$*k&B&6&,=b-'&W=!&I%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J%i*K&c-d-3=T=[*k&k&k&$*e-6-5*6*4*l&{-j&6&l&3-<=E*9&!&J%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+1@P+2@$@>@^@K@L@.#.#.#.#.#.#.#a@(=5=_='#:#P@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+K%I%*&E&3*C*&*6&B&k&$*k&j&I*(&T&-&n*N%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&Q%F&X&>&f-g-A&B&k&$*$*$*e-j&5&!=h-w**-}*w*z=/&;&2*r&N%M&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+O+(@<%$@>#^@a@L@.#.#.#.#.#.#.# #(=>@_=6@:#K+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+J+/*.&S*^=E=y*0*$*$*$*B&#*4&r=(-;=X*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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+U%c=i-j-k-l&~-0-k&e-$*$*e-[*#*a-l-<*}*%*6&i=I=>&1&(*i*J%F+F+F+F+F+F+F+F+F+F+F+F+F+K%~&^*^*~&K%F+F+F+K+P+2@#-S@;#h@L@.#.#.#.#.#.#L@a@^@>@.@'#(@1@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+K%H%`%J&g&L=q*x*B&k&$*B&%*6*I=J=4=s&q&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+Y&a&t=m-h&n-A&k&e-k&$*$*e-k&A&i&6*I**-6-0*X=o-`*S&=&a&Y&F+F+F+F+F+F+F+F+F+F+F+F+J+I%O%X*X*O%I%J+F+F+K+P+2@t@S@~=K@L@.#.#.#.#.#.#L@K@^@>@Z+'#(@O+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+J+!*Y*8&y=z&-=[*k&$*k&[*-='=y&)==& &K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+I%X*9&>*p-U**-B&0-k&$*$*$*e-[*x*i&5&#*A&A&q-r-m&j-}&Z%R%M&F+F+F+F+F+F+F+F+F+F+K%I%0&K&E&E&K&0&I%K%F+1@:%_@5%S@;#h@L@.#.#.#.#.#.#L@a@(=>@_=6@(@K+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+Y&&=}&Q*P*l&A&k&$*$*k&%*i=D&Q*m=A*Y&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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%i*(*1&s-v*w*|-6-k&$*$*$*$*k&0*[-*-t-~-A&t-6*3-,&:=1*0&H%F+F+F+F+F+F+F+F+F+F+~&Q%Y*H&W&W&H&Y*Q%~&F+1@:%<%$@C@G=K@T@.#.#.#.#.#.#L@ #(=2=Z+Q@F@K+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%v&;=x&*=z===[*k&$*k&[*y*z&8*S*Y*!*J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%R%f&[=h=k-D=A&B&k&k&e-$*e-e-k&[*0*j&0*[*6-#*@*u-v- *W%q&K%F+F+F+F+F+F+F+F+F+G%!&X&7&,*,*7&X&!&G%F+K+P+U+F=S@}@a@L@.#.#.#.#.#.#L@a@(=z@w-x-u@O+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+Q%Y%1&1=j=<*A&k&$*$*B&x*q*L=g&J&&=H%K%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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+p&*&;=y-r=]=z-k&k&B&k&k&e-$*$*e-k&0-B&B&0-~-D=A-.=X&F&i*J+F+F+F+F+F+F+F+F+F+H%c=>*L=C&C&L=>*c=H%F+K+P+'##->#^@a@L@.#.#.#.#.#.#L@a@Z&;-A=l@A%m*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%o&%&'***]=5*B&$*$*k&[*i&3=v=E*.&/*J+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+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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J%X*)&:=B-O*5&A&0*[*B&k&$*$*$*$*$*$*k&k&[*|-i&o-7&W*w&a&Y&K%F+F+F+F+F+F+F+F+I%s&9=I=w*w*I=9=s&I%F+O+(@2@e@>@4@a@L@.#.#.#.#.#.#.#+#U@[@--C-F%M+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+i*1*S*D-E=5&0*k&$*$*B&6&f*{=[&+&o&I%K%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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&~&~&~&J+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+F+F+~&O%Z%H=E-Q&h-#*A&0*[*0-$*e-$*$*$*$*$*k&k&B&A&D=L=F-d=f&R%~&F+F+F+F+F+F+F+F+M%Y%.*(&====(&.*Y%M%F+1@(@'#Z+5=(= #L@.#.#.#.#.#.#.#T@z*J@G-x@e&G@F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+p&c=H=%=D&i=%*k&$*$*k&A&w*(&:*G&&&O%~&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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&H%S%U%U%S%H%~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%~&^*^*~&K%F+S%W%-*(-H-'=T=!-I-0*[*0-e-$*$*$*$*$*$*e-$*6-i&O*<=|=F*X*G%F+F+F+F+F+F+F+F+M%Y%8-:&i&i&:&8-Y%M%F+K+:#6@R@>@}@a@L@.#.#.#.#.#.#L@+#T%J-I@~@K-n=]*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M& &w&s=V&U*#*[*k&$*$*[*==4&<&}=-*!&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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%U%P%0&a&a&0&P%U%J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+I%O%X*X*O%I%J+H%X*K&|=u*L-w*j&[*j&j&[*e-$*$*$*$*$*$*$*e-6-*-r-b='&s*&=p&J+F+F+F+F+F+F+F+M%@='*O*6&6&O*'*@=M%F+P@(@U+#-q=(=a@L@.#.#.#.#.#.#.#T@5@B%q%M-2@)@K+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+U%F&2-h*3-<*j&k&$*$*k&%*i=P*^&H=s&S%M&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+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+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+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+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+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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%q&t&s&)&=&{&.&r&0&q&J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%M%!&Y*2*i-.& &I%N-/*F&$&Q*Q&O-#*%*A&A&0*k&$*$*$*$*$*$*$*e-B&|-<*3-P-+=&&i*J%F+F+F+F+F+F+F+M%F&'&:&i&i&:&'&F&M%F+O+(@2@$@>#}@K@L@.#.#.#.#.#.#.#L@/@~%w%b%Q@:#P@F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+H%*&s*8-9-,=5*B&k&$*k&0*i&E=D-S*Y* &~&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+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+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+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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+K%~&^*^*~&K%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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&N%!&K&2*]&H&W*1&s*F&0&U%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G% &t=}=v=<=W*K&O%G%S%A*+&8-l=Q-y*%-0*A&j&B&$*$*$*$*$*$*$*$*e-B&5*R-S-T-t=*&p&K%F+F+F+F+F+F+M%F&=*(&====(&=*F&M%F+K+P+2@_=>#^@K@L@.#.#.#.#.#.#L@T@p@,@U-Z+_-Q+O+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+P%K&I&<=O*a*0*k&$*$*[*5*,={=B*i-`%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+F+K%~&^*^*~&K%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+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+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+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+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+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+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+F+F+F+F+F+J+I%O%X*X*O%I%J+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+Y&v&K&4=}=b*y&T*e*W*s*r&P%H%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%N%&&x&**4*,*^=[= &^*H%t&1*Z*D-O*V-[*B&j&j&B&e-$*$*$*$*$*$*$*$*k&%-C&W-X-Y-@=i*M&F+F+F+F+F+F+I%Z%u=Q=w*w*Q=u=Z%I%F+K+(@U+F=q=;#a@L@.#.#.#.#.#.#L@+#p@c&>@Z-l*O@M+`-F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+Y&f&}&V=Q&!=6&B&$*$*k&j&I*(&b*G&(*p&K%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+K%~&Y&/*0& &O%I%J+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+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+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+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+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+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+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+F+F+F+K%I%0&K&E&E&K&0&I%K%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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J%!*c*2*u=D-O&|*'=Q&>&_*K&0&S%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%a&4=v='=5&l&V&$&v&^*G%P%n*+=.=g* ;~-0*j&0*B&$*$*$*$*$*$*$*$*$*k&[*#*.;/&u=+;W%U%K%F+F+F+F+F+I%c*s=O&5&5&O&s=c*I%F+1@P+2@$@>@^@K@L@.#.#.#.#.#L@L@L@K@4@@;-- @F%M+J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%t&t=9=U&z=-=0*k&$*k&[*}*U*V&9={&!&~&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+K%G%P%r&t=)*2*.& &I%K%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+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+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+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+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+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+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+F+F+~&Q%Y*H&W&W&H&Y*Q%~&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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%p&*&t=>*:*g*f*}*==|*U&S&t=a&U%~&F+F+F+F+F+F+F+F+F+F+F+F+F+J+/*R*'*O&w*-=z=J*+&i*~&M&U%&=>-8-#;.;1-A&[*[*0-$*$*$*$*$*$*$*$*$*e-k&0*a*:&$;#&@=!*G%F+F+F+F+F+I%s&(-O&5&5&O&(-s&I%F+O+(@<%$@>#^@a@L@.#.#.#.#.#.#L@L@ #q@%;x=L%T+##J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%Q%(*G&J*(&C&A&k&$*k&B&%*i=P*%=X&s&M%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+J+p&*&=&:=Q*7&<=8&.&O%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%~&^*^*~&K%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+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+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+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+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+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+F+F+F+F+F+G%!&X&7&,*,*7&X&!&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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+K%~&^*^*~&K%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+M&X*&&d*V=**D*I*6&#*,*/&}=n&*&U%N-N-J%J%G%&;F+F+F+F+F+F+F+J+N%c*_*`*@*-=a*I=.*&&U%K%F+J%v&9&*;T*_&=;!-k&0-k&k&e-e-$*$*$*$*$*$*$*$*k&6&-;;;8->;,;S%F+F+F+F+F+I%c*u=O&w*w*O&u=c*I%F+K+P+2@#-S@;#h@L@.#.#.#.#.#.#L@T@K@a=@-d%~@K-n=K+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+Y&&=d=R&C*4*5*B&$*$*k&0*5&E=D->*1*Q%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%H%!*Y%}&F-r=7=!=4&u*>-X*^*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+I%O%X*X*O%I%J+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+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+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+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+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+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+F+F+F+F+H%c=>*L=C&C&L=>*c=H%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+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+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+F+F+F+F+F+F+F+F+F+F+F+J+I%O%X*X*O%I%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%R%&=n&x&8*7=l&y*==I*_&`*w=;=*&U%';);&=X%!;/*J%K%F+F+F+F+J+q&r&+=J*O*5&-=U*D-4=!&G%F+F+^*!*~;#&W&v*a*!-k&k&k&k&k&k&k&k&$*$*$*$*$*$*k&0*5&O*<={;.&!*G%F+F+F+F+M%Y%=*:&====:&=*Y%M%F+K+P+2@t@S@~=K@L@.#.#.#.#.#.#L@+#h@q@3@W@|&$=)@P@F+F+F+F+F+F+F+F+F+F+F+F+F+F+^*0&=&w=`*z&i&0*k&$*$*B&5*,=h&];%&W%H%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&N%W%=&Z*<=(&l&w*w*4*v=2*X*^*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%I% &F*+&+&F* &I%K%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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&~&~&~&J+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+F+F+F+F+F+F+F+I%s&9=I=w*w*I=9=s&I%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+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+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+F+F+F+F+F+F+F+F+F+F+K%I% &.&E&E&K&0&I%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+I%V%F*1&8=f=4*#*A&}*&*O&T&_*)&^;/;(;%&Z*m-_;:;f&<;^*K%F+K%U%r&@&T&v*P&-=C&f=u=F*q&K%F+F+K%U%Z%[;};3-I*}-0-e-$*$*B&[*B&0-$*$*$*$*$*$*$*k&%*q*L=R&|;(;p&J+F+F+F+M%Y%8-:&i&i&:&8-Y%M%F+1@:%_@5%S@;#h@L@.#.#.#.#.#L@L@T@+#9*V@n%#=2@)@K+F+F+F+F+F+F+F+F+F+F+F+F+F+K%R%n*-&1=3-C&A&k&$*$*B&j&<*3-k=#&n*R%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%J%i*@=d*V=**,*i&6&}*@*m&.*1*O%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&O%.&Z*T&T&Z*.&O%~&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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&H%S%U%U%S%H%~&J+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+F+F+F+F+F+M%Y%.*(&====(&.*Y%M%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+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+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+F+F+F+F+F+F+F+F+F+F+~&O%K&)=W&<=w=R*Q%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+q&&=%&u=*=E=<*%*B&==4&9-F-[=s&1;t&W=J=O&z&M=,-G*2;a&N%^*Y&W%$&T&7*a*%*l&Q=%=+& &G%F+F+F+&;3;F&1&k=3-<*|-k&$*$*k&[*A&|-0-k&$*$*$*$*$*$*$*B&==4;5;8&6;X*~&F+F+F+M%@='*O*6&6&O*'*@=M%F+1@:%<%$@C@G=K@T@.#.#.#.#.#.#L@L@ #z*c%%@Y+2@:%K+F+F+F+F+F+F+F+F+F+F+F+F+F+I%W%J&[&h&,=5*[*$*$*k&[*-=|*B=(-t= &^*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%Y&v&w&)=8*v*q*#*[*i&4&l==*n&!&I%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^*0&7;<=z=z=<=7;0&^*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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%U%P%0&a&a&0&P%U%J%J+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+F+F+F+F+M%Y%8-:&i&i&:&8-Y%M%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+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+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+F+F+F+F+F+F+F+F+F+F+^*t&)*H*@*,*`*+=o&G%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M%0&)&G&>&P*4*y*6&5*6*:&o*Z*=&a&O%8;]&9;{-0*#*,=C*0;$&1*(;a;>-b;c;5&y*a*7=>&}&`%Y&K%F+F+K%J%!*6;:=<=O*d;!-e-$*$*B&A&{-#*0*0-$*$*$*$*$*$*$*k&A&C&e;b;f;g;Y&J+F+F+M%F&'&:&i&i&:&'&F&M%F+K+P+U+F=S@}@a@L@.#.#.#.#.#.#L@+#K@U@c%L*K*<%(@O+F+F+F+F+F+F+F+F+F+F+F+F+M&0&{&W*7&/=i&0*k&$*$*B&x*q*Q&V=)*f&Y&K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%O%X%i-3***U*i&%*i&6*7*v=>*h;v&Y&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+i;o&2-j;k;k;j;2-o&i;F+F+F+F+F+F+J+~&~&~&~&J+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+F+F+F+F+F+F+F+F+F+K%~&^*^*~&K%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+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+F+F+F+F+F+F+F+F+F+F+F+J+J%q&0&r&.&h;h;.&r&0&q&J%J+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+F+F+F+M%@='*O*6&6&O*'*@=M%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+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+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+F+F+F+F+F+F+F+F+F+F+G%W%#&**6*<*I=s=Z%Y&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&O%f&>-=*V&'=y*A&6&w*l;m;n;4=F&/*Y&,;Z*Z=A&k&B&}-w*p*o;B*_*G&6= =]-A&y*7=T&@&f&N%J+F+F+F+J+p&a&p;s=q;'=T=[*$*$*e-[*[-a*w*t-[*k&e-$*$*$*$*$*$*0-6&,*r=r;+;t&J%F+F+M%F&.*(&====(&.*F&M%F+K+P+'##->#^@a@L@.#.#.#.#.#L@L@T@a@U@c%L*@#2@P+1@F+F+F+F+F+F+F+F+F+F+F+K%O%F&1&>&O&P&A&k&$*$*k&j&a*v*<=E*)&P%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%M%v&)&t*h*P*!=6&-=a*/=/&F-H=Z%i*J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+H%8;s;B=D*D*B=s;8;H%F+F+F+F+J+~&H%S%U%U%S%H%~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&~&~&~&J+F+F+F+F+F+J+I%O%X*X*O%I%J+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+F+F+F+F+F+F+F+F+J+~&~&~&~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&U%0&n*E&G&W*W*#&W=F&0&U%~&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+F+F+F+M%F&'&:&i&i&:&'&F&M%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&~&~&~&J+F+F+F+F+F+F+F+M&G%J%J%G%M&F+F+F+F+K%~&^*^*~&K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%o&#&b-l&y*3=V=1*U%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+I%v&Y*t*k=P*&*x*$*%*l&3-^=t;u;v;M%~&w;X&x;w*[*k&k&0**-y;(&b=z;A;l&%*{-Q-^=B;r&N%M&F+F+F+K%J%O%f&C;V=f=^-#*[*e-$*k&[*t- -q*w*~-6-e-$*$*$*$*$*$*$*[*a*7*};N&D;E;K%F+I%c*9= =I*I* =9=c*I%F+O+(@2@e@q=(=a@L@.#.#.#.#.#L@L@L@T@T%c%c@7@6@(@K+F+F+F+F+F+F+F+F+F+F+F+H%W%[=[&**,*#*[*$*$*k&[*#*@*F;G;|;X%O%I%I%M%I%I%I%I%M%M%I%I%M%I%I%I%I%M%M%I%Y&H;I;J;B*K;D*d;{-[-i= =$;L;;*a&S%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M;N;E*O;l&l&O;E*N;M;F+F+F+J+J%U%P%0&a&a&0&P%U%J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+G%P;q&O%O%U%H%~&J+F+F+K%I% &K&2*2*Y*v&M%K%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+F+F+F+F+F+J+~&H%S%U%U%S%H%~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+H%!*Y%2*S&h*T*7&e*)=+&r&P%H%J+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+F+F+M%F&=*(&====(&=*F&M%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&H%S%U%U%S%H%~&J+F+F+F+M&J%S%q&O%O%q&S%J%M&F+J+I%O%X*X*O%I%J+F+F+F+F+F+F+F+F+F+F+K%G%Y&R%Q;R;S;I*%*,*J*-*Q%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^*Q%Z%d=;&<&/= -t-A&-=@*m&J=R;.& &G%K%N%T;U;7=*-B&B&0*[*[-P=V;-;f*-=5- -O;W;@=q&J+F+F+F+F+J+M%i*@=2-J*X;5&A&0*6-k&k&B&[-<*&-q*T=[*k&e-$*$*$*$*$*$*k&~-f*b-m-Y;Z;M&F+H%c=S*L=C&C&L=S*c=H%F+1@(@'#Z+>@^@a@L@.#.#.#.#.#.#L@T@ #z*j@c@7@2@P+K+F+F+F+F+F+F+F+F+F+F+M&!&=&H&7&/=5&j&k&$*$*B&x*`; >.>H&+>@>#>Y%F&Y%Z%c*c*Y%Y%F&Y%F&Y%Z%c*c*Y%Y%F&$>;*J;9=8*%>I*-=|-==4*g*&>t**>0&=>F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+H%r&w=9;I*I*9;w=r&H%F+F+J+J%q&0&r&.&h;h;.&r&0&q&J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+->;>>>o&,>'>X%W%1;E;J%J+F+~&O%K&H&o*^=u=w&V%^*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+J+~&~&~&~&)>J%U%P%0&a&a&0&P%U%J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&p&W%;=Z*:*P*'='=Q&1=:=1*0&S%~&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+F+F+I%Z%u=Q=w*w*Q=u=Z%I%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%U%P%0&a&a&0&P%U%J%J+F+M&M%R% &o&&=&=o& &R%M%~&M%!&Y*2*i-.& &I%K%F+F+F+F+F+F+F+F+J+S%v&F&!>n&c-U&!=#*q*y&m=X*J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+p&a&{&S*J*O&~>==*--=D=p*S-{>]>F*^>J%J+~&);J&J*U*[-k&j&t-*-j&x*x*#*z-#*z=/>(>i*M&~&_>_>~&K%J+Y&X*.&_*v=:>5*6-j&A&0*B&[*~-w*f*]=6*[-6-e-e-$*$*$*$*$*e-[*i&O*<>N&[>}>K%G%!&X&7&,*,*7&X&!&G%F+K+:#6@F=>#~=a@L@.#.#.#.#.#.#L@+#K@0@j@8@Y+0=|>1>J+J+K%F+F+F+F+F+F+K%P%n*N&>&O&6*%*k&$*$*k&j&y*z={=b*2>B*3>.*.*.*8-=*(-(-.*=*.*.*.*8-=*(-(-.*=*.*];J=q;K=h-#*B&A&-=i=O***k=4>+;^;I%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+I%s&5> =w*w* =5>s&I%F+F+~&U%0&F&W=2-W*)=t*i-.&0&U%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%6>!*&=K&s*7>8>9>0>F*o&O%J%J+^*0&)*8*,*4*b-S*s&M%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&H%S%U%U%U%3;/*v&r&.&h;h;.&r&0&q&J%J+F+F+F+F+F+F+K%N-a>b>I%N-K%F+F+F+F+^*P%Z%)*R&{=,*====U*<&u=W=W%U%~&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+F+F+I%c*s=O&5&5&O&s=c*I%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%q&0&r&.&h;h;.&r&0&q&J%->M%Q%*&@=w&+&+&w&@=*&Q%c>v&t=}=v=<=W*K&O%~&F+F+F+F+F+F+F+K%Y&`%[='&8=d>j-q;!=[*i&m&#&o&~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&P%Z%}&6=9-4&-=!-A&y*^-e>b-8=|=h;0&U%~&K%J%A*f>y&!=~-x*{-i&g>#*~-#*#*w*g*u=h>O%i>j>k>k>j>l>)>M%V%@=N&m>Z=w*[-{-T=#*x*A&x*==l&@*k;a*A&0-e-e-$*$*$*$*$*k&A&^-;;n>;=^>H%~&Q%Y*H&W&W&H&Y*Q%~&F+P@(@U+e@S@;#K@T@L@.#.#.#.#.#L@T@ #z*g@8@@#o>p>q>O%q&M%M&F+F+F+F+F+H%W%i-B*{=,=5*B&$*$*k&6-[-O=_& =D&r>7*(&:&j=(&7*:&O& =7*(&:&j=(&7*:&O& =7*(&7*X;U*C&5*!-[*[*A&-=s>]=D*K=r=t>)&O%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M%Y%.*(&====(&.*Y%M%F+J+H%P%r&W=W*.=7&T*k=s=)*(*0&H%J+F+F+F+F+F+F+F+F+F+F+F+F+M&u> &v>s*I&G;e*J*w>.*x>y>o&E;~&^*!&+=b=C&i&/=8=t=Q%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%U%P%0&a&a&!&o&c=z>+&G&W*W*G&%&F&0&U%~&F+F+F+F+F+J+Y&);g;n*r&0&Y&J+F+F+F+G% &)&_*T&Q=l&6&5*4*h&B*i-&=U%~&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+F+F+I%s&(-O&5&5&O&(-s&I%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&U%0&F*i-t*)=W*1&W=F&0&U%a>q&a&K&)*W*;&;&W*)*K&A>v&.&H&**4*,*^=[= &^*F+F+F+F+F+F+F+~&i*s*.=7*4*'=B>/&U*-=I*D&Z*&=J%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+Y&W%t=8&D-7=6*z-[*%-i&i=U*j=C>];)*c*P%H%J+K%p&Y%D>E>P&|-x*t-1-y*T=]-q*_&F>G>+&H>I>J>K>L>M>N>O>P>/*f&E&m-y&7=R-Q>/-!=w**-}-%*a*-;U*R>{-[*e-$*$*$*$*$*$*$*[*V-v*X-]>s&N%K%I%0&K&E&E&K&0&I%K%F+O+(@2@b%U-G=M@T@L@.#.#.#.#.#L@L@L@'@r@L*S>T>U>V>{&&&a&p&M&F+F+K%M&t&h;8&8*/=i&0*k&$*$*B&j&}*<*!=D=g-w*5*i&==a*i&-=-=5&C&5*5&==a*i&-=-=5&C&5*5&==T=[-[*k&e-k&k&0*}-#*}*==W>&-v=2*X*^*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M%Y%8-:&i&i&:&8-Y%M%F+~&S%0&.&_*>&f=D*z=I=o*x&X>c* &Y>I%I%I%M%M%M%M%M%I%I%P>Y>H;8;1*Z>8-<=`> ,3=:&;;.,[;F*1;H%G% &d=y=f*#*l&<&+=o&M&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%q&0&r&.&h;+,;*9&+;$&t>h*T*T*>&w=>-c*P%H%J+F+F+F+K%Y&N;@,S&U;#,@,N;Y&K%F+K%Y&!&;=S&T*E=C&==5&,*{=3*>-c=q&~&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+F+F+I%c*u=O&w*w*O&u=c*I%F+F+F+F+F+F+F+F+F+K%~&_>_>~&K%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+J+H%0&@=m=s=k=T*7&e*)=s*r&H;O%$,F&H=8-^=h&h&^=8-H=(*$>%,<=D*5&l&B=$&v&^*F+F+F+F+F+F+F+^*a&t*f===0*6&3={=z&#*}*3-}=Z%I%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+H%!*@=X&&,C*-;==%*A&6&i&I*I*!=Z=*,_;h;!&S%~&F+J+!*=,F--,I*{-[*[-t-t-y*6*z= =;,Q*>,,,',),!,~,{,],^,N%!&.&4==*s-U&b-3&K=/,a*%*A&(,!=U*/,<*A&0-e-e-$*$*$*$*$*k&~-^-_,:,=&^;M%J+I%O%X*X*O%I%J+F+F+K+P+2@e@<,~=h@L@.#.#.#.#.#.#L@T@+#T%=#[,},|,1,2,e*8-E&a&M%&;J+J% &&&N&.=g*P&A&B&$*$*k&[*}-x*t-#*5*[*{-x*y*}*a*i&-=-=5&C&t-5&{-a*i&-=-=W>C&t-W>}*q-~-k&$*e-B&0-j&%-3,4,5,6,7,8,2*X*^*F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M%@='*O*6&6&O*'*@=M%F+~&U%a&t=S&*=z=-===4*f=1=W*[={&9,c*s&c*Y%Y%@=F&F&0,a,b,=&0>d=_;.,/&c;R>i&#*i&,*h&c,:;W%U%N-O%{&%=z&#*w*O&'&)&R%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&U%0&F&%&G&W*4>_;-&_*}=<=P*'='=D&T&G*h;!&S%~&F+F+F+G%Z;7;k=d,Y=3-k=7;Z;G%F+J+p&`%>-];b-@*-=6&i&U*b='*%&A*U%J+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+F+F+M%Y%=*:&====:&=*Y%M%F+F+F+F+F+F+F+F+J+l>j>e,f,N>g,h,i,G%_>J+K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&O%f&W=w=<=g*z='=Q&h*t*)&j,H;(;t=)=^=(&&*&*(&^=)=k,E&T-U=]-T='=J*+&i*~&F+F+F+F+F+F+F+^*o&I&g*#*!-t-l,m,7*w*i&%>g&@>N%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&N%W% *S&7&O*I*5-n,~-#*T={-%*t-&-**;&>-f&R%~&F+J+o,(;)*Q*{=_&`;a-T=#*x*t-a*w*-;p,q,r,s,t,u,v,w,x,^,I%Q%W%.&y,t*9=[&8=z,M=r-a*==T=A,B,U*C,y*0*k&e-$*$*$*$*$*$*[*y*D,E,F,(*X*M;)>N-G%G%~&J+F+F+F+K+(@U+e@U-c&K@L@.#.#.#.#.#.#L@T@a@G,H,I,J,K,L,M,4*O&'&&&N,u>Q%a&&&m=];/&4&#*B&$*$*k&B&}-0*j&|-[-I*6*U*z&7=7*j=(&7*7*Q=O&O,v*O* ,O*E=%>:&K=3=E=P,Q,C&6&[*j&~-x*R,S,T,U,V,W,X,Y,Z,O%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M%F&'&:&i&i&:&'&F&M%F+~&U%a&n&}=/&,*#*6&<*4;m&W&V=U;'&9=(-u==*8-;&`,8-;&[&h=J=.= 'v=.'+'w*x*[*k&B&-=E=s-1&@'O%~&H%X%8&L=C&}*4*7&#&c*q&^*K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+H%P%c*>-w=>&T*z;,&h=#'h*m&,*{-==@*b=;&>-f&R%~&F+F+K%U%F*;&7*}*j&#*7=U;Y*N%K%J+R%X%}&e=Q&q*x*[*==|*<&u=n&*&Y&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+F+F+F+M%Y%8-:&i&i&:&8-Y%M%F+F+F+F+F+F+F+K%l>e,M>$'%'&'L>*'='-';'e,>','''~&J+K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+M% &K&#&8=L=,=}*==|*U&9= *A*)'Z%[=B*h&4*x*x*4*{=R&!'G*s-o-y*5&O&~'.&U%K%F+F+F+F+F+F+F+~&0&$&;,R>{'4,]'^'Q=I*t-U*};n& &H%~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+G%0&K&2-J=f=]=-=0*[*A&*-{-t-j&~-P&D&Q*4=Z%Q%~&J+J%N%!&T;4=:,.=T*h&3-Y=`;/'-=%*}*('_':'<'['}'|'1'-'''M&Y&Q%!&f&2'3'+>4'G;5'6'f*y*x*x*5&!=f*<*[-B&e-$*$*$*$*$*$*k&A&a-7'};c-8's& &V%/*Q%O%q&N%S%S%9'0'a'b'c'd'e'^#L@.#.#.#.#.#L@f'g'h'i'j'k'l'm'i&x*k;n'W=N;o'r&;*X&'*`*p*<*j&k&$*$*B&p'*-x*t-]-.;q'T*1=h='*'&.*.*;&;&;&4-Q*r'n'm>};s-b*h*k=s'y=t'u'v'h-a*{-5*.-3,w'x'y'z'A'B'C'!&I%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M%D';&7*{-{-:&=*F&M%F+~&S%o&t=x&*=E'w*7-{-C&U*v*K=O*(&7'O&O&:&:&%>v*c;F'o-G''=D*O*p*H'-=j&0-$*$*k&x*@*y&E*9,Q%~&J+0&m=T*P&[*-=v*J*t*K&t&p&~&K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&S%!&h;G*T&D&'=I'J'U&K'T*O&D=t-5*q*Q&Q*4=Z%Q%~&F+F+~&i*>-L'^-A&6-j&D=S-R;W%=>M&/*@=1&h*O&i=6&A&y*_&T*W*=&0&I%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+F+F+F+M%@=;&v*6&6&p*B*&&M%F+F+F+F+F+F+F+~&j>M'N'O'P'Q'R'S'T'~,U'K>V'W'X'Y'Z'`' ).)_>M&F+F+F+F+F+F+F+F+F+F+U%`%s*}=`*p*C&6&5*]=b==*%&`%+)#>X&^&U=!=#*#*!=@)};#)$)`>D={-y;b=t*`%G%F+F+F+F+F+F+F+F+&;%)=&V=&)w'*)=)-);)>)~-!=z;+=c*P%U%J%J+F+F+F+F+F+F+F+F+F+F+F+~&/*X%2*=*B=_&<**-A&}-%-~-t-[-~-5*`;O&};N&n*!*,)J%q&0&X%;*@,@&G&I&w=B*')B=Q&3=f*w*R,))!)~){)])^)/)X'l>F+M&I%N%/*V%)'c*()_)E-{=,*#*6-6-%*T=/'a*z-[*k&e-$*$*$*$*$*e-B&%-I*v'F>%=:)+=i-s* *t=h;9&K&F*<)[)})|)1)2)3)4)5)6)7)8)7)8)9)0)a)b)c)d)e)f)~-A&C&Q=6=g){&t=)*S*e=V&:&l&6&B&k&k&k&0*{-l&,*/=`>&>*;m=w&Y*@=F&Y%D'h)!>+;d=G&i)j)];6=k)%=.=$;^=S-l)-,P,y;5&5*|-6-m)n)o)p)q)r)s)t)U%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&/;)&[&7*a*a*Z=;&@=P>K%G%3;A*u)v)L'p*<*~-[*A&{-5&V-5*=;i&5&w*{-i&x*1-t-#*6&w).-~-5&/'{-0*k&$*$*$*k&~-4*u-W*1*x)~&F+U%1*V=_&#*%*C&p*`*}=J&(*!&O%S%M%I%I%I%I%M%M%M%M%M%I%I%I%Y>>>c*y);&b=@*====-;D&V&b- ,i=-=-=!=I=h*N&n*!*J%F+F+^*v&z)h&5&%*A&j&}*O*e=t=A)M%X*)&|=<=7*6*#*}*6*7*<=|=K&X*J%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+F+F+F+M%Z%}=(&i&i&O*F-)&p&F+F+F+F+F+F+F+_>k>L>B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)M'R)S)k>j>i,T)~&K%F+F+F+F+J%i*&&N&J=f=]=5&==w*z=<&(- *g;U)&&2->&I=&*y*y*R=7'8*m>B=|*5*j&^-y=V)U)i;K%F+F+F+F+F+F+K%^*W))&X)Y)Z)`) !.!+!@!j&w*A;;&#!$!^;q&J%J+F+F+F+F+F+F+F+K%~&G%R%W%;=S*u*j=6*x*j&|-}-[*[*A&A&j&~- -(&J*G&&&P%M%U%0&F&W=%!&!#,*!=!-!s*@,d*W*V=;!>!p*,!'!)!!!~!{!]!^!E;~&K%K%~&P>/!(!!*&=w&_!j;/,t-[*0-B&0*%*~-j&B&$*$*$*$*$*$*$*$*$*e-[**- ;/=r>B>`*^=W&:*1=8=e=F-:!h-O&,-H&Y-%!4>g&<=m&E=l&#*[*k&k&$*B&5*h-f!C>^&Z*3'r&0&R%p&M%Y&I%N%g!h!Y*H=w=i!.>j!x;O;L=I=K=_&R-h-<*y*k!A&!-B&k&l!m!n!p)o!p!q!r!s!F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&Y&0&t!&,%>-=-=O,g&{&u!Y&/*U)v!$&G;B=z&i&[*$*k&[*[*A&%*-=i&5&d;#*{-|-[-5-A&!-[*w!0*~-x*}-k&$*$*$*$*k&~-&*b-H&Y*P%M&F+J%x!_*b=l&*-{--=4&U=<=u=$&t=.&n*Z%c*s&c*Y%Y%@=F&F&Z%c*s&Z%9,w&1&%=Q&q*5*5*y!z!E>C*E=6**-#*l&Q=b*G&&&P%G%F+F+J%+)+=r=6*==-=~-x*q*b=E*~;A!B!=&)=T*_&i&A&5*l&O&h*2-@=/*M&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+F+F+F+I%r&w=O&==#*'=b*E& &J+F+F+F+F+F+F+_>k>L>C!D!E!F!G!F!H!I!}'E)C)J!K!L!M!N!O!P!Q!$'Q)R!S!f,Z'T!.)G%N-u>A>t=S&7&3=a*x*5*6*7=D-Z*;*W%!&F*G&T&Q=P&6&6&a-X;_,r= ,5&j&6&@*v=@&X%O%^*K%F+F+F+F+F+M&N%A>U!V!W!X!Y!Z!`! ~.~+~{-|*x;@~2-y>W%R%N-F+F+F+F+K%J+G%I%U%!*f&=&-&h=#~4&1-B&B&0*!-$~k&0*0*B&[*5&v*,&_*.&V%o,P%r&%&)=e*7&`*1=s=C;!>r&%~Y%;=1&3>&~*~=~-~{);~>~,~'~c=Q%P>)>^*P>p&p&q&i*$>)~L'-;A&B&k&$*k&k&6-0-k&$*$*$*$*$*$*$*$*$*$*$*0-0*#*{-<*a-&*&*4*@*@*z&3= ,!~~~{~]~^~/~(~_~:~<~[~[~[~}~|~1~2~3~4~5~6~7~8~h*G;u=];J=H*h&3-,*w*5*j&k&$*$*k&0*5&9~0~#,+&Q;Q%H%J+F+F+F+F+J+H%P%r&%&S&W&a~%>R-~>C&w*i&#*[-A&0*[*B&B&k&e-e-e-b~c~d~e~f~g~h~i~~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&Y&P%X%j~<=Y=#*#*D*k=)*k~D'n&#&}=2&B=:&i=x*k&$*$*k&6-x* -R-/=E=_&]=i=a*{-~-0*6-[*0*}-!-6-[*B&e-$*$*$*k&A&h-l~9=m~Q%J+J+G%);w&;&h&'=C&{-I*5&,*I=*=e*3*;&u=s=(-u==*8-;&'&=*u=s=9=S&4>I&x&s-I=!=-=-=D=%>f=A;_&d;j&j&I*(&J*_*.&!*~&F+^*n~N;o~e*P*N=&*T=%**-p~>&q~`%`%n&}=l=U*}*[*%*!=Q&Q*}&X%R%J+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+F+F+F+^**&1&b-P&-=q*b-E*X%Y&F+F+F+F+F+F+~&j>M>r~Q's~t~D)E!H!u~v~F!w~x~y~z~A~B~C~D~E~Q'F~G~~,O)L>H~I~-'J~K~L~M~N~O~]=#*B&A&l&I=>&-&(*^;^;F*_*T&(&w*0*0*5&P~P*Z=l&A&k&~-R-y&x&0>~;X*=>K%F+F+F+J+S%a&Y*Q~R~S~T~U~V~W~Z)X~Y~|-1-^- >d-Z~q~`~Q%J%K%K%J+G%U%!*!&c=F*s*G&3*U&v*l&*-0*0*A&}-[*[*0*j&[*j&a*v*.>_*&&1;q&0&Y*]&1=Q&'=z=g*W&)=(> {/*.{r&-!H&d>+{@{#{${%{&{*{={-{{&%~);i*0&V%V%P%;{>{[=,{z&[-[*k&$*$*e-B&0-B&e-$*$*$*$*$*$*$*$*$*$*k&[*%*[*t-[*t-x*6&==%*-=6&i&}*'{){!{~{{{]{^{/{({_{:{:{_{({]{{{<{[{}{|{1{2{g&Q*,-B=Q&O*,*6*==j&0*[*k&k&k&[*5*,=B>c,y)h!P;J+F+F+F+F+F+F+~&S%0&.&G&k=O&q*T=x*0*[*B&0-e-e-$*$*$*$*$*$*$*$*e-3{4,4{5{6{7{8{9{K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^*R%W%;=(-{=i=x*[-&-0{(-a{b{c{K;O&$-k;w*6&[*$*e-e-0-A&w*p~A;+*B>d{_&i=T=x*[*0-$*k&[*j&B&k&B&B&k&$*$*$*k&j&l&O;e{y>A!)>J%N%X*f{o~=*^=Q&:> -0*}*-=q*U*O*7*j=W-O&O&:&:&O*:&(&Q=O& =9;C*<=^&g{f!l&#*#*6*/=k-D&z&w*~-~-<*h{J*_*&&!*I%I%Q%A>@>]>#'T*A-R-W>A&A&6***_;.&F&|;3*{=,*y*x*==,*9-];>-`%p&J+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+F+F+F+M&P% *h*z&#*}*z&J*[=!&G%F+F+F+F+F+K%l>N>H~i{P!N!j{E~D~k{B~A~l{y~x~w~F!v~u~H!E!D)C){!m{L!R'n{o{p{q{r{s{t{u{v{w{x{Y~('y{**[&[=r&!*1;&&_*J*3-C&6&6&]-'=7=]=6&0-k&%*h-Q&z{A{+>F*t&/!K%F+K%H%t&)&d*B{C{D{E{F{G{H{I{J{+~k&B&j&i&U*O;.,2-!>W%/*o,U%P%o&Y%;*2*G&s=%=y&Q=f*}*A&%*6&t-~-0*0*}-|-A&6&<* ,u*G&(*X*P%W%n&(-V&U*==}*,=r*%=+=@=0&1;@>x&`*K{L{M{N{O{O{P{I{Q{R{S{J&)&&&)&1*)&s&A*>{;=S&B>k;{-0*k&0-[*5-%*A&[*e-$*$*$*$*$*$*$*$*k&[*#*<*a-q*P&!=!=!=D=a*a*t-T=#*T{U{V{W{X{Y{$*Y{X{Z{`{Y{`{`{Y{ ].]+]@]#]$]%]&]x;O&z&4*I*}*6&%*B&B&B&k&k&B&%*<*(&T&G&F*N%M&F+F+F+F+F+F+F+~&U%a&h;)=;,@*[-[*k&e-$*$*$*$*$*$*$*$*$*$*$*$*k&[*t-*]=]-];]>]>>G%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%~&^*,]R%0&']x>)]$-==[*[*5&(&*,g&^&`>i=5&T=~-|-B&0*6-6-k&I-.-l&$-P*A;(&R-I*6&[*[*k&k&k&e-6-!-j&[*6-0-e-$*$*$*$*j&O=!]8-;=~]M%q&0&X%*>@,f>)=F-{]j=h-i&!-t-~-T=#*a*=;5&w*==i&6&i&==w*5&a*C&I* >o*5;7*I*j&j&5&'=g*e;|*]]*-*-C&c;v=I&Z,`%0&!&c*h;^]/]1=b=z!h-{-A&0**-z!8-+;;*d*^&D&f*-=#*I*z&B=(-;=!&Y&K%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+F+F+F+K%Y&s&>*h&P&==w*Q=3*-**&U%^*M&F+F+J+G%(]g,_]R!Q):]Q!P!M)N!M!L!K!J!B~<]I!I!H!F!G![]}]}]|]<]k{1]2]3]4]5]6]7]d~8]9]0]a]b]c]d]e]f]>>g](*G&J*j=i=-===6*U*'=<*[*$*$*0*d;U*h]0~i]R;+,j](!J+~&/*F&m=];H-k]l]m]n]o]p]q]r]6&k&$*e-6-6&l&:&8*~'s] *b,n*b,t]^]*!];h*7&h&(&,*5&5-6-%*{-==~-[*6-0*0*!-|-a*v*,&_*&&1;Q%W%E&'***4*5*6&6*7=H*H&;=&=o&E&W&,*u]v]w]x]y]z]A]B]v]7,K;}=1&1&:=E*t*}&;*']@>9>U;_,'=w*t-A&|-[--=i&t-[*k&$*$*$*$*$*k&$~B&5*k;J'B>y&y=^=^=0~V&r* >3=/=C]D]E]F]G]H]I]J]]{K]]{^{J]Z{Z{]{L]M]N]O]P]Q]R] =D*l&5&y*6&B&j&%*A&0*0*B&k&[*}*4&+*=*t=0&I%F+F+F+F+F+F+F+F+~&U%a&h;)=;,@*[-[*k&e-$*$*$*$*$*$*$*$*$*k&k&B&A&-=^-O&B-S]u;)'/!J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+I%O%0&`%s&1*2*T]#~O=0*k&B&6&!=7'U]8~v*I*T===x*{-{-i&P=~-[*!-~-i&P&q*C&T=t-[*[*k&B&B&B&6-B&B&V]A&!-0-k&$*$*$*$*k&0*<*K{g&n&!;!*0&F&%&s;4>9=:,9=W]X]Y]Z]`]a*x*-=#*5&i&i&w*{-i&6&i&==w*5&a*C&I*O&o*5;7*<*x*%*d;R-7*%>^-#*!-0*7-R-/&;&)*m~.&{&m=G*F- ^C*p*&-V-.^!-j&{-K='*s*+;4'b*j=C&%*%*I*O*^=S*R* &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+F+F+F+F+F+~&!*-*e=(&y*0*!=h&[&H=Y*W%Q%Y&M;I%S%E;R%}>+^@^#^$^R)M'%^P)&^N)*^L)K)J)I)=^G)-^F)])[]v~;^}]F!>^,^'^)^!^~^{^]^^^/^(^_^:^<^[^}^|^1^2^3^J*(&C&x*x*w*,*Q>T=6-e-k&0*x*T=q*$-**.=4^n&5^<;6^A>t=H&H*7^J{8^9^n]z]0^a^b^>)0*e-e-k&[*A&a*Y= >S-m>];c^d^c,.=H*9-O&E=|*!=a**-j&j&#*w*5&[-B&0-0*0*0-6-y*O*:*_*F* &Q%`%%&;&b-@*5&}*a*U*h&F-)*#>r&i-W&,*u]e^f^g^h^i^j^k^l^y!k-:*m^.=u*^=:*F-t*w&']v!@&];<&n^O=o^[*%*T=w*i&~-B&$*$*$*$*k&0-6-w!g-e;p^S&d*J&2*7;+=:=u=6=q^r^s^t^u^v^w^x^y^y^z^A^z^y^B^C^C^D^E^F^G^H^I^J^+'&*I*6&0*6&6&A&6&}*#*6&A&j&0*x*l& =h*d*@=/*^*F+F+F+F+F+F+F+F+~&S%0&.&G&k=O&q*T=x*0*[*6-k&$*$*$*$*k&$~[*A&{- ;D*a~J*4>s*o&E;~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%I% &.&m=#&_;w=G;*,v*1-k&$*e-[**-6*U*_&I'4*h-!=f*/,P,K^~>y*%-!-[*0*j&0*[*0-[*k&6-[*[*0-B&[*L^0*A&5-[*k&$*$*$*$*$*$*[*M^N^O^P^Q^R^S^>-w=>&y&U&*,T^U^V^W^X^Y^Z^Y=U*Y=`^n^7^:&X;7^n^ /L-./Q= =P*`><=^&{]+/P&==}*a*@/R-&-i&0*e-e-w!<*:&d-e{t*%!W*[&J*/&Q=4&<*#/#*$/%/&/*/=/8&(>-/*!D-O*w*%*%*C&j=b*G&F*P%^*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+F+F+F+F+F+K%I%W%4=<=|*i&y*&*O&y=R&_*Y;n*c=(;;/W%o'^;P%U%M%s!.) )`'Z'>/X'W',/K>U'~,T'S''/)/K!!/<]-^|]['[]~/H!{/]/F{z]y]^/i^E{//(/_/:/4*f*{-B&k&[*0*6-[*~-a*Q>k-s-2/%&s&+)Z%o~%=U=*]3/4/h^5/5/6/7/8/9/5*0*0*0*%*A&}*T=i&l&Q>z!U=0/a/ /:>-;u]V-V--=%*A&6&T=6*!=6*}*j&!-j&j&[*5-w*v*W&_*(*;{b/o&-*s=U&z&a*x*6&P&O&b*_*Y*c/()s=H-O&d/e/f/g/h/i/j/k/E=d{h&{=P*:&/=7=+*h=$&)&l/y>f>E-#;|*y*0*%*}*m/n/#*0*e-$*$*$*k&0*[-d;p~o/_!:;T;F&p/2'v!q/r/s/g&t/u/t^v/w/x/y/z/A/}~[~[~B/C/D/E/F/G/H/I/J/K/L/i&}*}*%*0*#*i&I*C&P&I*==A&0*x*w*_&*=s= **&M%K%F+F+F+F+F+F+F+F+J+H%P%r&%&S&W&M/E=,*l&a**-j&k&k&6-[*A&5*N/&*3=Q&T*O/t* *(;O%J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&O%F*8&v=b-**f=k- ,f*5*0-$*k&$~B&5-==5&/'a-h-]=z=P/7=v'Q/-=0*k&$*e-k&$*0-B&[*6-B&[*[*B&B&n,A&A&j&!-B&e-$*$*$*$*$*$*R/l^S/T/U/V/W/X/G*T&g*|*4&Y/Z/`/ (.(+(@(#($(%($(&(*(=(-(;(>(,(,('()(!(~(s=)=E*u= ^7*I*%*A&t-i&a*}*j&k&$*$*6-t-6*{(T*e*](^=b-O&z&f*5&Y~%/0]^(/(((_(-]:(<([(T-U&_&I*#*-=f*U=%=$&Z%R%~&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+F+F+F+F+F+F+J+U%F&I&<&&*0*6&-=&*3=b-e*(-L;-&2-@&@,2;Z%^;q&J%J+F+K%J+~&'','>'e,;'}(='*'|(O)/)n{1(2(E~D~G)-^'^{)3(4(n]n]5/z]O{5({)6(}'7(8(9(0(a(b(c(d(5*5*d;&*`;5*0*0*~-0*k&e-B&j&==^-O&e(n>f(()-*]&o*/=q-g(h(i(o]4(j(k(l(m(n(%/o(i&6*y;!==;}*x*~-{-y*]]a*p({-*-%-!-~-w)0*!-1-l-Q-q(&*p(A&0*j&}-j&x*<* ,u*G&(*!*3;t&R*S*v=v*a*[*0*5&/=`*t> *k~v!B;V=y=r(s(t(u(v(w(x(y(:&X;G'/,f*6*-=a*3=H*Z*v!>{'>h;:=h*D&4*-=5*~-x*#**-}-0-$*$*$*0-%*d;+'m&Q*[;2;(*']9&W=f(_;'&b;H*z(A(B(C(D(E(F(D^G(B/H(H(I(J(K(L(M(N(O(P(5~#/}*j&j&#*y*5&i=4&D*z&|*i=y*j&B&t-l-M=>&R;#>i*J+F+F+F+F+F+F+F+F+F+F+~&U%0&F&2**!j-1/<&L=7*]=5&~-A&*-a*l-Q-3-Q(<=g&E*7;)&h!U%J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^*X*+&:*4&D=q*i&]-y*{-|-k&$*$*$*$*$~[*[*0*%**--=d;6*i=`;V-A&k&$*$*$*e-k&B&B&6-k&e-$~[*[*[*0*j&j&[*B&k&$*$*$*$*e-e-k&R(S(T(U(V(W(X(Y(c,9-,*}*#*Z(`( _._+_@_#_$_%_&_*_=_-_;_>_,_'_)_!_~_{_]_^_/_R*s*>*(_$--=6-$~0*j&0*6-k&$*e-k&0-6-A&`;v*9;g*7*z=q*5&y*{-__:_<_[_}_|_1_2_3_4_5_6_#~@*-=6&i&@*h&[&>-`%U%J+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+F+F+F+F+F+F+F+M&P%K&u=f=P&#*$*x*6&i=o- ={=+*V&y=};7_B;=&;/O%~&F+F+F+F+F+F+K%J+_>G%i,h,Z'f,8_{,9_0_a_b_c_d_e_f_g_h_^/y]z]F{O{%{i_${j_%{}'k{k_l_m_n_o_('p_a*`;5&j&j&}*T=x*6-e-$*k&[*5*i=7=z;[&4'Y-d^T*|*q_r_s_i(5/t_V~g_u_v_w_x_0]y_z_A_!]K=R-I**-0*[*[*6-0-0-[*6-0-j&[-[-{-`;Y=7=B_4*{-!-[*0*0*[*j&a*v*,&t*&&P%C_P%n*N&.=P*i=5*x*i&@*3&2&>*+=I&U;y& =%>D_=/E_F_G_y($-4&O-5&}*====A&x*@**=w==&A*j]c*>-s=H*:&&*==0*6-~-6&}-0-$*$*$*0-x*V;K=8*v-H_>-y,}&:=u=Q*u*V&f=:&+'6*T{I_J_K_`{/{L_E/(~M_A^L_C^N_]{O_P_Q_R_[-}*[-5*<*,=/=Q=f=C*D&v'^-T=%*}-q-U*;;U;)*~;+^i;K%K%F+F+F+F+F+F+F+F+J+J%q&0&c*{&d=S_w=i]1/T_:&R-U_'=3-`>T*.=u=_*i-@>`%H;H%~&J+F+F+F+F+F+K%J+J+J+K%F+F+F+F+F+F+F+^*X*+&,&4&6*w*!-t-B&|-6-e-$*$*$*$*k&e-$*$*k&0-0-[*j&5-j&0*B&$*$*$*$*e-k&e-$~$~k&k&B&6-6-6-B&n,0*B&k&B&k&$*e-B&6-6-[*%/V_}_W_X_Y_s{Z_^&D&l&x*%*`_ :.:+:O{U~@:@:E{#:E{$:%:&:*:=:-:{!;:>:|',:':):1^R*!:U&Y===[*0-k&k&e-$*k&k&k&e-k&k&[*#*l&k;!=C&a*}*0*x*q-~:{:~)U~]:^:/:(:_:::<:[:}:|:%*[*==z=V&(--*a&Y&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+F+F+F+F+F+F+F+F+F+G%X*w&u=l='=w*i&[-i&#*w*<*<*6*~>U* =v=u=J&D'1:U%^*M&F+~&J%I%H%G%K%F+F+J+~&l>T!2:N>S)3:4:5:6:7:8:9:0:a:b:c:d:e:f:;^j_~/v~[]g:h:i:j:k:l:$/g>m:{-A&t-`;f*W>j&k&$*$*e-[*6&u]3=S-n:o:[&8*/=-=p:q:r:4(t_{/s:t:u:v:w:x:y:z:A:B:C:D:r>]=-=|-$~e-$*$*k&k&6-j&x*#*5&q*+'%>E:h-*-[*6-n,0*B&[*i&F:,-t*K&!*M;U%&=>-8-+*'=w*#*7-6*p*b=^=D-8~3-k;d;[-D=7*G:{(H:,= -a*y*%*B&%*y*i&6*7*<=E*1*v&N, &(*4=3*V&E=6*x*A&A&%*0*k&$*$*$*0-x*I:3-o*m-*;8&J:V=u*V&L=(&D*^-P&5&~-[*+~Q_K:L:K]M:C^N:_{O:P:]{Z{X{L:W{Q_R_p_I*l&,=3=Q&r=o*u*L'h&3=6*{-6&#*P&%>U&3*x>m~8;!*p&^*J+K%F+F+F+F+F+F+F+J+J%U%P%a&r&f{=&+>c-S{};y=C>^=>&'*_;f(=&@=W%A!M%~&J+F+F+F+M&~&^*G%p&Y&Y&M%I%J+K%F+F+F+F+F+~&O%F*W*8*L=v*k;^-g-W>~-B&$*$*k&k&0-e-$*$*$*$*$*$*$*e-$*e-$*$*$*$*$*$*$*$*$*$*$*$*$*$*B&$~k&6-0*0*0*}-w![*0*A&A&0*[*R(Q:R:!^-~S:T:U:1= =i=#*6&V:^(W:X:o]o]z]o]z]5/z]4(Y:{)['y~[]])H!I!I!=^G~Z:`: *;*V%I%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+F+F+F+F+F+F+F+F+F+F+G%V%&&2-V=B=g*D*i=#**-A&[*[*[*A&i&Y=C*n'D>@,)&W%Q%=-<,<'B=m>^&')y&m&j=z=&*P&a*t-~-6&%-0-R_ks&A* &/*p&H%K%F+F+F+F+F+F+J+~&H%S%R%!**&r&h>t<+={;_;_*$&>;1*uH%K%J+J+^*J%M%S%q&O%i*0&!&v&!&V%Q%U%I%J+F+F+F+F+K%I% &Y*$&)=[&h*^=H-g*,=*-B&0-0*x*6&A&0*6-0-k&$*e-$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*e-e-k&0-0*%-~-[-6&t-*-*-6&}-[*v<}[,['[z;D&-;{-0*k&$*)[![~[{[][^[/[5;v=;,f=([_[:[<[[[}[+:4(5/i_5/o]3(|[1[2[3[4[5[6[7[N/A&!-[*0*j&}-A&[*A&!-~-%*A&[-~-A&6-k&e-k&k&0-[*[-!=Q&&,[;R*8[Z;a;R*I&.>:&I*}-0-0*x*5*[-%*!-A&!-~-6&1-=;*-A&6&5*%*%*y*<*P&@*(&h&o*];2-;*a&q&^*~&R%A*;=I&8=9[U*i&!-k&0-0-k&k&k&k&B&5*]=P*b=b=M=z&]=P&-=%*6&t-!-[*6&o^0[a[J_b[m*h*L=4&5&~-6-k&k&B&j&0*T=a*f*E=+*e*'&0;V[p*O&d-9=+>v!D'F&Z%c*s&c*Y%Y%9,Y*W[X[_)*!u==*Y[|/Q~Z[`[ }.}+}@}#}$}%}!!O{o]y]&}9^]^*}=}-};}>}:*k-,={-[*b~,}'})}!}w:~}+<{}r=L'd-]}^}/}(}_}X!H{:}<}[}y]o]${{/;^u~}}|}1}2}3}6,0*[*t-d;y;,=-;^-&*D=l&a*#*|-0*B&$*$*$*$*$*$*$*[*}*,*!]s-j)]&}&d=r/];U&_&i&0*0-k&B&[*k&5-%**-*-5*~-w)*-A&k&%*y*a*C&,*3=O&9-v=h=W*}&9&o&Q%M%M&F+J%Q%X%W=W*,-J'D=4}6-0-k&$*e-k&k&k&|-g-4;M,p~!=i&}*}*j&$*A&#*#*}*W>5}6}7}8}9}`{`{L:0}X{`{`{c[/{_{a}b}c}d}e}f}g}h})* *{&n&+=4-r=G'w*w)0*0*A&5*w*f*D*O&b=o*Q*(-]&}&W=1*Z%W%0&Q%S%H%~&K%F+F+F+F+F+F+M&I%p&R%/*P%P%P%P%q&i}Q%i*t&W%c=Y%b,j}-*-!o~z)k}W*w=x&H&:=J&b,;/>>P;~&H%H%M%S%Q%P%^;!;f&$>@>+;l}V&^-A&}-w*D* ,m}U*q*I*T=n}x*}-[*6-$~$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*$*e-e-k&k&k&B&[*[*0-B&k&k&e-b~R(4,S,=i&5-j&%*%/p}c~q}r}s}t}u}v}w}@{x}y}z}A}B}b_C}D}E}F}G}H}I}7'a*!-k&$*$*$*$*B&}--=a*t-B&$*$*[*x*{-J}4*@*'=:&3&y&h*=*K}L}M}N}O}P}@}'/Q}R}S}T}U}{'$*%*f*m&F-2*&=N%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&M%o&=,]&w>G_V}W>~-A&|-A&*-{-*-5*$*x*[-q*$-e;(&i=A&}*f*j=C>n'F-3>u=s=(-u==*'*[&W}g&X}Y}n:Z}`} | |J[.|+|A{@|#|$|%|&|*|%:=|z]n]n]n]^/-|;|>|,|'|)|!|D&4*{-R(~[~|-|y]{|]|^|o}/|0{r<6=Z~(|_|:|<|[|}|j^*[||B[._{)~!1|w~['Z!`)2|3|%*[-]]D*sC**=^=8*;;p*C&x*0-e-$*e-[*A&{-5&5&T=[-[*n,t-}*#*5&4*D*3-3&y&b*[&8&4=;=n*o&R%M%M&F+F+K%G%X*c*>-(-U&o-a*A&0-e-$*$*k&k&k&[*{-y!i=C&{-!-0*6&6&%*-=6*q*&*h-4|5|7}kQ%/*V%^>t&0&o&r&@=K&h;s*)*+=L;Z~h|.,P-W&^=;!i|0{q;j|B*-&;=p/U)$,V%0&*&W%r&n*.&*>;=y,k|l|j-3&l&A&|-y*f*4&,*h- -X=7-.-x*A&m|[*6-0-$*)[)[)[n|o|)[)[$*e-k&e-e-k&k&k&k&B&B&B&0-B&B&[*k&k&$*$*$*$*e-0-p|A&#*{-a*T=t-~-~-x*x*6&V:S,q|r|j/s|t|u|v|w|x|y|z|A|B|C|8_D|E|F|e{U=w*A&B&$~k&e-$*$*B&~-W>w**-6-k&[*#*i='=+/U=9-*=,&V=S&-&>-Y*G|H|I|J|B|H~K|L|M|N|O|P|Q|A&}*,*+*=*s*o&Y&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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+Y&X*&&k|R|S|T|y_U|V|%/i&l&4&$-o--;w*i&6&5&{-I*I*5*0*[*0**-C&-;_&7=j=O&O&O& /W|X|v{Y|Z|Z|`| 1.1,!+1@1V}L-Q&;!#,#1$1%1&1*1=1-1&}y]n]n]y];1>1,1z}'1)1$;Q&,*!1[:=I&W}^1S//1(1-[_1:1 !<1[1}}%};~._}1][x{#*w*|1`>8=)=V)@,11q~]>w=21h&z=i&0*k&$*$*$*$*$*$*e-6-x*5*5&i&q*&-]=l-5&~-[*0-e-$*k&A&-=<*I*T=6&.-A&x*5&i=]=3=U=r=u*h=s=_*[=w&n*W%V%p&J%M&F+F+F+F+K%H%X*(*$&e=.'k;5*B&$*$*$*k&0-B&[*t-T=#*6&t-%*x*i&P&q*U*O*3-7*C]3141a[51K:0}Y{{{6171a}81(~<~9101a1b1c1d1e1f1g1P%X*f& *(-*=`^i&!-[*j&A&!-0*x*A&[*t-w*P&f*_&Q=3&V&u*%=.*G*@&n&)&F&A* &/*N%S%S%U%q&i*X*a&W%f&Z%K&{&W=J&+=:=H&8-e=s-h1r(!]r>z!o-'=Y=R--;-;$-**.=Z*)*q~+;v!+;+&y)$&s;>*5>h|E-.=g{i1Q-{-0-k&A&#*j1==t-~-|-!-[*!-0*R/k1m)l1l!m1n1~[o1~[p1q1m)p|0*B&B&[*6-$*0-0*[*B&[*0*[*[*[*0-e-$*$*$*$*k&[*[*0*$*~-|-0*0*j&A&j&A&A&n}q-m:r1n^s1~(I[>]A*g!E; ).).).)}>>{t1V&&*A&[*[*0-k&$*$*$*k&5-#*-=[-0*0*i&R-9;q;J*Q*];5>E*s]>-9&>{u1i}o,,]l>(]v1w1x1y1z1A1B15*t-5&z&`*w={&t&Y&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+F+F+F+F+F+F+F+F+F+F+F+F+F+o,!&C1D1E1F1G1H1I1J1x_K17,j=<&T&>&W&/&g*/=4*T=i&x*0*[*k&$*k&[*!-*-*-a*5&5&M^4,L1M1N1O1P1<_Q1R1S1S1T1U1;[`_g-,*<=V1&&W1X1Y1Z1`1 2i(^/y]5/F{%[u,.2+2@2#221$2@1%2&2[}n]{|)}*2p|*-s>%>S;8=t>&!=2H-4;-2R(;2X~*<>2,2'2V()2!2~2{23/R(6&i=Q=W&Z*n&a;>>i}R%1:F*4=j-3&^-x*B&k&$*$*$*$*k&[*%**-t-#*!-}*%*{-[-A&%*|-}-[*k&[*6&=;]-T=~-0*x*-=6*4&(&m&7&2&;&G*H= *(*r&!&i*q&H%M&F+F+F+F+F+F+F+J+Y&!&]2>*D-^2i&[*$*$*$*k&6-n,}-x*[-0*!-*-5&P&4&7*U=b-z;T*b-/24|4}R_51 ]m<(2_2:2<2[2}2|212223242526272829202I%i*(*@&^&A;-;-=.^%-5*-===-=-=x*!-x*#*6&5*w*q*4*z=(&L=<&W&Q*=*|=4=W=Y*n*X%c=&=c=c*(*1*;=+&J&d*]&)==*6=.=W&z;9-P*O*'=4*`;]-W>T=#*#*#*[-.^y*U*.'<=E-~'}=v-8-B*&,};o*y&F;L=I=:&p~&-(,0*k&e-k&6-[*6-0-0-k&e-$*k1m)p:a2:_b2c2d2e2f2g^g^g2h2i2j2w*T=}*#*x*}-~-[-0*B&j&A&[*[*[*0-e-$*$*$*e-0-0*A&x*x*T={-5*~-~-%*[*j&$*|-0*t-T=l&b-k2)&^>U%J%J+F+F+F+&;0&J&B-@*x*0*!-[*0-e-$*$*e-k&[*0*%*A&A&w*E=B=E-w=_*4=2*@,m=m=l2{&m2t&Q%b/U%N%U%O%!&u)9=q;'=T=j&}-W>9~o*:=)&V%~&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+F+F+F+F+F+F+F+F+F+F+F+F+U*>p;*!H2I2J2[<*}!}-|K2+:%[,^$[L2M2N2L;O2g3,3'3)3!3~3{3]3^3/3(3_3:3<3[3S%o&t=)=H*O*/'5*w)==g-f*,*,*4*C&5&i&==0*j&#*}*6&-=P&,=|*7=f=<&,&V=.*E*2-)*>-E&m=@&#&E*S&'&g&.=u*7&l=C*I=7=`^}3s>W>1-z-j&n,!-[*k&K[0*[*k&|-I*Q-(&A;h&9-h&C*f=r>Z=o-R-k;i=/'5&y*6&!-k&$*$*$*$*$*$*$*$*e-$*)[|313M18^233343B[B[536353~^738393d,c;z&03k;l-l-s>X=7-q-}*}-!-}-6-e-$*$*$*e-$~0*A&*-g-,*_&z&a3R-f*`; -i&w*-=g-w*4*`*]>&=b3~&J+F+F+F+K%R%=&&,3=*-k&B&6-[*[*0-k&k&6-B&A&A&#*{-a*X;d-)=c3{&F*k~2'+&D>6=F-w=f>i-v!9,m28[o'h!Y*-& 'Q=a-~-[*j&w*(&](N&F&P%~&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+F+F+F+F+F+F+F+F+F+F+F+^,d3'~e3f3g3h3~)i3^/y]<}j3k3l33*%,F*U));v&X%w&@&(-e*r= >+'P&{-!-B&[*x*<*R-p*:&y2m3n353+:+:O{O{t_4(o]y]y]&}:h&7*q*-=*-W>@*`>b*E3F3G3H3I3J3K3{-y*q*J'T&I&;*v&S%K%F+F+^*P%&&L;L34;#*R/e-$*$*$*e-[*i&p~9-v=$;u*y=<&S-b-#~h&P*P~a-.-0*0*A&%*%*x*==l&O*/&e*x&X& *&&&= &Q%M%G%~&K%F+F+F+F+F+F+F+F+F+F+F+F+F+~&1;M3t>b=k;x*k&$*$*$*k&[*6-[*t-=;q*_&L=H*h=)=1&)*2*j~t>N3O3P3Q3R3S3T3U3V3W3X3Y3Z3`3 4.4+4@4#4$4%4C-v%&4/*Z%H=h=m&]=5*[*%*]-033-.'C*k-j=o-@*i=i&==y*6&k&j&======<*]=z&3-3&V&o*.=6=;&8-R&2&b*D-U&b=3&P*:&_&4&,*q*]]a*-=%*[*[*B&e-$*k&k&$*k&B&B&6-0*5*V-6*!=f*^-f*i=6*C&I*-=t-[-~-0*[*0*6-k&$*$*$*$*$*$*$*$*$*k&k&b~x_d2*4E{=|=4Y:{/3(@4n's-H*C>b=m&U=O&E=|*/,!=w*y*}*j&k&e-$*$*$*k&6-[*4}`;f!z;$;m>b*u*8*B=8~E>C*3&C*T*9=R*!*G%F+F+F+F+F+M;a;H& ===B&k&6-A&*-T=T=-=-=a*<*&*/,3=:&O;,4f>R*N;t&!*^>$!R;T*z&p*Q&/&<=i!}=Z*G&_)2-*;/>I=D=6&6-B&A& ;k-j-m=r&U%~&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+F+F+F+F+F+F+F+F+F+F+M& &'4)4!4~4{4G{z]5/5/n]]4^4/4(4#&1*!&p&J+M&H%Q%a&n*;=X&)=h=_4j=l&~-$*~-P&(&`*b;:4<4[4}4-4~!Y:!!O{O{o]y]9<&[|41424TS-4;{-K[T234;[4454647484N'9404o&1*a4b4c4d4e4l:l1b~e-e-k&k&|-5&4*`^f4]=5&x*x*5&U*s)Y~A&-=l-X;;,8-g4r&O%~&F+F+F+J%!*(*c-8*'=P=[*k&$*$*$*k&0*h4f!i4j42*+&i-H=4=-&|=5>m>r*k45*B&[*0*[*[*5*P&E=l=V=I&%&(*W%i*U%M%~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+q&n*_*8*z=*-B&$*$*$*e-k&B&!-T=k;3-r=>&9=X&;=a,X%m2Y*9>l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4f'L@K@4@~*A4C-B4C4*&=&Z*o*(&P&6&[**-f*D4E4>&e=J=J*`*{=O&_&@*&*a*5*5*}*A&[*6&y*i&6*,*z&v*g*h&/&/&h&D&(&p*z&,*f*!=P&i&==i&#*0*%*[-[*e-k&k&$*$*$*$*$*k&k&k&0-[*!-j&~-x*~-~-x*%*j&j&A&[*k&B&B&e-e-k&k&$*$*$*$*$*$*$*$*k&6-0*A&F4G4[_=|Y:]/j_!!1|H4[''^I4J44[K4L4M4N&:=w==*F-^&T&H*V&h&D&7*z=i=-=|-0-$*$*$*k&[*!-~-f*#~R&R;2*n&N4-/i-4=[;-&4'_*H=K& &I%K%F+F+F+F+K%Q%W=g{6*B&$*k&A&s>E=P*>!9;>!C*S-^=m>j-}=t*O4$! &U%I%G%U% {>*O&A&i&<*6*,*3=-,L=b=y&8*b=v*C&A&6-k&0-[-4*B>'&n&*&S%J+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+F+F+F+F+F+F+F+F+F+~&q&P4Q4R4S4O{t_i_n]y]9e,O>o,V%@>r/>5,5|<'5o(B&$*e-e-e-[*~-{-w*O=w**-6-[*}*]=O&9-9-W-]=w*#*A&A&N/'=)5 'j4=&+)M%F+F+F+F+~&P%&&k}{]z=#*0-e-$*$*$*$*[*]-!5V=[=%~~5i*t&0&v;@=O4H&8*3=5&A&0*[*B&0*y*|*h&^&_*t=r&X*Y&J%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+=>(;4=i4v*T=6-$*$*$*$*k&!-5*i=K=T*U;_*n&.&W%i*i}A!0&F&{5]5^5/5(5_5:5<5[5}5|515=#0@a@T@T@M@G=2=25V+3545F&}&F-9-U*a*5*5*/'3=q;{>I&+=55_*9=R&k=T***I=/=]=q*<*#*%*6&6&0*6&5&a*I*!=4&'=z=4&!=I*I*a*}*x*}*#*0*j&#*5*j&%*t-A&[*k&$*$*$*$*$*$*$*$*$*e-k&k&e-0-B&k&k&B&0-e-k&6-0-e-k&k&k&e-$*k&e-$*$*$*$*$*$*B&A&65w*75859505Z!;~a5>^b5|}c5d5e5f5g5h5i5j5>{F&)&{&s*2*4=G&>*(-[&F3<=+*K=-;T=j&k&e-e-0-0*t-<*O*k5l5m5%~ &i}}>O%V%X*a&o&W%t&O%I%J+F+F+F+F+K%G%%~_;P*5*e-k&%*!=h&V=c^8&)=8&l|1&J&+;b,n5U)i*Y>G%J+F+F+H%a&@&y&@*D=#*6&t-*-T==; -l&^-l&{-j&0-k&k&B&*-|*z;S];*0&H%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+F+F+F+F+F+F+F+F+F+M&p&a&o5p5q5r5s58<9l>J+K%M%i*U5V5c{=/W5g-A&0-k&k&k&B&B&[*A&t-6&|-[*!-{-q*3=K=%>4*-=A&~-*-i&f*K=B=@~b{{&A*Y&M&F+F+F+~&!*.&k}8*Y=6&k&$*$*$*$*$*[*a*O&Q*l2Z;N-J+M&~&M;N,@=[;2&P*&*#*j&0*A&}*f*g*T&S*t=&=Q%^*K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+N-X*0>R&9;g-[*$*$*$*$*k&A&I*E=C>[&d*;*f&i*M%M&M&J%q&0&s&X5Y5Z5`5 6.6+6@6#6$6x=%6A@5@+#+#|@o@o%$@&6*6=6h;>*u*j=P&x*%*y*]=a~8=4'n&F*F&.&=&m=G&x&g&1=7&** =3=,=6*w*}*j&x*}*x*j&}*a*5&5&a*}*0*x*#*j&B&x*}*x*6&5&I*V-]]u]5&t-!-e-$*$*$*$*$*$*$*$*$*e-e-$*e-k&e-e-k&k&e-k&k&0-k&k&k&k&k&$*k&k&$*$*$*$*$*[*-6l-D*W-O~;6>6,6'6)6!6~6{6]6^6/6(6_6A|:6+^E;N%P%V%v&W%c=c*&&;*-*>-$&_;4-H*r>!=t-0-$*$*k&A&w*'=b-U;J&s&P%H%J+F+F+K%J+~&G%J%G%~&J+F+F+F+F+F+M&O%M33<:>t-B&~-,=B=<6[60,s&[>F&X%&=Z;O%Y&I%J%~&J+F+F+F+F+^*O%F*I&b*C*'=6*#*%*[*[*[*[*j&j&[*e-B&B&B&[*(,^2B-A5K&P%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+F+F+F+F+F+F+F+F+M&Y&0&@=}6|6162636t2v:w:d24656667686S^/*H%F+F+F+F+F+F+F+F+F+F+F+F+J+q&s&1&u*E=y*$*y*z=r*96>406a6b6c6d6J{e6f6g6h6i6j6k6R%n*(-g*P&*-x*6&A&k&$*$*[*`;F;l61*j~&J+F+F+J+H%0&#>V)3*<&E=<*6&0*0-k&k&e-$*0-[*!-6-6-!-t-]-!=k;R>V-%*$*}-i&i=+' >F>w>8&2*(*v&N%Y&^*~&p&j<2^k2m6n6#*6-k&$*$*$*$*[*i& ,.=)*(;H%F+F+F+F+S%W%-*u=V&z&y*0*[*#*i=(&H*S&+&r&Q%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+~&O%)&&!S-4*~-k&$*$*$*B&5*k;a~^&%!)&a&R%G%J+F+F+J+J%U%P%v&o6p6q6r6s6t6u6T+E@s%+@&@G=z*9*A@N@x=L%v6w6x6[=[&l=z&5&j&j&w*E=T*s=n&r&!*O%V%a&s&K&=&2*-&H&F-k=T*3&3-z&&*I*a*5&x*j&5*}*A&%*}*5*j&x*==5*6&i&6*i=f*U*y6p*O*O*z=l&{-0*k&e-$*$*$*$*e-e-e-e-k&e-$*e-k&k&$*e-k&k&k&B&6-k&k&[*n,!-}-j&0-$*$*e-!-a*v'z6v=^&=*S]A6B63_C6D6E64:z|}(:6e,],i,T)J+J+~&~&~&Y&Y&N%O%V%V%a&`%Z%j}4=(-{]7^]-!-k&$*B&*-]=A;e*_*F6v&U%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%H%&=G&K;6*%*-=R-;!s;G6i}P;Y>U%U%S%H%~&J+F+F+F+F+F+F+F+F+F+F+G%/*s&%&W;')C*'=I*%*B&$*$*k&k&B&[*0*0*j&x*C&f!m>+=F&P%~&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+F+F+F+F+F+F+F+F+^*O%f&+&(-96Y/J{m![-e*v*-=j&B&6-$*e-k&~-,*;!j4&&P%G%F+F+F+F+F+J+H%i*F&M6G;q;c;P&t-6-e-k&k&k&k&k&k&k&k&0-j&#*=;T=*-N66&A&}*s>]=+'$- =<&J=4>m=;*r&*&X*i*t&Z%N4r;H-R-*-6-k&$*$*$*$*6-==_&,-]>X%O6F+F+F+F+H%X*@=2-.=U=f*}*}*P&v*U&'*m=n*i*J%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+~&Y>r&]>1=:&w*j&k&e-k&0*i&z&o;9=s*(;U%~&K%F+F+F+F+J+~&H%S%E;P6Q6R6S6T6##P++-U6_=n%%6J@3@2=V6s%W6X6Y6Z6t*k=I=4*5&#*y*]=L=J=N&(*i*J%~&J%S%q& &a&c=F*w&J&_*S&h=W&<&Q&7*z&,*P&w*I*i&%*x*i&w*a*C&&*4*,*z&7* =r*+*;,H*d-8*l= =R-/'*-A&0*[*k&0-[*[*0-k&6-B&k&0-[*0-e-B&[*B&[*5-A&j&5-5*i&N/w*}*[*$*$*k&-=Z=,&9=`6y)t= 7.7+7;<@7T5#7h,i,G%_>J+K%F+F+F+F+F+F+F+F+F+F+K%G%I%S%N%O%j>*-*%~O%J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&i*t=e=v*X=*-U_`*G&c*M%J+J+~&~&~&~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+^*S%V%0,2*#,D-{(a-A&k&k&k&k&[*}-A&0*6-~-I:D&Q*m=f&q&J+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+F+F+F+F+F+F+F+M&M%X*K&#&e*P*$7p(%7&7n(*7{(T*'&=7n*V%J%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+N%c=$&8=P*!===-=0*==}*a*<*w*#*}*q*h&w=&&R%J+F+K%p&&=+=<=z&T=!-0*B&B&0*i&E=W&Q~n*!*J%F+F+F+F+F+F+J+Y&X*F*o~G;U&7=s>6&!-[*0-k&k&e-$*$*$*e-6-|-[-}-[*x*X=C&^-03@*q*6*f*O*h&u*];|=[=w&9&K&9&:;G&{>-7S=x*0-$*$*$*$*$*k&6&@*y&|=F&q&M&F+F+F+~&R%`%-*W*,&U=_&z&O&T*B*X&.&!&Y&J+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+K%J%);+,S&C>_&w*~-0*[*%*]- ,s-_*2'+^M;F+F+F+F+F+F+F+F+J+~&~&~&G%1@K+K+K+O+)@X@e%h%--j%o=;@K*l*;7>7,7;=w=`*z&a*==a*f*3-^=x&n&A*U%M&F+F+F+M&G%p&R%V%a&&=.&-*4=I&.*%=W&U&m&O&O*z&,*q*q*,*D*p*(&P*r*b=y&<=>&h=8-S&>*'7*;.*n'S- ='=&*C&=;}*#*{-#*6&[-t-6&x*x**-t-~-6&#**-{-N/C&6*i=.;)7:&$-C&0*$*e-0*R-:*55Y*!7A*X*%)E;Y&^,T)~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&H%A!f{j~j-b=f4&*l&U_O&d-S&+&X%!*H%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%S%F&E*b=i=5*s>G_w=n*/!F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+U%o&{&E*s- >l&t-5-[*0-[*%-}-[*$*j&!=C*B*%&A*p&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+F+F+F+F+F+F+F+F+~&p&a&;=w=`*'=i&6&x*5*C&p*B=3*X&F*0&Y&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+U%`%+&;&<&:&]=5&w*#*#*j&6&A&I*D&];w&i*~&F+F+F+J+N%c*1&u*7*i==;x*0*A&g- =J=4=Z%Q%~&F+F+F+F+F+F+F+K%Y& &$>J;=*T*Z=q*1-j&k&k&k&e-$*$*$*$*k&6-0*}-[*5*y!G'7*7*R-y*j&#*l&z=O&r=k=B*H&>*|=*!9=g&^=J'q*~-k&$*$*$*$*$*e-|-!=+*H&F*/*G%F+F+F+K%J%i*c*E&8&^&v=^=.=(-H=)&*&U%M&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+F+~&S%c=g)B*x;/=C&5*j&A&a-M=J=$&f&E;~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+]*v@P++-x- @u%u% @Q@N*~7{7]7-*s=<&,*x*%*C&E=r=R&X&@=V%^*F+F+F+F+F+F+F+F+G%Y&O% &W%X%)&%&@&G*s=R&h*v=U&**Q&f={=V&H*J*8=6=8-H&|=2-)*%&w&m~@>=,0>Z>c^^7g{b=k-Z=^2_&D*z=R-Q>,*]=]=U_,*]=]=U_@*Q-P~ , >U=E>B= ^K'+*-;!-$*k&i&#~A5N;6^/7M;J+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+F+F+F+F+J%$,(7f;];D-b-{=j;/>v)y,[>_7G%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+G%t&d=b*3=a*==z&.=n&V%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&U%j,M3E*s-P*Q>w*x*B&[*}-j&[*[*#*@*B=x&=&v&M%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+F+F+F+F+F+F+F+F+~&N%o& *(-/&,=%*j&==l&3=+*h=1&Y*!&U%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%Y&t&9&-&[&<=**P*E=,*w*l&]=I=V=W=v&J%F+F+F+F+F+J+q&m2Y-J=#;3=6*t-*--;_,;&>-f&R%~&F+F+F+F+F+F+F+F+K%I%X*Y%J&}=0~3-!=#*[*0-0-k&k&k&$*e-k&$~!-x*P=l&O*C*S;C*_&i&0*x*{-i&l&_&U=l=8*v=v=L'z,r=:7N=/'~-6-k&$*$*$*$*$*!-`;;;#,@>!*J%F+F+F+F+~&S%V%s&t=X&:=I&+=s*(*a&q&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+F+F+K%^*;{(*@&g&/&^2a-[-t--;_,z2%&*&U%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+]*v@=@A%N*T+T+N*A%=@<7c>!&{&W*8*/=w*5&4&3&e*:=h;*&U%M&F+F+F+F+F+F+F+F+F+F+K%M&S%/*0&A*Y%)&-*m=-&>*s=];6=6=B*u=8&]&d*[=s*=&.&F&r&A*t&X*m[X*[7c*;*J&#&4>[&,4&>u*^=y=y&U&H-l=H-i|S-r=}7i|B=y=v=k=J=R&|7v)_*:=&, ,~-k&x*E=];&&Y&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+F+F+F+F+F+F+F+F+M&U%!&(*>-]&x&(-8&N&-*s&1;M%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%U%(*(-U=I*y*,*r=]&f&I%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+J%R%z517E*/>h&P~u]5*6&%*[*[*x*6*j=b*G&&&!*J%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+F+F+F+F+F+F+F+F+~&U%!&{&H&T*z&5&-=q*O*+*^&G&=&W%q&K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%G%q&W%.&E&#&w=6=W&U&T*k=9=s**&Y&K%F+F+F+F+F+F+G%27F&M637`*j=U*|*47T&G*h;!&S%~&F+F+F+F+F+F+F+F+F+J+I%0&F&i-T-^= >!=*-j&6-k&k&B&B&0-B&$~.^n/-;57B=h*2&<=A;]=d;-=x*[*6&C&,*z&v*v*p*M,%>z&@*y!{-j&6-k&$*$*$*$*$*|-^-V&Z*a,P%J%F+F+F+F+K%^*p&i*o&s&F*.&Y%A*0&N%^*K%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+F+F+F+K%I%t&)&67g&V&7*,*R-g*J*c-)&0&S%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+]*O+M+S+n=n=S+M+O+J%S% &(*@&h=/&3-:&{=k=8&s*r&!*J%F+F+F+F+F+F+F+F+F+F+F+F+F+K%^*J%p&Q% &W%s&(*R*t=+&d=m=+&t={&K&F&c=W%t&V%P%R%S%I%G%^*G%N-U%;{,;F&v!Y;+>f;-&)~L;l58&77H&4>A{&!4>4>4>>*I&3^j~J&:;t=)&$>8797<=4;a-E=h*W=!*K%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+F+F+F+F+F+F+F+F+F+M&N%0&r&K&=&w&9&n*W%/*I%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&i*+&b*D*y*w*O&3*{&Q%J+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+M&M%i*X% *|=Q*U&3-,*P&-=A&%*a*z&<&=*+&c=N%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+F+F+F+F+F+F+F+F+F+~&S% &&&N&Q*b-v*E=g**=h=]&t=c=R%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%M&J%N%i**&X%)& *[=i-w&s&V%I%K%F+F+F+F+F+F+F+J+H%H;#>J;t>1=`*T*>&w=>-c*P%H%J+F+F+F+F+F+F+F+F+F+F+K%Y&V%c*@,s=^=-,&*{-[*$*k&[*0*j&j&~-T=]=e;7&p[S*07=*,-f=D*l&5*[*x*==-=w*6*<*5&I*<*5&i&1-%*B&0-0-$*$*$*e-[*T=E=u*1&u-F&X*M%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&^*H%Y&O%!*t&o&A*&=&=A*o&t&!*P%N%p&M%J%J+J+K%K%F+F+F+F+J+~&/7c> &^;*&W%c*c*#>.&)&F*K&i<2^K&)&9&Y*(7(7@=X%`%o& &X*/*V%5^)*;&2&}=+&a&J%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+F+F+F+F+F+F+F+F+F+F+F+M&I%O%X*!&a&t&!*U%J%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^*v&$&B=l&5&'=v=X&W%J%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+F+F+M&M%i*r&w&1&;&<={=:&@*i=q*_&9-V=d*&& &Y&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+F+F+F+F+F+F+F+F+F+K%J%Q%`%w&]&R&J*W&8=}=d*h;&=Q%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+F+K%J+~&H%N%Q%X*V%Q%Y&G%K%F+F+F+F+F+F+F+F+F+~&U%0&F&%&G&W*W*G&%&F&0&U%~&F+F+F+F+F+F+F+F+F+F+F+F+K%M%i*F&>-#,^=O&!=t-0*!-0*j&%*#*d;k;57T*F-#&X>17H=*;h*9-p*i=i&-=5*0*x*==x*[*%*t-A&|-k!%*[*!-0*6-k&k&j&-=,*b-z2q~j]S%M&F+F+F+F+F+F+K%J+^*I%Y&Y&I%^*J+K%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+F+F+F+F+F+F+F+~&N%^;T;2*A54>W*1&W=F&0&U%~&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+F+F+F+F+~&S%V%f&;*[=2--&H=;=Z%0&S%~&F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%~&G%I%p&q&U%U%q&p&I%G%~&K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%J+^*I%p&N%R%R%Q%/*!*P%!*P%!*!*i*!*!*Q%R%q&q&p&Y&H%~&J+Y&v&Y%F*X%X*J%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+M&H%M%Y&Y&J%K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+^* &[=^=,*4***x&F*q&K%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+F+F+F+M&I%!*A*Y*m=E*R&W&l=3&m&7&g&#&h;W%q&J+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+F+F+F+F+F+F+F+F+F+F+~&S%V%f&h;}&G&:=N&E&.&A*/*H%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+F+F+F+F+F+F+K%J+J+J+K%F+F+F+F+F+F+F+F+F+F+F+F+J+J%q&0&r&.&h;h;.&r&0&q&J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+J+H%t&F&>-9=<=P*-;W>t-0*6-A&1-`;D*3&s-H&y,a7g;b7s*E*%=U& ='=!=-=j&6&==6&[*%*#*A&%*-=X=-=T=T={-*-1-C&D*h&V=@&m2/*J%F+F+F+F+F+F+F+F+F+K%K%J+J+K%K%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+F+F+F+F+F+F+F+F+F+J+J%q&0&r&.&h;h;.&r&0&q&J%J+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+F+F+F+F+K%^*p&i*o&s&(*(*s&o&i*p&^*K%F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+~&~&~&~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%K%J+J+M&^*~&~&J%G%~&~&H%^*^*G%H%~&~&~&J+F+F+F+F+F+K%J%M%S%I%^*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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+~&O%K&W*<=v=}=t= &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+F+F+F+F+F+F+H%q&t&s&h;d=|=u=B*;&)=4=;*`%P%~&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+F+F+F+F+F+F+F+F+F+F+F+K%^*p&i*o&s&&&)&@=c=t&R%^*K%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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%U%P%0&a&a&0&P%U%J%J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+J%V%Z%E&&!b*f='=I*%*[*%*}*]-R-g*v='&4=1*a;A*c*t]1&'&J*b=3-@*P&6*i=C&a*I*C&<*P&S=Y=:>_&o-_&_&v*k-0~B*d*@>V%M%M&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+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+J+J%U%P%0&a&a&0&P%U%J%J+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+F+F+F+F+F+F+K%^*Y&q&P%V%V%P%q&Y&^*K%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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+K%I% &K&i-2*1*!&Y&K%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+F+F+F+F+F+F+F+~&M%/*a&s&)&;=+&s*h;n*o&q&J%J+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+F+F+F+F+F+F+F+F+F+F+F+F+K%^*Y&q&P%V%V%P%q&Y&^*K%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+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+J+~&H%S%U%U%S%H%~&J+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+S%V%F&%&Z*>&h&:>C&{-t-A&t- -o-{=b*w=2*2'&=A*c71*[=E*[&<=b=D&O&Q=:&7=7=7*3- =3&=/z;D-j|<=,&e*[&_;>-']t&p&M&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+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+F+J+~&H%S%U%U%S%H%~&J+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+F+F+F+F+F+F+F+F+K%J+^*I%Y&Y&I%^*J+K%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+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+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+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+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+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+J+I%O%X*X*O%I%J+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+F+F+F+F+F+F+F+F+F+F+G%p&P%0&*&*&a&0&P%U%J%J+F+F+F+F+F+F+F+F+F+F+F+"}; crossfire-client-1.70.0/pixmaps/mag.xpm0000644000014500000120000000102611731277006014734 00000000000000/* XPM */ static const char *const mag_xpm[] = { "20 16 6 1", " c None", ". c #1E90FF", "+ c #FFFFFF", "@ c #7F7F7F", "# c #404040", "$ c #000000", " ", " ", " . . ", " . . ", " . . . . . . ", " . . . . . . +@ . ", " . +@ .", ". +++++++++++#@$+$ ", " +++@+@+@+@+@+$@+++.", ". ############@$+$ ", " . +@ .", " . . . . . . +@ . ", " . . . . . . ", " . . ", " . . ", " "}; crossfire-client-1.70.0/pixmaps/48x48.png0000644000014500000120000000262711731277006014757 00000000000000‰PNG  IHDR00Ø`nÐ^IDATXÃí™]lUÇÿ÷Îì™ÝínKSÚ€RmLÄ!¢5ÐôÁ`| ŸJ‚¼ˆ !¡$hB}àC>R,FIüJÔH¢P*1 -šJù¨vÛýè~Í׽ׇmIùhéÒñAÓ󲓙sÏýÝsæœ{æ.¤òñž=  LÑ…bFñ"‰LÑ”/@üûS'‹†vnÛ6E[êxnݼùAkkY4 `hpðý}ûîRøp×®T"ah«)zø—\úúúZ·nåRòù—/¥¡aìžîî{÷†#ƒñøîýûï3ñx±ì<{vbµ*M Ó¼UuoÿU»=dãºuw 9ÕÞþÀ©Ç Y€1å@ù8 3CŽ €á&„•½W!ßu§fÖ, ð!#°€ŠvÃO=ùh9!@ ’¯þþìks¥b`ø›çß¼q£«« €¢ªïµ´BÆÚ¬…ÞX»Ös]Ã4?9t¨T 9ò ©±x—©3Zµð‰kŽ 0A)¡‚¼ÞœSJ……BamSÓ›ë×3ÆzzzþìíeŒ%“Ék½½Š¢PJKöP1Ê„”ø àªB©§W‚;1ÉÉAÄc<Î¥Ü󲙌mÛŒ±ÔÐP&Ö4ÍÊç…”Ò±¯Ú¿‘ö~Ê4Ð4Ð4Ð4Ð4Ð4ÐH}ÐÓ àRÅ€¡DBD 0JMÄeÁ‘¦,ေíP&`Œ1fƒºa0Æl× hšª(Åî¯4 > ñ> èx!OãW¢pMxY­w‚K‚âêéb'öQë¶B>'„ˆ]ᩊ2Hg²iJ©e¹©TFU6Úþ–Ä9¥À ‹º=×uï™…3¤„ÒŠh,lœsƒé¦Q&„ˆDʺ¤{¢a µS§F‘nÁ¦…nŽ” E©ÖÒýCi€êð‚z"ay@¸\àܤtÞü%¶e¹®[WW'¥$”>>wnUU•ëºápxöìÙœóêššö#GŽ}ý[Ó¢–¨D"…?¾úôýzÿ™k3bÙpèj⺠TŸ•”Ïå2B0]—RZ–e[V±ÙËçr¹lÖu] §Óœó iòù‘eR"W)%dp,ð(^ 4Ȭ¡’CöR}ý'N¬^³@ý²eTQ„SÌ ÓÀ©¾¾óƒi²i_°,  ”Ÿ²Z"Pq]·d â"B|¯7ãù{ºRÿ¯€ÒÉ$!Ä׈P#•r2ÇqJÚÐÜ\<‘è>w.ŸË:EwêÉı͛çmÞ{QBȤ”ÒŸD ä³ÎTvûÑØe2LÓt]œ?,J(”\6çPëîÝÇÛÚTJË+*jkkK/†ŠsN•·º±É‡,ÛÐÜüSgç::4]/¹"§ .]~é ~ËÆš® ÎuÂÅ€BƯgIqøÏ/ú\©ç/X°}çÎU+W666ܺ5Ak,Ðþ3.ÇpLp^æÃÖ148X¼…ÃeÑh43Mó‹!(!B–U“ɤ__÷‘E‹¿³iS4;~ð`ûÑ£¶eÕ74̬©)|Õ•¿½û$¬,yºÆhÚ¾åF28úÇä¶—’ü9VN¶µ%âq¦iÙtúð—®\a@nΊ/w¼žÉlÇ~néËóæ/*=!§,çΜ¢~ô¡ýplÛÇöãg¦9D"åœIEND®B`‚crossfire-client-1.70.0/pixmaps/Makefile.am0000644000014500000120000000275111731277006015504 00000000000000# # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com noinst_HEADERS = \ 16x16.png \ 32x32.png \ 48x48.png \ all.xpm \ applied.xbm \ applied.xpm \ bg.xpm \ clear.xbm \ close.xbm \ close.xpm \ coin.xpm \ crossfiretitle.xpm \ cursed.xbm \ cursed.xpm \ damned.xbm \ damned.xpm \ dot.xpm \ hand.xpm \ hand2.xpm \ lock.xpm \ locked.xbm \ locked.xpm \ mag.xpm \ magic.xbm \ magic.xpm \ nonmag.xpm \ question.111 \ question.sdl \ question.xpm \ sign_east.xpm \ sign_flat.xpm \ sign_west.xpm \ skull.xpm \ stipple.111 \ stipple.112 \ test.xpm \ unlock.xpm \ unpaid.xbm \ unpaid.xpm \ unidentified.xpm proto: echo "Nothing to do for proto" crossfire-client-1.70.0/pixmaps/magic.xbm0000644000014500000120000000030511731277006015231 00000000000000#define magic_width 24 #define magic_height 6 static const char magic_bits[] = { 0x9b, 0x38, 0x39, 0x5b, 0x05, 0x45, 0xd5, 0x75, 0x05, 0x55, 0x45, 0x45, 0x51, 0x39, 0x39, 0x00, 0x00, 0x00 }; crossfire-client-1.70.0/pixmaps/unpaid.xpm0000644000014500000120000000040411731277006015447 00000000000000/* XPM */ static const char *const unpaid_xpm[] = { "24 6 2 1", " c None", ". c #000000", ". . . . ... . . .. ", ". . .. . . . . . . . .", ". . .. . ... ... . . .", ". . . .. . . . . . .", " .. . . . . . . .. ", " "}; crossfire-client-1.70.0/pixmaps/question.xpm0000644000014500000120000000141611731277006016042 00000000000000/* XPM */ static const char *const question_xpm[] = { "24 24 3 1", " c None", ". c #FFFFFF", "+ c #000000", "........................", "........................", "........+++++...........", "......+++++++++.........", ".....+++++++++++........", "....+++.......+++.......", "...+++.........+++......", "...+++.........+++......", "...+++.........+++......", "...+++.........+++......", "...+++.........+++......", "....+++.......+++.......", "..............+++.......", "............+++.........", "...........++++.........", ".........+++++..........", ".........+++............", ".........+++............", "........................", "........................", "........................", ".........+++............", ".........+++............", ".........+++............"}; crossfire-client-1.70.0/pixmaps/skull.xpm0000644000014500000120000000103011731277006015315 00000000000000/* XPM */ static const char *const skull_xpm[] = { "20 16 6 1", " c None", ". c #FFFFFF", "+ c #BFBFBF", "@ c #7F7F7F", "# c #000000", "$ c #404040", " ", " .+.++. ", " ....++.+ ", " ..++.+.+.. ", " .+..++..@+ ", " ...##@+##.+@ ", " .+###+@###+@ ", " .+.#+++@#@@@ ", " ....##.@++ ", " +..##.+@ ", " +..##@++ ", " @..++$ ", " .####+ ", " +++@ ", " +@@@ ", " "}; crossfire-client-1.70.0/pixmaps/applied.xpm0000644000014500000120000000040511731277006015606 00000000000000/* XPM */ static const char *const applied_xpm[] = { "24 6 2 1", " c None", ". c #000000", "... ... . . ... ... ", ". . . . . . . . ", ".. . . . . . ... ", ". . . . . . . ", "... ... .. ... . ", " . "}; crossfire-client-1.70.0/pixmaps/stipple.1110000644000014500000120000000103311731277006015344 00000000000000#define stipple_width 24 #define stipple_height 24 static const char stipple_bits[] = { 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa}; crossfire-client-1.70.0/pixmaps/locked.xbm0000644000014500000120000000031011731277006015406 00000000000000#define locked_width 24 #define locked_height 6 static const char locked_bits[] = { 0xc7, 0x71, 0x26, 0x22, 0x8a, 0x14, 0x22, 0x0a, 0x0c, 0x2a, 0x8a, 0x14, 0xcf, 0x71, 0x36, 0x00, 0x00, 0x00 }; crossfire-client-1.70.0/pixmaps/question.1110000644000014500000120000000157511731277006015546 00000000000000#define question_width 32 #define question_height 32 static const char question_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x70, 0xc0, 0x01, 0x00, 0x38, 0x80, 0x03, 0x00, 0x38, 0x80, 0x03, 0x00, 0x38, 0x80, 0x03, 0x00, 0x38, 0x80, 0x03, 0x00, 0x38, 0x80, 0x03, 0x00, 0x70, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; crossfire-client-1.70.0/pixmaps/sign_east.xpm0000644000014500000120000224272611731277006016164 00000000000000/* XPM */ static const char *const sign_east_xpm[] = { "750 400 377 2", " c None", ". c #FFFFFF", "+ c #F7F7F7", "@ c #E0E0E0", "# c #CCCCCC", "$ c #B7B7B7", "% c #A8A8A8", "& c #929292", "* c #797979", "= c #5E5E5E", "- c #4F4F4F", "; c #494949", "> c #484848", ", c #4C4C4C", "' c #4A4A4A", ") c #454545", "! c #4B4B4B", "~ c #424242", "{ c #595959", "] c #818181", "^ c #B1B1B1", "/ c #EAEAEA", "( c #FBFBFB", "_ c #EBEBEB", ": c #D8D8D8", "< c #C6C6C6", "[ c #B5B5B5", "} c #A4A4A4", "| c #848484", "1 c #6C6C6C", "2 c #545454", "3 c #4D4D4D", "4 c #3D3D3D", "5 c #2C2C2C", "6 c #1C1C1C", "7 c #0F0F0F", "8 c #050505", "9 c #010101", "0 c #020202", "a c #000000", "b c #030303", "c c #0D0D0D", "d c #333333", "e c #5C5C5C", "f c #949494", "g c #CDCDCD", "h c #F4F4F4", "i c #C4C4C4", "j c #979797", "k c #757575", "l c #464646", "m c #373737", "n c #272727", "o c #161616", "p c #0C0C0C", "q c #0E0E0E", "r c #434343", "s c #9F9F9F", "t c #E9E9E9", "u c #D6D6D6", "v c #B4B4B4", "w c #8A8A8A", "x c #535353", "y c #474747", "z c #3E3E3E", "A c #2E2E2E", "B c #191919", "C c #040404", "D c #121212", "E c #7D7D7D", "F c #EDEDED", "G c #DEDEDE", "H c #AAAAAA", "I c #828282", "J c #BCBCBC", "K c #EEEEEE", "L c #FEFEFE", "M c #DFDFDF", "N c #C1C1C1", "O c #8F8F8F", "P c #6E6E6E", "Q c #353535", "R c #232323", "S c #151515", "T c #141414", "U c #101010", "V c #0B0B0B", "W c #0A0A0A", "X c #707070", "Y c #9D9D9D", "Z c #585858", "` c #343434", " . c #1D1D1D", ".. c #070707", "+. c #D7D7D7", "@. c #878787", "#. c #131313", "$. c #6B6B6B", "%. c #F8F8F8", "&. c #E4E4E4", "*. c #A6A6A6", "=. c #7F7F7F", "-. c #F6F6F6", ";. c #C3C3C3", ">. c #4E4E4E", ",. c #080808", "'. c #1E1E1E", "). c #575757", "!. c #313131", "~. c #212121", "{. c #060606", "]. c #A7A7A7", "^. c #D5D5D5", "/. c #3F3F3F", "(. c #525252", "_. c #636363", ":. c #D0D0D0", "<. c #414141", "[. c #626262", "}. c #2A2A2A", "|. c #252525", "1. c #7E7E7E", "2. c #646464", "3. c #CBCBCB", "4. c #8E8E8E", "5. c #505050", "6. c #3C3C3C", "7. c #222222", "8. c #171717", "9. c #323232", "0. c #282828", "a. c #2D2D2D", "b. c #111111", "c. c #CACACA", "d. c #5B5B5B", "e. c #B0B0B0", "f. c #292929", "g. c #090909", "h. c #363636", "i. c #6D6D6D", "j. c #C0C0C0", "k. c #9A9A9A", "l. c #555555", "m. c #717171", "n. c #A3A3A3", "o. c #606060", "p. c #5A5A5A", "q. c #2B2B2B", "r. c #BFBFBF", "s. c #202020", "t. c #404040", "u. c #C7C7C7", "v. c #989898", "w. c #8D8D8D", "x. c #7A7A7A", "y. c #393939", "z. c #444444", "A. c #E2E2E2", "B. c #D2D2D2", "C. c #656565", "D. c #747474", "E. c #D4D4D4", "F. c #6A6A6A", "G. c #DCDCDC", "H. c #1A1A1A", "I. c #676767", "J. c #303030", "K. c #F2F2F2", "L. c #888888", "M. c #A5A5A5", "N. c #FDFDFD", "O. c #A9A9A9", "P. c #A2A2A2", "Q. c #262626", "R. c #3B3B3B", "S. c #E3E3E3", "T. c #BBBBBB", "U. c #C9C9C9", "V. c #9C9C9C", "W. c #F3F3F3", "X. c #838383", "Y. c #BEBEBE", "Z. c #5D5D5D", "`. c #858585", " + c #CFCFCF", ".+ c #898989", "++ c #E6E6E6", "@+ c #727272", "#+ c #F0F0F0", "$+ c #5F5F5F", "%+ c #919191", "&+ c #ECECEC", "*+ c #767676", "=+ c #383838", "-+ c #A1A1A1", ";+ c #D9D9D9", ">+ c #6F6F6F", ",+ c #808080", "'+ c #737373", ")+ c #969696", "!+ c #F1F1F1", "~+ c #ADADAD", "{+ c #AFAFAF", "]+ c #696969", "^+ c #1B1B1B", "/+ c #868686", "(+ c #8B8B8B", "_+ c #1F1F1F", ":+ c #7C7C7C", "<+ c #2F2F2F", "[+ c #CECECE", "}+ c #F5F5F5", "|+ c #A0A0A0", "1+ c #BDBDBD", "2+ c #E7E7E7", "3+ c #939393", "4+ c #DADADA", "5+ c #B9B9B9", "6+ c #DDDDDD", "7+ c #9B9B9B", "8+ c #3A3A3A", "9+ c #B8B8B8", "0+ c #E1E1E1", "a+ c #181818", "b+ c #D3D3D3", "c+ c #777777", "d+ c #C2C2C2", "e+ c #787878", "f+ c #515151", "g+ c #666666", "h+ c #B6B6B6", "i+ c #242424", "j+ c #090500", "k+ c #281600", "l+ c #4E2A00", "m+ c #613400", "n+ c #0B0600", "o+ c #321B00", "p+ c #603400", "q+ c #794100", "r+ c #120900", "s+ c #472600", "t+ c #733E00", "u+ c #7D4400", "v+ c #804500", "w+ c #7F4500", "x+ c #7A4200", "y+ c #512C00", "z+ c #160C00", "A+ c #593000", "B+ c #402300", "C+ c #562E00", "D+ c #532D00", "E+ c #5B3100", "F+ c #371D00", "G+ c #3D2100", "H+ c #301A00", "I+ c #190E00", "J+ c #060300", "K+ c #221200", "L+ c #683800", "M+ c #331B00", "N+ c #7C4300", "O+ c #764000", "P+ c #703D00", "Q+ c #351C00", "R+ c #291600", "S+ c #3C2000", "T+ c #492800", "U+ c #4B2900", "V+ c #693900", "W+ c #040200", "X+ c #5D3200", "Y+ c #743F00", "Z+ c #7D4300", "`+ c #784100", " @ c #100800", ".@ c #361D00", "+@ c #1E1000", "@@ c #7E4400", "#@ c #623500", "$@ c #EFEFEF", "%@ c #ABABAB", "&@ c #341C00", "*@ c #774000", "=@ c #271500", "-@ c #452500", ";@ c #674824", ">@ c #A47E52", ",@ c #9C6E38", "'@ c #A77F4F", ")@ c #814601", "!@ c #874F0E", "~@ c #FAF7F4", "{@ c #A47A48", "]@ c #E6DBCD", "^@ c #C9AF92", "/@ c #A57C4B", "(@ c #8A5415", "_@ c #A67C4C", ":@ c #814602", "<@ c #CDB59A", "[@ c #A57B4A", "}@ c #B08B60", "|@ c #A27745", "1@ c #915E22", "2@ c #FDFCFB", "3@ c #824905", "4@ c #EFE7DE", "5@ c #A47A49", "6@ c #CFB99F", "7@ c #AE885C", "8@ c #FBF9F7", "9@ c #915F23", "0@ c #F0E8E0", "a@ c #834906", "b@ c #E2D4C4", "c@ c #CBB397", "d@ c #BA9A75", "e@ c #A87F50", "f@ c #A37846", "g@ c #AC8659", "h@ c #97672F", "i@ c #F7F3EE", "j@ c #854C0A", "k@ c #CEB89D", "l@ c #DECEBC", "m@ c #844B08", "n@ c #8C5718", "o@ c #C7AD8E", "p@ c #814703", "q@ c #96662D", "r@ c #B49269", "s@ c #A07441", "t@ c #A98152", "u@ c #854D0B", "v@ c #97672E", "w@ c #B38F66", "x@ c #C7AD8F", "y@ c #E0D2C1", "z@ c #EFE8DF", "A@ c #8B5516", "B@ c #946329", "C@ c #FFFEFE", "D@ c #9E713D", "E@ c #A27744", "F@ c #9A6C35", "G@ c #8D581A", "H@ c #B08C61", "I@ c #F5F0EB", "J@ c #996A33", "K@ c #A37947", "L@ c #E8DDD0", "M@ c #885110", "N@ c #D3BEA6", "O@ c #BFA27F", "P@ c #A67D4D", "Q@ c #B28E64", "R@ c #C5AA8A", "S@ c #A77E4E", "T@ c #895313", "U@ c #936126", "V@ c #9E713C", "W@ c #A98253", "X@ c #B6946C", "Y@ c #824804", "Z@ c #CCB498", "`@ c #8E591C", " # c #946228", ".# c #F4EFE9", "+# c #8F5C1F", "@# c #834A07", "## c #C2A584", "$# c #C3A786", "%# c #87500F", "&# c #986830", "*# c #885111", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ # $ % & * = - ; > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > > ~ ; { ] ^ / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ : < [ } | 1 2 3 ; ; 4 5 6 7 8 9 0 a 0 a 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 b c 6 d e f g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ i j k e - > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > l m n o p b 0 9 9 9 a 9 a 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 q r s t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ u v w 1 x , ) y z A B c C b b 9 0 a 9 a 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a D E F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( G H w I f J K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L h M N O P 2 3 ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > y Q R S T U V b 0 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a W X t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g Y k Z > ` .7 8 9 0 a ..R y { k Y g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L h M N O P 2 ' z A B V b 0 0 9 9 a 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ..I t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( +.@.4 #.b 9 a a a a a a a a a a a 9 9 W B m $.Y g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.&.# *.E = - ; > , > ' ) ' ; ! > > > > , > ' ) ' ; ; 4 5 6 q 8 9 9 a 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ..=.%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.;.>.,.a a a a a a a a a a a a a a a a a a a a 9 C V '.z ).k Y g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.&.# *.E = >.~ !.~.U {.a 0 a 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a c ].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.&.^.i k U a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 b ..S A /.' ; ! > > > > , > ' ) ' ; >.(._.=.*.:._ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ u v w 1 x , ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > y <.!.~.U {.a 0 a 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a R / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L h M N O [.}.V a b a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 0 ..U |.y 1.^ / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ :.*.=.2.(.>.> l m n o p b 0 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h 3.4.5.'.C 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 8 '.6.<.r l > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > y <.!.7.8.#.c ,.9 b 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g f 2 ~.V 0 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 0 9 ,.q #.o 7.9.<.y > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > y <.z 0.U 9 0 a a a a a a a a a a a a a I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / ^ | = - ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! <.a.o {.9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 a 9 a 0 0 b V b.o B 0.m l ; >.(._.=.*.:._ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ c.d.{.a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e.f.C a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 9 9 0 b 0 g.D R h.y > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > , 2 i.O j.M h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t I b a a a a a a a a a a a I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 a 9 a 9 9 b 0 b p B a.z y ) ! x $.w v u _ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t l.a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ v a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 a C g.C a 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 9 9 b p S n m l ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > 5.e m.@.n.[ 3.M h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &.b.a a a a a a a a a a a I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . -.# E #.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 0 6 6.3 o.w J G J 4.p.q.#.8 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 0 9 ..b.|.m > x $.w v u _ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . ( r.r a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a W =.K . . . . . . . . . K J 4.[.4 '...9 9 a 9 9 b a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 9 0 a {.U s.9.<.y > , > ; ) ; ; ! > > > > , > ; ) ; ; >.(._.=.*.:._ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / #.a a a a a a a a a a a I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . G ).a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t.^.. . . . . . . . . . . . . . . %.&.u.v.k e (.{ a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 9 0 a {.U s.9.<.>.= E *.# &.%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . w.q a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 0 {.C a b.>.H K . . . . . . . . . . . . . . . . . . . . . . . . > , > ; ) ; ; ! > > > > , > ; ) ; ; ; 4 f.o V b 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 a 9 a 0 0 b p B a.z y ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > - = E *.# &.%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / #.a a a a a a a a a a a x.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . / y.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 0 ,. .z.E ^ A.@ B.g B.@ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L h M j.O C.!.q 9 0 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 a 9 a 0 9 8 7 6 a.4 ' > , 2 i.O j.M h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] a a a a a a a a a a a U &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . ^ o a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 7 6.=.< h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g v.1 5.r r l > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > - = x.& ].$ # @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / #.a a a a a a a a a a a D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . | b a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 g.s.5.v.:._ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] a a a a a a a a a a a T &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . = a a a a a a a a a a a a a a a a a 6 , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > ; x 1 v.g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / U a a a a a a a a a a 9 $.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . - 9 a a a a a a a a a a a a a a a a E.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F.a a a a a a a a a a a g.G.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a a a a a a a % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g U a a a a a a a a a a a 5.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a .H.a H._.E.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h I.a a a a a a a a a a a a g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . <.a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L u.H.a a a a a a a a a a a J./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . h a.a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K.@.a a a a a a a a a a a a L.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . g 8.a a a a a a a a a 9 x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L A.7.a a a a a a a a a a a #.M.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . v.,.a a a a a a a a a 9 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N.O.a a a a a a a a a a a a /.u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . 1 9 a a a a a a a a a ,.v.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.9.a a a a a a a a a a a ..x.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . 5.9 a a a a a a a a a o g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < a a a a a a a a a a a a s.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . r a a a a a a a a a a }.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x a a a a a a a a a a a b _.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . r a a a a a a a a a a 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G.T a a a a a a a a a a a S ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . l a a a a a a a a a a l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L.C a a a a a a a a a a 9 <.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K t.a a a a a a a a a a a ,.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P.q a a a a a a a a a a a Q.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K ' 9 a a a a a a a a a a 9 =.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ 6 a a a a a a a a a a a V G.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h 1.8 a a a a a a a a a a a Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . y a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +./.a a a a a a a a a a a C ^.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . y.a a a a a a a a a a x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( *.W a a a a a a a a a a a R./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . h .a a a a a a a a a 9 $.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S.= a a a a a a a a a a a a L.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . T.,.a a a a a a a a a 9 w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( U.#.a a a a a a a a a a a 7 V.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . h _.9 a a a a a a a a a 0 v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.4.a a a a a a a a a a a a n j.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . g |.a a a a a a a a a a #.u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . W.n a a a a a a a a a a a 0 <./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . v.W a a a a a a a a a a t._ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ a a a a a a a a a a a a {.X.-.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . $.9 a a a a a a a a a b =.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + r a a a a a a a a a a a a D Y.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . L ! a a a a a a a a a a #.< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g U a a a a a a a a a a a a m 3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . h J.a a a a a a a a a a d h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 8 a a a a a a a a a a a 0 = K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . G.o a a a a a a a a a 9 _.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K Z.9 a a a a a a a a a a a {.`.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . $ C a a a a a a a a a C v.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.m a a a a a a a a a a a a b. +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . .+9 a a a a a a a a a W g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( Y.D a a a a a a a a a a a 9 > %.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . F.9 a a a a a a a a a H.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.X.{.a a a a a a a a a a a C ].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . 5.a a a a a a a a a a J.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / <.9 a a a a a a a a a a a ~.++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . y a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j.n a a a a a a a a a a a a k -.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . 9.a a a a a a a a a a 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( Y c a a a a a a a a a a a q U.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . h H.a a a a a a a a a 9 P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K @+a a a a a a a a a a a a = S.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . < ,.a a a a a a a a a 9 O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.J.a a a a a a a a a a a V *.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ( =.0 a a a a a a a a a 8 N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.e.8 a a a a a a a a a a a /.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . _ 6.a a a a a a a a a a '.M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #+$+a a a a a a a a a a a C * h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . :.U a a a a a a a a a a 5.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &.H.a a a a a a a a a a a 7 V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . *.0 a a a a a a a a a b 4.L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %+b a a a a a a a a a a a .^.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . =.9 a a a a a a a a a V 3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K 0.a a a a a a a a a a a a /.&+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . 2.9 a a a a a a a a a .h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j ,.a a a a a a a a a a a a *+t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . (.a a a a a a a a a a =+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K <.9 a a a a a a a a a a a V v.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . >.a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ s.a a a a a a a a a a a a !.T.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h I ,.a a a a a a a a a a a b { h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M $+a a a a a a a a a a a a V -+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L ;+f.a a a a a a a a a a a a n &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N.i c a a a a a a a a a a a b D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L O {.a a a a a a a a a a a S &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h l.0 a a a a a a a a a a 9 D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.0.a a a a a a a a a a a S &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h `...a a a a a a a a a a 9 D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M >.a a a a a a a a a a a S &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L Y.D a a a a a a a a a a 9 D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K.>+a a a a a a a a a a a S &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L < o a a a a a a a a a a 0 ,+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K.>+a a a a a a a a a a a f.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L < o a a a a a a a a a a W [ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K.>+a a a a a a a a a a 9 '+( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L < q a a a a a a a a a a R +.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K.; a a a a a a a a a a 9 >+t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L )+C a a a a a a a a a a C i.!+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G.T a a a a a a a a a a a C P t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( ! 9 a a a a a a a a a a a 8 I t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O.{.a a a a a a a a a a a a ..X F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K d 9 a a a a a a a a a a a a W E t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~+U a a a a a a a a a a a a a ..| h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.I ,.a a a a a a a a a a a a a a i.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t I 8 a a a a a a a a a a a a a a | t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t i.C a a a a a a a a a a a a a 9 ,.6.V./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !+P 8 a a a a a a a a a a a a a a a a z.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t I ..a a a a a a a a a a a a a a a a ~ u . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t X W a a a a a a a a a a a a a a a b e h . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F E ..a a a a a a a a a a a a a a a a i.h . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t | a a a a a a a a a a a a a a a a a | t . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h i.a a a a a a a a a a a a a a a a {.| h . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h | U a a a a a a a a a a a a a a a a i.h . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t s >.6 0 a a a a a a a a a a a a a a | t . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . >.9 a a a a a a a a a <.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g s { q a a a a a a a a a a a a a c v.h . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . = a a a a a a a a a a .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h %+W a a a a a a a a a a a a a !.T.. . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . | a a a a a a a a a a C &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t | a a a a a a a a a a a a a C $+h . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ^ a a a a a a a a a a a ,+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h i.a a a a a a a a a a a a a H.T.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . / g.a a a a a a a a a a f.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h | {.a a a a a a a a a a a 0 d.h . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . r a a a a a a a a a a p J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t | a a a a a a a a a a a a p % . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . {+a a a a a a a a a a b 4.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h i.a a a a a a a a a a a a !.A.. . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . M D a a a a a a a a a a ]+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h (.9 a a a a a a a a a a 8 | ( . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . h !.a a a a a a a a a 9 (.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.H.a a a a a a a a a a a '.3.. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . L t.a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h $+0 a a a a a a a a a a 9 2.K . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . y a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.^+a a a a a a a a a a a U V.. . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h ]+0 a a a a a a a a a a a =+/ . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u H.a a a a a a a a a a a ,.*+s /+/+s g h . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (+8 a a a a a a a a a a a D 6 ...._+>.s t . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K ) 9 a a a a a a a a a a a a a a a a }.s h . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j.H.a a a a a a a a a a a a a a a a a >.g . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( :+8 a a a a a a a a a a a a a a a a '.s . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.<+a a a a a a a a a a a a a a a a {./+. . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %+a a a a a a a a a a a a a a a a C /+. . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / ,.a a a a a a a a a a a a a a a U s . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y a a a a a a a a a a a a a a a f.g . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Y.a a a a a a a a a a a a a a C _.h . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + Z.a a a a a a a a a a a a a 0.T.. . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [+7 a a a a a a a a a a a ..`.h . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }+j a a a a a a a a a a a a >.M . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L i _+a a a a a a a a a a a 8.Y.L . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ 2.a a a a a a a a a a a a @.K.. . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( |+V a a a a a a a a a a a 0.A.L . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.!.a a a a a a a a a a a a 1+N.. . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h C.8 a a a a a a a a a a a (.L . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.H.a a a a a a a a a a a V G.. . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h e 0 a a a a a a a a a a 0 $.. . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ T a a a a a a a a a a a R &.. . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2+` a a a a a a a a a a a g.3+. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4+<.a a a a a a a a a a a 9 y K . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K j f.a a a a a a a a a a a a D ^ . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G.k D a a a a a a a a a a a a b e h . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4+) 0 a a a a a a a a a a a a a 0.T.. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 5+n a a a a a a a a a a a a a a ..] h . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.{+n a a a a a a a a a a a a a a a >.+.. . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( < |.a a a a a a a a a a a a a a a 6 ;.( . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6+, a a a a a a a a a a a a a a a U M.-.. . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.7+C a a a a a a a a a a a a a a c -+( . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &.8+a a a a a a a a a a a a a a |.c.. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9+b a a a a a a a a a a a a g.l.:.. . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l.a a a a a a a a a a a a o x.0+. . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K q a a a a a a a a a a a Q.5+( . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |+a a a a a a a a a a a s.;+. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h R.a a a a a a a a a a 0 ~+. . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.p a a a a a a a a a a n %.. . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h e 9 a a a a a a a a a a %+. . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ D a a a a a a a a a a q B.. . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K >.9 a a a a a a a a a a 4 _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . 9.a a a a a a a a a 9 { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [ a+a a a a a a a a a a C =.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . h b.a a a a a a a a a 9 k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( *+b a a a a a a a a a a '.< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . g 0 a a a a a a a a a 9 Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ m a a a a a a a a a a 0 [.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . Y 9 a a a a a a a a a 0 g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.p a a a a a a a a a a ^+T.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . k 9 a a a a a a a a a D h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .+9 a a a a a a a a a 9 C.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . { 9 a a a a a a a a a !.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( t.a a a a a a a a a a p 3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . - a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S.#.a a a a a a a a a a 8+( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( *.0 a a a a a a a a a a .+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +./.a a a a a a a a a a 8 3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h 1.8 a a a a a a a a a a H._ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ 6 a a a a a a a a a a 9 5.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K ' 9 a a a a a a a a a a {.O.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ! a a a a a a a a a a ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P.q a a a a a a a a a a 9 5 K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K > 9 a a a a a a a a a a ,.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ #.a a a a a a a a a a 9 <.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.F.9 a a a a a a a a a a S ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &.q.a a a a a a a a a a b _.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u.,.a a a a a a a a a a s.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L.a a a a a a a a a a 0 x.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( ~ a a a a a a a a a a b.u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ o a a a a a a a a a a l ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u.C a a a a a a a a a a Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . l a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F.a a a a a a a a a a ..b+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ( /.a a a a a a a a a a - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / U a a a a a a a a a a 6 _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . _ Q.a a a a a a a a a 9 { . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I a a a a a a a a a a a 5.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . 3.W a a a a a a a a a 9 k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / #.a a a a a a a a a a 9 O.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . I 9 a a a a a a a a a 8 Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I a a a a a a a a a a a ^+K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . h 9.a a a a a a a a a a 7 g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / #.a a a a a a a a a a a @.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . g 7 a a a a a a a a a a d h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . Y {.a a a a a a a a a 9 I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &.b.a a a a a a a a a a a I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . k 9 a a a a a a a a a W 3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #+$+a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . 2 9 a a a a a a a a a Q._ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.].C a a a a a a a a a a a I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . + y.a a a a a a a a a a ) ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5+'.a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . @ 6 a a a a a a a a a 9 C.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G.t.a a a a a a a a a a a a ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . i {.a a a a a a a a a b 4.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %._.b a a a a a a a a a a a #./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . 4.a a a a a a a a a a ,.J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ].g.a a a a a a a a a a a a ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . %.).a a a a a a a a a a T K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++7.a a a a a a a a a a a a R / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . &.|.a a a a a a a a a a y.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.k a a a a a a a a a a a a g.*.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . ;.8 a a a a a a a a a a c+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( ;.q a a a a a a a a a a a b _.%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . _.a a a a a a a a a a ..H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.>.a a a a a a a a a a a a /.G.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . &.q a a a a a a a a a a B G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h ] {.a a a a a a a a a a a .9+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . @.9 a a a a a a a a a a Z ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.n a a a a a a a a a a a C *.%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . h ` a a a a a a a a a a 0 d+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h e b a a a a a a a a a a a $+#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . g 7 a a a a a a a a a a _+%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ D a a a a a a a a a a a H.&.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . v.8 a a a a a a a a a a e+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K ' 9 a a a a a a a a a a ..%+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . 1 9 a a a a a a a a a W g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P.q a a a a a a a a a a 9 t.K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . x 9 a a a a a a a a a f.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K ) 9 a a a a a a a a a a T ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . ; a a a a a a a a a a <.L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P.q a a a a a a a a a a 0 e h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . > a a a a a a a a a a y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K ' 9 a a a a a a a a a a ^+T.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . , a a a a a a a a a a , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J 6 a a a a a a a a a a b C.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . > a a a a a a a a a a > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4...a a a a a a a a a a s.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o.9 a a a a a a a a a C x.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . ) a a a a a a a a a a ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h ` a a a a a a a a a a H.u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . ' a a a a a a a a a a ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.b.a a a a a a a a a a ~ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . ; a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h e 9 a a a a a a a a a 9 X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . >.a a a a a a a a a a ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ D a a a a a a a a a a p Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . (.a a a a a a a a a a =+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K - 9 a a a a a a a a a a n g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . _.a a a a a a a a a a .h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J s.a a a a a a a a a a b _.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . =.9 a a a a a a a a a g.< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f V a a a a a a a a a a H.T.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . *.0 a a a a a a a a a 0 E ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I 0 a a a a a a a a a 0 $+h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . :.U a a a a a a a a a a !.S.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . w ,.a a a a a a a a a ^+T.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . _ 6.a a a a a a a a a a {.*.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H 0.a a a a a a a a {.f+f e+X ,+O.^.h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . ( =.0 a a a a a a a a a a /.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G $+a a a a a a a a |.8+o b 9 a 8 }.(+S.N.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . < q a a a a a a a a a a 8 1.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( r.r a a a a a a _+8.a a a a a a a a g+S.L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . h 4 a a a a a a a a a a a 6 ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.# E 9.W W n 9.q a a a a a a a a a a v.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . |+C a a a a a a a a a a 9 y K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ :.v.- H.0 a a a a a a a a a a a z.M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . K }.a a a a a a a a a a a g.3+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K J 4.]+(.> > > > ! ; ' ) > y.'.,.9 a a a a a a a a a a a a a b.B.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . j ,.a a a a a a a a a a a |.&.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K P.' 6 ..9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a C [+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . K <.9 a a a a a a a a a a b D.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &.,+Q.{.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ~.^.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . ^ S a a a a a a a a a a a S &.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ {+/.{.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a _.&.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . h _.C a a a a a a a a a a 0 ,+. . . . . . . . . . . . . L h G.$ .+F.5.! ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > ' ) ' ; ! > > > > , > >.= | ^ / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / M.= H.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a D h+%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . 3.!.a a a a a a a a a a a f.K . . + @ N 4.i.x 3 ; ! y <.<+o C 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 a 0 g.'.1 G.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ b+n.- o 8 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 7 4.#+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ( |+V a a a a a a a a a a g.} N `.- '.8 a a a 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b 9.V.: h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ u v w $.x , ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > ' R.|.D {.9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 7.].%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . _ 2.a a a a a a a a a a a 8.{.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a #.! 4.3.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ u v w $.x > m n o p b 9 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 H./+t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . L i q a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ..|.F.3.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.&.# *.E = - > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > y h.i+S #.U V b 9 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 p 6.|+K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . K.; a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b s.x.u ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.&.# *.E = >.<.!._+T b.V {.a 0 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a C '.[.T.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . L )+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 W B a.R.y ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > > > > ! ; ' ) ' > , > y <.9.s.U {.a 0 9 9 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a j+k+l+m+m+l+k+j+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 0 #.t.=.< h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . G...a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a n+o+p+q+q+p+o+n+a a a a a a a a a a a a a r+s+t+u+v+v+w+x+y+r+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ..6 h.) > > ! ; ; ) ! x $.w v u _ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . ( t.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a z+A+v+v+v+v+v+v+A+z+a a a a a a a a a a a j+B+x+v+v+v+v+v+v+v+C+j+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 8.(.j G.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . $ a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a n+D+v+v+v+v+v+v+v+v+E+F+G+G+H+I+J+a a a a a K+L+v+v+v+v+v+v+v+v+v+o+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b 8+{+M h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . + 4 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a M+q+v+v+v+v+v+v+v+v+N+O+N+N+P+A+Q+R+S+T+T+S+U+u+v+v+v+v+v+v+v+v+v+V+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a {. .1 G.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . J S a a a a a a a a a a a a a a a a a a a a a 9 9 C W H.J.z.) ; ; ! > > > > , > ; ) ; ; ! > > > > , > ; ) ; ; ! > > > > , z.` S 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a W+X+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+O+Y+Z+v+v+Z+`+v+v+v+v+v+v+v+v+v+v+u+n+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ,.}.2.].t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . %.(+p a a a a a a a a a a a 9 8 7 0.r ; ! > ; x 1 v.g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ [ , g.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a @O+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+.@a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 9 ..a+~ .+u.&.%.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . &+& H.a a a a a a a 9 p 8+E ^ t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &.@.J...a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a +@@@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+#@n+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 0 0 b V B a.z y ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > >.(.2.=.*.:._ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . $@%@- ~...9 8 c f.,+&.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h ^ ' q 9 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a &@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+*@=@a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 a 9 a 9 9 b 0 b V B a.z ' 2 i.O j.M h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . ( G H w I f J K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K P.' H.b a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 a 9 a 0 -@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+;@> > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > - e @+@.} [ 3.M h L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . K J @.> S a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a 9 9 9 a 0 a {.U ~.!.~ >.= e+%+% 9+ +>@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+,@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h b ,.D _+A R.l ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > > > > ! ; ; ) ; > , > ; - = E *.# &.%.. . . . . . . . . . . '@)@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+!@~@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M.G ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@^@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+(@~@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+:@]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@<@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+1@2@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+3@4@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+7@8@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+9@0@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+a@b@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+c@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@d@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+7@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@e@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+5@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+|@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+_@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+5@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+|@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+'@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@g@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+:@d@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i@(@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+j@k@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l@m@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+n@]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o@p@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+q@~@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+s@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t@)@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@t@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+r@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@o@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@l@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+u@i@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+w@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@x@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+p@y@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+u@z@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+A@~@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+B@C@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+D@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+5@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+5@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+|@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8@F@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0@G@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+_@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b@a@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2@H@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I@J@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+K@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L@M@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+K@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N@:@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+f@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O@)@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+P@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Q@)@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+3@R@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+T@l@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+U@i@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+V@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+_@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+5@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+|@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+[@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+_@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+5@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@W@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . W@)@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+)@X@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X@:@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+Y@Z@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z@T@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+j@]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@K@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+`@~@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~@6@ #v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+|@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#6@S@+#@#:@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+p@v+v+v+v+v+v+v+v+3@##. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~@]@6@$#U@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+%#v+v+v+v+v+v+v+v+&#l@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+1@*#v+v+v+v+v+v+%#O@i@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; crossfire-client-1.70.0/pixmaps/sign_west.xpm0000644000014500000120000224272611731277006016212 00000000000000/* XPM */ static const char *const sign_west_xpm[] = { "750 400 377 2", " c None", ". c #FFFFFF", "+ c #EAEAEA", "@ c #B1B1B1", "# c #818181", "$ c #595959", "% c #494949", "& c #424242", "* c #484848", "= c #4C4C4C", "- c #4B4B4B", "; c #4A4A4A", "> c #454545", ", c #4F4F4F", "' c #5E5E5E", ") c #797979", "! c #929292", "~ c #A8A8A8", "{ c #B7B7B7", "] c #CCCCCC", "^ c #E0E0E0", "/ c #F7F7F7", "( c #F4F4F4", "_ c #CDCDCD", ": c #949494", "< c #5C5C5C", "[ c #333333", "} c #1C1C1C", "| c #0D0D0D", "1 c #030303", "2 c #010101", "3 c #000000", "4 c #020202", "5 c #050505", "6 c #0F0F0F", "7 c #2C2C2C", "8 c #3D3D3D", "9 c #4D4D4D", "0 c #545454", "a c #6C6C6C", "b c #848484", "c c #A4A4A4", "d c #B5B5B5", "e c #C6C6C6", "f c #D8D8D8", "g c #EBEBEB", "h c #FBFBFB", "i c #E9E9E9", "j c #9F9F9F", "k c #434343", "l c #0E0E0E", "m c #0C0C0C", "n c #161616", "o c #272727", "p c #373737", "q c #464646", "r c #757575", "s c #979797", "t c #C4C4C4", "u c #EDEDED", "v c #7D7D7D", "w c #121212", "x c #040404", "y c #191919", "z c #2E2E2E", "A c #3E3E3E", "B c #474747", "C c #535353", "D c #8A8A8A", "E c #B4B4B4", "F c #D6D6D6", "G c #707070", "H c #0A0A0A", "I c #0B0B0B", "J c #101010", "K c #141414", "L c #151515", "M c #232323", "N c #353535", "O c #6E6E6E", "P c #8F8F8F", "Q c #C1C1C1", "R c #DFDFDF", "S c #FEFEFE", "T c #EEEEEE", "U c #BCBCBC", "V c #828282", "W c #AAAAAA", "X c #DEDEDE", "Y c #070707", "Z c #9D9D9D", "` c #1D1D1D", " . c #343434", ".. c #585858", "+. c #F8F8F8", "@. c #7F7F7F", "#. c #A6A6A6", "$. c #E4E4E4", "%. c #6B6B6B", "&. c #131313", "*. c #878787", "=. c #D7D7D7", "-. c #A7A7A7", ";. c #060606", ">. c #212121", ",. c #313131", "'. c #4E4E4E", "). c #575757", "!. c #1E1E1E", "~. c #080808", "{. c #C3C3C3", "]. c #F6F6F6", "^. c #414141", "/. c #D0D0D0", "(. c #636363", "_. c #525252", ":. c #3F3F3F", "<. c #D5D5D5", "[. c #646464", "}. c #7E7E7E", "|. c #252525", "1. c #2A2A2A", "2. c #626262", "3. c #171717", "4. c #222222", "5. c #3C3C3C", "6. c #505050", "7. c #8E8E8E", "8. c #CBCBCB", "9. c #282828", "0. c #323232", "a. c #5B5B5B", "b. c #CACACA", "c. c #111111", "d. c #2D2D2D", "e. c #C0C0C0", "f. c #6D6D6D", "g. c #363636", "h. c #090909", "i. c #292929", "j. c #B0B0B0", "k. c #555555", "l. c #9A9A9A", "m. c #A3A3A3", "n. c #717171", "o. c #2B2B2B", "p. c #5A5A5A", "q. c #606060", "r. c #202020", "s. c #BFBFBF", "t. c #989898", "u. c #C7C7C7", "v. c #404040", "w. c #7A7A7A", "x. c #8D8D8D", "y. c #656565", "z. c #D2D2D2", "A. c #E2E2E2", "B. c #444444", "C. c #393939", "D. c #747474", "E. c #DCDCDC", "F. c #6A6A6A", "G. c #D4D4D4", "H. c #676767", "I. c #1A1A1A", "J. c #303030", "K. c #888888", "L. c #F2F2F2", "M. c #A5A5A5", "N. c #A9A9A9", "O. c #FDFDFD", "P. c #262626", "Q. c #A2A2A2", "R. c #3B3B3B", "S. c #E3E3E3", "T. c #9C9C9C", "U. c #C9C9C9", "V. c #BBBBBB", "W. c #F3F3F3", "X. c #838383", "Y. c #BEBEBE", "Z. c #858585", "`. c #5D5D5D", " + c #CFCFCF", ".+ c #898989", "++ c #E6E6E6", "@+ c #727272", "#+ c #5F5F5F", "$+ c #F0F0F0", "%+ c #919191", "&+ c #ECECEC", "*+ c #767676", "=+ c #383838", "-+ c #A1A1A1", ";+ c #D9D9D9", ">+ c #6F6F6F", ",+ c #808080", "'+ c #737373", ")+ c #F1F1F1", "!+ c #969696", "~+ c #ADADAD", "{+ c #AFAFAF", "]+ c #696969", "^+ c #1B1B1B", "/+ c #868686", "(+ c #1F1F1F", "_+ c #8B8B8B", ":+ c #7C7C7C", "<+ c #2F2F2F", "[+ c #CECECE", "}+ c #F5F5F5", "|+ c #A0A0A0", "1+ c #BDBDBD", "2+ c #939393", "3+ c #E7E7E7", "4+ c #DADADA", "5+ c #B9B9B9", "6+ c #DDDDDD", "7+ c #9B9B9B", "8+ c #3A3A3A", "9+ c #B8B8B8", "0+ c #E1E1E1", "a+ c #181818", "b+ c #D3D3D3", "c+ c #777777", "d+ c #C2C2C2", "e+ c #787878", "f+ c #515151", "g+ c #666666", "h+ c #B6B6B6", "i+ c #242424", "j+ c #090500", "k+ c #281600", "l+ c #4E2A00", "m+ c #613400", "n+ c #120900", "o+ c #512C00", "p+ c #7A4200", "q+ c #7F4500", "r+ c #804500", "s+ c #7D4400", "t+ c #733E00", "u+ c #472600", "v+ c #0B0600", "w+ c #321B00", "x+ c #603400", "y+ c #794100", "z+ c #562E00", "A+ c #402300", "B+ c #160C00", "C+ c #593000", "D+ c #683800", "E+ c #221200", "F+ c #060300", "G+ c #190E00", "H+ c #301A00", "I+ c #3D2100", "J+ c #371D00", "K+ c #5B3100", "L+ c #532D00", "M+ c #693900", "N+ c #4B2900", "O+ c #3C2000", "P+ c #492800", "Q+ c #291600", "R+ c #351C00", "S+ c #703D00", "T+ c #7C4300", "U+ c #764000", "V+ c #331B00", "W+ c #784100", "X+ c #7D4300", "Y+ c #743F00", "Z+ c #5D3200", "`+ c #040200", " @ c #361D00", ".@ c #100800", "+@ c #623500", "@@ c #7E4400", "#@ c #1E1000", "$@ c #271500", "%@ c #774000", "&@ c #341C00", "*@ c #ABABAB", "=@ c #EFEFEF", "-@ c #674824", ";@ c #452500", ">@ c #9C6E38", ",@ c #A47E52", "'@ c #FAF7F4", ")@ c #874F0E", "!@ c #814601", "~@ c #A77F4F", "{@ c #E6DBCD", "]@ c #A47A48", "^@ c #C9AF92", "/@ c #A57C4B", "(@ c #8A5415", "_@ c #814602", ":@ c #A67C4C", "<@ c #CDB59A", "[@ c #B08B60", "}@ c #A57B4A", "|@ c #FDFCFB", "1@ c #915E22", "2@ c #A27745", "3@ c #EFE7DE", "4@ c #824905", "5@ c #CFB99F", "6@ c #A47A49", "7@ c #FBF9F7", "8@ c #AE885C", "9@ c #F0E8E0", "0@ c #915F23", "a@ c #E2D4C4", "b@ c #834906", "c@ c #CBB397", "d@ c #BA9A75", "e@ c #A87F50", "f@ c #AC8659", "g@ c #A37846", "h@ c #97672F", "i@ c #CEB89D", "j@ c #854C0A", "k@ c #F7F3EE", "l@ c #8C5718", "m@ c #844B08", "n@ c #DECEBC", "o@ c #96662D", "p@ c #814703", "q@ c #C7AD8E", "r@ c #A07441", "s@ c #B49269", "t@ c #A98152", "u@ c #854D0B", "v@ c #97672E", "w@ c #B38F66", "x@ c #C7AD8F", "y@ c #E0D2C1", "z@ c #EFE8DF", "A@ c #8B5516", "B@ c #FFFEFE", "C@ c #946329", "D@ c #9E713D", "E@ c #A27744", "F@ c #9A6C35", "G@ c #8D581A", "H@ c #B08C61", "I@ c #A37947", "J@ c #996A33", "K@ c #F5F0EB", "L@ c #885110", "M@ c #E8DDD0", "N@ c #D3BEA6", "O@ c #A67D4D", "P@ c #BFA27F", "Q@ c #B28E64", "R@ c #C5AA8A", "S@ c #895313", "T@ c #A77E4E", "U@ c #936126", "V@ c #9E713C", "W@ c #A98253", "X@ c #B6946C", "Y@ c #CCB498", "Z@ c #824804", "`@ c #8E591C", " # c #946228", ".# c #C2A584", "+# c #834A07", "@# c #8F5C1F", "## c #F4EFE9", "$# c #986830", "%# c #87500F", "&# c #C3A786", "*# c #885111", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ # $ % & * * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * % , ' ) ! ~ { ] ^ / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ : < [ } | 1 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 3 4 3 4 2 5 6 } 7 8 % % 9 0 a b c d e f g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i j k l 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 2 3 2 2 2 4 1 m n o p q * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * , < r s t ^ / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u v w 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 2 3 4 2 1 1 x | y z A B > = C a D E F g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i G H 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 4 1 I J K L M N B * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % 9 0 O P Q R ( S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T U : V D W X h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i V Y 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 2 2 4 4 1 I y z A ; 0 O P Q R ( S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ Z r $ B M Y 3 4 2 5 6 ` .* ..r Z _ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.@.Y 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 2 2 5 l } 7 8 % % ; > ; * = * * * * - % ; > ; * = * % , ' v #.] $.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ Z %.p y H 2 2 3 3 3 3 3 3 3 3 3 3 3 2 1 &.8 *.=.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.| 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 3 4 3 ;.J >.,.& '.' v #.] $.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ Z r ).A !.I x 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ~.'.{.].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + M 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 3 4 3 ;.J >.,.^.B * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > = C a D E F g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g /.#.@.(._.'.% ; > ; * = * * * * - % ; :.z L Y 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 J r t <.$.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 4 1 m n o p q * '._.[.@.#./.g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ }.B |.J Y 4 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 3 I 1.2.P Q R ( S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 1 2 ~.| &.3.4.,.^.B * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * q k ^.5.!.5 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 x !.6.7.8.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 3 3 3 3 3 3 3 3 3 3 3 3 3 4 2 J 9.A ^.B * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * B ^.0.4.n &.l ~.2 4 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 I >.0 : _ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 ;.a.b.g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g /.#.@.(._.'.% q p 9.y n c.I 1 4 4 3 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 ;.n d.^.- % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % , ' b @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 3 3 3 3 3 3 3 3 3 3 3 1 V i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( R e.P f.0 = * = * * * * - % % > % * = * * * * - % % > % * = * * * * B g.M w h.4 1 4 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 x i.j.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 k.i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g F E D %.C - > B A d.y m 1 4 1 2 2 3 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 l.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 3 3 3 3 3 3 3 3 3 3 3 c.$.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( R 8.d m.*.n.< 6.* * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % q p o L m 1 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 x h.x 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 E g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g F E D %.C * p |.c.Y 2 4 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 5 &.o.p.7.U X U D q.9 5.} 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 &.v ] ].. . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 3 3 3 3 3 3 3 3 3 3 3 &.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g /.#.@.(._.'.% % > % * = * * * * - % % > % * = * B ^.0.r.J ;.3 4 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 2 2 3 2 2 Y !.8 2.7.U T . . . . . . . . . T @.H 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 k s.h . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.$.] #.v ' '.^.0.r.J ;.3 4 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 $ _.< r t.u.$.+.. . . . . . . . . . . . . . . <.v.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ).X . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . w.3 3 3 3 3 3 3 3 3 3 3 &.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.$.] #.v ' , * * - % % > % * = * * * * - % % > % * = * * * * - % % > B A d.y m 1 4 4 3 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 I n i.8 % % % > % * = * * * * - % % > % * = * . . . . . . . . . . . . . . . . . . . . . . . . T W '.c.3 x ;.4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 l x.. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.J 3 3 3 3 3 3 3 3 3 3 3 # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( R e.P f.0 = * ; 8 d.} 6 5 2 4 3 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 4 2 l ,.y.P e.R ( S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / ^ z._ z.^ A.@ v B.` ~.4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 C.+ . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.3 3 3 3 3 3 3 3 3 3 3 &.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / ^ ] { -.! w.' , * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * q k k 6.a t._ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( e @.5.6 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 n @ . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.K 3 3 3 3 3 3 3 3 3 3 3 # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g /.t.6.r.h.2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 b . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.2 3 3 3 3 3 3 3 3 3 3 J + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ t.a C % * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > % * = } 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ' . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.h.3 3 3 3 3 3 3 3 3 3 3 F.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 , . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 3 3 3 3 3 3 3 3 3 3 J _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ 3 3 3 3 3 3 3 3 3 3 3 3 H.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G.(.I.3 I.` 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + J.3 3 3 3 3 3 3 3 3 3 3 I.u.S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 ^.. . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T K.3 3 3 3 3 3 3 3 3 3 3 3 *.L.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 d.( . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h M.&.3 3 3 3 3 3 3 3 3 3 3 4.A.S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C 2 3 3 3 3 3 3 3 3 3 3._ . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F :.3 3 3 3 3 3 3 3 3 3 3 3 N.O.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2 3 3 3 3 3 3 3 3 3 ~.t.. . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h w.Y 3 3 3 3 3 3 3 3 3 3 3 0.].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t.~.3 3 3 3 3 3 3 3 3 2 a . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.r.3 3 3 3 3 3 3 3 3 3 3 3 e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ n 3 3 3 3 3 3 3 3 3 2 6.. . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( (.1 3 3 3 3 3 3 3 3 3 3 3 C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 1.3 3 3 3 3 3 3 3 3 3 k . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ L 3 3 3 3 3 3 3 3 3 3 3 K E.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 3 3 3 3 3 3 3 3 3 k . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T ^.2 3 3 3 3 3 3 3 3 3 3 x K.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . q 3 3 3 3 3 3 3 3 3 3 q . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s ~.3 3 3 3 3 3 3 3 3 3 3 v.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T P.3 3 3 3 3 3 3 3 3 3 3 l Q.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @.2 3 3 3 3 3 3 3 3 3 3 2 ; T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.I 3 3 3 3 3 3 3 3 3 3 3 } @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..3 3 3 3 3 3 3 3 3 3 3 5 }.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <.x 3 3 3 3 3 3 3 3 3 3 3 :.=.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 B . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + R.3 3 3 3 3 3 3 3 3 3 3 H #.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C 3 3 3 3 3 3 3 3 3 3 C.. . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T K.3 3 3 3 3 3 3 3 3 3 3 3 ' S.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.2 3 3 3 3 3 3 3 3 3 ` ( . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h T.6 3 3 3 3 3 3 3 3 3 3 3 &.U.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D 2 3 3 3 3 3 3 3 3 3 ~.V.. . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e.o 3 3 3 3 3 3 3 3 3 3 3 3 7.].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E 4 3 3 3 3 3 3 3 3 3 2 (.( . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ^.4 3 3 3 3 3 3 3 3 3 3 3 o W.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F &.3 3 3 3 3 3 3 3 3 3 |._ . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ].X.;.3 3 3 3 3 3 3 3 3 3 3 3 @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g v.3 3 3 3 3 3 3 3 3 3 H t.. . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h Y.w 3 3 3 3 3 3 3 3 3 3 3 3 k / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h @.1 3 3 3 3 3 3 3 3 3 2 %.. . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.p 3 3 3 3 3 3 3 3 3 3 3 3 J _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e &.3 3 3 3 3 3 3 3 3 3 - S . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T ' 4 3 3 3 3 3 3 3 3 3 3 3 5 b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( [ 3 3 3 3 3 3 3 3 3 3 J.( . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z.;.3 3 3 3 3 3 3 3 3 3 3 2 `.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (.2 3 3 3 3 3 3 3 3 3 n E.. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +c.3 3 3 3 3 3 3 3 3 3 3 3 p 8.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t.x 3 3 3 3 3 3 3 3 3 x { . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.* 2 3 3 3 3 3 3 3 3 3 3 3 w Y.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ H 3 3 3 3 3 3 3 3 3 2 .+. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -.x 3 3 3 3 3 3 3 3 3 3 3 ;.X.].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( I.3 3 3 3 3 3 3 3 3 2 F.. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++>.3 3 3 3 3 3 3 3 3 3 3 2 ^.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J.3 3 3 3 3 3 3 3 3 3 6.. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ].r 3 3 3 3 3 3 3 3 3 3 3 3 o e.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 B . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h U.l 3 3 3 3 3 3 3 3 3 3 3 | Z h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0 3 3 3 3 3 3 3 3 3 3 0.. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S.' 3 3 3 3 3 3 3 3 3 3 3 3 @+T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O 2 3 3 3 3 3 3 3 3 3 I.( . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h #.I 3 3 3 3 3 3 3 3 3 3 3 J.z.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P 2 3 3 3 3 3 3 3 3 3 ~.e . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . =.:.3 3 3 3 3 3 3 3 3 3 3 5 j.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Q 5 3 3 3 3 3 3 3 3 3 4 @.h . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( ) x 3 3 3 3 3 3 3 3 3 3 3 #+$+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R !.3 3 3 3 3 3 3 3 3 3 5.g . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T.6 3 3 3 3 3 3 3 3 3 3 3 I.$.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 6.3 3 3 3 3 3 3 3 3 3 J /.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <.` 3 3 3 3 3 3 3 3 3 3 3 1 %+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S 7.1 3 3 3 3 3 3 3 3 3 4 #.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . &+:.3 3 3 3 3 3 3 3 3 3 3 3 9.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.I 3 3 3 3 3 3 3 3 3 2 @.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i *+3 3 3 3 3 3 3 3 3 3 3 3 ~.s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( ` 3 3 3 3 3 3 3 3 3 2 [.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( t.I 3 3 3 3 3 3 3 3 3 3 3 2 ^.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . =+3 3 3 3 3 3 3 3 3 3 _.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V.,.3 3 3 3 3 3 3 3 3 3 3 3 r.@ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 '.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( $ 1 3 3 3 3 3 3 3 3 3 3 3 ~.V ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -+I 3 3 3 3 3 3 3 3 3 3 3 3 #+R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.o 3 3 3 3 3 3 3 3 3 3 3 3 i.;+S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1 3 3 3 3 3 3 3 3 3 3 3 | t O.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.L 3 3 3 3 3 3 3 3 3 3 3 ;.P S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 3 3 3 3 3 3 3 3 3 3 4 k.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.L 3 3 3 3 3 3 3 3 3 3 3 9.V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 3 3 3 3 3 3 3 3 3 3 Y Z.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.L 3 3 3 3 3 3 3 3 3 3 3 '.R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 3 3 3 3 3 3 3 3 3 3 w Y.S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.L 3 3 3 3 3 3 3 3 3 3 3 >+L.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,+4 3 3 3 3 3 3 3 3 3 3 n e S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T i.3 3 3 3 3 3 3 3 3 3 3 >+L.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d H 3 3 3 3 3 3 3 3 3 3 n e S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h '+2 3 3 3 3 3 3 3 3 3 3 >+L.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . =.M 3 3 3 3 3 3 3 3 3 3 l e S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i >+2 3 3 3 3 3 3 3 3 3 3 % L.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )+f.x 3 3 3 3 3 3 3 3 3 3 x !+S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i O x 3 3 3 3 3 3 3 3 3 3 3 K E.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i V 5 3 3 3 3 3 3 3 3 3 3 3 2 - h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u G Y 3 3 3 3 3 3 3 3 3 3 3 3 ;.N.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i v H 3 3 3 3 3 3 3 3 3 3 3 3 2 [ T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( b Y 3 3 3 3 3 3 3 3 3 3 3 3 3 J ~+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( f.3 3 3 3 3 3 3 3 3 3 3 3 3 3 ~.V +.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i b 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 V i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . + T.5.~.2 3 3 3 3 3 3 3 3 3 3 3 3 3 x f.i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.B.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 O )+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . F & 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Y V i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . ( < 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 H G i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . ( f.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Y v u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . i b 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 b i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . ( b ;.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 f.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . ( f.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 J b ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . i b 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 } '.j i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . ( t.| 3 3 3 3 3 3 3 3 3 3 3 3 3 l $ j _ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^.3 3 3 3 3 3 3 3 3 2 '.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . V.,.3 3 3 3 3 3 3 3 3 3 3 3 3 H %+( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ` 3 3 3 3 3 3 3 3 3 3 ' . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . ( #+x 3 3 3 3 3 3 3 3 3 3 3 3 3 b i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.x 3 3 3 3 3 3 3 3 3 3 b . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . V.I.3 3 3 3 3 3 3 3 3 3 3 3 3 f.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,+3 3 3 3 3 3 3 3 3 3 3 @ . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . ( a.4 3 3 3 3 3 3 3 3 3 3 3 ;.b ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T i.3 3 3 3 3 3 3 3 3 3 h.+ . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . ~ m 3 3 3 3 3 3 3 3 3 3 3 3 b i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . U m 3 3 3 3 3 3 3 3 3 3 k . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . A.,.3 3 3 3 3 3 3 3 3 3 3 3 f.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 3 3 3 3 3 3 3 3 3 3 {+. . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . h b 5 3 3 3 3 3 3 3 3 3 3 2 _.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]+3 3 3 3 3 3 3 3 3 3 w R . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . 8.!.3 3 3 3 3 3 3 3 3 3 3 I.V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _.2 3 3 3 3 3 3 3 3 3 ,.( . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . T [.2 3 3 3 3 3 3 3 3 3 3 4 #+( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 v.S . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . T.J 3 3 3 3 3 3 3 3 3 3 3 ^+V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 B . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . + =+3 3 3 3 3 3 3 3 3 3 3 4 ]+( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . ( _ j /+/+j *+~.3 3 3 3 3 3 3 3 3 3 3 I.F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . i j '.(+Y Y } w 3 3 3 3 3 3 3 3 3 3 3 5 _+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . ( j 1.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 > T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . _ '.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 I.e.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . j !.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 :+h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . /+;.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 <+A.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . /+x 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 %+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . j J 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ~.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . _ i.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . ( (.x 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Y.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . V.9.3 3 3 3 3 3 3 3 3 3 3 3 3 `./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . ( Z.Y 3 3 3 3 3 3 3 3 3 3 3 6 [+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . R '.3 3 3 3 3 3 3 3 3 3 3 3 s }+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . S Y.3.3 3 3 3 3 3 3 3 3 3 3 (+t S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . L.*.3 3 3 3 3 3 3 3 3 3 3 3 [.g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . S A.9.3 3 3 3 3 3 3 3 3 3 3 I |+h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . O.1+3 3 3 3 3 3 3 3 3 3 3 3 ,.8.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . S _.3 3 3 3 3 3 3 3 3 3 3 5 y.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . E.I 3 3 3 3 3 3 3 3 3 3 3 I.V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . %.4 3 3 3 3 3 3 3 3 3 3 4 < ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . $.M 3 3 3 3 3 3 3 3 3 3 3 K @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . 2+h.3 3 3 3 3 3 3 3 3 3 3 .3+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . T B 2 3 3 3 3 3 3 3 3 3 3 3 ^.4+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . @ w 3 3 3 3 3 3 3 3 3 3 3 3 i.s T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . ( < 1 3 3 3 3 3 3 3 3 3 3 3 3 w r E.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . V.9.3 3 3 3 3 3 3 3 3 3 3 3 3 4 > 4+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . ( # Y 3 3 3 3 3 3 3 3 3 3 3 3 3 3 o 5+h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . =.'.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 o {+].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . h {.} 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 |.e h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . ].M.J 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 = 6+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . h -+| 3 3 3 3 3 3 3 3 3 3 3 3 3 3 x 7++.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . b.|.3 3 3 3 3 3 3 3 3 3 3 3 3 3 8+$.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . /.k.h.3 3 3 3 3 3 3 3 3 3 3 3 1 9+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . 0+w.n 3 3 3 3 3 3 3 3 3 3 3 3 k.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . h 5+P.3 3 3 3 3 3 3 3 3 3 3 l T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . ;+r.3 3 3 3 3 3 3 3 3 3 3 |+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . ~+4 3 3 3 3 3 3 3 3 3 3 R.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . +.o 3 3 3 3 3 3 3 3 3 3 m V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . %+3 3 3 3 3 3 3 3 3 3 2 < ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . z.l 3 3 3 3 3 3 3 3 3 3 w @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . g 8 3 3 3 3 3 3 3 3 3 3 2 '.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . h @.x 3 3 3 3 3 3 3 3 3 3 a+d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ 2 3 3 3 3 3 3 3 3 3 0.. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . e !.3 3 3 3 3 3 3 3 3 3 1 *+h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r 2 3 3 3 3 3 3 3 3 3 c.( . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 2.4 3 3 3 3 3 3 3 3 3 3 p g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z 2 3 3 3 3 3 3 3 3 3 4 _ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V.^+3 3 3 3 3 3 3 3 3 3 m 8.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ 4 3 3 3 3 3 3 3 3 3 2 Z . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( y.2 3 3 3 3 3 3 3 3 3 2 .+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( w 3 3 3 3 3 3 3 3 3 2 r . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.m 3 3 3 3 3 3 3 3 3 3 v.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,.3 3 3 3 3 3 3 3 3 2 $ . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h 8+3 3 3 3 3 3 3 3 3 3 &.S.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 , . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .+3 3 3 3 3 3 3 3 3 3 4 #.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5 3 3 3 3 3 3 3 3 3 3 :.=.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g I.3 3 3 3 3 3 3 3 3 3 5 }.( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h 6.2 3 3 3 3 3 3 3 3 3 3 } @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N.;.3 3 3 3 3 3 3 3 3 3 2 ; T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T 7 2 3 3 3 3 3 3 3 3 3 3 l Q.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 3 3 3 3 3 3 3 3 3 - . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s ~.3 3 3 3 3 3 3 3 3 3 2 * T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T ^.2 3 3 3 3 3 3 3 3 3 3 &.@ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ L 3 3 3 3 3 3 3 3 3 3 2 F.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( (.1 3 3 3 3 3 3 3 3 3 3 o.$.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.r.3 3 3 3 3 3 3 3 3 3 ~.u.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h w.4 3 3 3 3 3 3 3 3 3 3 K.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F c.3 3 3 3 3 3 3 3 3 3 & h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h q 3 3 3 3 3 3 3 3 3 3 n g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z 3 3 3 3 3 3 3 3 3 3 x u.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b+Y 3 3 3 3 3 3 3 3 3 3 F.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 q . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g } 3 3 3 3 3 3 3 3 3 3 J + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , 3 3 3 3 3 3 3 3 3 3 :.h . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h 6.3 3 3 3 3 3 3 3 3 3 3 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ 2 3 3 3 3 3 3 3 3 3 P.g . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N.2 3 3 3 3 3 3 3 3 3 3 &.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r 2 3 3 3 3 3 3 3 3 3 H 8.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T ^+3 3 3 3 3 3 3 3 3 3 3 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z 5 3 3 3 3 3 3 3 3 3 2 V . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . *.3 3 3 3 3 3 3 3 3 3 3 &.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ 6 3 3 3 3 3 3 3 3 3 3 0.( . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( [ 3 3 3 3 3 3 3 3 3 3 6 _ . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 3 3 3 3 3 3 3 3 3 3 3 c.$.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 2 3 3 3 3 3 3 3 3 3 ;.Z . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 #+$+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.H 3 3 3 3 3 3 3 3 3 2 r . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V 3 3 3 3 3 3 3 3 3 3 3 x -.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g P.3 3 3 3 3 3 3 3 3 2 0 . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 !.5+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h > 3 3 3 3 3 3 3 3 3 3 C./ . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # 3 3 3 3 3 3 3 3 3 3 3 3 v.E.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y.2 3 3 3 3 3 3 3 3 3 } ^ . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + &.3 3 3 3 3 3 3 3 3 3 3 1 (.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 3 3 3 3 3 3 3 3 3 ;.t . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # 3 3 3 3 3 3 3 3 3 3 3 3 h.-.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . U ~.3 3 3 3 3 3 3 3 3 3 7.. . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + M 3 3 3 3 3 3 3 3 3 3 3 3 4.++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T K 3 3 3 3 3 3 3 3 3 3 ).+.. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . #.h.3 3 3 3 3 3 3 3 3 3 3 3 r ].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 3 3 3 3 3 3 3 3 3 |.$.. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.(.1 3 3 3 3 3 3 3 3 3 3 3 l {.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c+3 3 3 3 3 3 3 3 3 3 5 {.. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.:.3 3 3 3 3 3 3 3 3 3 3 3 '.=.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . W Y 3 3 3 3 3 3 3 3 3 3 (.. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9+` 3 3 3 3 3 3 3 3 3 3 3 ;.# ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X y 3 3 3 3 3 3 3 3 3 3 l $.. . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.#.x 3 3 3 3 3 3 3 3 3 3 3 o V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h ..3 3 3 3 3 3 3 3 3 3 2 *.. . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $+#+3 3 3 3 3 3 3 3 3 3 3 1 < ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d+4 3 3 3 3 3 3 3 3 3 3 .( . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.I.3 3 3 3 3 3 3 3 3 3 3 w @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.(+3 3 3 3 3 3 3 3 3 3 6 _ . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %+Y 3 3 3 3 3 3 3 3 3 3 2 ; T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e+3 3 3 3 3 3 3 3 3 3 5 t.. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T v.2 3 3 3 3 3 3 3 3 3 3 l Q.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ H 3 3 3 3 3 3 3 3 3 2 a . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ K 3 3 3 3 3 3 3 3 3 3 2 > T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( i.3 3 3 3 3 3 3 3 3 2 C . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( < 4 3 3 3 3 3 3 3 3 3 3 l Q.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ^.3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V.^+3 3 3 3 3 3 3 3 3 3 2 ; T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( y.1 3 3 3 3 3 3 3 3 3 3 } U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = 3 3 3 3 3 3 3 3 3 3 = . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.r.3 3 3 3 3 3 3 3 3 3 Y 7.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * 3 3 3 3 3 3 3 3 3 3 * . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h w.x 3 3 3 3 3 3 3 3 3 2 q.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F I.3 3 3 3 3 3 3 3 3 3 .( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > 3 3 3 3 3 3 3 3 3 3 > . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h & 3 3 3 3 3 3 3 3 3 3 c.V.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; 3 3 3 3 3 3 3 3 3 3 ; . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G 2 3 3 3 3 3 3 3 3 3 2 < ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 % . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z m 3 3 3 3 3 3 3 3 3 3 w @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % 3 3 3 3 3 3 3 3 3 3 '.. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _ o 3 3 3 3 3 3 3 3 3 3 2 , T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . =+3 3 3 3 3 3 3 3 3 3 _.. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( (.1 3 3 3 3 3 3 3 3 3 3 r.U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( ` 3 3 3 3 3 3 3 3 3 3 (.. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V.I.3 3 3 3 3 3 3 3 3 3 I : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e h.3 3 3 3 3 3 3 3 3 2 @.. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( #+4 3 3 3 3 3 3 3 3 3 4 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h v 4 3 3 3 3 3 3 3 3 3 4 #.. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V.^+3 3 3 3 3 3 3 3 3 ~.D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S.,.3 3 3 3 3 3 3 3 3 3 J /.. . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( <.N.,+G e+: f+;.3 3 3 3 3 3 3 3 9.W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h #.;.3 3 3 3 3 3 3 3 3 3 5.g . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O.S._+1.5 3 2 1 n 8+|.3 3 3 3 3 3 3 3 #+X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . =.:.3 3 3 3 3 3 3 3 3 3 4 @.h . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S S.g+3 3 3 3 3 3 3 3 3.(+3 3 3 3 3 3 k s.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( }.5 3 3 3 3 3 3 3 3 3 3 l e . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( t.3 3 3 3 3 3 3 3 3 3 l 0.o H H 0.v ] ].. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ } 3 3 3 3 3 3 3 3 3 3 3 8 ( . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R B.3 3 3 3 3 3 3 3 3 3 3 4 I., t./.g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T B 2 3 3 3 3 3 3 3 3 3 3 x |+. . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . z.c.3 3 3 3 3 3 3 3 3 3 3 3 3 2 ~.!.C.* > ; % - * * * * _.]+7.U T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2+h.3 3 3 3 3 3 3 3 3 3 3 1.T . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [+x 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 Y } ; Q.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.|.3 3 3 3 3 3 3 3 3 3 3 ~.s . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <.>.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ;.P.,+$.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1 3 3 3 3 3 3 3 3 3 3 2 ^.T . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.(.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ;.:.{+^ / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.L 3 3 3 3 3 3 3 3 3 3 3 L @ . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.h+w 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 I.' M.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ b ' '.* = * * * * - % ; > ; * = * * * * - % ; > ; * = * * * * - % ; > - 6.F..+{ E.( S . . . . . . . . . . . . . ,+4 3 3 3 3 3 3 3 3 3 3 x (.( . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $+7.6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 n , m.b+g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.a !.h.4 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 x n <+^.B - % 9 C f.7.Q ^ / . . T i.3 3 3 3 3 3 3 3 3 3 3 ,.8.. . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.-.4.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 ;.w |.R.; * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > = C %.D E F g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( f T.0.1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 5 !., Z.Q c h.3 3 3 3 3 3 3 3 3 3 I |+h . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i /+I.2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 1 m n o p * C %.D E F g h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 8.7.- &.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ;.3.3 3 3 3 3 3 3 3 3 3 3 [.g . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T |+5.m 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 1 I J &.L i+g.B * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * , ' v #.] $.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h 8.F.|.Y 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 l t S . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( V.2.!.x 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 4 3 ;.I c.K (+,.^.'.' v #.] $.+.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h F w.r.1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 % L.. . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( e @.v.&.4 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 j+k+l+m+m+l+k+j+3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 4 3 ;.J r.0.^.B * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > ; % - * * * * = * ; > B R.d.y H 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 !+S . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g F E D %.C - > % % - * * > g.} Y 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 n+o+p+q+r+r+s+t+u+n+3 3 3 3 3 3 3 3 3 3 3 3 3 v+w+x+y+y+x+w+v+3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Y E.. . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h E.s _.3.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 j+z+r+r+r+r+r+r+r+p+A+j+3 3 3 3 3 3 3 3 3 3 3 B+C+r+r+r+r+r+r+C+B+3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 v.h . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( R {+8+1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 w+r+r+r+r+r+r+r+r+r+D+E+3 3 3 3 3 F+G+H+I+I+J+K+r+r+r+r+r+r+r+r+L+v+3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 { . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.a ` ;.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 M+r+r+r+r+r+r+r+r+r+s+N+O+P+P+O+Q+R+C+S+T+T+U+T+r+r+r+r+r+r+r+r+y+V+3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 8 / . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i -.[.1.~.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 v+s+r+r+r+r+r+r+r+r+r+r+W+X+r+r+X+Y+U+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+Z+`+3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 L .B.= * * * * - % % > % * = * * * * - % % > % * = * * * * - % % > B.J.I.H x 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 L U . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +.$.u..+& a+Y 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 @r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+U+.@3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 h.= d ^ / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( _ t.a C % * - % k 9.6 5 2 3 3 3 3 3 3 3 3 3 3 3 m _++.. . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h g /.#.@.[._.'.* % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > B A d.y I 1 4 4 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 v++@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+@@#@3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Y J.*.$.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i @ v 8+m 2 3 3 3 3 3 3 3 I.! &+. . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( R e.P f.0 ; A d.y I 1 4 1 2 2 3 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 $@%@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+&@3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 l ; @ ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.,+i.| 5 2 Y >., *@=@. . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S ( R 8.d c *.@+< , * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * -@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+;@4 3 2 3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 I.; Q.T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . T U : V D W X h . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . >@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+,@ +9+~ %+e+' '.& ,.>.J ;.3 4 3 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 L * *.U T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '@)@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+!@~@. . . . . . . . . . . +.$.] #.v ' , % * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > % % - * * * * = * % > q R.z (+w ~.1 ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . h X M.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ^@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '@(@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@_@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+:@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |@1@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+2@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3@4@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7@8@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9@0@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a@b@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+:@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+2@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+:@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . :@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+2@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+:@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ~@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . f@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+g@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d@_@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+h@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i@j@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+(@k@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@l@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+m@n@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '@o@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+p@q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+s@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+!@t@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . q@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k@u@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+:@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . w@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y@p@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+2@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . z@u@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '@A@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B@C@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+:@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+E@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+F@7@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . :@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+G@9@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+b@a@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+^@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+H@|@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+J@K@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+L@M@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+_@N@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+!@P@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+!@Q@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R@4@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+t@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n@S@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+T@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k@U@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . V@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+2@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . :@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+:@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . }@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+2@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+}@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . :@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+/@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+]@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . W@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X@!@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+!@W@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Y@Z@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+_@X@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {@j@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+S@Y@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '@`@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+I@{@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+ #5@'@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#4@r+r+r+r+r+r+r+r+p@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+_@+#@#T@5@##. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n@$#r+r+r+r+r+r+r+r+%#r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+U@@{@'@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k@P@%#r+r+r+r+r+r+*#1@r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+r+6@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; crossfire-client-1.70.0/pixmaps/32x32.png0000644000014500000120000000207511731277006014736 00000000000000‰PNG  IHDR üí£IDATµÁoH”wÀñïïwÏ÷7Óte³¥­YÌŒtP+¥-¢?Ã#p/A½œô¢AA±V#(hÐ^ zµ7[ЋÌfÛ"ÖUk1ÖL F¶ðl–z©÷Ççyîž;ï7½Íq§¦?Ô\<¼hkkS³&™‹pw'Ðvñ"³&±³,kÕòå[673©ë÷ÎúºÚ];·º84m×Ö­oUW߸vI_=[_WWW]};$—²Kš ²¶íÜ &…: kes‰ÅȺ|ႚtòÄ ².··«v.g^‡/ÿìúC72¡±ê[U²ŒXðÐÖÚª”ÞÛ±£iÿþ„aµ«W78p÷î]+™$‡†bÜ(ô¸eð ´Ì­¯(7t2a,I&iBÊîÇõxü“C‡Nž>}ûÖ­x<Þûôi¸¿ß0 ì4¦£Lè‘cN‘ô‘V¨bÆ !”R1'Lsp`À4 S×3J‘Gc&$¦#þ…Èb ’y&™g’y&™g’y&™‰  (Æ©IäP㥰ӘBø¤æ……ÒáÎ"Æœ…¤¼Àë,\Tâtºü…E~ŸÏãõ+% <†•Jknì4ìNè…_ÿòÀ£çÏŒt‘äÑ%¡¹Dß#àá­+Ú³ûfÂèözüžP÷“L:~¡'ÉX8äphäа3n`OãϺiU¼VìÐ\o,/wdÆy—ü…ÃÃú¾ëœø©€pMÊÒi]CR+ôôFÍ„‹¸Å ð»Ý)rhØE†_k6|ØÛÓ³¸¼Üåv¯Z·n VTT”.YÜêáÓS•oo/i|T§ë ¤©´v>ÐK_ ;,³($‡Ä®lÙ²c‡o9–J–•H£ñxTEbÑ‘èðP,ÆñT”±8¤¢¤ŒLzbd]æŽöüÚÔô19$y‡†§Ó !Èÿ`’ K€`‚gFF$v’<‚ ŠÿG`'É“L&)%s¡”4Á4 ì$yVUU5lÞÜ I)™--•ê«ß´~Ë;[°ÓÈs¤¥åHK‹Gˆõ ‚YZèàêÍ`+Ž¥ØI¦±hÁC×QJJÉKHˆH‡GÈ#™Æ™sç¾8s¦ëÎßÏLœžÁ»›×•.©&dŸˆD"^ŸO)ÅÔˆdz×£LEc›6nü®£ãÒùó¡îîÊ•+UÿQ   @†TêÈௗ1%õ2€æpô G£w‚A`žoꯪµ ­P3Ò˜‘¡ëM»w룣Ç-.)ùhï^ °výíÏ?Ãò•WÕêýÌLÍÎ÷íí7¯_ßT[+™ ú~»wåk¥ÒêePsñfM— jÖþA‹»¢`IEND®B`‚crossfire-client-1.70.0/pixmaps/question.sdl0000644000014500000120000000101111731277006016007 00000000000000/* This is a modified version of the question.111, but adjusted * so that it loads properly with SDL */ static unsigned int question_sdl[] = { 0x00000000,0x00000000,0x0000f800, 0x0000fe03,0x0000ff07,0x0080030e, 0x00c0011c,0x00c0011c,0x00c0011c, 0x00c0011c,0x00c0011c,0x0080030e, 0x00800300,0x00000e00,0x00001e00, 0x00007c00,0x00007000,0x00007000, 0x00000000,0x00000000,0x00000000, 0x00007000,0x00007000,0x00007000, 0x00000000,0x00000000,0x00000000, 0x00000000,0x00000000,0x00000000, 0x00000000,0x00000000}; crossfire-client-1.70.0/pixmaps/nonmag.xpm0000644000014500000120000000101211731277006015442 00000000000000/* XPM */ static const char *const nonmag_xpm[] = { "20 16 5 1", " c None", ". c #FFFFFF", "+ c #7F7F7F", "@ c #404040", "# c #000000", " ", " ", " ", " ", " ", " .+ ", " .+ ", " ...........@+#.# ", " ...+.+.+.+.+.#+... ", " @@@@@@@@@@@@+#.# ", " .+ ", " .+ ", " ", " ", " ", " "}; crossfire-client-1.70.0/pixmaps/cursed.xpm0000644000014500000120000000040411731277006015454 00000000000000/* XPM */ static const char *const cursed_xpm[] = { "24 6 2 1", " c None", ". c #000000", " ... . . .. ... ... ", ". . . . . . . . ", ". . . .. .. ... ", ". . . . . . . . ", " ... .. . . ... ... ", " "}; crossfire-client-1.70.0/pixmaps/crossfiretitle.xpm0000644000014500000120000007416611731277006017250 00000000000000/* XPM */ static const char *const crossfiretitle_xpm[] = { "346 87 21 1", " c None", ". c #FFFFFF", "+ c #339966", "@ c #00CC00", "# c #FF6666", "$ c #666600", "% c #FF9900", "& c #CC0033", "* c #FF3300", "= c #000000", "- c #CC9933", "; c #FFCC66", "> c #660000", ", c #333366", "' c #FFFF00", ") c #FFFF99", "! c #CCCC66", "~ c #CCCCCC", "{ c #999999", "] c #FFFF66", "^ c #0099CC", ".................................................................................+........................................................................................................................................................................................................................................................................", "............................................................@@@.............+.....+.......................................................................................................................................................................................................................................................................", "..................................................@@@@@@@@@@#@...............+.....+......................................................................................................................................................................................................................................................................", "...........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@......@@@@@@@@@.+.....+.....................................................................................................................................................................................................................................................................", ".............................@@#@@@@#@@@#@@@@#@@@@#########@#@.@@@@@@#@@@#@#@..+$....++...................................................................................................................................................................................................................................................................", "...............................@@#######@####@######@##@@###@#@#############@...++....$+............................................................%.....................................................................................................................................................................................................", ".................................@@@########################@#@##@#@@#@#@@##@....+$+...++........................................................%..%.....................................................................................................................................................................................................", "....................................@@###@@@#@#@#@@#@#@@##@##@#@############@.....+&***+&*.......................................................%..%...............................................................................................................................................................................==.===................", "......................................@@######################@#@##@#@#@@##@@.....**&&&$&&*......................................................%%.-%.......................................................................................................................................................===....................==.==.==..............", "........................................@@@###@@@#@@##@@#@#@##@#@##########@.......***&&$&$*.....................................................-%..%%.....................................................................................................................................................===.=.&&..............==.=.=.====.............", "...........................................@@##################@#@###@#@@##@.......****&&&&&*.....................................................%%.-%%....=..............................................................................................................................................===...=;&..............===...=====.............", ".............................................@@@###@@#@#@##@#@##@#@########@.......*&****&&&*.....................................................-%%.-%%+.++.==..........++..............................................................................................................................===.....=.................**.**.................", "................................................@@##############@#@##@#@##@@....*.**&**@@@>&&*.....................................................-%%.-%+$+$+=..==........++,+++++++++++..................................................................................................................=.=.....=..............=.**.**.===.............", "..................................................@@####@@#@@#@##@#@######@.....***&>&**@'@&>*......................................................-%++*+++++,++=........,+++,+,+,+,+,+,++++...............................................................................................................=&=.....=...=.........===========.........=...", "...................................................&@@@###########@#@#@##@*..*.**>&&*&&**@**&&*......................................................$+**$+$+++,++==.....++,++=+=+=+=+=+=,+$+==.............................................................................................................*))=.....=..==........===========........==...", "................................................*..&*&&@@###@@#@##@#@####@&..**&&&&&&***&*&**&>*....................................................++++++++$+++,++==..=+$++=+,++$++,+++++=++..=...........................................................................................................&));&=...=...===........==...====........===...", "............................................*...****&****@@########@#@##@*&**&&>&*&&&****&*..*&&*...............................................+++$+,+$+$+=+==++,+....=+++,++,+++,+++,+,+,+=+.......!!!!!!!!!~~..........................................................................................$)$)&=.=.=.....====......=.=.=.===......====....", "........................................*...****&*&&>&&&&&&@@###@@##@#@@***&&&&*&&&&**..**&*..*&>*..............................................=+,+++++++,+=++=+++,...=..=++++,=+=+=+=++++,++,...!-$--$------$-$--!!~.............................{-~...................................................&)))$..===......=======...=.=.=.==....=======....", ".................................~!--~..****&*&>&>&*>&>*&*&&&@@######@#@&&&&&*&&&&&**....**&*..*&*..............................................+++,+$...++=..,+=+++=.....,+,+=+++,++,+=,+=++=+.!$------$--$-$----------!!..............!.........!---..................................................$)$)&.............========{-------{,=========.....", "..............................!!------%*&*&&>&&*&&&&&&&&*&&$&&&@###@##@**&&*&&&*&***......**&*..*...............................................,++++....$==..+==+,+==.....+++,+,++$+=++++,+,++-----------------------------!~.......~!--!~......!-----~...............................................&)))$..............========={{{{{{{===========.....", ".........................~~!!----------$&>&*&>&>&$*&*&*&*&**&&&&&&&&&&&&&>&>&&&&***........**&*..................................................+,+....+=....++=+++.........+++=+=++,+=.=++.=-------!;;;;;;!;!----------------!!!--------!.....!-------.............................................{*&]!&...............,==========================.....", "...............!-------------------------$&>&&&&&*&$&&&&*&&&&*&***&*&&&*&&&*&&*&**&*........***..................................................+.....+=.....,+,+,+=........$+=+$++==+...+,.!---!;];];];];];;;];;;;;----------------------~..!---!;!!---~..........................................{{{)&*..............,{{,=============**==========...**", "..............!---!--!--!-!-!!!-!;]]]!-!---&&&&&&*&*&&&&&**&&$&&&&*&&*&*&*&*&*&**>&&**.............................................................,..+=.....+=+=+++==........$++$+=..=+..=+!--!];]]])])])])]])]))))]];];;!!!-!-!!--!--;!!--!!---;]])!!!--!........................................,{,,{&...............,,{,,============*{*************,*", ".............!-{!!-!-!!!-!-!!!;]]]]);;!!-----**&&*&*&*&&$&&&&&$&**&****&>&&**&**&&&&&>**...........................................................++$+......+,=+$+$.=........+++=+=...=+..$-{;]])))];!];!];);;);];]))])]];];!-!-!!!!]]];!-!--!-;])])!!!-!-!~.....................................{,,,,{{{............,{,,,$,============*{{{{{{{{{{{{{{{*", "............!!!!!!!!!!-!!;]]]]]])))]));!!!!!--&&&**&&&*&*&**&***&&&&&**&*&$&******&*&&&&*.............................................................=.....+++=++++..........,+=,++==..=.!!!];]));)]);)])])])])]!);])])]))])];]]]]]]]]))$-!!!!;]]))]))!!-!-!~...................................&+{,,{{,{,...........{,{,,,,=========%==*{{{{{=====,{,{,*", "...........!!-]]]]]]]]]]]]]))))))])])]));!!-!!!-&**$*&&$&&$*&>&&&&*&*&**&&&&$*....*****&&**.................................................................,==+$+$+=....=....+=+++,=+..=!-!;])))]);))]))]))])])]);));)])]))])))])))))))!$!!!]]])))])]);;!!!-!.~................................&$&+,{{,,{,{,{.......,{,,,,,,$===========*{{{{=.....={,{,*", "..........;!!;])))))))))))))))])])))));))];;!-!-!-**&$&>&*&&*&*&*&*&*&&**$&&&*.......***&&&****............................................................+++=++++==...==...,++$++=.....!!!;;))])))]))])))]))))))))])))))])))]))))))])]-$!!;]))))]))))))];;!!!~~.~.............................&)&&{+{{{,,{,,,{,...{,{,,,,{,{========%==*{{{=.......={,{*", ".........!!!]])))))))!!!-!!;))))))])))))))];;;!!!!-*&*&&$&$&***&*&*&***&*&*$&&*.........**&&&&&*...........................................................,==+,+,+..=..++++.++,++=.....!!!;]]))))]))))));)))])])]))))]);)))])))])]))))!$$!!;!));)))]))]);!!!!!!................................*!)&&.,{,$,,,,,,${{{+,$,,,,{,{=======%%%=*{{{=.==.==.=,{,*", ".........;!;]]))))));-,===$;!)))))))))))))))]];;!;!-*>&*&&**&*&*&*&*&*****&&*&*...........*&***&*..........................................................++,+++++=.===,+$+,+++$+=..==.;!!;!)))))))))!)!)!)))))))))))))))))))))))))));!={!!-$$!!)))))))!-=$-!;~~~~.~............................&*&....{{{,,$,,,{,{,$,,,{,{,..=====%===%*{{{=.==.==.={,{*", "........!!!])).)))))!=$!!!$$!;))))))))))))))))]];;!;-&*&&&&&>**&*&******&**&*&>*...........**..*&*........................................................+===+$+$+++++++++++,++++=+++.~!;!];))))))!;!!$---!!!))))))))))))))))))))))))]$$;!;!!$$!]))))!;$,$!;!~~..~......................................,{,,{,$,$,,{,,,,{,{...=%%%%=====*{{{=.......=,{,*", ".......!;;])))))))))-$;;!;!-${!)))))))))))).)).)]]];!-&**&$&&********&&**&**&&&*...........**...**.......................................................,+++=+++==,+,=,+,+,++,+,+,+,+=,!;!;!)))))]-$====,====-!;!)))))))))))))))))));$=-!;!!;!-${!)))],=-;!;~~~~.~~.~.....................................{{{,,{,$,{$,{,,{,...======***=*{{{{==.=.==,{,{*", "......);!])).)))))))$$!;!;!;-$$]))))))).)))))))))!-!;;-&&*&&*&*****&&&&&**&***&>**..........**...*........................................!.......--......+$+=+$=+++++++=++!+++++++++++$];!!!)))!!,=$-!;!;!;;!$=,$!!;))))).))).))))!;$={]!!~!;!;-$!))!$=!!;!!~~~~~.~..~.....................................{{{{{,$,{,,{,{.....=%=%=*===**{{{{{=...={,{,{*", "......;];])).).).))],-];]!]!;!$$!))).)))).).).);!,$];!*&*$&*;-*..***&*>&&*-;.***&&**.........**.......);!..............................~);!;!....--+-....+===++=+$+,=,+++!;!;!++,+,+,+++!;;!{));-=$!!;!]!;])))]!-$==,-!!;!))))))));!=,-!;!~{~!];]-$!;$,!!]!!{!{~~~~~~.;!.............;........................,{{!!;{{,{,......=%%%=*===**{{{{{====={{{{,*", ".....!]!])).)))))))-$;;!!~!;];!-$!)))).)))))))!-=$!;;~&&&&-!;!%...***&&&&*]!]..***&&**.........*.....!;];;!).........................)]!;];]!;)....,+$...+$++,=+++++++!;]!]!];!{+++++,++!]!;-!!$=-!;]!];])))).!-]!;!$,==$$-{;!;!;-,=$!;]{{{{~{!;!;-$$=!]!;~{{!{!~~~.~]!])...........!;]........................;!];]!;{........=====**=**=*+{+{+={={{{{{*.", ".....!];]).)).).)))$$!];!!{!!]!;-,$)))).).)))!,,-;]!!~~*&#;];]!)...**&*&-;!;!;...***&&****........);]!;]!]!;!;.....................;];;];;];]!;!.--+++--.+++++=,+,+{!!;];!];!];]!{+++,+$+!];!$$=!]!];!]))))..],!;]!]!];!-$,===$===$!!;]!{{{{{{~!)]!!-!!;!!{{{{!{~~~!];!;]).........;];;;....................)!;]!;!];];........=%=%==*=*==*{+{+{+{{{{{{{*.", "....;]!)]).))))).);,!;];~{~{!;;];!$$]))))))!-=$-];!!{~~~;];]!];!)...**&*;]]]]!]....***&&&>**....)!;!];]];];]!]!;)................;!];];]]))]];];];!!+-!++$=,+++=++!]];];]]))]]!];]!!-+++++!!!!-!];]!]])))..))!,]!;]!]!];!;;];!!-;;;];]{+{{{{{!!;];;])]];]!{{!{{!~~;]!]];];).......!]];];].................)!;]!];]]];]!;)......=%%%%==*===*+{+.{+{+{.,{,*.", "....!];))..).).).)]$!;];{{{!!]])))]{$!).))!$=$!;];{{{!!;]!])))];!)...*#];)))]]!;.....**&**&&#)];]]]!])))))]];]!]!;)............]!];];])))).))];];];];]+++=+===++!];!]!]]))).)])]!];]!]]++++!;];]!;);;))...)))!$]!]!;;]!]];];];];];];]{{{{{{{{];]!]]))))];]!{{!{!!;];])))];;).....];)))]];;...............;]];]!))))))]]]!;.....===========*+{..+{+{+..,{*.", "...];]]]).)).))))){$]!]!{{!!;]))).))).));!=$!]];!{{{{];];))).)]];]!..!]!])).!];]!)....**..*%;];];!]))))..)))]];];];).........)!;]!])))))...))))]];];];]+++=++,!];];]]))))....))])]!];]!]{+++!;];);]!))).)).))!$];]!{{!!;]])];]!];]!;{,{{{{{!]!];))))..);]];!{{!;];]))).)]]!])..!;!])).!]];]~...........;];];)])))...))];]];)...=%=%==***==*{+{{.,{,.{+{+*.", "...;];))).).)..).)$-;];!{{];];]..).)..)]$=$!]!]{{{{{;];])))...)]];])];])))..)!);];!...**..)]!]!]]))))..).)..)))])]!]!.......);]];))))...).).).)))))]!];]!+$..!;];]))))....)).).))))]!];]]++++!;.);]]))..).).))$)];;!;];];)))))]!]!{+,{,{+{{];]]))))..).!!]]]]{);];))))..);]]!);]])))..)!)]!]!.........)];]]))))....).))]);];!..=%%%=*===*=*{+{+{.+.{+{+{*.", "..)!]!)).).))).)))${];){{{;])]!)).).)]{=={]];!{,,+{;]]))))..).)!;)];]])))..)))]]]];]~..**);];)))))....).)).)..)))]);])~....)];)))))...).).).).).))))))]]!...)];])))....))).)).).))))))))]]{++++=;]!)].)).)).))-];])]]!);))..)])];]{{{{{{{!])))))...)).))!];;];]!))))..).)!!]];];)))..).];]];];.......;;]))))....))).)..)])]]])~=====*===*==*{{{{{.,{,{,*..", "..])]]]).).).)).))${]!]{{{!;];-!))));-=$!];]!{,{{{]!])))...))).){];];])).).).)))])]]!...#]])))))....).)).).)))..))]];]).~.)];])))..))).)))))).)).).))));];~)!]))))..)).).).).))).)..))));];+$,+{];]))..)).).).!!;];;];]])).)..!]);]{{{{{{];)))....).)).)!{])!]])))....)).)!)];]]))..).).)])]!]!.~..~]]!)))....))).))))).)])];];$====**=**==*{{{{.{.,{,{*..", "..!]!);.))))).))))=!];]{{{{!]!!${;]!,=-;]!!{,{,+{!;)))..))).)))))!]))))..)))).)))])];]~);!))))..))))))).)))).))).))])!]!.);])))..)!$-))).).))).)))...){-]!];])))..)!$-))))))).).))))..){-];]++$];]);)))).)))).)!)]];)])))..))))!]!]!{{{!];];!.)))))).))))$;];)))..))))))))!!])))).))))).))))]];]~..!];))).);))).)).).))).))]]!]!,====***===*{{..{,{..+{*..", "..];])!.)).))).))]$;];;{{{{{!!]-$=$=$!!];!>{+{,{;];]!))).)))).)))-)))).))).))))).))];]!;]])).).)).)).)))).))).))).));];])];])).)))$==$])))).))).))))]!={]!]!])).)))$==$])).)))))).)))]!={]!!+,+!];]!).)))).))))))))))))..)).)))!!];;!{{{!];!$$))).))).))]$!]!]!))).)).).)))!))))..)).))).))));]];~];]))).!=,!)))))))).)))).))]];!$==========*{{.,{,.{+*...", ".!!;!])))))))))))!$;!]!,{{{{{!;!!!{!!;]!->>>>{{,{!;!-$!)))))))))))))..))))))).))))){!;];!])))!;])))))))))))))))))))));];!];)).))))-{!$,-))))))))))))!,$;;!];))).)))-{!$,-])))))))))))!$$;!;+=$+;!]]!))))))))))))!]))...))))))).;$;];!{{{{!;]!-!)))))))))!$;!;!-$!)))))))))))))..)))))))))).)){!;]!;])).)]$$$,$;))))))))).))))]];]!$=========*{{{{{{{{{*...", ".!]!;!).)))))))))!$!;!!,,{{{{~];!;!]!;!~{{>>$,,@={;!!-$)))))))))).).))))))))))))]!$=!;];]]))!==,-!;!)))))))))))))))))!!];!]]).))))!!;!-=$!;)))))))))!,!;];!]]))))))!!;;-,$!!)))))))))!=!;]!,,+$];!;!)))))))))))),=,-;))))))))))]$;!;]{~{~!;;!;!)))))))))-$]!]!!-$))))))))))).)))))))))))))]!$=!!;!]])).)]=-;!$,!))))))))))))))!!;!!$========**{{{{{{{**...", ".;!;]!)))))))))))--!]!!+{{{{~~~!;];!;!~~{~{{,,@@@$!;!;!!))))))))))];!;!))))))))!;$=!!;!!]));=$-$,=,$-!)))))))))))))))){;!]]))))))))!;];!$=,-!!;!)));$$;!!;]]))))))))!];!!$=,-!!)!)));$$;!;$,$$+!;!;!))))))))))))!!!$$!))))))))!!$!;!!~{~~!!];!]))))))))!{$;!;!;!!!))))))))))];!;!))))))))!;$={;!]!]))))!-$!;!!-=!])))))))))))!!-!;!!,=====,,,*{{{{{{{*....", ".;!!]!)))))))))))!$!;!!,{{{{{~~~!;!!!~~~~{~{{,$,$,!!;!;!)))))))));-$,$,$-;!)))]!$,!;!!;]]))-,!;!;!-$==$!!!))))))))))))!!;!!)))))))))];];!!-,=,$-!!)]$-!;!!;!)))))))));]]!!!-,==$-!!);$-!!!$~~,+;!!!{)))))))))))))-;!$$!!))))));$$];!!~{~~;!;!!!))))))));--!;];!!;!)))))))));{$,$=$-;!)))]!$,!!;!!]]).))]$-!!;!;-${!))))))))!!$=$;!!,,===,$,$,**,{,{,**....", "~!;!;!))))))))));{-!!;{{,{{{!~~~.~.~~~~~~{~{~{~{~~!!!;!;))))))))!$=,$$$$,=-])!;$=-!!;!!)].;$-!!!;!;!!-$==-;!))))))))));{!;!)))))))))))]];;!;!-$==$-!=!!;!;!!)))))))))))]];;!;!-$==$-!,!;!;{~~$,!;!!-))))))))))))){!!!$$!])))]!-=-!!!~{~~~!!!;!;))))))))]$-!!!!;!!;))))))))!$==$$$$=,-])!;$=-;!!;;])))));$-;!!;!!-$-])))))!!-=,-!!!,,,,,{{{,{,,**{,{**.....", ".!!!;!))])););))]{$!!!!{+{{{~~~~~.~..~~~!!!!!!~~~~!;!!!!));));))]$-!!;!!!-$-];-,-;!!;!];))!$-!;!!!!;!!!!-,=$!;])););)))!!!-)])]))]))))))]]];;!;!!-=$$!!!!!;-;);))]));))))]]];;!;!!-=$$!!!!{{~,$$!;!--;!))]));)]));-;!!-$!;);!-=$!;!{{~{~~!;!!!!);))])));$-!;!!;!!!)))]);))]$-!!;!!!-$-];-,-!!!!!];))]))],!!;!!!!!-$!)])]]!==$!!;-,,,,,,,{,,,,,,**,**......", ".!;!!!)]))]))););!$!;!!+{{{{~~~.~.~.~~~!!;!!!!!~~~!!!;!;)));)););$-!!!!;!;]]!!=-!!!!!!];));$-!!!)!!!!;!!!!-$,-;]))));)]!$;-!)))]))])])])))]]]]];!!!!-;!!!!!-!));))]))])])))]]]]];!!!!-!;{{{{$,$=!!!-$;)]))])))])))-!!!!-!;!-,=-!!!{{{~{~~!!!;!;))]))]))!$-!!!!!!;!)])!))])!--;!!!!!;]]!!=$!;!!!!];)))])!$!!!!;!;!]]]);];$=$-!!!-,$,,,,,,{,$,$,$,***.......", ".-!!!!));););))])-$!!!!,+{{{~~~~~..~.!;!!!!;!!-!~.!!!!!!);));)]))$-;!!!!]]))],$!!!!!!!]!));$;!!!~~~!!!-!#!!!-$=!!!])!));$!--!;);)]))]))]))))))]]]];!!!!-;!!--];)]))]!])))))))))]]]]!;!!!!${$,,$~~!!!--!)])])]);););-;!;--!$=$-!!!{{{{~{~~!!!!!!;))])])]!$!!!;!!!!!))])])]))$-!!!%!]]))]$$!!!!!!;]))])]);$;!!!!!;]])))!-==-!!;!-==,,,,,,.,+{${{,${.........", "~!!-!-)])]);)!);)!$!!!-{{{{~~~~.....!!-!!!!!!!!!!~!-!-!!)]!]);)!]$-!-!!;]));-,-!!!!!!;!]);]--!-!!~~~~!{!!!!!!--,-;);)])]-!!-!!)])])]);););)])))))]];;!!!!-!-$!!););)])!];])]);))))]];;!!!!$,$$=~~!-!--!;)]););)])]!-!-!-$=$-!!!!{{{{{{~{~!!!!!;)])])]!]!$!!!!!!!!;]););)]);$-!-!!;]));-,-!!!!!!;!)])););--!-!;]]]));!$=$-!!-!$,,===,,,,~,{,$,,,,{.........", ".!!!--])])]);]);]!$-!!!,{{{{~~~~~..~-!!;]]]];;!!!!;!!!-!);])])])]$-!!!!];)]!$$!!!{!!!;!;);){-!!-!~~{~~!{{!!!!!!-$-!;);]!$---$!;);)]!)];)];);]);];))]];;!!!!!-$!;);]!])])])]!)!);];))]];;!!!{={~~~~!!!--;)];)]!]!)])!-!!!!!-!-!!{{{{{{{{~~!!!-!!)!)])])]!$!!-!!-!!!)!);])]]!$-!!-!];])!$$!!-{!-!;!)]!];);--!!;]])))!-=$--!!!{$==,,,=,,,~.,{,,,,,,{.........", ".!--!-;];];])];);!$-!!!{,{{~~~~...!!!;;]])))];;!-!!!-!!;]!];];];!$--!-;]])!-,-!-!{!-!!!;];];-!!-!!~~{~{~!{{!!-!--$!;];)!$-!--$-!];;);])];);];])])];)])!;!!----$-!];]!]!;];);];])]!];)]]!;!-!{{~~~~!-!!-!;])];])];!);!---!!-!-!{{{{===~~!~!-!!!!];];]!])!$-!-!!!!!!];]!];])!$--!!;]])!-,--!!!!!!!;;););])!-;]]])]!-==$-!!-!{,,,=,==$,$,~~~,{,${,{{.........", ".!!!--!!);];];];];$!!-!{{{{{~~~~.~-!!;]]);];]]!-!--!-!-!););])]]!$-!-!;;];!-$!!!{{!!--!)];);!-!--!{~~~{~{~{~{!-!--$!];]!$-----$-!!!];];!]!]!];];]!]!;]]!!!!!--$$$!!)];];]!]!];];];];!);]!!!--{~~~~~-----!]!]!]!];]!]!-!-!!!-{{{{{====={~~!!!--!]!]!);];!$-!!-!-!-!)];])];]!$-!-!;;];;-$!-!{{!-!-!];];];;!-;]]);-$=$-!--!{{{,,,==,,,,,~~~.,{,,,,,{.........", ".!----!;;!];;!]!;!-----+{{{~~~~~.-!--!;];];!];]--!-!--!!;];;]!;;!----!!];]!$$---{{--!-!!]!];]!-!-!-!!{~!~~{~{~{----!;!]!---!---$$-!!;;];;];;!]!;];;]!;];-!--!-!-$$--!!;];;];!];!];;]]!];]-!-!-!~~~~!----!;;;];!]!];]!-----{{{{{{{={{==~~~!---!!;;;]!;];!$--!----!!;];!];!]!$---!!];]!$$---{!-!-!!;];;]!];]]);!-=,$---!{{{{===,=,,,,,{~~..+,$$$,$+.........", "..!----];!]!];!];!--!--{{{{{~~~~.~---$$!!;]!;!]!-------!;];!]!]!;$----!]!;!$--!-!{!---!;;;!;!]-!-!---{{{~~~~~~{!----!;;!$-------$$=$-!!!;];];;];;];!];!]!--------$$=$-!!!;];;];;!]!;;!]!;!-----~~~~!!--$!!];!];;!;!;;--!--{{{{{{{={{==~~~!!---!!]!;]!;;!$----!---!;!];!];;!$-!--!];;!$--!-{{----!;!]!;]!;];!-$=$-----!{{{{=,,=,,,,,$~~~~~.{{,,===.........", "..{---$!;;!;!;]!;;-$----{{{~~~~...!---$!!;!;];!!$------!;!;;;!;;!$---!;;!]!------{-----!]!];!;;!-------!!{~~~~~-----;!;!$----------$=,$!!!;;!;;!;;]!;!;;;-----------$==$!-!;!;];!;!]!;;];!-----!~~~~-----;;!;!]!];];!-$----{{{{{{{===~~~~!----!;;];!]!]-$--------!];!;]!;]!$---!!;!];------!-----;!;;!;;];!-==-----!{{{{{=,{,=,,,$,~~~~...,+$=~~~=........", "..!-----;!;]!;!;];!$----+{{{~~~.~..----$!;!;!;;-$------!]!]!];];!$----!;;!;------------;!;!;]!;;;!!--------{!!~-----]!;!$------------$==$--!!]!]!;!;]!]!;-------------$$=$--!;!;];!;]!;!];-----!~~~~-----;!];!;;!;!];!$----,{{{===^^^====!----!;;!;;;!;!$--------!;];!;!;;!$$---!!;!;------------;!]!]!;!;;;---------{!{!$-{$=,$,,,~~~~~..{{,=!{~=........", "...----$!;!;!;]!;;!$----{{{~~~~~...!----!;!]!]!!$------!;!;!;!;;!$-----!;;!;-!;;--------;];!;!]!;;;-!---------------;!!-$----;;;!-------$$,$--!;!;]!;!;!]!$---;;;!!------$,=$--!!;;!;!;!;;!$----~~~.!----!;!;!]!;;;!;!$----{{==^^^^^=={{,$----!;];!]!;!!$--------!;;!;]!;!!$-----;!;!;-!!!!-----$!!;;!;]!;];!!--------------$$,,,,~~~.~....,,=~~!=........", "...!---$-!!;!;!;!;!-----{{{{~~~.~..!----!;!;;!;-$------!!;;!;!!;!$$----!;!;];!;;!-------!;];!;!;!;]!;!--------------;;-$$----!];];;!;!----$$,=$-!;!;;!;!;-$---!];;;;!;-----$$,$$!!!;!;];!;!$----~~~~!----!!;!;!;];!;!!$----==^==,^^^={{{,$----!!;;!;!;;!$--------!;!;!;!;;!$$----!;!;];;;;-------$!;!;!;!;!;;];!------------$$$,,,~.~.~.~..{{,={~=........", "....----$!;!;!;!;!;-$----{{{~~~~...!-----;!;!;!$$------!;!;!;;!;!$---$$!!;!;!]]!$-----$-!;!;!;!;!;!;;;;!------------]!-,------!;];];;;;!-----$$=-!!;!;!;!-$----!];];];;!!-----$$,$!;!;!;!!-$----{~~~!-----]!;;!;!;!;!-$----,=={~==^==+,,{$----!;!;!;!;!!$--------!;!;!;!;!!$---$$!!;!;!]]!-$-----$-!;!;!;!;!!!;;!!-----------$$$,~~.~......,,,===.........", "....~---$$!!;!;!;!;!$--$-{{{~~~~.~.!$---!];!;!!=$------!;!]!;!;!!$$---$$-!;!;!!-$$-----$-!;!;!;!;!;!!;;];!%!-------!;!$$-----!;!!!;!!;];;!-----$$-!!;!;!--$--!-;!!!!;!;];!;------$-!;!;!;--$---{{~-------!;!!;!;!;!;!-$---$={{{~=^^^={{+{$-----];!;!;!;!-$--------];!;!;!;!$$---$$-!!;!;--$$------$!!;!;!;!;;!;!;;;!;!;!;!%!--$-$.~.~.~....{$,${{.........", ".....!-$-$-!!;!;!;!;!------{{!~.!~!-----;;!!;-$$---$---!;!;!!;!;!$$-%--$$$-----$$-----$$$-!;!;!;!;!;!!;!];];;!%!-!!;!-=$-----!;!;!;!;!!;];;!------!;!;!;!$$---!;!;;!;!;!;;]!!------!;!;!;!$$-$-{{----$---;!;!;!;!;!;-$$---${{{{~==^=^=,{=!----!;!;!;!;!!-$--$----!;!;!;!;!!$---%-$$$-----$$$--{---$$!!;!;!;!!;!;!];;;;;;;;;!---${!~........,{,,,{.........", "......!--$$-!!;!!;!!;--%$---------$%---!]!;!!-=$-------!!;!;!!;!!$$-----$$=$,==$$--{{---$$!!;!!;!!;!;!!;!!!!];];;;!;-$$$%$---;]!;!;!;!;!;!;;!-----;!;!!!-$$---;]!!!;!!;!!!;;;!-----;!;!!--$$---{--$-%---!]!;!;!!;!!!!$$$--,,{{{~=^^^^={,=!$-$-!;!!;!!;!;-$%--$-$-!;!;!!;!;!$$-$---$$,$$==$$--{{!---$$!!;!!;!;!!;!;!!!;!]!!-$$$-$!~.~.~.....{$,${,.........", ".......{--$$$!!;!;!;!;----$---$-$%----!;;!;!-$$$-$-$%$--;!!;!;!;!$$--$$---$$$$$---!{~{---$$!!;!;!;!;!;!;!;;!!!;!;];!$$$-----!!;!!;!!;!!;!;!;;;!-;!]!!;--=$---!;!;;!;!;!;!;!!;!;!-;!]!!;!-=$--${$--$---!;;;!!;!;!!;!-$$----,{{{{~~====.==.!-----!;!;!;!;!-$-$------!!;!;!!;!$$-$-$---$$$$----{{!~{-$$$$!!;!;!!;!;!;!;!;!!--=$$--$~~.........+,$,${.........", "........!--$$$!!!;!;!;;!------------!;;];!!-$$---{-----!];!]!;!;!$$---$----------{{~{~!--$$$-!;!]!;];!;!;!;;;!;!!--$,$-----!!;!!;!;]!;;!]!;]!;]!;;;!!-$$$---!!;!!!]!;];!;!;!;!;]!;];!--$=$$--{----!;;;;]!];!]!;]!;!-,$---,,,{{{~======...!----!]!;];!;!;;$-------!]!;];;!;!$$---$----------{{{~{!{--$$$-!!];!]!;!;!]!;!-$=$$--{,~~~.~.~....,{,,{+.........", ".........!---$$-!!;]!;!]!;!-!----;;;;]]!!!-=$---{{{----!!;;!;]!;!$----{,--------{{====~{---$$--!;!;;];]!]!]!;!!-$$=$$--------$$--!-!;];!;!;;;!;]!!--$==$------$$---!!;;];]!];];!;!!--$=,$---,-----;];]];!;!;!;!;]!-$$---$,{{{{{~======...!----!;;!;]!];!!$-------!;;!;!]!;!-----{,--------{{{!~~~~{---$$-!!;!;;];]!;;!!$=$---$,~~~.~.......{$,$,{.........", "..........!---$$$-!!;];;;;];;;;;];;]];;!-$,$---{{{-----!;];]!;!]!-$---$={------=====>==={---$$=--!!;!;!;;!;!--$==$$---!{{--$$===,=,--!;!];];];!--$==$$------$$$==,=,--!;!;;!;;!;!-$==$$----,{,---$$-!!!]!];]!];!!!$$$--{,,,,{{{===~.===..----!;];]!;;!;;!$-------!]!];!];!;-$---{+{------{{{{{{{!~~!---$$$-!;];;!;!]!-$=----$,,~~~~.~.~....{$,${+.........", "........~..!----$=$--!!!!];]]])]]]]!!!--==$---{{{{----!];]!;];];;!$---$=================~!----$$,$--!!];]!--,=$------!~!{!--------$=,$-!!;]!!--$=$$------{---------$=,$-!;];]!--==$$------{,{{{---$$$-!!;!;];;!!$=$---$,,,{{{{~===.~===.!---!;];!;]!];];]-$-----!;];!];!];;!$----{{{{{!{{{!{~~!~~~~~!----$=$-!!];]!;-$=----$,,,~~~~.~......{{,$,{.........", "............!-----$=,$$$--!-!-!-!--$$,==$----{~~{{-----!--!------!$----============~===~~~!------$=,$$-!--==$-------{{~{~!!!---------$=$!!;;-==$--------,,{{----------$$$!!;!-,=$--------+{{,{{{----$=$$-!-----$=$---{,,,,,{{{{==~~..===!----!!-!---!---!-$------!-!----!--!$----{{{{{{~!{!{!{~{~~~~~!-----$=$$!!!!-$$----,,,,,,~~~~.~.~...+{,{,,.........", "..........~.~!-!------$,===,$,=$=====$-----!!~{{{{{!--$,=========,$-!{=============~~~~~~~~~!--!----$$=$$,$----!-!-!{{!{!{{!!!-!-!-----$$--$=$----!--!{+{,{{!-!--!------$$--$=$---!-!-!{,{,{,{{{{-!----$======,$---!+,,,,{{{{!===.~..===.!---$============$-!---$===========$---+{{{{{{~!~~~~~!~~~~~~~!!---!-$$==$$=$----=,,=,,,,~.~.~.....,,,,{{.........", "..............~!!-!--------$-$$$$-!-!--!-!-~~~{{!{{{!--!-!!-!-!---!!-==============~~~~~.~~~~!!-!!!----$$----!-!!{{{{{{~{~!{!{!!-!-!!!---$$=$!-!!!-{{{{{,{+{{{{!{!!!!!!---$$=$-!-!!-{{{{+{+{{{{{{~!-!----!-!---!!!-{,,,,,,{{{{==~~.~..==..!-!---!!!!!-!-!-!-!{-!!-!!-!--!---!-!{{{{{{~{~~!{~~~~~~~~~.~~~!!!-!----$$----$=,==,=,,,~~~.~.~..{$,${,,.........", ".............~~~!-!!!!!!-!-!-!-!!--!-!--!!~~{~~{{{{{!-!-!!-!-!!!!-!!====={{!~~======~~~~.~.~.~~!-!!!!!-!--!-!{{{{{{{{~{{~~~~~~~~~~!{!!!!-----!-!!{{{{{{{{{{{{{{{{~{!!!!!!----!!-!-{{{{{{{{{{{{{{{~!!!!!!!-!-!-!--!{{,+{+{{{{{~==~.....===..!-!!!!--!-!--!!-!,{{!!-!!!-!-!-!-!-+{{{{{{~~~~~~~~~~~~~~.~~~~~!!!!!!!-!-!!!$,===,=,,$,~~~.~....,,,,$,,{........", "...............~~~!!-!!-!-!-!-!-!!-!-!!!~~~~!~{~{~{{~{!!-!-!-!!!!!!{{==={{{{~~~=====~.~~~.~..~~~~{!!-!-!!!!{{{{{{{{{{{~{!~{~~~~~~~~~~!-!-!-!-!{{+{+{{{{+{{{{{{~{~{~{!{!!!-!-!-!!{{+{+{{{{{{{{{{!{~~~!!-!!!!!-!-!!{{{{,{{,{{{{~==~~.~...==...!!-!!!!!-!-!-!-{{{{{!!-!-!-!!!-!-{{{{{{{{{~~~~~~~~~~.~.~....~~~!!!!!!!!!!$==,,,,,,,,~~~~~.~...{,,,,,{,,.......", "..............~.~~~~~{!{!!!!!!!!!!!!!!~~~~~{~{{~{~!~~~!!!!!!!-!!!!{{{=={{~~~~~~==~.==.~..~.~.~.~~~~~{!-!-!{{{{{{{{{{{{~{~~~~~~~~~~~~~~~!!-!!!{{{{{{{{{{{{{{{~{~!~~~~~~~{!-!-!-{{{{{{{{{{{{{{{~~~~~~~~~~!!-!!!!!{{{{{,{{{{{{~~===.......==....!-!-!-!!!!-!!{{{{{{{-!-!!-!-!-!{{{{{{{~~~~~~~.~~.~.~.~.~..~.~~~~{!!!!!-$=,,,,,,,{~{~~~.~.....,{,{,,,${.......", ".................~~~~~~{~{{{{{{{!~{~~~~~~~~~~~~!{~~~~~~~~~~~~~~~{{{{=={{{{{~~~~==~.===.~......~.~~~~~~{{{{{{{{{{{{{{{{{~{~~~~~.~.~~~~~~!{!!!{{{{{{{{{{{{{{{~{~~~~~~~~~~~~{!-!{{{{{{{{{{{{{{~{~{~~~~~...~.~~~~~~{{{{{{{{{{{{{~~~~~...............~.~~~~~{{{{{{{{{{~~~~~~~{~{{{{{{{{{~{~~~.~.~.~..~.......~.~~~~~~{!{,$,,,,{{{{{~~~~~.~.~.....,{{{{{{.......", "..............~.~.~~~~~~~{~{!{!{!~~~~~~~~~~~!~~~~~~~~~~.~.~~~~~{~{{{==={~~~~~..===.~===....~.~.~.~~~~!~{~{{{{{{{{{{~{~~~~~~~.~.~.~.~~~~~~{!{{{{{{{{{{{~{~~{~~~~~~~~~~~~~~~~!{{{{{{{{{{{{!{~~~~~~~~.~.~..~.~~~~~{~{{{{{{{{~~~~~..~................~.~~~~{~{{{{{{~~!~~~~~~~{~{{{{{{~!~~~~.~.~..~....~........~~~~~~~{{{{{{{{{{!{~~~~~.~.....................", "....................~~~~~~~~!~~~~!{~~~~~~~~~~~~~~~~~~~.~.~..~~~~~~~~{~{~~~~~~~.~...................~~~~~~{~{{{{{~{~{~{~~~~.~~.~.~.~.~~~~~~~~{~{{{{{{~{~{!~~~~~~~~~~~~~~~~~~~~!{!{{{{{~{~{~{~~~~~.~.~..~..~.~~~~~~{~{{{~{~{~~~~~..~...............~.~~~~~{~{{~{~!{~~~~~~~~~~~{~{~{~~~~~~.~..~...~........~..~.~~~~~~~~{~{{!{!{!~~~~.~..~...................", "................~.~.~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.~.~....~.~~~~~!~~~~~~~~.~...~................~.~~~~~~~~{~~~{~{~~~~~~~~.~....~...~.~~~~~~~~~~!~!~~!~~~~~~~.~....~.~~~~~~~~~~~~~~~{~~~~~~~~~.~.~...~....~.~~~~{~~!~{~~~~~~..~................~..~.~~~~~{~~{~~~~~~~~~~~~~~~~!~~~~~~~.~....................~.~~~~~~{~~{~{~!~~~~~~~.~......................", ".....................~.~~~~~~~~~~~~~~~~~~~~~~~~~.~.~.~...~....~~~~~~~~~~~~~~.~...~...................~~~~~~~~~~~~~~~~~~.~~.~.~...~..~.~.~~~~~~~~~~~~~~~~~~~.~.~.~..~...~.~~~~~~~~{~~~~~~~~~~.~.~.~........~..~~~~~~~!~~~~~~.~..~.....................~~~~~~~~~~~~~~~~.~~~~~~~~~~~~~~~.~........................~~~~~~~~~~~~~~~~~.~..~.....................", "....................~...~.~~~~~~~~~~~~~~~~~.~.~..~.~...~.....~~.~~~~~~~~........................~.~..~.~~~~~~~~~~~~~~.~.~.............~.~.~~~~~~~~~~~~~~.~.~.~.......~..~..~~~~~~~~~~~~~~.~.~..........~...~.~.~~~~~~~~~~.~.~....................~.~.~~~~~~~~~~~~.~~.~.~.~~~~~~~~~.~.~.......................~...~~~~~~~~~~~~~.~..........................", ".........................~..~.~.~..~..~~~.~.~.~.~...~.........~.~.~~~~.~~~~........................~......~.~~~~~~~.~..~.~.~.......~.....~.~.~~~~~~~~~~.~.~.............~.~..~.~~~~~~~~~.~..................~..~.~~~~~~.~~.~..~........................~.~~~~~~.~.~.~..~..~.~~~~.~.~.~.............................~.~~~~~~.~.~.~.........................", "..........................~~.~.~.~.~.~..~..~..~...~........~.....~...~.~.............................~.~.~.~.~....~.~.......................~.........~..............~......~...~.~....~.....................~.~.~.~...~............................~.~.~.....~.~..~....~.~.~.~.~.~..............................~.~.~.~...~.~............................", "......................................~........~...................~.~..~.~................................~..~~..............................~..~~.~....~.........................~.~......~....................~.......~.~.............................~.~~...~....~..............~................................~.~..~...~...........................", "............................~.......~........................................................................................................................................~................................~.......~.......................................~.........~....~.~..................................~.......................................", "..................................................................................................................................................~....................................~...............................................................................................................................~.................................."}; crossfire-client-1.70.0/pixmaps/damned.xpm0000644000014500000120000000040411731277006015417 00000000000000/* XPM */ static const char *const damned_xpm[] = { "24 6 2 1", " c None", ". c #000000", ".... . .. .. . . ", " . . . . .. .. .. . ", " . . ... . . . .. . ", " . . . . . . . . .. ", ".... . . . . . . ", " "}; crossfire-client-1.70.0/pixmaps/Makefile.in0000644000014500000120000003110611731277165015517 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = pixmaps DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_HEADERS = \ 16x16.png \ 32x32.png \ 48x48.png \ all.xpm \ applied.xbm \ applied.xpm \ bg.xpm \ clear.xbm \ close.xbm \ close.xpm \ coin.xpm \ crossfiretitle.xpm \ cursed.xbm \ cursed.xpm \ damned.xbm \ damned.xpm \ dot.xpm \ hand.xpm \ hand2.xpm \ lock.xpm \ locked.xbm \ locked.xpm \ mag.xpm \ magic.xbm \ magic.xpm \ nonmag.xpm \ question.111 \ question.sdl \ question.xpm \ sign_east.xpm \ sign_flat.xpm \ sign_west.xpm \ skull.xpm \ stipple.111 \ stipple.112 \ test.xpm \ unlock.xpm \ unpaid.xbm \ unpaid.xpm \ unidentified.xpm all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 pixmaps/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu pixmaps/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 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; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi 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)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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 $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(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: -test -z "$(CONFIG_CLEAN_FILES)" || 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ctags distclean distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags uninstall uninstall-am proto: echo "Nothing to do for proto" # 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: crossfire-client-1.70.0/pixmaps/clear.xbm0000644000014500000120000000051211731277006015237 00000000000000#define clear_width 24 #define clear_height 13 static const char clear_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; crossfire-client-1.70.0/pixmaps/stipple.1120000644000014500000120000000103611731277006015350 00000000000000#define stipple1_width 24 #define stipple1_height 24 static const char stipple1_bits[] = { 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24, 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24, 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24, 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24, 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24, 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24, 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24, 0xff, 0xff, 0xff, 0x49, 0x92, 0x24, 0x49, 0x92, 0x24}; crossfire-client-1.70.0/Makefile.in0000644000014500000120000005114311731277165014041 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \ ChangeLog INSTALL NEWS TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive 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@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = @CF_SUBDIRS@ ACLOCAL_AMFLAGS = -I macros --install EXTRA_DIST = \ ChangeLog \ COPYING \ License \ Makefile.in \ NOTES \ README \ TODO \ aclocal.m4 \ configure \ configure.ac \ crossfire-client.spec all: all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) # 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): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ 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) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ 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) \ || eval $$failcom; \ 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) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done -find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | 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 tardir=$(distdir) && $(am__tar) | 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 | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.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 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$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 installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(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: -test -z "$(CONFIG_CLEAN_FILES)" || 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-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive 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: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-shar dist-tarZ dist-zip distcheck distclean \ distclean-generic distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am proto: @for dir in $(SUBDIRS); \ do \ echo "making proto in $$dir..."; \ (cd $$dir; $(MAKE) $(MFLAGS) 'MFLAGS=$(MFLAGS)' proto; ) \ done; dox: @ doxygen 2>doxygen.err # 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: crossfire-client-1.70.0/INSTALL0000644000014500000120000000576611731277014013030 00000000000000Install Steps: 0) Prerequisites: You will need the XPM library to compile the client. If you want to run the gtk client, you will need to install the gtk libraries. If you want png support, you will need to install the png library. If you want sdl support ( recommended) you will need both gtk and png as well as the main SDL library and the SDL_image library, both of which can be found at http://www.libsdl.org if not already installed on your system. 1) type './configure' to configure for your OS/system. Most options normally understood by configure should be available. The configure script will try to make all the right decisions. It will search for the needed libraries and headers. You may need to give hints on the locations of some files (png library, gtk library). If configure finds GTK libraries, it will build either or both the gtk and gtkv2 clients in addition to the x11 client. You can avoid building either gtk client with --disable-gtkv1 and --disable-gtkv2, but there is no way to disable building the x11 client at this time - if you are able to compile the gtk client, you also have all the tools for the x11 client. If SDL libraries are found on your system, SDL support is automatically compiled it (Note: only the gtk clients support sdl). Use --disable-sdl if you don't want this. The system will use the new sound system if available (this is a seperate sound daemon). If you want to use the builtin sound system, use the --enable-old-sound. See sound notes further down. To specify additional places to find header files, use the --with-includes=value - this includes any -I or other options to provide the compiler. Example: ./configure --with-includes="-I/usr/local/include -I/opt/xpm/include" Similarly, there is a --with-ldflags option. Example: ./configure --with-ldflags="-L/usr/local/lib -R/usr/local/lib" -R is used on many systems to specify run location for libraries so you don't need to set LD_LIBRARY_PATH. Generally, if you are setting --with-includes, your probably need to set --with-ldflags, as if one is not in a standard place, the other probably is not either. The client works with the 0.5 version of the ALSA sound system. If you are using a newer version and are having troubles compiling, try running configure with the '--disable-alsa' option. 2) Type 'make depend; make' to compile the client. If you get link errors, it may be because you have an older version of the gtk libraries. If you get errors like 'can't find target client.c', your make program isn't very good and use should get/use gnu make instead. 3) Type 'make install' to install the binaries. 4) The client can be run by typing 'crossfire-client-x11' for the X11 version, crossfire-client-gtk for the older GTK client, and crossfire-client-gtk2 for the newer GTK client. For the gtk clients add an -sdl argument to use the SDL version. crossfire-client-1.70.0/NEWS0000644000014500000120000000015411731277014012460 00000000000000For list of changes, see the Changelog file. This file is largely here because it is required by automake. crossfire-client-1.70.0/License0000644000014500000120000004307611731277014013300 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, 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 Appendix: 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) 19yy 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., 675 Mass Ave, Cambridge, MA 02139, 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) 19yy 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. crossfire-client-1.70.0/gtk-v2/0000755000014500000120000000000011731277217013160 500000000000000crossfire-client-1.70.0/gtk-v2/glade/0000755000014500000120000000000011731277217014234 500000000000000crossfire-client-1.70.0/gtk-v2/glade/gtk-v1.glade0000644000014500000120000042411711731277014016267 00000000000000 1180 925 Crossfire Client - GTK v2 1180 925 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True False 1 True False 2 True False False 3 False False 0 1601 True True 320 True True 715 True vertical True True True 0 2 Inventory: 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True Count False False 5 2 True True 0 0 1000000 1 0 0 1 True 3 False 0 True True True never True True True True 11 10 True Icons False tab 1 False True True 3 vertical True You see: False False 2 0 True True never True True 1 True True False True True True 575 True True 185 True True 92 True 2 2 True vertical True 8 True Player: False False 0 False False 0 True 8 True Score: False False 0 True 2 Level: False False 1 1 True 8 True True S False False 0 True 0 False False 1 False 0 True True D False False 0 True 0 False False 1 False 1 True True Co False False 0 True 0 False False 1 False 2 True True I False False 0 True 3 0 False False 1 False 3 True True W False False 0 True 0 False False 1 False 4 True True P False False 0 True 0 False False 1 False 5 True True Ch False False 0 True 0 False False 1 False 6 2 True 8 True True Wc: False False 0 True 2 0 False False 1 False 0 True True 2 Dam: False False 0 True 2 0 False False 1 False 1 True True 2 Ac: False False 0 True 2 0 False False 1 False 2 True True 2 Armor: False False 0 True 2 0 False False 1 False 3 False False 3 True 8 True True Speed: False False 0 True 2 0 False False 1 False 0 True True ( False False 0 True 2 0 False False 1 True ) False False 2 False 1 False False 4 True 8 True Skill: False False 0 5 False True True True 2 never automatic in True 2 6 6 True True True False True True True 530 True True 2 False True True Map False tab True 1 False True Magic Map 1 False tab True True True True 285 True vertical True True 0 2 HP: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 0 14 True 0.10000000149 False False 1 1 True True 0 2 Spell Points: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 2 14 True 0.10000000149 False False 1 3 True True 0 2 Grace: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 4 14 True 0.10000000149 False False 1 5 True True 0 2 Food: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 6 14 True 0.10000000149 False False 1 7 True True 0 2 Exp: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 8 14 True 0.10000000149 False False 1 9 True True 0 0 True 0 1 10 False True True True 2 never automatic in True True 2 6 6 True True True True True True True False True True vertical True True 205 True 0 none True True True never in True True 2 False 2 2 False False True 3 <b>Critical Messages</b> True label_item False True True 0 none True True True never in True True 2 False 2 2 False False True 3 <b>Messages</b> True label_item True True 0 True True False False 2 1 True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/sixforty.glade0000644000014500000120000036554311731277014017054 00000000000000 Crossfire GTK V2 Client - SixForty 640 480 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True True Ratio >= 10 True True True Ratio >= 15 True True True Ratio >= 20 True True True Ratio >= 25 True True True Ratio >= 30 True True True Ratio >= 35 True True True Ratio >= 40 True True True Ratio >= 45 True True True Ratio >= 50 True True True Ignore cursed True True _Help True True _About True False False 0 True True 0 2 0 True 0 2 1 1 True 0 2 Player: 8 2 True 0 2 Lvl: 3 True 0 2 Experience: 4 False False 0 True True 356 True True 296 True True False True True Map False tab True 1 True Magic Map 1 False tab False True True True 2 True True GTK_POLICY_AUTOMATIC GTK_POLICY_NEVER True GTK_RESIZE_QUEUE GTK_SHADOW_NONE True 2 7 8 5 True True 0 2 Encumbrance: False False 0 True 0 0 False False 1 True 0 / False False 2 True 0 False False 3 6 8 5 6 GTK_EXPAND | GTK_SHRINK | GTK_FILL True 5 6 6 GTK_FILL True 2 3 7 GTK_FILL True 0 2 Str GTK_FILL True 0 0 1 2 GTK_FILL True 0 2 Dex 1 2 GTK_FILL True 0 2 Con 2 3 GTK_FILL True 0 2 Int 3 4 GTK_FILL True 0 2 Wis 4 5 GTK_FILL True 0 2 Pow 5 6 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 7 8 GTK_SHRINK | GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 7 8 1 2 GTK_SHRINK | GTK_FILL True True 0 False False 0 True / False False 1 True 0 0 False False 2 7 8 2 3 GTK_SHRINK | GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 7 8 3 4 GTK_SHRINK | GTK_FILL 13 True 0 0.10000000149 HP 6 7 GTK_SHRINK | GTK_FILL 13 True 0 0.10000000149 SP 6 7 1 2 GTK_SHRINK | GTK_FILL 13 True 0 0.10000000149 Grace 6 7 2 3 GTK_SHRINK | GTK_FILL 13 True 0 0.10000000149 Food 6 7 3 4 GTK_SHRINK | GTK_FILL 13 True 0 0.10000000149 Exp to Next Level 6 7 4 5 GTK_SHRINK | GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 7 8 4 5 GTK_FILL GTK_SHRINK True 0 0 1 2 1 2 GTK_FILL True 0 0 1 2 2 3 GTK_FILL True 0 0 1 2 3 4 GTK_FILL True 0 0 1 2 4 5 GTK_FILL True 0 0 1 2 5 6 GTK_FILL True 0 2 Cha 6 7 GTK_FILL True 0 0 1 2 6 7 GTK_FILL True 0 2 WSp 3 4 GTK_FILL True 0 0 4 5 GTK_FILL True 0 2 Sp 3 4 1 2 GTK_FILL True 0 0 4 5 1 2 GTK_FILL True 0 2 WC 3 4 2 3 GTK_FILL True 0 0 4 5 2 3 GTK_FILL True 0 2 Dam 3 4 3 4 GTK_FILL True 0 0 4 5 3 4 GTK_FILL True 0 2 AC 3 4 4 5 GTK_FILL True 0 0 4 5 4 5 GTK_FILL True 0 2 Arm 3 4 5 6 GTK_FILL True 0 0 4 5 5 6 GTK_FILL True True 0 2 Range: False False 0 3 8 6 7 GTK_SHRINK | GTK_FILL True Stats False tab True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC True GTK_RESIZE_QUEUE GTK_SHADOW_NONE True 6 6 True 1 True Protections 1 False tab True True False True True vertical True True 2 134 True True True GTK_POLICY_NEVER True True True True 11 10 True Icons False tab True True True True 92 True True GTK_POLICY_NEVER True True False True True True 70 True 0 GTK_SHADOW_IN True True 2 GTK_POLICY_NEVER GTK_SHADOW_IN True True False False False True <b>Messages</b> True label_item False True True 0 GTK_SHADOW_IN True True 2 GTK_POLICY_NEVER GTK_SHADOW_IN True True False False False True <b>Critical messages</b> True label_item True True True True True True 0 True 2 True True 0 True 1 5 Count: GTK_JUSTIFY_RIGHT False False 1 True True 0 0 1000000 1 10 0 1 True 2 False 1 True True 1 crossfire-client-1.70.0/gtk-v2/glade/Makefile.am0000644000014500000120000000264711731277014016214 00000000000000# # Makefile for crossfire 0.95.0 and beyond # # This file will eventually be replaced by a configure script. But for # now, this simple makefile should do the job. # # Copyright (C) 2001 Mark Wedel & Crossfire Development Team # Copyright (C) 1992 Frank Tore Johansen # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The authors can be reached via e-mail to crossfire-devel@real-time.com XML_FILES = \ caelestis.glade \ chthonic.glade \ dialogs.glade \ eureka.glade \ gtk-v1.glade \ gtk-v2.glade \ lobotomy.glade \ meflin.glade \ oroboros.glade \ sixforty.glade \ un-deux.glade \ v1-redux.glade PRJ_FILES = $(XML_FILES:.glade=.gladep) gladedir=$(pkgdatadir)/glade-gtk2 glade_DATA = $(XML_FILES) EXTRA_DIST = \ $(XML_FILES) \ $(PRJ_FILES) \ README crossfire-client-1.70.0/gtk-v2/glade/oroboros.gladep0000644000014500000120000000050311731277014017167 00000000000000 Oroboros gtk-v2 oroboros FALSE crossfire-client-1.70.0/gtk-v2/glade/v1-redux.glade0000644000014500000120000041125611731277014016631 00000000000000 1180 925 Crossfire Client - GTK v2 1180 925 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True False 1 True False 2 True False False 3 False False 0 1601 True True 320 True True 720 True vertical True True True 0 2 Inventory: 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True Count False False 5 2 True True 0 0 1000000 1 0 0 1 True 3 False 0 True True True never True True True True 11 10 True Icons False tab end 1 True True True 3 vertical True 0 1 Ground: False False 2 0 True True never True True 1 True True False True True True 575 True True 125 True 0 in True 2 2 True vertical True 8 True Player: False False 0 False False 0 True 8 True Score: False False 0 True 2 Level: False False 1 1 True 8 True True S False False 0 True 0 False False 1 False 0 True True D False False 0 True 0 False False 1 False 1 True True Co False False 0 True 0 False False 1 False 2 True True I False False 0 True 3 0 False False 1 False 3 True True W False False 0 True 0 False False 1 False 4 True True P False False 0 True 0 False False 1 False 5 True True Ch False False 0 True 0 False False 1 False 6 2 True 8 True True Wc: False False 0 True 2 0 False False 1 False 0 True True 2 Dam: False False 0 True 2 0 False False 1 False 1 True True 2 Ac: False False 0 True 2 0 False False 1 False 2 True True 2 Armor: False False 0 True 2 0 False False 1 False 3 False False 3 True 8 True True Speed: False False 0 True 2 0 False False 1 False 0 True True ( False False 0 True 2 0 False False 1 True ) False False 2 False 1 False False 4 True 8 True Skill: False False 0 5 True <b>Core Stats</b> True label_item True True True True 590 True True 2 False True True Map False tab True 1 False True Magic Map 1 False tab True True True True 285 True vertical True True 0 2 HP: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 0 14 True 0.10000000149 False False 1 1 True True 0 2 Spell Points: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 2 14 True 0.10000000149 False False 1 3 True True 0 2 Grace: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 4 14 True 0.10000000149 False False 1 5 True True 0 2 Food: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 6 14 True 0.10000000149 False False 1 7 True True 0 2 Exp: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 8 14 True 0.10000000149 False False 1 9 True True 0 0 True 0 1 10 False True True True 2 never automatic in True True 2 6 6 True True True True True True True False True True vertical True True 205 True 0 none True True True never in True True 2 False 2 2 False False True 3 <b>Critical Messages</b> True label_item False True True 0 none True True True never in True True 2 False 2 2 False False True 3 <b>Messages</b> True label_item True True 0 True True False False 2 1 True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/v1-redux.gladep0000644000014500000120000000052611731277014017003 00000000000000 Gtk-V1 With Tabs GTK V2 (V1 Redux) v1-redux FALSE crossfire-client-1.70.0/gtk-v2/glade/meflin.glade0000644000014500000120000044047711731277014016437 00000000000000 Crossfire GTK V2 Client - Meflin 640 480 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False True False 1 True 0 2 Player: False 8 2 True False 3 True 0 2 Experience: False 8 4 True False 5 True 2 Lvl: False 8 6 False True True 830 True True True 620 True True True GTK_POS_BOTTOM False True 2 GTK_RESIZE_QUEUE True True Map False tab True 2 GTK_RESIZE_QUEUE True 1 True Magic Map 1 False tab False True True True 2 GTK_POS_BOTTOM True 2 GTK_RESIZE_QUEUE True True True 2 GTK_RESIZE_QUEUE True 5 8 9 5 True 5 6 7 GTK_FILL True 2 3 7 GTK_FILL True 0 2 Str GTK_FILL True 0 0 1 2 GTK_FILL True 0 2 HP: 6 7 GTK_FILL True 0 2 SP: 6 7 1 2 GTK_FILL True 0 2 Grace: 6 7 2 3 GTK_FILL True 0 2 Food: 6 7 3 4 GTK_FILL True 0 2 Exp: 6 7 4 5 GTK_FILL True 0 2 Dex 1 2 GTK_FILL True 0 2 Con 2 3 GTK_FILL True 0 2 Int 3 4 GTK_FILL True 0 2 Wis 4 5 GTK_FILL True 0 2 Pow 5 6 GTK_FILL True True 0 False False True / False False 1 True 0 False False 2 8 9 GTK_FILL True True 0 False False True / False False 1 True 0 False False 2 8 9 1 2 GTK_FILL True True 0 False False True / False False 1 True 0 0 False False 2 8 9 2 3 GTK_FILL True True 0 False False True / False False 1 True 0 False False 2 8 9 3 4 GTK_FILL 12 True 0.10000000149 7 8 GTK_FILL 12 True 0.10000000149 7 8 1 2 GTK_FILL 12 True 0.10000000149 7 8 2 3 GTK_FILL 12 True 0.10000000149 7 8 3 4 GTK_FILL 12 True 0.10000000149 7 8 4 5 GTK_FILL True True 0 False False True / False False 1 True 0 False False 2 8 9 4 5 GTK_FILL True 0 0 1 2 1 2 GTK_FILL True 0 0 1 2 2 3 GTK_FILL True 0 0 1 2 3 4 GTK_FILL True 0 0 1 2 4 5 GTK_FILL True 0 0 1 2 5 6 GTK_FILL True 0 2 Cha 6 7 GTK_FILL True 0 0 1 2 6 7 GTK_FILL True True 0 2 Range: False False 6 9 7 8 GTK_FILL True 0 2 WSp 3 4 GTK_FILL True 0 0 4 5 GTK_FILL True 0 2 Sp 3 4 1 2 GTK_FILL True 0 0 4 5 1 2 GTK_FILL True 0 2 WC 3 4 2 3 GTK_FILL True 0 0 4 5 2 3 GTK_FILL True 0 2 Dam 3 4 3 4 GTK_FILL True 0 0 4 5 3 4 GTK_FILL True 0 2 AC 3 4 4 5 GTK_FILL True 0 0 4 5 4 5 GTK_FILL True 0 2 Arm 3 4 5 6 GTK_FILL True 0 0 4 5 5 6 GTK_FILL True 0 2 Enc: 6 7 6 7 GTK_FILL True True 0 0 False False True 0 / False False 1 True 0 False False 2 7 9 6 7 GTK_FILL True True 0 2 False False True 0 2 False False 1 6 7 8 GTK_FILL True 6 9 5 6 GTK_FILL True 3 5 6 7 GTK_FILL False True True 2 GTK_RESIZE_QUEUE True True GTK_POLICY_NEVER True True 2 False False False True True True Stats & Important Messages False tab True 2 GTK_RESIZE_QUEUE True 6 6 True 1 True Protections 1 False tab True 2 GTK_RESIZE_QUEUE True 6 6 True 2 True Skills & Experience 2 False tab True True False True True True 620 True True True GTK_POS_BOTTOM True 2 GTK_RESIZE_QUEUE True True GTK_POLICY_NEVER True True False False False True Messages False tab False True True vertical True True GTK_POS_BOTTOM True 2 GTK_RESIZE_QUEUE True True GTK_POLICY_NEVER True True True Look False tab True 2 GTK_RESIZE_QUEUE True GTK_POS_BOTTOM True True GTK_POLICY_NEVER True True True True 11 10 True Icons False tab 1 True Inventory 1 False tab True True True True 1 5 Count: GTK_JUSTIFY_RIGHT False False 1 True True 0 0 1000000 1 10 10 1 True 2 False False 2 1 True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/AUTHORS0000644000014500000120000002731711731277014015231 00000000000000Glade Designer Layout Authors ------------------------------------------------------------------------------- If you author a .glade layout file, please feel free to add an attribution for your work here. ------------------------------------------------------------------------------- Mark Wedel ------------------------------------------------------------------------------- The original gtk-v2.glade file by Mark Wedel was the basis for the following layout files. In fact, all layouts for the GTK-v2 client must contain the basic widget set found in that work. - gtk-v2.glade This layout defaults to use of a 25x25 map. The default layout size is configured to 1201x1010. The map itself takes up most of a 1280x1024 screen, and it seems somewhat difficult to use at this resolution and lower. Stat bars reside in the lower left; stat tables share a tabbed notebook in the lower middle. Message panes share a tab notebook in the upper right, with inventory and ground views making up the reset of the left hand side of the window. - dialogs.glade This file contains all of the ancilliary dialogs used by the GTK V2 client. Alternative layouts are not provided. ------------------------------------------------------------------------------- Kevin Bulgrien ------------------------------------------------------------------------------- The conversion of the client to support libglade came shortly after Kevin Bulgrien began developing experimental alternative layouts by copying and modifying the original gtk-v2.glade layout. Some of those initial layouts are are found in the following files: - caelestis.glade A tri-column layout with a tall inventory/floor panels to the right. At the top middle, a two tab notebook for character and skill/experience data sits above map views beneath. To the top left is a three tab notebook for core stats, critical messages, and protections. At the lower left is the messages pane with entry box. The default window setting supports an 19x22 map pane with an overall size of 1275x945. - chthonic.glade A tri-column layout with a tall inventory/floor panels to the right. At the top middle, a two tab notebook holds the map views above character data. To the top left is the critical message box with the standard message box and command input below. The bottom left corner two tab notebook houses protections and core statistics. The default window setting supports an 19x22 map pane with an overall size of 1275x945. NOTE: There seems to be issues with the saving of screen position when resizeable panes are nested. Though saving works fairly well for this layout, the protections/core statistics area does not restore properly, though the misbehavior is not terribly inconvenient. The layout needs some work to improve save/restore. - eureka.glade A U-shaped layout with inventory and ground views at the top and middle left, a critical and regular message area at the top and middle right, with status bars on the bottom left alongside a three tab notebook for core stats, skills & experience, and protections. The map pane is in the middle of the window and may be set for 17x22 tiles at the default 1180x925 settings. - gtk-v1.glade This is a close reproduction of the original GTK V1 client with the main exception being the magic map in a tabbed notebook with the map view, and an experience bar that was not present in the legacy client. At the default settings of 1180x925, the map pane displays a 17x17 view of the world around you. The main drawback of this client layout is probably the quantity of deadi space in the middle column. - lobotomy.glade A layout of a slightly different persuasion. This one sports a map layout on the left. To the right sit the inventory/ground view and message panes. Underscoring this unconventional view is a unique cluster of stats and stat bars not seen in other client layouts. Too round out the uniqueness of this layout, the skill and protections data is laid out below the map in a manner that tends to allow the oversized skills data table to expand naturally while the narrower protections panel shrinks to the data it contains. Unlike many of the other layouts, tabbed notebooks are avoided except in the map panel. Window defaults are set at 1280x925, and sport a map pane of 19x22. - meflin.glade A player-suggested modification of an experimental layout. Send in a suggestion, and you might have a layout tuned to your tastes. Presently a map view notebook is at top right with message, inventory, and ground views sharing a tabbed notebook to the left. At the bottom rest the stat bars and a three tab notebook for character data. This one is custom-sized at 1233x1001, and at these settings, fits a healthy sized 25x25 map view. Send in a suggestion for a layout, and if you're nice about it, the author will likely be able to whip one up to suit your individual tastes. For that matter, SVN contains tips on how to roll your own... - oroboros.glade A layout designed for 1024x768 desktops. On the left are a tabbed message window, inventory, and floor view. To the right, at the top is a two tab notebook that contains all of the character statistics, and below it is the map view. At 1024x768, the map view is 20x13. Since oroboros makes heavy use of tabbed notebooks, it is also appropriate for those that prefer to see less information simultaneously on screen. Recent removal of the skills panel, made possible by a new skills window, helped reduce the notebook pages and improve visibility of vital data. - sixforty.glade This is a layout that defaults to a 640x480 size and was made in response to a request for a small layout. Player name, experience, and level are reported beside the menu bar. The rest of the layout is cut into four zones with a resize bar allowing the left/right sizes to be adjusted. In the top-left quadrant lies the map panel, with a tabbed pane for Stats, Protections, and Skills/Experience in the quadrant below it. The icon view resides in the top right quadrant with the tabbed messages pane and command input occupying the lower right quadrant. At 640x480, a 12x11 map size is workable with inventory views being the big challenge. The most noticable difference in this layout is a more densely packed stats panel that eliminates the Core Statistics panel found in all the previously created layouts. This panel sports 3-columns with the first containing numeric values for encumbrance, HP, Mana, Grace, Food and XP. The top of the middle column indicates the readied skill with bar graphs for the stats in the first column below. The third column lists Speed, WS, WC, Damage, AC, and Armor data. Below these three statistical columns is a row displaying Str, Dex, Con, Int, Wis, Pow, Cha data. It is extraordinarily helpful to set a map and icon scales to 50%. Other scale factors may also work, but many others also distort the map display unpleasantly. NOTE: sixforty.glade in its present form does not save and restore window positions properly. It is best to accept the defaults for the present, and as needed, tweak it at run-time. Plans are to fix this issue eventually. - un-deux.glade This layout is still vaguely reminiscent of the original GTK V1 client with the V1-Redux improvements, but it is unique in that the message panes are to the left of the map while the inventory and ground views are on the right. To help keep the most important information at ready eye-level, the encumbrance display and count input box are between the inventory and ground views. The critical and normal message panes are vertically exchanged, with the entry box between, again, to keep the important controls at a consistent eye-level. The fire/run indicators are moved beneath the command input box as they seem all but invisible below the stat bars. The middle of the screen consists of a frame for core stats and a notebook for the map and magic map display, followed by the status bars and protections table. Notably missing is the skills and experience panel - made possible by the addition of a separate skills window. The window size defaults to 1180x925 and comfortably accepts a 19x19 map display. - v1-redux.glade A slight improvement on the original GTK client layout with a tab notebook above the map view that conserves space by dispensing with the experience and skills information. This is made possible by the addition of a detached skills window. Default window positions fit 1280x1024 or 1400x1050 screens with room to spare for side or bottom panels. A 17x20 map pane fits well on the default 1180x925 window size. crossfire-client-1.70.0/gtk-v2/glade/gtk-v2.glade0000644000014500000120000036464711731277014016303 00000000000000 Crossfire Client - GTK v2 1201 1010 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True False False 8 1 True False False 8 2 True 3 False False 0 True True 820 True True 847 True True False True True Map False tab True 1 True Magic Map 1 False tab False True True True 300 True 2 queue True 2 6 3 4 True 0 1 3 5 6 GTK_FILL True 0.10000000149 2 3 2 True 0.10000000149 2 3 1 2 2 True 0.10000000149 2 3 2 3 2 True 0.10000000149 2 3 3 4 2 True 0.10000000149 2 3 4 5 2 True True 0 2 0 True 0 2 1 5 6 GTK_FILL GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 1 2 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 1 2 1 2 GTK_FILL True True 0 False False 0 True / False False 1 True 0 0 False False 2 1 2 2 3 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 1 2 3 4 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 1 2 4 5 GTK_FILL True 0 2 HP: GTK_FILL True 0 2 SP: 1 2 GTK_FILL True 0 2 Grace: 2 3 GTK_FILL True 0 2 Food: 3 4 GTK_FILL True 0 2 Exp: 4 5 GTK_FILL True True True True 2 True True vertical True 5 Player: False False 0 True True True 1 5 Str False 0 True 0 0 False 1 True 1 5 Dex False 2 True 0 0 False 3 True 1 5 Con False 4 True 0 0 False 5 True 1 5 Int False 6 True 0 0 False 7 True 1 5 Wis False 8 True 0 0 False 9 True 1 5 Pow False 10 True 0 0 False 11 True 5 Cha False 12 True 0 0 False 13 1 True True True 1 5 WC False 0 True 0 0 False 1 True 1 5 Dam False 2 True 0 0 False 3 True 1 5 AC False 4 True 0 0 False 5 True 1 5 Armor False 6 True 0 0 False 7 2 True True True 1 5 Speed False 0 True 0 0 False 1 True 1 5 Weapon Speed False 2 True 0 0 False 3 False False 3 True 5 Range: False False 4 True True True 5 Experience: False False 0 True 5 Level: False False 1 5 True Core Stats False tab True 6 6 True 1 True Protections 1 False tab True True True True False True True True 300 True vertical True True True 2 queue True True never True True False False False True Messages False tab True 2 queue True True never True True False False False 1 True Critical messages 1 False tab 0 True True False False 1 False True True True 400 True vertical True True True 0 2 Inventory: 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True 1 5 Count: right False 2 True True 0 0 1000000 1 0 0 1 True False 3 False 0 True True True never True True True True 11 10 True Icons False tab 1 False True True vertical True 0 3 You see: False False 0 True True never True True 1 True True True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/gtk-v2.gladep0000644000014500000120000000042111731277014016434 00000000000000 Gtk-v2 gtk-v2 FALSE crossfire-client-1.70.0/gtk-v2/glade/Makefile.in0000644000014500000120000003000211731277165016216 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire 0.95.0 and beyond # # This file will eventually be replaced by a configure script. But for # now, this simple makefile should do the job. # # Copyright (C) 2001 Mark Wedel & Crossfire Development Team # Copyright (C) 1992 Frank Tore Johansen # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The authors can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gtk-v2/glade DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ AUTHORS ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(gladedir)" gladeDATA_INSTALL = $(INSTALL_DATA) DATA = $(glade_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ XML_FILES = \ caelestis.glade \ chthonic.glade \ dialogs.glade \ eureka.glade \ gtk-v1.glade \ gtk-v2.glade \ lobotomy.glade \ meflin.glade \ oroboros.glade \ sixforty.glade \ un-deux.glade \ v1-redux.glade PRJ_FILES = $(XML_FILES:.glade=.gladep) gladedir = $(pkgdatadir)/glade-gtk2 glade_DATA = $(XML_FILES) EXTRA_DIST = \ $(XML_FILES) \ $(PRJ_FILES) \ README all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 gtk-v2/glade/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu gtk-v2/glade/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-gladeDATA: $(glade_DATA) @$(NORMAL_INSTALL) test -z "$(gladedir)" || $(MKDIR_P) "$(DESTDIR)$(gladedir)" @list='$(glade_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(gladeDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gladedir)/$$f'"; \ $(gladeDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gladedir)/$$f"; \ done uninstall-gladeDATA: @$(NORMAL_UNINSTALL) @list='$(glade_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(gladedir)/$$f'"; \ rm -f "$(DESTDIR)$(gladedir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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 $(DATA) installdirs: for dir in "$(DESTDIR)$(gladedir)"; 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: -test -z "$(CONFIG_CLEAN_FILES)" || 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-gladeDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-gladeDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-gladeDATA \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-gladeDATA # 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: crossfire-client-1.70.0/gtk-v2/glade/sixforty.gladep0000644000014500000120000000042111731277014017211 00000000000000 Gtk-v2 gtk-v2 FALSE crossfire-client-1.70.0/gtk-v2/glade/un-deux.gladep0000644000014500000120000000051311731277014016711 00000000000000 Un Deux GTK V2 (Un Deux) un-deux FALSE crossfire-client-1.70.0/gtk-v2/glade/chthonic.gladep0000644000014500000120000000050311731277014017122 00000000000000 Chthonic gtk-v2 chthonic FALSE crossfire-client-1.70.0/gtk-v2/glade/lobotomy.gladep0000644000014500000120000000050611731277014017172 00000000000000 Split Brain gtk-v2 lobotomy FALSE crossfire-client-1.70.0/gtk-v2/glade/gtk-v1.gladep0000644000014500000120000000050411731277014016435 00000000000000 GTK V1 GTK V2 (V1) gtk-v1 FALSE crossfire-client-1.70.0/gtk-v2/glade/README0000644000014500000120000002513011731277014015030 00000000000000------------------------------------------------------------------------------- Notes on using .glade layout files for the libglade version of the GTK2 client ------------------------------------------------------------------------------- 1) The GTK V2 client uses two different Glade Designer XML files. The first describes the client's main game window, and the second describes all of the other dialogs that the client uses. The default XML layouts are defined in the main.h header file, but one or both may be specified with command-line arguments. At the time of this writing, the default window is defined by gtk-v2.glade and the common dialogs are defined in dialogs.glade. 2) To launch the GTK V2 client and use of a different layout template, start the client with a command similar to the following example. crossfire-client-gtk2 -window_xml /path/to/layout.glade If something does not work as expected, be sure to start the client from a console window. The client will report informational and error messages. To specify a different common dialog XML file, append an additional argument on the command-line: -dialog_xml /path/to/dialogs.glade Presently there are no alternative dialog files supplied with the project. 3) If the -window_xml parameter is not accepted, the client is an old client that does not support libglade. This could happen if a recent client is compiled but the system does not have the libglade-2.0 libraries on it. Check the output of ./configure. It may report that the gtk-v2 client will not be built. If this happens, the client on the system will be an old one with a date and time that do not correspond to the current build. 4) As of SVN revision 8406, crossfire-client-gtk2 saves window position data in a file named per the layout instead of the legacy file ~/crossfire/gwinpos2. For example, if a player saves window positions while using gtk-v2.glade, they will be stored in ~/.crossfire/gtk-v2.pos, but if playing with a layout called caelestis.glade, they will be saved in caelestis.pos. This means the client is able to remember saved sizes for each layout individually. 5) The first time a layout is used, the ~/.crossfire/.pos file will not exist so the client will use default sizes that were defined inside the .glade file at design time. This means that as long as the defaults are smaller than the desktop, the client window should be laid out nicely. If, however, the desktop size is smaller than the default sizes, the client may look bad, and it may be tricky to find the size bars if panes overlap. With patience, they may be found and used to size the client panes better. Use the Client Save Window Position command to save the adjustments. They will be used to restore the saved settings the next time the client is started. If the desktop is smaller than it was last time the .pos file was created, it is possible that the saved positions are no good. In this case, it may be wise to delete the .pos file and try out the default settings. ------------------------------------------------------------------------------- Notes about designing .glade files for the libglade version of the GTK2 client ------------------------------------------------------------------------------- 1) All windows that should not be initially displayed when the application starts must have the "visible" property set to "no". This property is on the "Common" tab. The following windows should not be initially visible: metaserver_window keybinding_window msgctrl_window config_window spell_window skill_window about_window Reference: http://developer.gnome.org/doc/API/2.0/libglade/libglade-embedding.html IMPORTANT: The root window "visible" property must also be set to "no" in order for saved screen size settings to be restorable when the application starts up. This really means that all dialogs and windows should be set as not visible. 2) All hpane and vpane resizeable widgets that need to be saved when the user selects Client | Save Window Position should have a name that begins with either "hpaned_" or "vpaned_". The client will only save window positions for the widgets named in this way (this is the default naming convention used by the Glade Designer application). 3) Set all hpaned and vpaned size bars to result in a default layout that has a decent appearance. It is not sufficient to have the layout look good in the layout designer. You must verify that the Position property on the Widget tab is set and that it's checkbox is checked. Also see note 11 for another important tip regarding setting the size of widgets. 4) When creating tabbed notebooks be sure the first tab is the tab that should be visible when the client starts up or when the dialog is first displayed. 5) Most layouts may be altered by creatively cut/pasting elements. Do not use copy/paste, as that will cause the widgets to be renamed. 6) The inventory icon pane is an excellent "temporary" holding area that may be used to hold widgets while other areas of the layout are being worked on. 7) More complex changes may be made by temporarily expanding the outer vbox container and using the bottom rows to paste things into. Be careful when reducing it back to the original size. Glade Designer deletes the bottom layers first, even if there are empty ones in the middle. Any widgets in the removed layer are lost. 8) Save periodically, and keep working copies. It is very easy to ruin a layout so that it is hard to return to a proper state, and widget errors may cause the client to crash at run-time when it is most inconvenient. Oddly, there is not a Save As menu item in the Glade Designer tool. Even so, it is possible to save your design as a different file to prevent overwriting the last good save. Use Project | Options... | Project File: to pick a new name. After change the name there, File | Save will save to the new file name without overwriting the file that was originally opened. 9) When adding a combo box that is to be dynamically filled at run-time, be absolutely sure to press the ellipsis "..." button next to the empty Items: box, then press the OK button on the Edit Text Property dialog. This causes the XML file combo box definition to contain an essential property: Without this property, at run-time the following code snippet will set model to NULL. model = gtk_combo_box_get_model(GTK_COMBO_BOX(config_combobox_theme)); count = gtk_tree_model_iter_n_children(model, NULL); This construct is used several times in config.c's setup_config_window(). When model is NULL, the subsequent code that attempts to use the model generates console errors like: (crossfire-client-gtk2:9632): Gtk-CRITICAL **: gtk_tree_model_iter_n_children: assertion `GTK_IS_TREE_MODEL (tree_model)' failed (crossfire-client-gtk2:9632): Gtk-CRITICAL **: gtk_combo_box_append_text: assertion `GTK_IS_LIST_STORE (combo_box->priv->model)' failed (crossfire-client-gtk2:9632): Gtk-CRITICAL **: gtk_combo_box_append_text: assertion `GTK_IS_LIST_STORE (combo_box->priv->model)' failed (crossfire-client-gtk2:9632): Gtk-CRITICAL **: gtk_combo_box_append_text: assertion `GTK_IS_LIST_STORE (combo_box->priv->model)' failed (crossfire-client-gtk2:9632): Gtk-CRITICAL **: gtk_tree_model_iter_n_children: assertion `GTK_IS_TREE_MODEL (tree_model)' failed 10) The Magic Map page in map_notebook must be the second tab to maintain compatibility with the client's standard main.h define "MAGIC_MAP_PAGE 1". The page/tab number is zero-based, so "1" corresponds to the second tab. 11) In general, do not set widget Width and Height properties on the Common tab in the Glade Designer. This is in effect placing a size request for the widget, and can prevent the player from sizing the widget smaller than the size set at design time. This is especially important with respect to the map and magic map drawing areas, tables, treeviews, and other large UI elements (hboxes, vboxes, notebooks, etc). A player should generally have the freedom to make a widget smaller than it was originally designed in the layout. Note, though, that this is not a hard and fast rule. Sometimes setting a size is very helpful. For example, in the GTK V1 layout (and a few others) progressbars are set to use a smaller height dimension size than their default. Since a player never expects to be able to set the thickness of the bar, setting that dimension is useful to attain a particular look (I.E. make the progressbar more compact). 12) All dialogs defined in dialogs.glade should have their Deletable property set to "No" in the XML (done while working in the Glade-3 designer). This tells window managers not to put an [X] close icon on the window frame. Without this, the [X] close deletes the dialog so it cannot be resurrected without restarting the client. In some cases a segmentation fault occurs and the client crashes. To cover cases where certain window managers do not honor the GTK Deletable property, connect the delete_event for each dialog to gtk_widget_hide_on_delete() in the C code. For example: g_signal_connect((gpointer) about_window, "delete_event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); ------------------------------------------------------------------------------- Other Helpful Hints ------------------------------------------------------------------------------- 1) Sometimes when making significant layout changes or when glade misbehaves and does not let you visually see an select an empty cell (vboxes have been noted as problematic if an empty cell is bounded by two cells with content). When this happens, it is quite possible to use a text editor to move items into the empty cell. Naturally you have to be able to look at the XML structure to know how to keep it intact. Make backups before making manual edits. 2) When editing .glade files by hand, use of a text editor that is capable of collapsing XML structures is recommended. Even without such and editor, it can be handle to use a browser alongside the editor. To do so, make a copy of the .glade file, but save it with a .xml extension, and then open it in FireFox or another XML-aware browser. Use the expand/collapse features to learn or reveal the structure of the XML. crossfire-client-1.70.0/gtk-v2/glade/eureka.gladep0000644000014500000120000000047711731277014016611 00000000000000 Eureka gtk-v2 eureka FALSE crossfire-client-1.70.0/gtk-v2/glade/chthonic.glade0000644000014500000120000041345311731277014016756 00000000000000 Crossfire Client - GTK v2 1275 945 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True False 1 True False 2 True False False 3 False False 0 1275 920 True True 320 True True 750 True vertical True True True 0 2 Inventory: 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True Count False False 5 2 True True 0 0 1000000 1 0 0 1 True 3 False 0 True True True never True True True True 11 10 True Icons False tab 1 False True True 0 in True True never True True True <b>You see:</b> True label_item True True False True True True 750 True True 630 True True 2 False 600 550 True True Map False tab True 1 True Magic Map 1 False tab False True True vertical True True 200 True 0 none True 2 queue True True never True True False False False True 3 <b>Critical Messages</b> True label_item False True True 0 none True 2 queue True True never True True False False False True 3 <b>Messages</b> True label_item True True 0 True True False False 2 1 True True True True True True 630 True 0 in True True 250 True True 2 queue True vertical True True 0 Player: False False 3 0 True 0 Level: 10 False False 5 1 False False 3 0 True True 0 Skill False False 3 0 False False 4 1 True True 0 Speed 6 False False 3 0 True False False 1 False False 3 2 True True 0 Weapon Speed False False 3 0 True False False 1 False False 4 3 True True 0 Experience: False False 3 0 False False 3 4 True True 0 5 False False 5 0 True 0 5 False False 5 1 False False 4 5 True True True 2 queue True 2 6 3 4 True 0 3 5 6 GTK_FILL True 0.10000000149 1 2 2 True 0.10000000149 1 2 1 2 2 True 0.10000000149 1 2 2 3 2 True 0.10000000149 1 2 3 4 2 True 0.10000000149 1 2 4 5 2 True 0 2 HP: GTK_FILL True 0 2 SP: 1 2 GTK_FILL True 0 2 Grace: 2 3 GTK_FILL True 0 2 Food: 3 4 GTK_FILL True 0 2 Exp: 4 5 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 1 2 GTK_FILL True True 0 False False 0 True / False False 1 True 0 0 False False 2 2 3 2 3 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 3 4 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 4 5 GTK_FILL True True True <b>Character</b> True label_item True True True True True 6 6 True True Protections False tab True 5 7 6 5 5 True 0 1 6 6 7 GTK_FILL True 0 1 6 5 6 GTK_FILL True 0 1 6 4 5 GTK_FILL True 0 1 6 3 4 GTK_FILL True 0 1 6 2 3 GTK_FILL True 0 5 6 1 2 GTK_FILL True 0 3 4 1 2 GTK_FILL True 0 Armor 4 5 1 2 GTK_FILL True 0 Armor Class 2 3 1 2 GTK_FILL True 0 5 6 GTK_FILL True 0 Damage 4 5 GTK_FILL True 0 3 4 GTK_FILL True 0 Weapon Class 2 3 GTK_FILL True 0 Charisma 6 7 GTK_FILL True 0 Power 5 6 GTK_FILL True 0 Wisdom 4 5 GTK_FILL True 0 Intelligence 3 4 GTK_FILL True 0 Constitution 2 3 GTK_FILL True 0 1 2 1 2 GTK_FILL True 0 Dexterity 1 2 GTK_FILL True 0 1 2 GTK_FILL True 0 Strength GTK_FILL 1 True Core Statistics 1 False tab True True True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/caelestis.gladep0000644000014500000120000000050511731277014017301 00000000000000 Caelestis gtk-v2 caelestis FALSE crossfire-client-1.70.0/gtk-v2/glade/eureka.glade0000644000014500000120000036470011731277014016433 00000000000000 1180 925 Crossfire Client - GTK v2 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True False 1 True False 2 True False False 3 False False 0 True True 750 1275 True True 320 True True 550 True vertical True True True Inventory: False False 10 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True Count False False 5 2 True True 0 0 1000000 1 0 0 1 True 3 False 0 True True True never True True True True 11 10 True Icons False tab 1 False True True 3 vertical True You see: False False 2 0 True True never True True 1 True True False True True True 570 True True 2 False 550 600 True True Map False tab True 1 True Magic Map 1 False tab False True True vertical True True 200 True 0 none True True True never True True False False False True 3 <b>Messages</b> True label_item False True True 0 none True True True never True True False False False True 3 <b>Critical Messages</b> True label_item False True 0 True True False False 2 1 True True True True False True True True 450 True 2 6 3 4 True 2 3 5 6 GTK_FILL True 5 6 GTK_FILL True True 0 5 False False 5 0 True 0 5 False False 5 1 1 2 5 6 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 4 5 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 3 4 GTK_FILL True True 0 False False 0 True / False False 1 True 0 0 False False 2 2 3 2 3 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 1 2 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 GTK_FILL True 0 2 Exp: 4 5 GTK_FILL True 0 2 Food: 3 4 GTK_FILL True 0 2 Grace: 2 3 GTK_FILL True 0 2 SP: 1 2 GTK_FILL True 0 2 HP: GTK_FILL True 0.10000000149 1 2 4 5 2 True 0.10000000149 1 2 3 4 2 True 0.10000000149 1 2 2 3 2 True 0.10000000149 1 2 1 2 2 True 0.10000000149 1 2 2 False True True True 2 True True vertical True Player: False False 0 True True True Str False False 0 True False False 1 True Dex False False 2 True False False 3 True Con False False 4 True False False 5 True Int False False 6 True False False 7 True Wis False False 8 True False False 9 True Pow False False 10 True False False 11 True Cha False False 12 True False False 13 1 True True True WC False False 0 True False False 1 True Dam False False 2 True False False 3 True AC False False 4 True False False 5 True Armor False False 6 True False False 7 2 True True True Speed False False 0 True False False 1 True Weapon Speed False False 2 True False False 3 False False 3 True Range: False False 4 True True True Experience: False False 0 True Level: False False 1 5 True Core Stats False tab True 6 6 True 1 True Skills & Experience 1 False tab True 6 6 True 2 True Protections 2 False tab True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/lobotomy.glade0000644000014500000120000044321211731277014017017 00000000000000 1280 925 Crossfire Client - GTK v2 1280 925 True vertical True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False True True 960 True True 770 True True 620 True True 2 False True True Map False tab True 1 True Magic Map 1 False tab False True True True 600 True 2 True True GTK_POLICY_NEVER True True True True 11 10 True Icons False tab False True True 2 0 GTK_SHADOW_IN True True GTK_POLICY_NEVER True True True <b>View</b> True label_item True True True True False True True True 2 0 GTK_SHADOW_IN True 2 6 6 2 True <b>Skills</b> True label_item True 2 0 GTK_SHADOW_IN True 2 6 6 2 True <b>Protections</b> True label_item False 1 True True False True True vertical True 2 True True 0 5 Player: True 1 5 Level: GTK_JUSTIFY_RIGHT False False 1 False False True True 400 True 2 0 GTK_SHADOW_IN True True 2 GTK_POLICY_AUTOMATIC True GTK_SHADOW_IN True False GTK_WRAP_CHAR False False True 3 <b>Messages</b> True label_item True True True 2 0 GTK_SHADOW_IN True True 2 GTK_POLICY_AUTOMATIC GTK_SHADOW_IN True False GTK_WRAP_CHAR False False True 3 <b>Critical Messages</b> True label_item True True 2 1 True 2 GTK_RESIZE_QUEUE True True False False 2 True True 2 GTK_POLICY_NEVER GTK_POLICY_NEVER GTK_SHADOW_IN True GTK_SHADOW_NONE True True True 0 2 Weight: False True True 0 0 False False True 0 / False False 1 True 0 False False 2 1 True True 1 2 Count: GTK_JUSTIFY_RIGHT False False True True 0 0 1000000 1 10 10 1 True False 1 False 1 False 3 True True 2 GTK_POLICY_NEVER GTK_POLICY_NEVER GTK_SHADOW_IN True 2 GTK_SHADOW_NONE True vertical True 0 2 Range: False False 1 True False 1 1 True True 1 2 GTK_JUSTIFY_RIGHT True 0 2 1 False 2 True False 3 True True 0 2 Speed (Weapon): False False True 0 2 0 GTK_JUSTIFY_RIGHT False False 1 True 2 ( False False 2 True 0 2 0 GTK_JUSTIFY_RIGHT False False 3 True 0 2 ) 4 False 4 False 4 True True 2 GTK_POLICY_NEVER GTK_POLICY_NEVER GTK_SHADOW_IN True GTK_SHADOW_NONE True vertical True True 2 2 True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Dam 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 WC GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL False False True False 2 1 True 2 2 True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Armor 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 AC GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL False False 2 True False 2 3 True False 2 4 True 7 2 True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 6 7 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 5 6 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 4 5 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 3 4 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 1 2 0 GTK_JUSTIFY_RIGHT 1 2 2 3 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Cha 6 7 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Pow 5 6 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Wis 4 5 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Int 3 4 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Con 2 3 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Dex 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Str GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL False False 5 False False True False 2 1 True False 2 2 True vertical True True 0 2 HP: False False True 0 False False 1 True / False False 2 True 0 False False 3 False False 1 20 True 0.10000000149 False False 1 True True 0 2 SP: False False True 0 False False 1 True / False False 2 True 0 False False 3 False False 1 2 20 True 0.10000000149 False False 3 True True 0 2 Grace: False False True 0 False False 1 True / False False 2 True 0 False False 3 False False 1 4 20 True 0.10000000149 False False 5 True True 0 2 Food: False False True 0 False False 1 True / False False 2 True 0 False False 3 False False 1 6 20 True 0.10000000149 False False 7 True True 0 2 Exp: False False True 0 False False 1 True / False False 2 True 0 False False 3 False False 1 8 20 True 0.10000000149 False False 9 2 3 False False 5 True True 1 crossfire-client-1.70.0/gtk-v2/glade/dialogs.glade0000644000014500000120000072302611731277014016601 00000000000000 Message Control center-on-parent False True vertical True 16 <b>Message Suppression and Routing</b> True False 0 True False 1 True 3 4 True 2 2 True 1 Timer right 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_FILL 2 True True The maximum time that a message may reside in the buffer before it must be displayed. 8 ticks is approximately 1 second. 2 True True 16 1 96 1 8 0 True True 1 2 1 2 GTK_SHRINK | GTK_FILL GTK_FILL 2 2 True True The number times a message may occur before it must be displayed. If a message is not already in the buffer, it is always output one time with no delay. 2 True True 16 1 96 1 8 0 True True 1 2 GTK_SHRINK | GTK_FILL GTK_FILL 2 2 True 1 Output Count right GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_FILL 2 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_FILL True 2 3 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 2 Critical 3 4 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 2 2 True Choose one or more message panels that should display each message type. 0 2 Messages 3 4 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 2 2 True Choose one or more message panels that should display each message type. 0 2 Messages 2 3 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 2 2 True 4 2 3 GTK_SHRINK | GTK_FILL 2 True 0 2 Suppress True 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 2 2 True When identical messages arrive in close succession, do not output them all, but report how many arrived. 0 2 Duplicates 1 2 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 2 2 False 2 True False 3 True 2 spread Save True True True Apply and save the currently displayed settings to disk. False False 0 Load True True True Restore the previously saved settings from disk. False False 1 Defaults True True True Load the default settings built into the client. False False 2 Apply True True True Apply the currently displayed settings. False False 3 Close True True True True Apply the displayed settings and close the dialog. False False 4 False 2 4 500 500 About Crossfire center False True vertical True False 0 True True in True True False 1 1 True False 2 2 True Close True False False True False False 1 0 False 2 3 Configuration Window center-on-parent False True 5 5 5 5 True vertical True True 1 True 5 5 5 5 True vertical True 7 True True 0 in True 0 0.30000001192092896 12 True vertical Enable Sound Support True True False True 0 True False 0 Beep When Food is Low True True False True 0 True False 1 True <b>Sound</b> True label_item False 0 True 0 in True 0 0.69999998807907104 12 True vertical Echo Bound Commands True True False When a keybind is used, show the actual commands that are sent. True 0 True False 0 Fast TCP Send True True False May decrease latency at the expense of using more out-going bandwidth. True 0 True False 1 Messages timestamp True True False If activated, all messages have a . True 0 True False 2 True <b>Miscellaneous</b> True label_item False 1 False 0 True 0 in True 5 5 12 True 6 4 5 2 True 0 5 Layout of the client window. Changes take effect upon restart of the client. 2 4 5 6 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 170 True 2 5 6 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True cursor 0 5 Map Size. A larger map has more information, but uses more CPU and bandwidth. Changes to either width or height take effect on the next server connection. 3 4 3 5 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 Map Height 1 2 4 5 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 Map Width 1 2 3 4 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 Changes take effect upon restart of the client. 3 4 3 True Affects the size of individual map tiles. 0 Map Scale Percentage 1 2 2 3 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True Affects the size of graphical icons in the inventory and floor views. 0 Icon Scale Percentage 1 2 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 Command Input Lines 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True True 25 11 25 1 0 0 1 4 5 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True True 25 11 25 1 0 0 1 3 4 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True True 100 1 100 1 0 0 1 2 3 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True True 100 1 100 1 0 0 1 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True True 1 1 100 1 0 0 1 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 2 3 3 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 2 True 2 3 3 5 GTK_FILL 4 True 2 <b>Layout</b> True label_item False 1 True cursor 0 in True 12 True 3 5 2 2 Gradually change the stat bar color based on how full it is. This slightly increases the client CPU usage. True True False True True 5 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL 170 True 4 1 2 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK True 0 5 User interface theme to use for the client. "None" selects the default system theme. 4 5 1 2 GTK_SHRINK GTK_SHRINK | GTK_FILL 170 True 4 2 3 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK True 0 5 The tile set to use. Each tile, or face, set has a different predominant graphical style. Changes takes effect on the next server connection. 4 5 2 3 GTK_SHRINK GTK_SHRINK | GTK_FILL True 2 <b>Theme</b> True label_item False 2 True Sound and general user interface settings. General Client Options True False tab True 5 5 5 5 True vertical True 0 in True 12 True 2 2 5 Download all images from server at connection time. Used in conjunction with Cache Images, this option prevents ? tiles on the map. Client startup/connection time is significantly increased. True True False True 0 0 True 2 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL Cache Images (Decreases bandwidth needed, but requires more local diskspace and map tiles may appear with ? until image is downloaded) True True False True 0 0 True 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 5 <b>Image Caching</b> True label_item False 0 True 0 in True 12 True 7 4 5 True 0 0 5 Display mode. OpenGL provides the best quality and loads the CPU the least. SDL is the next best mode, followed by Pixmap. Depending on your window system and available driver libraries, all of these options may not be available. 1 4 2 4 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL Enable smoothing - The map looks nicer, but CPU loading and bandwidth requirements increase. True True False True True 4 1 2 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL Enable fog of war - Map tiles not in the character's line-of-sight grey out rather than black out. True True False True 0 True 4 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 0 0 5 SDL map lighting options. These settings only apply to the SDL display mode. OpenGL uses its own lighting method, and Pixmap mode always uses per tile lighting. Best per pixel gives the best result but is slowest. Tile is fastest, but is the worst quality. None only affects how the objects are drawn on the client. The server determines what map tiles are visible based on map lighting levels. 1 4 4 6 GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 3 4 GTK_SHRINK | GTK_FILL True 5 6 GTK_SHRINK | GTK_FILL True 4 6 7 GTK_FILL True 0 0 3 True 2 3 GTK_FILL GTK_FILL True 0 0 3 True all None Best Per Pixel Fast Per Pixel Per Tile 4 5 GTK_EXPAND | GTK_SHRINK | GTK_FILL GTK_SHRINK | GTK_FILL True 5 <b>Display Mode</b> True label_item 1 1 True Miscellaneous, Image Cache, Map, Display Mode, Lighting Display &amp; Image Cache Options True 1 False tab 0 True False 5 1 True spread Save True True True True True False False 0 Apply True True True True True False False 1 Close Window True True True True True False False 2 False 2 Spell Information center-on-parent 800 600 False True vertical True True in True 1 0 True 5 True 5 True Attuned False 0 True 5 True Repelled False False 5 1 True 5 True Denied False 2 True 5 True Normal False False 5 3 True Spell Options False False 4 True True 5 5 False 1 1 True False 2 2 True spread Cast True True False True False False 0 Invoke True True False True False False 1 Close Window True True False True False False 2 False 2 3 600 Keybindings center-on-parent False True vertical True True in True 1 0 True Keybinding Modifiers: False False 1 1 True True Run True True False True True False False 0 Fire True True False True True False False 1 Alt True True False True True False False 2 Meta True True False True True False False 3 Stay in Edit Mode True True False True True Keybinding will not be executed immediately - instead, will stay in edit mode so additional text can be entered before command is executed. False False 4 False 2 True True Key: False False 0 True True 11 1 True Command: False False 2 True True 5 3 False 1 3 True False 2 4 True spread Remove Binding True True False True False False 0 Update Binding True True False True False False 1 Add True True False True False False 2 Clear Fields True True False True False False 3 Close Window True True False True False False 4 False 2 5 True Metaserver Selection center-on-parent 805 407 False True vertical True 5 3 Select a Server to Play On False False 0 True False 2 1 True True automatic automatic True True 2 True 3 True Or enter a server name: False False 0 True True 15 1 False False 3 True True Status: False False 3 0 True False False 1 False False 4 True False 2 5 True spread Connect True False False False True False False 0 gtk-quit True True False Escape also quits. True False False 1 False 2 6 Account Login center-on-parent dialog False True queue True 0 5 5 5 5 True vertical True 0 5 <b>Welcome to Crossfire</b> Please enter your account name and password. If you do not have an account, create one now. If you already have characters on this server, you may attach them to a the new account. True False False 0 True 5 True vertical True 0 in True 5 5 True vertical 5 True 0 Name False 0 True True 40 True False 1 True 0 Password False 2 True True False True False 3 True 0 5 True word-char 40 False 4 True <b>Account</b> True label_item False 0 True 0 in True 5 5 5 True True never automatic in 350 100 True False True False word 5 5 True <b>News</b> True label_item 1 False 0 True 0 in True 5 5 5 True True never automatic in 350 99 True False True False word 5 5 True <b>Message of the Day</b> True label_item False 1 False 1 True False 5 2 True 5 spread Login True True True False False 0 Create Account True True True 0.56000000238418579 False False 1 Return to Metaserver Selection True True True False False 2 Exit Client True True True False False 3 False 3 Create Account center-on-parent False True queue True 0 5 5 5 5 True vertical True 5 <b>Create New Account</b> True False 0 True 5 True 0 in True 5 5 5 True vertical 5 True 0 Name: 0 True True True 1 True 0 Enter Password: 2 True True False True 3 True 0 Confirm Password: 4 True True False 5 True 5 6 True <b>New Account</b> True label_item False 0 True 0 in True 5 5 5 True True never automatic True False True False word 5 5 True <b>Rules</b> True label_item 1 False 1 True False 5 2 True spread Create Account True True True False False 0 Cancel True True True False False 1 False 3 Character Selection center-on-parent False True queue True 5 5 5 5 True vertical True <b>Choose a Character to Play</b> True False 0 True 5 Choose a character to play or create a new character. If you already have a character on this server that is not associated with an account, click the Add Character button. False 1 True 5 True 0 in True 5 5 5 True True automatic automatic in 500 True True True <b>Characters</b> True label_item 0 True 0 in True 5 5 5 True True never automatic in 300 250 True False True False word 5 5 True <b>Rules</b> True label_item 1 2 True False 5 3 True spread Play Character True True True False False 0 Create Character True True True False False 1 Add Character True True True False False 2 Change password True True True False False 3 Return to Account Login True True True False False 4 False 4 Add Character to Account center-on-parent False True queue True 5 5 5 5 True vertical True <b>Add Character to Account</b> True False 5 0 True 0 in True 5 True vertical True True vertical 5 True 0 1 Name: False 0 True True True False 1 True 0 1 Password: False 2 True True False False 3 False 5 0 True 5 5 This is where characters are added to an account if they were created before account logins existed. Enter a character name and password to add this account. The character must already exist on the server. False 1 False 0 True 0 False 1 True <b>Character</b> True label_item False 1 True False 5 2 True spread Add Character True True True False False 0 Return to Character Selection True True True False False 1 False 3 center-on-parent 440 250 False True queue out True 5 5 5 5 True vertical True 5 <b>Create New Character</b> True False 0 True 0 in True 5 5 5 True vertical 5 True 0 1 5 Name: 0 True True 1 True 5 2 True <b>Character</b> True label_item False 1 True False 5 2 True spread Create Character True True True False False 0 Cancel True True True False False 1 False 3 Change account password center-on-parent False True queue True 0 5 5 5 5 True vertical True 5 <b>Change account password</b> True False 0 True 5 True 5 5 5 True vertical 5 True 0 Current password: 0 True True False True 1 True 0 Enter new password: 2 True True False True 3 True 0 Confirm Password: 4 True True False 5 True 5 6 True <b>Change account password</b> True label_item False 0 False 1 True False 5 2 True spread Change password True True True False False 0 Cancel True True True False False 1 False 3 Skill Information center-on-parent 500 600 False True vertical True True in True True 1 0 True False 2 2 True spread Ready Skill True True True True False False 0 Use Skill True True True True False False 1 Close Window True True True True False False 2 False 2 3 600 center-on-parent True vertical True True Character Name 0 True True 1 0 100 True 9 5 True True Strength determines how much a character can carry, as well as how much effective the character is with melee weapons. Fighters need a high strength Strength 1 2 True True Constitution is the physical hardiness of the character. High constitution well grant extra hit points for each level. Constitution is important for all classes. Constitution 3 4 True True Wisdom is how in tune the character is with their god. High wisdom makes it easier for a character to learn new prayers and is largely responsible for how many grace points the character has. Wisdom is a key attribute for priests. Wisdom 5 6 True True Power is a measurement of how in tune the character is with magic forces. It is a major factor is how many mana points the character has, and has a lesser influence on how many grace points the character has. High power is important for wizards. Power 6 7 True True Charisma is a measurement of likability for the character. If the character has a high charisma, creatures the character meet will act more favorably to the character. The main effect of this is the pricing the character gets in shops. Charisma 7 8 True True Intelligence is a measure of how smart the character is. High intelligence gives additional mana points for casting spells and makes it easier for the character to learn new spells. Intelligence is a key attribute for wizards. Intelligence 4 5 True True Dexterity is how quick and nimble the character is. High dexterity makes the character harder to hit, lets the character move faster as well as attack faster. Dexterity 2 3 True True 1 1 20 1 10 0 1 2 1 2 True True 1 1 20 1 10 0 1 2 2 3 True True 1 1 20 1 10 0 1 2 3 4 True True 1 1 20 1 10 0 1 2 4 5 True True 1 1 20 1 10 0 1 2 5 6 True True 1 1 20 1 10 0 1 2 6 7 True True 1 1 20 1 10 0 1 2 7 8 True True Adjust your base attributes to be between 1 and 20. The characters final attributes after adjustment for class and race can not be below one, but can be above 20. Base Attribute 1 2 True True Select the race you want to play. Different races have different advantages and disadvantages, and some are suited more towards certain classes than others. 2 3 True 2 3 2 3 True 2 3 3 4 True 2 3 4 5 True 2 3 5 6 True 2 3 6 7 True 2 3 7 8 100 True Unspent points/ Race & Class Description 8 9 50 True 1 2 8 9 True 3 4 True 2 3 1 2 True 3 4 1 2 True 3 4 2 3 True 3 4 3 4 True 3 4 4 5 True 3 4 5 6 True 3 4 6 7 True 3 4 7 8 True Total 4 5 True 4 5 1 2 True 4 5 2 3 True 4 5 3 4 True 4 5 4 5 True 4 5 6 7 True 4 5 5 6 True 4 5 7 8 True True automatic automatic 100 150 True True False word-char 2 3 8 9 True True automatic automatic 100 150 True True False word-char 3 4 8 9 1 True 0 1 2 True 0 1 3 True 0 1 4 True 0 1 5 True 0 1 6 True 0 1 7 True True Status: False False 5 0 True 1 8 True Done True True True 0 Choose Starting Map True True True 1 Return to Character Selection True True True 2 9 600 300 center-on-parent True vertical True Please choose your starting map False 0 True True 0 0 True False False 0 True True automatic automatic True True word-char 1 1 True Done True True True False 0 Go back to character creation window True True True False 1 False False 3 2 crossfire-client-1.70.0/gtk-v2/glade/meflin.gladep0000644000014500000120000000051011731277014016573 00000000000000 GTK V2 - Meflin meflin meflin FALSE crossfire-client-1.70.0/gtk-v2/glade/un-deux.glade0000644000014500000120000040377011731277014016545 00000000000000 1180 925 Crossfire Client - GTK v2 1180 925 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True False 1 True False 2 True False False 3 False False 0 True True 875 True True 730 True True 240 True vertical True 0 none True True True never in True True False 2 2 False False True 3 <b>Messages:</b> True label_item 0 True True False False 2 1 True True never never in True none True 2 True 0 0 True 0 1 False False 2 False True True True 100 True 0 in True True vertical True 5 True Player: False False 5 0 True Level: False False 5 1 True Experience: False False 5 2 False False 0 True 5 True Speed False False 5 0 True False False 1 True Weapon Speed False False 5 2 True False False 3 1 True 5 True Range: False False 5 0 2 True 5 True WC False False 5 0 True False False 1 True Dam False False 5 2 True False False 3 True AC False False 5 4 True False False 5 True Armor False False 5 6 True False False 7 False False 3 True 5 True Str False False 5 0 True False False 1 True Dex False False 5 2 True False False 3 True Con False False 5 4 True False False 5 True Int False False 5 6 True False False 7 True Wis False False 5 8 True False False 9 True Pow False False 5 10 True False False 11 True Cha False False 5 12 True False False 13 False False 4 True <b>Core Stats</b> True label_item True True True True 2 False True True Map False tab True 1 True Magic Map 1 False tab True True True True False True True True 240 True 0 none True True True never in True True False 2 2 False False True 3 <b>Critical Messages:</b> True label_item False True True True 280 True vertical True True 0 2 HP: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 0 15 True 0.10000000149 False False 1 True True 0 2 Spell Points: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 2 15 True 0.10000000149 False False 3 True True 0 2 Grace: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 4 15 True 0.10000000149 False False 5 True True 0 2 Food: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 6 15 True 0.10000000149 False False 7 True True 0 2 Exp: False 0 True 0 False False 1 True / False False 2 True 0 False False 3 False 8 15 True 0.10000000149 False False 9 False True True 0 none True 2 True True never never in True none True 6 6 True True <b>Protections:</b> True label_item True True True True True True False True True True 730 True 0 none True True vertical True True True never True True True True 11 10 True Icons False tab 0 True True True 0 2 Inventory: 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True Count False False 5 2 True True 0 0 1000000 1 0 0 1 True 3 False 1 True <b>Inventory:</b> True label_item False True True 0 none True True True 2 never in True True True <b>Ground:</b> True label_item True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/dialogs.gladep0000644000014500000120000000051011731277014016743 00000000000000 Common Dialogs gtk-v2 dialogs FALSE crossfire-client-1.70.0/gtk-v2/glade/caelestis.glade0000644000014500000120000042511711731277014017133 00000000000000 Crossfire Client - GTK v2 1275 945 1180 925 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True False 1 True False 2 True False False 3 False False 0 1275 920 True True 290 True True 700 True vertical True True True 0 2 Inventory: 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True Count False False 5 2 True True 0 0 1000000 1 0 0 1 True 3 False 0 True True True never True True True True 11 10 True Icons False tab 1 False True True 3 vertical True You see: False False 2 0 True True never True True 1 True True False True True True 175 True True 580 True True 2 True True 250 True 2 queue True vertical True True 0 Player: False False 3 0 True 0 Level: 10 False False 5 1 False False 3 0 True True 0 Skill False False 3 0 False False 4 1 True True 0 Speed 6 False False 3 0 True False False 1 False False 3 2 True True 0 Weapon Speed False False 3 0 True False False 1 False False 4 3 True True 0 Experience: False False 3 0 False False 3 4 True True 0 5 False False 5 0 True 0 5 False False 5 1 False False 4 5 False True True 2 queue True 2 6 3 4 True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 4 5 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 3 4 GTK_FILL True True 0 False False 0 True / False False 1 True 0 0 False False 2 2 3 2 3 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 1 2 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 GTK_FILL True 0 2 Exp: 4 5 GTK_FILL True 0 2 Food: 3 4 GTK_FILL True 0 2 Grace: 2 3 GTK_FILL True 0 2 SP: 1 2 GTK_FILL True 0 2 HP: GTK_FILL True 0.10000000149 1 2 4 5 2 True 0.10000000149 1 2 3 4 2 True 0.10000000149 1 2 2 3 2 True 0.10000000149 1 2 1 2 2 True 0.10000000149 1 2 2 True 0 3 5 6 GTK_FILL True True True Character False tab True 2 queue True 6 6 True 1 True Skills & Experience 1 False tab False True True True 2 True 5 7 6 5 5 True 0 1 6 6 7 GTK_FILL True 0 1 6 5 6 GTK_FILL True 0 1 6 4 5 GTK_FILL True 0 1 6 3 4 GTK_FILL True 0 1 6 2 3 GTK_FILL True 0 5 6 1 2 GTK_FILL True 0 3 4 1 2 GTK_FILL True 0 Armour 4 5 1 2 GTK_FILL True 0 Armor Class 2 3 1 2 GTK_FILL True 0 5 6 GTK_FILL True 0 Damage 4 5 GTK_FILL True 0 3 4 GTK_FILL True 0 Weapon Class 2 3 GTK_FILL True 0 Charisma 6 7 GTK_FILL True 0 Power 5 6 GTK_FILL True 0 Wisdom 4 5 GTK_FILL True 0 Intelligence 3 4 GTK_FILL True 0 Constitution 2 3 GTK_FILL True 0 1 2 1 2 GTK_FILL True 0 Dexterity 1 2 GTK_FILL True 0 1 2 GTK_FILL True 0 Strength GTK_FILL True Core Statistics False tab True 2 queue True True never True True False False False 1 True 3 Critical Messages True 1 False tab True 6 6 True 2 True Protections 2 False tab True True False True True True 580 True True 2 False True True Map False tab True 1 True Magic Map 1 False tab False True True vertical True 0 none True 2 queue True True never True True False False False True 3 <b>Messages</b> True label_item 0 True True False False 2 1 True True True True True True 1 crossfire-client-1.70.0/gtk-v2/glade/oroboros.glade0000644000014500000120000042761011731277014017023 00000000000000 Crossfire Client - GTK v2 1019 690 True vertical True True True _File True True Quit Character True True _Quit True True _Client True True Configure True True Disconnect True True Keybindings True True Configure message routing and buffering. Message Control True True Save Window Position True True Player True True Spells True True Skills True True Pickup True True Don't Pickup True True Stop Before Pickup True True Armor True True Body Armor True True Boots True True Cloaks True True Gloves True True Helmets True True Shields True True Books True True Skillscrolls True True Normal Books & Scrolls True True Spellbooks True True Drinks True True Food True True Flesh True True Keys True True Magical Items True True Potions True True Valuables (Money & Gems) True True Wands/Rods/Horns True True Jewels True True Containers True True Weapons True True All Weapons True True Missile Weapons True True Bows True True Arrows True True Weight/Value True True Ratio Pickup Off True True True Ratio >= 5 True True ratio_pickup_off True Ratio >= 10 True True ratio_pickup_off True Ratio >= 15 True True ratio_pickup_off True Ratio >= 20 True True ratio_pickup_off True Ratio >= 25 True True ratio_pickup_off True Ratio >= 30 True True ratio_pickup_off True Ratio >= 35 True True ratio_pickup_off True Ratio >= 40 True True ratio_pickup_off True Ratio >= 45 True True ratio_pickup_off True Ratio >= 50 True True ratio_pickup_off True Ignore cursed True True _Help True True _About True False False 0 True True 0 5 False False 0 True 0 5 False False 1 False False 1 False False 0 1019 600 True True 350 True True 540 True True 175 True vertical True True 2 True 2 queue True True never True True False False False True 3 Messages True False tab True 2 queue True True never True True False False False 1 True 3 Critical Messages True 1 False tab 0 True True False False 2 1 False True True 2 queue True 2 vertical True True True Inventory: False False 10 0 True True 0 0 False False 0 True 0 / False False 1 True 0 False False 2 1 True Count False False 5 2 True True 0 0 1000000 1 0 0 1 True 3 False 0 True True True never True True True True 11 10 True Icons False tab 1 True True False True True 2 queue True 3 vertical True You see: False False 2 0 True True never True True 1 True True False True True True 175 True True 2 True True 200 True 2 queue True vertical True True 0 Player: False False 3 0 True 0 Level: 10 False False 5 1 False False 3 0 True True 0 Skill False False 3 0 False False 4 1 True True 0 Speed 6 False False 3 0 True False False 1 False False 3 2 True True 0 Weapon Speed False False 3 0 True False False 1 False False 4 3 True True 0 Experience: False False 3 0 False False 3 4 False True True 2 queue True 2 5 3 4 True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 4 5 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 3 4 GTK_FILL True True 0 False False 0 True / False False 1 True 0 0 False False 2 2 3 2 3 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 1 2 GTK_FILL True True 0 False False 0 True / False False 1 True 0 False False 2 2 3 GTK_FILL True 0 2 Exp: 4 5 GTK_FILL True 0 2 Food: 3 4 GTK_FILL True 0 2 Grace: 2 3 GTK_FILL True 0 2 SP: 1 2 GTK_FILL True 0 2 HP: GTK_FILL True 0.10000000149 1 2 4 5 2 True 0.10000000149 1 2 3 4 2 True 0.10000000149 1 2 2 3 2 True 0.10000000149 1 2 1 2 2 True 0.10000000149 1 2 2 True True True Character False tab True 2 2 2 2 True 2 True 0 in True True 5 7 6 5 5 True 0 1 6 6 7 GTK_FILL True 0 1 6 5 6 GTK_FILL True 0 1 6 4 5 GTK_FILL True 0 1 6 3 4 GTK_FILL True 0 1 6 2 3 GTK_FILL True 0 5 6 1 2 GTK_FILL True 0 3 4 1 2 GTK_FILL True 0 Armour 4 5 1 2 GTK_FILL True 0 Armor Class 2 3 1 2 GTK_FILL True 0 5 6 GTK_FILL True 0 Damage 4 5 GTK_FILL True 0 3 4 GTK_FILL True 0 Weapon Class 2 3 GTK_FILL True 0 Charisma 6 7 GTK_FILL True 0 Power 5 6 GTK_FILL True 0 Wisdom 4 5 GTK_FILL True 0 Intelligence 3 4 GTK_FILL True 0 Constitution 2 3 GTK_FILL True 0 1 2 1 2 GTK_FILL True 0 Dexterity 1 2 GTK_FILL True 0 1 2 GTK_FILL True 0 Strength GTK_FILL True <b>Core Stats</b> True label_item 0 True 0 in True 5 5 5 5 True 6 6 True <b>Protections</b> True label_item 1 1 True Core Stats &amp; Protections True 1 False tab True True True 2 queue True True 2 False 500 455 True True Map False tab True 1 True Magic Map 1 False tab True True True True 1 crossfire-client-1.70.0/gtk-v2/TODO0000644000014500000120000000305511731277014013566 00000000000000This file is meant to be a short list of things that need to be done, in no particular order (thus, unnumbered) Bugs to fix: - Fix or implement the scroll bar handles on the map display. Other work: - Make an image for the 'icons' inventory tab (perhaps an eye?) - Implement the arrow buttons to scroll map around so that the player does not have to be in the middle (eg, after you thing you have completed a level, you should be able to scroll around and look at the fog of war spaces and see if you've missed anything). - Add a window for configuration selection - Perhaps a better splash graphic to show while not connected, since there is a lot more space that is not being used. - Perhaps tie in some display options with scripting? Eg, and inventory tab in which an external script can be used to determine whether to show objects or not, perhaps same for information messages? - Implement drag and drop for the inventory/look windows (would allow moving objects from a container directly to the ground for example. - Change container handling - the client can properly handle multiple containers now. On the client side, not much needs to be changed. On the server side, the server will need to update all active containers when their contents change. - Add support for lower screen resolution (1024x768). With libglade support, this may already be taken care of, or it may also involve things like letting a user pick a smaller font in various places.. - Add split window support (probably requires second glade config file) setup) crossfire-client-1.70.0/gtk-v2/README-dev0000644000014500000120000002213011731277014014525 00000000000000The client was designed using glade-2 (Glade Designer). Any changes to the graphical elements should be done with the Designer - otherwise such changes may get blown away the next time someone really does update it with glade-2. The Glade files are located in the glade subdirectory under this directory. The original client layout is represented by the gtk-v2.glade, gtk-v2.gladep, dialogs.glade, and dialogs.gladep files. Other .glade and .gladep files in the directory are alternative layouts for the client's main window. The original author's main motivations for writing the client were: 1) The old client layout wasn't originally designed for the map window size that people are now using. 2) Using an interface designer will make it much easier to add new window elements in the future. 3) Having a GTK 2 compliant client was considered a positive thing. Due to point #1 above, the interface was designed for a window size of about 1200x1000. That is to say, on a system whose resolution is 1280x1024, the window will use almost the entire screen. It is possible to play this client on a 1024x768 desktop, but the default layout is not ideal for such a small screen. Some of the alternative root window layouts are more viable when screen real-estate is on the low side. The original author had no particular interests in patches to make it work on smaller screens, and originally stated that those with a requirement for smaller screens needed to simply use one of the other clients (Gtk v1 client for example). The rationale for this stance was that there is a perception that the older client has a lot of cruft trying to deal with different size screens, options to change various sizing, etc. Though the GTK v2 client is supposed to work at 1280x1000, the information density is far lower than that of the original GTK v1 client, and this is not palatable to some players. The author also has stated that the GTK2 client is the "most official" client, and has put forward the idea that if the newer GTK client could be reworked to resolve differences of opinion about the layout, there may be a benefit to phasing out the older clients. In fact, some Linux distributions appear to be ceasing to build the older GTK client - likely because it is not realized that it may be built with the GTK2 libraries. Considering the above issues, an endeavor was undertaken to convert the client to use the libglade interface to allow players to have an ability to redesign the main window layout without requiring code changes to the clienti, and to preclude a need to recompile the client in order to realize a new layout. The libglade version of the client should make it easier for players to create main window layouts that appeal to a variety of personal preferences. To support redesign of the layout, a prospective UI layout must not rename widgets that accept or display information. For the most part, container widgets may be renamed to suite the author. The main exception is that hpane and vpane widgets must be named with consistent names so that the client can save and restore window positions in the gwinpos2 file. The current client codebase expects hpane and vpane (resizeable) widgets to be named generically in the form "hpaned_*" or "vpaned_*". The code to Save Window Position auto-detects the widgets in order to preserve the user's pane sizing preferences. Below are some of the core widgets: window-root: The core window. table-map: table that contains the map and scrollbars. drawingarea-map: The map drawing area. hscrollbar-map: scrollbar to move the map horizontally. vscrollbar-map: scrollbar to move the map horizontally. button-map-recenter: When clicked, map recenters. drawingarea-magic-map: Area to draw the magic map Note: The reason scrollbars are used instead of a simple scrolled window is that the author does not believe it is feasible to draw much more than what the player is currently viewing. If a scrolled window is used, then we may end up drawing a lot of stuff the player is not seeing, as well as not redrawing fog stuff the player is seeing. By using scrollbars, it is easier to trap when the player tries to scroll the map, and redraw the new portion, as well as track where the map is currently positioned, without needing a much larger draw area. vpaned-info-inventory: seperator for the text window vs inventory area. vbox-info-entry: Top portion is text information, bottom is area for text entry. entry-commands: Where the player enters extended commands. notebook-info: notebook for different text information textview-info1: area where messages are displayed. textview-info2: area where messages are displayed. The two info are in a tabbed area - more tabs could in fact be added. The idea is to keep the two info panes as before, but in less space. The primary tab (1) will get all messages. Important messages (colored in this case) will also go to tab 2. Perhaps down the road, there will be smarter filtering of these messages. label-inv-weight: Shows current weight of characters inventory. spinbutton-count: Current count set by the player. notebook-inv: Notebook for the various inventory panes. label-stats-hp: label-stats-sp: label-stats-grace: label-stats-food: Text label showing hp/sp/ progressbar-hp: progressbar-sp: progressbar-grace: progressbar-food: progressbar for the stats. label-str, label-dex, label-con,label-int, label-wis, label-pow, label-cha, label-wc, label-dam, label-ac, label-armor, label-range, label-exp: Actual stat value for those values. table-stats-exp: Table hold the skills and exp values. Note that initializing this is not done in Glade - it is easier to do on the client side, so that it can make an array of labels for this. table-protections: Like table-stats-exp above, but this is for protections. Note that the inventory tabs are done in the code - Glade really doesn't let one fully set up a gtktreewidget (the number of columns, renderer type, etc), so it just made it easier to do in the actual code.) For more information regarding the development of alternative .glade layout files, see the README file in the glade subdirectory. Here follow some notes for those wishing to do development: 1) Send a note to crossfire@metalforge.org about what you plan to work on so that multiple people don't work on the same thing. 2) Try to work with up to date SVN to minimize merge problems. 3) If looking for something to work on, look at the TODO file. 4) Try to add new graphical elements using glade-2 and not coding them in by hand - this will make it easier for future modifications. 5) Glade will create various files not included in SVN - these are not used in the current client. The most notable are callbacks.c and interface.c. While Glade will create these files when the "Build" function is selected in the designer, the use of libglade obsoletes their use except during code development. The callbacks.c file may be used as a reference for function prototypes needed to support the interface, and interface.c may be used as a reference for the g_signal_connect() and g_signal_connect_swapped() calls that must appear in the client code. 6) gtk2proto.h should be used to collect prototype information needed by the .c sources. It is generated using `make proto`. The cproto program must be installed for this to work. Note that `make proto` generates a lot of error messages on the console during operation, but this does not mean the process failed. 7) Using a menubar with icons next to the action for some reason was observed to take 10 seconds to render on one system, and freezes most everything else while that is happening. For that reason, menubars that include icons are not used. 8) The GtkTree widget seems very slow - the original author has not fully determined why, but indicates that the code design appears to be correct. This may imply tha the widget itself has performance issues. 9) All source files include the standard copyright information header. The Glade generated files do not. This should be a reminder that the file are different, and are not to be added to the project. If you add new source files, make sure to include the copyright. All comment strings should be named as 'rcsid_gtk2_' 10) The source files are arranged by functionality, so try to keep new code functionality related to similar elements in the same files, but at the same time, don't put so much stuff in one file to make it unmanageable. 11) One of the motivations was to use pure GTK v2 calls and not use any of the deprecated wigets/toolkits withing GTK. Please try to keep to that model (note that this does not mean things are 100% perfect, as for widgets that are not deprecated, I often copied the code completely over from the GTGTK client, but certain functions may be deprecated in that copied code). But dealing with that is certainly easier down the road if/when those functions really disappear than having to redo code for a widget that just no longer exists. crossfire-client-1.70.0/gtk-v2/crossfire-client.desktop0000644000014500000120000000065211731277014017744 00000000000000[Desktop Entry] Type=Application Name=Crossfire GTK Client V2 Name[en]=Crossfire GTK Client V2 GenericName=Crossfire Client GenericName[en]=Crossfire Client Comment=Client for Crossfire, a multiplayer graphical RPG and adventure game Comment[en]=Client for Crossfire, a multiplayer graphical RPG and adventure game Icon=crossfire-client Exec=crossfire-client-gtk2 Terminal=false Categories=Game;AdventureGame;RolePlaying;GTK; crossfire-client-1.70.0/gtk-v2/themes/0000755000014500000120000000000011731277217014445 500000000000000crossfire-client-1.70.0/gtk-v2/themes/Makefile.am0000644000014500000120000000166411731277012016421 00000000000000# # Makefile for crossfire client # # Copyright (C) 2007 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com themedir=$(pkgdatadir)/themes dist_theme_DATA = Black Standard crossfire-client-1.70.0/gtk-v2/themes/Black0000644000014500000120000004715511731277012015331 00000000000000############################################################################ # http://www.gnu.org/software/emacs/manual/html_node/emacs/GTK-styles.html # has good information that relates to the content of this theme file. # # Where font_name appears, ie. font_name = "Sans Bold Italic 9", the format is # a Pango string, so refer to that documentation for details. One resource is # http://www.gtk.org/api/2.6/pango/PangoMarkupFormat.html, but briefly, there # are various options that can be specified: family, style, weight, size. # # Spaces inside the font name is normal. The font name and options are # generally delimited with space characters. Font-family is a comma separated # list. Style includes things like Italic, Normal, Oblique. Size is in # points with no units. The default size appears to be 10. Weight is also # supported and includes choices like: ultralight, light, normal, bold, # ultrabold, heavy. The font descriptors do not seem to be case sensitive. # It may take experimentation to see what works. It appears, for example, # that all weight identifiers may not be supported for all fonts. # This makes everything black background and white foreground by # default. # style "black_bg" { # base and text are used for the treeview and entry widgets # Note that the inv_.. values below can adjust these for special # objects base[NORMAL] = "black" text[NORMAL] = "white" # The ACTIVE tabs are used for the unselected tabs in the notebooks. bg[ACTIVE] = "black" fg[ACTIVE] = "white" # foreground/background of pretty much all the other widgets bg[NORMAL] = "black" fg[NORMAL] = "white" } widget_class "*" style "black_bg" ############################################################################ # Start of Stat Bar styles ############################################################################ # The stat bars are the bars at the bottom left of the window - hp, # spell points, grace, food & exp. # The low values are used when the stat is less than 25% of its max. # The super value is used when the stat is above is max. # the normal value is used in the 25%->100% range. # # There is no requirement that these be different colors - if you # want the food value to be brown no matter what, just create # a style for food_bar, and bind that to the normal/low/super values. # this is what is done for exp, since being below 25% exp isn't really # bad. # # If you have configured the client to use gradual shading of the # stat bar colors, the gradual values are used instead. The low # as the 0 point, the normal is 100%, and super is 200%. The client # will then mix the color based on the actual value of the stat. I thought # it better to have different values, as what may look good normally may # not blend well (in particular, the standard values are not 100% # saturated since those would seem too bright. # # the reason base[SELECTED] is used for values is that is what # is used if these were being bound directly to the widget. # # if one of the styles is missing a color, the client will use # standard system wide theme defaults to draw in that state. # For the gradual color, if it is missing a color, it just will # not color it - probably not what you want. # # Note: If you are not seeing colorful stat bars as you expect, # the problem may be with the system wide theme you have chosen. # some themes modify the draw logic for the progressbar and instead # draw pixmaps (if you see striped bars, you are using such a theme). # These themes do no pay any attention to the colors we try to set - # IMO, this is a bug in the theme engine, as there isn't way # to turn that behaviour off. The only way around this would be # for the client to have its own widget to draw the bars, but then # this causes problems for those people that like that theme. # style "low_bar" { #red base[SELECTED] = "#cf0000" } style "normal_bar" { # green base[SELECTED] = "#00cf00" } style "super_bar" { base[SELECTED] = "#00cf00" } style "gradual_low_bar" { base[SELECTED] = "red" } style "gradual_full_bar" { base[SELECTED] = "green" } style "gradual_super_bar" { base[SELECTED] = "blue" } widget_class "hp_bar_normal" style "normal_bar" widget_class "hp_bar_low" style "low_bar" widget_class "hp_bar_super" style "super_bar" widget_class "hp_gradual_bar_normal" style "gradual_full_bar" widget_class "hp_gradual_bar_low" style "gradual_low_bar" widget_class "hp_gradual_bar_super" style "gradual_super_bar" widget_class "sp_bar_normal" style "normal_bar" widget_class "sp_bar_low" style "low_bar" widget_class "sp_bar_super" style "super_bar" widget_class "sp_gradual_bar_normal" style "gradual_full_bar" widget_class "sp_gradual_bar_low" style "gradual_low_bar" widget_class "sp_gradual_bar_super" style "gradual_super_bar" widget_class "grace_bar_normal" style "normal_bar" widget_class "grace_bar_low" style "low_bar" widget_class "grace_bar_super" style "super_bar" widget_class "grace_gradual_bar_normal" style "gradual_full_bar" widget_class "grace_gradual_bar_low" style "gradual_low_bar" widget_class "grace_gradual_bar_super" style "gradual_super_bar" widget_class "food_bar_normal" style "normal_bar" widget_class "food_bar_low" style "low_bar" widget_class "food_bar_super" style "super_bar" widget_class "food_gradual_bar_normal" style "gradual_full_bar" widget_class "food_gradual_bar_low" style "gradual_low_bar" widget_class "food_gradual_bar_super" style "gradual_super_bar" # It doesn't make sense to have an alert for low exp, # so set all the conditions to the same color. For graduated # color, it can IMO still be nice to change colors as you get closer. widget_class "exp_bar_normal" style "normal_bar" widget_class "exp_bar_low" style "normal_bar" widget_class "exp_bar_super" style "normal_bar" widget_class "exp_gradual_bar_normal" style "gradual_full_bar" widget_class "exp_gradual_bar_low" style "gradual_low_bar" widget_class "exp_gradual_bar_super" style "gradual_super_bar" ############################################################################ # Start of inventory/look window styles ############################################################################ # # The inv_ do not get tied to real widgets. This is because we are # controlling individual rows of the widget based on values that the # widget can not know about (magic, cursed, etc). So the client looks # up these special names and then uses the value to control how to # draw the actual rows. Note that there is no requirement that there # be 1 style/widget_class. If you want different object criteria # to use the same style, you can do that, eg, # # widget "inv_cursed" style "inv_mine" # widget "inv_magical" style "inv_mine" # # Is perfectly legal, but probably doesn't make a lot of sense. # # Note that there is no 'default' here - the default values come from # the normal widget binding. # # Note that there is no combining of values - only one of these is # used for any object. The precedence is: # unpaid > cursed > magical > applied > locked # style "inv_cursed" { text[NORMAL] = "red" } widget_class "inv_cursed" style "inv_cursed" style "inv_magical" { text[NORMAL] = "blue" } widget_class "inv_magical" style "inv_magical" # You owe gold for these style "inv_unpaid" { text[NORMAL] = "gold" } widget_class "inv_unpaid" style "inv_unpaid" style "inv_locked" { font_name = "Sans Italic" } widget_class "inv_locked" style "inv_locked" style "inv_applied" { font_name = "Sans Bold" } widget_class "inv_applied" style "inv_applied" ############################################################################ # Start of spell list styles ############################################################################ # like the inventory styles, these do not bind to a specific widget, # but rather the code uses them based on values of the spell. # style "spell_denied" { text[NORMAL] = "red" } widget_class "spell_denied" style "spell_denied" style "spell_repelled" { text[NORMAL] = "orange" } widget_class "spell_repelled" style "spell_repelled" style "spell_attuned" { text[NORMAL] = "green" } widget_class "spell_attuned" style "spell_attuned" style "spell_normal" { base[NORMAL] = "black" } widget_class "spell_normal" style "spell_normal" ############################################################################ # Start of text info style. The text info are where it actually # displays the messages. ############################################################################ # info_default is a bit special. # What info_default is used for is a supported way for the # code to find out what attributes set in the other info_... # values differ - it will basically compare the values and only set # the ones that are different. This is really just a place holder, # and you probably shouldn't put any actual values within the # style {} area. However, it must be defined for other styles # to work (if it doesn't have anything to get a difference against, # it can not set up the other styles. style "info_default" { } widget_class "info_default" style "info_default" # The extended info has the idea of different fonts: # # Normal: Standard font to use for drawing # Arcane: Perhaps better called 'old style' fonts - still clearly readable, # but should have an 'old' look. # Strange: A runic font that doesn't necessarily need to be readable - could # just be symbols. # Fixed: Fixed width font used for listings of preformatted text. # Hand: A font that should look like handwritten text. # # Note that except for the fixed font, the font you use is not likely # to have a critical effect - if you used the same font for everything, # it is unlikely to affect the play of the game. # Also, while these are defined as font names, you can also define # colors. However, other # styles may take precedence - eg, if you specify a color in the # style definition, and the message itself has color tags, those # may be used instead. # # You can use the gtk character map utility to view the fonts and get # font names. # # Note that the fonts specified here may not be ideal candidates, but # my goal here is to choose fonts that a normal installation would have # installed. You can get better fonts off the web, but since they # are not available by default, it doesn't make sense to make them # the default. # # For normal font, just use the system/theme default. #style "info_font_normal" #{ # font_name = "Sans" #} #widget_class "info_font_normal" style "info_font_normal" style "info_font_arcane" { font_name = "URW Chancery L" } widget_class "info_font_arcane" style "info_font_arcane" # With the different scripts included in unicode (and part # of gtk2), all we really need to do here is change it so that # we use the Runic script instead of Latin. However, there is # no way to do that directly with styles. What needs to be # done is some extra code added to process this as a script and # not a font perhaps. style "info_font_strange" { font_name = "Sans Italic" } widget_class "info_font_strange" style "info_font_strange" style "info_font_fixed" { font_name = "Luxi Mono" } widget_class "info_font_fixed" style "info_font_fixed" # URW Chancery L would also look good for this, but # we're using that for arcane. style "info_font_hand" { font_name = "Century Schoolbook L Italic" } widget_class "info_font_hand" style "info_font_hand" # # The first set of info_ are how to display messages that come # as a certain color from the server. Eg, the server says 'draw this in # black', and this determines how we actually draw it. For example, # when using a black background, you really don't want the text color # to be black. # Note that anything not set here (fg, bg, font) will use default # values as bound to the global widget (*), so you don't need to # specify all the values in each classification. If you don't want # different colored text, just disable all of these. # The values here match the traditional values used. style "black_text" { fg[NORMAL] = "white" } widget_class "info_black" style "black_text" style "white_text" { fg[NORMAL] = "white" font_name = "bold" } widget_class "info_white" style "white_text" style "darkblue_text" { fg[NORMAL] = "navy" } widget_class "info_darkblue" style "darkblue_text" style "red_text" { fg[NORMAL] = "red" } widget_class "info_red" style "red_text" style "orange_text" { fg[NORMAL] = "orange" } widget_class "info_orange" style "orange_text" style "lightblue_text" { fg[NORMAL] = "dodgerblue" } widget_class "info_lightblue" style "lightblue_text" style "darkorange_text" { fg[NORMAL] = "darkorange2" } widget_class "info_darkorange" style "darkorange_text" style "green_text" { fg[NORMAL] = "seagreen" } widget_class "info_green" style "green_text" style "darkgreen_text" { fg[NORMAL] = "darkseagreen" } widget_class "info_darkgreen" style "darkgreen_text" style "grey_text" { fg[NORMAL] = "grey50" } widget_class "info_grey" style "grey_text" style "brown_text" { fg[NORMAL] = "sienna" } widget_class "info_brown" style "brown_text" style "yellow_text" { fg[NORMAL] = "gold" } widget_class "info_yellow" style "yellow_text" style "tan_text" { fg[NORMAL] = "khaki" } widget_class "info_tan" style "tan_text" # these msg_.. values determine how to draw output of the # different message types - see the newclient.h and msgtypes.h file for all # the types/subytpes. With this, you can set different output styles # for all of the different message types. # # A few notes: # # 1) it is the widget_class line that binds the the style to the name that # the client uses to look it up. # Thus, you can do something like: # # style "red_text" .... # widget_class "msg_victim_was_pushed" style "red_text" # widget_class "msg_communication_say" style "red_text" # # In this way, you don't need to have a style for every msg type - a more # likely scenario is a modest number of styles, but then binding these # to the different widget names as how you want that widget to be # drawn. The _text entries used above can be re-used # for the msg types here. # # 2) Beyond normal style inheritence rules, the client itself is coded # to do some - just in that way, you don't need to list every msg # type here. For example: # # widget_class "msg_book" style "green_text" # # will result in every message of the BOOK class to be drawn in green # text. If you then add the line: # # widget_class "msg_book_clasp_1" style "red_text" # # messages of type BOOK, subtype CLASP_1 will be drawn in red, with all # the other BOOK message types being drawn in green. # # Note that this works on a type/subtype level, not a # string level. Thus, # you can not do: # # widget_class "msg_book_clasp" style "red_text" # # and have it work, as the "msg_book_clasp" by itself isn't a valid name. # Basically, you can bind it to the overall type (which covers all the # subtypes), or to specific type/subtypes. The common/msgtypes.h file # contains all the valid names (without the msg_ prefix) that are valid. # # 3) Even with the new message types, the server still sends what color # it thinks they should be drawn (this is basically for older clients # predating extended text support). If you do not specify _ANY_ styles for the # message types here, the client will use that color tag for what color # to draw the text with, as set with the info_ section above. # However, if even a single msg_ style is set, then the client will not # use those values - the presumption being that if a msg_ style # is set, the user knows what they are doing, and any that are not # set they want in default color/style. # # This is because there really isn't any way # for the client to know if it is intentional on the part of the user # that they want to use the default styles for the widgets or if it # should be using that color information - this is especially true # given the inheritence described in point #2 above. # # The entries below try to match what color the server says # to use for these - basically, to keep compatibility without # having to use the passed in color value - in that way, # additions can be made and the expected appearance of messages # will remain. # Given this is compatible type messages, we re-use # the color_text styles above. Note that in some cases, # the same type of message used different colors depending # on where in the code it was called. I've tried to use here # whatever was used the most for a particular message, but # I also took into account the message and other related messages # so the color for good vs bad effects are different, etc. To # some extent, the idea that red messages are bad is put in place # here, with blue being good. # # Note - these should really be re-done, as the current color # scheme often makes no sense (same style for both a level # gain and loss?) But this base file is more as a sample # and also act like things have in the past. # # Some colors, like lightgreen, gold & tan are not used by # any message types right now. And some others are used # in only a few places, like greytext, browntext # # these are in type/subtype order, to match msgtypes.h # BOOK messages widget_class "msg_book" style "darkblue_text" # CARD messages # PAPER messages # SIGN messages widget_class "msg_sign" style "darkblue_text" # MONUMENT messages # DIALOG messages widget_class "msg_dialog_npc" style "darkblue_text" widget_class "msg_dialog_magic_ear" style "darkblue_text" # MOTD messages widget_class "msg_motd" style "green_text" # ADMIN messages widget_class "msg_admin_rules" style "green_text" widget_class "msg_admin_news" style "green_text" widget_class "msg_admin_player" style "darkorange_text" widget_class "msg_admin_dm" style "red_text" # SHOP messages # COMMAND messages widget_class "msg_command_quests" style "white_text" widget_class "msg_command_dm" style "red_text" widget_class "msg_command_newplayer" style "lightblue_text" # ATTRIBUTE messages widget_class "msg_attribute_protection_gain" style "lightblue_text" widget_class "msg_attribute_protection_loss" style "red_text" widget_class "msg_attribute_bad_effect_start" style "red_text" widget_class "msg_attribute_level_gain" style "lightblue_text" widget_class "msg_attribute_level_loss" style "red_text" widget_class "msg_attribute_race" style "lightblue_text" widget_class "msg_attribute_god" style "darkblue_text" # SKILL messages widget_class "msg_skill_pray" style "white_text" widget_class "msg_skill_error" style "red_text" # APPLY messages widget_class "msg_apply_success" style "darkblue_text" widget_class "msg_apply_cursed" style "darkblue_text" widget_class "msg_apply_trap" style "darkblue_text" # ATTACK messages widget_class "msg_attack_did_hit" style "red_text" widget_class "msg_attack_nokey" style "darkblue_text" # COMMUNICATION messages widget_class "msg_communication_random" style "white_text" widget_class "msg_communication_say" style "white_text" widget_class "msg_communication_me" style "lightblue_text" widget_class "msg_communication_tell" style "orange_text" widget_class "msg_communication_emote" style "white_text" widget_class "msg_communication_party" style "white_text" widget_class "msg_communication_shout" style "red_text" widget_class "msg_communication_chat" style "lightblue_text" # SPELL messages widget_class "msg_spell_failure" style "grey_text" widget_class "msg_spell_success" style "darkblue_text" widget_class "msg_spell_error" style "darkblue_text" widget_class "msg_spell_target" style "orange_text" # ITEM messages widget_class "msg_item_remove" style "brown_text" widget_class "msg_item_add" style "lightblue_text" widget_class "msg_item_info" style "brown_text" # MISC messages widget_class "msg_misc" style "darkblue_text" # VICTIM messages widget_class "msg_victim_swamp" style "red_text" widget_class "msg_victim_was_hit" style "red_text" widget_class "msg_victim_died" style "darkblue_text" crossfire-client-1.70.0/gtk-v2/themes/Standard0000644000014500000120000004605311731277012016051 00000000000000############################################################################ # http://www.gnu.org/software/emacs/manual/html_node/emacs/GTK-styles.html # has good information that relates to the content of this theme file. # # Where font_name appears, ie. font_name = "Sans Bold Italic 9", the format is # a Pango string, so refer to that documentation for details. One resource is # http://www.gtk.org/api/2.6/pango/PangoMarkupFormat.html, but briefly, there # are various options that can be specified: family, style, weight, size. # # Spaces inside the font name is normal. The font name and options are # generally delimited with space characters. Font-family is a comma separated # list. Style includes things like Italic, Normal, Oblique. Size is in # points with no units. The default size appears to be 10. Weight is also # supported and includes choices like: ultralight, light, normal, bold, # ultrabold, heavy. The font descriptors do not seem to be case sensitive. # It may take experimentation to see what works. It appears, for example, # that all weight identifiers may not be supported for all fonts. ############################################################################ # Start of Stat Bar styles ############################################################################ # The stat bars are the bars at the bottom left of the window - hp, # spell points, grace, food & exp. # The low values are used when the stat is less than 25% of its max. # The super value is used when the stat is above is max. # the normal value is used in the 25%->100% range. # # There is no requirement that these be different colors - if you # want the food value to be brown no matter what, just create # a style for food_bar, and bind that to the normal/low/super values. # this is what is done for exp, since being below 25% exp isn't really # bad. # # If you have configured the client to use gradual shading of the # stat bar colors, the gradual values are used instead. The low # as the 0 point, the normal is 100%, and super is 200%. The client # will then mix the color based on the actual value of the stat. I thought # it better to have different values, as what may look good normally may # not blend well (in particular, the standard values are not 100% # saturated since those would seem too bright. # # the reason base[SELECTED] is used for values is that is what # is used if these were being bound directly to the widget. # # if one of the styles is missing a color, the client will use # standard system wide theme defaults to draw in that state. # For the gradual color, if it is missing a color, it just will # not color it - probably not what you want. # # Note: If you are not seeing colorful stat bars as you expect, # the problem may be with the system wide theme you have chosen. # some themes modify the draw logic for the progressbar and instead # draw pixmaps (if you see striped bars, you are using such a theme). # These themes do no pay any attention to the colors we try to set - # IMO, this is a bug in the theme engine, as there isn't way # to turn that behaviour off. The only way around this would be # for the client to have its own widget to draw the bars, but then # this causes problems for those people that like that theme. # style "low_bar" { #red base[SELECTED] = "#cf0000" } style "normal_bar" { # green base[SELECTED] = "#00cf00" } style "super_bar" { base[SELECTED] = "#00cf00" } style "gradual_low_bar" { base[SELECTED] = "red" } style "gradual_full_bar" { base[SELECTED] = "green" } style "gradual_super_bar" { base[SELECTED] = "blue" } widget_class "hp_bar_normal" style "normal_bar" widget_class "hp_bar_low" style "low_bar" widget_class "hp_bar_super" style "super_bar" widget_class "hp_gradual_bar_normal" style "gradual_full_bar" widget_class "hp_gradual_bar_low" style "gradual_low_bar" widget_class "hp_gradual_bar_super" style "gradual_super_bar" widget_class "sp_bar_normal" style "normal_bar" widget_class "sp_bar_low" style "low_bar" widget_class "sp_bar_super" style "super_bar" widget_class "sp_gradual_bar_normal" style "gradual_full_bar" widget_class "sp_gradual_bar_low" style "gradual_low_bar" widget_class "sp_gradual_bar_super" style "gradual_super_bar" widget_class "grace_bar_normal" style "normal_bar" widget_class "grace_bar_low" style "low_bar" widget_class "grace_bar_super" style "super_bar" widget_class "grace_gradual_bar_normal" style "gradual_full_bar" widget_class "grace_gradual_bar_low" style "gradual_low_bar" widget_class "grace_gradual_bar_super" style "gradual_super_bar" widget_class "food_bar_normal" style "normal_bar" widget_class "food_bar_low" style "low_bar" widget_class "food_bar_super" style "super_bar" widget_class "food_gradual_bar_normal" style "gradual_full_bar" widget_class "food_gradual_bar_low" style "gradual_low_bar" widget_class "food_gradual_bar_super" style "gradual_super_bar" # It doesn't make sense to have an alert for low exp, # so set all the conditions to the same color. For graduated # color, it can IMO still be nice to change colors as you get closer. widget_class "exp_bar_normal" style "normal_bar" widget_class "exp_bar_low" style "normal_bar" widget_class "exp_bar_super" style "normal_bar" widget_class "exp_gradual_bar_normal" style "gradual_full_bar" widget_class "exp_gradual_bar_low" style "gradual_low_bar" widget_class "exp_gradual_bar_super" style "gradual_super_bar" ############################################################################ # Start of inventory/look window styles ############################################################################ # # The inv_ do not get tied to real widgets. This is because we are # controlling individual rows of the widget based on values that the # widget can not know about (magic, cursed, etc). So the client looks # up these special names and then uses the value to control how to # draw the actual rows. Note that there is no requirement that there # be 1 style/widget_class. If you want different object criteria # to use the same style, you can do that, eg, # # widget "inv_cursed" style "inv_mine" # widget "inv_magical" style "inv_mine" # # Is perfectly legal, but probably doesn't make a lot of sense. # # Note that there is no 'default' here - the default values come from # the normal widget binding. # # Note that there is no combining of values - only one of these is # used for any object. The precedence is: # unpaid > cursed > magical > applied > locked # style "inv_cursed" { base[NORMAL] = "red" } widget_class "inv_cursed" style "inv_cursed" style "inv_magical" { base[NORMAL] = "blue" } widget_class "inv_magical" style "inv_magical" # You owe gold for these style "inv_unpaid" { text[NORMAL] = "gold" } widget_class "inv_unpaid" style "inv_unpaid" style "inv_locked" { font_name = "Sans Italic" } widget_class "inv_locked" style "inv_locked" style "inv_applied" { font_name = "Sans Bold" } widget_class "inv_applied" style "inv_applied" ############################################################################ # Start of spell list styles ############################################################################ # like the inventory styles, these do not bind to a specific widget, # but rather the code uses them based on values of the spell. # style "spell_denied" { base[NORMAL] = "red" } widget_class "spell_denied" style "spell_denied" style "spell_repelled" { base[NORMAL] = "orange" } widget_class "spell_repelled" style "spell_repelled" style "spell_attuned" { base[NORMAL] = "green" } widget_class "spell_attuned" style "spell_attuned" style "spell_normal" { base[NORMAL] = "#F0F0F0" } widget_class "spell_normal" style "spell_normal" ############################################################################ # Start of text info style. The text info are where it actually # displays the messages. ############################################################################ # info_default is a bit special. # What info_default is used for is a supported way for the # code to find out what attributes set in the other info_... # values differ - it will basically compare the values and only set # the ones that are different. This is really just a place holder, # and you probably shouldn't put any actual values within the # style {} area. However, it must be defined for other styles # to work (if it doesn't have anything to get a difference against, # it can not set up the other styles. style "info_default" { } widget_class "info_default" style "info_default" # The extended info has the idea of different fonts: # # Normal: Standard font to use for drawing # Arcane: Perhaps better called 'old style' fonts - still clearly readable, # but should have an 'old' look. # Strange: A runic font that doesn't necessarily need to be readable - could # just be symbols. # Fixed: Fixed width font used for listings of preformatted text. # Hand: A font that should look like handwritten text. # # Note that except for the fixed font, the font you use is not likely # to have a critical effect - if you used the same font for everything, # it is unlikely to affect the play of the game. # Also, while these are defined as font names, you can also define # colors. However, other # styles may take precedence - eg, if you specify a color in the # style definition, and the message itself has color tags, those # may be used instead. # # You can use the gtk character map utility to view the fonts and get # font names. # # Note that the fonts specified here may not be ideal candidates, but # my goal here is to choose fonts that a normal installation would have # installed. You can get better fonts off the web, but since they # are not available by default, it doesn't make sense to make them # the default. # # For normal font, just use the system/theme default. #style "info_font_normal" #{ # font_name = "Sans" #} #widget_class "info_font_normal" style "info_font_normal" style "info_font_arcane" { font_name = "URW Chancery L" } widget_class "info_font_arcane" style "info_font_arcane" # With the different scripts included in unicode (and part # of gtk2), all we really need to do here is change it so that # we use the Runic script instead of Latin. However, there is # no way to do that directly with styles. What needs to be # done is some extra code added to process this as a script and # not a font perhaps. style "info_font_strange" { font_name = "Sans Italic" } widget_class "info_font_strange" style "info_font_strange" style "info_font_fixed" { font_name = "Luxi Mono" } widget_class "info_font_fixed" style "info_font_fixed" # URW Chancery L would also look good for this, but # we're using that for arcane. style "info_font_hand" { font_name = "Century Schoolbook L Italic" } widget_class "info_font_hand" style "info_font_hand" # # The first set of info_ are how to display messages that come # as a certain color from the server. Eg, the server says 'draw this in # black', and this determines how we actually draw it. For example, # when using a black background, you really don't want the text color # to be black. # Note that anything not set here (fg, bg, font) will use default # values as bound to the global widget (*), so you don't need to # specify all the values in each classification. If you don't want # different colored text, just disable all of these. # The values here match the traditional values used. style "black_text" { fg[NORMAL] = "black" } widget_class "info_black" style "black_text" style "white_text" { fg[NORMAL] = "black" font_name = "bold" } widget_class "info_white" style "white_text" style "darkblue_text" { fg[NORMAL] = "navy" } widget_class "info_darkblue" style "darkblue_text" style "red_text" { fg[NORMAL] = "red" } widget_class "info_red" style "red_text" style "orange_text" { fg[NORMAL] = "orange" } widget_class "info_orange" style "orange_text" style "lightblue_text" { fg[NORMAL] = "dodgerblue" } widget_class "info_lightblue" style "lightblue_text" style "darkorange_text" { fg[NORMAL] = "darkorange2" } widget_class "info_darkorange" style "darkorange_text" style "green_text" { fg[NORMAL] = "seagreen" } widget_class "info_green" style "green_text" style "darkgreen_text" { fg[NORMAL] = "darkseagreen" } widget_class "info_darkgreen" style "darkgreen_text" style "grey_text" { fg[NORMAL] = "grey50" } widget_class "info_grey" style "grey_text" style "brown_text" { fg[NORMAL] = "sienna" } widget_class "info_brown" style "brown_text" style "yellow_text" { fg[NORMAL] = "gold" } widget_class "info_yellow" style "yellow_text" style "tan_text" { fg[NORMAL] = "khaki" } widget_class "info_tan" style "tan_text" # these msg_.. values determine how to draw output of the # different message types - see the newclient.h and msgtypes.h file for all # the types/subytpes. With this, you can set different output styles # for all of the different message types. # # A few notes: # # 1) it is the widget_class line that binds the the style to the name that # the client uses to look it up. # Thus, you can do something like: # # style "red_text" .... # widget_class "msg_victim_was_pushed" style "red_text" # widget_class "msg_communication_say" style "red_text" # # In this way, you don't need to have a style for every msg type - a more # likely scenario is a modest number of styles, but then binding these # to the different widget names as how you want that widget to be # drawn. The _text entries used above can be re-used # for the msg types here. # # 2) Beyond normal style inheritence rules, the client itself is coded # to do some - just in that way, you don't need to list every msg # type here. For example: # # widget_class "msg_book" style "green_text" # # will result in every message of the BOOK class to be drawn in green # text. If you then add the line: # # widget_class "msg_book_clasp_1" style "red_text" # # messages of type BOOK, subtype CLASP_1 will be drawn in red, with all # the other BOOK message types being drawn in green. # # Note that this works on a type/subtype level, not a # string level. Thus, # you can not do: # # widget_class "msg_book_clasp" style "red_text" # # and have it work, as the "msg_book_clasp" by itself isn't a valid name. # Basically, you can bind it to the overall type (which covers all the # subtypes), or to specific type/subtypes. The common/msgtypes.h file # contains all the valid names (without the msg_ prefix) that are valid. # # 3) Even with the new message types, the server still sends what color # it thinks they should be drawn (this is basically for older clients # predating extended text support). If you do not specify _ANY_ styles for the # message types here, the client will use that color tag for what color # to draw the text with, as set with the info_ section above. # However, if even a single msg_ style is set, then the client will not # use those values - the presumption being that if a msg_ style # is set, the user knows what they are doing, and any that are not # set they want in default color/style. # # This is because there really isn't any way # for the client to know if it is intentional on the part of the user # that they want to use the default styles for the widgets or if it # should be using that color information - this is especially true # given the inheritence described in point #2 above. # # The entries below try to match what color the server says # to use for these - basically, to keep compatibility without # having to use the passed in color value - in that way, # additions can be made and the expected appearance of messages # will remain. # Given this is compatible type messages, we re-use # the color_text styles above. Note that in some cases, # the same type of message used different colors depending # on where in the code it was called. I've tried to use here # whatever was used the most for a particular message, but # I also took into account the message and other related messages # so the color for good vs bad effects are different, etc. To # some extent, the idea that red messages are bad is put in place # here, with blue being good. # # Note - these should really be re-done, as the current color # scheme often makes no sense (same style for both a level # gain and loss?) But this base file is more as a sample # and also act like things have in the past. # # Some colors, like lightgreen, gold & tan are not used by # any message types right now. And some others are used # in only a few places, like greytext, browntext # # these are in type/subtype order, to match msgtypes.h # BOOK messages widget_class "msg_book" style "darkblue_text" # CARD messages # PAPER messages # SIGN messages widget_class "msg_sign" style "darkblue_text" # MONUMENT messages # DIALOG messages widget_class "msg_dialog_npc" style "darkblue_text" widget_class "msg_dialog_magic_ear" style "darkblue_text" # MOTD messages widget_class "msg_motd" style "green_text" # ADMIN messages widget_class "msg_admin_rules" style "green_text" widget_class "msg_admin_news" style "green_text" widget_class "msg_admin_player" style "darkorange_text" widget_class "msg_admin_dm" style "red_text" # SHOP messages # COMMAND messages widget_class "msg_command_quests" style "white_text" widget_class "msg_command_dm" style "red_text" widget_class "msg_command_newplayer" style "lightblue_text" # ATTRIBUTE messages widget_class "msg_attribute_protection_gain" style "lightblue_text" widget_class "msg_attribute_protection_loss" style "red_text" widget_class "msg_attribute_bad_effect_start" style "red_text" widget_class "msg_attribute_level_gain" style "lightblue_text" widget_class "msg_attribute_level_loss" style "red_text" widget_class "msg_attribute_race" style "lightblue_text" widget_class "msg_attribute_god" style "darkblue_text" # SKILL messages widget_class "msg_skill_pray" style "white_text" widget_class "msg_skill_error" style "red_text" # APPLY messages widget_class "msg_apply_success" style "darkblue_text" widget_class "msg_apply_cursed" style "darkblue_text" widget_class "msg_apply_trap" style "darkblue_text" # ATTACK messages widget_class "msg_attack_did_hit" style "red_text" widget_class "msg_attack_nokey" style "darkblue_text" # COMMUNICATION messages widget_class "msg_communication_random" style "white_text" widget_class "msg_communication_say" style "white_text" widget_class "msg_communication_me" style "lightblue_text" widget_class "msg_communication_tell" style "orange_text" widget_class "msg_communication_emote" style "white_text" widget_class "msg_communication_party" style "white_text" widget_class "msg_communication_shout" style "red_text" widget_class "msg_communication_chat" style "lightblue_text" # SPELL messages widget_class "msg_spell_failure" style "grey_text" widget_class "msg_spell_success" style "darkblue_text" widget_class "msg_spell_error" style "darkblue_text" widget_class "msg_spell_target" style "orange_text" # ITEM messages widget_class "msg_item_remove" style "brown_text" widget_class "msg_item_add" style "lightblue_text" widget_class "msg_item_info" style "brown_text" # MISC messages widget_class "msg_misc" style "darkblue_text" # VICTIM messages widget_class "msg_victim_swamp" style "red_text" widget_class "msg_victim_was_hit" style "red_text" widget_class "msg_victim_died" style "darkblue_text" crossfire-client-1.70.0/gtk-v2/themes/Makefile.in0000644000014500000120000002713411731277165016443 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2007 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gtk-v2/themes DIST_COMMON = $(dist_theme_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(themedir)" dist_themeDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_theme_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ themedir = $(pkgdatadir)/themes dist_theme_DATA = Black Standard all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 gtk-v2/themes/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu gtk-v2/themes/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-dist_themeDATA: $(dist_theme_DATA) @$(NORMAL_INSTALL) test -z "$(themedir)" || $(MKDIR_P) "$(DESTDIR)$(themedir)" @list='$(dist_theme_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(dist_themeDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(themedir)/$$f'"; \ $(dist_themeDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(themedir)/$$f"; \ done uninstall-dist_themeDATA: @$(NORMAL_UNINSTALL) @list='$(dist_theme_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(themedir)/$$f'"; \ rm -f "$(DESTDIR)$(themedir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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 $(DATA) installdirs: for dir in "$(DESTDIR)$(themedir)"; 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: -test -z "$(CONFIG_CLEAN_FILES)" || 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dist_themeDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_themeDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_themeDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_themeDATA # 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: crossfire-client-1.70.0/gtk-v2/Makefile.am0000644000014500000120000000202411731277014015125 00000000000000# # Makefile for crossfire client # # Copyright (C) 2005,2007 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com SUBDIRS = glade src themes EXTRA_DIST = \ README \ README-dev \ TODO \ crossfire-client.desktop dist_man6_MANS = \ crossfire-client-gtk2.man crossfire-client-1.70.0/gtk-v2/crossfire-client-gtk2.man0000644000014500000120000004154411731277014017720 00000000000000.\"$Id: crossfire-client-gtk2.man 6716 2007-06-27 18:57:31Z akirschbaum $ .TH crossfire-client-gtk2 .SH NAME crossfire-client-gtk2 - second generation GTK client for Crossfire servers. .SH SYNOPSIS .B crossfire-client-gtk2 [-cache|-nocache] [-darkness|-nodarkness] [-display display] [-download-all-faces] [-echo|-noecho] [-faceset name] [-fasttcpsend|-nofasttcpsend] [-fog] [-help] [-iconscale percentage] [-loglevel level] [-mapscale percentage] [-mapsize xXy] [-opengl|-pixmap|-sdl] [-port number] [-server name] [-showicon] [-smooth|-nosmooth] [-sound|-nosound] [-sound_server executable] [-splash|-nosplash] [-resists value] [-split] [-splitinfo] [-timemapredraw] [-triminfowindow|-notriminfowindow] [-updatekeycodes] [-window_xml path] [-dialog_xml path] .SH DESCRIPTION .PP .I crossfire-client-gtk2 is a GTK program for connecting to Crossfire servers. Crossfire is a multiplayer graphical adventure game that mixes aspects of Gauntlet (TM), Nethack, Moria, and Ultima (TM). This man page describes options for the second generation gtk client (crossfire-client-gtk2) for the Crossfire game server. There are many other clients, and each is unique. This documentation is not intended to cover them. .SH OPTIONS .TP .B -cache|-nocache Determines if the client will cache images for future runs. With -nocache, when the server is about to reference an image that the client has yet to receive, it sends that image along to the client. These downloaded images are discarded once the client exists. With -cache, the server sends information about the image it is about to reference. The client can then check its local cache (stored in ~/.crossfire/image-cache) - if it has the image, it creates it off the disk. If it does not have it, it requests it from the server and then stores it in its cache. In the brief time between the request of the image and it actually receives it, that image will be represented by a ? in the map. -cache option is strongly recommended anytime when your link to the server is slower than home directory access - this is likely to be the case except in case of NFS mounted home directories on the server on the local LAN. .TP .B -darkness|-nodarkness Controls whether the server sends darkness information to the client or not. Turning off darkness results in a savings off bandwidth for maps that use darkness code (currently, very few maps use darkness code). Turning off darkness may also be desirable as in some graphics mode the quality of darkness may not add much to the map. .TP .B -display The display to open the windows on. If this option is not given, it will use the DISPLAY environmental variable to determine the display. .TP .B -download_all_faces The client will get all the checksums from the server, and download any images necessary before starting play. This saves a small amount of bandwidth, but more importantly reduces possible latency during important play when it may not be desirable. .TP .B -echo|-noecho Echo commands as they are entered. Normally, commands bound to keys are just sent to the server without any echoing on the client of what that command actually was. This option causes the commands to also be printed in the information window as they are sent to the server. .TP .B -faceset Uses faceset if available on the server. What facesets are available on each server may differ. The client will request the information about the different facesets available on the server, and try to find the one that matches best. The default is the standard set. At current time (March 2002), the only one typically available is the classic set. .TP .B -fasttcpsend|-nofasttcpsend Send or do not send data immediately to the server. This setting may decrease latency if set at the expense of greater outgoing bandwidth use. .TP .B -fog Enables fog of war code. In this mode, spaces which have been seen before but are no longer visible will still be shown on the game window half darkened. The data in these spaces is not up to date since it is currently out of site. This has no effect on bandwidth, but may consume more CPU time. .TP .B -help Prints out a brief description of the options to standard output. .TP .B -iconscale percentage Causes the images for the inventory icons to be scaled some percentage value. Minimum value is 25%. Setting this to 50% is very useful - doubles amount of data visible in the inventory window. .TP .B -loglevel level Set default logging level with 0 being most verbose. .TP .B -mapscale percentage Causes the images for the map surface (-mapscale) to be scaled some percentage value. Minimum value is 25%. This value does not need to be the same as the iconscale value. Scaling down the size of the map images can be useful when playing on low resolution screens. Smaller images will also consume less CPU as there will be less information to draw. .TP .B -mapsize XxY Sets the desired viewable map window. X and Y are number of tiles. Note that larger map sizes are likely to consume more bandwidth, CPU time, as well as just screen real estate. The maximum map size may vary server to server. The client will try to negotiate the largest viewable map in each dimension. Note that there is no requirement that the viewable map be square. Due to performance issues, it is strongly suggested that experimentation is done with this value to find a size that gets acceptable performance n(simple test - go to the start town, run in some direction, stop running and see how long it takes before the client stops moving you). .TP .B -opengl | -pixmap | -sdl The graphics drawing mode to use. The -opengl and -sdl options may only be used of the client was compiled with support for those mode. Generally, -opengl provides the best quality, followed by -sdl, and then -pixmap. .B -sdl Using this option allows for more complex graphics - true alpha channel, improved darkness handling. Performance may be worse when using this option - this depends on many factors. Like the mapsize option above, it is suggested the experimentation is done to make performance is still acceptable. This option does not affect bandwidth - it only affects CPU performance. .TP .B -port number The port number of the server to connect to. By default, it will use port 13327 (standard port). However, certain servers may use other ports. .TP .B -resists value Control look of resistances. .TP .B -server name Sets the server to play on. If no option is given, it will default to localhost. .TP .B -showicon This shows a little icon next to items in your inventory that contains a brief description of some of the item properties (magic, cursed, equipped, etc.) This can make spotting some items easier, but some players may not like the extra space these icons take up or the .TP .B -smooth | -nosmooth This option causes map tile edges to be blended together so that the map has a less artificially tiled appearance. Use of this option incurs greater CPU and bandwidth usage. .TP .B -sound|-nosound Enable/Disables sound effects. Disabling sound has a minor savings on bandwidth. It is most useful if you do not want sound, due to lack of hardware or lack of desire for sound. Default is sound enabled. .TP .B -sound_server This is the name of the sound server process to execute. If the path starts with a slash, this is the absolute path to the executable. Otherwise, the value of BINDIR (install location of client executable) will be prepended. This defaults to cfsndserv. Changing this value may be necessary if the default sound daemon does not work as expected. Note that the input that the executable takes is special, requiring an executable especially designed for crossfire to work. You can not point generic sound playing programs and expect it to work. .TP .B -splash|-nosplash Enable/Disables splash screen. When enabled, a window with a Crossfire logo is displayed while the client is starting up. Default is the splash screen is enabled. .TP .B -split|-nosplit -split starts the windows up in split windows mode. In split windows mode, 6 separate windows are created - these individual windows can then be moved around and resized as desired. -nosplit starts the game up with a single window - this is the default. The option is useful if your saved defaults are set for -split (see Saved Defaults further down). .TP .B -splitinfo This splits the information pane window into two sub windows. One contains all the attack messages and otherwise fairly mundane information, and the other contains important messages, like changes in protection values, levels, etc. .TP .B -timemapredraw Prints out debugging time information to stderr. This timing information can be useful when trying to find performance problems, or just how different client options change the time it takes for the map to get drawn, which is the biggest CPU consumer in the client. .TP .B -triminfowindow | -notriminfowindw Causes the information window to get 'trimmed', eg, remove text so that the total contents of the information window remains roughly the same size (20,000 bytes or so). As of 2001-11-03, using this option resulted in client periodically crashing. The problem appears to be within gtk, so using this is not encouraged. However, the problems in gtk may get fixed, or this may be more reliable on other platforms so is included. .TP .B -updatekeycodes The standard behaviour when a player uses the bind command to bind new actions is that they keycode is saved with that binding. Keycodes are specific to keyboards - a sun keyboard will generate a different keycode compared to a PC style keyboard. In most cases, it is not always desirable to have the keycodes get updated, as this may make some bindings unavailable. Using this option will force custom keybindings to get updated for the current keyboard when the client is run. .TP .B -window_xml window_layout This client is uses libglade to allow the main client window to be customized. This option is used to specify how the main game window looks. Various layout options are usually supplied with the client. The default window layout is gtk-v2.glade. .TP .B -dialog_xml window_layout This client is uses libglade to allow the various client dialogs to be customized. This option is used to specify the appearance of the various dialog used by the client. Presently there are no alternate dialog layouts supplied with the client. The default dialog layout setting is dialogs.glade. .SH SAVED DEFAULTS Once you have logged onto a server, you may enter extended commands by typing ' (apostrophe) followed by the extended commands. One of these extended commands is savedefaults. This command saves many of the options listed above. Note that the saved defaults are read first, so using the command line switches can be used to override settings in the gdefaults2 file. The settings are saved into ~/.crossfire/gdefaults2. You can enter savewinpos as an extended command. By default, this saves the current window positions and sizes to the file ~/.crossfire/gtk-v2.pos. The actual file name is based on the name of the window layout file (see the -window_xml option). So, for example, if -window_xml caelestis.glade is used, window positions are actually saved to ~/.crossfire/caelestis.pos. Next time you run the client, with this window layout selected, it will restore the window layout as specified. .SH PLAYING WITH THE CLIENT This is by far a complete tutorial of gameplay. This section is to provide a basic introduction to logging in and doing a few very basic actions. The first thing to do after the client successfully connects to a server is to enter a character name. There are some restrictions to the name you can choose, but alphanumeric characters are all safe. After entering the name, you will then be prompted for a password. If creating a new character, enter whatever you want your password to be. If you get a 'login incorrect' someone else already has that character name with a different password - try another name. If no one has used that name, you will be prompted for the password again to confirm it. You now start the character creation process. It is beyond the scope of the document to fully describe the pros and cons of different stats and classes. The creation process has different options for swapping stats and choosing a class. Once you have chosen your class, you will find yourself in a nexus that allows you to select a map on which to start playing. The best place to start is directly above you as it contains a miniature map that is designed to be a tutorial on the basics of playing Crossfire. More experienced players may elect to skip this training map and may start playing in either Scorn or Navar. Navar is only recommended for experienced players. The arrow keys will move you in the various directions. If starting in Scorn, there will be a red building almost directly above you - this is the inn where you save your character. There are some signs to your right. To read them, move on top of them and press the 'a' key. This applies the object below you - in the case of signs, it reads it. In the case of buildings, it will cause you to enter the building. To the left of the signs are two small buildings - these are more beginner dungeons. Enter them, and follow the directions on the signs. They provide another pretty good tutorial on some of the basic actions and features of the game. To enter extended commands, type the ' (apostrophe) followed by the command. An example would be 'help (apostrophe followed by the help command). Enter command to execute the command. .SH USEFUL EXTENDED COMMANDS .TP .B savewinpos savedefaults These commands were described in the SAVED DEFAULTS options above. .TP .B scroll This toggles whether or the information windows scrolls when it gets to the bottom of the window or wraps to the top. Wrapping is slightly less CPU intensive, but is generally harder to read. .TP .B bind unbind bind is used to add new keybindings. Do you want to be able to press one key to cast a fireball? This is what the bind command does. \'help bind gives much more detailed information. Once a command is bound, it is stored in ~/.crossfire/keys and will be used in future plays. .TP .B scroll crossfire-client-x11 only. Toggles between scroll and wrap mode. In wrap mode, when text gets to the bottom of the message window, it starts new messages at the top. Scroll is only really useful on very slow systems where the performance hit of scrolling the window is too costly. .TP .B magicmap Displays the data from the last time the magic mapping spell was cast. This information can be completely useless if you are now on another map. .TP .B cwindow Specifies the number of unprocessed commands to the server. The server processes player commands as the character has actions to perform them - having this number too high can result in extended lengths of time that after you stop entering commands the character is still performing actions. Having this value too low on slow links can result in the character sitting idle even though they have an action coming to them. .SH FILES .TP .B ~/.crossfire This is a directory that is created that is used to store various files. .TP .B ~/.crossfire/gdefaults2 This contains default settings. This file can in theory be edited by hand - just be careful to keep the same case and whitespace. .TP .B ~/.crossfire/image-cache This directory is used for the image cache if -cache is being used. .TP .B ~/.crossfire/keys This contains keybindings you have edited. This file can also be theoretically edited - changing existing entries is much safer than trying to figure out the syntax for new entries. .TP .B ~/.crossfire/*.pos Window layout positions and sizes to use. The actual file name is based upon the name of the window layout file in use (-window_xml). The file may be edited by hand. .PP Please let the maintainers know about any bugs found in the client. .SH AUTHOR Copyright (C) 2008 Mark Wedel & Crossfire Development Team GTK port by David Sundqvist (azzie@netpolicy.com) SDL support added by Scott MacFiggen (smurf@CSUA.Berkeley.EDU) LibGlade port by Kevin Bulgrien (kbulgrien@att.net) There are a great many other contributors to both the client and server that are not mentioned here. .ft R .RE .LP .\" 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., 675 Mass Ave, Cambridge, MA 02139, USA. .\" The author can be reached via e-mail to crossfire-devel@real-time.com crossfire-client-1.70.0/gtk-v2/Makefile.in0000644000014500000120000004332711731277165015160 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2005,2007 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = gtk-v2 DIST_COMMON = README $(dist_man6_MANS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive man6dir = $(mandir)/man6 am__installdirs = "$(DESTDIR)$(man6dir)" NROFF = nroff MANS = $(dist_man6_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = glade src themes EXTRA_DIST = \ README \ README-dev \ TODO \ crossfire-client.desktop dist_man6_MANS = \ crossfire-client-gtk2.man all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 gtk-v2/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu gtk-v2/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-man6: $(man6_MANS) $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man6dir)" || $(MKDIR_P) "$(DESTDIR)$(man6dir)" @list='$(man6_MANS) $(dist_man6_MANS) $(nodist_man6_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.6*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 6*) ;; \ *) ext='6' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man6dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man6dir)/$$inst"; \ done uninstall-man6: @$(NORMAL_UNINSTALL) @list='$(man6_MANS) $(dist_man6_MANS) $(nodist_man6_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.6*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 6*) ;; \ *) ext='6' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f '$(DESTDIR)$(man6dir)/$$inst'"; \ rm -f "$(DESTDIR)$(man6dir)/$$inst"; \ 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): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ 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) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ 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) \ || eval $$failcom; \ 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) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man6dir)"; 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: -test -z "$(CONFIG_CLEAN_FILES)" || 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 Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-man6 install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man6 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man6 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-man uninstall-man6 # 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: crossfire-client-1.70.0/gtk-v2/README0000644000014500000120000000432411731277014013756 00000000000000This is an implementation of the crossfire client for gtk v2. At current time, this should be considered somewhere between alpha and beta quality code. I consider it complete enough that you should be able to play the game using this client. However, all the feature certainly are not implemented. It is just at the point of development where I consider it useful enough to make available and get feedback (as well as hopefully some others to help finish some things up). The client was designed largely to my tastes - this, what is implemented reflects the options I tend to use and the display I like. Please note some of the mechanics are a little different now. Containers are now displayed inline with inventory/look windows using tree widgets. The gtk-v2 client should be built automatically if you have the requisite libraries on your system (configure will detect them, add gtk-v2 to the list of directories to build). Note that the defaults file that this client uses for loading defaults is ~/.crossfire/gdefaults2. It uses the same keybinding and other files as the other clients. The following limitations/issues are known: 1) Many of the config options available in the gtk client are not available. It is likely some number of these will never re-appear (IMO, the GTK client had a problem of more and more options, which makes the code messier and messier). 2) The layout was designed for screens at 1280x1024 resolution or higher. Resizing the images and moving the panes around _may_ work on lower resolutions, but that wasn't my design goal. 3) SDL support is not yet implemented. 4) At least on my system, it overall seems slower than the gtk client - especially the inventory drawing area. I think this is a gtkv2 issue. 5) Map drawing is probably slower - rather than trying to redraw just changed spaces, it redraws the entire map - this should fix up some of the erroneous drawing as related to big images, but can be slower. If you find bugs, please report them on the sourceforge tracker: http://sourceforge.net/tracker/?group_id=13833&atid=113833 Please use the category gtk2-client. If you plan to work on code for the client, please browse the TODO file as well as the README-dev file. Mark Wedel March 1, 2005 crossfire-client-1.70.0/gtk-v2/src/0000755000014500000120000000000011731277217013747 500000000000000crossfire-client-1.70.0/gtk-v2/src/keys.c0000644000014500000120000022336611731277013015014 00000000000000const char * const rcsid_gtk2_keys_c = "$Id: keys.c 13647 2010-08-19 04:11:23Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/keys.c * Handles most of the keyboard related functions - binding and unbinding keys, * and handling keypresses and looking up the keys. */ #include #include #include #ifndef WIN32 #include #endif /* Pick up the gtk headers we need */ #include #include #ifndef WIN32 #include #else #include #define NoSymbol 0L /**< Special KeySym */ typedef int KeyCode; /**< Undefined type */ #endif #include #include "client-types.h" #include "client.h" #include "main.h" #include "proto.h" #include "def-keys.h" #include "image.h" #include "gtk2proto.h" #include "p_cmd.h" /** * @{ * @name UI Widgets * Widgets for the keybinding dialog */ static GtkWidget *fire_label, *run_label, *keybinding_window, *keybinding_checkbutton_control, *keybinding_checkbutton_shift, *keybinding_checkbutton_alt, *keybinding_checkbutton_meta, *keybinding_checkbutton_edit, *keybinding_entry_key, *keybinding_entry_command, *keybinding_treeview, *keybinding_button_remove, *keybinding_button_update, *keybinding_button_bind; static GtkListStore *keybinding_store; /**= 0.*/ uint32 keysym; /**< Key this binding record is for. */ char *command; /**< Command string bound to a key. */ struct Keys *next; } Key_Entry; /** * @} EndOf Key Entry Struct */ /*********************************************************************** * * Key board input translations are handled here. We don't deal with * the events, but rather KeyCodes and KeySyms. * * It would be nice to deal with only KeySyms, but many keyboards * have keys that do not correspond to a KeySym, so we do need to * support KeyCodes. * ***********************************************************************/ static uint32 firekeysym[2], runkeysym[2], commandkeysym, *bind_keysym, prevkeysym, nextkeysym, completekeysym, altkeysym[2], metakeysym[2], cancelkeysym; static int bind_flags=0; static char bind_buf[MAX_BUF]; #define KEYF_NORMAL 0x01 /**< Used in normal mode */ #define KEYF_FIRE 0x02 /**< Used in fire mode */ #define KEYF_RUN 0x04 /**< Used in run mode */ #define KEYF_EDIT 0x08 /**< Line editor */ #define KEYF_STANDARD 0x10 /**< For standard/built-in keybinds */ #define KEYF_ALT 0x20 /**< For ALT key modifier */ #define KEYF_META 0x40 /**< For Meta key modifier */ #define KEYF_MODIFIERS 0x67 /**< Mask for actual keyboard * modifiers, not action modifiers */ extern const char *const directions[9]; #define KEYHASH 257 static Key_Entry *keys[KEYHASH]; /**< Platform independence defines that * we can't use keycodes. instead, * make it a hash, and set KEYHASH to * a prime number for this purpose. */ /** * @defgroup GtkV2KeyBinding GTK-V2 client keybinding functions. * @{ */ /** * Updates the keys array with the keybinding that is passed. It allocates * memory for the array entry, then uses strdup_local() to allocate memory * for the command being bound. This function is common to both gdk and x11 * client. * * @param keysym A key to bind. * @param flags State that the keyboard is in. * @param command A command to bind to the key specified in keysym. */ static void insert_key(uint32 keysym, int flags, const char *command) { Key_Entry *newkey; int i, direction=-1, slot; slot = keysym % KEYHASH; if (keys[slot]==NULL) { keys[slot]=malloc(sizeof(Key_Entry)); keys[slot]->command=NULL; keys[slot]->next=NULL; newkey=keys[slot]; } else { newkey=keys[slot]; while (newkey->next!=NULL) newkey = newkey->next; newkey->next = calloc(1, sizeof(Key_Entry)); newkey = newkey->next; } /* * Try to find out if the command is a direction command. If so, keep * track of this fact, so in fire or run mode, things work correctly. */ for (i=0; i<9; i++) if (!strcmp(command, directions[i])) { direction=i; break; } newkey->keysym = keysym; newkey->flags = flags; newkey->command = strdup_local(command); newkey->direction = direction; } /** * This function is common to both gdk and x11 client * * @param buf * @param line * @param standard Set (1) or clear (0) the KEYF_STANDARD flag for the binding. */ static void parse_keybind_line(char *buf, int line, int standard) { char *cp, *cpnext; uint32 keysym; int flags; /* * There may be a rare error case when cp is used uninitialized. So let's * be safe */ cp = NULL; if (buf[0]=='#' || buf[0]=='\n') return; if ((cpnext = strchr(buf,' '))==NULL) { LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Line %d (%s) corrupted in keybinding file.", line,buf); return; } /* Special keybinding line */ if (buf[0] == '!') { char *cp1; while (*cpnext == ' ') ++cpnext; cp = strchr(cpnext, ' '); if (!cp) { LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Line %d (%s) corrupted in keybinding file.", line,buf); return; } *cp++ = 0; /* Null terminate it */ cp1 = strchr(cp, ' '); if (!cp1) { LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Line %d (%s) corrupted in keybinding file.", line,buf); return; } *cp1 ++ = 0;/* Null terminate it */ keysym = gdk_keyval_from_name(cp); /* As of now, all these keys must have keysyms */ if (keysym == 0) { LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Could not convert %s into keysym", cp); return; } if (!strcmp(cpnext,"commandkey")) { commandkeysym = keysym; return; } if (!strcmp(cpnext,"altkey0")) { altkeysym[0] = keysym; return; } if (!strcmp(cpnext,"altkey1")) { altkeysym[1] = keysym; return; } if (!strcmp(cpnext,"firekey0")) { firekeysym[0] = keysym; return; } if (!strcmp(cpnext,"firekey1")) { firekeysym[1] = keysym; return; } if (!strcmp(cpnext,"metakey0")) { metakeysym[0] = keysym; return; } if (!strcmp(cpnext,"metakey1")) { metakeysym[1] = keysym; return; } if (!strcmp(cpnext,"runkey0")) { runkeysym[0] = keysym; return; } if (!strcmp(cpnext,"runkey1")) { runkeysym[1] = keysym; return; } if (!strcmp(cpnext,"completekey")) { completekeysym = keysym; return; } if (!strcmp(cpnext,"nextkey")) { nextkeysym = keysym; return; } if (!strcmp(cpnext,"prevkey")) { prevkeysym = keysym; return; } } else { if (standard) standard=KEYF_STANDARD; else standard=0; *cpnext++ = '\0'; keysym = gdk_keyval_from_name(buf); if (!keysym) { LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Unable to convert line %d (%s) into keysym", line, cp); return; } cp = cpnext; if ((cpnext = strchr(cp,' '))==NULL) { LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Line %d (%s) corrupted in keybinding file.", line, cp); return; } *cpnext++ = '\0'; cp = cpnext; if ((cpnext = strchr(cp,' '))==NULL) { LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Line %d (%s) corrupted in keybinding file.", line, cp); return; } *cpnext++ = '\0'; flags = 0; while (*cp!='\0') { switch (*cp) { case 'A': flags |= KEYF_NORMAL | KEYF_FIRE | KEYF_RUN | KEYF_META | KEYF_ALT; break; case 'E': flags |= KEYF_EDIT; break; case 'F': flags |= KEYF_FIRE; break; case 'L': /* A is used, so using L for alt */ flags |= KEYF_ALT; break; case 'M': flags |= KEYF_META; break; case 'N': flags |= KEYF_NORMAL; break; case 'R': flags |= KEYF_RUN; break; case 'S': flags |= KEYF_STANDARD; break; default: LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Unknown flag (%c) line %d in key binding file", *cp, line); } cp++; } /* Rest of the line is the actual command. Lets kill the newline */ cpnext[strlen(cpnext)-1]='\0'; if (strlen(cpnext)>(sizeof(bind_buf)-1)){ cpnext[sizeof(bind_buf)-1]='\0'; LOG(LOG_WARNING,"gtk-v2::parse_keybind_line","Command too long! Truncated."); } insert_key(keysym, flags | standard, cpnext); } /* else if not special binding line */ } /** * Initialize the standard keybindings as specified in the def-keys.h file. * This code is common to both x11 and gdk client */ static void init_default_keybindings(void) { char buf[MAX_BUF]; int i; for(i=0;i< sizeof(def_keys)/sizeof(char *);i++) { strcpy(buf,def_keys[i]); parse_keybind_line(buf,i,1); } } /** * Reads in the keybindings, and initializes special values. It is called * from main() as part of the client start up. The function is common to both * the x11 and gdk clients. * * @param window_root The client's main window. * * @todo Fix the per-character keys file support that is under \#if 0. */ void keys_init(GtkWidget *window_root) { int i, line = 0; FILE *fp; char buf[BIG_BUF]; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GladeXML *xml_tree; GtkWidget *widget; for (i = 0; i < MAX_HISTORY; i++) /* Clear out the bind history log */ history[i][0] = 0; commandkeysym = GDK_apostrophe; firekeysym[0] = GDK_Shift_L; firekeysym[1] = GDK_Shift_R; runkeysym[0] = GDK_Control_L; runkeysym[1] = GDK_Control_R; metakeysym[0] = GDK_Meta_L; metakeysym[1] = GDK_Meta_R; altkeysym[0] = GDK_Alt_L; altkeysym[1] = GDK_Alt_R; completekeysym = GDK_Tab; cancelkeysym = GDK_Escape; /* * Don't set these to anything by default. At least on Sun keyboards, the * keysym for up on both the keypad and arrow keys is the same, so player * needs to rebind this so we get proper keycode. Very unfriendly to log * in and not be able to move north/south. */ nextkeysym = NoSymbol; prevkeysym = NoSymbol; for (i=0; ikeysym!=0 && keyentry->keysym!=keysym) || (!(keyentry->flags & present_flags))) { keyentry=keyentry->next; continue; } first_match = keyentry; /* Try to find a prefect match */ if ((keyentry->flags & KEYF_MODIFIERS)!= present_flags) { keyentry=keyentry->next; continue; } else break; } if (first_match!=NULL) { if (first_match->flags & KEYF_EDIT) { strcpy(cpl.input_text, first_match->command); cpl.input_state = Command_Mode; gtk_entry_set_text(GTK_ENTRY(entry_commands),cpl.input_text); gtk_widget_grab_focus (GTK_WIDGET(entry_commands)); gtk_editable_select_region(GTK_EDITABLE(entry_commands), 0, 0); gtk_editable_set_position(GTK_EDITABLE(entry_commands), -1); return; } /* Some spells (dimension door) need a valid count value */ cpl.count = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(spinbutton_count)); if (first_match->direction>=0) { if (cpl.fire_on) { snprintf(buf, sizeof(buf), "fire %s", first_match->command); fire_dir(first_match->direction); } else if (cpl.run_on) { run_dir(first_match->direction); snprintf(buf, sizeof(buf), "run %s", first_match->command); } else { extended_command(first_match->command); } if (use_config[CONFIG_ECHO]) draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, first_match->command); } else { if (use_config[CONFIG_ECHO]) draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, first_match->command); extended_command(first_match->command); } return; } if (key>='0' && key<='9') { cpl.count = cpl.count*10 + (key-'0'); if (cpl.count>100000) cpl.count%=100000; gtk_spin_button_set_value (GTK_SPIN_BUTTON(spinbutton_count), (float) cpl.count ); return; } tmpbuf[0]=0; if (cpl.fire_on) strcat(tmpbuf,"fire+"); if (cpl.run_on) strcat(tmpbuf,"run+"); if (cpl.alt_on) strcat(tmpbuf,"alt+"); if (cpl.meta_on) strcat(tmpbuf,"meta+"); snprintf(buf, sizeof(buf), "Key %s%s is not bound to any command. Use bind to associate this keypress with a command", tmpbuf, keysym==NoSymbol? "unknown": gdk_keyval_name(keysym)); #ifdef WIN32 if ( ( 65513 != keysym ) && ( 65511 != keysym ) ) #endif draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); cpl.count=0; } /** * * @param key * @param save_mode If true, it means that the format used for saving the * information is used, instead of the usual format for displaying the * information in a friendly manner. * @return A character string describing the key. */ static char * get_key_info(Key_Entry *key, int save_mode) { /* bind buf is the maximum space allowed for a * binded command. We will add additional datas to * it so we increase by MAX_BUF*/ static char buf[MAX_BUF+sizeof(bind_buf)]; char buff[MAX_BUF]; int bi=0; if ((key->flags & KEYF_MODIFIERS) == KEYF_MODIFIERS) buff[bi++] ='A'; else { if (key->flags & KEYF_NORMAL) buff[bi++] ='N'; if (key->flags & KEYF_FIRE) buff[bi++] ='F'; if (key->flags & KEYF_RUN) buff[bi++] ='R'; if (key->flags & KEYF_ALT) buff[bi++] ='L'; if (key->flags & KEYF_META) buff[bi++] ='M'; } if (key->flags & KEYF_EDIT) buff[bi++] ='E'; if (key->flags & KEYF_STANDARD) buff[bi++] ='S'; buff[bi]='\0'; if (save_mode) { if(key->keysym == NoSymbol) { snprintf(buf, sizeof(buf), "(null) %i %s %s", 0,buff, key->command); } else { snprintf(buf, sizeof(buf), "%s %i %s %s", gdk_keyval_name(key->keysym), 0, buff, key->command); } } else { if(key->keysym == NoSymbol) { snprintf(buf, sizeof(buf), "key (null) %s %s", buff, key->command); } else { snprintf(buf, sizeof(buf), "key %s %s %s", gdk_keyval_name(key->keysym), buff, key->command); } } return buf; } /** * Shows all the keybindings. * * @param allbindings Also shows the standard (default) keybindings. */ static void show_keys(int allbindings) { int i, count=1; Key_Entry *key; char buf[MAX_BUF]; snprintf(buf, sizeof(buf), "Commandkey %s", commandkeysym==NoSymbol?"unknown":gdk_keyval_name(commandkeysym)); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); snprintf(buf, sizeof(buf), "Firekeys 1: %s, 2: %s", firekeysym[0]==NoSymbol?"unknown":gdk_keyval_name(firekeysym[0]), firekeysym[1]==NoSymbol?"unknown":gdk_keyval_name(firekeysym[1])); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); snprintf(buf, sizeof(buf), "Altkeys 1: %s, 2: %s", altkeysym[0]==NoSymbol?"unknown":gdk_keyval_name(altkeysym[0]), altkeysym[1]==NoSymbol?"unknown":gdk_keyval_name(altkeysym[1])); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); snprintf(buf, sizeof(buf), "Metakeys 1: %s, 2: %s", metakeysym[0]==NoSymbol?"unknown":gdk_keyval_name(metakeysym[0]), metakeysym[1]==NoSymbol?"unknown":gdk_keyval_name(metakeysym[1])); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); snprintf(buf, sizeof(buf), "Runkeys 1: %s, 2: %s", runkeysym[0]==NoSymbol?"unknown":gdk_keyval_name(runkeysym[0]), runkeysym[1]==NoSymbol?"unknown":gdk_keyval_name(runkeysym[1])); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); snprintf(buf, sizeof(buf), "Command Completion Key %s", completekeysym==NoSymbol?"unknown":gdk_keyval_name(completekeysym)); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); snprintf(buf, sizeof(buf), "Next Command in History Key %s", nextkeysym==NoSymbol?"unknown":gdk_keyval_name(nextkeysym)); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); snprintf(buf, sizeof(buf), "Previous Command in History Key %s", prevkeysym==NoSymbol?"unknown":gdk_keyval_name(prevkeysym)); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); /* * Perhaps we should start at 8, so that we only show 'active' keybindings? */ for (i=0; inext) { if (key->flags & KEYF_STANDARD && !allbindings) continue; snprintf(buf, sizeof(buf), "%3d %s",count, get_key_info(key,0)); draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); count++; } } } /** * Implements the "bind" command when entered as a text command. It parses the * command options, records the command to bind, then prompts the user to press * a key to bind. It also shows help for the bind command if the player types * bind with no parameters. * * @param params If null, show bind command help in the message pane. */ void bind_key(char *params) { char buf[MAX_BUF + 16]; if (!params) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Usage: bind [-aefmnr] {/commandkey/firekey{1/2}" "/runkey{1/2}/altkey{1/2}/metakey{1/2}" "completekey/nextkey/prevkey}"); return; } /* Skip over any spaces we may have */ while (*params==' ') params++; if (!strcmp(params, "commandkey")) { bind_keysym = &commandkeysym; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new commandkey."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "firekey1")) { bind_keysym = & firekeysym[0]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new firekey 1."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "firekey2")) { bind_keysym = & firekeysym[1]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new firekey 2."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "metakey1")) { bind_keysym = & metakeysym[0]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new metakey 1."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "metakey2")) { bind_keysym = & metakeysym[1]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new metakey 2."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "altkey1")) { bind_keysym = & altkeysym[0]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new altkey 1."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "altkey2")) { bind_keysym = & altkeysym[1]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new altkey 2."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "runkey1")) { bind_keysym = &runkeysym[0]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new runkey 1."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "runkey2")) { bind_keysym = &runkeysym[1]; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new runkey 2."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "completekey")) { bind_keysym = &completekeysym; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new command completion key"); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "prevkey")) { bind_keysym = &prevkeysym; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new previous command in history key."); cpl.input_state = Configure_Keys; return; } if (!strcmp(params, "nextkey")) { bind_keysym = &nextkeysym; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "Push key to bind new next command in history key."); cpl.input_state = Configure_Keys; return; } if (params[0] != '-') bind_flags = KEYF_MODIFIERS; else { bind_flags =0; bind_keysym=NULL; for (params++; *params != ' '; params++) switch (*params) { case 'a': bind_flags |= KEYF_ALT; break; case 'e': bind_flags |= KEYF_EDIT; break; case 'f': bind_flags |= KEYF_FIRE; break; case 'm': bind_flags |= KEYF_META; break; case 'n': bind_flags |= KEYF_NORMAL; break; case 'r': bind_flags |= KEYF_RUN; break; case '\0': draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Use unbind to remove bindings."); return; default: snprintf(buf, sizeof(buf), "Unsupported or invalid bind flag: '%c'", *params); draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, buf); return; } params++; } if (! (bind_flags & KEYF_MODIFIERS)) bind_flags |= KEYF_MODIFIERS; if (!params[0]) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Use unbind to remove bindings."); return; } if (strlen(params) >= sizeof(bind_buf)) { params[sizeof(bind_buf) - 1] = '\0'; draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, "Keybinding too long! Truncated:"); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, params); } snprintf(buf, sizeof(buf), "Push key to bind '%s'.", params); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, buf); strcpy(bind_buf, params); cpl.input_state = Configure_Keys; return; } /** * A recursive function that saves all the entries for a particular entry. We * save the first element first, and then go through and save the rest of the * elements. In this way, the ordering of the key entries in the file remains * the same. * * @param fp Pointer to an open file for writing key bind settings into. * @param key Pointer of a key hash record to save to the key bind file. * During recursion, key takes the value key->next, and then * returns when it becomes a NULL pointer. * @param kc */ static void save_individual_key(FILE *fp, Key_Entry *key, KeyCode kc) { if (key==NULL) return; fprintf(fp, "%s\n", get_key_info(key, 1)); save_individual_key(fp, key->next, kc); } /** * Saves the keybindings into the user's .crossfire/keys file. The output * file is opened, then the special shift/modifier keys are written first. * Next, the entire key hash is traversed and the contents of each slot is * dumped to the file, and the output file is closed. Success or failure is * reported to the message pane. * * @todo Fix the per-character keys file support that is under \#if 0. */ static void save_keys(void) { char buf[MAX_BUF], buf2[MAX_BUF]; int i; FILE *fp; #if 0 /* Use player's name if available */ /* FIXME: keys_init() is called long before the player logs in, so until * that is fixed, it is pointless to have this code check for cpl.name * being set so that a file is written that cannot be opened by under * the existing code structure. That just means the keybindings saved * while logged in would be inaccessible until the file was copied to * the regular keys file. Also, this was originally under #ifdef WIN32, * but is completely inappropriate for this to be a Windows only feature. */ if ( strlen( cpl.name ) ) sprintf( buf,"%s/.crossfire/%s.keys", getenv("HOME"), cpl.name ); else sprintf( buf,"%s/.crossfire/keys", getenv("HOME") ); #else snprintf(buf, sizeof(buf), "%s/.crossfire/keys", getenv("HOME")); CONVERT_FILESPEC_TO_OS_FORMAT(buf); #endif if (make_path_to_file(buf)==-1) { LOG(LOG_WARNING,"gtk-v2::save_keys","Could not create %s", buf); return; } if ((fp=fopen(buf,"w"))==NULL) { snprintf(buf2, sizeof(buf2), "Could not open %s, key bindings not saved\n", buf); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, buf2); return; } if (commandkeysym != GDK_apostrophe && commandkeysym != NoSymbol) { fprintf(fp, "! commandkey %s %d\n", gdk_keyval_name(commandkeysym), 0); } if (firekeysym[0] != GDK_Shift_L && firekeysym[0] != NoSymbol) { fprintf(fp, "! firekey0 %s %d\n", gdk_keyval_name(firekeysym[0]), 0); } if (firekeysym[1] != GDK_Shift_R && firekeysym[1] != NoSymbol) { fprintf(fp, "! firekey1 %s %d\n", gdk_keyval_name(firekeysym[1]), 0); } if (metakeysym[0] != GDK_Shift_L && metakeysym[0] != NoSymbol) { fprintf(fp, "! metakey0 %s %d\n", gdk_keyval_name(metakeysym[0]), 0); } if (metakeysym[1] != GDK_Shift_R && metakeysym[1] != NoSymbol) { fprintf(fp, "! metakey1 %s %d\n", gdk_keyval_name(metakeysym[1]), 0); } if (altkeysym[0] != GDK_Shift_L && altkeysym[0] != NoSymbol) { fprintf(fp, "! altkey0 %s %d\n", gdk_keyval_name(altkeysym[0]), 0); } if (altkeysym[1] != GDK_Shift_R && altkeysym[1] != NoSymbol) { fprintf(fp, "! altkey1 %s %d\n", gdk_keyval_name(altkeysym[1]), 0); } if (runkeysym[0] != GDK_Control_L && runkeysym[0] != NoSymbol) { fprintf(fp, "! runkey0 %s %d\n", gdk_keyval_name(runkeysym[0]), 0); } if (runkeysym[1] != GDK_Control_R && runkeysym[1] != NoSymbol) { fprintf(fp, "! runkey1 %s %d\n", gdk_keyval_name(runkeysym[1]), 0); } if (completekeysym != GDK_Tab && completekeysym != NoSymbol) { fprintf(fp, "! completekey %s %d\n", gdk_keyval_name(completekeysym), 0); } /* No defaults for these, so if it is set to anything, assume its valid */ if (nextkeysym != NoSymbol) { fprintf(fp, "! nextkey %s %d\n", gdk_keyval_name(nextkeysym), 0); } if (prevkeysym != NoSymbol) { fprintf(fp, "! prevkey %s %d\n", gdk_keyval_name(prevkeysym), 0); } for (i = 0; i < KEYHASH; i++) { save_individual_key(fp, keys[i], 0); } fclose(fp); /* Should probably check return value on all writes to be sure, but... */ draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, "Key bindings saved."); } /** * * @param keysym */ static void configure_keys(uint32 keysym) { char buf[MAX_BUF]; Key_Entry *keyentry, *first_match=NULL; /* * I think that basically if we are not rebinding the special control keys * (in which case bind_kesym would be set to something) we just want to * handle these keypresses as normal events. */ if (bind_keysym==NULL) { if(keysym == altkeysym[0] || keysym == altkeysym[1]) { cpl.alt_on =1; return; } if(keysym == metakeysym[0] || keysym == metakeysym[1]) { cpl.meta_on =1; return; } if(keysym == firekeysym[0] || keysym == firekeysym[1]) { cpl.fire_on =1; draw_message_window(0); return; } if(keysym == runkeysym[0] || keysym == runkeysym[1]) { cpl.run_on =1; draw_message_window(0); return; } } cpl.input_state = Playing; /* * Try to be clever - take into account shift/control keys being held down * when binding keys - in this way, player does not have to use -f and -r * flags to bind for many simple binds. */ if ((cpl.fire_on || cpl.run_on || cpl.meta_on || cpl.alt_on) && (bind_flags & KEYF_MODIFIERS)==KEYF_MODIFIERS) { bind_flags &= ~KEYF_MODIFIERS; if (cpl.fire_on) bind_flags |= KEYF_FIRE; if (cpl.run_on) bind_flags |= KEYF_RUN; if (cpl.meta_on) bind_flags |= KEYF_META; if (cpl.alt_on) bind_flags |= KEYF_ALT; } if (bind_keysym!=NULL) { *bind_keysym=keysym; bind_keysym=NULL; } else { keyentry = keys[keysym % KEYHASH]; while (keyentry!=NULL) { if ((keyentry->keysym!=0 && keyentry->keysym!=keysym) || (!(keyentry->flags & bind_flags))) { keyentry=keyentry->next; continue; } first_match = keyentry; /* Try to find a prefect match */ if ((keyentry->flags & KEYF_MODIFIERS)!= bind_flags) { keyentry=keyentry->next; continue; } else break; } if (first_match) { snprintf(buf, sizeof(buf), "Warning: Keybind %s may conflict with new binding.", first_match->command); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, buf); } insert_key(keysym, bind_flags, bind_buf); } snprintf(buf, sizeof(buf), "Binded to key '%s' (%i)", keysym==NoSymbol?"unknown":gdk_keyval_name(keysym), keysym); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, buf); cpl.fire_on=0; cpl.run_on=0; draw_message_window(0); /* * Do this each time a new key is bound. This way, we are never actually * storing any information that needs to be saved when the connection dies * or the player quits. */ save_keys(); return; } /** * Show help for the unbind command in the message pane. */ static void unbind_usage(void) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Usage: unbind or"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Usage: unbind [-a] [-g] to show existing bindings"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " -a shows all (global) bindings"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " -g unbinds a global binding"); } /** * * @param params */ void unbind_key(const char *params) { int count=0, keyentry, onkey,global=0; Key_Entry *key, *tmp; char buf[MAX_BUF]; if (params==NULL || params[0]=='\0') { show_keys(0); return; } /* Skip over any spaces we may have */ while (*params==' ') params++; if (!strcmp(params,"-a")) { show_keys(1); return; } if (!strncmp(params,"-g",2)) { global=1; if (!(params=strchr(params,' '))) { unbind_usage(); return; } } if ((keyentry=atoi(params))==0) { unbind_usage(); return; } for (onkey=0; onkeynext) { if (global || !(key->flags&KEYF_STANDARD)) count++; /* We found the key we want to unbind */ if (keyentry==count) { /* If it is the first entry, it is easy */ if (key == keys[onkey]) { keys[onkey] = key->next; goto unbinded; } /* * Otherwise, we need to figure out where in the link list the * entry is. */ for (tmp=keys[onkey]; tmp->next!=NULL; tmp=tmp->next) { if (tmp->next == key) { tmp->next =key->next; goto unbinded; } } LOG(LOG_ERROR, "gtk-v2::unbind_key", "found number entry, but could not find actual key"); } } } /* Makes things look better to draw the blank line */ draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, ""); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Not found. Try 'unbind' with no options to find entry."); return; /* * Found. Now remove it. */ unbinded: snprintf(buf, sizeof(buf), "Removed binding: %3d %s", count, get_key_info(key,0)); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, buf); free(key->command); free(key); save_keys(); } /** * GTK callback function used to handle client key release events. * * @param widget * @param event GDK Key Release Event * @param window */ void keyrelfunc(GtkWidget *widget, GdkEventKey *event, GtkWidget *window) { if (event->keyval > 0 && ! GTK_WIDGET_HAS_FOCUS(entry_commands)) { parse_key_release(event->keyval); } g_signal_stop_emission_by_name(GTK_OBJECT (window), "key_release_event"); } /** * GTK Callback function used to handle client key press events. * * @param widget * @param event GDK Key Press Event * @param window */ void keyfunc(GtkWidget *widget, GdkEventKey *event, GtkWidget *window) { char *text; if (!use_config[CONFIG_POPUPS]) { if ( ((cpl.input_state == Reply_One) || (cpl.input_state == Reply_Many)) && (event->keyval == cancelkeysym) ) { /* * Player hit cancel button during input. Disconnect it (code from * menubar) */ close_server_connection(); if (csocket_fd) { gdk_input_remove(csocket_fd); csocket_fd=0; gtk_main_quit(); } g_signal_stop_emission_by_name( GTK_OBJECT (window), "key_press_event"); return; } if (cpl.input_state == Reply_One) { text = gdk_keyval_name(event->keyval); send_reply(text); cpl.input_state = Playing; g_signal_stop_emission_by_name( GTK_OBJECT (window), "key_press_event"); return; } else if (cpl.input_state == Reply_Many) { if (GTK_WIDGET_HAS_FOCUS (entry_commands)) gtk_widget_event(GTK_WIDGET(entry_commands), (GdkEvent*)event); else gtk_widget_grab_focus (GTK_WIDGET(entry_commands)); g_signal_stop_emission_by_name( GTK_OBJECT (window), "key_press_event"); return; } } /* * Better check for really weirdo keys, X doesnt like keyval 0 so avoid * handling these key values. */ if (event->keyval > 0) { if (GTK_WIDGET_HAS_FOCUS (entry_commands)) { if (event->keyval == completekeysym) gtk_complete_command(); if (event->keyval == prevkeysym || event->keyval == nextkeysym) gtk_command_history(event->keyval == nextkeysym?0:1); else gtk_widget_event(GTK_WIDGET(entry_commands), (GdkEvent*)event); } else { switch(cpl.input_state) { case Playing: /* * Specials - do command history - many times, the player * will want to go the previous command when nothing is * entered in the command window. */ if (event->keyval == prevkeysym || event->keyval == nextkeysym) { gtk_command_history(event->keyval == nextkeysym?0:1); } else { if (cpl.run_on) { if (!(event->state & GDK_CONTROL_MASK)) { /* printf("Run is on while ctrl is not\n"); */ gtk_label_set (GTK_LABEL(run_label)," "); cpl.run_on=0; stop_run(); } } if (cpl.fire_on) { if (!(event->state & GDK_SHIFT_MASK)) { /* printf("Fire is on while shift is not\n");*/ gtk_label_set (GTK_LABEL(fire_label)," "); cpl.fire_on = 0; stop_fire(); } } if ( (event->state & GDK_CONTROL_MASK) && (event->state & GDK_SHIFT_MASK) && (event->keyval==GDK_i || event->keyval==GDK_I) ) { reset_map(); } parse_key(event->string[0], event->keyval); } break; case Configure_Keys: configure_keys(event->keyval); break; case Command_Mode: if ( event->keyval == completekeysym ) gtk_complete_command(); if ( event->keyval == prevkeysym || event->keyval == nextkeysym ) gtk_command_history(event->keyval == nextkeysym?0:1); else { gtk_widget_grab_focus (GTK_WIDGET(entry_commands)); /* * When running in split windows mode, entry_commands * can't get focus because it is in a different * window. So we have to pass the event to it * explicitly. */ if (GTK_WIDGET_HAS_FOCUS(entry_commands) == 0) gtk_widget_event( GTK_WIDGET(entry_commands), (GdkEvent*)event); } /* * Don't pass signal along to default handlers - * otherwise, we get get crashes in the clist area (gtk * fault I believe) */ break; case Metaserver_Select: gtk_widget_grab_focus (GTK_WIDGET(entry_commands)); break; default: LOG(LOG_ERROR, "gtk-v2::keyfunc", "Unknown input state: %d", cpl.input_state); } } } g_signal_stop_emission_by_name( GTK_OBJECT (window), "key_press_event"); } /** * Output the current list of keybindings to the message pane. * * @param keylist */ void draw_keybindings (GtkWidget *keylist) { int i, count=1; Key_Entry *key; int allbindings=0; char buff[MAX_BUF]; int bi=0; char buffer[5][MAX_BUF]; char *buffers[5]; gint tmprow; gtk_clist_clear (GTK_CLIST(keylist)); for (i=0; inext) { if (key->flags & KEYF_STANDARD && !allbindings) continue; bi=0; if ((key->flags & KEYF_MODIFIERS) == KEYF_MODIFIERS) buff[bi++] ='A'; else { if (key->flags & KEYF_NORMAL) buff[bi++] ='N'; if (key->flags & KEYF_FIRE) buff[bi++] ='F'; if (key->flags & KEYF_RUN) buff[bi++] ='R'; if (key->flags & KEYF_ALT) buff[bi++] ='L'; if (key->flags & KEYF_META) buff[bi++] ='M'; } if (key->flags & KEYF_EDIT) buff[bi++] ='E'; if (key->flags & KEYF_STANDARD) buff[bi++] ='S'; buff[bi]='\0'; if(key->keysym != NoSymbol) { snprintf(buffer[0], sizeof(buffer[0]), "%i",count); snprintf(buffer[1], sizeof(buffer[1]), "%s", gdk_keyval_name(key->keysym)); snprintf(buffer[2], sizeof(buffer[2]), "%i",i); snprintf(buffer[3], sizeof(buffer[3]), "%s",buff); snprintf(buffer[4], sizeof(buffer[4]), "%s", key->command); buffers[0] = buffer[0]; buffers[1] = buffer[1]; buffers[2] = buffer[2]; buffers[3] = buffer[3]; buffers[4] = buffer[4]; tmprow = gtk_clist_append (GTK_CLIST (keylist), buffers); } count++; } } } /** * */ void x_set_echo(void) { gtk_entry_set_visibility(GTK_ENTRY(entry_commands), !cpl.no_echo); } /** * Draws a prompt. Don't deal with popups for the time being. * * @param str */ void draw_prompt(const char *str) { draw_ext_info(NDI_WHITE, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, str); gtk_widget_grab_focus (GTK_WIDGET(entry_commands)); } /** * Deals with command history. * * @param direction If 0, we are going backwards, if 1, we are moving forward. */ void gtk_command_history(int direction) { int i=scroll_history_position; if (direction) { i--; if (i<0) i+=MAX_HISTORY; if (i == cur_history_position) return; } else { i++; if (i>=MAX_HISTORY) i = 0; if (i == cur_history_position) { /* * User has forwarded to what should be current entry - reset it * now. */ gtk_entry_set_text(GTK_ENTRY(entry_commands), ""); gtk_entry_set_position(GTK_ENTRY(entry_commands), 0); scroll_history_position=cur_history_position; return; } } if (history[i][0] == 0) return; scroll_history_position=i; /* fprintf(stderr,"resetting postion to %d, data = %s\n", i, history[i]);*/ gtk_entry_set_text(GTK_ENTRY(entry_commands), history[i]); gtk_widget_grab_focus (GTK_WIDGET(entry_commands)); gtk_editable_select_region(GTK_EDITABLE(entry_commands), 0, 0); gtk_editable_set_position(GTK_EDITABLE(entry_commands), -1); cpl.input_state = Command_Mode; } /** * Executes when the TAB key is pressed while the command input box has focus * to give hints on what commands begin with the text already entered to this * point. It is almost like tab completion, except for the completion. The TAB * key is also known by GDK_Tab, completekey, or completekeysym. */ void gtk_complete_command(void) { const gchar *entry_text, *newcommand; entry_text = gtk_entry_get_text(GTK_ENTRY(entry_commands)); newcommand = complete_command(entry_text); /* value differ, so update window */ if (newcommand != NULL) { gtk_entry_set_text(GTK_ENTRY(entry_commands), newcommand); gtk_widget_grab_focus (GTK_WIDGET(entry_commands)); gtk_editable_select_region(GTK_EDITABLE(entry_commands), 0, 0); gtk_editable_set_position(GTK_EDITABLE(entry_commands), -1); } } /** * Used to process keyboard input whenever the player types commands into the * command entry box. * * @param entry * @param user_data */ void on_entry_commands_activate (GtkEntry *entry, gpointer user_data) { const gchar *entry_text; extern GtkWidget *treeview_look; /* Next reply will reset this as necessary */ if (!use_config[CONFIG_POPUPS]) gtk_entry_set_visibility(GTK_ENTRY(entry), TRUE); entry_text = gtk_entry_get_text(GTK_ENTRY(entry)); if (cpl.input_state==Metaserver_Select) { strcpy(cpl.input_text, entry_text); } else if (cpl.input_state == Reply_One || cpl.input_state == Reply_Many) { cpl.input_state = Playing; strcpy(cpl.input_text, entry_text); if (cpl.input_state == Reply_One) cpl.input_text[1] = 0; send_reply(cpl.input_text); } else { cpl.input_state = Playing; /* Some spells (dimension door) need a valid count value */ cpl.count = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(spinbutton_count)); /* No reason to do anything for a null string */ if (entry_text[0] != 0) { strncpy(history[cur_history_position], entry_text, MAX_COMMAND_LEN); history[cur_history_position][MAX_COMMAND_LEN-1] = 0; cur_history_position++; cur_history_position %= MAX_HISTORY; scroll_history_position = cur_history_position; extended_command(entry_text); } } gtk_entry_set_text(GTK_ENTRY(entry),""); /* * This grab focus is really just so the entry box doesn't have focus - * this way, keypresses are used to play the game, and not as stuff that * goes into the entry box. It doesn't make much difference what widget * this is set to, as long as it is something that can get focus. */ gtk_widget_grab_focus (GTK_WIDGET(treeview_look)); if( cpl.input_state == Metaserver_Select) { cpl.input_state= Playing; /* * This is the gtk_main that is started up by get_metaserver The client * will start another one once it is connected to a crossfire server */ gtk_main_quit(); } } /** * @} EndOf GtkV2KeyBinding */ /** * @defgroup GtkV2KeyBindingWindow GTK-V2 client keybinding window functions. * @{ */ /** * Update the keybinding dialog to reflect the current state of the keys file. */ void update_keybinding_list(void) { int i, allbindings=0; Key_Entry *key; char modifier_buf[256]; GtkTreeIter iter; gtk_list_store_clear(keybinding_store); for (i=0; inext) { if (key->flags & KEYF_STANDARD && !allbindings) continue; modifier_buf[0] = 0; if ((key->flags & KEYF_MODIFIERS) != KEYF_MODIFIERS) { if (key->flags & KEYF_ALT) strcat(modifier_buf,"Alt "); if (key->flags & KEYF_FIRE) strcat(modifier_buf,"Fire "); if (key->flags & KEYF_RUN) strcat(modifier_buf,"Run "); if (key->flags & KEYF_META) strcat(modifier_buf,"Meta "); } else { strcat(modifier_buf, "All "); } if (key->flags & KEYF_STANDARD) strcat(modifier_buf,"(Standard) "); gtk_list_store_append(keybinding_store, &iter); gtk_list_store_set(keybinding_store, &iter, KLIST_ENTRY, i, KLIST_KEY, gdk_keyval_name(key->keysym), KLIST_MODS, modifier_buf, KLIST_EDIT, (key->flags & KEYF_EDIT) ? "Yes":"No", KLIST_COMMAND, key->command, KLIST_KEY_ENTRY, key, -1); } } reset_keybinding_status(); } /** * Menubar item to activate keybindings window * * @param menuitem * @param user_data */ void on_keybindings_activate (GtkMenuItem *menuitem, gpointer user_data) { gtk_widget_show(keybinding_window); update_keybinding_list(); } /** * Respond to a key press in the "Key" input box. If the keyboard has modifier * keys pressed, set the appropriate "Keybinding Modifiers" checkboxes if the * shift or control keys happens to be pressed at the time. Oddly, the Alt and * Meta keys are not similarly handled. Checkboxes are never cleared here in * case the user had just set the checkboxes ahead of time.i * * @param widget * @param event * @param user_data * @return TRUE (Returning TRUE prevents widget from getting this event.) */ gboolean on_keybinding_entry_key_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { gtk_entry_set_text( GTK_ENTRY(keybinding_entry_key), gdk_keyval_name(event->keyval)); /* * This code is basically taken from the GTKv1 client. However, at some * level it is broken, since the control/shift/etc masks are hardcoded, yet * we do let the users redefine them. * * The clearing of the modifiers is disabled. In my basic testing, I * checked the modifiers and then pressed the key - have those modifiers go * away I think is less intuitive. */ if (event->state & GDK_CONTROL_MASK) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_control), TRUE); #if 0 else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_control), FALSE); #endif if (event->state & GDK_SHIFT_MASK) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_shift), TRUE); #if 0 else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(keybinding_checkbutton_shift), FALSE); /* The GDK_MOD_MASK* will likely correspond to alt and meta, yet there is * no way to be sure what goes to what, so easiest to just not allow them. */ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_alt), FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_meta), FALSE); #endif /* Returning TRUE prevents widget from getting this event */ return TRUE; } /** * Implements the "Remove Binding" button function that unbinds the currently * selected keybinding. * * @param button * @param user_data */ void on_keybinding_button_remove_clicked (GtkButton *button, gpointer user_data) { GtkTreeModel *model; GtkTreeIter iter; Key_Entry *entry, *key, *tmp; int onkey; if (!gtk_tree_selection_get_selected(keybinding_selection, &model, &iter)) { LOG(LOG_ERROR, "keys.c::on_keybinding_button_remove_clicked", "Function called with nothing selected\n"); return; } gtk_tree_model_get(model, &iter, KLIST_KEY_ENTRY, &entry, -1); for (onkey = 0; onkey < KEYHASH; onkey++) { for (key = keys[onkey]; key; key = key->next) { if (key == entry) { /* * This code is directly from unbind_key() above If it is the * first entry, it is easy */ if (key == keys[onkey]) { keys[onkey] = key->next; goto unbinded; } /* * Otherwise, we need to figure out where in the link list the * entry is. */ for (tmp = keys[onkey]; tmp->next != NULL; tmp = tmp->next) { if (tmp->next == key) { tmp->next = key->next; goto unbinded; } } } } } LOG(LOG_ERROR, "keys.c::on_keybinding_button_remove_clicked", "Unable to find matching key entry\n"); unbinded: free(key->command); free(key); save_keys(); update_keybinding_list(); } /** * Gets the state information from what checkboxes and other data in the window * and puts it in the variables passed passed. This is used by both the update * and add functions. * * @param keysym * @param flags * @param command */ static void keybinding_get_data(uint32 *keysym, uint8 *flags, const char **command) { static char bind_buf[MAX_BUF]; const char *ed; *flags = 0; if (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_control))) *flags |= KEYF_RUN; if (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_shift))) *flags |= KEYF_FIRE; if (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_alt))) *flags |= KEYF_ALT; if (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_meta))) *flags |= KEYF_META; /* Set the KEYF_NORMAL flag when either none or all of the Run, Fire, Alt, * Meta checkboxes are checked. This closely matches the combined existing * logic in the parse_key() and get_key_info() functions. */ if (! *flags || (*flags | KEYF_NORMAL) == KEYF_MODIFIERS) *flags |= KEYF_NORMAL; if (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_edit))) *flags |= KEYF_EDIT; ed = gtk_entry_get_text(GTK_ENTRY(keybinding_entry_command)); if (strlen(ed) >= sizeof(bind_buf)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, "Keybinding too long! Truncated."); strncpy(bind_buf, ed, MAX_BUF-1); bind_buf[MAX_BUF-1] = 0; *command = bind_buf; } else { *command = ed; } /* * This isn't ideal - when the key is pressed, we convert it to a string, * and now we are converting it back. It'd be nice to tuck the keysym * itself away someplace. */ *keysym = gdk_keyval_from_name( gtk_entry_get_text(GTK_ENTRY(keybinding_entry_key))); if (*keysym == GDK_VoidSymbol) { LOG(LOG_ERROR, "keys.c::keybinding_get_data", "Cannot get valid keysym from selection"); } } /** * Sets up a new binding when the "Add" button is clicked. * * @param button * @param user_data */ void on_keybinding_button_bind_clicked (GtkButton *button, gpointer user_data) { uint32 keysym; uint8 flags; const char *command; keybinding_get_data(&keysym, &flags, &command); /* insert_key will do a strdup of command for us */ insert_key(keysym, flags, command); /* * I think it is more appropriate to clear the fields once the user adds * it. I suppose the ideal case would be to select the newly inserted * keybinding. */ reset_keybinding_status(); update_keybinding_list(); save_keys(); } /** * Implements the "Update Binding" button to update the currently selected * keybinding to match the currently shown identifiers, key, or command input * fields. If a keybinding is highlighted, so something. If not, log an error * since the "Update Binding" button should have been disabled. * * @param button * @param user_data */ void on_keybinding_button_update_clicked (GtkButton *button, gpointer user_data) { GtkTreeIter iter; Key_Entry *entry; GtkTreeModel *model; const char *buf; if (gtk_tree_selection_get_selected(keybinding_selection, &model, &iter)) { gtk_tree_model_get(model, &iter, KLIST_KEY_ENTRY, &entry, -1); if (!entry) { LOG(LOG_ERROR, "keys.c::on_keybinding_button_update_clicked", "Unable to get key_entry structure\n"); return; } free(entry->command); keybinding_get_data(&entry->keysym, &entry->flags, &buf); entry->command = strdup_local(buf); update_keybinding_list(); save_keys(); } else { LOG(LOG_ERROR, "keys.c::on_keybinding_button_update_clicked", "Nothing selected to update\n"); } } /** * Deactivates the keybinding dialog when the "Close Window" button is clicked. * * @param button * @param user_data */ void on_keybinding_button_close_clicked (GtkButton *button, gpointer user_data) { gtk_widget_hide(keybinding_window); } /** * Called when the user clicks one of the entries in the list of keybindings * and places information about it into the input fields on the dialog. This * allows the player to edit and update, or remove bindings. * * @param selection * @param model * @param path * @param path_currently_selected * @param userdata * @return TRUE */ gboolean keybinding_selection_func ( GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer userdata) { GtkTreeIter iter; Key_Entry *entry; gtk_widget_set_sensitive(keybinding_button_remove, TRUE); gtk_widget_set_sensitive(keybinding_button_update, TRUE); if (gtk_tree_model_get_iter(model, &iter, path)) { gtk_tree_model_get(model, &iter, KLIST_KEY_ENTRY, &entry, -1); if (!entry) { LOG(LOG_ERROR, "keys.c::keybinding_selection_func", "Unable to get key_entry structure\n"); return FALSE; } if (entry->flags & KEYF_RUN) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_control), TRUE); else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_control), FALSE); if (entry->flags & KEYF_FIRE) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_shift), TRUE); else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_shift), FALSE); if (entry->flags & KEYF_ALT) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_alt), TRUE); else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_alt), FALSE); if (entry->flags & KEYF_META) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_meta), TRUE); else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_meta), FALSE); if (entry->flags & KEYF_EDIT) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_edit), TRUE); else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_edit), FALSE); gtk_entry_set_text( GTK_ENTRY(keybinding_entry_key), gdk_keyval_name(entry->keysym)); gtk_entry_set_text( GTK_ENTRY(keybinding_entry_command), entry->command); } return TRUE; } /** * Reset the state of the keybinding dialog. Uncheck all modifier checkboxes, * clear the key input box, clear the command input box, and disable the two * update and remove keybinding buttons. */ void reset_keybinding_status(void) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_control), FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_shift), FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_alt), FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_meta), FALSE); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(keybinding_checkbutton_edit), FALSE); gtk_entry_set_text (GTK_ENTRY(keybinding_entry_key), ""); gtk_entry_set_text (GTK_ENTRY(keybinding_entry_command), ""); gtk_widget_set_sensitive(keybinding_button_remove, FALSE); gtk_widget_set_sensitive(keybinding_button_update, FALSE); } /** * Implements the "Clear Fields" button function on the keybinding dialog. If * a keybinding is highlighted (selected), de-select it first, then clear all * of * the input boxes and reset any buttons to an appropriate state. * * @param button * @param user_data */ void on_keybinding_button_clear_clicked (GtkButton *button, gpointer user_data) { GtkTreeModel *model; GtkTreeIter iter; /* * As the cleared state is not supposed to have a keybinding selected, * deselect the currently selected keybinding if there is one. */ if (gtk_tree_selection_get_selected(keybinding_selection, &model, &iter)) { gtk_tree_selection_unselect_iter (keybinding_selection, &iter); } reset_keybinding_status(); /* Clear inputs and reset buttons. */ } /** * @} EndOf GtkV2KeyBindingWindow */ crossfire-client-1.70.0/gtk-v2/src/stats.c0000644000014500000120000006205411731277013015172 00000000000000const char * const rcsid_gtk2_stats_c = "$Id: stats.c 14240 2011-01-12 06:31:21Z mwedel $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2007 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/stats.c * Support for character statistics. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "client.h" #include "main.h" #include "image.h" #include "gtk2proto.h" #define STAT_BAR_HP 0 #define STAT_BAR_SP 1 #define STAT_BAR_GRACE 2 #define STAT_BAR_FOOD 3 #define STAT_BAR_EXP 4 #define MAX_STAT_BARS 5 static const char * const stat_bar_names[MAX_STAT_BARS] = { "hp", "sp", "grace", "food", "exp" }; static GtkWidget *stat_current[MAX_STAT_BARS]; static GtkWidget *stat_max[MAX_STAT_BARS]; static GtkWidget *stat_bar[MAX_STAT_BARS]; #define STYLE_NORMAL 0 #define STYLE_LOW 1 #define STYLE_SUPER 2 #define STYLE_GRAD_NORMAL 3 #define STYLE_GRAD_LOW 4 #define STYLE_GRAD_SUPER 5 #define NUM_STYLES 6 /* The name of the symbolic widget names we try to look up the styles of * (these will be prefixed with hp_, sp_, etc). This should always match * NUM_STYLES. */ static const char * const stat_style_names[NUM_STYLES] = { "bar_normal", "bar_low", "bar_super", "gradual_bar_normal", "gradual_bar_low", "gradual_bar_super" }; /* We really only care about the colors, as there isn't anything else we can * change about the progressbar widget itself. */ GdkColor *bar_colors[MAX_STAT_BARS][NUM_STYLES]; /* The table for showing skill exp is an x & y grid. Note for proper * formatting, SKILL_BOXES_X must be even. Hmmm - perhaps these should * instead be dynamically generated? */ #define SKILL_BOXES_X 6 #define SKILL_BOXES_Y 17 #define PROTECTION_BOXES_X 6 #define PROTECTION_BOXES_Y 6 typedef struct { GtkWidget *playername; GtkWidget *Str; GtkWidget *Dex; GtkWidget *Con; GtkWidget *Int; GtkWidget *Wis; GtkWidget *Cha; GtkWidget *Pow; GtkWidget *wc; GtkWidget *dam; GtkWidget *ac; GtkWidget *armor; GtkWidget *speed; GtkWidget *weapon_speed; GtkWidget *range; GtkWidget *exp; GtkWidget *level; GtkWidget *table_skills_exp; GtkWidget *table_protections; GtkWidget *skill_exp[SKILL_BOXES_X * SKILL_BOXES_Y]; GtkWidget *resists[PROTECTION_BOXES_X * PROTECTION_BOXES_Y]; } StatWindow; static StatWindow statwindow; int need_mapping_update=1; static int lastval[MAX_STAT_BARS], lastmax[MAX_STAT_BARS]; /** * Gets the style information for the stat bars (only portion of the window * right now that has custom style support. */ void stats_get_styles(void) { static int has_init=0; int stat_bar, sub_style; char buf[MAX_BUF]; GtkStyle *tmp_style; if (!has_init) { memset(bar_colors, 0, sizeof(GdkColor*) * MAX_STAT_BARS * NUM_STYLES); } for (stat_bar=0; stat_bar < MAX_STAT_BARS; stat_bar++) { for (sub_style=0; sub_style < NUM_STYLES; sub_style++) { snprintf(buf, sizeof(buf), "%s_%s", stat_bar_names[stat_bar], stat_style_names[sub_style]); tmp_style = gtk_rc_get_style_by_paths(gtk_settings_get_default(), NULL, buf, G_TYPE_NONE); if (!tmp_style) { if (bar_colors[stat_bar][sub_style]) { free(bar_colors[stat_bar][sub_style]); bar_colors[stat_bar][sub_style] = NULL; } LOG(LOG_INFO, "stats.c::stats_get_styles()", "Unable to find style '%s'", buf); } else { if (!bar_colors[stat_bar][sub_style]) bar_colors[stat_bar][sub_style] = calloc(1, sizeof(GdkColor)); memcpy(bar_colors[stat_bar][sub_style], &tmp_style->base[GTK_STATE_SELECTED], sizeof(GdkColor)); } } } } /** * Associate the XML-defined widgets with pointers by name reference. * @param *window_root */ void stats_init(GtkWidget *window_root) { int i, x, y; char buf[MAX_BUF]; GladeXML *xml_tree; xml_tree = glade_get_widget_tree(GTK_WIDGET(window_root)); for (i=0; i 0) bar = (float) statbar_stat / (float) statbar_max; else bar = 0.0; /* Simple check to see if current stat is less than 25% */ if (can_alert && current_stat * 4 < max_stat) is_alert=1; else is_alert = 0; if (use_config[CONFIG_GRAD_COLOR]) { /* In this mode, the color of the stat bar were go between red and green * in a gradual style. Color is blended from low to high */ GdkColor *hcolor, *lcolor; float diff; /* First thing we do is figure out current values, and thus what color * bases we use (based on super charged or normal value). We also set * up diff as where we are between those two points. In this way, the * blending logic below is the same regardless of actual value. */ if (bar > 1.0) { if (bar>2.0) bar=2.0; /* Display unaffected; just calculations */ hcolor = bar_colors[stat_no][STYLE_GRAD_SUPER]; lcolor = bar_colors[stat_no][STYLE_GRAD_NORMAL]; diff = bar - 1.0; } else { if (bar < 0.0) bar=0.0; /* Like above, does not affect display */ hcolor = bar_colors[stat_no][STYLE_GRAD_NORMAL]; lcolor = bar_colors[stat_no][STYLE_GRAD_LOW]; diff = bar; } /* Now time to blend. First, make sure colors are set. then, we use * the lcolor as the base, making adjustments based on hcolor. Values * in hcolor may be lower than lcolor, but that just means we * substract from lcolor, not add. */ if (lcolor && hcolor) { #if 1 memcpy(&ncolor, lcolor, sizeof(GdkColor)); ncolor.red += (hcolor->red - lcolor->red) * diff; ncolor.green += (hcolor->green - lcolor->green) * diff; ncolor.blue += (hcolor->blue - lcolor->blue) * diff; #else /* This is an alternate coloring method that works when using * saturated colors for the base points. This mimics the old * code, and works good when using such saturated colors (eg, one * of the RGB triplets being 255, others 0, like red, green, or * blue). However, this doesn't produce very good results when * not using those colors - if say magenta and yellow are chosen * as the two colors, this code results in the colors basically * getting near white in the middle values. For saturated colors, * the code below would produce nice bright yellow for the middle * values, where as the code above produces more a dark yellow, * since it only takes half the red and half the green. However, * the code above still produces useful results even with that * limitation, and it works for all colors, so it is the code * enabled. It perhaps be interesting to have some detection * logic on how the colors are actually set - if only a single * r/g/b value is set for the two colors, then use this logic * here, otherwise the above logic or something. * MSW 2007-01-24 */ if (diff > 0.5) { memcpy(&ncolor, hcolor, sizeof(GdkColor)); if (lcolor->red > hcolor->red) ncolor.red = 2 * lcolor->red * (1.0 - diff); if (lcolor->green > hcolor->green) ncolor.green = 2 * lcolor->green * (1.0 - diff); if (lcolor->blue > hcolor->blue) ncolor.blue = 2 * lcolor->blue * (1.0 - diff); } else { memcpy(&ncolor, lcolor, sizeof(GdkColor)); if (hcolor->red > lcolor->red) ncolor.red = 2 * hcolor->red * diff; if (hcolor->green > lcolor->green) ncolor.green = 2 * hcolor->green * diff; if (hcolor->blue > lcolor->blue) ncolor.blue = 2 * hcolor->blue * diff; } #endif #if 0 fprintf(stderr,"stat %d, val %d, r/g/b=%d/%d/%d\n", stat_no, current_stat, ncolor.red, ncolor.green, ncolor.blue); #endif set_color = &ncolor; } } else { if (statbar_stat * 4 < statbar_max) set_color = bar_colors[stat_no][STYLE_LOW]; else if (statbar_stat > statbar_max) set_color = bar_colors[stat_no][STYLE_SUPER]; else set_color = bar_colors[stat_no][STYLE_NORMAL]; } if (bar > 1.0) bar = 1.0; if (bar < 0.0) bar = 0.0; /* It may be a waste, but we set the color everytime here - it isn't very * costly, and keeps us from tracing the last color we set. Note that * set_color could be null, which means it reverts back to normal color. */ gtk_widget_modify_base(stat_bar[stat_no], GTK_STATE_SELECTED, set_color); gtk_progress_set_percentage(GTK_PROGRESS(stat_bar[stat_no]), bar); snprintf(buf, sizeof(buf), "%"FMT64, current_stat); gtk_label_set(GTK_LABEL(stat_current[stat_no]), buf); snprintf(buf, sizeof(buf), "%"FMT64, max_stat); gtk_label_set(GTK_LABEL(stat_max[stat_no]), buf); } /** * Updates the stats pane - hp, sp, etc labels * * @param redraw */ void draw_message_window(int redraw) { static int lastbeep=0; static sint64 level_diff; update_stat(0, cpl.stats.maxhp, cpl.stats.hp, cpl.stats.maxhp, cpl.stats.hp, TRUE); update_stat(1, cpl.stats.maxsp, cpl.stats.sp, cpl.stats.maxsp, cpl.stats.sp, TRUE); update_stat(2, cpl.stats.maxgrace, cpl.stats.grace, cpl.stats.maxgrace, cpl.stats.grace, TRUE); update_stat(3, 999, cpl.stats.food, 999, cpl.stats.food, TRUE); /* We may or may not have an exp table from the server. If we don't, just * use current exp value so it will always appear maxed out. */ /* We calculate level_diff here just so it makes the update_stat() * call below less messy. */ if ((cpl.stats.level+1) < exp_table_max) level_diff = exp_table[cpl.stats.level+1] - exp_table[cpl.stats.level]; else level_diff=cpl.stats.exp; update_stat(4, (cpl.stats.level+1) < exp_table_max ? exp_table[cpl.stats.level+1]:cpl.stats.exp, cpl.stats.exp, level_diff, (cpl.stats.level+1) < exp_table_max ? (cpl.stats.exp - exp_table[cpl.stats.level]):cpl.stats.exp, FALSE); if (use_config[CONFIG_FOODBEEP] && (cpl.stats.food%4==3) && (cpl.stats.food < 200)) { gdk_beep( ); } else if (use_config[CONFIG_FOODBEEP] && cpl.stats.food == 0 && ++lastbeep == 5) { lastbeep = 0; gdk_beep( ); } } /** * The mapping tables may not be completely full, so handle null values. * Always treat null values as later in the sort order. */ static int mapping_sort(NameMapping *a, NameMapping *b) { if (!a->name && !b->name) return 0; if (!a->name) return 1; if (!b->name) return -1; else return strcasecmp(a->name, b->name); } /** * */ static void update_stat_mapping(void) { int i; for (i=0; i < MAX_SKILL; i++) { skill_mapping[i].value=i; if (skill_names[i]) skill_mapping[i].name = skill_names[i]; else skill_mapping[i].name = NULL; } qsort(skill_mapping, MAX_SKILL, sizeof(NameMapping), (int (*)(const void*, const void*))mapping_sort); for (i=0; i < NUM_RESISTS; i++) { resist_mapping[i].value=i; if (resists_name[i]) resist_mapping[i].name = resists_name[i]; else resist_mapping[i].name = NULL; } qsort(resist_mapping, NUM_RESISTS, sizeof(NameMapping), (int (*)(const void*, const void*))mapping_sort); need_mapping_update=0; } /** * Draws the stats window. If redraw is true, it means we need to redraw the * entire thing, and not just do an updated */ void draw_stats(int redraw) { static Stats last_stats; static char last_name[MAX_BUF]="", last_range[MAX_BUF]=""; static int init_before=0, max_drawn_skill=0, max_drawn_resists=0; float weap_sp; char buff[MAX_BUF]; int i, on_skill, sk; if (!init_before) { init_before=1; memset(&last_stats, 0, sizeof(Stats)); } /* skill_names gets set as part of the initialization with the * client - however, right now, there is no callback when * it is set, so instead, just track that wee need to update * and see if it changes. */ if (need_mapping_update && skill_names[1] != NULL) { update_stat_mapping(); } if (strcmp(cpl.title, last_name) || redraw) { strcpy(last_name,cpl.title); gtk_label_set (GTK_LABEL(statwindow.playername), cpl.title); } if(redraw || cpl.stats.exp!=last_stats.exp) { last_stats.exp = cpl.stats.exp; snprintf(buff, sizeof(buff), "Experience: %5" FMT64 ,cpl.stats.exp); gtk_label_set (GTK_LABEL(statwindow.exp), buff); } if(redraw || cpl.stats.level!=last_stats.level) { last_stats.level = cpl.stats.level; snprintf(buff, sizeof(buff), "Level: %d",cpl.stats.level); gtk_label_set (GTK_LABEL(statwindow.level), buff); } if(redraw || cpl.stats.Str!=last_stats.Str) { last_stats.Str=cpl.stats.Str; snprintf(buff, sizeof(buff), "%2d",cpl.stats.Str); gtk_label_set (GTK_LABEL(statwindow.Str), buff); } if(redraw || cpl.stats.Dex!=last_stats.Dex) { last_stats.Dex=cpl.stats.Dex; snprintf(buff, sizeof(buff), "%2d",cpl.stats.Dex); gtk_label_set (GTK_LABEL(statwindow.Dex), buff); } if(redraw || cpl.stats.Con!=last_stats.Con) { last_stats.Con=cpl.stats.Con; snprintf(buff, sizeof(buff), "%2d",cpl.stats.Con); gtk_label_set (GTK_LABEL(statwindow.Con), buff); } if(redraw || cpl.stats.Int!=last_stats.Int) { last_stats.Int=cpl.stats.Int; snprintf(buff, sizeof(buff), "%2d",cpl.stats.Int); gtk_label_set (GTK_LABEL(statwindow.Int), buff); } if(redraw || cpl.stats.Wis!=last_stats.Wis) { last_stats.Wis=cpl.stats.Wis; snprintf(buff, sizeof(buff), "%2d",cpl.stats.Wis); gtk_label_set (GTK_LABEL(statwindow.Wis), buff); } if(redraw || cpl.stats.Pow!=last_stats.Pow) { last_stats.Pow=cpl.stats.Pow; snprintf(buff, sizeof(buff), "%2d",cpl.stats.Pow); gtk_label_set (GTK_LABEL(statwindow.Pow), buff); } if(redraw || cpl.stats.Cha!=last_stats.Cha) { last_stats.Cha=cpl.stats.Cha; snprintf(buff, sizeof(buff), "%2d",cpl.stats.Cha); gtk_label_set (GTK_LABEL(statwindow.Cha), buff); } if(redraw || cpl.stats.wc!=last_stats.wc) { last_stats.wc=cpl.stats.wc; snprintf(buff, sizeof(buff), "%3d",cpl.stats.wc); gtk_label_set (GTK_LABEL(statwindow.wc), buff); } if(redraw || cpl.stats.dam!=last_stats.dam) { last_stats.dam=cpl.stats.dam; snprintf(buff, sizeof(buff), "%d",cpl.stats.dam); gtk_label_set (GTK_LABEL(statwindow.dam), buff); } if(redraw || cpl.stats.ac!=last_stats.ac) { last_stats.ac=cpl.stats.ac; snprintf(buff, sizeof(buff), "%d",cpl.stats.ac); gtk_label_set (GTK_LABEL(statwindow.ac), buff); } if(redraw || cpl.stats.resists[0]!=last_stats.resists[0]) { last_stats.resists[0]=cpl.stats.resists[0]; snprintf(buff, sizeof(buff), "%d",cpl.stats.resists[0]); gtk_label_set (GTK_LABEL(statwindow.armor), buff); } if (redraw || cpl.stats.speed!=last_stats.speed) { last_stats.speed=cpl.stats.speed; snprintf(buff, sizeof(buff), "%3.2f",(float)cpl.stats.speed/FLOAT_MULTF); gtk_label_set (GTK_LABEL(statwindow.speed), buff); } /* sc_version >= 1029 reports real value of weapon speed - * not as a factor of player speed. Handle accordingly. */ if (csocket.sc_version >= 1029) weap_sp = (float) cpl.stats.weapon_sp / FLOAT_MULTF; else weap_sp = (float) cpl.stats.speed/((float)cpl.stats.weapon_sp); if (redraw || weap_sp !=last_stats.weapon_sp) { last_stats.weapon_sp=weap_sp; snprintf(buff, sizeof(buff), "%3.2f",weap_sp); gtk_label_set (GTK_LABEL(statwindow.weapon_speed), buff); } if(redraw || strcmp(cpl.range, last_range)) { strcpy(last_range, cpl.range); snprintf(buff, sizeof(buff), "Range: %s",cpl.range); gtk_label_set (GTK_LABEL(statwindow.range), cpl.range); } update_skill_information(); if (statwindow.table_skills_exp) { /* Do not attempt to set up the table_skills_exp widget if it was not * defined in the .glade layout. */ on_skill=0; assert(sizeof(statwindow.skill_exp)/sizeof(*statwindow.skill_exp) >= 2*MAX_SKILL); for (i=0; i= PROTECTION_BOXES_X * PROTECTION_BOXES_Y) break; } } /* Erase old/unused resistances */ if (j < max_drawn_resists) { for (i=j; i <= max_drawn_resists; i++) { gtk_label_set(GTK_LABEL(statwindow.resists[i]), ""); } } max_drawn_resists = j; } /* if we draw the resists */ /* Don't need to worry about hp, sp, grace, food - update_stat() * deals with that as part of the stat bar logic. */ } /** * */ void clear_stat_mapping(void) { need_mapping_update=1; } crossfire-client-1.70.0/gtk-v2/src/menubar.c0000644000014500000120000002542211731277013015463 00000000000000const char * const rcsid_gtk2_menubar_c = "$Id: menubar.c 13958 2010-10-02 09:34:23Z ryo_saeba $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/menubar.c * Sets up menu connections and implements core menu items in the top menubar. * * Quick notes on the menubar: * 1) Using the stock Quit menu item for some reason causes it to take several * seconds of 100% cpu utilization to show the menu. So I don't use the * stock item. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef WIN32 #include #endif #include #include #include "client.h" #include "p_cmd.h" #include "main.h" #include "image.h" #include "gtk2proto.h" /** * Client | Disconnect * Triggers the client to disconnect from the server. * * @param menuitem * @param user_data */ void on_disconnect_activate (GtkMenuItem *menuitem, gpointer user_data) { close_server_connection(); if (csocket_fd) { gdk_input_remove(csocket_fd); csocket_fd=0; gtk_main_quit(); } } /** * File | Quit * Shuts down the client application. * * @param menuitem * @param user_data */ void menu_quit_program (GtkMenuItem *menuitem, gpointer user_data) { #ifdef WIN32 script_killall(); #endif LOG(LOG_INFO,"gtk-v2::client_exit","Exiting with return value 0."); exit(0); } /** * File | Quit Character * Causes the client to ask the server to delete the current character. * * @param menuitem * @param user_data */ void menu_quit_character (GtkMenuItem *menuitem, gpointer user_data) { extended_command("quit"); } /** * Enables/disables menubar options and connects signals to them. Some do not * make sense if not connected to the server, so should be disabled until * connected. * * @param enable * If true, enable the items, if false, disable them. Presently it looks as * though enable is not actually used at all. Is this a bug? */ void enable_menu_items(int enable) { GladeXML *xml_tree; GtkWidget *widget; xml_tree = glade_get_widget_tree(GTK_WIDGET(window_root)); widget = glade_xml_get_widget(xml_tree, "quit_character"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (menu_quit_character), NULL); widget = glade_xml_get_widget(xml_tree, "quit"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (menu_quit_program), NULL); widget = glade_xml_get_widget(xml_tree, "configure"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_configure_activate), NULL); widget = glade_xml_get_widget(xml_tree, "disconnect"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_disconnect_activate), NULL); widget = glade_xml_get_widget(xml_tree, "keybindings"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_keybindings_activate), NULL); widget = glade_xml_get_widget(xml_tree, "msgctrl"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_msgctrl_activate), NULL); widget = glade_xml_get_widget(xml_tree, "save_window_position"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_save_window_position_activate), NULL); widget = glade_xml_get_widget(xml_tree, "spells"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_spells_activate), NULL); widget = glade_xml_get_widget(xml_tree, "skills"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_skills_activate), NULL); widget = glade_xml_get_widget(xml_tree, "do_not_pickup"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_dont_pickup_activate), NULL); widget = glade_xml_get_widget(xml_tree, "stop_before_pickup"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_stop_before_pickup_activate), NULL); widget = glade_xml_get_widget(xml_tree, "body_armor"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_body_armor_activate), NULL); widget = glade_xml_get_widget(xml_tree, "boots"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_boots_activate), NULL); widget = glade_xml_get_widget(xml_tree, "cloaks"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_cloaks_activate), NULL); widget = glade_xml_get_widget(xml_tree, "gloves"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_gloves_activate), NULL); widget = glade_xml_get_widget(xml_tree, "helmets"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_helmets_activate), NULL); widget = glade_xml_get_widget(xml_tree, "shields"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_shields_activate), NULL); widget = glade_xml_get_widget(xml_tree, "skillscrolls"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_skillscrolls_activate), NULL); widget = glade_xml_get_widget(xml_tree, "normal_book_scrolls"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_normal_book_scrolls_activate), NULL); widget = glade_xml_get_widget(xml_tree, "spellbooks"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_spellbooks_activate), NULL); widget = glade_xml_get_widget(xml_tree, "drinks"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_drinks_activate), NULL); widget = glade_xml_get_widget(xml_tree, "food"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_food_activate), NULL); widget = glade_xml_get_widget(xml_tree, "flesh"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_flesh_activate), NULL); widget = glade_xml_get_widget(xml_tree, "keys"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_keys_activate), NULL); widget = glade_xml_get_widget(xml_tree, "magical_items"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_magical_items_activate), NULL); widget = glade_xml_get_widget(xml_tree, "potions"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_potions_activate), NULL); widget = glade_xml_get_widget(xml_tree, "valuables"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_valuables_activate), NULL); widget = glade_xml_get_widget(xml_tree, "wands_rods_horns"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_wands_rods_horns_activate), NULL); widget = glade_xml_get_widget(xml_tree, "jewels"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_jewels_activate), NULL); widget = glade_xml_get_widget(xml_tree, "containers"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_containers_activate), NULL); widget = glade_xml_get_widget(xml_tree, "all_weapons"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_all_weapons_activate), NULL); widget = glade_xml_get_widget(xml_tree, "missile_weapons"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_missile_weapons_activate), NULL); widget = glade_xml_get_widget(xml_tree, "bows"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_bows_activate), NULL); widget = glade_xml_get_widget(xml_tree, "arrows"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_arrows_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_pickup_off"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_pickup_off_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_5"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_5_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_10"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_10_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_15"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_15_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_20"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_20_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_25"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_25_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_30"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_35_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_35"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_35_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_40"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_40_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_45"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_45_activate), NULL); widget = glade_xml_get_widget(xml_tree, "ratio_50"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_ratio_50_activate), NULL); widget = glade_xml_get_widget(xml_tree, "not_cursed"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_menu_not_cursed_activate), NULL); widget = glade_xml_get_widget(xml_tree, "about"); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (menu_about), NULL); } crossfire-client-1.70.0/gtk-v2/src/main.c0000644000014500000120000007722611731277013014767 00000000000000const char * const rcsid_gtk2_main_c = "$Id: main.c 14240 2011-01-12 06:31:21Z mwedel $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file main.c * Implements client startup functions. Command-line parameters are parsed and * handled. Libglade XML layout files are loaded. Windows and dialogs are * initialized. The server connection is managed. The main.c file originally * was generated by glade-2, but is now manually maintained. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef WIN32 #include #endif #include #include #include #include #ifndef WIN32 #include #endif #include "client.h" #include "main.h" #include "image.h" #include "gtk2proto.h" #include "script.h" #include "metaserver.h" #include "mapdata.h" GtkWidget *window_root, *magic_map; GladeXML *dialog_xml, *window_xml; /* Sets up the basic colors. */ const char * const colorname[NUM_COLORS] = { "Black", /* 0 */ "White", /* 1 */ "Navy", /* 2 */ "Red", /* 3 */ "Orange", /* 4 */ "DodgerBlue", /* 5 */ "DarkOrange2", /* 6 */ "SeaGreen", /* 7 */ "DarkSeaGreen", /* 8 *//* Used for window background color */ "Grey50", /* 9 */ "Sienna", /* 10 */ "Gold", /* 11 */ "Khaki" /* 12 */ }; /* These are the names as set by the user within the rc file. * We use lower case to be consistent, but also change the names * to be more generic instead of specific X11 color names. */ const char * const usercolorname[NUM_COLORS] = { "black", /* 0 */ "white", /* 1 */ "darkblue", /* 2 */ "red", /* 3 */ "orange", /* 4 */ "lightblue", /* 5 */ "darkorange", /* 6 */ "green", /* 7 */ "darkgreen", /* 8 *//* Used for window background color */ "grey", /* 9 */ "brown", /* 10 */ "yellow", /* 11 */ "tan" /* 12 */ }; char dialog_xml_file[MAX_BUF] = DIALOG_XML_FILENAME; char dialog_xml_path[MAX_BUF] = ""; /**< Dialog layout file with path. */ char window_xml_file[MAX_BUF] = WINDOW_XML_FILENAME; /**< The file name of the window layout * in use by the client. The base name, * without dot extention, is re-used * when saving the window positions. */ char window_xml_path[MAX_BUF] = ""; /**< Window layout file with path. */ GdkColor root_color[NUM_COLORS]; struct timeval timeout; extern int maxfd; gint csocket_fd=0; static uint8 updatekeycodes=FALSE; extern int time_map_redraw; #ifdef WIN32 /* Win32 scripting support */ #define PACKAGE_DATA_DIR "." int do_scriptout(void) { script_process(NULL); return(TRUE); } #endif /* WIN32 */ /** * Map, spell, and inventory maintenance. * @return TRUE */ int do_timeout(void) { if (cpl.showmagic) magic_map_flash_pos(); if (cpl.spells_updated) update_spell_information(); if (!tick) { inventory_tick(); mapdata_animation(); } return TRUE; } /** * X11 client doesn't care about this */ void client_tick(uint32 tick) { info_buffer_tick(); /* Maintain the info output buffers */ inventory_tick(); mapdata_animation(); /* If we have new images to display, we need to do a complete redraw * periodically - to keep performance up, we don't want to do it every * tick, but every 5 (about half a second) is still pretty fast but should * also keep reasonable performance. */ if (have_new_image && !(tick % 5)) { if (cpl.container) cpl.container->inv_updated=1; cpl.ob->inv_updated=1; have_new_image=0; draw_map(1); draw_lists(); } else { draw_map(0); } } /** * Called from disconnect command - that closes the socket - we just need to * do the gtk cleanup. */ void cleanup_connection(void) { if (csocket_fd) { gdk_input_remove(csocket_fd); csocket_fd=0; gtk_main_quit(); } } /** * Handles client shutdown. */ void on_window_destroy_event (GtkObject *object, gpointer user_data) { #ifdef WIN32 script_killall(); #endif LOG(LOG_INFO, "main.c::client_exit", "Exiting with return value 0."); exit(0); } /** * main loop iteration related stuff */ void do_network(void) { fd_set tmp_read; int pollret; if (csocket.fd==-1) { if (csocket_fd) { gdk_input_remove(csocket_fd); csocket_fd=0; gtk_main_quit(); } return; } FD_ZERO(&tmp_read); FD_SET(csocket.fd, &tmp_read); script_fdset(&maxfd,&tmp_read); pollret = select(maxfd, &tmp_read, NULL, NULL, &timeout); if (pollret==-1) { LOG(LOG_WARNING, "main.c::do_network", "Got errno %d on select call.", errno); } else if ( pollret>0 ) { if (FD_ISSET(csocket.fd, &tmp_read)) { DoClient(&csocket); #ifndef WIN32 if ( pollret > 1 ) script_process(&tmp_read); #endif } else { script_process(&tmp_read); } } /* DoClient now closes the socket, so we need to check for this here - * with the socket being closed, this function will otherwise never be * called again. */ if (csocket.fd==-1) { if (csocket_fd) { gdk_input_remove(csocket_fd); csocket_fd=0; gtk_main_quit(); } return; } #ifdef HAVE_SDL if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) sdl_gen_map(FALSE); else #endif #ifdef HAVE_OPENGL if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_OPENGL) opengl_gen_map(FALSE); else #endif draw_map(FALSE); draw_lists(); } /** * Event loop iteration stuff */ void event_loop(void) { gint fleep; extern int do_timeout(void); int tag; if (MAX_TIME==0) { timeout.tv_sec = 0; timeout.tv_usec = 0; } maxfd = csocket.fd + 1; if (MAX_TIME!=0) { timeout.tv_sec = 0;/* MAX_TIME / 1000000;*/ timeout.tv_usec = 0;/* MAX_TIME % 1000000;*/ } fleep = gtk_timeout_add (10, (GtkFunction) do_timeout, NULL); #ifdef WIN32 gtk_timeout_add (25, (GtkFunction) do_scriptout, NULL); #endif if (csocket.fd==-1) { if (csocket_fd) { gdk_input_remove(csocket_fd); csocket_fd=0; gtk_main_quit(); } return; } csocket_fd = gdk_input_add ((gint) csocket.fd, GDK_INPUT_READ, (GdkInputFunction) do_network, &csocket); tag = csocket_fd; gtk_main(); gtk_timeout_remove(tag); LOG(LOG_INFO, "main.c::event_loop", "gtk_main exited, returning from event_loop"); } #ifndef WIN32 /** * Handler for SIGPIPE. We may receive this signal while piping data to a * sound server or to a script. In both cases, we ignore the signal because * the failure will be reported by the system call that tried to send the * data. * * @param sig The signal number. */ static void sigpipe_handler(int sig) { /* ignore that signal for now */ } #endif /** * Usage routine. All clients should support server, port and display * options, with -pix and -xpm also suggested. -split does not need to be * supported - it is in this copy because the old code supported it. * @param *progname Not used, but should be. */ static void usage(char *progname) { puts("Usage of crossfire-client-gtk2:\n"); puts("-cache - Cache images for future use."); puts("-nocache - Do not cache images (default action)."); puts("-darkness - Enables darkness code (default)"); puts("-nodarkness - Disables darkness code"); puts("-display - Use instead if DISPLAY environment variable."); puts("-download_all_faces - Download all needed faces before play starts"); puts("-echo - Echo the bound commands"); puts("-noecho - Do not echo the bound commands (default)"); puts("-faceset - Use faceset if available"); puts("-fasttcpsend - Send data immediately to server, may increase bandwidth"); puts("-nofasttcpsend - Disables fasttcpsend"); puts("-fog - Enable fog of war code"); puts("-help - Display this message."); puts("-loglevel - Set default logging level (0 is most verbose)"); puts("-iconscale %% - Set icon scale percentage"); puts("-mapscale %% - Set map scale percentage"); puts("-mapsize xXy - Set the mapsize to be X by Y spaces. (default 11x11)"); puts("-splash - Display the splash screen (default)"); puts("-nosplash - Don't display the splash screen (startup logo)"); puts("-opengl - Use opengl drawing code"); puts("-pixmap - Use pixmap drawing code"); puts("-port - Use port instead of the standard port number"); puts("-sdl - Use sdl for drawing png (may not work on all hardware"); puts("-server - Connect to instead of localhost."); puts("-showicon - Print status icons in inventory window"); puts("-smooth - Enable smooth"); puts("-nosmooth - Disable smooth (default)"); puts("-sound - Enable sound output (default)."); puts("-nosound - Disable sound output."); puts("-sound_server - Executable to use to play sounds."); puts("-resists - Control look of resistances."); puts("-split - Use split windows."); puts("-splitinfo - Use two information windows, segregated by information type."); puts("-timemapredraw - Print out timing information for map generation"); puts("-triminfowindow - Trims size of information window(s)"); puts("-notriminfowindow - Do not trims size of information window(s) (default)"); puts("-updatekeycodes - Update the saved bindings for this keyboard."); puts("-window_xml - Glade Designer client UI layout XML file."); puts("-dialog_xml - Glade Designer popup dialog XML file."); exit(0); } /** * parse_args: Parses command line options, and does variable initialization. * @param argc * @param argv * @return Returns 0 on success, nonzero on failure. */ int parse_args(int argc, char **argv) { int on_arg=1; char *display_name=""; load_defaults(); #ifndef WIN32 snprintf(VERSION_INFO, MAX_BUF, "GTK V2 Unix Client %s (using %s)", FULL_VERSION, window_xml_file); #else snprintf(VERSION_INFO, MAX_BUF, "GTK V2 Win32 Client %s (using %s)", FULL_VERSION, window_xml_file); #endif for (on_arg=1; on_arg200) { LOG(LOG_WARNING, "main.c::init_windows", "Valid range for -iconscale is 25 through 200"); want_config[CONFIG_ICONSCALE]=100; return 1; } continue; } else if (!strcmp(argv[on_arg], "-mapscale")) { if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-mapscale requires a percentage value"); return 1; } want_config[CONFIG_MAPSCALE] = atoi(argv[on_arg]); if (want_config[CONFIG_MAPSCALE] < 25 || want_config[CONFIG_MAPSCALE]>200) { LOG(LOG_WARNING, "main.c::init_windows", "Valid range for -mapscale is 25 through 200"); want_config[CONFIG_MAPSCALE]=100; return 1; } continue; } else if (!strcmp(argv[on_arg], "-mapsize")) { char *cp, x, y=0; if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-mapsize requires a XxY value"); return 1; } x = atoi(argv[on_arg]); for (cp = argv[on_arg]; *cp!='\0'; cp++) if (*cp == 'x' || *cp == 'X') break; if (*cp == 0) { LOG(LOG_WARNING, "main.c::init_windows", "-mapsize requires " "both X and Y values (ie, XxY - note the\nx in between."); } else { y = atoi(cp+1); } if (x<9 || y<9) { LOG(LOG_WARNING, "main.c::init_windows", "Map size must be positive values of at least 9"); } else if (x>MAP_MAX_SIZE || y>MAP_MAX_SIZE) { LOG(LOG_WARNING, "main.c::init_windows", "Map size cannot be " "larger than %d x %d", MAP_MAX_SIZE, MAP_MAX_SIZE); } else { want_config[CONFIG_MAPWIDTH]=x; want_config[CONFIG_MAPHEIGHT]=y; } continue; } else if (!strcmp(argv[on_arg], "-fasttcpsend")) { want_config[CONFIG_FASTTCP] = TRUE; continue; } else if (!strcmp(argv[on_arg], "-nofasttcpsend")) { want_config[CONFIG_FASTTCP] = FALSE; continue; } else if (!strcmp(argv[on_arg], "-opengl")) { #ifndef HAVE_OPENGL LOG(LOG_WARNING, "main.c::init_windows", "client not compiled " "with opengl support. Ignoring -opengl"); #else want_config[CONFIG_DISPLAYMODE] = CFG_DM_OPENGL; #endif continue; } else if (!strcmp(argv[on_arg], "-pixmap")) { want_config[CONFIG_DISPLAYMODE] = CFG_DM_PIXMAP; } else if (!strcmp(argv[on_arg], "-port")) { if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-port requires a port number"); return 1; } want_config[CONFIG_PORT] = atoi(argv[on_arg]); continue; } else if (!strcmp(argv[on_arg], "-sdl")) { #ifndef HAVE_SDL LOG(LOG_WARNING, "main.c::init_windows", "client not compiled with sdl support. Ignoring -sdl"); #else want_config[CONFIG_DISPLAYMODE] = CFG_DM_SDL; #endif continue; } else if (!strcmp(argv[on_arg], "-server")) { if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-server requires a host name"); return 1; } server = argv[on_arg]; continue; } else if (!strcmp(argv[on_arg], "-showicon")) { want_config[CONFIG_SHOWICON] = TRUE; continue; } else if (!strcmp(argv[on_arg], "-smooth")) { want_config[CONFIG_SMOOTH] = TRUE; } else if (!strcmp(argv[on_arg], "-nosmooth")) { want_config[CONFIG_SMOOTH] = FALSE; } else if (!strcmp(argv[on_arg], "-sound")) { want_config[CONFIG_SOUND] = TRUE; continue; } else if (!strcmp(argv[on_arg], "-nosound")) { want_config[CONFIG_SOUND] = FALSE; continue; } else if (!strcmp(argv[on_arg], "-sound_server")) { if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-sound_server requires an executable pathname"); return 1; } sound_server = argv[on_arg]; continue; } else if (!strcmp(argv[on_arg], "-split")) { want_config[CONFIG_SPLITWIN]=TRUE; continue; } else if (!strcmp(argv[on_arg], "-nosplit")) { want_config[CONFIG_SPLITWIN]=FALSE; continue; } else if (!strcmp(argv[on_arg], "-resists")) { if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-resists requires a value"); return 1; } want_config[CONFIG_RESISTS]=atoi(argv[on_arg]); continue; } else if (!strcmp(argv[on_arg], "-loglevel")) { extern int MINLOG; if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-loglevel requires a value"); return 1; } MINLOG = atoi(argv[on_arg]); continue; } else if (!strcmp(argv[on_arg], "-splitinfo")) { want_config[CONFIG_SPLITINFO]=TRUE; continue; } else if (!strcmp(argv[on_arg], "-timemapredraw")) { time_map_redraw=TRUE; continue; } else if (!strcmp(argv[on_arg], "-triminfowindow")) { want_config[CONFIG_TRIMINFO] = TRUE; continue; } else if (!strcmp(argv[on_arg], "-notriminfowindow")) { want_config[CONFIG_TRIMINFO] = FALSE; continue; } else if (!strcmp(argv[on_arg], "-updatekeycodes")) { updatekeycodes=TRUE; continue; } else if (!strcmp(argv[on_arg], "-splash")) { want_config[CONFIG_SPLASH] = TRUE; continue; } else if (!strcmp(argv[on_arg], "-nosplash")) { want_config[CONFIG_SPLASH] = FALSE; continue; } else if (!strcmp(argv[on_arg], "-window_xml")) { if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-window_xml requires a glade xml file name"); return 1; } strncpy (window_xml_path, argv[on_arg], MAX_BUF-1); continue; } else if (!strcmp(argv[on_arg], "-dialog_xml")) { if (++on_arg == argc) { LOG(LOG_WARNING, "main.c::init_windows", "-dialog_xml requires a glade xml file name"); return 1; } strncpy (dialog_xml_path, argv[on_arg], MAX_BUF-1); continue; } else { LOG(LOG_WARNING, "main.c::init_windows", "Do not understand option %s", argv[on_arg]); usage(argv[0]); return 1; } } /* * Move this after the parsing of command line options, since that can * change the default log level. */ LOG(LOG_INFO, "Client Version", VERSION_INFO); /* Now copy over the values just loaded */ for (on_arg=0; on_argwindow, x, y, w, h, NULL); /* Position of the window in root window coordinates. */ gdk_window_get_origin (win->window, wx, wy); *wx -= *x; *wy -= *y; } crossfire-client-1.70.0/gtk-v2/src/pickup.c0000644000014500000120000005367011731277013015333 00000000000000const char * const rcsid_gtk2_pickup_c = "$Id: pickup.c 13958 2010-10-02 09:34:23Z ryo_saeba $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/pickup.c * This file covers the pickup menu items. We only implement the new pickup * code - it seems to me that it should be able to cover everything the old * pickup mode does. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "client.h" #include "main.h" #include "image.h" #include "gtk2proto.h" typedef struct { GtkWidget *menuitem; uint32 pickup_mode; } PickupMapping; #define MAX_PICKUPS 50 PickupMapping pickup_mapping[MAX_PICKUPS]; static int num_pickups=0; /* * Definitions for detailed pickup descriptions. The objective is to define * intelligent groups of items that the user can pick up or leave as he likes. */ /* High bit as flag for new pickup options */ #define PU_NOTHING 0x00000000 #define PU_DEBUG 0x10000000 #define PU_INHIBIT 0x20000000 #define PU_STOP 0x40000000 #define PU_NEWMODE 0x80000000 #define PU_RATIO 0x0000000F #define PU_FOOD 0x00000010 #define PU_DRINK 0x00000020 #define PU_VALUABLES 0x00000040 #define PU_BOW 0x00000080 #define PU_ARROW 0x00000100 #define PU_HELMET 0x00000200 #define PU_SHIELD 0x00000400 #define PU_ARMOUR 0x00000800 #define PU_BOOTS 0x00001000 #define PU_GLOVES 0x00002000 #define PU_CLOAK 0x00004000 #define PU_KEY 0x00008000 #define PU_MISSILEWEAPON 0x00010000 #define PU_ALLWEAPON 0x00020000 #define PU_MAGICAL 0x00040000 #define PU_POTION 0x00080000 #define PU_SPELLBOOK 0x00100000 #define PU_SKILLSCROLL 0x00200000 #define PU_READABLES 0x00400000 #define PU_MAGIC_DEVICE 0x00800000 #define PU_NOT_CURSED 0x01000000 #define PU_JEWELS 0x02000000 #define PU_FLESH 0x04000000 #define PU_CONTAINERS 0x08000000 static unsigned int pmode=0, no_recurse=0; /** * Handles the pickup operations. Unfortunately, it isn't easy (possible?) * in glade to attach values to the menu items. * * @param on is TRUE if the button is activated, 0 if it is off. * @param val is the PU_ bitmasks to set/clear. */ static void new_menu_pickup(int on, int val) { char modestr[128]; if (no_recurse) return; if (on) pmode |= val | PU_NEWMODE; else pmode &= ~val; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "To set this pickup mode to a key, use:"); snprintf(modestr, sizeof(modestr), "bind pickup %u",pmode); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, modestr); snprintf(modestr, sizeof(modestr), "pickup %u",pmode); send_command(modestr, -1, 0); } void on_menu_dont_pickup_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_INHIBIT); } void on_menu_stop_before_pickup_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_STOP); } /*************************************************************************** * armor pickup options **************************************************************************/ void on_menu_body_armor_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_ARMOUR); } void on_menu_boots_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_BOOTS); } void on_menu_cloaks_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_CLOAK); } void on_menu_gloves_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_GLOVES); } void on_menu_helmets_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_HELMET); } void on_menu_shields_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_SHIELD); } /*************************************************************************** * Books submenu ****************************************************************************/ void on_menu_skillscrolls_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_SKILLSCROLL); } void on_menu_normal_book_scrolls_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_READABLES); } void on_menu_spellbooks_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_SPELLBOOK); } /***************************************************************************/ void on_menu_drinks_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_DRINK); } void on_menu_food_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_FOOD); } void on_menu_keys_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_KEY); } void on_menu_magical_items_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_MAGICAL); } void on_menu_potions_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_POTION); } void on_menu_valuables_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_VALUABLES); } void on_menu_wands_rods_horns_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_MAGIC_DEVICE); } void on_menu_not_cursed_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_NOT_CURSED); } void on_menu_jewels_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_JEWELS); } void on_menu_containers_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_CONTAINERS); } void on_menu_flesh_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_FLESH); } /*************************************************************************** * Weapons submenu ***************************************************************************/ void on_menu_all_weapons_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_ALLWEAPON); } void on_menu_missile_weapons_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_MISSILEWEAPON); } void on_menu_bows_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_BOW); } void on_menu_arrows_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), PU_ARROW); } /*************************************************************************** * Weight/value submenu ***************************************************************************/ void on_menu_ratio_pickup_off_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 0); } void on_menu_ratio_5_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 1); } void on_menu_ratio_10_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 2); } void on_menu_ratio_15_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 3); } void on_menu_ratio_20_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 4); } void on_menu_ratio_25_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 5); } void on_menu_ratio_30_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 6); } void on_menu_ratio_35_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 7); } void on_menu_ratio_40_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 8); } void on_menu_ratio_45_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 9); } void on_menu_ratio_50_activate (GtkMenuItem *menuitem, gpointer user_data) { new_menu_pickup(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)), 10); } /** * Maps the menuitem lists into pickup values. In this way, client_pickup * knows what values to change. * * @param window_root */ void pickup_init(GtkWidget *window_root) { static int has_init=0; GladeXML *xml_tree; /* * There isn't really any harm doing this multiple times, but isn't any * point either. */ if (has_init) return; has_init=1; /* * The order here really doesn't make much difference. I suppose order * could either be in pickup modes (PU_...) or the list of items in the * menu tree. I chose the later, as easier to make sure all the items are * accounted for. * * In practice, with these values now set up, we could use a single * function to hande all the events from the menubar instead of the values * above - that function basically takes the structure that was clicked, * and finds the value in this array that corresponds to it. But that code * currently works fine and isn't really outdated, so isn't a big reason to * change it. */ xml_tree = glade_get_widget_tree(GTK_WIDGET(window_root)); pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "do_not_pickup"); pickup_mapping[num_pickups].pickup_mode = PU_INHIBIT; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "stop_before_pickup"); pickup_mapping[num_pickups].pickup_mode = PU_STOP; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "body_armor"); pickup_mapping[num_pickups].pickup_mode = PU_ARMOUR; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "boots"); pickup_mapping[num_pickups].pickup_mode = PU_BOOTS; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "cloaks"); pickup_mapping[num_pickups].pickup_mode = PU_CLOAK; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "gloves"); pickup_mapping[num_pickups].pickup_mode = PU_GLOVES; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "helmets"); pickup_mapping[num_pickups].pickup_mode = PU_HELMET; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "shields"); pickup_mapping[num_pickups].pickup_mode = PU_SHIELD; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "skillscrolls"); pickup_mapping[num_pickups].pickup_mode = PU_SKILLSCROLL; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "normal_book_scrolls"); pickup_mapping[num_pickups].pickup_mode = PU_READABLES; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "spellbooks"); pickup_mapping[num_pickups].pickup_mode = PU_SPELLBOOK; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "drinks"); pickup_mapping[num_pickups].pickup_mode = PU_DRINK; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "food"); pickup_mapping[num_pickups].pickup_mode = PU_FOOD; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "flesh"); pickup_mapping[num_pickups].pickup_mode = PU_FLESH; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "keys"); pickup_mapping[num_pickups].pickup_mode = PU_KEY; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "magical_items"); pickup_mapping[num_pickups].pickup_mode = PU_MAGICAL; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "potions"); pickup_mapping[num_pickups].pickup_mode = PU_POTION; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "valuables"); pickup_mapping[num_pickups].pickup_mode = PU_VALUABLES; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "wands_rods_horns"); pickup_mapping[num_pickups].pickup_mode = PU_MAGIC_DEVICE; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "jewels"); pickup_mapping[num_pickups].pickup_mode = PU_JEWELS; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "containers"); pickup_mapping[num_pickups].pickup_mode = PU_CONTAINERS; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "all_weapons"); pickup_mapping[num_pickups].pickup_mode = PU_ALLWEAPON; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "missile_weapons"); pickup_mapping[num_pickups].pickup_mode = PU_MISSILEWEAPON; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "bows"); pickup_mapping[num_pickups].pickup_mode = PU_BOW; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "arrows"); pickup_mapping[num_pickups].pickup_mode = PU_ARROW; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_pickup_off"); pickup_mapping[num_pickups].pickup_mode = ~PU_RATIO; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_5"); pickup_mapping[num_pickups].pickup_mode = 1; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_10"); pickup_mapping[num_pickups].pickup_mode = 2; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_15"); pickup_mapping[num_pickups].pickup_mode = 3; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_20"); pickup_mapping[num_pickups].pickup_mode = 4; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_25"); pickup_mapping[num_pickups].pickup_mode = 5; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_30"); pickup_mapping[num_pickups].pickup_mode = 6; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_35"); pickup_mapping[num_pickups].pickup_mode = 7; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_40"); pickup_mapping[num_pickups].pickup_mode = 8; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_45"); pickup_mapping[num_pickups].pickup_mode = 9; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "ratio_50"); pickup_mapping[num_pickups].pickup_mode = 10; num_pickups++; pickup_mapping[num_pickups].menuitem = glade_xml_get_widget(xml_tree, "not_cursed"); pickup_mapping[num_pickups].pickup_mode = PU_NOT_CURSED; num_pickups++; /* * Do some bounds checking. We could actually set this exactly right, * since additional menu entries are not likely to be added often. We exit * because if we overrun that structure, we've screwed up memory and will * likely crash or otherwise have odd behaviour. */ if (num_pickups>=MAX_PICKUPS) { LOG(LOG_ERROR, "pickup.c::pickup_init", "num_pickups (%d) >= MAX_PICKUPS (%d)\n", num_pickups, MAX_PICKUPS); exit(1); } } /** * We get pickup information from server, update our status. */ void client_pickup(uint32 pickup) { int i; /* * no_recurse is used to limit callbacks - otherwise what happens is when * we call set_active below, it emits the appropriate signal, which results * in new_menu_pickup() getting called, which then sends a new pickup * command to the server, which then results in server sending data to * client, etc. */ no_recurse=1; pmode=pickup; for (i=0; i < num_pickups; i++) { if ((pickup & ~PU_RATIO) & pickup_mapping[i].pickup_mode || (pickup & PU_RATIO) == pickup_mapping[i].pickup_mode) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(pickup_mapping[i].menuitem), 1); } else { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(pickup_mapping[i].menuitem), 0); } } no_recurse=0; } crossfire-client-1.70.0/gtk-v2/src/create_char.c0000644000014500000120000010104211731277013016263 00000000000000const char * const rcsid_gtk2_create_char_c = "$Id: create_char.c 12988 2010-04-27 04:04:46Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2010,2011 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/create_char.c * Handles creation of new characters */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "client.h" #include "image.h" #include "main.h" #include "gtk2proto.h" #include "metaserver.h" /* This corresponds to the number of opt_.. fields in the * create_character_window. In theory, the vbox could be resized * (or add a sub box), and adjust accordingly, * but it is unlikely that number of optional choices is going * to rapidly grow, and making it static makes some things much * easier. * Instead of having two different sets of fields named different, * we just have one set and split it in half, for race and * class. This is done so that boxes don't need to be moved * around - imagine cas where one race has options and * another doesn't, but the currently selected class does - * as player chooses different races, that race choice will * come and go, but we want the class box to remain and to keep * its same value. */ #define NUM_OPT_FIELDS 6 #define RACE_OPT_START 0 #define CLASS_OPT_START NUM_OPT_FIELDS/2 #define RACE_OPT_END CLASS_OPT_START - 1 #define CLASS_OPT_ENG NUM_OPT_FIELDS - 1 /* These are in the create_character_window */ static GtkWidget *spinbutton_cc[NUM_NEW_CHAR_STATS], *label_rs[NUM_NEW_CHAR_STATS], *label_cs[NUM_NEW_CHAR_STATS], *label_tot[NUM_NEW_CHAR_STATS], *label_cc_unspent, *textview_rs_desc, *label_cc_desc, *label_cc_status_update, *button_cc_cancel, *button_cc_done, *create_character_window, *combobox_rs, *combobox_cs, *textview_cs_desc, *entry_new_character_name, *button_choose_starting_map, *opt_label[NUM_OPT_FIELDS], *opt_combobox[NUM_OPT_FIELDS]; static GtkTextMark *text_mark_cs, *text_mark_rs; /* These are in the choose starting map window */ static GtkWidget *choose_starting_map_window, *button_csm_done, *button_csm_cancel, *combobox_starting_map; GtkTextBuffer *textbuf_starting_map; static int has_init=0, negative_stat=0; #define STARTING_MAP_PANE 0 Info_Pane create_char_pane[1]; #define WINDOW_NONE 0 #define WINDOW_CREATE_CHARACTER 1 #define WINDOW_CHOOSE_MAP 2 /** * This is a little helper window which shows the window * specified and hides the other window(s). This is just * a bit cleaner than having a bunch if gtk_widget_show()/ * gtk_wdiget_hide() calls. * Also, if more than 2 windows are ever used, this will also * make it easier to make sure the correct window is displayed. * * @param window * WINDOW_... define as listed at top of this file which defines * the winow. Special is WINDOW_NONE, which will just result * in this hiding all windows. */ static void show_window(int window) { switch (window) { case WINDOW_NONE: gtk_widget_hide(create_character_window); gtk_widget_hide(choose_starting_map_window); break; case WINDOW_CREATE_CHARACTER: gtk_widget_show(create_character_window); gtk_widget_hide(choose_starting_map_window); break; case WINDOW_CHOOSE_MAP: gtk_widget_hide(create_character_window); gtk_widget_show(choose_starting_map_window); break; } } /** * This function makes the widgets in the window sensitive (or not). * This is used because having the player fiddle with the attributes * before we get the information from the server doesn't make sense. * * @param sensitive * passed to gtk_widget_set_sensitive, to either make the widget * sensitive or not */ static void create_character_set_sensitive(int sensitive) { int i; gtk_widget_set_sensitive(button_cc_done, sensitive); gtk_widget_set_sensitive(button_choose_starting_map, sensitive); gtk_widget_set_sensitive(entry_new_character_name, sensitive); gtk_widget_set_sensitive(combobox_rs, sensitive); gtk_widget_set_sensitive(combobox_cs, sensitive); /* Note we do not change status of cancel button - let * the player cancel out of the window if they want - * no harm in doing so. */ for (i=0; i= 2, so * we do not have any check here for that, but these * attributes are only valid for loginmethod >= 2 */ i = gtk_combo_box_get_active(GTK_COMBO_BOX(combobox_rs)); snprintf(buf, MAX_BUF, "race %s", races[i].arch_name); SockList_AddChar(&sl, strlen(buf)+1); SockList_AddString(&sl, buf); SockList_AddChar(&sl, 0); /* From a practical standpoint, the server should never send * race/class choices unless it also supports the receipt of * those. So no special checks are needed here. */ for (on_choice = 0; on_choice < races[i].num_rc_choice; on_choice++) { int j; j = gtk_combo_box_get_active(GTK_COMBO_BOX(opt_combobox[on_choice + RACE_OPT_START])); snprintf(buf, MAX_BUF, "choice %s %s", races[i].rc_choice[on_choice].choice_name, races[i].rc_choice[on_choice].value_arch[j]); SockList_AddChar(&sl, strlen(buf)+1); SockList_AddString(&sl, buf); SockList_AddChar(&sl, 0); } i = gtk_combo_box_get_active(GTK_COMBO_BOX(combobox_cs)); snprintf(buf, MAX_BUF, "class %s", classes[i].arch_name); SockList_AddChar(&sl, strlen(buf)+1); SockList_AddString(&sl, buf); SockList_AddChar(&sl, 0); for (on_choice = 0; on_choice < classes[i].num_rc_choice; on_choice++) { int j; j = gtk_combo_box_get_active(GTK_COMBO_BOX(opt_combobox[on_choice + CLASS_OPT_START])); snprintf(buf, MAX_BUF, "choice %s %s", classes[i].rc_choice[on_choice].choice_name, classes[i].rc_choice[on_choice].value_arch[j]); SockList_AddChar(&sl, strlen(buf)+1); SockList_AddString(&sl, buf); SockList_AddChar(&sl, 0); } /* Its possible that the server does not provide a choice of * starting maps - if that is the case, then we will never * display the starting map window. So check for that here. */ if (starting_map_number) { i = gtk_combo_box_get_active(GTK_COMBO_BOX(combobox_starting_map)); if (i != -1) { snprintf(buf, MAX_BUF, "starting_map %s", starting_map_info[i].arch_name); SockList_AddChar(&sl, strlen(buf)+1); SockList_AddString(&sl, buf); SockList_AddChar(&sl, 0); } } for (i=0; i stat_points) { gtk_label_set_text(GTK_LABEL(label_cc_status_update), "You have used more than your allotted total attribute points"); show_window(WINDOW_CREATE_CHARACTER); return FALSE; } /* negative_stat is a global to this file. update_all_stats() * sets it/clears it - rather than doing that work again, just * re-use that value. */ if (negative_stat) { gtk_label_set_text(GTK_LABEL(label_cc_status_update), "Negative attributes are not allowed - adjust your selections before finishing"); show_window(WINDOW_CREATE_CHARACTER); return FALSE; } /* No message is normally displayed for this - the player is * always going to get this case when starting out, but if * they hit done, we want to warn them that they have points * left to spend, since at present time there is no way to spend * these points later. */ if (stat_points_used < stat_points) { GtkWidget *dialog; int result; dialog = gtk_message_dialog_new(GTK_WINDOW(create_character_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s\n%s\n%s", "You have not spent all your attribute points.", "You will be unable to spend these later.", "Create character anyways?"); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); if (result == GTK_RESPONSE_NO) { show_window(WINDOW_CREATE_CHARACTER); return FALSE; } /* Otherwise, fall through below */ } /* Check to see starting map - note that start_map_number could * be zero, which means that the server does not have a choice, * and thus we don't have to get anything from the player. * Is throwing a dialog box up here perhaps overkill? */ i = gtk_combo_box_get_active(GTK_COMBO_BOX(combobox_starting_map)); if (starting_map_number && i == -1) { GtkWidget *dialog; int result; show_window(WINDOW_CHOOSE_MAP); dialog = gtk_message_dialog_new(GTK_WINDOW(choose_starting_map_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "You must choose a starting map before you can start playing"); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); return FALSE; } /* Everything checks out OK */ return TRUE; } /** * User has hit the done button. Need to verify input, and if it * looks good, send it to the server. * Note: This callback is used for the 'Done' button in both * the character character window and starting map window. * * @param button ignored * @param user_data ignored */ void on_button_cc_done(GtkButton *button, gpointer user_data) { if (character_data_ok()) { /* If we get here, everything checks out - now we have to * send the data to the server. */ gtk_label_set_text(GTK_LABEL(label_cc_status_update), "Sending new character information to server"); show_window(WINDOW_CREATE_CHARACTER); send_create_player_to_server(); } } /** * User has changed one of the spinbutton values. We need to total * back up the values. */ void on_spinbutton_cc (GtkSpinButton *spinbutton, gpointer user_data) { update_all_stats(); } /** * User has changed one of the fields in the race/class * combobox. Since the logic for the two is somewhat * the same, we use one function to handle the event - * as such, we really need to pay attention to what * box is set to. * * @param box * The combobox that generated the event. * @param user_data * ignored */ void on_combobox_rcs_changed(GtkComboBox *box, gpointer user_data) { int active_entry, i, opt_start, opt_end; GtkWidget **label_stat; Race_Class_Info *rc; char buf[256]; active_entry = gtk_combo_box_get_active(box); /* I don't think this can ever happen - if we get here, * something should be active. */ if (active_entry == -1) return; /* since we are using a list store, and we are not re-arranging the order, * the entry number should match our array number. */ if (box == GTK_COMBO_BOX(combobox_cs)) { gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview_cs_desc)), classes[active_entry].description, strlen(classes[active_entry].description)); gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(textview_cs_desc), text_mark_cs, 0.0, TRUE, 0.0, 0.0); rc = &classes[active_entry]; label_stat = label_cs; opt_start = CLASS_OPT_START; } else if (box == GTK_COMBO_BOX(combobox_rs)) { gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview_rs_desc)), races[active_entry].description, strlen(races[active_entry].description)); gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(textview_rs_desc), text_mark_rs, 0.0, TRUE, 0.0, 0.0); rc = &races[active_entry]; label_stat = label_rs; opt_start = RACE_OPT_START; } else { LOG(LOG_ERROR, "gtk-v2/src/create_char.c:on_combobox_rcs_changed", "Passed in combobox does not match any combobox"); return; } for (i=0; i < rc->num_rc_choice; i++) { int j; GtkTreeModel *store; GtkTreeIter iter; if (i == (NUM_OPT_FIELDS/2)) { LOG(LOG_ERROR, "gtk-v2/src/create_char.c:on_combobox_rcs_changed", "Number of racial option exceeds allocated amount (%d > %d)", i, NUM_OPT_FIELDS/2); break; } /* Set up the races combobox */ store = gtk_combo_box_get_model(GTK_COMBO_BOX(opt_combobox[i + opt_start])); gtk_list_store_clear(GTK_LIST_STORE(store)); for (j=0; jrc_choice[i].num_values; j++) { gtk_list_store_append(GTK_LIST_STORE(store), &iter); gtk_list_store_set(GTK_LIST_STORE(store), &iter, 0, rc->rc_choice[i].value_desc[j], -1); } gtk_combo_box_set_active(GTK_COMBO_BOX(opt_combobox[i+opt_start]), 0); gtk_label_set(GTK_LABEL(opt_label[i+opt_start]), rc->rc_choice[i].choice_desc); gtk_widget_show(opt_label[i+opt_start]); gtk_widget_show(opt_combobox[i+opt_start]); /* No signals are connected - the value of the combo * box will be when we send the data to the server. */ } /* Hide any unused fields */ for ( ; i < (NUM_OPT_FIELDS/2); i++) { gtk_widget_hide(opt_label[i + opt_start]); gtk_widget_hide(opt_combobox[i + opt_start]); } /* label_stat now points at the array of stats to update, and rc points * at either the race or class to get values from. */ for (i=0; i < NUM_NEW_CHAR_STATS; i++) { sprintf(buf, "%+d", rc->stat_adj[stat_mapping[i].rc_offset]); gtk_label_set_text(GTK_LABEL(label_stat[i]), buf); } update_all_stats(); } /** * We have gotten some new information from * the server, so we need to update the information - * race/class choices or stat points/min stat/max stat * information. * */ void new_char_window_update_info() { char buf[256]; GtkListStore *store; GtkTreeIter iter; GtkCellRenderer *renderer; int i; /* We could do the update as we get the data, but it shouldn't take * too long to get all the data, and simpler to just do one update */ if (!stat_points || num_races != used_races || num_classes != used_classes) return; gtk_label_set_text(GTK_LABEL(label_cc_status_update), "Waiting for player selections"); sprintf(buf,"%d", stat_points); gtk_label_set_text(GTK_LABEL(label_cc_unspent), buf); /* Set up the races combobox */ store = gtk_list_store_new(1, G_TYPE_STRING); for (i=0; i #include #include #ifndef WIN32 #include #endif #include #include #include /* Pick up the gtk headers we need */ #include #ifndef WIN32 #include #else #include #endif #include /* Defines for PNG return values */ /* These should be in a header file, but currently our calling functions * routines just check for nonzero return status and don't really care * why the load failed. */ #define PNGX_NOFILE 1 #define PNGX_OUTOFMEM 2 #define PNGX_DATA 3 static uint8 *data_cp; static int data_len, data_start; /** * * @param png_ptr * @param data * @param length */ static void user_read_data(png_structp png_ptr, png_bytep data, png_size_t length) { memcpy(data, data_cp + data_start, length); data_start += length; } /** * * @param *data * @param len * @param *width * @param *height */ uint8 *png_to_data(uint8 *data, int len, uint32 *width, uint32 *height) { uint8 *pixels=NULL; static png_bytepp rows=NULL; static int rows_byte=0; png_structp png_ptr; png_infop info_ptr; int bit_depth, color_type, interlace_type, compression_type, y; data_len=len; data_cp = data; data_start=0; png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (!png_ptr) { return NULL; } info_ptr = png_create_info_struct (png_ptr); if (!info_ptr) { png_destroy_read_struct (&png_ptr, NULL, NULL); return NULL; } if (setjmp (png_jmpbuf(png_ptr))) { png_destroy_read_struct (&png_ptr, &info_ptr, NULL); return NULL; } png_set_read_fn(png_ptr, NULL, user_read_data); png_read_info (png_ptr, info_ptr); /* * This seems to bug on at least one system (other than mine) * http://www.metalforge.net/cfmb/viewtopic.php?t=1085 * * I think its actually a bug in libpng. This function dies with an * error based on image width. However I've produced a work around * using the indivial functions. Repeated below. * png_get_IHDR(png_ptr, info_ptr, (png_uint_32*)width, (png_unit_32*)height, &bit_depth, &color_type, &interlace_type, &compression_type, &filter_type); */ *width = png_get_image_width(png_ptr, info_ptr); *height = png_get_image_height(png_ptr, info_ptr); bit_depth = png_get_bit_depth(png_ptr, info_ptr); color_type = png_get_color_type(png_ptr, info_ptr); interlace_type = png_get_interlace_type(png_ptr, info_ptr); compression_type = png_get_compression_type(png_ptr, info_ptr); if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth <= 8) { /* Convert indexed images to RGB */ png_set_expand (png_ptr); } else if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) { /* Convert grayscale to RGB */ png_set_expand (png_ptr); } else if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) { /* If we have transparency header, convert it to alpha channel */ png_set_expand(png_ptr); } else if (bit_depth < 8) { /* If we have < 8 scale it up to 8 */ png_set_expand(png_ptr); /* Conceivably, png_set_packing() is a better idea; * God only knows how libpng works */ } /* If we are 16-bit, convert to 8-bit */ if (bit_depth == 16) { png_set_strip_16(png_ptr); } /* If gray scale, convert to RGB */ if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { png_set_gray_to_rgb(png_ptr); } /* If interlaced, handle that */ if (interlace_type != PNG_INTERLACE_NONE) { png_set_interlace_handling(png_ptr); } /* pad it to 4 bytes to make processing easier */ if (!(color_type & PNG_COLOR_MASK_ALPHA)) png_set_filler(png_ptr, 255, PNG_FILLER_AFTER); /* Update the info the reflect our transformations */ png_read_update_info(png_ptr, info_ptr); /* re-read due to transformations just made */ /* * See above for error description png_get_IHDR(png_ptr, info_ptr, (png_uint_32*)width, (png_uint_32*)height, &bit_depth, &color_type, &interlace_type, &compression_type, &filter_type); */ *width = png_get_image_width(png_ptr, info_ptr); *height = png_get_image_height(png_ptr, info_ptr); bit_depth = png_get_bit_depth(png_ptr, info_ptr); color_type = png_get_color_type(png_ptr, info_ptr); interlace_type = png_get_interlace_type(png_ptr, info_ptr); compression_type = png_get_compression_type(png_ptr, info_ptr); pixels = (uint8*)malloc(*width * *height * 4); if (!pixels) { png_destroy_read_struct (&png_ptr, &info_ptr, NULL); LOG(LOG_CRITICAL,"gtk-v2::png_to_data","Out of memory - exiting"); exit(1); } /* the png library needs the rows, but we will just return the raw data */ if (rows_byte == 0) { rows =(png_bytepp) malloc(sizeof(char*) * *height); rows_byte=*height; } else if (*height > rows_byte) { rows =(png_bytepp) realloc(rows, sizeof(char*) * *height); rows_byte=*height; } if (!rows) { png_destroy_read_struct (&png_ptr, &info_ptr, NULL); return NULL; } for (y=0; y<*height; y++) rows[y] = pixels + y * *width * 4; png_read_image(png_ptr, rows); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); return pixels; } /* RATIO is used to know what units scale is - in this case, a percentage, so * it is set to 100 */ #define RATIO 100 #define MAX_IMAGE_WIDTH 1024 #define MAX_IMAGE_HEIGHT 1024 #define BPP 4 /** * Takes png data and scales it accordingly. This function is based on * pnmscale, but has been modified to support alpha channel - instead of * blending the alpha channel, it takes the most opaque value - blending it is * not likely to give sane results IMO - for any image that has transparent * information, if we blended the alpha, the result would be the edges of that * region being partially transparent. * This function has also been re-written to use more static data - in the case * of the client, it will be called thousands of times, so it doesn't make * sense to free the data and then re-allocate it. * * For pixels that are fully transparent, the end result after scaling is they * will be tranparent black. This is a needed effect for blending to work * properly. * * This function returns a new pointer to the scaled image data. This is * malloc'd data, so should be freed at some point to prevent leaks. This * function does not modify the data passed to it - the caller is responsible * for freeing it if it is no longer needed. * * function arguments: * @param *data PNG data - this is any 4 byte per pixel data, in RGBA format. * @param *width Source width modified to contain the new image size. * @param *height Source height modified to contain the new image size. * @param scale Percentage size that new image should be. 100 is a same size * image - values larger than 100 will result in zoom, values less * than 100 will result in a shrinkage. */ uint8 *rescale_rgba_data(uint8 *data, int *width, int *height, int scale) { static int xrow[BPP * MAX_IMAGE_WIDTH], yrow[BPP*MAX_IMAGE_HEIGHT]; static uint8 *nrows[MAX_IMAGE_HEIGHT]; /* Figure out new height/width */ int new_width = *width * scale / RATIO, new_height = *height * scale / RATIO; int sourcerow=0, ytoleft, ytofill, xtoleft, xtofill, dest_column=0, source_column=0, needcol, destrow=0; int x,y; uint8 *ndata; uint8 r,g,b,a; if (*width > MAX_IMAGE_WIDTH || new_width > MAX_IMAGE_WIDTH || *height > MAX_IMAGE_HEIGHT || new_height > MAX_IMAGE_HEIGHT) { LOG(LOG_CRITICAL,"gtk-v2::rescale_rgba_data","Image too big"); exit(0); } /* clear old values these may have */ memset(yrow, 0, sizeof(int) * *height * BPP); ndata = (uint8*)malloc(new_width * new_height * BPP); for (y=0; y 0 ) { yrow[x*BPP] += ytoleft * data[(sourcerow * *width + x)*BPP]/RATIO; yrow[x*BPP+1] += ytoleft * data[(sourcerow * *width + x)*BPP+1]/RATIO; yrow[x*BPP+2] += ytoleft * data[(sourcerow * *width + x)*BPP+2]/RATIO; } /* Alpha is a bit special - we don't want to blend it - * we want to take whatever is the more opaque value. */ if (data[(sourcerow * *width + x)*BPP+3] > yrow[x*BPP+3]) yrow[x*BPP+3] = data[(sourcerow * *width + x)*BPP+3]; } ytofill -= ytoleft; ytoleft = scale; if (sourcerow < *height) sourcerow++; } for (x=0; x < *width; ++x) { if (data[(sourcerow * *width + x)*BPP+3] > 0 ) { xrow[x*BPP] = yrow[x*BPP] + ytofill * data[(sourcerow * *width + x)*BPP] / RATIO; xrow[x*BPP+1] = yrow[x*BPP+1] + ytofill * data[(sourcerow * *width + x)*BPP+1] / RATIO; xrow[x*BPP+2] = yrow[x*BPP+2] + ytofill * data[(sourcerow * *width + x)*BPP+2] / RATIO; } if (data[(sourcerow * *width + x)*BPP+3] > xrow[x*BPP+3]) xrow[x*BPP+3] = data[(sourcerow * *width + x)*BPP+3]; yrow[x*BPP]=0; yrow[x*BPP+1]=0; yrow[x*BPP+2]=0; yrow[x*BPP+3]=0; } ytoleft -= ytofill; if (ytoleft <= 0) { ytoleft = scale; if (sourcerow < *height) sourcerow++; } ytofill = RATIO; xtofill = RATIO; dest_column = 0; source_column=0; needcol=0; r=0; g=0; b=0; a=0; for (x=0; x< *width; x++) { xtoleft = scale; while (xtoleft >= xtofill) { if (needcol) { dest_column++; r=0; g=0; b=0; a=0; } if (xrow[source_column*BPP+3] > 0) { r += xtofill * xrow[source_column*BPP] / RATIO; g += xtofill * xrow[1+source_column*BPP] / RATIO; b += xtofill * xrow[2+source_column*BPP] / RATIO; } if (xrow[3+source_column*BPP] > a) a = xrow[3+source_column*BPP]; nrows[destrow][dest_column * BPP] = r; nrows[destrow][1+dest_column * BPP] = g; nrows[destrow][2+dest_column * BPP] = b; nrows[destrow][3+dest_column * BPP] = a; xtoleft -= xtofill; xtofill = RATIO; needcol=1; } if (xtoleft > 0 ){ if (needcol) { dest_column++; r=0; g=0; b=0; a=0; needcol=0; } if (xrow[3+source_column*BPP] > 0) { r += xtoleft * xrow[source_column*BPP] / RATIO; g += xtoleft * xrow[1+source_column*BPP] / RATIO; b += xtoleft * xrow[2+source_column*BPP] / RATIO; } if (xrow[3+source_column*BPP] > a) a = xrow[3+source_column*BPP]; xtofill -= xtoleft; } source_column++; } if (xtofill > 0 ) { source_column--; if (xrow[3+source_column*BPP] > 0) { r += xtofill * xrow[source_column*BPP] / RATIO; g += xtofill * xrow[1+source_column*BPP] / RATIO; b += xtofill * xrow[2+source_column*BPP] / RATIO; } if (xrow[3+source_column*BPP] > a) a = xrow[3+source_column*BPP]; } /* Not positve, but without the bound checking for dest_column, * we were overrunning the buffer. My guess is this only really * showed up if when the images are being scaled - there is probably * something like half a pixel left over. */ if (!needcol && (dest_column < new_width)) { nrows[destrow][dest_column * BPP] = r; nrows[destrow][1+dest_column * BPP] = g; nrows[destrow][2+dest_column * BPP] = b; nrows[destrow][3+dest_column * BPP] = a; } destrow++; } *width = new_width; *height = new_height; return ndata; } guchar rgb[512*512*3]; /**< Make this especially big to support larger images * in the future */ /** * Takes data that has already been converted into RGBA format (via png_to_data * above perhaps) and creates a GdkPixmap and GdkBitmap out of it. * * @param *window * @param *data * @param width * @param height * @param **pix * @param **mask * @param *colormap * @return Non-zero on error (currently, no checks for error conditions is done */ int rgba_to_gdkpixmap(GdkWindow *window, uint8 *data,int width, int height, GdkPixmap **pix, GdkBitmap **mask, GdkColormap *colormap) { GdkGC *gc, *gc_alpha; int has_alpha=0, alpha; GdkColor scolor; int x,y; *pix = gdk_pixmap_new(window, width, height, -1); gc=gdk_gc_new(*pix); gdk_gc_set_function(gc, GDK_COPY); *mask=gdk_pixmap_new(window, width, height,1); gc_alpha=gdk_gc_new(*mask); scolor.pixel=1; gdk_gc_set_foreground(gc_alpha, &scolor); gdk_draw_rectangle(*mask, gc_alpha, 1, 0, 0, width, height); scolor.pixel=0; gdk_gc_set_foreground(gc_alpha, &scolor); /* we need to draw the alpha channel. The image may not in fact * have alpha, but no way to know at this point other than to try * and draw it. */ for (y=0; y pixels_byte) { pixels_byte =width * height * bpp; /* Doing a free/malloc is probably more efficient - * we don't care about the old data in this * buffer. */ free(pixels); pixels= (uint8*)malloc(pixels_byte); } if (!pixels) { png_destroy_read_struct (&png_ptr, &info_ptr, NULL); pixels_byte=0; return PNGX_OUTOFMEM; } if (rows_byte == 0) { rows =(png_bytepp) malloc(sizeof(char*) * height); rows_byte=height; } else if (height > rows_byte) { rows =(png_bytepp) realloc(rows, sizeof(char*) * height); rows_byte=height; } if (!rows) { png_destroy_read_struct (&png_ptr, &info_ptr, NULL); pixels_byte=0; return PNGX_OUTOFMEM; } for (y=0; y #ifdef HAVE_SDL #include #include #include /* Pick up the gtk headers we need */ #include #include #ifndef WIN32 #include #else #include #endif #include #include "main.h" #include "image.h" #include #include "gtk2proto.h" #include "mapdata.h" SDL_Surface* mapsurface; /**< Actual SDL surface the game view is painted on */ static SDL_Surface* lightmap; static SDL_Surface* fogmap; static char *redrawbitmap; extern int time_map_redraw; /* Move some of the SDL code to this file here. This makes it easier to share * between the gnome and gtk client. It also reduces the length of both the * gx11.c and gnome.c file. It also is more readable, as not as many #ifdef * SDL.. #endif constructs are needed. Note that there may still be some SDL * code in gx11.c - some areas are embedded so much that it is not easy to * remove. */ /* these should generally be included by the file including this file. */ #include #include static void do_SDL_error(const char *SDL_function, const char *file, int line) { LOG(LOG_CRITICAL,SDL_function,"SDL error in file %s line %d\n%s", file, line, SDL_GetError()); SDL_Quit(); exit( 1); } /** * Set the pixel at (x, y) to the given value * NOTE: The surface must be locked before calling this! * This function is directly grabbed from the SDL docs. * Note this is not currently used, but is useful enough * that it should be included. */ static void putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel) { int bpp = surface->format->BytesPerPixel; /* Here p is the address to the pixel we want to set */ Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp; switch(bpp) { case 1: *p = pixel; break; case 2: *(Uint16 *)p = pixel; break; case 3: if(SDL_BYTEORDER == SDL_BIG_ENDIAN) { p[0] = (pixel >> 16) & 0xff; p[1] = (pixel >> 8) & 0xff; p[2] = pixel & 0xff; } else { p[0] = pixel & 0xff; p[1] = (pixel >> 8) & 0xff; p[2] = (pixel >> 16) & 0xff; } break; case 4: *(Uint32 *)p = pixel; break; } } /** * * @param re_init * @param ax * @param ay */ static void overlay_grid( int re_init, int ax, int ay) { static SDL_Surface* grid_overlay; static int first_pass; int x= 0; int y= 0; SDL_Rect dst; Uint32 *pixel; SDL_PixelFormat* fmt; /* Need to convert back to screen coordinates */ ax-= pl_pos.x; ay-= pl_pos.y; if( re_init == TRUE) { if( grid_overlay) SDL_FreeSurface( grid_overlay); first_pass= 0; grid_overlay= NULL; } if( grid_overlay == NULL) { grid_overlay= SDL_CreateRGBSurface( SDL_HWSURFACE|SDL_SRCALPHA, use_config[CONFIG_MAPWIDTH]*map_image_size, use_config[CONFIG_MAPHEIGHT]*map_image_size, mapsurface->format->BitsPerPixel, mapsurface->format->Rmask, mapsurface->format->Gmask, mapsurface->format->Bmask, mapsurface->format->Amask); if( grid_overlay == NULL) do_SDL_error( "CreateRGBSurface", __FILE__, __LINE__); grid_overlay= SDL_DisplayFormatAlpha( grid_overlay); first_pass= 0; } /* * If this is our first time drawing the grid, we need to build up the * grid overlay */ if( first_pass== 0) { /* Red pixels around the edge and along image borders * fully transparent pixels everywhere else */ fmt= grid_overlay->format; for( x= 0; x < map_image_size*use_config[CONFIG_MAPWIDTH]; x++) { for( y= 0; y < map_image_size*use_config[CONFIG_MAPHEIGHT]; y++) { /* FIXME: Only works for 32 bit displays right now */ pixel= (Uint32*)grid_overlay->pixels+y*grid_overlay->pitch/4+x; if( x == 0 || y == 0 || ((x % map_image_size) == 0) || ((y % map_image_size) == 0 ) || y == use_config[CONFIG_MAPHEIGHT]*map_image_size-1 || x == use_config[CONFIG_MAPWIDTH]*map_image_size -1 ) { *pixel= SDL_MapRGBA( fmt, 255, 0, 0, SDL_ALPHA_OPAQUE); } else { *pixel= SDL_MapRGBA( fmt, 0, 0, 0, SDL_ALPHA_TRANSPARENT); } } } first_pass= 1; /* * If this is our first pass then we need to overlay the entire grid * now. Otherwise we just update the tile we are on */ dst.x= 0; dst.y= 0; dst.w= map_image_size*use_config[CONFIG_MAPWIDTH]; dst.h= map_image_size*use_config[CONFIG_MAPHEIGHT]; SDL_BlitSurface( grid_overlay, NULL, mapsurface, &dst); } else { dst.x= ax* map_image_size; dst.y= ay* map_image_size; dst.w= map_image_size; dst.h= map_image_size; /* One to one pixel mapping of grid and mapsurface so we * can share the SDL_Rect */ SDL_BlitSurface( grid_overlay, &dst, mapsurface, &dst); } return; } /** * Takes two args, the first is the GtkWindow to draw on, this should always * be 'drawingarea'. The second is a boolean, if 0 then the whole * SDL system in initialized or reinited if already run once before, * if non zero then only the lightmap is rebuilt, if we switch between * per-pixel or per-tile lighting * * @param sdl_window * @param just_lightmap */ void init_SDL( GtkWidget* sdl_window, int just_lightmap) { char SDL_windowhack[32]; if( just_lightmap == 0) { g_assert( sdl_window != NULL); if( SDL_WasInit( SDL_INIT_VIDEO) != 0) { if( lightmap) SDL_FreeSurface( lightmap); if( mapsurface) SDL_FreeSurface( mapsurface); SDL_Quit(); } /* * SDL hack to tell SDL which xwindow to paint onto */ #ifndef WIN32 snprintf(SDL_windowhack, sizeof(SDL_windowhack), "SDL_WINDOWID=%ld", GDK_WINDOW_XWINDOW(sdl_window->window) ); #else sprintf( SDL_windowhack, "SDL_WINDOWID=%ld", GDK_WINDOW_HWND(sdl_window->window) ); #endif putenv( SDL_windowhack); if( SDL_Init( SDL_INIT_VIDEO) < 0) { LOG(LOG_CRITICAL,"gtk-v2::init_SDL", "Could not initialize SDL: %s", SDL_GetError()); gtk_main_quit(); } mapsurface= SDL_SetVideoMode( map_image_size*use_config[CONFIG_MAPWIDTH], map_image_size*use_config[CONFIG_MAPHEIGHT], 0, SDL_HWSURFACE|SDL_DOUBLEBUF); if( mapsurface == NULL) { do_SDL_error( "SetVideoMode", __FILE__, __LINE__); } if( fogmap) SDL_FreeSurface( fogmap); fogmap= SDL_CreateRGBSurface( SDL_HWSURFACE|SDL_SRCALPHA, map_image_size, map_image_size, mapsurface->format->BitsPerPixel, mapsurface->format->Rmask, mapsurface->format->Gmask, mapsurface->format->Bmask, mapsurface->format->Amask); if( fogmap == NULL) { do_SDL_error( "SDL_CreateRGBSurface", __FILE__, __LINE__); } /* * This is a persurface alpha value, not an alpha channel value. * So this surface doesn't actually need a full alpha channel */ if( SDL_SetAlpha( fogmap, SDL_SRCALPHA|SDL_RLEACCEL, 128) < 0) { do_SDL_error( "SDL_SetAlpha", __FILE__, __LINE__); } } if( just_lightmap != 0 && lightmap) SDL_FreeSurface( lightmap); lightmap= SDL_CreateRGBSurface( SDL_HWSURFACE|SDL_SRCALPHA, map_image_size, map_image_size, mapsurface->format->BitsPerPixel, mapsurface->format->Rmask, mapsurface->format->Gmask, mapsurface->format->Bmask, mapsurface->format->Amask); if( lightmap == NULL) { do_SDL_error( "SDL_CreateRGBSurface", __FILE__, __LINE__); } if(use_config[CONFIG_LIGHTING] != CFG_LT_TILE) { /* Convert surface to have a full alpha channel if we are doing * per-pixel lighting */ lightmap= SDL_DisplayFormatAlpha( lightmap); if( lightmap == NULL) { do_SDL_error( "DisplayFormatAlpha", __FILE__, __LINE__); } } if(use_config[CONFIG_SHOWGRID] == TRUE) { overlay_grid( TRUE, 0, 0); } /* We make this a bit bigger than the actual map - thus, there * is a 1 space pad in all directions. This enables us * to store a value in that area without having to do checks to * see if we are at the edge of the map - doing a store vs 4 * checks is going to be much faster. */ redrawbitmap = malloc(sizeof(char) * (MAP_MAX_SIZE +2)* (MAP_MAX_SIZE+2)); } /** * Draw a alpha square on lightmap. Values for topleft, topright, * bottomleft,bottomright corners are knowns This use bilinear interpolation * for other points. Width and heights are given for surrounding known values * square. Interpolation is done in a small square whose coordinates are * given by start{x|y} and end{x|y} * Tchize 22 May 2004 * * Note - profile shows this is a very costly function - of a small run, * 77% of the time of the cpu time for the client was in this function. * * @param tl color * @param tr color * @param bl color * @param br color * @param width color square size * @param height color square size * @param startx Top left corner of the interpolation region. * @param starty Top left corner of the interpolation region. * @param endx Bottom right corner of the interpolation region. * @param endy Bottom right corner of the interpolation region. * @param destx Coordinate of top left corner in destination map, or where in * the lightmap to save the result. * @param desty Coordinate of top left corner in destination map, or where in * the lightmap to save the result. */ void drawquarterlightmap_sdl(int tl, int tr, int bl, int br, int width, int height, int startx, int starty, int endx, int endy, int destx, int desty){ int x,y; int top,bottom,val; for (x=startx;x255) val=255; if (val<0) val=0; /*printf("writing pel at %d,%d\n",destx+x,desty+y);*/ putpixel(lightmap, destx+x-startx, desty+y-starty, SDL_MapRGBA(lightmap->format, 0, 0, 0, val)); } } } /* See note below about ALPHA_FUDGE - used to adjust lighting effects some */ #define ALPHA_FUDGE(x) (2*(x) / 3) #define GENDARK(x,y) ( (((x)&(y) & 1) == 1)?255:0 ) /** * Do the lighting on a per pixel basis. * x and y are coordinates on the drawable map surfaces (but in terms of * spaces, not pixels). mx and my are indexes into the * the_map.cells[][] array. * All the below goes out and figures lighting for each pixel on * the space, and creates a surface (with alpha) that is then put on * top of the exiting map space. * * TODO: I think it is possible to greatly speed this up by using * pre-generated darkness masks. Doing all the possibilities * would be 3125 images (5 positions, each with 5 values, 5^5), * Doing it based on quadrants would only reduce that to 1024. * But I _think_ it may be possible to do this with just 64 images * (2^5 + one 90 degree rotation of the same) based on quadrants. * ie, do a 16x16 image with the 5 gradiants (0,64,128,255 at the * left, and each of those values at the right). Then do the same * idea for top and bottom. For any single quadrant, you would * then merge thse two values (which can be done with a fast blit), * corresponding to the right values, and you do the same thing for * the other four quadrants. Note this only works so long as * 4 lighting values are used - if more are added, this quickly * breaks. Also, if lighting colored effects are desired, * this also doesn't work very well. * * For now, I've just kept the old logic. MSW 2001-10-09 * * @param x * @param y * @param mx * @param my */ static void do_sdl_per_pixel_lighting(int x, int y, int mx, int my) { int dark0, dark1, dark2, dark3, dark4; SDL_Rect dst; /* I use dark0 -> dark4 in the order to keep it similar to * the old code. */ dark0 = the_map.cells[mx][my].darkness; if (y-1 < 0 || !the_map.cells[mx][my-1].have_darkness) dark1 = dark0; else dark1 = the_map.cells[mx][my-1].darkness; if (x+1 >= use_config[CONFIG_MAPWIDTH] || !the_map.cells[mx+1][my].have_darkness) dark2 = dark0; else dark2 = the_map.cells[mx+1][my].darkness; if (y+1 >= use_config[CONFIG_MAPHEIGHT] || !the_map.cells[mx][my+1].have_darkness) dark3 = dark0; else dark3 = the_map.cells[mx][my+1].darkness; if (x-1 < 0 || !the_map.cells[mx-1][my].have_darkness) dark4 = dark0; else dark4 = the_map.cells[mx-1][my].darkness; /* If they are all the same, processing is easy * * Note, the best lightining algorithm also uses diagonals * so we should check the diagonals are same too * We don't check for now, simply do all raw computation on best mode * Tchize 19 may 2004 */ if (dark0 == dark1 && dark0 == dark2 && dark0 == dark3 && dark0 == dark4 && (use_config[CONFIG_LIGHTING] != CFG_LT_PIXEL_BEST)) { dst.x = x * map_image_size; dst.y = y * map_image_size; dst.w = map_image_size; dst.h = map_image_size; if (dark0 == 255) { SDL_FillRect(mapsurface,&dst, SDL_MapRGB(mapsurface->format, 0, 0, 0)); } else if (the_map.cells[mx][my].darkness != 0) { SDL_FillRect(lightmap,NULL, SDL_MapRGBA(lightmap->format, 0, 0, 0, the_map.cells[mx][my].darkness)); SDL_BlitSurface(lightmap, NULL, mapsurface, &dst); } return; } if (use_config[CONFIG_LIGHTING] == CFG_LT_PIXEL ) { /* This almost works as well as the per pixel code below, but does have some various * artifacts in the drawing. It uses the same logic as the per pixel code below, * bit since SDL does the blit, the alpha handling ends up being different * (I think it ends up being additive). This results in the darkness being * darker, but you also don't get the smooth effects. If you divide all the values * by 2 (change ALPHA_FUDGE), the blending is smooth, but now the things are not dark * enough, so the blending aganst solid black spaces does not look good. * The reason this code is of interest is that on my system, it is about 50% * faster than the code below (25 ms to darkness the church in the starting * town vs 50 ms for the code further down) * Setting ALPHA_FUDGE to 2/3 seems to reduce the artifacts described above * to fairly minimal levels, while still keeping things dark enough. * MSW 2001-10-12 */ int i; if (dark1 == dark0) { /* If we don't have usable darkness at the top, then this entire region * should be the same value. Likewise, if the top value and center value * are the same, we can do the entire region. */ dst.x=0; dst.y=0; dst.w = map_image_size; dst.h = map_image_half_size; SDL_FillRect(lightmap, &dst, SDL_MapRGBA(lightmap->format, 0, 0, 0, ALPHA_FUDGE(dark0))); } else for (i=0; iformat, 0, 0, 0, ALPHA_FUDGE((map_image_half_size - i) * dark1 + i * dark0)/map_image_half_size)); } /* All the following blocks are basically the same as above, just different * darkness areas. */ if (dark3 == dark0) { dst.x=0; dst.y=map_image_half_size; dst.w = map_image_size; dst.h = map_image_half_size; SDL_FillRect(lightmap, &dst, SDL_MapRGBA(lightmap->format, 0, 0, 0, ALPHA_FUDGE(dark0))); } else for (i=map_image_half_size; iformat, 0, 0, 0, ALPHA_FUDGE(dark0*(map_image_size-i) + dark3*(i-map_image_half_size)) / map_image_half_size)); } /* Blit this to the screen now. Otherwise, we need to look at the alpha values * and re-average. */ dst.x= x * map_image_size; dst.y= y * map_image_size; SDL_BlitSurface(lightmap, NULL, mapsurface, &dst); if (dark4 == dark0) { dst.x=0; dst.y=0; dst.w = map_image_half_size; dst.h = map_image_size; SDL_FillRect(lightmap, &dst, SDL_MapRGBA(lightmap->format, 0, 0, 0, ALPHA_FUDGE(dark0))); } else for (i=0; iformat, 0, 0, 0, ALPHA_FUDGE(dark4*(map_image_half_size-i) + dark0*i) / map_image_half_size)); } if (dark2 == dark0) { dst.x=map_image_half_size; dst.y=0; dst.w = map_image_half_size; dst.h = map_image_size; SDL_FillRect(lightmap, &dst, SDL_MapRGBA(lightmap->format, 0, 0, 0, ALPHA_FUDGE(dark0))); } else for (i=map_image_half_size; iformat, 0, 0, 0, ALPHA_FUDGE(dark0*(map_image_size-i) + dark2*(i-map_image_half_size)) / map_image_half_size)); } dst.x= x * map_image_size; dst.y= y * map_image_size; SDL_BlitSurface(lightmap, NULL, mapsurface, &dst); } else if (use_config[CONFIG_LIGHTING] == CFG_LT_PIXEL_BEST ) { #if 0 int dx,dy; static int *darkx=NULL, *darky=NULL,darkx_allocated=0; /* Generated stored for the darkx[] array. Do it dynamically, but * only allocate if the size needs to be expanded to keep performance * better. darkx could be null in the initial case, but realloc should * just treat that as a malloc (so according to the man page) */ if (map_image_size > darkx_allocated) { darkx = realloc(darkx, map_image_size * sizeof(int)); darky = realloc(darky, map_image_size * sizeof(int)); darkx_allocated = map_image_size; } for( dx= 0; dx < map_image_half_size; dx++) darkx[dx]= (dark4*(map_image_half_size-dx) + dark0*dx) / map_image_half_size; for( dx= map_image_half_size; dx < map_image_size; dx++) darkx[dx] = (dark0*(map_image_size-dx) + dark2*(dx-map_image_half_size)) / map_image_half_size; for( dy= 0; dy < map_image_half_size; dy++) darky[dy]= (dark1*(map_image_half_size-dy) + dark0*dy) / map_image_half_size; for( dy= map_image_half_size; dy < map_image_size; dy++) darky[dy] = (dark0*(map_image_size-dy) + dark3*(dy-map_image_half_size)) / map_image_half_size; SDL_LockSurface( lightmap); for (dx=0; dxformat, 0, 0, 0,(darkx[dx] + darky[dy])/2)); #else /*we need additionnal surrounding infos*/ int dark5, dark6, dark7, dark8; if ( (y-1 < 0) || (x+1 >= use_config[CONFIG_MAPWIDTH]) || !the_map.cells[mx+1][my-1].have_darkness) dark5 = (dark1+dark2)>>1; /*(fast div 2)*/ else dark5 = the_map.cells[mx+1][my-1].darkness; if ( (x+1 >= use_config[CONFIG_MAPWIDTH]) || (y+1 >= use_config[CONFIG_MAPHEIGHT]) || !the_map.cells[mx+1][my+1].have_darkness) dark6 = (dark2+dark3)>>1; else dark6 = the_map.cells[mx+1][my+1].darkness; if ( (y+1 >= use_config[CONFIG_MAPHEIGHT]) || (x-1 < 0) || !the_map.cells[mx-1][my+1].have_darkness) dark7 = (dark3+dark4)>>1; else dark7 = the_map.cells[mx-1][my+1].darkness; if ( (x-1 < 0) || (y-1 < 0) || !the_map.cells[mx-1][my-1].have_darkness) dark8 = (dark4+dark1)>>1; else dark8 = the_map.cells[mx-1][my-1].darkness; /*upper left lightmap quarter*/ drawquarterlightmap_sdl(dark8, dark1, dark4, dark0, /*colors*/ map_image_size, map_image_size, /*color square size*/ map_image_half_size, map_image_half_size, map_image_size, map_image_size, /*interpolation region*/ 0, 0); /*where in lightmap to save result*/ /*upper right lightmap quarter*/ drawquarterlightmap_sdl(dark1, dark5, dark0, dark2, /*colors*/ map_image_size, map_image_size, /*color square size*/ 0, map_image_half_size, map_image_half_size, map_image_size, /*interpolation region*/ map_image_half_size, 0); /*where in lightmap to save result*/ /*bottom left lightmap quarter*/ drawquarterlightmap_sdl(dark4, dark0, dark7, dark3, /*colors*/ map_image_size, map_image_size, /*color square size*/ map_image_half_size, 0, map_image_size, map_image_half_size, /*interpolation region*/ 0, map_image_half_size); /*where in lightmap to save result*/ /*bottom right lightmap quarter*/ drawquarterlightmap_sdl(dark0, dark2, dark3, dark6, /*colors*/ map_image_size, map_image_size, /*color square size*/ 0, 0, map_image_half_size, map_image_half_size, /*interpolation region*/ map_image_half_size, map_image_half_size); /*where in lightmap to save result*/ #endif dst.w= map_image_size; dst.h= map_image_size; dst.x= x * map_image_size; dst.y= y * map_image_size; SDL_UnlockSurface(lightmap); SDL_BlitSurface(lightmap, NULL, mapsurface, &dst); } } /** * Draw anything in adjacent squares that could smooth on given square * mx,my square to smooth on. you should not call this function to * smooth on a 'completly black' square. (simply for visual result) * layer layer to examine (we smooth only one layer at a time) * dst place on the mapwindow to draw * * @param mx * @param my * @param layer * @param dst */ static void drawsmooth_sdl (int mx,int my,int layer,SDL_Rect dst){ static int dx[8]={0,1,1,1,0,-1,-1,-1}; static int dy[8]={-1,-1,0,1,1,1,0,-1}; static int bweights[8]={2,0,4,0,8,0,1,0}; static int cweights[8]={0,2,0,4,0,8,0,1}; static int bc_exclude[8]={ 1+2,/*north exclude northwest (bit0) and northeast(bit1)*/ 0, 2+4,/*east exclude northeast and southeast*/ 0, 4+8,/*and so on*/ 0, 8+1, 0 }; int partdone[8]={0,0,0,0,0,0,0,0}; int slevels[8]; int sfaces[8]; int i,weight,weightC; int emx,emy; int smoothface; int hasFace = 0; SDL_Rect src; for (i=0;i<=layer;i++) hasFace |= the_map.cells[mx][my].heads[i].face; if (!hasFace || !CAN_SMOOTH(the_map.cells[mx][my], layer)) { return; } src.w=dst.w; src.h=dst.h; for (i=0;i<8;i++){ emx=mx+dx[i]; emy=my+dy[i]; if ( (emx<0) || (emy<0) || (the_map.x<=emx) || (the_map.y<=emy)){ slevels[i]=0; sfaces[i]=0; /*black picture*/ } else if (the_map.cells[emx][emy].smooth[layer]<=the_map.cells[mx][my].smooth[layer]){ slevels[i]=0; sfaces[i]=0; /*black picture*/ }else{ slevels[i]=the_map.cells[emx][emy].smooth[layer]; sfaces[i]=pixmaps[the_map.cells[emx][emy].heads[layer].face]->smooth_face; } } /* ok, now we have a list of smoothlevel higher than current square. * there are at most 8 different levels. so... let's check 8 times * for the lowest one (we draw from botto to top!). */ while (1){ int lowest = -1; for (i=0;i<8;i++){ if ( (slevels[i]>0) && (!partdone[i]) && ((lowest<0) || (slevels[i]map_image) || (pixmaps[smoothface] == pixmaps[0])) continue; /*don't have the picture associated*/ if (weight>0){ src.x=map_image_size*weight; src.y=0; if (the_map.cells[mx][my].cleared) { if (SDL_BlitSurface(pixmaps[smoothface]->fog_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } else { if (SDL_BlitSurface(pixmaps[smoothface]->map_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } } if (weightC>0){ src.x=map_image_size*weightC; src.y=map_image_size; if (the_map.cells[mx][my].cleared) { if (SDL_BlitSurface(pixmaps[smoothface]->fog_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } else { if (SDL_BlitSurface(pixmaps[smoothface]->map_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } } }/*while there's some smooth to do*/ } /** * Replacment of sdl_square_need_redraw logic. use of sdl_square_need_redraw * is relatively inefficient becuase it is called for every space (hence * function call overhead), but also has 4 checks to make sure the neighbor * space is within valid range, and if non tile mode, performs that check at * least 4 times per space. * This is much more efficient, because our redrawbitmap array is large enough * we don't need those checks - we know we are always safe to go one outside * the bounds (hence, the +1 in the coordinate values) */ static void update_redrawbitmap(void) { int mx,my, x,y; memset(redrawbitmap, 0, (use_config[CONFIG_MAPWIDTH]+2) * (use_config[CONFIG_MAPHEIGHT]+2)); for( x= 0; xformat, 0, 0, 0)); /* now draw the different layers. Only draw if using fog of war or the * space isn't clear. */ if (use_config[CONFIG_FOGWAR] || !the_map.cells[mx][my].cleared) { for (layer=0; layer 0 && pixmaps[face]->map_image != NULL) { int w = pixmaps[face]->map_width; int h = pixmaps[face]->map_height; /* add one to the size values to take into account the actual width of the space */ src.x = w-map_image_size; src.y = h-map_image_size; src.w = map_image_size; src.h = map_image_size; dst.x = ax*map_image_size; dst.y = ay*map_image_size; if (the_map.cells[mx][my].cleared) { if (SDL_BlitSurface(pixmaps[face]->fog_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } else { if (SDL_BlitSurface(pixmaps[face]->map_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } } /* Sometimes, it may happens we need to draw the smooth while there * is nothing to draw at that layer (but there was something at lower * layers). This is handled here. The else part is to take into account * cases where the smooth as already been handled 2 code lines before */ if (use_config[CONFIG_SMOOTH]) drawsmooth_sdl (mx,my,layer,dst); /* draw big faces last (should overlap other objects) */ face = mapdata_bigface(ax, ay, layer, &sx, &sy); if (face > 0 && pixmaps[face]->map_image != NULL) { /* We have to handle images that are not an equal * multiplier of map_image_size. See * display_mapcell() in gtk-v2/src/map.c for * more details on this logic, since it is basically * the same. */ int dx, dy, sourcex, sourcey, offx, offy; dx = pixmaps[face]->map_width % map_image_size; offx = dx?(map_image_size -dx):0; if (sx) { sourcex = sx * map_image_size - offx ; offx=0; } else { sourcex=0; } dy = pixmaps[face]->map_height % map_image_size; offy = dy?(map_image_size -dy):0; if (sy) { sourcey = sy * map_image_size - offy; offy=0; } else { sourcey=0; } src.x = sourcex; src.y = sourcey; src.w = map_image_size - offx; src.h = map_image_size - offy; dst.x = ax*map_image_size + offx; dst.y = ay*map_image_size + offy; if (the_map.cells[mx][my].cleared) { if (SDL_BlitSurface(pixmaps[face]->fog_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } else { if (SDL_BlitSurface(pixmaps[face]->map_image, &src, mapsurface, &dst)) do_SDL_error( "BlitSurface", __FILE__, __LINE__); } } /* else for processing the layers */ } } if (use_config[CONFIG_LIGHTING] == CFG_LT_TILE) { dst.x = ax*map_image_size; dst.y = ay*map_image_size; dst.w = map_image_size; dst.h = map_image_size; /* Note - Instead of using a lightmap, I just fillrect * directly onto the map surface - I would think this should be * faster */ if (the_map.cells[mx][my].darkness == 255) { SDL_FillRect(mapsurface,&dst, SDL_MapRGB(mapsurface->format, 0, 0, 0)); } else if (the_map.cells[mx][my].darkness != 0) { SDL_SetAlpha(lightmap, SDL_SRCALPHA|SDL_RLEACCEL, the_map.cells[mx][my].darkness); SDL_BlitSurface(lightmap, NULL, mapsurface, &dst); } } else if (use_config[CONFIG_LIGHTING] == CFG_LT_PIXEL || use_config[CONFIG_LIGHTING] == CFG_LT_PIXEL_BEST) { do_sdl_per_pixel_lighting(ax, ay, mx, my); } } /** * Generates a map in SDL mode. * * I had to totally change the logic on how we do this in SDL mode - to support * variable sized images, the old method of generating each space does not * work, as one space may spill over to the other. Instead, we first blit the * bottom layer, then the layer above that, and so on. This results in the map * being drawn a bit more correctly. In fact, that logic actually isn't * needed, as with the new map commands, we know the offset and size of the * images. * * The logic here only redraws spaces that change. The logic in the * common/commands.c files the odd layers with links for 'big images'. For * objects on these layers, we look at the size_x and size_y values to * determine the offset from which we should be blitting. * * Old notes, but left in: * The performance here is very good in most cases - about 30 ms (on my system) * is used just for my flip at the bottom of the function, drawing only what is * needed generally saves a lot of time (<15 ms in most cases) compared to the * 80-120 ms usually needed on a 15x15 map. * * @param redraw */ void sdl_gen_map(int redraw) { int x, y, num_spaces=0, num_drawn=0; struct timeval tv1, tv2, tv3; long elapsed1, elapsed2; if (time_map_redraw) gettimeofday(&tv1, NULL); update_redrawbitmap(); for( x= 0; x10000) LOG(LOG_INFO,"gtk-v2::sdl_gen_map","gen took %7ld, flip took %7ld, total = %7ld", elapsed1, elapsed2, elapsed1 + elapsed2); } } /* sdl_gen_map function */ /** * * @param dx * @param dy */ int sdl_mapscroll(int dx, int dy) { /* Don't sdl_gen_map should take care of the redraw */ /* a copy of what pngximage does except sdl specfic * mapsurface->pitch is the length of a scanline in bytes * including alignment padding */ SDL_LockSurface( mapsurface); if( dy < 0) { int offset= mapsurface->pitch * (-dy*map_image_size); memmove( mapsurface->pixels + offset, mapsurface->pixels, mapsurface->pitch * (mapsurface->h + dy*map_image_size) ); } else if( dy > 0) { int offset= mapsurface->pitch * (dy*map_image_size); memmove( mapsurface->pixels, mapsurface->pixels + offset, mapsurface->pitch * (mapsurface->h - dy*map_image_size) ); } if (dx) { int y; for( y= 0; y < mapsurface->h; y++) { if( dx < 0) { char* start_of_row= mapsurface->pixels + mapsurface->pitch * y; int offset= ( mapsurface->format->BytesPerPixel * map_image_size * -dx); memmove( start_of_row + offset, start_of_row, mapsurface->pitch - offset); } else { char* start_of_row= mapsurface->pixels + mapsurface->pitch * y; int offset= ( mapsurface->format->BytesPerPixel * map_image_size * dx); memmove( start_of_row, start_of_row + offset, mapsurface->pitch - offset); } } } SDL_UnlockSurface( mapsurface); return 1; } #endif crossfire-client-1.70.0/gtk-v2/src/metaserver.c0000644000014500000120000003532711731277013016214 00000000000000const char * const rcsid_gtk2_metaserver_c = "$Id: metaserver.c 13042 2010-04-30 01:02:01Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/metaserver.c * Supports the client's metaserver dialog used to connect to available * servers. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "client.h" #include "image.h" #include "main.h" #include "gtk2proto.h" #include "metaserver.h" #include static GtkWidget *metaserver_window, *treeview_metaserver, *metaserver_button, *metaserver_status, *metaserver_entry; static GtkListStore *store_metaserver; static GtkTreeSelection *metaserver_selection; enum { LIST_HOSTNAME, LIST_IPADDR, LIST_IDLETIME, LIST_PLAYERS, LIST_VERSION, LIST_COMMENT }; /** * Enables the connect button and clears the server entry box when a server is * navigated to or otherwise selected. * * @param selection * @param model * @param path * @param path_currently_selected * @param userdata * @return TRUE */ gboolean metaserver_selection_func ( GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer userdata) { gtk_widget_set_sensitive(metaserver_button, TRUE); gtk_entry_set_text(GTK_ENTRY(metaserver_entry), ""); return TRUE; } /** * Constructs the metaserver dialog and handles metaserver selection. If the * player has a servers.cache file in their .crossfire folder, the cached * server list is added to the contents of the metaserver dialog. */ void get_metaserver(void) { static int has_init=0; GtkTreeIter iter; int i, j; const gchar *metaserver_txt; GladeXML *xml_tree; GtkWidget *widget; hide_all_login_windows(); /* in account.c */ if (!has_init) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; metaserver_window = glade_xml_get_widget (dialog_xml, "metaserver_window"); xml_tree = glade_get_widget_tree(GTK_WIDGET(metaserver_window)); gtk_window_set_transient_for(GTK_WINDOW(metaserver_window), GTK_WINDOW(window_root)); treeview_metaserver = glade_xml_get_widget(xml_tree, "treeview_metaserver"); metaserver_button = glade_xml_get_widget(xml_tree, "metaserver_select"); metaserver_status = glade_xml_get_widget(xml_tree, "metaserver_status"); metaserver_entry = glade_xml_get_widget(xml_tree, "metaserver_text_entry"); g_signal_connect ((gpointer) metaserver_window, "destroy", G_CALLBACK (on_window_destroy_event), NULL); g_signal_connect ((gpointer) treeview_metaserver, "row_activated", G_CALLBACK (on_treeview_metaserver_row_activated), NULL); g_signal_connect ((gpointer) metaserver_entry, "activate", G_CALLBACK (on_metaserver_text_entry_activate), NULL); g_signal_connect ((gpointer) metaserver_entry, "key_press_event", G_CALLBACK (on_metaserver_text_entry_key_press_event), NULL); g_signal_connect ((gpointer) metaserver_button, "clicked", G_CALLBACK (on_metaserver_select_clicked), NULL); widget = glade_xml_get_widget(xml_tree, "button_metaserver_quit"); g_signal_connect ((gpointer) widget, "pressed", G_CALLBACK (on_button_metaserver_quit_pressed), NULL); g_signal_connect ((gpointer) widget, "activate", G_CALLBACK (on_button_metaserver_quit_pressed), NULL); store_metaserver = gtk_list_store_new (6, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_view_set_model(GTK_TREE_VIEW(treeview_metaserver), GTK_TREE_MODEL(store_metaserver)); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Hostname", renderer, "text", LIST_HOSTNAME, NULL); gtk_tree_view_column_set_sort_column_id(column, LIST_HOSTNAME); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview_metaserver), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Updated (Sec)", renderer, "text", LIST_IDLETIME, NULL); gtk_tree_view_column_set_sort_column_id(column, LIST_IDLETIME); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview_metaserver), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Players", renderer, "text", LIST_PLAYERS, NULL); gtk_tree_view_column_set_sort_column_id(column, LIST_PLAYERS); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview_metaserver), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Version", renderer, "text", LIST_VERSION, NULL); gtk_tree_view_column_set_sort_column_id(column, LIST_VERSION); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview_metaserver), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Server Comment", renderer, "text", LIST_COMMENT, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview_metaserver), column); gtk_widget_realize(metaserver_window); metaserver_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview_metaserver)); gtk_tree_selection_set_mode (metaserver_selection, GTK_SELECTION_BROWSE); gtk_tree_selection_set_select_function(metaserver_selection, metaserver_selection_func, NULL, NULL); has_init=1; } gtk_widget_show(metaserver_window); gtk_label_set_text(GTK_LABEL(metaserver_status), "Waiting for data from metaserver"); metaserver_txt = gtk_entry_get_text(GTK_ENTRY(metaserver_entry)); if (*metaserver_txt == '\0') { gtk_widget_set_sensitive(metaserver_button, FALSE); } else { gtk_widget_set_sensitive(metaserver_button, TRUE); } gtk_list_store_clear(store_metaserver); while (metaserver_check_status()) { usleep(100); gtk_main_iteration_do(FALSE); } pthread_mutex_lock(&ms2_info_mutex); if (cached_servers_num) { for ( i = 0; i < cached_servers_num; i++ ) { for (j=0; j < meta_numservers; j++) { if (!strcmp(cached_servers_name[i], meta_servers[j].hostname)) break; } if (j == meta_numservers) { gtk_list_store_append(store_metaserver, &iter); gtk_list_store_set(store_metaserver, &iter, LIST_HOSTNAME, cached_servers_name[i], LIST_IPADDR, cached_servers_ip[i], LIST_COMMENT, "Cached server entry", -1); } } } qsort(meta_servers, meta_numservers, sizeof(Meta_Info), (int (*)(const void *, const void *))meta_sort); for (i=0; i #include #include #include #include #include #include "client.h" FILE *sound_pipe=NULL; ChildProcess* sound_process; /** * Opens the audio device, and reads relevant configuration files. * * @return * Returns 0 on success. On failure, the calling function will likely disable * sound support/requests from the server. */ int init_sounds(void) { #ifndef WIN32 char sound_path[MAX_BUF]; /* * Easy trick - global nosound is set in the arg processing - if set, just * return -1 - this way, the calling function only needs to check the value * of init_sounds, and not worry about checking nosound. */ if (!want_config[CONFIG_SOUND]) return -1; if (sound_server[0] == '\0') { LOG(LOG_ERROR,"init_sounds:", "sound-server variable not set to anything"); return -1; } /* * If an absolute path is given, we use it unadorned. Otherwise, we use * the path in the BINDIR. */ if (sound_server[0] == '/') strcpy(sound_path, sound_server); else snprintf(sound_path, sizeof(sound_path),"%s/%s", BINDIR, sound_server); if (access(sound_path, X_OK)<0) { fprintf(stderr,"Unable to access %s sound server process\n", sound_path); return -1; } sound_process=raiseChild(sound_path,CHILD_STDIN|CHILD_STDOUT|CHILD_STDERR); logChildPipe(sound_process, LOG_INFO, CHILD_STDOUT|CHILD_STDERR); if (fcntl(sound_process->tube[0], F_SETFL, O_NONBLOCK)<0) { /* * Setting non-blocking isn't 100% critical, but a good thing if * possible. */ perror("init_sounds: Warning - unable to set non blocking on sound pipe\n"); } sound_pipe=fdopen(sound_process->tube[0],"w"); return 0; #else return -1; #endif } /** * Initiates playing of a sound effect, specified by name and type, to * cfsndserv via a pipe. * * @param x Offset of the sound relative to the player. * @param y Offset of the sound relative to the player. * @param dir The direction the sound is moving toward, where north = 1, * northeast = 2, and so on. 0 indicates a stationary source. * @param vol A value from 0 through 100 inclusive that suggests the * relative loudness of the sound effect. * @param type See server doc/Developers/sound for details. 1 is a sound * related to living things. 2 is a spell-related sound. 3 is * is made by an item. 4 is created by the environment. 5 is a * sound of an attack. 6 is a sound of a incoming hit. This is * list may grow over time. * @param sound A descriptive name for the sound effect to play. It usually * describes the sound itself, and may be combined with the type * and source name to select the file to play. * @param source The name of the sound emitter. It is used in combination * with type and sound to determine which file to play. */ void play_sound_effect(sint8 x, sint8 y, uint8 dir, uint8 vol, uint8 type, const char *sound, const char *source) { #ifndef WIN32 /** * cfsndserv recognizes sound commands by seeing the numeric parameters at * the beginning of the command line. */ char format[] = "%4x %4x %4x %4x %4x \"%s\" \"%s\"\n"; if (! use_config[CONFIG_SOUND]) return; /* * Pass the sound command on to the player. * * NOTE: Sound and source are reversed with respect to how the server sent * data to the client. This is intentional, so that the sound/music name * is always the last quoted string on the command sent to cfsndserv. */ if ((fprintf(sound_pipe, format, x, y, dir, vol, type, source, sound) <= 0) || (fflush(sound_pipe) != 0)) { LOG(LOG_ERROR, "gtk-v2::play_sound_effect", "Cannot write sound pipe: %d", errno); use_config[CONFIG_SOUND] = 0; fclose(sound_pipe); sound_process = NULL; return; } #if 1 else LOG(LOG_INFO, "gtk-v2::play_sound_effect", format, x, y, dir, vol, type, sound, source); #endif #endif } /** * Parse the data contained by a sound2 command coming from the server and * handle playing the specified sound. See server doc/Developers/sound for * details. * * @param data Data provided following the sound2 command from the server. * @param len Length of the sound2 command data. */ void Sound2Cmd(unsigned char *data, int len) { #ifndef WIN32 sint8 x, y; uint8 dir, vol, type, len_sound, len_source; char* sound = NULL; char* source = NULL; /** * Format of the sound2 command recieved in data: * *
     * sound2 {x}{y}{dir}{volume}{type}{len_sound}{sound}{len_source}{source}
     *         b  b  b    b       b     b          str    b           str
     * 
*/ if (len < 8) { LOG(LOG_WARNING, "gtk-v2::Sound2Cmd", "Sound command too short: %d\n bytes", len); return; } x = data[0]; y = data[1]; dir = data[2]; vol = data[3]; type = data[4]; len_sound = data[5]; /* * The minimum size of data is 1 for each byte in the command (7) plus the * size of the sound string. If we do not have that, the data is bogus. */ if (6 + len_sound + 1 > len) { LOG(LOG_WARNING, "gtk-v2::Sound2Cmd", "sound length check: %i len: %i\n", len_sound, len); return; } len_source = data[6 + len_sound]; if (len_sound != 0) { sound = (char*) data + 6; data[6 + len_sound] = '\0'; } /* * The minimum size of data is 1 for each byte in the command (7) plus the * size of the sound string, and the size of the source string. */ if (6 + len_sound + 1 + len_source > len) { LOG(LOG_WARNING, "gtk-v2::Sound2Cmd", "source length check: %i len: %i\n", len_source, len); return; } /* * Though it looks like there is potential for writing a null off the end * of the buffer, there is always room for a null (see do_client()). */ if (len_source != 0) { source = (char*) data + 6 + len_sound + 1; data[6 + len_sound + 1 + len_source] = '\0'; } #if 1 LOG(LOG_INFO, "gtk-v2::Sound2Cmd", "Playing sound2 x=%hhd y=%hhd dir=%hhd volume=%hhd type=%hhd", x, y, dir, vol, type); LOG(LOG_INFO, "gtk-v2::Sound2Cmd", " len_sound=%hhd sound=%s", len_sound, sound); LOG(LOG_INFO, "gtk-v2::Sound2Cmd", " len_source=%hhd source=%s", len_source, source); #endif play_sound_effect(x, y, dir, vol, type, sound, source); #endif } /** * Parse the data contained by a music command coming from the server and * pass the name along to cfsndserv as a quoted string. * * @param data Data provided following the music command from the server * that hints what kind of music should play. NONE is an * indication that music should stop playing. * @param len Length of the string describing the music to play. */ void MusicCmd(const char *data, int len) { #ifndef WIN32 /** * Format of the music command received in data: * *
     * music {string}
     * 
*/ if (! use_config[CONFIG_SOUND]) return; /* * The client puts a null character at the end of the data. If one is not * there, ignore the command. */ if (data[len]) { LOG(LOG_ERROR, "gtk-v2::MusicCmd", "Music command buffer not null-terminated."); return; } /** * cfsndserv recognizes music commands by seeing the quoted string as the * first item on the command line. */ if ((fprintf(sound_pipe, "\"%s\"\n", data) <= 0) || (fflush(sound_pipe) != 0)) { LOG(LOG_ERROR, "gtk-v2::MusicCmd", "Cannot write sound pipe: %d", errno); use_config[CONFIG_SOUND] = 0; fclose(sound_pipe); sound_process = NULL; return; } #if 1 else LOG(LOG_INFO, "gtk-v2::MusicCmd", "\"%s\"", data); #endif #endif } crossfire-client-1.70.0/gtk-v2/src/account.c0000644000014500000120000015174111731277013015472 00000000000000const char * const rcsid_gtk2_account_c = "$Id: account.c 14486 2011-05-23 17:57:22Z ryo_saeba $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/account.c * Handles account login, creation, and character selection. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "client.h" #include "image.h" #include "main.h" #include "gtk2proto.h" #include "metaserver.h" static GtkWidget *add_character_window, *choose_char_window, *create_account_window, *login_window, *account_password_window; /* These are in the login_window */ static GtkWidget *button_login, *button_create_account, *button_go_metaserver, *button_exit_client, *entry_account_name, *entry_account_password, *label_account_login_status; /* These are in the create_account_window */ static GtkWidget *button_new_create_account, *button_new_cancel, *entry_new_account_name, *entry_new_account_password, *entry_new_confirm_password, *label_create_account_status; /* These are in the choose_character window */ static GtkWidget *button_play_character, *button_create_character, *button_add_character, *button_return_login, *button_account_password, *treeview_choose_character; /* These are in the new_character window */ static GtkWidget *entry_new_character_name, *new_character_window, *label_new_char_status, *button_create_new_char, *button_new_char_cancel; /* These are in the account_password window */ static GtkWidget *entry_account_password_current, *entry_account_password_new, *entry_account_password_confirm, *button_account_password_confirm, *button_account_password_cancel, *label_account_password_status; GtkListStore *character_store; /* create_char.c also uses this */ char account_password[256]; /* This enum just maps the columns in the list store to their position. */ enum {CHAR_IMAGE, CHAR_NAME, CHAR_CLASS, CHAR_RACE, CHAR_LEVEL, CHAR_PARTY, CHAR_MAP, CHAR_ICON}; #define CHAR_NUM_COLUMNS 8 /* These are in the add_character window */ static GtkWidget *button_do_add_character, *button_return_character_select, *entry_character_name, *entry_character_password, *label_add_status; GtkTextBuffer *textbuf_motd, *textbuf_news, *textbuf_rules_account, *textbuf_rules_char; /* These are used as offsets for num_text_views - we share the drawing code in * info.c if more textviews are added, note that NUM_TEXT_VIEWS in info.c * needs to be increased. */ #define TEXTVIEW_MOTD 0 #define TEXTVIEW_NEWS 1 #define TEXTVIEW_RULES_ACCOUNT 2 #define TEXTVIEW_RULES_CHAR 3 Info_Pane login_pane[4]; extern int num_text_views; static int has_init=0; /** * Hides all the login related windows. This is needed in case the client * loses the connection to the server (either through player going to * client/disconnect or network failure). get_metaserver() calls this, as * well as AddMeSuccess */ void hide_all_login_windows(void) { extern GtkWidget *treeview_look; if (has_init) { /* If we have not initialized, nothing to hide */ gtk_widget_hide(login_window); gtk_widget_hide(add_character_window); gtk_widget_hide(choose_char_window); gtk_widget_hide(create_account_window); gtk_widget_hide(new_character_window); gtk_widget_hide(account_password_window); create_character_window_hide(); /* create_char.c */ /* If the player has started playing (this function being called from * AddMeSuccess), we want to make sure that the extended command entry * widget is not activated - we want normal command entry. Where this * shows up is if the player was playing before and uses a savebed - * now the last thing activated is that entry widget. */ gtk_widget_grab_focus(GTK_WIDGET(treeview_look)); } } /** * Prevent delete_event closure and/or hiding of account windows. All account * system windows ignore delete events and remain visible unless the user * clicks an appropriate button. * * @param window Pointer to an account window that received a delete_event. * @param user_data Unused. */ gboolean on_window_delete_event(GtkWidget *window, gpointer *user_data) { return TRUE; } /***************************************************************************** * New character window functions *****************************************************************************/ /** * Pop up a dialog window with the error from the server. * Since both v1 and v2 character creation are supported, * either the new_character_window or the create_character_window * may be up, so we can not easily display an in window message - * a pop up is probably better, but it will also work no matter * what window is up. * * @param message * message - this comes from the server. */ void create_new_character_failure(char *message) { GtkWidget *dialog; dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK, "Error: %s", message); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } /** * */ static void create_new_character(void) { const char *name; uint8 buf[MAX_BUF]; SockList sl; SockList_Init(&sl, buf); name = gtk_entry_get_text(GTK_ENTRY(entry_new_character_name)); if (!name || *name == 0) { gtk_label_set_text(GTK_LABEL(label_new_char_status), "You must enter a character name."); return; } else { gtk_label_set_text(GTK_LABEL(label_new_char_status), ""); SockList_AddString(&sl, "createplayer "); SockList_AddChar(&sl, strlen(name)); SockList_AddString(&sl, name); SockList_AddChar(&sl, strlen(account_password)); SockList_AddString(&sl, account_password); SockList_Send(&sl, csocket.fd); } } /** * User hit the create character button. Get data, send to server. * @param button * @param user_data */ void on_button_create_new_char_clicked(GtkButton *button, gpointer user_data) { create_new_character(); } /** * User hit return in the new character name box. Like above, get data and * send to server. * @param entry * @param user_data */ void on_entry_new_character_name(GtkEntry *entry, gpointer user_data) { create_new_character(); } /** * User his hit the cancel button in the new character window, so hide the new * character window, show the choose character window. * @param button * @param user_data */ void on_button_new_char_cancel_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(new_character_window); gtk_widget_show(choose_char_window); } /** * Initializes the new character window. */ static void init_new_character_window(void) { GladeXML *xml_tree; new_character_window = glade_xml_get_widget(dialog_xml, "new_character_window"); gtk_window_set_transient_for( GTK_WINDOW(new_character_window), GTK_WINDOW(window_root)); xml_tree = glade_get_widget_tree(GTK_WIDGET(new_character_window)); button_create_new_char = glade_xml_get_widget(dialog_xml,"button_create_new_char"); button_new_char_cancel = glade_xml_get_widget(dialog_xml,"button_new_char_cancel"); entry_new_character_name = glade_xml_get_widget(dialog_xml,"entry_new_character_name"); label_new_char_status = glade_xml_get_widget(dialog_xml,"label_new_char_status"); g_signal_connect((gpointer) new_character_window, "delete_event", G_CALLBACK(on_window_delete_event), NULL); g_signal_connect((gpointer) button_create_new_char, "clicked", G_CALLBACK(on_button_create_new_char_clicked), NULL); g_signal_connect((gpointer) button_new_char_cancel, "clicked", G_CALLBACK(on_button_new_char_cancel_clicked), NULL); g_signal_connect((gpointer) entry_new_character_name, "activate", G_CALLBACK(on_entry_new_character_name), NULL); } /****************************************************************************** * add_character_window functions *****************************************************************************/ /** * Sends a request to the server add add the character to this account. * @param name * @param password * @param force */ static void add_character_to_account(const char *name, const char *password, int force) { SockList sl; uint8 buf[MAX_BUF]; if (!name || !password || *name == 0 || *password == 0) { gtk_label_set_text(GTK_LABEL(label_add_status), "You must enter both a name and password!"); } else { gtk_label_set_text(GTK_LABEL(label_add_status), ""); SockList_Init(&sl, buf); SockList_AddString(&sl, "accountaddplayer "); SockList_AddChar(&sl, force); SockList_AddChar(&sl, strlen(name)); SockList_AddString(&sl, name); SockList_AddChar(&sl, strlen(password)); SockList_AddString(&sl, password); SockList_Send(&sl, csocket.fd); } } /** * Handles a failure from the server - pretty basic - just throw up the * message and let the user try again. This is a response to the 'failure * accountaddplayer' command. Calling this account_add_character_failure may * be a little bit of a misnomer, but all the other routines in this area * refer to character, not player. * * @param message Message to display. Unlike other messages, the first word * of this message should be an integer, which denotes if using the 'force' * option would allow the user to override this. */ void account_add_character_failure(char *message) { char *cp; int retry; retry = atoi(message); cp = strchr(message,' '); if (cp) { cp++; } else cp=message; if (!retry) { gtk_label_set_text(GTK_LABEL(label_add_status), cp); } else { /* In this case, we can retry it and it should work if we set force. * So bring up a dialog, as the user what to do - if they enter yes, * we use force. If not, we clear the entry fields and just continue * onward. */ GtkWidget *dialog; int result; const char *name, *password; /* Bring up a dialog window */ dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s\n%s", cp, "Apply anyways?"); result = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); if (result == GTK_RESPONSE_YES ) { name = gtk_entry_get_text(GTK_ENTRY(entry_character_name)); password = gtk_entry_get_text(GTK_ENTRY(entry_character_password)); add_character_to_account(name, password, 1); } else { gtk_entry_set_text(GTK_ENTRY(entry_character_name), ""); gtk_entry_set_text(GTK_ENTRY(entry_character_password), ""); gtk_widget_grab_focus(entry_character_name); } } } /** * User has hit the add character button. Let add_character_to_account() * do all the work. * * @param button * @param user_data */ void on_button_do_add_character_clicked(GtkButton *button, gpointer user_data) { add_character_to_account( gtk_entry_get_text(GTK_ENTRY(entry_character_name)), gtk_entry_get_text(GTK_ENTRY(entry_character_password)), 0); } /** * User has hit the return to character selection button. Pretty simple - * just hide this window, activate the other window. * * @param button * @param user_data */ void on_button_return_character_select_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(add_character_window); gtk_widget_show(choose_char_window); } /** * User has hit return in either name or password box. If both boxes have non * empty data, process request. Otherwise, either stay in same box if this * box is empty, or move to the other box. * * @param entry Entry widget which generated this callback. * @param user_data */ void on_entry_character(GtkEntry *entry, gpointer user_data) { const char *name, *password; name = gtk_entry_get_text(GTK_ENTRY(entry_character_name)); password = gtk_entry_get_text(GTK_ENTRY(entry_character_password)); if (name && name[0] && password && password[0]) { add_character_to_account(name, password, 0); } else { const char *cp; /* First case - this widget is empty - do nothing */ cp = gtk_entry_get_text(entry); if (!cp || !cp[0]) return; /* In this case, this widget is not empty - means the other one is. */ if (entry == GTK_ENTRY(entry_character_name)) gtk_widget_grab_focus(entry_character_password); else gtk_widget_grab_focus(entry_character_name); } } /** * */ static void init_add_character_window(void) { GladeXML *xml_tree; add_character_window = glade_xml_get_widget(dialog_xml, "add_character_window"); gtk_window_set_transient_for( GTK_WINDOW(add_character_window), GTK_WINDOW(window_root)); xml_tree = glade_get_widget_tree(GTK_WIDGET(add_character_window)); button_do_add_character = glade_xml_get_widget(dialog_xml,"button_do_add_character"); button_return_character_select = glade_xml_get_widget(dialog_xml,"button_return_character_select"); entry_character_name = glade_xml_get_widget(dialog_xml,"entry_character_name"); entry_character_password = glade_xml_get_widget(dialog_xml,"entry_character_password"); label_add_status = glade_xml_get_widget(dialog_xml,"label_add_status"); g_signal_connect((gpointer) add_character_window, "delete_event", G_CALLBACK(on_window_delete_event), NULL); g_signal_connect((gpointer) button_do_add_character, "clicked", G_CALLBACK(on_button_do_add_character_clicked), NULL); g_signal_connect((gpointer) button_return_character_select, "clicked", G_CALLBACK(on_button_return_character_select_clicked), NULL); g_signal_connect((gpointer) entry_character_name, "activate", G_CALLBACK(on_entry_character), NULL); g_signal_connect((gpointer) entry_character_password, "activate", G_CALLBACK(on_entry_character), NULL); } /***************************************************************************** * choose_char_window ****************************************************************************/ /** * Called when we get the accountplayers command from the server (indirectly * via AccountPlayersCmd). This tells us to wipe any data from the treeview, * but also hide any other windows and make the choose_character_window * visible. */ void choose_character_init(void) { gtk_widget_hide(login_window); gtk_widget_hide(add_character_window); gtk_widget_hide(create_account_window); gtk_widget_show(choose_char_window); /* Store any old/stale entries */ gtk_list_store_clear(character_store); } /** * Basic little function - this is used because * we make the choose_char_window widget private to this * file, but the create_char.c file will need to show * this if the user decides to abandon creation of a new * character. */ void choose_char_window_show() { gtk_widget_show(choose_char_window); } /** * User has done necessary steps to play a character. * @param name */ static void play_character(const char *name) { SockList sl; uint8 buf[MAX_BUF]; SockList_Init(&sl, buf); SockList_AddString(&sl, "accountplay "); SockList_AddString(&sl, name); SockList_Send(&sl, csocket.fd); } /** * User has hit the play character button. Grab the selected entry, if there * is one. * @param button * @param user_data */ void on_button_play_character_clicked(GtkButton *button, gpointer user_data) { GtkTreeSelection *selected; GtkTreeModel *model; GtkTreeIter iter; char *name; selected = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview_choose_character)); if (gtk_tree_selection_get_selected(selected, &model, &iter)) { gtk_tree_model_get(model, &iter, CHAR_NAME, &name, -1); play_character(name); } } /** * * @param button * @param user_data */ void on_button_create_character_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(choose_char_window); if (serverloginmethod >= 2) { create_character_window_show(); } else { gtk_widget_show(new_character_window); gtk_entry_set_text(GTK_ENTRY(entry_new_character_name), ""); } } /** * User has hit the add character button, so hide this window, show the add * character window. * @param button * @param user_data */ void on_button_add_character_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(choose_char_window); gtk_widget_show(add_character_window); gtk_entry_set_text(GTK_ENTRY(entry_character_name), ""); gtk_entry_set_text(GTK_ENTRY(entry_character_password), ""); gtk_widget_grab_focus(entry_character_name); } /** * User has hit the return to login window, so hide this window, show the * account login window. * @param button * @param user_data */ void on_button_return_login_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(choose_char_window); gtk_widget_show(login_window); } /** * User has hit the change account password, so hide this window, show the * account password change dialog. * @param button * @param user_data */ void on_button_account_password_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(choose_char_window); gtk_widget_show(account_password_window); /* reset previous values */ gtk_entry_set_text(GTK_ENTRY(entry_account_password_current), ""); gtk_entry_set_text(GTK_ENTRY(entry_account_password_new), ""); gtk_entry_set_text(GTK_ENTRY(entry_account_password_confirm), ""); } /** * This gets data and adds it to the list store. This is called from * AccountPlayersCmd and data is from the accountplayers protocol command. * The parameters are data to add to the list store. * * @param name * @param class * @param race * @param face * @param party * @param map * @param level * @param faceno */ void update_character_choose(const char *name, const char *class, const char *race, const char *face, const char *party, const char *map, int level, int faceno) { GtkTreeIter iter; gtk_list_store_append(character_store, &iter); /* If this pixmap matches pixmap[0], it means we are caching images and * this image hasn't been set up. It looks better in this case to just * leave that area of the window blank vs drawing a question mark there. */ if (pixmaps[faceno] == pixmaps[0]) { gtk_list_store_set(character_store, &iter, CHAR_NAME, name, CHAR_CLASS, class, CHAR_RACE, race, CHAR_IMAGE, face, CHAR_PARTY, party, CHAR_MAP, map, CHAR_LEVEL, level, -1); } else { gtk_list_store_set(character_store, &iter, CHAR_ICON, pixmaps[faceno]->icon_image, CHAR_NAME, name, CHAR_CLASS, class, CHAR_RACE, race, CHAR_IMAGE, face, CHAR_PARTY, party, CHAR_MAP, map, CHAR_LEVEL, level, -1); } } /** * User has double clicked one of the character rows, so use that character as * the one to play. * * @param treeview Treeview which activated that (should always be * treeview_choose_character) * @param path Mechanism to get to selected entry * @param column Activated column? * @param user_data Not set */ void on_treeview_choose_character_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model; char *name; model = gtk_tree_view_get_model(treeview); if (gtk_tree_model_get_iter(model, &iter, path)) { gtk_tree_model_get(model, &iter, CHAR_NAME, &name, -1); if (!name) { LOG(LOG_ERROR,"account.c::on_treeview_choose_character_activated", "unable to get character name"); return; } play_character(name); } } /** * */ static void init_choose_char_window(void) { GladeXML *xml_tree; GtkTextIter end; GtkCellRenderer *renderer; GtkTreeViewColumn *column; choose_char_window = glade_xml_get_widget(dialog_xml, "choose_character_window"); gtk_window_set_transient_for( GTK_WINDOW(choose_char_window), GTK_WINDOW(window_root)); xml_tree = glade_get_widget_tree(GTK_WIDGET(choose_char_window)); button_play_character = glade_xml_get_widget(dialog_xml,"button_play_character"); button_create_character = glade_xml_get_widget(dialog_xml,"button_create_character"); button_add_character = glade_xml_get_widget(dialog_xml,"button_add_character"); button_return_login = glade_xml_get_widget(dialog_xml,"button_return_login"); button_account_password = glade_xml_get_widget(dialog_xml,"button_account_password"); login_pane[TEXTVIEW_RULES_CHAR].textview = glade_xml_get_widget(dialog_xml,"textview_rules_char"); textbuf_rules_char = gtk_text_view_get_buffer( GTK_TEXT_VIEW(login_pane[TEXTVIEW_RULES_CHAR].textview)); treeview_choose_character = glade_xml_get_widget(dialog_xml,"treeview_choose_character"); add_tags_to_textbuffer( &login_pane[TEXTVIEW_RULES_CHAR], textbuf_rules_char); add_style_to_textbuffer(&login_pane[TEXTVIEW_RULES_CHAR], NULL); gtk_text_buffer_get_end_iter( login_pane[TEXTVIEW_RULES_CHAR].textbuffer, &end); login_pane[TEXTVIEW_RULES_CHAR].textmark = gtk_text_buffer_create_mark( login_pane[TEXTVIEW_RULES_CHAR].textbuffer, NULL, &end, FALSE); g_signal_connect((gpointer) choose_char_window, "delete_event", G_CALLBACK(on_window_delete_event), NULL); g_signal_connect((gpointer) button_play_character, "clicked", G_CALLBACK(on_button_play_character_clicked), NULL); g_signal_connect((gpointer) button_create_character, "clicked", G_CALLBACK(on_button_create_character_clicked), NULL); g_signal_connect((gpointer) button_add_character, "clicked", G_CALLBACK(on_button_add_character_clicked), NULL); g_signal_connect((gpointer) button_return_login, "clicked", G_CALLBACK(on_button_return_login_clicked), NULL); g_signal_connect((gpointer) button_account_password, "clicked", G_CALLBACK(on_button_account_password_clicked), NULL); g_signal_connect((gpointer) treeview_choose_character, "row_activated", G_CALLBACK(on_treeview_choose_character_activated), NULL); character_store = gtk_list_store_new(CHAR_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT); gtk_tree_view_set_model(GTK_TREE_VIEW(treeview_choose_character), GTK_TREE_MODEL(character_store)); renderer = gtk_cell_renderer_pixbuf_new(); column = gtk_tree_view_column_new_with_attributes("?", renderer, "pixbuf", CHAR_ICON, NULL); gtk_tree_view_column_set_min_width(column, image_size); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_choose_character), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Character Name", renderer, "text", CHAR_NAME, NULL); gtk_tree_view_column_set_sort_column_id(column, CHAR_NAME); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_choose_character), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Class", renderer, "text", CHAR_CLASS, NULL); gtk_tree_view_column_set_sort_column_id(column, CHAR_CLASS); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_choose_character), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Race", renderer, "text", CHAR_RACE, NULL); gtk_tree_view_column_set_sort_column_id(column, CHAR_RACE); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_choose_character), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Level", renderer, "text", CHAR_LEVEL, NULL); gtk_tree_view_column_set_sort_column_id(column, CHAR_LEVEL); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_choose_character), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Party", renderer, "text", CHAR_PARTY, NULL); gtk_tree_view_column_set_sort_column_id(column, CHAR_PARTY); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_choose_character), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Map", renderer, "text", CHAR_MAP, NULL); gtk_tree_view_column_set_sort_column_id(column, CHAR_MAP); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_choose_character), column); } /****************************************************************************** * create_account_window ******************************************************************************/ /** * Handles a failure from the server - pretty basic - just throw up the * message and let the user try again. * @param message */ void account_creation_failure(char *message) { gtk_label_set_text(GTK_LABEL(label_create_account_status), message); } /** * This does sanity checking of the passed in data, and if all is good, sends * the request to the server to create an account. If all the data isn't * good, it puts up an error message. In this routine, none of the entries * should be NULL - the caller should verify that before callin * do_account_create(); * * @param name Desired account name - must not be NULL. * @param p1 First password - must not be NULL * @param p2 Second (confirmed) password. This routine checks that p1 & p2 * are the same, and if not, puts up an error. p2 must not be NULL */ static void do_account_create(const char *name, const char *p1, const char *p2) { SockList sl; uint8 buf[MAX_BUF]; if (strcmp(p1, p2)) { gtk_label_set_text(GTK_LABEL(label_create_account_status), "The passwords you entered do not match!"); return; } else { gtk_label_set_text(GTK_LABEL(label_create_account_status), ""); SockList_Init(&sl, buf); SockList_AddString(&sl, "accountnew "); SockList_AddChar(&sl, strlen(name)); SockList_AddString(&sl, name); SockList_AddChar(&sl, strlen(p1)); SockList_AddString(&sl, p1); SockList_Send(&sl, csocket.fd); /* Store password away for new character creation */ snprintf(account_password, sizeof(account_password), "%s", p1); } } /** * User clicked on the create account button. In this case, we just process * the data and call do_account_create(); * @param button * @param user_data */ void on_button_new_create_account_clicked(GtkButton *button, gpointer user_data) { const char *password1, *password2, *name; password1 = gtk_entry_get_text(GTK_ENTRY(entry_new_account_password)); password2 = gtk_entry_get_text(GTK_ENTRY(entry_new_confirm_password)); name = gtk_entry_get_text(GTK_ENTRY(entry_new_account_name)); if (name && name[0] && password1 && password1[0] && password2 && password2[0]) { do_account_create(name, password1, password2); } else { gtk_label_set_text(GTK_LABEL(label_create_account_status), "You must fill in all three entries!"); } } /** * * @param button * @param user_data */ void on_button_new_cancel_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(create_account_window); gtk_widget_show(login_window); } /** * This handles cases where the user hits return in one of the entry boxes. * We use the same callback for all 3 entry boxes, since the processing is * basically the same - if there is valid data in all of them, we try to * create an account - otherwise, we move to the next box. * * @param entry Entry box used to figure out what the next box is. * @param user_data Not used. */ void on_entry_new_account(GtkEntry *entry, gpointer user_data) { const char *password1, *password2, *name, *cp; password1 = gtk_entry_get_text(GTK_ENTRY(entry_new_account_password)); password2 = gtk_entry_get_text(GTK_ENTRY(entry_new_confirm_password)); name = gtk_entry_get_text(GTK_ENTRY(entry_new_account_name)); if (name && name[0] && password1 && password1[0] && password2 && password2[0]) { do_account_create(name, password1, password2); } else { /* In this case, one, or more, of the fields is blank. If there were * more than 3 widgets, I might but them into an array to make cycling * easier */ /* First case - if the currently active one is blank, no reason to * move onward. */ cp = gtk_entry_get_text(entry); if (!cp || !cp[0]) return; /* I'm not sure if it would make more sense to advance to the first * NULL entry - but in that case, the pointer may hop in non intuitive * ways - in this case, the user may just need to hit return a few * times - MSW 2010/03/29 */ if (entry == GTK_ENTRY(entry_new_account_name)) gtk_widget_grab_focus(entry_new_account_password); else if (entry == GTK_ENTRY(entry_new_account_password)) gtk_widget_grab_focus(entry_new_confirm_password); else if (entry == GTK_ENTRY(entry_new_confirm_password)) gtk_widget_grab_focus(entry_new_account_name); } } /** * This initializes the create account window and sets up the various * callbacks. */ static void init_create_account_window(void) { GladeXML *xml_tree; GtkTextIter end; create_account_window = glade_xml_get_widget(dialog_xml, "create_account_window"); gtk_window_set_transient_for( GTK_WINDOW(create_account_window), GTK_WINDOW(window_root)); xml_tree = glade_get_widget_tree(GTK_WIDGET(create_account_window)); button_new_create_account = glade_xml_get_widget(dialog_xml,"button_new_create_account"); button_new_cancel = glade_xml_get_widget(dialog_xml,"button_new_cancel"); login_pane[TEXTVIEW_RULES_ACCOUNT].textview = glade_xml_get_widget(dialog_xml,"textview_rules_account"); textbuf_rules_account = gtk_text_view_get_buffer( GTK_TEXT_VIEW(login_pane[TEXTVIEW_RULES_ACCOUNT].textview )); entry_new_account_name = glade_xml_get_widget(dialog_xml,"entry_new_account_name"); entry_new_account_password = glade_xml_get_widget(dialog_xml,"entry_new_account_password"); entry_new_confirm_password = glade_xml_get_widget(dialog_xml,"entry_new_confirm_password"); label_create_account_status = glade_xml_get_widget(dialog_xml,"label_create_account_status"); add_tags_to_textbuffer( &login_pane[TEXTVIEW_RULES_ACCOUNT], textbuf_rules_account); add_style_to_textbuffer(&login_pane[TEXTVIEW_RULES_ACCOUNT], NULL); gtk_text_buffer_get_end_iter( login_pane[TEXTVIEW_RULES_ACCOUNT].textbuffer, &end); login_pane[TEXTVIEW_RULES_ACCOUNT].textmark = gtk_text_buffer_create_mark( login_pane[TEXTVIEW_RULES_ACCOUNT].textbuffer, NULL, &end, FALSE); g_signal_connect((gpointer) create_account_window, "delete_event", G_CALLBACK(on_window_delete_event), NULL); g_signal_connect((gpointer) button_new_create_account, "clicked", G_CALLBACK(on_button_new_create_account_clicked), NULL); g_signal_connect((gpointer) button_new_cancel, "clicked", G_CALLBACK(on_button_new_cancel_clicked), NULL); g_signal_connect((gpointer) entry_new_account_name, "activate", G_CALLBACK(on_entry_new_account), NULL); g_signal_connect((gpointer) entry_new_account_password, "activate", G_CALLBACK(on_entry_new_account), NULL); g_signal_connect((gpointer) entry_new_confirm_password, "activate", G_CALLBACK(on_entry_new_account), NULL); } /***************************************************************************** * login_window *****************************************************************************/ /** * Handles a failure from the server - pretty basic - just throw up the * message and let the user try again. * @param message */ void account_login_failure(char *message) { gtk_label_set_text(GTK_LABEL(label_account_login_status), message); } /** * User hit the create account button. So we need to hide the login window * and bring up the create login window. * @param button * @param user_data */ void on_button_create_account_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(login_window); gtk_label_set_text(GTK_LABEL(label_create_account_status), ""); gtk_entry_set_text(GTK_ENTRY(entry_new_account_name), ""); gtk_entry_set_text(GTK_ENTRY(entry_new_account_password), ""); gtk_entry_set_text(GTK_ENTRY(entry_new_confirm_password), ""); gtk_widget_show(create_account_window); } /** * User hit the go to metaserver button. Need to disconnect from The server, * and by clearing the csocket_fd, the main loop routine will bring up the * metaserver window. * @param button * @param user_data */ void on_button_go_metaserver_clicked(GtkButton *button, gpointer user_data) { close_server_connection(); if (csocket_fd) { gdk_input_remove(csocket_fd); csocket_fd=0; gtk_main_quit(); } } /** * User hit the exit client button. Pretty simple in this case. * @param button * @param user_data */ void on_button_exit_client_clicked(GtkButton *button, gpointer user_data) { #ifdef WIN32 script_killall(); #endif exit(0); } /** * This does the work of doing the login - mostly it just sends the request to * the server. However, this might be called from either hitting the login * button or entering data in name/password and hitting return. * @param name * @param password */ static void do_account_login(const char *name, const char *password) { SockList sl; uint8 buf[MAX_BUF]; if (!name || !password || *name == 0 || *password == 0) { gtk_label_set_text(GTK_LABEL(label_account_login_status), "You must enter both a name and password!"); } else { gtk_label_set_text(GTK_LABEL(label_account_login_status), ""); SockList_Init(&sl, buf); SockList_AddString(&sl, "accountlogin "); SockList_AddChar(&sl, strlen(name)); SockList_AddString(&sl, name); SockList_AddChar(&sl, strlen(password)); SockList_AddString(&sl, password); SockList_Send(&sl, csocket.fd); /* Store password away for new character creation */ snprintf(account_password, sizeof(account_password), "%s", password); } } /** * User hit the login button - just call do_account_login() * @param button * @param user_data */ void on_button_login_clicked(GtkButton *button, gpointer user_data) { do_account_login(gtk_entry_get_text(GTK_ENTRY(entry_account_name)), gtk_entry_get_text(GTK_ENTRY(entry_account_password))); } /** * User hit return in the name entry box. If there is data in the password * box, attempt login, otherwise make the password box active. * @param entry * @param user_data */ void on_entry_account_name_activate(GtkEntry *entry, gpointer user_data) { const char *password; password = gtk_entry_get_text(GTK_ENTRY(entry_account_password)); if (!password || *password == 0) { gtk_widget_grab_focus(entry_account_password); } else { do_account_login(gtk_entry_get_text(GTK_ENTRY(entry_account_name)), password); } } /** * user hit return in the password box. Like above, if name data, do login, * otherwise make the name box active. * @param entry * @param user_data */ void on_entry_account_password_activate(GtkEntry *entry, gpointer user_data) { const char *name; name = gtk_entry_get_text(GTK_ENTRY(entry_account_name)); if (!name || *name == 0) { gtk_widget_grab_focus(entry_account_name); } else { do_account_login(name, gtk_entry_get_text(GTK_ENTRY(entry_account_password))); } } /** * Sets up all the widget pointers, as well as setting up the callbacks for * the login windows widgets. */ static void init_login_window(void) { GladeXML *xml_tree; GtkTextIter end; login_window = glade_xml_get_widget(dialog_xml, "login_window"); if (!login_window) { error_dialog("Out of date dialog.glade", "Did you run 'make install'?"); exit(1); } gtk_window_set_transient_for( GTK_WINDOW(login_window), GTK_WINDOW(window_root)); xml_tree = glade_get_widget_tree(GTK_WIDGET(login_window)); button_login = glade_xml_get_widget(dialog_xml,"button_login"); button_create_account = glade_xml_get_widget(dialog_xml,"button_create_account"); button_go_metaserver = glade_xml_get_widget(dialog_xml,"button_go_metaserver"); button_exit_client = glade_xml_get_widget(dialog_xml,"button_exit_client"); label_account_login_status = glade_xml_get_widget(dialog_xml,"label_account_login_status"); login_pane[TEXTVIEW_MOTD].textview = glade_xml_get_widget(dialog_xml,"textview_motd"); textbuf_motd = gtk_text_view_get_buffer( GTK_TEXT_VIEW(login_pane[TEXTVIEW_MOTD].textview)); add_tags_to_textbuffer(&login_pane[TEXTVIEW_MOTD], textbuf_motd); add_style_to_textbuffer(&login_pane[TEXTVIEW_MOTD], NULL); gtk_text_buffer_get_end_iter(login_pane[TEXTVIEW_MOTD].textbuffer, &end); login_pane[TEXTVIEW_MOTD].textmark = gtk_text_buffer_create_mark( login_pane[TEXTVIEW_MOTD].textbuffer, NULL, &end, FALSE); login_pane[TEXTVIEW_NEWS].textview = glade_xml_get_widget(dialog_xml,"textview_news"); textbuf_news = gtk_text_view_get_buffer( GTK_TEXT_VIEW(login_pane[TEXTVIEW_NEWS].textview)); add_tags_to_textbuffer(&login_pane[TEXTVIEW_NEWS], textbuf_news); add_style_to_textbuffer(&login_pane[TEXTVIEW_NEWS], NULL); gtk_text_buffer_get_end_iter(login_pane[TEXTVIEW_NEWS].textbuffer, &end); login_pane[TEXTVIEW_NEWS].textmark = gtk_text_buffer_create_mark( login_pane[TEXTVIEW_NEWS].textbuffer, NULL, &end, FALSE); entry_account_name = glade_xml_get_widget(dialog_xml,"entry_account_name"); entry_account_password = glade_xml_get_widget(dialog_xml,"entry_account_password"); g_signal_connect((gpointer) login_window, "delete_event", G_CALLBACK(on_window_delete_event), NULL); g_signal_connect((gpointer) entry_account_name, "activate", G_CALLBACK(on_entry_account_name_activate), NULL); g_signal_connect((gpointer) entry_account_password, "activate", G_CALLBACK(on_entry_account_password_activate), NULL); g_signal_connect((gpointer) button_login, "clicked", G_CALLBACK(on_button_login_clicked), NULL); g_signal_connect((gpointer) button_create_account, "clicked", G_CALLBACK(on_button_create_account_clicked), NULL); g_signal_connect((gpointer) button_go_metaserver, "clicked", G_CALLBACK(on_button_go_metaserver_clicked), NULL); g_signal_connect((gpointer) button_exit_client, "clicked", G_CALLBACK(on_button_exit_client_clicked), NULL); } /***************************************************************************** * Account password change ****************************************************************************/ /** * This does sanity checking of the passed in data, and if all is good, sends * the request to the server to change an account password. If all the data isn't * good, it puts up an error message. In this routine, none of the entries * should be NULL - the caller should verify that before callin * do_account_change(); * * @param old Current password. * @param p1 First password - must not be NULL * @param p2 Second (confirmed) password. This routine checks that p1 & p2 * are the same, and if not, puts up an error. p2 must not be NULL */ static void do_account_change(const char *old, const char *p1, const char *p2) { SockList sl; uint8 buf[MAX_BUF]; if (strcmp(p1, p2)) { gtk_label_set_text(GTK_LABEL(label_account_password_status), "The passwords you entered do not match!"); return; } else { gtk_label_set_text(GTK_LABEL(label_account_password_status), ""); SockList_Init(&sl, buf); SockList_AddString(&sl, "accountpw "); SockList_AddChar(&sl, strlen(old)); SockList_AddString(&sl, old); SockList_AddChar(&sl, strlen(p1)); SockList_AddString(&sl, p1); SockList_Send(&sl, csocket.fd); /* Store password away for new character creation */ snprintf(account_password, sizeof(account_password), "%s", p1); } } /** * User has hit the cancel account password, so hide this window, show the * account main window. * @param button * @param user_data */ void on_button_account_password_cancel_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(account_password_window); gtk_widget_show(choose_char_window); } /** * User has hit the validate account password, so handle that. * @param button * @param user_data */ void on_button_account_password_confirm_clicked(GtkButton *button, gpointer user_data) { do_account_change(gtk_entry_get_text(GTK_ENTRY(entry_account_password_current)), gtk_entry_get_text(GTK_ENTRY(entry_account_password_new)), gtk_entry_get_text(GTK_ENTRY(entry_account_password_confirm))); } /** * This handles cases where the user hits return in one of the entry boxes. * We use the same callback for all 3 entry boxes, since the processing is * basically the same - if there is valid data in all of them, we try to * create an account - otherwise, we move to the next box. * * @param entry Entry box used to figure out what the next box is. * @param user_data Not used. */ void on_entry_account_password(GtkEntry *entry, gpointer user_data) { const char *old, *password1, *password2, *cp; old = gtk_entry_get_text(GTK_ENTRY(entry_account_password_current)); password1 = gtk_entry_get_text(GTK_ENTRY(entry_account_password_new)); password2 = gtk_entry_get_text(GTK_ENTRY(entry_account_password_confirm)); if (old && old[0] && password1 && password1[0] && password2 && password2[0]) { do_account_change(old, password1, password2); } else { /* In this case, one, or more, of the fields is blank. If there were * more than 3 widgets, I might but them into an array to make cycling * easier */ /* First case - if the currently active one is blank, no reason to * move onward. */ cp = gtk_entry_get_text(entry); if (!cp || !cp[0]) return; if (entry == GTK_ENTRY(entry_account_password_current)) gtk_widget_grab_focus(entry_account_password_new); else if (entry == GTK_ENTRY(entry_account_password_new)) gtk_widget_grab_focus(entry_account_password_confirm); else if (entry == GTK_ENTRY(entry_account_password_confirm)) gtk_widget_grab_focus(entry_account_password_current); } } void account_change_password_failure(char *message) { gtk_label_set_text(GTK_LABEL(label_account_password_status), message); } /** * This initializes the change account password window and sets up the various * callbacks. */ static void init_account_password_window(void) { GladeXML *xml_tree; GtkTextIter end; account_password_window = glade_xml_get_widget(dialog_xml, "account_password_window"); gtk_window_set_transient_for( GTK_WINDOW(account_password_window), GTK_WINDOW(window_root)); xml_tree = glade_get_widget_tree(GTK_WIDGET(account_password_window)); button_account_password_confirm = glade_xml_get_widget(dialog_xml,"button_account_password_confirm"); button_account_password_cancel = glade_xml_get_widget(dialog_xml,"button_account_password_cancel"); entry_account_password_current = glade_xml_get_widget(dialog_xml,"entry_account_password_current"); entry_account_password_new = glade_xml_get_widget(dialog_xml,"entry_account_password_new"); entry_account_password_confirm = glade_xml_get_widget(dialog_xml,"entry_account_password_confirm"); label_account_password_status = glade_xml_get_widget(dialog_xml,"label_account_password_status"); g_signal_connect((gpointer) account_password_window, "delete_event", G_CALLBACK(on_window_delete_event), NULL); g_signal_connect((gpointer) button_account_password_confirm, "clicked", G_CALLBACK(on_button_account_password_confirm_clicked), NULL); g_signal_connect((gpointer) button_account_password_cancel, "clicked", G_CALLBACK(on_button_account_password_cancel_clicked), NULL); g_signal_connect((gpointer) entry_account_password_current, "activate", G_CALLBACK(on_entry_account_password), NULL); g_signal_connect((gpointer) entry_account_password_new, "activate", G_CALLBACK(on_entry_account_password), NULL); g_signal_connect((gpointer) entry_account_password_confirm, "activate", G_CALLBACK(on_entry_account_password), NULL); } /***************************************************************************** * Common/generic functions ****************************************************************************/ /** * This is called from ReplyInfoCmd when it gets a response from * news/motd/rules. It is very possible that the window will get displayed * before we got a reply response, so this tells the client to update it. * *@param type What data just got updated - text string of motd/news/rules */ void update_login_info(int type) { if (!has_init) return; /* In all cases, we clear the buffer, and if we have data, then set it to * that data. This routine could be smarter an */ if (type == INFO_NEWS) { gtk_text_buffer_set_text(textbuf_news, "", 0); if (news) { /* the format of the news entry is special - there are a series of * %entries, and they are in reverse older (newest last) we want * to get rid of the %, make them more visible (convert them to * bold) and reverse the order. */ char *mynews, *cp, *el, big_buf[BIG_BUF], *cp1; mynews = strdup(news); /* We basically work from the end of the string going towards the * start looking for % characters. If we find one, we have to * make sure it is at the start of the line or start of the buffer */ for (cp = mynews + strlen(mynews); cp > mynews; cp--) { if (*cp == '%' && (*(cp-1) == '\n' || cp == mynews)) { /* Find the end of the line */ el = strchr(cp, '\n'); /* null out the newline, put el one char beyond it */ if (el) { *el=0; el++; } /* There isn't a clear standard - % news may be valid, as * might be %news. If % news is used, it looks better to * get rid of that leading space. */ cp1 = cp+1; while (isspace(*cp1)) cp1++; /* since we've null out the newline, this snprintf will * only get the % line and that is it. Mark it up */ snprintf(big_buf, BIG_BUF, "[b]%s[/b]", cp1); add_marked_text_to_pane(&login_pane[TEXTVIEW_NEWS], big_buf, 0, 0, 0); /* Now we draw the text that goes with it, if it exists */ if (el) add_marked_text_to_pane(&login_pane[TEXTVIEW_NEWS], el, 0, 0, 0); /* Now we wipe the % out. In this way, the news buffer is * shorter, so when it draws the ext, there will just be * that between the % and the one we just wiped out. */ *cp = 0; } } /* If there are remnants left over, or perhaps the news file isn't * formatted with % headers, display what we have got. */ if (*mynews != 0) add_marked_text_to_pane(&login_pane[TEXTVIEW_NEWS], mynews, 0, 0, 0); } } else if (type == INFO_MOTD) { gtk_text_buffer_set_text(textbuf_motd, "", 0); if (motd) add_marked_text_to_pane(&login_pane[TEXTVIEW_MOTD], motd, 0, 0, 0); } else if (type == INFO_RULES) { gtk_text_buffer_set_text(textbuf_rules_account, "", 0); gtk_text_buffer_set_text(textbuf_rules_char, "", 0); if (rules) { add_marked_text_to_pane(&login_pane[TEXTVIEW_RULES_ACCOUNT], rules, 0, 0, 0); add_marked_text_to_pane(&login_pane[TEXTVIEW_RULES_CHAR], rules, 0, 0, 0); } } } /** * Starts the login process. If not already done, gets widgets, sets up * callboacks, etc. This is at the end of the file so all the callbacks are * defined before this function - in that way, we do not need forward * declarations. This is called from SetupCmd in common/commands.c * * @param method Login method that the server suppots. */ void start_login(int method) { /* Store this away - if method is only 1, we can not do smart character * creation. */ serverloginmethod = method; if (!has_init) { /* Since there are 4 windows associated with account and character * login, to make life a little easier, each section here does all the * work for one window, so it is easier to see that everything for a * window is done - don't need to hunt through what would otherwise be * a long routine looking for entries. */ init_login_window(); init_add_character_window(); init_choose_char_window(); init_create_account_window(); init_new_character_window(); init_account_password_window(); has_init=1; /* In case we have gotten news/motd/rules before getting here, update * it now. */ update_login_info(INFO_NEWS); update_login_info(INFO_RULES); update_login_info(INFO_MOTD); } gtk_entry_set_text(GTK_ENTRY(entry_account_name), ""); gtk_entry_set_text(GTK_ENTRY(entry_account_password), ""); /* We set focus to account name - this makes the most sense if user is * logging in again - it is possible that the password is active, but both * fields are blank, which is not what is expected. */ gtk_widget_grab_focus(entry_account_name); gtk_widget_show(login_window); } crossfire-client-1.70.0/gtk-v2/src/info.h0000644000014500000120000000411311731277013014764 00000000000000/* * char *rcsid_gtk2_info_h = * "$Id: info.h 12878 2010-04-09 09:27:27Z kbulgrien $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ #ifndef INFO_H #define INFO_H /** * @file info.h * This file is really here to declare the Info_Pane structure. * the account based login code also uses info panes, so it * needs to be declared in a place where both files can access it. */ #include "shared/newclient.h" /** * @{ * @name GTK V2 Font Style Definitions. * Font style support definitions for the info window. * Font style defines are indices into the font_style_names[] array. * The actual fonts that they are bound to are set up in the style file. */ #define FONT_NORMAL 0 #define FONT_ARCANE 1 #define FONT_STRANGE 2 #define FONT_FIXED 3 #define FONT_HAND 4 #define NUM_FONTS 5 typedef struct Info_Pane { GtkWidget *textview; GtkWidget *scrolled_window; GtkTextBuffer *textbuffer; GtkTextMark *textmark; GtkAdjustment *adjustment; GtkTextTag *color_tags[NUM_COLORS]; GtkTextTag *font_tags[NUM_FONTS]; GtkTextTag *bold_tag, *italic_tag, *underline_tag, *default_tag; GtkTextTag **msg_type_tags[MSG_TYPE_LAST]; } Info_Pane; #endif crossfire-client-1.70.0/gtk-v2/src/image.c0000644000014500000120000005030311731277013015110 00000000000000const char * const rcsid_gtk2_image_c = "$Id: image.c 12987 2010-04-27 03:50:58Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2008,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/image.c * Contains highlevel image related functions and mostly deals with the image * caching, processing the image commands from the server, etc. It is * gtk-specific as it returns gtk pixmaps. */ #include #include #include #ifndef WIN32 #include #endif #include /* Pick up the gtk headers we need */ #include #include #ifndef WIN32 #include #else #include #endif #include #ifdef HAVE_SDL #include #include #endif #include "client-types.h" #include "client.h" #include "image.h" #include "main.h" #include "mapdata.h" #include "gtk2proto.h" extern GtkWidget *window_root; /**< In main.c */ int image_size=DEFAULT_IMAGE_SIZE; struct { char *name; uint32 checksum; uint8 *png_data; uint32 width, height; } private_cache[MAXPIXMAPNUM]; #define BPP 4 PixmapInfo *pixmaps[MAXPIXMAPNUM]; int last_face_num=0; /* Do we have new images to display? */ int have_new_image=0; /* * this is used to rescale big images that will be drawn in the inventory/look * lists. What the code further below basically does is figure out how big the * object is (in squares), and this looks at the icon_rescale_factor to figure * what scale factor it gives. Not that the icon_rescale_factor values are * passed directly to the rescale routines. These represent percentages - so * even taking into account that the values diminish as the table grows, they * will still appear larger if the location in the table times the factor is * greater than 100. We find the largest dimension that the image has. The * values in the comment is the effective scaling compared to the base image * size that this big image will appear as. Using a table makes it easier to * adjust the values so things look right. */ #define MAX_ICON_SPACES 10 static const int icon_rescale_factor[MAX_ICON_SPACES] = { 100, 100, 80 /* 2 = 160 */, 60 /* 3 = 180 */, 50 /* 4 = 200 */, 45 /* 5 = 225 */, 40 /* 6 = 240 */, 35 /* 7 = 259 */, 35 /* 8 = 280 */, 33 /* 9 = 300 */ }; /****************************************************************************** * * Code related to face caching. * *****************************************************************************/ /* Does not appear to be used anywhere typedef struct Keys { uint8 flags; sint8 direction; KeySym keysym; char *command; struct Keys *next; } Key_Entry; */ /* Rotate right from bsd sum. */ #define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1; /*#define CHECKSUM_DEBUG*/ /** * Helper function to make the code more readable * * @param data * @param pi * @param pixmap_num */ static void create_icon_image(uint8 *data, PixmapInfo *pi, int pixmap_num) { pi->icon_mask = NULL; if (rgba_to_gdkpixbuf(data, pi->icon_width, pi->icon_height, (GdkPixbuf**)&pi->icon_image)) LOG (LOG_ERROR,"gtk-v2::create_icon_image","Unable to create scaled image, dest num = %d\n", pixmap_num); } /** * Helper function to make the code more readable * * @param data * @param pi */ static void create_map_image(uint8 *data, PixmapInfo *pi) { pi->map_image = NULL; pi->map_mask = NULL; if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) { #if defined(HAVE_SDL) int i; SDL_Surface *fog; uint32 g,*p; uint8 *l; #if SDL_BYTEORDER == SDL_LIL_ENDIAN pi->map_image = SDL_CreateRGBSurfaceFrom(data, pi->map_width, pi->map_height, 32, pi->map_width * 4, 0xff, 0xff00, 0xff0000, 0xff000000); fog = SDL_CreateRGBSurface(SDL_SRCALPHA | SDL_HWSURFACE, pi->map_width, pi->map_height, 32, 0xff, 0xff00, 0xff0000, 0xff000000); SDL_LockSurface(fog); for (i=0; i < pi->map_width * pi->map_height; i++) { l = (uint8 *) (data + i*4); #if 1 g = MAX(*l, *(l+1)); g = MAX(g, *(l+2)); #else g = ( *l + *(l+1) + *(l+2)) / 3; #endif p = (uint32*) fog->pixels + i; *p = g | (g << 8) | (g << 16) | (*(l + 3) << 24); } SDL_UnlockSurface(fog); pi->fog_image = fog; #else /* Big endian */ pi->map_image = SDL_CreateRGBSurfaceFrom(data, pi->map_width, pi->map_height, 32, pi->map_width * 4, 0xff000000, 0xff0000, 0xff00, 0xff); fog = SDL_CreateRGBSurface(SDL_SRCALPHA | SDL_HWSURFACE, pi->map_width, pi->map_height, 32, 0xff000000, 0xff0000, 0xff00, 0xff); SDL_LockSurface(fog); /* * I think this works out, but haven't tried it on a big endian machine * as my recollection is that the png data would be in the same order, * just the bytes for it to go on the screen are reversed. */ for (i=0; i < pi->map_width * pi->map_height; i++) { l = (uint8 *) (data + i*4); #if 1 g = MAX(*l, *(l+1)); g = MAX(g, *(l+2)); #else g = ( *l + *(l+1) + *(l+2)) / 3; #endif p = (uint32*) fog->pixels + i; *p = (g << 8) | (g << 16) | (g << 24) | *(l + 3); } for (i=0; i < pi->map_width * pi->map_height; i+= 4) { uint32 *tmp; /* * The pointer arithemtic below looks suspicious, but it is a patch * that is submitted, so just putting it in as submitted. MSW * 2004-05-11 */ p = (uint32*) (fog->pixels + i); g = ( ((*p >> 24) & 0xff) + ((*p >> 16) & 0xff) + ((*p >> 8) & 0xff)) / 3; tmp = (uint32*) fog->pixels + i; *tmp = (g << 24) | (g << 16) | (g << 8) | (*p & 0xff); } SDL_UnlockSurface(fog); pi->fog_image = fog; #endif #endif } else if (use_config[CONFIG_DISPLAYMODE] == CFG_DM_OPENGL){ #ifdef HAVE_OPENGL create_opengl_map_image(data, pi); #endif } else if (use_config[CONFIG_DISPLAYMODE] == CFG_DM_PIXMAP){ rgba_to_gdkpixmap(window_root->window, data, pi->map_width, pi->map_height, (GdkPixmap**)&pi->map_image, (GdkBitmap**)&pi->map_mask, gtk_widget_get_colormap(window_root)); } } /** * Memory management. * * @param pi */ static void free_pixmap(PixmapInfo *pi) { if (pi->icon_image) g_object_unref(pi->icon_image); if (pi->icon_mask) g_object_unref(pi->icon_mask); if (pi->map_mask) gdk_pixmap_unref(pi->map_mask); if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) { #ifdef HAVE_SDL if (pi->map_image) { SDL_FreeSurface(pi->map_image); free(((SDL_Surface*)pi->map_image)->pixels); SDL_FreeSurface(pi->fog_image); /* * Minor memory leak here - SDL_FreeSurface() frees the pixel * data _unless_ SDL_CreateRGBSurfaceFrom() was used to create * the surface. SDL_CreateRGBSurfaceFrom() is used to create * the map data, which is why we need the free there. The * reason this is a minor memory leak is because * SDL_CreateRGBSurfaceFrom() is used to create the question * mark image, and without this free, that data is not freed. * However, with this, client crashes after disconnecting from * server with double free. */ /* free(((SDL_Surface*)pi->fog_image)->pixels);*/ } #endif } else if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_OPENGL) { #ifdef HAVE_OPENGL opengl_free_pixmap(pi); #endif } else if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_PIXMAP) { if (pi->map_image) { gdk_pixmap_unref(pi->map_image); } } } /** * Takes the pixmap to put the data into, as well as the rgba data (ie, already * loaded with png_to_data). Scales and stores the relevant data into the * pixmap structure. * * @param ce can be NULL * @param pixmap_num * @param rgba_data * @param width * @param height * * @return 1 on failure. */ int create_and_rescale_image_from_data(Cache_Entry *ce, int pixmap_num, uint8 *rgba_data, int width, int height) { int nx, ny, iscale, factor; uint8 *png_tmp; PixmapInfo *pi; if (pixmap_num <= 0 || pixmap_num >= MAXPIXMAPNUM) return 1; if (pixmaps[pixmap_num] != pixmaps[0]) { /* As per bug 2938906, one can see image corruption when switching between * servers. The cause is that the cache table stores away * a pointer to the pixmap[] entry - if we go and free it, * the cache table can point to garbage, so don't free it. * This causes some memory leak, but if/when there is good * cache support for multiple servers, eventually the amount * of memory consumed will reach a limit (it has every image of * every server in memory * * The cause of image corruption requires a few different things: * 1) images of the same name have different numbers on the 2 serves. * 2) the image number is higher on the first than second server * 3) the image using the high number does not exist/is different * on the second server, causing this routine to be called. */ if (!use_config[CONFIG_CACHE]) { free_pixmap(pixmaps[pixmap_num]); free(pixmaps[pixmap_num]); } pixmaps[pixmap_num] = pixmaps[0]; } pi = calloc(1, sizeof(PixmapInfo)); iscale = use_config[CONFIG_ICONSCALE]; /* * If the image is big, figure out what we should scale it to so it fits * better display */ if (width > DEFAULT_IMAGE_SIZE || height>DEFAULT_IMAGE_SIZE) { int ts = 100; factor = width / DEFAULT_IMAGE_SIZE; if (factor >= MAX_ICON_SPACES) factor = MAX_ICON_SPACES - 1; if (icon_rescale_factor[factor] < ts) ts = icon_rescale_factor[factor]; factor = height / DEFAULT_IMAGE_SIZE; if (factor >= MAX_ICON_SPACES) factor = MAX_ICON_SPACES - 1; if (icon_rescale_factor[factor] < ts) ts = icon_rescale_factor[factor]; iscale = ts * use_config[CONFIG_ICONSCALE] / 100; } /* In all cases, the icon images are in native form. */ if (iscale != 100) { nx=width; ny=height; png_tmp = rescale_rgba_data(rgba_data, &nx, &ny, iscale); pi->icon_width = nx; pi->icon_height = ny; create_icon_image(png_tmp, pi, pixmap_num); free(png_tmp); } else { pi->icon_width = width; pi->icon_height = height; create_icon_image(rgba_data, pi, pixmap_num); } /* * If icon_scale matched use_config[CONFIG_MAPSCALE], we could try to be * more intelligent, but this should not be called too often, and this * keeps the code simpler. */ if (use_config[CONFIG_MAPSCALE] != 100) { nx=width; ny=height; png_tmp = rescale_rgba_data(rgba_data, &nx, &ny, use_config[CONFIG_MAPSCALE]); pi->map_width = nx; pi->map_height = ny; create_map_image(png_tmp, pi); /* * pixmap mode and opengl don't need the rgba data after they have * created the image, so we can free it. SDL uses the raw rgba data, * so it can't be freed. */ if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_PIXMAP || use_config[CONFIG_DISPLAYMODE]==CFG_DM_OPENGL) free(png_tmp); } else { pi->map_width = width; pi->map_height = height; /* * If using SDL mode, a copy of the rgba data needs to be stored away. */ if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) { png_tmp = malloc(width * height * BPP); memcpy(png_tmp, rgba_data, width * height * BPP); } else png_tmp = rgba_data; create_map_image(png_tmp, pi); } /* * Not ideal, but if it is missing the map or icon image, presume something * failed. However, opengl doesn't set the map_image, so if using that * display mode, don't make this check. */ if (!pi->icon_image || (!pi->map_image && use_config[CONFIG_DISPLAYMODE]!=CFG_DM_OPENGL)) { free_pixmap(pi); free(pi); return 1; } if (ce) { ce->image_data = pi; } pixmaps[pixmap_num] = pi; if (use_config[CONFIG_CACHE]) have_new_image++; return 0; } /** * Referenced from common/commands.c * * @param face * @param smooth_face */ void addsmooth(uint16 face, uint16 smooth_face) { pixmaps[face]->smooth_face = smooth_face; } /** * This functions associates image_data in the cache entry with the specific * pixmap number. Currently, there is no failure condition, but there is the * potential that in the future, we want to more closely look at the data and * if it isn't valid, return the failure code. * * @return 0 on success, -1 on failure. */ int associate_cache_entry(Cache_Entry *ce, int pixnum) { pixmaps[pixnum] = ce->image_data; return 0; } /** * Connecting to different servers, try to clear out any old images. Try to * free the data to prevent memory leaks. This could be more clever, ie, if * we're caching images and go to a new server and get a name, we should try to * re-arrange our cache or the like. */ void reset_image_data(void) { int i; reset_image_cache_data(); /* * The entries in the pixmaps array are also tracked in the image cache in * the common area. We will try to recycle those images that we can. * Thus, if we connect to a new server, we can just re-use the images we * have already rendered. */ for (i=1; i= MAXPIXMAPNUM) { *w = 1; *h = 1; } else { *w = (pixmaps[face]->map_width + map_image_size - 1)/ map_image_size; *h = (pixmaps[face]->map_height + map_image_size - 1)/ map_image_size; } } /****************************************************************************** * * Code related to face caching. * *****************************************************************************/ /** * Initializes the data for image caching * Create question mark to display in each supported rendering mode when an * image is not cached. When image caching is enabled, if a needed image is * not yet in the cache, a question mark image is displayed instead. The * image displayed is unique to the display mode. This function creates * the image to use when OpenGL mode is in effect. * */ void init_image_cache_data(void) { int i; GtkStyle *style; #include "../../pixmaps/question.xpm" LOG(LOG_INFO,"gtk-v2::init_image_cache_data","Init Image Cache"); style = gtk_widget_get_style(window_root); pixmaps[0] = malloc(sizeof(PixmapInfo)); pixmaps[0]->icon_image = gdk_pixmap_create_from_xpm_d(window_root->window, (GdkBitmap**)&pixmaps[0]->icon_mask, &style->bg[GTK_STATE_NORMAL], (gchar **)question_xpm); #ifdef HAVE_SDL if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) { /* * Make a semi-transparent question mark symbol to use for the cached * images. */ #include "../../pixmaps/question.sdl" pixmaps[0]->map_image = SDL_CreateRGBSurfaceFrom(question_sdl, 32, 32, 1, 4, 1, 1, 1, 1); SDL_SetAlpha(pixmaps[0]->map_image, SDL_SRCALPHA, 70); pixmaps[0]->fog_image = SDL_CreateRGBSurfaceFrom(question_sdl, 32, 32, 1, 4, 1, 1, 1, 1); SDL_SetAlpha(pixmaps[0]->fog_image, SDL_SRCALPHA, 70); } else #endif if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_PIXMAP) { pixmaps[0]->map_image = pixmaps[0]->icon_image; pixmaps[0]->fog_image = pixmaps[0]->icon_image; pixmaps[0]->map_mask = pixmaps[0]->icon_mask; } #ifdef HAVE_OPENGL else if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_OPENGL) { create_opengl_question_mark(); } #endif pixmaps[0]->icon_width = pixmaps[0]->icon_height = pixmaps[0]->map_width = pixmaps[0]->map_height = map_image_size; pixmaps[0]->smooth_face = 0; /* Don't do anything special for SDL image - rather, that drawing * code will check to see if there is no data */ /* Initialize all the images to be of the same value. */ for (i=1; i #endif #include #include #include #include "client.h" #include "main.h" #include "image.h" #include "gtk2proto.h" #include #ifdef MINGW int alphasort(const struct dirent **a, const struct dirent **b) { return strcoll((*a)->d_name, (*b)->d_name); } int scandir(const char *dir, struct dirent ***namelist, int (*select)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **)) { DIR *d; struct dirent *entry; register int i=0; size_t entrysize; if((d = opendir(dir)) == NULL) return -1; *namelist = NULL; while ((entry = readdir(d)) != NULL) { if (select == NULL || (select != NULL && (*select)(entry))) { *namelist = (struct dirent **)realloc((void *)(*namelist), (size_t)((i + 1) * sizeof(struct dirent *))); if (*namelist == NULL) return -1; entrysize = sizeof(struct dirent) - sizeof(entry->d_name) + strlen(entry->d_name) + 1; (*namelist)[i] = (struct dirent *)malloc(entrysize); if ((*namelist)[i] == NULL) return -1; memcpy((*namelist)[i], entry, entrysize); i++; } } if (closedir(d)) return -1; if (i == 0) return -1; if (compar != NULL) qsort((void *)(*namelist), (size_t)i, sizeof(struct dirent *), (int(*)(const void*, const void*))compar); return i; } #endif extern char window_xml_file[MAX_BUF]; /* Name of the .glade layout in use. */ GtkWidget *config_window, *config_spinbutton_cwindow, *config_button_echo, *config_button_fasttcp, *config_button_timestamp, *config_button_grad_color, *config_button_foodbeep, *config_button_sound, *config_button_cache, *config_button_download, *config_button_fog, *config_spinbutton_iconscale, *config_spinbutton_mapscale, *config_spinbutton_mapwidth, *config_spinbutton_mapheight, *config_button_smoothing, *config_combobox_displaymode, *config_combobox_faceset, *config_combobox_lighting, *config_combobox_theme, *config_combobox_glade; /* This is the string names that correspond to the numberic id's in client.h */ static char *theme = "Standard"; static char *themedir = "themes"; static char *gladedir = "glade-gtk2"; static const char * const display_modes[] = {"Pixmap", "SDL", "OpenGL"}; /** * Sets up player-specific client and layout rc files and handles loading of a * client theme if one is selected. First, the player-specific rc files are * added to the GTK rc default files list. ${HOME}/.crossfire/gtkrc is added * first. All client sessions are affected by this rc file if it exists. * Next, ${HOME}/.crossfire/[layout].gtkrc is added, where [layout] is the * name of the .glade file that is loaded. IE. If gtk-v2.glade is loaded, * [layout] is "gtk-v2". This sets up the possibility for a player to make a * layout-specific rc file. Finally, if the client theme is not "None", the * client theme file is added. In most cases, the player-specific files are * probably not going to exist, so the theme system will continue to work the * way it always has. The player will have to "do something" to get the extra * functionality. At some point, conceptually the client itself could be * enhanced to allow it to save some basic settings to either or both of the * player-specific rc files. * * @param reload * If true, user has changed theme after initial startup. In this mode, we * need to call the routines that store away private theme data. When program * is starting up, this is false, because all the widgets haven't been realized * yet, and the initialize routines will get the theme data at that time. */ static char **default_files=NULL; void init_theme() { char path[MAX_BUF]; char xml_basename[MAX_BUF]; char **tmp; char *cp; int i; /* * The GTK man page says copy of this data should be made, so do that. */ tmp = gtk_rc_get_default_files(); i = 0; while (tmp[i]) { i++; } /* * Add two more GTK rc files that may be used by a player to customize * the client appearance in general, or to customize the appearance * of a specific .glade layout. Allocate pointers to the local copy * of the entire list. */ i += 2; default_files = malloc(sizeof(char*) * (i+1)); /* * Copy in GTK's default list which probably contains system paths * like /gtk-2.0/gtkrc and user-specific files like * ${HOME}/.gtkrc, or even LANGuage-specific ones like * ${HOME}/.gtkrc.en, etc. */ i=0; while (tmp[i]) { default_files[i] = strdup(tmp[i]); i++; } /* * Add a player-specific gtkrc to the list of default rc files. This * file is probably reserved for player use, though in all liklihood * will not get used that much. Still, it makes it easy for someone * to make their own theme without having to have access to the * system-wide theme folder. This is the lowest priority client rc * file as either a .gtkrc file or a client-configured theme * settings can over-ride it. */ snprintf(path, sizeof(path), "%s/.crossfire/gtkrc", getenv("HOME")); default_files[i] = strdup(path); i++; /* * Add a UI layout-specific rc file to the list of default list. It * seems reasonable to allow client code to have access to this file * to make some basic changes to fonts, via a graphical interface. * Truncate window_xml_file to remove a .extension if one exists, so * that the window positions file can be created with a .gtkrc suffix. * This is a mid-priority client rc file as its settings supersede the * client gtkrc file, but are overridden by a client-configured theme. */ strncpy(xml_basename, window_xml_file, MAX_BUF); cp = strrchr(xml_basename, '.'); if (cp) cp[0] = 0; snprintf(path, sizeof(path), "%s/.crossfire/%s.gtkrc", getenv("HOME"), xml_basename); CONVERT_FILESPEC_TO_OS_FORMAT(path); default_files[i] = strdup(path); i++; /* * Mark the end of the list of default rc files. */ default_files[i] = NULL; } void load_theme(int reload) { char path[MAX_BUF]; int i; /* * Whether or not this is default and initial run, we want to register * the modified rc search path list, so GTK needs to get the changes. * It is necessary to reset the the list each time through here each * theme change grows the list. Only one theme should be in the list * at a time. */ gtk_rc_set_default_files(default_files); /* * If a client-configured theme has been selected (something other than * "None"), then add it to the list of GTK rc files to process. Since * this file is added last, it takes priority over both the gtkrc and * .gtkrc files. Remember, strcmp returns zero on a match, and * a theme file should not be registered if "None" is selected. */ if (strcmp(theme, "None")) { snprintf(path, MAX_BUF, "%s/%s/%s", CF_DATADIR, themedir, theme); /* * Check for existence of the client theme file. Unfortunately, at * initial run time, the window may not be realized yet, so the * message cannot be sent to the user directly. It doesn't hurt to * add the path even if the file isn't there, but the player might * still want to know something is wrong since they picked a theme. */ if (access(path, R_OK) == -1) LOG(LOG_ERROR, "config.c::load_theme", "Unable to find theme file %s", path); gtk_rc_add_default_file(path); } /* * Require GTK to reparse and rebind all the widget data. */ gtk_rc_reparse_all_for_settings( gtk_settings_get_for_screen(gdk_screen_get_default()), TRUE); gtk_rc_reset_styles( gtk_settings_get_for_screen(gdk_screen_get_default())); /* * Call client functions to reparse the custom widgets it controls. */ info_get_styles(); inventory_get_styles(); stats_get_styles(); spell_get_styles(); update_spell_information(); /* * Set inv_updated to force a redraw - otherwise it will not * necessarily bind the lists with the new widgets. */ cpl.below->inv_updated = 1; cpl.ob->inv_updated = 1; draw_lists(); draw_stats(TRUE); draw_message_window(TRUE); } /** * This function processes the user saved settings file and establishes the * configuration of the client. */ void load_defaults(void) { char path[MAX_BUF],inbuf[MAX_BUF],*cp; FILE *fp; int i, val; /* Copy over the want values to use values now */ for (i=0; i200) { LOG(LOG_WARNING, "config.c::load_defaults", "Ignoring iconscale value read from gdefaults2 file.\n" "Invalid iconscale range (%d), valid range for -iconscale " "is 25 through 200", want_config[CONFIG_ICONSCALE]); want_config[CONFIG_ICONSCALE] = use_config[CONFIG_ICONSCALE]; } if (want_config[CONFIG_MAPSCALE]< 25 || want_config[CONFIG_MAPSCALE]>200) { LOG(LOG_WARNING, "config.c::load_defaults", "ignoring mapscale value read for gdefaults2 file.\n" "Invalid mapscale range (%d), valid range for -iconscale " "is 25 through 200", want_config[CONFIG_MAPSCALE]); want_config[CONFIG_MAPSCALE] = use_config[CONFIG_MAPSCALE]; } if (!want_config[CONFIG_LIGHTING]) { LOG(LOG_WARNING, "config.c::load_defaults", "No lighting mechanism selected - will not use darkness code"); want_config[CONFIG_DARKNESS] = FALSE; } if (want_config[CONFIG_RESISTS] > 2) { LOG(LOG_WARNING, "config.c::load_defaults", "ignoring resists display value read for gdafaults file.\n" "Invalid value (%d), must be one value of 0, 1 or 2.", want_config[CONFIG_RESISTS]); want_config[CONFIG_RESISTS] = 0; } /* Make sure the map size os OK */ if (want_config[CONFIG_MAPWIDTH] < 9 || want_config[CONFIG_MAPWIDTH] > MAP_MAX_SIZE) { LOG(LOG_WARNING, "config.c::load_defaults", "Invalid map width (%d) " "option in gdefaults2. Valid range is 9 to %d", want_config[CONFIG_MAPWIDTH], MAP_MAX_SIZE); want_config[CONFIG_MAPWIDTH] = use_config[CONFIG_MAPWIDTH]; } if (want_config[CONFIG_MAPHEIGHT] < 9 || want_config[CONFIG_MAPHEIGHT] > MAP_MAX_SIZE) { LOG(LOG_WARNING, "config.c::load_defaults", "Invalid map height (%d) " "option in gdefaults2. Valid range is 9 to %d", want_config[CONFIG_MAPHEIGHT], MAP_MAX_SIZE); want_config[CONFIG_MAPHEIGHT] = use_config[CONFIG_MAPHEIGHT]; } #if !defined(HAVE_OPENGL) if (want_config[CONFIG_DISPLAYMODE] == CFG_DM_OPENGL) { want_config[CONFIG_DISPLAYMODE] = CFG_DM_PIXMAP; LOG(LOG_ERROR, "config.c::load_defaults", "Display mode is set to OpenGL, but client " "is not compiled with OpenGL support. Reverting to pixmap mode."); } #endif #if !defined(HAVE_SDL) if (want_config[CONFIG_DISPLAYMODE] == CFG_DM_SDL) { want_config[CONFIG_DISPLAYMODE] = CFG_DM_PIXMAP; LOG(LOG_ERROR, "config.c::load_defaults", "Display mode is set to SDL, but client " "is not compiled with SDL support. Reverting to pixmap mode."); } #endif /* Now copy over the values just loaded */ for (i=0; id_name[0] == '.') return 0; return 1; } /** * This function is used by scandir below to get only the directory entries * needed. In the case of glade files, skip all files that do not end with * ".glade" and the default glade XML file that defines auxilliary dialogs. * * @param d * the dirent entry from scandir. * * function returns 1 if the file is a valid glade XML file name, 0 for files * that are not. */ static int scandir_glade_filter(const struct dirent *d) { char *token = NULL; char *extok = NULL; char delim[] = "."; char exten[] = "glade"; char parse[MAX_BUF] = ""; strncpy(parse, d->d_name, MAX_BUF); token = strtok(parse, delim); while (token) { extok = token; token = strtok(NULL, delim); } if (extok && strncmp(exten, extok, strlen(exten)) == 0) { if (strncmp(parse, DIALOG_XML_FILENAME, strlen(parse)) == 0) return 0; return 1; } return 0; } /** * Load a control with entries created from a directory that has files suited * to a particular function. IE. themes, and UI layout files. * * This sees what themes or layouts are in the directory and puts them in the * pulldown menu for the selection box. The presumption is made that these * files won't change during run time, so we only need to do this once. * * @param combobox * a glade combobox widget to be filled with filenames. * * @param active * a pointer to a string that is the active combobox item. * * @param want_none * 1 if a "None" entry is added to the filename list; 0 if not. * * @param subdir * the subdirectory that contains filenames to add to the combobox list. * * @param scandir_filter * a pointer to a function that is called by scandir() to filter filenames to * add to the combobox. The function returns 1 if the filename is valid for * addition to the combobox list. * */ static void fill_combobox_from_datadir(GtkWidget *combobox, char *active, uint64 want_none, char *subdir, int (*scandir_filter) ()) { int count, i; GtkTreeModel *model; gchar *buf; GtkTreeIter iter; model = gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)); count = gtk_tree_model_iter_n_children(model, NULL); /* * If count is 0, the combo box control has not been initialized yet, so * fill it with the appropriate selections now. */ if (count == 0) { char path[MAX_BUF]; struct dirent **files; int done_none=0; snprintf(path, MAX_BUF, "%s/%s", CF_DATADIR, subdir); count = scandir(path, &files, *scandir_filter, alphasort); LOG(LOG_DEBUG, "config.c::fill_combobox_from_datadir", "found %d files in %s\n", count, path); for (i=0; id_name, "None") > 0) { gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "None"); done_none=1; } gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), files[i]->d_name); } /* Set this for below */ count = gtk_tree_model_iter_n_children(model, NULL); } /* * The block belows causes the matching combobox item to be selected. Set * it irregardless of whether this is the first time this is run or not. */ for (i=0; i < count; i++) { if (!gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) { LOG(LOG_ERROR, "config.c::fill_combobox_from_datadir", "Unable to get combo box iter\n"); break; } gtk_tree_model_get(model, &iter, 0, &buf, -1); if (!strcasecmp(active, buf)) { gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), i); g_free(buf); break; } g_free(buf); } } /* * Setup_config_window sets the buttons, combos, etc, to the state that matches * the want_config[] values. */ static void setup_config_window(void) { int count, i; GtkTreeModel *model; gchar *buf; GtkTreeIter iter; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_echo), want_config[CONFIG_ECHO]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_fasttcp), want_config[CONFIG_FASTTCP]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_timestamp), want_config[CONFIG_TIMESTAMP]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_grad_color), want_config[CONFIG_GRAD_COLOR]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_foodbeep), want_config[CONFIG_FOODBEEP]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_sound), want_config[CONFIG_SOUND]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_cache), want_config[CONFIG_CACHE]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_download), want_config[CONFIG_DOWNLOAD]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_fog), want_config[CONFIG_FOGWAR]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_button_smoothing), want_config[CONFIG_SMOOTH]); gtk_spin_button_set_value(GTK_SPIN_BUTTON(config_spinbutton_cwindow), (float)want_config[CONFIG_CWINDOW]); gtk_spin_button_set_value(GTK_SPIN_BUTTON(config_spinbutton_iconscale), (float)want_config[CONFIG_ICONSCALE]); gtk_spin_button_set_value(GTK_SPIN_BUTTON(config_spinbutton_mapscale), (float)want_config[CONFIG_MAPSCALE]); gtk_spin_button_set_value(GTK_SPIN_BUTTON(config_spinbutton_mapwidth), (float)want_config[CONFIG_MAPWIDTH]); gtk_spin_button_set_value(GTK_SPIN_BUTTON(config_spinbutton_mapheight), (float)want_config[CONFIG_MAPHEIGHT]); /* * Face set combo box setup. * Remove all the entries currently in the combo box */ model = gtk_combo_box_get_model(GTK_COMBO_BOX(config_combobox_faceset)); count = gtk_tree_model_iter_n_children(model, NULL); for (i=0; i < count; i++) gtk_combo_box_remove_text(GTK_COMBO_BOX(config_combobox_faceset), 0); /* If we have real faceset info from the server, use it */ if (face_info.have_faceset_info) { for (i=0; i= 0); } else { if (csocket.fd) cs_print_string(csocket.fd, "setup sound 0"); } use_config[CONFIG_SOUND] = want_config[CONFIG_SOUND]; } if (IS_DIFFERENT(CONFIG_FASTTCP)) { #ifdef TCP_NODELAY #ifndef WIN32 int q = want_config[CONFIG_FASTTCP]; if (csocket.fd && setsockopt(csocket.fd, SOL_TCP, TCP_NODELAY, &q, sizeof(q)) == -1) perror("TCP_NODELAY"); #else int q = want_config[CONFIG_FASTTCP]; if (csocket.fd && setsockopt(csocket.fd, SOL_TCP, TCP_NODELAY, ( const char* )&q, sizeof(q)) == -1) perror("TCP_NODELAY"); #endif #endif use_config[CONFIG_FASTTCP] = want_config[CONFIG_FASTTCP]; } if (IS_DIFFERENT(CONFIG_LIGHTING)) { #ifdef HAVE_SDL if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) /* This is done to make the 'lightmap' in the proper format */ init_SDL( NULL, 1); #endif } /* * Nothing to do, but we can switch immediately without problems. do force * a redraw */ if (IS_DIFFERENT(CONFIG_GRAD_COLOR)) { use_config[CONFIG_GRAD_COLOR] = want_config[CONFIG_GRAD_COLOR]; draw_stats(TRUE); } } /** * Defines the behavior invoked when the configuration dialog save button is * pressed. * * @param button * @param user_data */ void on_config_button_save_clicked (GtkButton *button, gpointer user_data) { read_config_window(); save_defaults(); } /** * Defines the behavior invoked when the configuration dialog apply button is * pressed. * * @param button * @param user_data */ void on_config_button_apply_clicked (GtkButton *button, gpointer user_data) { read_config_window(); } /** * Defines the behavior invoked when the configuration dialog close button is * pressed. * * @param button * @param user_data */ void on_config_button_close_clicked (GtkButton *button, gpointer user_data) { gtk_widget_hide(config_window); } /** * Defines the behavior invoked when the configuration dialog is activated. * * @param menuitem * @param user_data */ void on_configure_activate (GtkMenuItem *menuitem, gpointer user_data) { gtk_widget_show(config_window); setup_config_window(); } /** * Handles saving of the window positions when the Client | Save Window * Position menu item is executed. All hpaned and vpaned widget settings have * the information required, and the code automatically works for Glade XML * layouts that follow the glade-2's default widget naming convention. */ void save_winpos(void) { char savename[MAX_BUF]; char buf[MAX_BUF]; char *cp; FILE *save; int x,y,w,h,wx,wy; extern GtkWidget *window_root; GList *pane_list, *list_loop; GladeXML *xml_tree; GtkWidget *widget; /* * Truncate window_xml_file to remove a .extension if one exists, so that * the window positions file can be created with a different .extension. * this helps keep the length of the file name more reasonable. */ strncpy(buf, window_xml_file, MAX_BUF); cp = strrchr(buf, '.'); if (cp) cp[0] = 0; snprintf(savename, sizeof(savename), "%s/.crossfire/%s.pos", getenv("HOME"), buf); CONVERT_FILESPEC_TO_OS_FORMAT(savename); if (!(save = fopen(savename, "w"))) { snprintf(buf, sizeof(buf), "Cannot open %s - window positions not saved!", savename); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, buf); return; } get_window_coord(window_root, &x,&y, &wx,&wy,&w,&h); fprintf(save,"window_root: +%d+%dx%dx%d\n", wx, wy, w, h); xml_tree = glade_get_widget_tree(GTK_WIDGET(window_root)); /* * Iterate through all widgets whose names begin with hpaned_* and vpaned_* * to save the widget name and the position of the pane divider. Widgets * are dynamically found and processed so long as the .glade file designer * adheres to the naming conventions that Glade Designer uses. */ pane_list = glade_xml_get_widget_prefix(xml_tree, "hpaned_"); for (list_loop = pane_list; list_loop; list_loop = g_list_next(list_loop)) { widget = list_loop->data; fprintf(save, "%s: %d\n", glade_get_widget_name(widget), gtk_paned_get_position(GTK_PANED(widget))); } g_list_free(pane_list); pane_list = glade_xml_get_widget_prefix(xml_tree, "vpaned_"); for (list_loop = pane_list; list_loop; list_loop = g_list_next(list_loop)) { widget = list_loop->data; fprintf(save, "%s: %d\n", glade_get_widget_name(widget), gtk_paned_get_position(GTK_PANED(widget))); } g_list_free(pane_list); fclose(save); snprintf(buf, sizeof(buf), "Window positions saved to %s", savename); draw_ext_info(NDI_BLUE, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, buf); } /** * Handles saving of the window positions when the Client | Save Window * Position menu item is activated. * * @param menuitem * @param user_data */ void on_save_window_position_activate (GtkMenuItem *menuitem, gpointer user_data) { save_winpos(); /* * The following prevents multiple saves per menu activation. */ g_signal_stop_emission_by_name(GTK_OBJECT(menuitem), "activate"); } /** * Retrieves saved window positions saved with the Client | Save Window * Position menu item. * * @param window_root The client's main window. */ void load_window_positions(GtkWidget *window_root) { char loadname[MAX_BUF]; char buf[MAX_BUF]; char *cp; GladeXML *xml_tree; GtkWidget *widget; FILE *load; /* * Truncate window_xml_file to remove a .extension if one exists, so that * the window positions file can be created with a different .extension. * this helps keep the length of the file name more reasonable. */ strncpy(buf, window_xml_file, MAX_BUF); cp = strrchr(buf, '.'); if (cp) cp[0] = 0; snprintf(loadname, sizeof(loadname), "%s/.crossfire/%s.pos", getenv("HOME"), buf); CONVERT_FILESPEC_TO_OS_FORMAT(loadname); if (!(load = fopen(loadname, "r"))) { snprintf(buf, sizeof(buf), "Cannot open %s: Using default window positions.", loadname); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, buf); return; } else { snprintf(buf, sizeof(buf), "Loading window positions from %s", loadname); draw_ext_info(NDI_BLUE, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, buf); } xml_tree = glade_get_widget_tree(GTK_WIDGET (window_root)); while(fgets(buf, MAX_BUF-1, load)!=NULL) { if ((cp=strchr(buf,':'))!=NULL) { *cp=0; cp++; while(isspace(*cp)) cp++; if (!strcmp(buf,"window_root")) { int x,y,w,h; if (sscanf(cp,"+%d+%dx%dx%d", &x, &y, &w, &h) == 4) { gtk_window_set_default_size (GTK_WINDOW(window_root), w, h); gtk_window_move(GTK_WINDOW(window_root), x, y); } else { LOG(LOG_ERROR, "config.c::load_window_positions", "Window size %s corrupt\n", cp); } } else if (strstr(buf,"paned_")) { /* * The save names are a re-sizeable pane, but check to be sure * it is a valid widget name if only to prevent sending a * generic error to stderr if it does not exist in the current * layout. */ widget = glade_xml_get_widget(xml_tree, buf); if (widget) { gtk_paned_set_position(GTK_PANED(widget), atoi(cp)); } else { LOG(LOG_INFO, "config.c::load_window_positions", "%s in " "%s not found in this UI layout.\n", buf, loadname); } } else { LOG(LOG_ERROR, "config.c::load_window_positions", "Found unknown line %s in %s\n", buf, loadname); } } } fclose(load); } crossfire-client-1.70.0/gtk-v2/src/skills.c0000644000014500000120000002245211731277013015333 00000000000000 /* Crossfire client, a client program for the crossfire program. Copyright (C) 2006-2007,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/skills.c * Handles The callbacks for the skill window. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "client.h" #include "image.h" #include "metaserver.h" #include "main.h" #include "gtk2proto.h" static GtkWidget *skill_window, *skill_treeview, *skill_use, *skill_ready; static GtkListStore *skill_store; static GtkTreeSelection *skill_selection; enum {LIST_NAME, LIST_LEVEL, LIST_EXP, LIST_NEXTLEVEL}; static int has_init = 0; /** * Used if a user just single clicks on an entry - at which point, we enable * the cast & invoke buttons. * * @param selection * @param model * @param path * @param path_currently_selected * @param userdata */ static gboolean skill_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer userdata) { gtk_widget_set_sensitive(skill_ready, TRUE); gtk_widget_set_sensitive(skill_use, TRUE); return TRUE; } /** * Called whenever the skill window is opened or a stats packet is received. * If the skills window has been created and is currently visible, it rebuilds * the list store otherwise nothing happens, because it will be called again * next time the window is opened anyway. */ void update_skill_information(void) { GtkTreeIter iter; char buf[MAX_BUF]; int i, sk, level; uint64 exp_to_next_level; /* If the window/spellstore hasn't been created, or isn't currently being * shown, return. */ if (! has_init || ! GTK_WIDGET_VISIBLE(glade_xml_get_widget(dialog_xml, "skill_window"))) return; gtk_list_store_clear(skill_store); for (i = 0; i 0) { gtk_list_store_append(skill_store, &iter); buf[0] = 0; if (level>= exp_table_max) { /* we can't advance any more, so display 0*/ exp_to_next_level = 0; } else { exp_to_next_level = exp_table[level + 1] - cpl.stats.skill_exp[sk]; } gtk_list_store_set(skill_store, &iter, LIST_NAME, skill_mapping[i].name, LIST_LEVEL, level, LIST_EXP, cpl.stats.skill_exp[sk], LIST_NEXTLEVEL, exp_to_next_level, -1); } } } /** * * @param menuitem * @param user_data */ void on_skills_activate(GtkMenuItem *menuitem, gpointer user_data) { GladeXML *xml_tree; GtkWidget *widget; if (! has_init) { GtkCellRenderer *renderer; GtkTreeViewColumn *column; skill_window = glade_xml_get_widget(dialog_xml, "skill_window"); xml_tree = glade_get_widget_tree(GTK_WIDGET(skill_window)); skill_use = glade_xml_get_widget(xml_tree,"skill_use"); skill_ready = glade_xml_get_widget(xml_tree,"skill_ready"); skill_treeview = glade_xml_get_widget(xml_tree, "skill_treeview"); g_signal_connect((gpointer) skill_window, "delete_event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); g_signal_connect((gpointer) skill_treeview, "row_activated", G_CALLBACK(on_skill_treeview_row_activated), NULL); g_signal_connect((gpointer) skill_ready, "clicked", G_CALLBACK(on_skill_ready_clicked), NULL); g_signal_connect((gpointer) skill_use, "clicked", G_CALLBACK(on_skill_use_clicked), NULL); widget = glade_xml_get_widget(xml_tree, "skill_close"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_skill_close_clicked), NULL); skill_store = gtk_list_store_new(4, G_TYPE_STRING, /* Name */ G_TYPE_INT, /* Level */ G_TYPE_INT64, /* EXP */ G_TYPE_INT64 /* Exp to Next Level */ ); gtk_tree_view_set_model( GTK_TREE_VIEW(skill_treeview), GTK_TREE_MODEL(skill_store)); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(skill_treeview), TRUE); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( "Skill", renderer, "text", LIST_NAME, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(skill_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_NAME); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( "Level", renderer, "text", LIST_LEVEL, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(skill_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_LEVEL); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( "Exp", renderer, "text", LIST_EXP, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(skill_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_EXP); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( "Needed for next level", renderer, "text", LIST_NEXTLEVEL, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(skill_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_NEXTLEVEL); skill_selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(skill_treeview)); gtk_tree_selection_set_mode(skill_selection, GTK_SELECTION_BROWSE); gtk_tree_selection_set_select_function( skill_selection, skill_selection_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id( GTK_TREE_SORTABLE(skill_store), LIST_NAME, GTK_SORT_ASCENDING); } gtk_widget_set_sensitive(skill_ready, FALSE); gtk_widget_set_sensitive(skill_use, FALSE); gtk_widget_show(skill_window); has_init=1; /* has to be called after has_init is set to 1 */ update_skill_information(); } /** * This is where we actually do something with the skill. model and iter tell us * which skill we want to trigger, use_skill is 1 to use the skill, 0 to ready it. * @param iter * @param model * @param use_skill */ void trigger_skill(GtkTreeIter iter, GtkTreeModel *model, int use_skill) { gchar *skname; char command[MAX_BUF]; char *commandname; gtk_tree_model_get(model, &iter, LIST_NAME, &skname, -1); if (! skname) { LOG(LOG_ERROR, "skills.c::trigger_skill", "Unable to get skill name\n"); return; } commandname = use_skill?"use_skill":"ready_skill"; snprintf(command, MAX_BUF-1, "%s %s", commandname, skname); send_command(command, -1, 1); g_free(skname); } /** * * @param treeview * @param path * @param column * @param user_data */ void on_skill_treeview_row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model; model = gtk_tree_view_get_model(treeview); if (gtk_tree_model_get_iter(model, &iter, path)) { trigger_skill(iter, model, 0); } gtk_widget_hide(skill_window); } /** * * @param button * @param user_data */ void on_skill_ready_clicked(GtkButton *button, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model; if (gtk_tree_selection_get_selected(skill_selection, &model, &iter)) { trigger_skill(iter, model, 0); } gtk_widget_hide(skill_window); } /** * * @param button * @param user_data */ void on_skill_use_clicked(GtkButton *button, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model; if (gtk_tree_selection_get_selected(skill_selection, &model, &iter)) { trigger_skill(iter, model, 1); } } /** * * @param button * @param user_data */ void on_skill_close_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(skill_window); } crossfire-client-1.70.0/gtk-v2/src/Makefile.am0000644000014500000120000000521511731277013015720 00000000000000# # Makefile for crossfire client # # Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com INCLUDES = \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \ -I$(top_builddir)/common \ -I$(top_srcdir)/common \ -I$(top_srcdir)/common/shared \ -I$(top_srcdir)/help AM_CFLAGS = \ $(PTHREAD_CFLAGS) \ @LIBGLADE_CFLAGS@ \ @SDL_CFLAGS@ bin_PROGRAMS = crossfire-client-gtk2 common_BUILT_FILES = \ $(top_builddir)/common/svnversion.h $(common_BUILT_FILES): pushd `dirname $(@)` >/dev/null; \ $(MAKE) `basename $(@)`; \ popd >/dev/null; BUILT_SOURCES = \ $(common_BUILT_FILES) common_LIBS = \ $(top_builddir)/common/libcfclient.a $(common_LIBS): pushd `dirname $(@)` >/dev/null; \ $(MAKE); \ popd >/dev/null; proto_FILES = \ about.c \ account.c \ config.c \ create_char.c \ image.c \ info.c \ inventory.c \ keys.c \ main.c \ map.c \ magicmap.c \ menubar.c \ metaserver.c \ opengl.c \ pickup.c \ png.c \ sdl.c \ skills.c \ sound.c \ spells.c \ stats.c crossfire_client_gtk2_SOURCES = \ image.h \ info.h \ main.h \ gtk2proto.h \ $(proto_FILES) crossfire_client_gtk2_LDADD = $(common_LIBS) $(PTHREAD_LIBS) @LIBGLADE_LIBS@ @DMALLOC_LIB@ $(INTLLIBS) $(X_LIBS) @SDL_LIBS@ @OPENGL_LIBS@ @WIN32_LIBS@ @LUA_LIBS@ # This target breaks when it sees -pthread in the cproto command, so it has to # be stripped out to work. $(filter-out) is a GNU make extension, so it is # commented out here for portability reasons. Is there a good way to do this? # Removing PTHREAD_CFLAGS from here used to work, but something put it back. # proto: PROTO_DIRTY = \ $(INCLUDES) \ $(SDL_CFLAGS) \ $(LIBGLADE_CFLAGS) \ $(PROTO_FILES) # proto: PROTO_CLEAN = $(filter-out -pthread,$(PROTO_DIRTY)) # proto: # cproto -e -o gtk2proto.h $(PROTO_CLEAN); \ # chmod 644 gtk2proto.h proto: cproto -e -o gtk2proto.h $(PROTO_DIRTY); \ chmod 644 gtk2proto.h crossfire-client-1.70.0/gtk-v2/src/main.h0000644000014500000120000000334311731277013014761 00000000000000/* * char *rcsid_gtk2_main_h = * "$Id: main.h 14247 2011-01-24 05:21:30Z mwedel $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005,2010,2011 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/main.h * Contains various global definitions and XML file name and path defaults. */ #define NUM_COLORS 13 extern GdkColor root_color[NUM_COLORS]; extern GtkWidget *window_root, *spinbutton_count; extern GladeXML *dialog_xml, *window_xml; #define DEFAULT_IMAGE_SIZE 32 extern int map_image_size, map_image_half_size, image_size; #define XML_PATH_DEFAULT CF_DATADIR "/glade-gtk2/" #define WINDOW_XML_FILENAME "gtk-v1.glade" #define DIALOG_XML_FILENAME "dialogs.glade" extern char window_xml_file[]; #define MAGIC_MAP_PAGE 1 /**< Notebook page of the magic map */ extern gint csocket_fd; extern char account_password[256]; /* gtk2proto.h depends on this - so may as well just include it here */ #include "info.h" crossfire-client-1.70.0/gtk-v2/src/info.c0000644000014500000120000023246111731277013014770 00000000000000const char * const rcsid_gtk2_info_c = "$Id: info.c 14516 2011-06-06 21:27:21Z ryo_saeba $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2011 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/info.c * This covers drawing text to the info window. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "client.h" #include "image.h" #include "main.h" #include "gtk2proto.h" /** * A mapping of font numbers to style based on the rcfile content. */ static const char *font_style_names[NUM_FONTS] = { "info_font_normal", "info_font_arcane", "info_font_strange", "info_font_fixed", "info_font_hand" }; /** * @} EndOf GTK V2 Font Style Definitions. */ /** * The number of supported message panes (normal + critical). This define is * meant to support anything that iterates over all the information panels. * It does nothing to help remove or document hardcoded panel numbers * throughout the code. * * @todo Create defines for each panel and replace panel numbers with the * defines describing the panel. This integer declaration is to that * account.c knows how many are being used here, and can add appropriately. */ #define NUM_TEXT_VIEWS 2 extern const char * const usercolorname[NUM_COLORS]; Info_Pane info_pane[NUM_TEXT_VIEWS]; extern const char * const colorname[NUM_COLORS]; /* * The idea behind the msg_type_names is to provide meaningful names that the * client can use to load/save these values, in particular, the GTK-V2 client * uses these to find styles on how to draw the different msg types. We could * set this up as a two dimension array instead, but that probably is not as * efficient when the number of subtypes varies so wildly. The 0 subtypes are * used for general cases (describe the entire class of those message types). * Note also that the names here are verbose - the actual code that uses these * will expand it further. In practice, there should never be entries with * both the same type/subtype (each subtype should be unique) - if so, the * results are probably unpredictable on which one the code would use. */ #include "msgtypes.h" static int max_subtype=0, has_style=0; /** * @{ * @name GTK V2 Message Control System. * Supports a client-side implementation of what used to be provided by the * server output-count and output-sync commands. These defines presently * control the way the system works. The hardcoded values here are temporary * and shall give way to client commands and/or a GUI method of configuring * the system. Turn off the output count/sync by setting MESSAGE_COUNT_MAX * to 1. It should be safe to experiment with most values as long as none of * them are set less than 1, and as long as the two buffer sizes are set to * reasonable values (buffer sizes include the terminating null character). */ static void message_callback(int orig_color, int type, int subtype, char *message); GtkWidget *msgctrl_window; /**< The message control dialog * where routing and buffer * configuration is set up. */ GtkWidget *msgctrl_table; /**< The message control table * where routing and buffer * configuration is set up. */ #define MESSAGE_BUFFER_COUNT 10 /**< The maximum number of messages * to concurrently monitor for * duplicate occurances. */ #define MESSAGE_BUFFER_SIZE 56 /**< The maximum allowable size of * messages that are checked for * duplicate reduction. */ #define COUNT_BUFFER_SIZE 16 /**< The maximum size of the tag * that indicates the number of * times a message occured while * buffered. Example: "4 times " */ #define MESSAGE_COUNT_MAX 16 /**< The maximum number of times a * buffered message may repeat * before it is sent to a client * panel for for display. */ #define MESSAGE_AGE_MAX 16 /**< The maximum time in client * ticks, that a message resides in * a buffer before it is sent to a * client panel for display. 8 * ticks is roughly 1 second. */ /** @struct info_buffer_t * @brief A buffer record that supports suppression of duplicate messages. * This buffer holds data for messages that are monitored for suppression of * duplicates. The buffer holds all data passed to message_callback(), * including type, subtype, suggested color, and the text. Age and count * fields are provided to track the time a message is in the buffer, and how * many times it occured during the time it is buffered. */ struct info_buffer_t { int age; /**< The length of time a message * spends in the buffer, measured in * client ticks. */ int count; /**< The number of times a buffered * message is detected while it is * buffered. A count of -1 * indicates the buffer is empty. */ int orig_color; /**< Message data: The suggested * color to display the text in. */ int type; /**< Message data: Classification * of the buffered message. */ int subtype; /**< Message data: Sub-class of * the buffered message. */ char message[MESSAGE_BUFFER_SIZE]; /**< Message data: Message text. */ } info_buffer[MESSAGE_BUFFER_COUNT]; /**< Several buffers that support * suppression of duplicates even * even when the duplicates are * alternate with other messages. */ /** @struct buffer_parameter_t * @brief A container for a single buffer control parameter like output count * or time. The structure holds a widget pointer, a state variable to track * the widget value, and a default value. */ typedef struct { GtkWidget* ptr; /**< Spinbutton widget pointer. */ guint state; /**< The state of the spinbutton. */ const guint default_state; /**< The state of the spinbutton. */ } buffer_parameter_t; /** @struct buffer_control_t * @brief A container for all of the buffer control parameters like output * count and time. The structure holds widget pointers, a state variables to * track the parameter values, and the client built-in defaults. Only the * final initializer for output_count and output_time is used as a default. */ struct buffer_control_t { buffer_parameter_t count; /**< Output count control & default */ buffer_parameter_t timer; /**< Output time control & default */ } buffer_control = { /* * { uninitialized_pointer, uninitialized_state, default_value }, */ { NULL, 0, MESSAGE_COUNT_MAX }, { NULL, 0, MESSAGE_AGE_MAX } }; /** @struct boolean_widget_t * @brief A container that holds the pointer and state of a checkbox control. * Each Message Control dialog checkbox is tracked in one of these structs. */ typedef struct { GtkWidget* ptr; /**< Checkbox widget pointer. */ gboolean state; /**< The state of the checkbox. */ } boolean_widget_t; /** @struct message_control_t * @brief A container for all of the checkboxes associated with a single * message type. */ typedef struct { boolean_widget_t buffer; /**< Checkbox widget and state for a * single message type. */ boolean_widget_t pane[NUM_TEXT_VIEWS];/**< Checkbox widgets and state for * each client-supported message * panel. */ } message_control_t; message_control_t msgctrl_widgets[MSG_TYPE_LAST-1]; /**< All of the checkbox widgets for * the entire message control * dialog. */ /** @struct msgctrl_data_t * @brief Descriptive message type names with pane routing and buffer enable. * A single struct defines a hard-coded, player-friendly, descriptive name to * use for a single message type. All other fields in the structure define * routing of messages to either or both client message panels, and whether * or not messages of this type are passed through the duplicate suppression * buffer system. This struct is intended to be used as the base type of an * array that contains one struct per message type defined in newclient.h. * The hard-coding of the descriptive name for the message type here is not * ideal as it would be nicer to have it alongside the MSG_TYPE_* defines. */ struct msgctrl_data_t { const char * description; /**< A descriptive name to give to * a message type when displaying it * for a player. These values * should be kept in sync with the * MSG_TYPE_* declarations in * ../../common/shared/newclient.h */ const gboolean buffer; /**< Whether or not to consider the * message type for output-count * buffering. 0/1 == disable/enable * duplicate suppression * (output-count). */ const gboolean pane[NUM_TEXT_VIEWS]; /**< The routing instructions for a * single message type. For each * pane, 0/1 == disable/enable * display of the message type in * the associated client message * pane. */ } msgctrl_defaults[MSG_TYPE_LAST-1] = /**< A data structure to track how * to handle each message type in * with respect to panel routing and * output count. */ { /* * { "description", buffer, { pane[0], pane[1] } }, */ { "Books", FALSE, { TRUE, FALSE } }, { "Cards", FALSE, { TRUE, FALSE } }, { "Paper", FALSE, { TRUE, FALSE } }, { "Signs & Magic Mouths", FALSE, { TRUE, FALSE } }, { "Monuments", FALSE, { TRUE, FALSE } }, { "Dialogs (Altar/NPC/Magic Ear)" , FALSE, { TRUE, FALSE } }, { "Message of the day", FALSE, { TRUE, FALSE } }, { "Administrative", FALSE, { TRUE, FALSE } }, { "Shops", TRUE, { TRUE, FALSE } }, { "Command responses", FALSE, { TRUE, FALSE } }, { "Changes to attributes", TRUE, { TRUE, TRUE } }, { "Skill-related messages", TRUE, { TRUE, FALSE } }, { "Apply results", TRUE, { TRUE, FALSE } }, { "Attack results", TRUE, { TRUE, FALSE } }, { "Player communication", FALSE, { TRUE, TRUE } }, { "Spell results", TRUE, { TRUE, FALSE } }, { "Item information", TRUE, { TRUE, FALSE } }, { "Miscellaneous", TRUE, { TRUE, FALSE } }, { "Victim notification", FALSE, { TRUE, TRUE } }, { "Client-generated messages", FALSE, { TRUE, FALSE } } }; /** * @} EndOf GTK V2 Message Control System. */ /** * Sets attributes in the text tag from a style. Best I can gather, there is * no way to take all of the attributes from a style and apply them directly to * a text tag, hence this function to do the work. GtkTextTags also know what * attributes are set and which are not set - thus, you can apply multiple tags * to the same text, and get all of the effects. For styles, that isn't the * case - a style contains all of the information. So this function also * compares the loaded style from the base style, and only sets the attributes * that are different. * * @param tag Text tag to set values on. * @param style Style name to get values from. * @param base_style Base style for the widget to compare against. */ void set_text_tag_from_style(GtkTextTag *tag, GtkStyle *style, GtkStyle *base_style) { g_object_set(tag, "foreground-set", FALSE, NULL); g_object_set(tag, "background-set", FALSE, NULL); g_object_set(tag, "font-desc", NULL, NULL); if (memcmp( &style->fg[GTK_STATE_NORMAL], &base_style->fg[GTK_STATE_NORMAL], sizeof(GdkColor))) g_object_set(tag, "foreground-gdk", &style->fg[GTK_STATE_NORMAL], NULL); if (memcmp( &style->bg[GTK_STATE_NORMAL], &base_style->bg[GTK_STATE_NORMAL], sizeof(GdkColor))) g_object_set(tag, "background-gdk", &style->bg[GTK_STATE_NORMAL], NULL); if (style->font_desc != base_style->font_desc) g_object_set(tag, "font-desc", style->font_desc, NULL); } /** * Adds the various tags to the next buffer. If textbuf is non-null, then it * also sets the text buffer for that pane to textbuf. This is called right * now by info_get_styles() below and from within the account code. * * @param pane Message panel number to add buffer to. * @param textbuf Text buffer to apply tags to. It is allowed to be null if * info_pane[pane].textbuffer has already been set. */ void add_tags_to_textbuffer(Info_Pane *pane, GtkTextBuffer *textbuf) { int i; if (textbuf) pane->textbuffer = textbuf; for (i = 0; i < MSG_TYPE_LAST; i++) pane->msg_type_tags[i] = calloc(max_subtype + 1, sizeof(GtkTextTag*)); for (i = 0; i < NUM_FONTS; i++) pane->font_tags[i] = NULL; for (i = 0; i < NUM_COLORS; i++) pane->color_tags[i] = NULL; /* * These tag definitions never change - we don't get them from the * settings file (maybe we should), so we only need to allocate them once. */ pane->bold_tag = gtk_text_buffer_create_tag(pane->textbuffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL); pane->italic_tag = gtk_text_buffer_create_tag(pane->textbuffer, "italic", "style", PANGO_STYLE_ITALIC, NULL); pane->underline_tag = gtk_text_buffer_create_tag(pane->textbuffer, "underline", "underline", PANGO_UNDERLINE_SINGLE, NULL); /* * This is really a convenience - so multiple tags may be passed when * drawing text, but once a NULL tag is found, that signifies no more * tags. Rather than having to set up an array to pass in, instead, an * empty tag is passed in so that calling semantics remain consistent, * just differing in what tags are passed in. */ if (!pane->default_tag) pane->default_tag = gtk_text_buffer_create_tag(pane->textbuffer, "default", NULL); } /** * This is like add_tags_to_textbuffer above, but styles can be changed during * the run of the client. So this has to be separate to note it it might be a * reload. * * @param pane Message panel number to update. * @param base_style Base style if retrieved - may be null. */ void add_style_to_textbuffer(Info_Pane *pane, GtkStyle *base_style) { int i; char style_name[MAX_BUF]; GtkStyle *tmp_style; if (base_style) { /* * Old message/color support. */ for (i = 0; i < NUM_COLORS; i++) { snprintf(style_name, MAX_BUF, "info_%s", usercolorname[i]); tmp_style = gtk_rc_get_style_by_paths( gtk_settings_get_default(), NULL, style_name, G_TYPE_NONE); if (tmp_style) { if (!pane->color_tags[i]) { pane->color_tags[i] = gtk_text_buffer_create_tag( pane->textbuffer, NULL, NULL); } set_text_tag_from_style( pane->color_tags[i], tmp_style, base_style); } else { if (pane->color_tags[i]) { gtk_text_tag_table_remove( gtk_text_buffer_get_tag_table( pane->textbuffer), pane->color_tags[i]); pane->color_tags[i] = NULL; } } } /* Font type support */ for (i = 0; i < NUM_FONTS; i++) { tmp_style = gtk_rc_get_style_by_paths( gtk_settings_get_default(), NULL, font_style_names[i], G_TYPE_NONE); if (tmp_style) { if (!pane->font_tags[i]) { pane->font_tags[i] = gtk_text_buffer_create_tag( pane->textbuffer, NULL, NULL); } set_text_tag_from_style( pane->font_tags[i], tmp_style, base_style); } else { if (pane->font_tags[i]) { gtk_text_tag_table_remove( gtk_text_buffer_get_tag_table(pane->textbuffer), pane->font_tags[i]); pane->font_tags[i] = NULL; } } } } else { for (i = 0; i < NUM_COLORS; i++) { if (pane->color_tags[i]) { gtk_text_tag_table_remove( gtk_text_buffer_get_tag_table( pane->textbuffer), pane->color_tags[i]); pane->color_tags[i] = NULL; } } /* Font type support */ for (i = 0; i < NUM_FONTS; i++) { if (pane->font_tags[i]) { gtk_text_tag_table_remove( gtk_text_buffer_get_tag_table( pane->textbuffer), pane->font_tags[i]); pane->font_tags[i] = NULL; } } } } /** * Loads up values from the style file. Note that the actual name of the * style file is set elsewhere. * * This function is designed so that it should be possible to call it multiple * times - it will release old style data and load up new values. In this * way, a user should be able to change styles on the fly and have things * work. */ void info_get_styles(void) { unsigned int i, j; static int has_init=0; GtkStyle *tmp_style, *base_style[NUM_TEXT_VIEWS]; char style_name[MAX_BUF]; if (!has_init) { /* * We want to set up a 2 dimensional array of msg_type_tags to * correspond to all the types/subtypes, so looking up any value is * really easy. We know the size of the types, but don't know the * number of subtypes - no single declared value. So we just parse * the msg_type_names to find that, then know how big to make the * other dimension. We could allocate different number of entries for * each type, but that makes processing a bit harder (no single value * on the number of subtypes), and this extra memory usage shouldn't * really be at all significant. */ for (i = 0; i < sizeof(msg_type_names) / sizeof(Msg_Type_Names); i++) { if (msg_type_names[i].subtype > max_subtype) max_subtype = msg_type_names[i].subtype; } for (j = 0; j < NUM_TEXT_VIEWS; j++) { add_tags_to_textbuffer(&info_pane[j], NULL); } has_init = 1; } for (i = 0; i < NUM_TEXT_VIEWS; i++) { base_style[i] = gtk_rc_get_style_by_paths( gtk_settings_get_default(), NULL, "info_default", G_TYPE_NONE); } if (!base_style[0]) { LOG(LOG_INFO, "info.c::info_get_styles", "Unable to find base style info_default" " - will not process most info tag styles!"); } has_style = 0; /* * If we don't have a base style tag, we can't process these other tags, * as we need to be able to do a difference, and doing a difference from * nothing (meaning, taking everything in style) still doesn't work really * well. */ if (base_style[0]) { /* * This processes the type/subtype styles. We look up the names in * the array to find what name goes to what number. */ for (i = 0; i < sizeof(msg_type_names) / sizeof(Msg_Type_Names); i++) { int type, subtype; snprintf(style_name, sizeof(style_name), "msg_%s", msg_type_names[i].style_name); type = msg_type_names[i].type; subtype = msg_type_names[i].subtype; tmp_style = gtk_rc_get_style_by_paths( gtk_settings_get_default(), NULL, style_name, G_TYPE_NONE); for (j = 0; j < NUM_TEXT_VIEWS; j++) { /* * If we have a style for this, update the tag that goes along * with this. If we don't have a tag for this style, create * it. */ if (tmp_style) { if (!info_pane[j].msg_type_tags[type][subtype]) { info_pane[j].msg_type_tags[type][subtype] = gtk_text_buffer_create_tag( info_pane[j].textbuffer, NULL, NULL); } set_text_tag_from_style( info_pane[j].msg_type_tags[type][subtype], tmp_style, base_style[j]); has_style = 1; } else { /* * No setting for this type/subtype, so remove tag if * there is one. */ if (info_pane[j].msg_type_tags[type][subtype]) { gtk_text_tag_table_remove( gtk_text_buffer_get_tag_table( info_pane[j].textbuffer), info_pane[j].msg_type_tags[type][subtype]); info_pane[j].msg_type_tags[type][subtype] = NULL; } } add_style_to_textbuffer(&info_pane[j], base_style[j]); } } } else { /* * There is no base style - this should not normally be the case with * any real setting files, but certainly can be the case if the user * selected the 'None' setting. So in this case, we just free all the * text tags. */ has_style = 0; for (i = 0; i < sizeof(msg_type_names) / sizeof(Msg_Type_Names); i++) { int type, subtype; type = msg_type_names[i].type; subtype = msg_type_names[i].subtype; for (j = 0; j < NUM_TEXT_VIEWS; j++) { if (info_pane[j].msg_type_tags[type][subtype]) { gtk_text_tag_table_remove( gtk_text_buffer_get_tag_table( info_pane[j].textbuffer), info_pane[j].msg_type_tags[type][subtype]); info_pane[j].msg_type_tags[type][subtype] = NULL; } add_style_to_textbuffer(&info_pane[j], NULL); } } } } /** * Initialize the information panels in the client. These panels are the * client areas where text is drawn. * * @param window_root Pointer to the parent (root) application window. */ void info_init(GtkWidget *window_root) { int i; GtkTextIter end; char widget_name[MAX_BUF]; GladeXML *xml_tree; xml_tree = glade_get_widget_tree(GTK_WIDGET(window_root)); for (i = 0; i < NUM_TEXT_VIEWS; i++) { snprintf(widget_name, MAX_BUF, "textview_info%d", i+1); info_pane[i].textview = glade_xml_get_widget(xml_tree, widget_name); snprintf(widget_name, MAX_BUF, "scrolledwindow_textview%d", i+1); info_pane[i].scrolled_window = glade_xml_get_widget(xml_tree, widget_name); gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW(info_pane[i].textview), GTK_WRAP_WORD); info_pane[i].textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(info_pane[i].textview)); info_pane[i].adjustment = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(info_pane[i].scrolled_window)); gtk_text_buffer_get_end_iter(info_pane[i].textbuffer, &end); info_pane[i].textmark = gtk_text_buffer_create_mark( info_pane[i].textbuffer, NULL, &end, FALSE); gtk_widget_realize(info_pane[i].textview); } /*info_get_styles();*/ info_buffer_init(); /* Register callbacks for all message types */ for (i = 0; i < MSG_TYPE_LAST; i++) setTextManager(i, message_callback); } /** * Adds some data to the text buffer of the specified information panel using * the appropriate tags to provide the desired formatting. Note that the * style within the users theme determines how a particular type/subtype is * drawn. * * @param pane The client message panel to write a message to. * @param message A pointer to some text to show in a client message window. * @param type The message type - see the MSG_TYPE values in newclient.h. * @param subtype Message subtype - see MSG_TYPE_*_* values in newclient.h. * @param bold If true, should be in bold text. * @param italic If true, should be in italic text * @param font Which font to use - resolved to an actual font style based * on the user's theme file. * @param color String name of the color. * @param underline If true, draw underlined text. */ static void add_to_textbuf(Info_Pane *pane, const char *message, int type, int subtype, int bold, int italic, int font, const char *color, int underline) { GtkTextIter end; GdkRectangle rect; int scroll_to_end=0, color_num; GtkTextTag *color_tag=NULL, *type_tag=NULL; /* * Lets see if the defined color matches any of our defined colors. If we * get a match, set color_tag. If color_tag is null, we either don't have * a match, we don't have a defined tag for the color, or we don't have a * color, use the default tag. It would be nice to know if color is a sub * value set with [color] tag, or is part of the message itself - if we're * just being passed NDI_RED in the draw_ext_info from the server, we * really don't care about that - the type/subtype styles should really be * what determines what color to use. */ if (color) { for (color_num = 0; color_num < NUM_COLORS; color_num++) if (!strcasecmp(usercolorname[color_num], color)) break; if (color_num < NUM_COLORS) color_tag = pane->color_tags[color_num]; } if (!color_tag) color_tag = pane->default_tag; /* * Following block of code deals with the type/subtype. First, we check * and make sure the passed in values are legal. If so, first see if * there is a particular style for the type/subtype combo, if not, fall * back to one just for the type. */ type_tag = pane->default_tag; /* Clear subtype on MSG_TYPE_CLIENT if max_subtype is not set * Errors are generated during initialization, before max_subtype * has been set, so we can not route to a specific pane. * We also want to make sure we do not hit the pane->msg_type_tags * code, as that is not initialzed yet. */ if (type == MSG_TYPE_CLIENT && !max_subtype) { subtype=0; } else if (type >= MSG_TYPE_LAST || subtype >= max_subtype || type < 0 || subtype < 0 ) { LOG(LOG_ERROR, "info.c::add_to_textbuf", "type (%d) >= MSG_TYPE_LAST (%d) or " "subtype (%d) >= max_subtype (%d)\n", type, MSG_TYPE_LAST, subtype, max_subtype); } else { if (pane->msg_type_tags[type][subtype]) type_tag = pane->msg_type_tags[type][subtype]; else if (pane->msg_type_tags[type][0]) type_tag = pane->msg_type_tags[type][0]; } gtk_text_view_get_visible_rect( GTK_TEXT_VIEW(pane->textview), &rect); /* Simple panes (like those of the login windows) don't have adjustments * set (and if they did, we wouldn't want to scroll to end in any case), * so check here on what to do. */ if (pane->adjustment && (pane->adjustment->value + rect.height) >= pane->adjustment->upper) scroll_to_end = 1; gtk_text_buffer_get_end_iter(pane->textbuffer, &end); gtk_text_buffer_insert_with_tags( pane->textbuffer, &end, message, strlen(message), bold ? pane->bold_tag : pane->default_tag, italic ? pane->italic_tag : pane->default_tag, underline ? pane->underline_tag : pane->default_tag, pane->font_tags[font] ? pane->font_tags[font] : pane->default_tag, color_tag, type_tag, NULL); if (scroll_to_end) gtk_text_view_scroll_mark_onscreen( GTK_TEXT_VIEW(pane->textview), pane->textmark); } /** * This just does the work of taking text (which may have markup) and putting * it into the target pane. This is a lower level than the draw_ext_info() * below, as it does not do message routing. This is called from * draw_ext_info() below, as well as account.c to update news/motd/rules. * * @param pane Pointer to the pane info to draw info. * @param message Message that is parsed and displayed. * @param type Type of the message - for default coloring information. * @param subtype Subtype of message - used for default coloring information. * @param orig_color Legacy color hint not based on type that is used when a * theme does not define a style for the message. * @note Note both type and subtype are the values passed to draw_ext_info(). */ void add_marked_text_to_pane(Info_Pane *pane, const char *message, int type, int subtype, int orig_color) { char *marker, *current, *original; int bold=0, italic=0, font=0, underline=0; const char *color=NULL; /**< Only if we get a [color] tag should we care, * otherwise, the type/subtype should dictate * color (unless no style set!) */ current = strdup(message); original = current; /* Just so we know what to free */ /* * If there is no style information, or if a specific style has not been * set for the type/subtype of this message, allow orig_color to set the * color of the text. The orig_color handling here adds compatibility * with former draw_info() calls that gave a color hint. The color hint * still works now in the event that the theme has not set a style for the * message type. */ if (! has_style || pane->msg_type_tags[type][subtype] == 0) { if (orig_color <0 || orig_color>NUM_COLORS) { LOG(LOG_ERROR, "info.c::draw_ext_info", "Passed invalid color from server: %d, max allowed is %d\n", orig_color, NUM_COLORS); orig_color = 0; } else { /* * Not efficient - we have a number, but convert it to a string, * at which point add_to_textbuf() converts it back to a number. */ color = usercolorname[orig_color]; } } while ((marker = strchr(current, '[')) != NULL) { *marker = 0; if (strlen(current) > 0) add_to_textbuf(pane, current, type, subtype, bold, italic, font, color, underline); current = marker + 1; if ((marker = strchr(current, ']')) == NULL) { free(original); return; } *marker = 0; if (!strcmp(current, "b")) bold = TRUE; else if (!strcmp(current, "/b")) bold = FALSE; else if (!strcmp(current, "i")) italic = TRUE; else if (!strcmp(current, "/i")) italic = FALSE; else if (!strcmp(current, "ul")) underline = TRUE; else if (!strcmp(current, "/ul")) underline = FALSE; else if (!strcmp(current, "fixed")) font = FONT_FIXED; else if (!strcmp(current, "arcane")) font = FONT_ARCANE; else if (!strcmp(current, "hand")) font = FONT_HAND; else if (!strcmp(current, "strange")) font = FONT_STRANGE; else if (!strcmp(current, "print")) font = FONT_NORMAL; else if (!strcmp(current, "/color")) color = NULL; else if (!strncmp(current, "color=", 6)) color = current + 6; else LOG(LOG_INFO, "info.c::message_callback", "unrecognized tag: [%s]\n", current); current = marker + 1; } add_to_textbuf( pane, current, type, subtype, bold, italic, font, color, underline); add_to_textbuf( pane, "\n", type, subtype, bold, italic, font, color, underline); free(original); } /** * A message processor that accepts messages along with meta information color * and type. The message type and subtype are analyzed to select font and * other text attributes. All gtk-v2 client messages pass through this * processor before being output. Before addition of the output buffering * feature, this was the message callback function. It is a separate function * so that it can be called both by the callback, and but buffer maintenance * functions. * * Client-sourced messages generally should be passed directly to this handler * instead of to the callback. This will save some overhead as the callback * implements a system that coalesces duplicate messages - a feature that is * not really applicable to most messages that do not come from the server. * * @param orig_color Suggested text color that type/subtype can over-ride. * @param type Message type. See MSG_TYPE definitions in newclient.h. * @param subtype Message subtype. See MSG_TYPE_*_* values in newclient.h. * @param message The message text to display. */ void draw_ext_info(int orig_color, int type, int subtype, const char *message) { int type_err=0; /**< When 0, the type is valid and may be used to pick * the panel routing, otherwise the message can only * go to the main message pane. */ int pane; char *stamp = NULL; const char *draw = NULL; if (want_config[CONFIG_TIMESTAMP]) { time_t curtime; struct tm *ltime; stamp = calloc(1, strlen(message) + 7); curtime = time(NULL); ltime = localtime(&curtime); strftime(stamp, 6, "%I:%M", ltime); strcat(stamp, " "); strcat(stamp, message); draw = stamp; } else { draw = message; } /* * A valid message type is required to index into the msgctrl_widgets * array. If an invalid type is identified, log an error as any message * without a valid type should be hunted down and assigned an appropriate * type. */ if ((type < 1) || (type >= MSG_TYPE_LAST)) { LOG(LOG_ERROR, "info.c::draw_ext_info", "Invalid message type: %d", type); type_err = 1; } /* * Route messages to any one of the client information panels based on the * type of the message text. If a message with an invalid type comes in, * it goes to the main message panel (0). Messages can actually be sent * to more than one panel if the player so desires. */ for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { /* * If the message type is invalid, then the message must go to pane 0, * otherwise the msgctrl_widgets[].pane[pane].state setting determines * whether to send the message to a particular pane or not. The type * is one-based, so must be decremented when referencing * msgctrl_widgets[]; */ if (type_err != 0) { if (pane != 0) { break; } } else { if (msgctrl_widgets[type - 1].pane[pane].state == FALSE) continue; } add_marked_text_to_pane(&info_pane[pane], draw, type, subtype, orig_color); } if (want_config[CONFIG_TIMESTAMP]) free(stamp); } /** * @defgroup GTKv2OutputCountSync GTK V2 client output count/sync functions. * @{ */ /** * Output count/sync message buffer initialization to set all buffers empty. * Called only once at client start from info_init(), the function initializes * all message buffers to the empty state (count == -1). At a minimum, age, * count, and message should be initialized. Type, subtype, and orig_color * are also set just for an extra measure of safety. */ void info_buffer_init(void) { int loop; for (loop = 0; loop < MESSAGE_BUFFER_COUNT; loop += 1) { info_buffer[loop].count = -1; info_buffer[loop].age = 0; info_buffer[loop].type = 0; info_buffer[loop].subtype = 0; info_buffer[loop].orig_color = 0; info_buffer[loop].message[0] = '\0'; }; } /** * Handles message buffer flushes, and, as needed, displays the text. Flushed * buffers have their count set to -1. On flush, the message text is output * only when the message count is greater than zero. If the message text is * displayed, and if the count is greater than one, it is prepended to the * message in the form "N * times ". This function is called whenever a * message must be ejected from the output count/sync system buffers. Note * that the message details are preserved when the buffer is flushed. This * allows the buffer contents to be re-used if another message with the same * text comes in before the buffer is re-used for a different message. * * @param id The message control buffer to flush (0 - MESSAGE_BUFFER_COUNT). */ void info_buffer_flush(const int id) { char output_buffer[MESSAGE_BUFFER_SIZE /* Buffer for output big enough */ +COUNT_BUFFER_SIZE]; /* to hold both count and text. */ /* * Messages are output with no output-count at the time they are first * placed in a buffer, so do not bother displaying it again if another * instance of the message was not seen after the initial buffering. */ if (info_buffer[id].count > 0) { /* * Report the number of times the message was seen only if it was seen * after having been initially buffered. */ if (info_buffer[id].count > 1) { snprintf(output_buffer, sizeof(output_buffer), "%u times %s", info_buffer[id].count, info_buffer[id].message); /* * Output the message count and message text. */ draw_ext_info( info_buffer[id].orig_color, info_buffer[id].type, info_buffer[id].subtype, output_buffer); } else /* * Output only the message text. */ draw_ext_info( info_buffer[id].orig_color, info_buffer[id].type, info_buffer[id].subtype, info_buffer[id].message); }; /* * Mark the buffer newly emptied. */ info_buffer[id].count = -1; } /** * Output count/sync buffer maintainer adds buffer time and output messages. * For every tick, age active messages so it eventually gets displayed. If * the data in an buffer reaches the maximum permissible age or message * occurance count, it is ejected and displayed. Inactive buffers are also * aged so that the oldest empty buffer is used first when a new message * comes in. */ void info_buffer_tick(void) { int loop; for (loop = 0; loop < MESSAGE_BUFFER_COUNT; loop += 1) { if (info_buffer[loop].count > -1) { if ((info_buffer[loop].age < (int) buffer_control.timer.state) && (info_buffer[loop].count < (int) buffer_control.count.state)) { /* * The buffer has data in it, and has not reached maximum age, * so bump the age up a notch. */ info_buffer[loop].age += 1; } else { /* * The data has been in the buffer too long, so either display * it (and report how many times it was seen while in the * buffer) or simply expire the buffer content if duplicates * did not occur. */ info_buffer_flush(loop); } } else { /* * Overflow-protected aging of empty or inactive buffers. Aging * of inactive buffers is the reason overflow must be handled. */ if (info_buffer[loop].age < info_buffer[loop].age + 1) { info_buffer[loop].age += 1; } } } } /** * A callback to accept messages along with meta information color and type. * Unlike the GTK V1 client, we don't do anything tricky like popups with * different message types, but the output-count/sync features do consider * message type, etc. To allow user-defined buffering rules all messages * need to pass through a common processor. This callback is the interface * for the output buffering. Even if output buffering could be bypassed, it * is still necessary to pass messages through a common interface to handle * style, theme, and display panel configuration. This callback routes all * messages to the appropriate handler for pre-display processing * (draw_ext_info()). * * It is recommended that client-sourced messages be passed directly to * draw_ext_info() instead of through the callback to avoid unnecessary * processing. MSG_TYPE_CLIENT messages are deliberately not buffered here * because they are generally unique, adminstrative messages that should not * be delayed. * * @param orig_color Suggested text color that type/subtype can over-ride. * @param type Message type. See MSG_TYPE definitions in newclient.h. * @param subtype Message subtype. See MSG_TYPE_*_* values in newclient.h. * @param message The message text to display. */ static void message_callback(int orig_color, int type, int subtype, char *message) { int search; /* Loop for searching the buffers. */ int found; /* Which buffer a message is in. */ int empty; /* The ID of an empty buffer. */ int oldest; /* Oldest non-empty buffer found. */ int empty_age; /* Age of oldest empty buffer. */ int oldest_age; /* Age of oldest non-empty buffer. */ /* * Any message that has an invalid type cannot be buffered. An error is * not logged here as draw_ext_info() is where all messages pass through. * * A legacy switch to prevent message folding is to set the color of the * message to NDI_UNIQUE. This over-rides the player preferences. * * Usually msgctrl_widgets[] is used to determine whether or not messages * are buffered as it is where the player sets buffering preferences. The * type must be decremented when used to index into msgctrl_widgets[]. * * The system also declines to buffer messages over a set length as most * messages that need coalescing are short. Most messages that are long * are usually unique and should not be delayed. >= allows for the null * at the end of the string in the buffer. IE. If the buffer size is 40, * only 39 chars can be put into it to ensure room for a null character. */ if ((type < 1) || (type >= MSG_TYPE_LAST) || (orig_color == NDI_UNIQUE) || (msgctrl_widgets[type - 1].buffer.state == FALSE) || (strlen(message) >= MESSAGE_BUFFER_SIZE)) { /* * If the message buffering feature is off, simply pass the message on * to the parser that will determine the panel routing and style. */ draw_ext_info(orig_color, type, subtype, message); } else { empty = -1; /* Default: Buffers are empty until proven full */ found = -1; /* Default: Incoming message is not in a buffer */ oldest = -1; /* Default: Oldest active buffer ID is unknown */ empty_age= -1; /* Default: Oldest empty buffer age is unknown */ oldest_age= -1; /* Default: Oldest active buffer age is unknown */ for (search = 0; search < MESSAGE_BUFFER_COUNT; search += 1) { /* * 1) Find the oldest empty or inactive buffer, if one exists. * 2) Find the oldest non-empty/active buffer in case we need to * eject a message to make room for a new message. * 3) Find a buffer that matches the incoming message, whether the * buffer is active or not. */ if (info_buffer[search].count < 0) { /* * We want to find the oldest empty buffer. If a new message * that is not already buffered comes in, this is the ideal * place to put it. */ if ((info_buffer[search].age > empty_age)) { empty_age = info_buffer[search].age; empty = search; } } else { /* * The buffer is not empty, so process it to find the oldest * buffered message. If a new message comes in that is not * already buffered, and if there are no empty buffers * available, the oldest message will be pushed out to make * room for the new one. */ if (info_buffer[search].age > oldest_age) { oldest_age = (info_buffer[search].age); oldest = search; } } /* * Check all buffers, inactive and active, to see if the incoming * message matches an existing buffer. Because empty buffers are * re-used if they match, it should not be possible for more than * one buffer to match, so do not bother searching after the first * match is found. */ if (found < 0) { if (! strcmp(message, info_buffer[search].message)) { found = search; } } } #if 0 LOG(LOG_DEBUG, "info.c::message_callback", "\n " "type: %d-%d empty: %d found: %d oldest: %d oldest_age: %d", type, subtype, empty, found, oldest, oldest_age); #endif /* * If the incoming message is already buffered, then increment the * message count and exit, otherwise add the message to the buffer. */ if (found > -1) { /* * If the found buffer was inactive, this automatically activates * it, and sets the count to one to ensure printing of the message * occurance as messages are pre-printed only when they are * inserted into a buffer after not being found. */ if (info_buffer[found].count == -1) { info_buffer[found].count += 1; info_buffer[found].age = 0; } info_buffer[found].count += 1; } else { /* * The message was not found in a buffer, so check if there is an * available buffer. If not, dump the oldest buffer to make room, * then mark it empty. */ if (empty == -1) { if (oldest > -1) { /* * The oldest message is getting kicked out of the buffer * to make room for a new message coming in. */ info_buffer_flush(oldest); } else { LOG(LOG_ERROR, "info.c::message_callback", "Buffer full; oldest unknown", strlen(message)); } } /* * To avoid delaying player notification in cases where multiple * messages might not occur, or especially if a message is really * important to get right away, go ahead an output the message * without a count at the time it is first put into a buffer. As * this message has already been output, the buffer count is set * zero, so that info_buffer_flush() will not re-display it if a * duplicate does not occur while this message is in the buffer. */ draw_ext_info(orig_color, type, subtype, message); /* * There should always be an empty buffer at this point, but just * in case, recheck before putting the new message in the buffer. * Do not log another error as one was just logged, but instead * just output the message that came in without passing it through * the buffer system. */ if (empty > -1) { /* * Copy the incoming message to the empty buffer. */ info_buffer[empty].age = 0; info_buffer[empty].count = 0; info_buffer[empty].orig_color = orig_color; info_buffer[empty].type = type; info_buffer[empty].subtype = subtype; strcpy(info_buffer[empty].message, message); } } } } /** * @} */ /* EndOf GTKv2OutputCountSync */ /** * Clears all the message panels. It is not clear why someone would use it, * but is called from the common area, and so is supported here. */ void menu_clear(void) { int i; for (i=0; i < NUM_TEXT_VIEWS; i++) { gtk_text_buffer_set_text(info_pane[i].textbuffer, "", 0); } } /** * A stub function that does nothing. These are callbacks used by the common * code, but they are not implemented in GTK, either because it makes no sense * (set_scroll for example), or because it may not be technically possible to * do so if we limit ourselves to proper GTK2 code (Eg, don't mess with the * internals of X or platform specific issues) * * @param s */ void set_scroll(const char *s) { } /** * A stub function that does nothing. These are callbacks used by the common * code, but they are not implemented in GTK, either because it makes no sense * (set_scroll for example), or because it may not be technically possible to * do so if we limit ourselves to proper GTK2 code (Eg, don't mess with the * internals of X or platform specific issues) * * @param s */ void set_autorepeat(const char *s) { } /** * This is used by the common help system to determine when to wrap. Should be * able to get width of window, and divide by character width - however, still * not perfect if we are using a variable width font. Actually, GTK can do * word wrapping for us, so maybe the real fix is to have it to the word * wrapping and just run a sufficiently large value. * @return The width of the info window in characters. */ int get_info_width(void) { /** * @todo Configure automatic line wrap in message panels and get rid of * the hardcoded 40-character wrap. */ return 40; } /** * Initialize the message control panel by populating it with descriptions of * each message type along with checkboxes that are used to configure the * routing and duplicate suppression system. If previously saved settings are * found on disk, they are loaded and applied, otherwise the built in client * defaults are loaded and applied. This initialization must occur after the * info_init() function runs. * * @param window_root The client main window */ void msgctrl_init(GtkWidget *window_root) { GtkTableChild* child; /* Used to get number of title rows */ GladeXML* xml_tree; /* Used to find the dialog widgets */ GtkWidget* widget; /* Used to connect widgets */ GtkTable* table; /* The table of checkbox controls */ GList* list; /* Iterator: table children */ guint pane; /* Iterator: client message panes */ guint type; /* Iterator: message types */ guint row; /* Attachement for current widget */ gint title_rows = -1; /* Title rows in msgctrl_table as * defined in glade designer. -1 * means there are no title rows. */ /* * Get the window pointer and a pointer to the tree of widgets it contains */ msgctrl_window = glade_xml_get_widget(dialog_xml, "msgctrl_window"); xml_tree = glade_get_widget_tree(GTK_WIDGET(msgctrl_window)); g_signal_connect((gpointer) msgctrl_window, "delete_event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); /* * Initialize the spinbutton pointers. */ buffer_control.count.ptr = glade_xml_get_widget(xml_tree, "msgctrl_spinbutton_count"); buffer_control.timer.ptr = glade_xml_get_widget(xml_tree, "msgctrl_spinbutton_timer"); /* * Locate the table widget to fill with controls and its structure. */ msgctrl_table = glade_xml_get_widget(xml_tree, "msgctrl_table"); table = GTK_TABLE(msgctrl_table); /* * How many title rows were set up in the table? The title rows are the * non-empty rows. Row numbers are zero-based. IMPORTANT: It is assumed * any row with at least one widget has widgets in all columns. WARNING: * This assumption is unwise if client layouts begin to be implemented to * have fewer message panes than the code supports! */ for (list = table->children; list; list = list->next) { child = list->data; if ((child->widget != 0) && (child->top_attach > title_rows)) { title_rows = child->top_attach; } } /* * The table is defined in the dialog created with the design tool, but * the dimensions of the table are not known at design time, so it must be * resized and built up at run-time. * * The table columns are: message type description, message buffer * enable, and one enable per message pane supported by the client code. * The client layout might not support all of the panes, but all of them * will be put into the table. * * The table rows are: the header rows + the number of message types that * the client and server support. We assume the XML file designer did * properly set up the header rows. Since MSG_TYPE_LAST is 1 more than * the actual number of types, and since title_rows is one less than the * actual number of header rows, they balance out when added together. */ gtk_table_resize(table, (guint)(MSG_TYPE_LAST + title_rows), (guint)(1 + 1 + NUM_TEXT_VIEWS)); /* * Now we need to put labels and checkboxes in each of the empty rows and * initialize the state of the checkboxes to match the default settings. * It helps if we change title_rows to a one-based number. Walk through * each message type and set the corresponding row of the table it needs * to go with. type is one-based. The msgctrl_defaults and _widget * arrays are zero based. */ title_rows += 1; for (type = 0; type < MSG_TYPE_LAST - 1; type += 1) { row = type + title_rows; /* * The message type description. Just put the the message type name * in a label, left-justified with some padding to keep it away from * the dialog frame and perhaps the neighboring checkbox. */ widget = gtk_label_new(msgctrl_defaults[type].description); gtk_misc_set_alignment(GTK_MISC(widget), 0.0f, 0.5f); gtk_misc_set_padding(GTK_MISC(widget), 2, 0); gtk_table_attach_defaults(table, widget, 0, 1, row, row + 1); gtk_widget_show(widget); /* * The buffer enable/disable. Display a check box that is preset to * the built-in default setting. */ msgctrl_widgets[type].buffer.ptr = gtk_check_button_new(); gtk_table_attach_defaults( table, msgctrl_widgets[type].buffer.ptr, 1, 2, row, row + 1); gtk_widget_show(msgctrl_widgets[type].buffer.ptr); /* * The message pane routings. Display a check box that is preset to * the built in defaults. */ /** * @todo Panes that are unsupported in the current layout should * always have their routing disabled, and should disallow user * interaction with the control but this logic is not yet implemented. */ for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { msgctrl_widgets[type].pane[pane].ptr = gtk_check_button_new(); gtk_table_attach_defaults( table, msgctrl_widgets[type].pane[pane].ptr, pane + 2, pane + 3, row, row + 1); gtk_widget_show(msgctrl_widgets[type].pane[pane].ptr); } } /* * Initialize the state variables for the checkbox and spinbutton controls * on the message control dialog and then set all the widgets to match the * client defautl settings. */ default_msgctrl_configuration(); load_msgctrl_configuration(); /* * Connect the control's buttons to the appropriate handlers. */ widget = glade_xml_get_widget(xml_tree, "msgctrl_button_save"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_msgctrl_button_save_clicked), NULL); widget = glade_xml_get_widget(xml_tree, "msgctrl_button_load"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_msgctrl_button_load_clicked), NULL); widget = glade_xml_get_widget(xml_tree, "msgctrl_button_defaults"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_msgctrl_button_defaults_clicked), NULL); widget = glade_xml_get_widget(xml_tree, "msgctrl_button_apply"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_msgctrl_button_apply_clicked), NULL); widget = glade_xml_get_widget(xml_tree, "msgctrl_button_close"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_msgctrl_button_close_clicked), NULL); } /** * Update the state of the message control dialog so the configuration matches * the currently selected settings. Do not call this before msgctrl_widgets[] * is initialized. It also really only makes sense to call it if changes have * been made to msgctrl_widgets[]. */ void update_msgctrl_configuration(void) { guint pane; /* Client-supported message pane */ guint type; /* Message type */ gtk_spin_button_set_value( GTK_SPIN_BUTTON(buffer_control.count.ptr), (gdouble) buffer_control.count.state); gtk_spin_button_set_value( GTK_SPIN_BUTTON(buffer_control.timer.ptr), (gdouble) buffer_control.timer.state); for (type = 0; type < MSG_TYPE_LAST - 1; type += 1) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(msgctrl_widgets[type].buffer.ptr), msgctrl_widgets[type].buffer.state); for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(msgctrl_widgets[type].pane[pane].ptr), msgctrl_widgets[type].pane[pane].state); } } } /** * Applies the current state of the checkboxes to the msgctrl_widgets state * variables and saves the settings to disk so the configuration persists * across client sessions. */ void save_msgctrl_configuration(void) { char pathbuf[MAX_BUF]; /* Buffer for a save file path name */ char textbuf[MAX_BUF]; /* Buffer for output to save file */ FILE* fptr; /* Message Control savefile pointer */ guint pane; /* Client-supported message pane */ guint type; /* Message type */ read_msgctrl_configuration(); /* Apply the displayed settings 1st */ snprintf(pathbuf, sizeof(pathbuf), "%s/.crossfire/msgs", getenv("HOME")); CONVERT_FILESPEC_TO_OS_FORMAT(pathbuf); if (make_path_to_file(pathbuf) == -1) { LOG(LOG_WARNING, "gtk-v2::save_msgctrl_configuration","Error creating %s",pathbuf); snprintf(textbuf, sizeof(textbuf), "Error creating %s, Message Control settings not saved.",pathbuf); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, textbuf); return; } if ((fptr = fopen(pathbuf, "w")) == NULL) { snprintf(textbuf, sizeof(textbuf), "Error opening %s, Message Control settings not saved.", pathbuf); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, textbuf); return; } /* * It might be best to check the status of all writes, but it is not done. */ fprintf(fptr, "# Message Control System Configuration\n"); fprintf(fptr, "#\n"); fprintf(fptr, "# Count: 1-96\n"); fprintf(fptr, "#\n"); fprintf(fptr, "C %u\n", buffer_control.count.state); fprintf(fptr, "#\n"); fprintf(fptr, "# Timer: 1-96 (8 ~= one second)\n"); fprintf(fptr, "#\n"); fprintf(fptr, "T %u\n", buffer_control.timer.state); fprintf(fptr, "#\n"); fprintf(fptr, "# type, buffer, pane[0], pane[1]...\n"); fprintf(fptr, "# Do not edit the 'type' field.\n"); fprintf(fptr, "# 0 == disable; 1 == enable.\n"); fprintf(fptr, "#\n"); for (type = 0; type < MSG_TYPE_LAST - 1; type += 1) { fprintf( fptr, "M %02d %d ", type+1, msgctrl_widgets[type].buffer.state); for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { fprintf(fptr, "%d ", msgctrl_widgets[type].pane[pane].state); } fprintf(fptr, "\n"); } fprintf(fptr, "#\n# End of Message Control System Configuration\n"); fclose(fptr); snprintf(textbuf, sizeof(textbuf), "Message Control settings saved to %s.", pathbuf); draw_ext_info(NDI_BLUE, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, textbuf); } /** * Setup the state of the message control dialog so the configuration matches * a previously saved configuration. */ void load_msgctrl_configuration(void) { char pathbuf[MAX_BUF]; /* Buffer for a save file path name */ char textbuf[MAX_BUF]; /* Buffer for input from save file */ char recordtype; /* Savefile data entry type found */ char* cptr; /* Pointer used when reading data */ FILE* fptr; /* Message Control savefile pointer */ guint pane; /* Client-supported message pane */ guint type; /* Message type */ guint error; /* Savefile parsing status */ message_control_t statebuf; /* Holding area for savefile values */ buffer_parameter_t countbuf; /* Holding area for savefile values */ buffer_parameter_t timerbuf; /* Holding area for savefile values */ guint cvalid, tvalid, mvalid; /* Counts the valid entries found */ snprintf(pathbuf, sizeof(pathbuf), "%s/.crossfire/msgs", getenv("HOME")); CONVERT_FILESPEC_TO_OS_FORMAT(pathbuf); if ((fptr = fopen(pathbuf, "r")) == NULL) { snprintf(textbuf, sizeof(textbuf), "Error opening %s, Message Control settings not loaded.",pathbuf); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, textbuf); return; } /* * When we parse the file we buffer each entire record before any values * are applied to the client message control configuration. If any * problems are found at all, the entire record is skipped and the file * is reported as corrupt. Even if individual records are corrupt, the * rest of the file is processed. * * If more than one record for the same error type exists the last one is * used, but if too many records are found the file is reported as corrupt * even though it accepts all the data. */ error = 0; cvalid = 0; tvalid = 0; mvalid = 0; recordtype = '\0'; while(fgets(textbuf, MAX_BUF-1, fptr) != NULL) { if (textbuf[0] == '#' || textbuf[0] == '\n') { continue; } /* * Identify the savefile record type found. */ cptr = strtok(textbuf, "\t "); if ((cptr == NULL) || ((*cptr != 'C') && (*cptr != 'T') && (*cptr != 'M'))) { error += 1; continue; } recordtype = *cptr; /* * Process the following fields by record type */ if (recordtype == 'C') { cptr = strtok(NULL, "\n"); if ((cptr == NULL) || (sscanf(cptr, "%u", &countbuf.state) != 1) || (countbuf.state < 1) || (countbuf.state > 96)) { error += 1; continue; } } if (recordtype == 'T') { cptr = strtok(NULL, "\n"); if ((cptr == NULL) || (sscanf(cptr, "%u", &timerbuf.state) != 1) || (timerbuf.state < 1) || (timerbuf.state > 96)) { error += 1; continue; } } if (recordtype == 'M') { cptr = strtok(NULL, "\t "); if ((cptr == NULL) || (sscanf(cptr, "%d", &type) != 1) || (type < 1) || (type >= MSG_TYPE_LAST)) { error += 1; continue; } cptr = strtok(NULL, "\t "); if ((cptr == NULL) || (sscanf(cptr, "%d", &statebuf.buffer.state) != 1) || (statebuf.buffer.state < 0) || (statebuf.buffer.state > 1)) { error += 1; continue; } for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { cptr = strtok(NULL, "\t "); if ((cptr == NULL) || (sscanf(cptr, "%d", &statebuf.pane[pane].state) != 1) || (statebuf.pane[pane].state < 0) || (statebuf.pane[pane].state > 1)) { error += 1; continue; } } /* * Ignore the record if it has too many fields. This might be a * bit strict, but it does help enforce the file integrity in the * event that the the number of supported panels increases in the * future. */ cptr = strtok(NULL, "\n"); if (cptr != NULL) { error += 1; continue; } } /* * Remember, type is one-based, but the index into an array is zero- * based, so adjust type. Also, since the record parsed out fine, * increment the number of valid records found. Apply all the values * read to the buffer_control structure and msgctrl_widgets[] array so * the dialog can be updated when all data has been read. */ if (recordtype == 'C') { buffer_control.count.state = countbuf.state; cvalid += 1; } if (recordtype == 'T') { buffer_control.timer.state = timerbuf.state; tvalid += 1; } if (recordtype == 'M') { type -= 1; msgctrl_widgets[type].buffer.state = statebuf.buffer.state; for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { msgctrl_widgets[type].pane[pane].state = statebuf.pane[pane].state; } mvalid += 1; } } fclose(fptr); /* * If there was any oddity with the data file, report it as corrupted even * if some of the values were used. A corrupted file can be uncorrupted * by loading it and saving it again. A found value is needed for count, * timer, and each message type. */ if ((error > 0) || (cvalid != 1) || (tvalid != 1) || (mvalid != MSG_TYPE_LAST - 1)) { snprintf(textbuf, sizeof(textbuf), "Corrupted Message Control settings in %s.", pathbuf); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, textbuf); LOG(LOG_ERROR, "gtk-v2::load_msgctrl_configuration", "Error loading %s. %s\n", pathbuf, textbuf); } /* * If any data was accepted from the save file, report that settings were * loaded. Apply the loaded values to the Message Control dialog checkbox * widgets. so they reflect the states that were previously saved. */ if ((cvalid + tvalid + mvalid) > 0) { snprintf(textbuf, sizeof(textbuf), "Message Control settings loaded from %s", pathbuf); draw_ext_info( NDI_BLUE, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, textbuf); update_msgctrl_configuration(); /* Update checkboxes w/ loaded data */ } } /** * Setup the state of the message control dialog so the configuration matches * the default settings built in to the client. * * Iterate through each message type. For each, copy the built-in client * default to the Message Control dialog state variables. All supported * defaults are copied, not just the ones supported by the layout. */ void default_msgctrl_configuration(void) { guint pane; /* Client-supported message pane */ guint type; /* Message type */ buffer_control.count.state = (guint) buffer_control.count.default_state; buffer_control.timer.state = (guint) buffer_control.timer.default_state; for (type = 0; type < MSG_TYPE_LAST - 1; type += 1) { msgctrl_widgets[type].buffer.state = msgctrl_defaults[type].buffer; for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { msgctrl_widgets[type].pane[pane].state = msgctrl_defaults[type].pane[pane]; } } update_msgctrl_configuration(); } /** * Reads the state of the message control dialog and applies the settings to * the msgctrl_widgets[] state variables that control the message routing * and duplicate suppression system. */ void read_msgctrl_configuration(void) { guint pane; /* Client-supported message pane */ guint type; /* Message type */ buffer_control.count.state = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(buffer_control.count.ptr)); buffer_control.timer.state = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(buffer_control.timer.ptr)); /* * Iterate through each message type. For each, record the value of the * message duplicate suppression checkbox, and also obtain the routing * settings for all client supported panels (even if the layout does not * support them all. */ for (type = 0; type < MSG_TYPE_LAST - 1; type += 1) { msgctrl_widgets[type].buffer.state = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(msgctrl_widgets[type].buffer.ptr)); for (pane = 0; pane < NUM_TEXT_VIEWS; pane += 1) { msgctrl_widgets[type].pane[pane].state = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(msgctrl_widgets[type].pane[pane].ptr)); } } } /** * When the message control dialog save button is pressed, the currently shown * settings are applied for immediate use and they are saved to disk so the * settings persist across client sessions. Saved settings automatically * load and apply when the client is started. * * @param button * @param user_data */ void on_msgctrl_button_save_clicked (GtkButton *button, gpointer user_data) { read_msgctrl_configuration(); save_msgctrl_configuration(); } /** * When the message control dialog load button is pressed, the settings last * saved are restored and applied. It may be used to "undo" both applied and * unapplied setting changes. * * @param button * @param user_data */ void on_msgctrl_button_load_clicked (GtkButton *button, gpointer user_data) { load_msgctrl_configuration(); } /** * When the message control dialog defaults button is pressed, the default * settings built into the client are restored and applied. * * @param button * @param user_data */ void on_msgctrl_button_defaults_clicked (GtkButton *button, gpointer user_data) { default_msgctrl_configuration(); } /** * When the message control dialog apply button is pressed, the currently * displayed settings are applied. The dialog is not dismissed, but remains * open for further adjustments to be made. * * @param button * @param user_data */ void on_msgctrl_button_apply_clicked (GtkButton *button, gpointer user_data) { read_msgctrl_configuration(); } /** * When the message control dialog close button is pressed, the currently * displayed settings are applied and the dialog is dismissed. * * @param button * @param user_data */ void on_msgctrl_button_close_clicked (GtkButton *button, gpointer user_data) { read_msgctrl_configuration(); gtk_widget_hide(msgctrl_window); } /** * Shows the message control dialog when the menu item is activated. The * settings shown on the dialog when it is activated are the settings * currently in use. * * @param menuitem * @param user_data */ void on_msgctrl_activate (GtkMenuItem *menuitem, gpointer user_data) { gtk_widget_show(msgctrl_window); } crossfire-client-1.70.0/gtk-v2/src/image.h0000644000014500000120000000415411731277013015120 00000000000000/* * char *rcsid_gtk2_image_h = * "$Id: image.h 12884 2010-04-12 06:58:52Z mwedel $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2008,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file image.h * Pixmap data. This is abstracted in the sense that the code here does not * care what the data points to (hence the void). The module using this data * should know whether it is these point to png data or image data of whatever * form. The module is not required to use all these fields - as png data * includes transparancy, it will generally not use the mask fields and instead * just put its data into the appropriate image fields. * * As images can now be of variable size (and potentially re-sized), the size * information is stored here. */ #define DEFAULT_IMAGE_SIZE 32 #define MAXPIXMAPNUM 10000 #ifdef HAVE_OPENGL #include #endif typedef struct PixmapInfo { void *icon_mask, *icon_image; uint16 icon_width, icon_height; void *map_mask, *map_image; uint16 map_width, map_height; void *fog_image; uint16 smooth_face; /**< A face used for smoothing with this face. */ #ifdef HAVE_OPENGL GLuint map_texture, fog_texture; #endif } PixmapInfo; extern PixmapInfo *pixmaps[MAXPIXMAPNUM]; extern int have_new_image; crossfire-client-1.70.0/gtk-v2/src/map.c0000644000014500000120000006526611731277013014621 00000000000000const char * const rcsid_gtk2_map_c = "$Id: map.c 14690 2011-06-23 20:26:31Z ryo_saeba $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/map.c * Handles map related code in terms of allocation, insertion of new objects, * and actual rendering (although the sdl rendering is in the sdl file */ #include #include #include #ifndef WIN32 #include #endif #include /* Pick up the gtk headers we need */ #include #include #ifndef WIN32 #include #else #include #include #endif #include #include "client-types.h" #include "image.h" #include "client.h" #include "main.h" #include "mapdata.h" #include "gtk2proto.h" static uint8 map_updated = 0; /* * Added for fog of war. Current size of the map structure in memory. * We assume a rectangular map so this is the length of one side. * command.c needs to know about this so not static * FIX ME: Don't assume rectangle */ PlayerPosition pl_pos; GtkWidget *map_drawing_area, *map_notebook; GdkGC *mapgc; int map_image_size=DEFAULT_IMAGE_SIZE; int map_image_half_size=DEFAULT_IMAGE_SIZE/2; static GdkBitmap *dark1, *dark2, *dark3; static GdkPixmap *dark; /* * This should really be one of the CONFIG values, or perhaps a checkbox * someplace that displays frame rate. */ int time_map_redraw=0; #if WIN32 /** * * @param tp * @param tzp * @return 0 indicates success. */ int gettimeofday(struct timeval* tp, void* tzp) { DWORD t; t = timeGetTime(); tp->tv_sec = t / 1000; tp->tv_usec = t % 1000; /* 0 indicates that the call succeeded. */ return 0; } #endif /** * This initializes the stuff we need for the map. * * @param window_root The client's main playing window. */ void map_init(GtkWidget *window_root) { GladeXML* xml_tree; xml_tree = glade_get_widget_tree(GTK_WIDGET(window_root)); map_drawing_area = glade_xml_get_widget(xml_tree, "drawingarea_map"); map_notebook = glade_xml_get_widget(xml_tree, "map_notebook"); g_signal_connect ((gpointer) map_drawing_area, "expose_event", G_CALLBACK (on_drawingarea_map_expose_event), NULL); g_signal_connect ((gpointer) map_drawing_area, "button_press_event", G_CALLBACK (on_drawingarea_map_button_press_event), NULL); g_signal_connect ((gpointer) map_drawing_area, "configure_event", G_CALLBACK (on_drawingarea_map_configure_event), NULL); #if 0 gtk_widget_set_size_request (map_drawing_area, use_config[CONFIG_MAPWIDTH] * map_image_size, use_config[CONFIG_MAPHEIGHT] * map_image_size); #endif mapgc = gdk_gc_new(map_drawing_area->window); gtk_widget_show(map_drawing_area); gtk_widget_add_events (map_drawing_area, GDK_BUTTON_PRESS_MASK); if (use_config[CONFIG_DISPLAYMODE] == CFG_DM_PIXMAP) { int x,y; GdkGC *darkgc; /* * This is used when drawing with GdkPixmaps. Create another surface, * as well as some light/dark images */ dark = gdk_pixmap_new(map_drawing_area->window, map_image_size, map_image_size, -1); gdk_draw_rectangle(dark, map_drawing_area->style->black_gc, TRUE, 0, 0, map_image_size, map_image_size); dark1 = gdk_pixmap_new(map_drawing_area->window, map_image_size, map_image_size, 1); dark2 = gdk_pixmap_new(map_drawing_area->window, map_image_size, map_image_size, 1); dark3 = gdk_pixmap_new(map_drawing_area->window, map_image_size, map_image_size, 1); /* * We need our own GC here because we are working with single bit depth * images */ darkgc = gdk_gc_new(dark1); gdk_gc_set_foreground(darkgc, &root_color[NDI_WHITE]); /* Clear any garbage values we get when we create the bitmaps */ gdk_draw_rectangle(dark1, darkgc, TRUE, 0, 0, map_image_size, map_image_size); gdk_draw_rectangle(dark2, darkgc, TRUE, 0, 0, map_image_size, map_image_size); gdk_draw_rectangle(dark3, darkgc, TRUE, 0, 0, map_image_size, map_image_size); gdk_gc_set_foreground(darkgc, &root_color[NDI_BLACK]); for (x=0; xwindow, mapgc, image, srcx, srcy, dstx, dsty, sizex, sizey); } /** * * @param dx * @param dy */ int display_mapscroll(int dx, int dy) { #ifdef HAVE_SDL if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) return sdl_mapscroll(dx,dy); else #endif return 0; } /** * Draw anything in adjacent squares that could smooth on given square * * @param mx * @param my Square to smooth on. * You should not call this function to smooth on a 'completely black' square. * @param layer Layer to examine (we smooth only one layer at a time) * @param picx * @param picy Place on the map_drawing_area->window to draw */ void drawsmooth (int mx,int my,int layer,int picx,int picy){ static int dx[8]={0,1,1,1,0,-1,-1,-1}; static int dy[8]={-1,-1,0,1,1,1,0,-1}; static int bweights[8]={2,0,4,0,8,0,1,0}; static int cweights[8]={0,2,0,4,0,8,0,1}; static int bc_exclude[8]={ 1+2,/*north exclude northwest (bit0) and northeast(bit1)*/ 0, 2+4,/*east exclude northeast and southeast*/ 0, 4+8,/*and so on*/ 0, 8+1, 0 }; int partdone[8]={0,0,0,0,0,0,0,0}; int slevels[8]; int sfaces[8]; int i,weight,weightC; int emx,emy; int smoothface; int hasFace = 0; for (i=0;i<=layer;i++) hasFace |= the_map.cells[mx][my].heads[i].face; if (!hasFace || !CAN_SMOOTH(the_map.cells[mx][my], layer)) { return; } for (i=0;i<8;i++){ emx=mx+dx[i]; emy=my+dy[i]; if ( (emx<0) || (emy<0) || (the_map.x<=emx) || (the_map.y<=emy)){ slevels[i]=0; sfaces[i]=0; /*black picture*/ } else if (the_map.cells[emx][emy].smooth[layer]<=the_map.cells[mx][my].smooth[layer]){ slevels[i]=0; sfaces[i]=0; /*black picture*/ }else{ slevels[i]=the_map.cells[emx][emy].smooth[layer]; sfaces[i]=pixmaps[the_map.cells[emx][emy].heads[layer].face]->smooth_face; } } /* * Now we have a list of smoothlevel higher than current square. There are * at most 8 different levels. so... check 8 times for the lowest one (we * draw from bottom to top!). */ while (1){ int lowest = -1; for (i=0;i<8;i++){ if ( (slevels[i]>0) && (!partdone[i]) && ((lowest<0) || (slevels[i]map_image) || (pixmaps[smoothface] == pixmaps[0])) continue; /*don't have the picture associated*/ if (weight>0){ draw_pixmap( weight*map_image_size, 0, picx, picy, picx-weight*map_image_size, picy, pixmaps[smoothface]->map_mask, pixmaps[smoothface]->map_image, map_image_size, map_image_size); } if (weightC>0){ draw_pixmap( weightC*map_image_size, map_image_size, picx, picy, picx-weightC*map_image_size, picy+map_image_size, pixmaps[smoothface]->map_mask, pixmaps[smoothface]->map_image, map_image_size, map_image_size); } } /* while there's some smooth to do */ } /** * * @param ax * @param ay * @param mx * @param my */ static void display_mapcell(int ax, int ay, int mx, int my) { int layer; /* First, we need to black out this space. */ gdk_draw_rectangle(map_drawing_area->window, map_drawing_area->style->black_gc, TRUE, ax*map_image_size, ay*map_image_size, map_image_size, map_image_size); /* * Now draw the different layers. Only draw if using fog of war or the * space isn't clear. */ if (use_config[CONFIG_FOGWAR] || !the_map.cells[mx][my].cleared) { for (layer=0; layer 0 && pixmaps[face]->map_image != NULL) { int src_x = pixmaps[face]->map_width - map_image_size;; int src_y = pixmaps[face]->map_height - map_image_size; int off_x=0, off_y=0; /* Normalize the source coordinates - clearly it can't be * be less than zero. If it is less than zero, this denotes * a 'small' image. By definition, the bottom right is the * origin of the image (an image 16 pixels high is drawn on the * bottom half of the space, not top), which is why * the offsets are negative of the base values. */ if (src_x<0) { off_x=-src_x; src_x=0; } if (src_y<0) { off_y = -src_y; src_y=0; } draw_pixmap( src_x, src_y, ax*map_image_size + off_x, ay*map_image_size + off_y, ax*map_image_size+map_image_size-pixmaps[face]->map_width, ay*map_image_size+map_image_size-pixmaps[face]->map_height, pixmaps[face]->map_mask, pixmaps[face]->map_image, pixmaps[face]->map_width>map_image_size?map_image_size:pixmaps[face]->map_width, pixmaps[face]->map_height>map_image_size?map_image_size:pixmaps[face]->map_height); } /* * Sometimes, it may happens we need to draw the smooth while there * is nothing to draw at that layer (but there was something at * lower layers). This is handled here. The else part is to take * into account cases where the smooth as already been handled 2 * code lines before */ if ( use_config[CONFIG_SMOOTH]) drawsmooth (mx, my, layer, ax*map_image_size, ay*map_image_size); /* draw big faces last (should overlap other objects) */ face = mapdata_bigface(ax, ay, layer, &sx, &sy); if (face > 0 && pixmaps[face]->map_image != NULL) { /* * This is pretty messy, because images are not required to be * an integral multiplier of the image size. There are really * 4 main variables: * source[xy]: Where within the pixmap to start grabbing pixels. * off[xy]: Offset from space edge on the visible map to start * drawing pixels. * off[xy] also determines how many pixels to draw * (map_image_size - off[xy]) * clip[xy]: Position of the clipmask. The position of the * clipmask is always at the upper left of the image as we * drawn it on the map, so for any given big image, it will * have the same values for all the pieces. However we * need to re-construct that location based on current * location. * * For a 32x72 image, it would be drawn like follows: * sourcey offy * top space: 0 24 * middle space: 8 0 * bottom space: 40 0 */ int dx, dy, sourcex, sourcey, offx, offy, clipx, clipy; dx = pixmaps[face]->map_width % map_image_size; offx = dx?(map_image_size -dx):0; clipx = (ax - sx)*map_image_size + offx; if (sx) { sourcex = sx * map_image_size - offx ; offx=0; } else { sourcex=0; } dy = pixmaps[face]->map_height % map_image_size; offy = dy?(map_image_size -dy):0; clipy = (ay - sy)*map_image_size + offy; if (sy) { sourcey = sy * map_image_size - offy; offy=0; } else { sourcey=0; } draw_pixmap( sourcex, sourcey, ax*map_image_size+offx, ay*map_image_size + offy, clipx, clipy, pixmaps[face]->map_mask, pixmaps[face]->map_image, map_image_size - offx, map_image_size - offy); } } /* else for processing the layers */ } /* * If this is a fog cell, do darkening of the space. otherwise, process * light/darkness - only do those if not a fog cell. */ if (use_config[CONFIG_FOGWAR] && the_map.cells[mx][my].cleared) { draw_pixmap(0, 0, ax*map_image_size, ay*map_image_size, ax*map_image_size, ay*map_image_size, dark1, dark, map_image_size, map_image_size); } else if (the_map.cells[mx][my].darkness > 192) { /* Full dark */ gdk_draw_rectangle (map_drawing_area->window, map_drawing_area->style->black_gc, TRUE,map_image_size*ax, map_image_size*ay, map_image_size, map_image_size); } else if (the_map.cells[mx][my].darkness> 128) { draw_pixmap(0, 0, ax*map_image_size, ay*map_image_size, ax*map_image_size, ay*map_image_size, dark1, dark, map_image_size, map_image_size); } else if (the_map.cells[mx][my].darkness> 64) { draw_pixmap(0, 0, ax*map_image_size, ay*map_image_size, ax*map_image_size, ay*map_image_size, dark2, dark, map_image_size, map_image_size); } else if (the_map.cells[mx][my].darkness> 1) { draw_pixmap(0, 0, ax*map_image_size, ay*map_image_size, ax*map_image_size, ay*map_image_size, dark3, dark, map_image_size, map_image_size); } } /** * * @param redraw */ void gtk_draw_map(int redraw) { int mx, my; int x, y; struct timeval tv1, tv2,tv3; long elapsed1, elapsed2; if(!redraw && !map_updated) return; if (time_map_redraw) gettimeofday(&tv1, NULL); for(x = 0; x < use_config[CONFIG_MAPWIDTH]; x++) { for(y = 0; y < use_config[CONFIG_MAPHEIGHT]; y++) { /* * mx,my represent the spaces on the 'virtual' map (ie, the_map * structure). x and y (from the for loop) represent the visible * screen. */ mx = pl_pos.x+x; my = pl_pos.y+y; if (redraw || the_map.cells[mx][my].need_update || the_map.cells[mx][my].need_resmooth) { display_mapcell(x, y, mx, my); the_map.cells[mx][my].need_update = 0; the_map.cells[mx][my].need_resmooth = 0; } } /* For y spaces */ } /* for x spaces */ if (time_map_redraw) gettimeofday(&tv2, NULL); if (time_map_redraw) { gettimeofday(&tv3, NULL); elapsed1 = (tv2.tv_sec - tv1.tv_sec)*1000000 + (tv2.tv_usec - tv1.tv_usec); elapsed2 = (tv3.tv_sec - tv2.tv_sec)*1000000 + (tv3.tv_usec - tv2.tv_usec); /* * I care about performance for 'long' updates, so put the check in to * make these a little more noticable */ if ((elapsed1 + elapsed2)>10000) LOG(LOG_INFO,"gtk-v2::sdl_gen_map","gen took %7ld, flip took %7ld, total = %7ld", elapsed1, elapsed2, elapsed1 + elapsed2); } } /** * The player has changed maps, so any info we have (for fog of war) is bogus, * so clear out all that old info. */ void display_map_newmap(void) { reset_map(); } /** * Resize_map_window is a NOOP for the time being - not sure if it will in fact * need to do something, since there are scrollbars for the map window now. * Note - this is note a window resize request, but rather process the size * (in spaces) of the map - is received from server. */ void resize_map_window(int x, int y) { /* We do an implicit clear, since after a resize, there may be some * left over pixels at the edge which will not get drawn on by map spaces. */ gdk_window_clear(map_drawing_area->window); draw_map(TRUE); } gboolean on_drawingarea_map_configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) { sint16 w = event->width / map_image_size, h=event->height / map_image_size; if (w > MAP_MAX_SIZE) w = MAP_MAX_SIZE; if (h > MAP_MAX_SIZE) h = MAP_MAX_SIZE; /* Only need to do something if the size actually changes in terms * of displayable mapspaces. */ if (w!= use_config[CONFIG_MAPWIDTH] || h!=use_config[CONFIG_MAPHEIGHT]) { /* We need to set the use_config values, even though we are not really using them, * because the setup processing basically expects the values returned from the * server to use these values. * Likewise, we need to call mapdata_set_size because we may try * to do map draws before we get the setup command from the server, and if it * is using the old values, that doesn't work quite right. */ use_config[CONFIG_MAPWIDTH] = w; use_config[CONFIG_MAPHEIGHT] = h; mapdata_set_size(use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); cs_print_string(csocket.fd, "setup mapsize %dx%d", use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); } return FALSE; } /** * Simple routine to put the splash icon in the map window. Only supported * with non-SDL right now. */ void draw_splash(void) { static GdkPixmap *splash; static int have_init=0; GdkBitmap *aboutgdkmask; int x,y, w, h; #include "../../pixmaps/crossfiretitle.xpm" if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_PIXMAP) { if (!have_init) { splash = gdk_pixmap_create_from_xpm_d(map_drawing_area->window, &aboutgdkmask, NULL, (gchar **)crossfiretitle_xpm); have_init=1; } gdk_window_clear(map_drawing_area->window); gdk_drawable_get_size(splash, &w, &h); x = (map_drawing_area->allocation.width- w)/2; y = (map_drawing_area->allocation.height - h)/2; /* * Clear the clip mask - it can be left in an inconsistent state from * last map redraw. */ gdk_gc_set_clip_mask(mapgc, NULL); gdk_draw_pixmap(map_drawing_area->window, mapgc, splash, 0, 0, x, y, w, h); } } /** * * @param redraw */ void draw_map(int redraw) { #ifdef HAVE_SDL if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_SDL) sdl_gen_map(redraw); else #endif #ifdef HAVE_OPENGL if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_OPENGL) opengl_gen_map(redraw); else #endif if (use_config[CONFIG_DISPLAYMODE]==CFG_DM_PIXMAP) { if (cpl.input_state == Metaserver_Select) draw_splash(); else gtk_draw_map(redraw); } } /** * * @param widget * @param event * @param user_data * @return FALSE */ gboolean on_drawingarea_map_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { draw_map(TRUE); return FALSE; } /** * * @param widget * @param event * @param user_data * @return FALSE */ gboolean on_drawingarea_map_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { int dx, dy, i, x, y, xmidl, xmidh, ymidl, ymidh; x=(int)event->x; y=(int)event->y; dx=(x-2)/map_image_size-(use_config[CONFIG_MAPWIDTH]/2); dy=(y-2)/map_image_size-(use_config[CONFIG_MAPHEIGHT]/2); xmidl=(use_config[CONFIG_MAPWIDTH]/2) * map_image_size; xmidh=(use_config[CONFIG_MAPWIDTH]/2 + 1) * map_image_size; ymidl=(use_config[CONFIG_MAPHEIGHT]/2) * map_image_size; ymidh=(use_config[CONFIG_MAPHEIGHT]/2 + 1) * map_image_size; switch (event->button) { case 1: look_at(dx,dy); break; case 2: case 3: if (xxmidh) i = 6; else i =3; if (y>ymidh) i += 2; else if (y>ymidl) i++; if (event->button==2) { switch (i) { case 0: fire_dir (8);break; case 1: fire_dir (7);break; case 2: fire_dir (6);break; case 3: fire_dir (1);break; case 5: fire_dir (5);break; case 6: fire_dir (2);break; case 7: fire_dir (3);break; case 8: fire_dir (4);break; } /* Only want to fire once */ clear_fire(); } else switch (i) { case 0: move_player (8);break; case 1: move_player (7);break; case 2: move_player (6);break; case 3: move_player (1);break; case 5: move_player (5);break; case 6: move_player (2);break; case 7: move_player (3);break; case 8: move_player (4);break; } } return FALSE; } /** * This isn't used - it is basically a prequel - we know we got a map command * from the server, but have digested it all yet. This can be useful if there * is info we know we need to store away or the like before it is destroyed, * but there isn't anything like that for the gtk client. */ void display_map_startupdate(void) { } /** * This is called after the map has been all digested. this should perhaps be * removed, and left to being done from from the main event loop. * * @param redraw If set, force redraw of all tiles. * @param notice If set, another call will follow soon. */ void display_map_doneupdate(int redraw, int notice) { map_updated |= redraw || !notice; } crossfire-client-1.70.0/gtk-v2/src/spells.c0000644000014500000120000005370411731277013015340 00000000000000const char * const rcsid_gtk2_spells_c = "$Id: spells.c 13816 2010-09-15 05:01:57Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2006-2007,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/spells.c * Handles spell related functionality. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "client.h" #include "image.h" #include "metaserver.h" #include "main.h" #include "gtk2proto.h" enum Styles { Style_Attuned, Style_Repelled, Style_Denied, Style_Normal, Style_Last }; static GtkListStore *spell_store; static GtkTreeSelection *spell_selection; static GtkWidget *spell_window, *spell_invoke, *spell_cast, *spell_options, *spell_treeview, *spell_label[Style_Last], *spell_eventbox[Style_Last]; enum { LIST_IMAGE, LIST_NAME, LIST_LEVEL, LIST_TIME, LIST_COST, LIST_DAMAGE, LIST_SKILL, LIST_PATH, LIST_DESCRIPTION, LIST_BACKGROUND, LIST_MAX_SP, LIST_TAG, LIST_FOREGROUND, LIST_FONT }; static const char *Style_Names[Style_Last] = { "spell_attuned", "spell_repelled", "spell_denied", "spell_normal" }; /**< The names of theme file styles that are used in the spell dialog. */ static gpointer description_renderer = NULL; /**< The cell renderer for the * spell dialog descriptions. */ static GtkStyle *spell_styles[Style_Last]; /**< The actual styles loaded, or * NULL if no styles were found. */ static int has_init = 0; /**< Whether or not the spell * dialog initialized since * the client started up. */ /** * Gets the style information for the inventory windows. This is a separate * function because if the user changes styles, it can be nice to re-load the * configuration. The style for the inventory/look is a bit special. That is * because with gtk, styles are widget wide - all rows in the widget would use * the same style. We want to adjust the styles based on other attributes. */ void spell_get_styles(void) { int i; GtkStyle *tmp_style; static int style_has_init=0; for (i=0; i < Style_Last; i++) { if (style_has_init && spell_styles[i]) g_object_unref(spell_styles[i]); tmp_style = gtk_rc_get_style_by_paths( gtk_settings_get_default(), NULL, Style_Names[i], G_TYPE_NONE); if (tmp_style) { spell_styles[i] = g_object_ref(tmp_style); } else { LOG(LOG_INFO, "spells.c::spell_get_styles", "Unable to find style for %s", Style_Names[i]); spell_styles[i] = NULL; } } style_has_init = 1; } /** * Used if a user just single clicks on an entry - at which point, we enable * the cast & invoke buttons. * * @param selection * @param model * @param path * @param path_currently_selected * @param userdata */ static gboolean spell_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer userdata) { gtk_widget_set_sensitive(spell_invoke, TRUE); gtk_widget_set_sensitive(spell_cast, TRUE); return TRUE; } /** * Adjust the line wrap width used by the spells dialog Description column * text renderer and force redraw of the rows to cause row height adjustment. * To compute the new wrap width, the widths of all other columns are * subtracted from the width of the spells window to determine the available * width for the description column. The remaining space is then configured * as the new wrap width. Once the new wrap is computed, mark all the rows * changed so that the renderer adjusts the row height to expand or contract * to fit the reformatted description. * * @param widget * @param user_data */ void on_spell_window_size_allocate(GtkWidget *widget, gpointer user_data) { guint i; guint width; gboolean valid; GtkTreeIter iter; guint column_count; GList *column_list; GtkTreeViewColumn *column; /* If the spell window has not been set up yet, do nothing. */ if (!has_init) return; /* * How wide is the spell window? */ width = spell_treeview->allocation.width; /* * How many columns are in the spell window tree view? */ column_list = gtk_tree_view_get_columns(GTK_TREE_VIEW(spell_treeview)); column_count = g_list_length(column_list); /* * Subtract the width of all but the last (Description) column from the * total window width to figure out how much may be used for the final * description column. */ for (i = 0; i < column_count - 1; i += 1) { column = g_list_nth_data(column_list, i); width -= gtk_tree_view_column_get_width(column); } /* * The column list allocated by gtk_tree_view_get_columns must be freed * when it is no longer needed. */ g_list_free(column_list); /* * Update the global variable used to configure the wrap-width for the * spell dialog description column, then apply it to the cell renderer. */ g_object_set(G_OBJECT(description_renderer), "wrap-width", width, NULL); /* * Traverse the spell store, and mark each row as changed. Get the first * row, mark it, and then process the rest of the rows (if there are any). * This re-flows the spell descriptions to the new wrap-width, and adjusts * the height of each row as needed to optimize the vertical space used. */ valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(spell_store), &iter); while (valid) { GtkTreePath *tree_path; tree_path = gtk_tree_model_get_path(GTK_TREE_MODEL(spell_store), &iter); gtk_tree_model_row_changed( GTK_TREE_MODEL(spell_store), tree_path, &iter); gtk_tree_path_free(tree_path); valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(spell_store), &iter); } } /** * When spell information updates, the treeview is cleared and re-populated. * The clear/re-populate is easier than "editing" the contents. */ void update_spell_information(void) { int i; Spell *spell; GtkTreeIter iter; char buf[MAX_BUF]; GtkStyle *row_style; GdkColor *foreground=NULL; GdkColor *background=NULL; PangoFontDescription *font=NULL; /* If the window/spellstore hasn't been created, return. */ if (!has_init) return; cpl.spells_updated = 0; /* We could try to do this in spell_get_styles, but if the window isn't * active, it won't work. This is called whenever the window is made * active, so we know it will work, and the time to set this info here, * even though it may not change often, is pretty trivial. */ for (i=0; i < Style_Last; i++) { if (spell_styles[i]) { gtk_widget_modify_fg(spell_label[i], GTK_STATE_NORMAL, &spell_styles[i]->text[GTK_STATE_NORMAL]); gtk_widget_modify_font(spell_label[i], spell_styles[i]->font_desc); gtk_widget_modify_bg(spell_eventbox[i], GTK_STATE_NORMAL, &spell_styles[i]->base[GTK_STATE_NORMAL]); } else { gtk_widget_modify_fg(spell_label[i],GTK_STATE_NORMAL, NULL); gtk_widget_modify_font(spell_label[i], NULL); gtk_widget_modify_bg(spell_eventbox[i],GTK_STATE_NORMAL, NULL); } } gtk_list_store_clear(spell_store); for (spell = cpl.spelldata; spell; spell=spell->next) { gtk_list_store_append(spell_store, &iter); buf[0] = 0; if (spell->sp) snprintf(buf, sizeof(buf), "%d Mana ", spell->sp); if (spell->grace) snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "%d Grace", spell->grace); if (spell->path & cpl.stats.denied) { row_style = spell_styles[Style_Denied]; } else if (spell->path & cpl.stats.repelled) { row_style = spell_styles[Style_Repelled]; } else if (spell->path & cpl.stats.attuned) { row_style = spell_styles[Style_Attuned]; } else row_style = spell_styles[Style_Normal]; if (row_style) { foreground = &row_style->text[GTK_STATE_NORMAL]; background = &row_style->base[GTK_STATE_NORMAL]; font = row_style->font_desc; } else { foreground=NULL; background=NULL; font=NULL; } gtk_list_store_set( spell_store, &iter, LIST_NAME, spell->name, LIST_LEVEL, spell->level, LIST_COST, buf, LIST_DAMAGE, spell->dam, LIST_SKILL, spell->skill, LIST_DESCRIPTION, spell->message, LIST_BACKGROUND, background, LIST_FOREGROUND, foreground, LIST_FONT, font, LIST_MAX_SP, (spell->sp > spell->grace) ? spell->sp : spell->grace, LIST_TAG, spell->tag, -1 ); } } /** * * @param menuitem * @param user_data */ void on_spells_activate(GtkMenuItem *menuitem, gpointer user_data) { GladeXML *xml_tree; GtkWidget *widget; if (!has_init) { GtkCellRenderer *renderer; GtkTreeViewColumn *column; spell_window = glade_xml_get_widget(dialog_xml, "spell_window"); xml_tree = glade_get_widget_tree(GTK_WIDGET(spell_window)); spell_invoke = glade_xml_get_widget(xml_tree,"spell_invoke"); spell_cast = glade_xml_get_widget(xml_tree,"spell_cast"); spell_options = glade_xml_get_widget(xml_tree,"spell_options"); spell_treeview = glade_xml_get_widget(xml_tree, "spell_treeview"); g_signal_connect((gpointer) spell_window, "size-allocate", G_CALLBACK(on_spell_window_size_allocate), NULL); g_signal_connect((gpointer) spell_window, "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); g_signal_connect((gpointer) spell_treeview, "row_activated", G_CALLBACK(on_spell_treeview_row_activated), NULL); g_signal_connect((gpointer) spell_cast, "clicked", G_CALLBACK(on_spell_cast_clicked), NULL); g_signal_connect((gpointer) spell_invoke, "clicked", G_CALLBACK(on_spell_invoke_clicked), NULL); widget = glade_xml_get_widget(xml_tree, "spell_close"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_spell_close_clicked), NULL); spell_store = gtk_list_store_new( 14, G_TYPE_OBJECT, /* Image - not used */ G_TYPE_STRING, /* Name */ G_TYPE_INT, /* Level */ G_TYPE_INT, /* Time */ G_TYPE_STRING, /* SP/Grace */ G_TYPE_INT, /* Damage */ G_TYPE_STRING, /* Skill name */ G_TYPE_INT, /* Spell path */ G_TYPE_STRING, /* Description */ GDK_TYPE_COLOR, /* Background color of the entry */ G_TYPE_INT, G_TYPE_INT, GDK_TYPE_COLOR, PANGO_TYPE_FONT_DESCRIPTION ); gtk_tree_view_set_model( GTK_TREE_VIEW(spell_treeview), GTK_TREE_MODEL(spell_store)); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(spell_treeview), TRUE); /* Note: it is intentional we don't show (render) some fields: * image - we don't have images right now it seems. * time - not sure if it worth the space. * spell path - done by color * * Note: Cell alignment is set to top right instead of the default, * to improve readability when descriptions wrap to multiple lines. */ renderer = gtk_cell_renderer_text_new(); renderer->xalign = 0; renderer->yalign = 0; column = gtk_tree_view_column_new_with_attributes( "Spell", renderer, "text", LIST_NAME, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(spell_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_NAME); gtk_tree_view_column_add_attribute( column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute( column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute( column, renderer, "font-desc", LIST_FONT); renderer = gtk_cell_renderer_text_new(); renderer->xalign = 0.4; renderer->yalign = 0; column = gtk_tree_view_column_new_with_attributes( "Level", renderer, "text", LIST_LEVEL, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(spell_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_LEVEL); gtk_tree_view_column_add_attribute( column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute( column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute( column, renderer, "font-desc", LIST_FONT); renderer = gtk_cell_renderer_text_new(); renderer->xalign = 0.4; renderer->yalign = 0; column = gtk_tree_view_column_new_with_attributes( "Cost/Cast", renderer, "text", LIST_COST, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(spell_treeview), column); /* Since this is a string column, it would do a string sort. Instead, * we set up a int column and tie this column to sort on that. */ gtk_tree_view_column_set_sort_column_id(column, LIST_MAX_SP); gtk_tree_view_column_add_attribute( column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute( column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute( column, renderer, "font-desc", LIST_FONT); renderer = gtk_cell_renderer_text_new(); renderer->xalign = 0.4; renderer->yalign = 0; column = gtk_tree_view_column_new_with_attributes( "Damage", renderer, "text", LIST_DAMAGE, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(spell_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_DAMAGE); gtk_tree_view_column_add_attribute( column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute( column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute( column, renderer, "font-desc", LIST_FONT); column = gtk_tree_view_column_new_with_attributes( "Skill", renderer, "text", LIST_SKILL, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(spell_treeview), column); gtk_tree_view_column_set_sort_column_id(column, LIST_SKILL); gtk_tree_view_column_add_attribute( column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute( column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute( column, renderer, "font-desc", LIST_FONT); renderer = gtk_cell_renderer_text_new(); renderer->xalign = 0; renderer->yalign = 0; column = gtk_tree_view_column_new_with_attributes( "Description", renderer, "text", LIST_DESCRIPTION, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(spell_treeview), column); gtk_tree_view_column_add_attribute( column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute( column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute( column, renderer, "font-desc", LIST_FONT); /* * Set up the description column so it wraps lengthy descriptions over * multiple lines and at word boundaries. A default wrap-width is * applied to constrain the column width to a reasonable value. The * actual value used here is somewhat unimportant since a corrected * width is computed and applied later, but, it does approximate the * column size that is appropriate for the dialog's default width. */ g_object_set(G_OBJECT(renderer), "wrap-width", 300, "wrap-mode", PANGO_WRAP_WORD, NULL); /* * Preserve the description text cell renderer pointer to facilitate * setting the wrap-width relative to the dialog's size and content. */ description_renderer = renderer; spell_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(spell_treeview)); gtk_tree_selection_set_mode(spell_selection, GTK_SELECTION_BROWSE); gtk_tree_selection_set_select_function( spell_selection, spell_selection_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id( GTK_TREE_SORTABLE(spell_store), LIST_NAME, GTK_SORT_ASCENDING); /* The style code will set the colors for these */ spell_label[Style_Attuned] = glade_xml_get_widget(xml_tree, "spell_label_attuned"); spell_label[Style_Repelled] = glade_xml_get_widget(xml_tree, "spell_label_repelled"); spell_label[Style_Denied] = glade_xml_get_widget(xml_tree, "spell_label_denied"); spell_label[Style_Normal] = glade_xml_get_widget(xml_tree, "spell_label_normal"); /* We use eventboxes because the label widget is a transparent widget. * We can't set the background in it and have it work. But we can set * the background in the event box, and put the label widget in the * eventbox. */ spell_eventbox[Style_Attuned] = glade_xml_get_widget(xml_tree, "spell_eventbox_attuned"); spell_eventbox[Style_Repelled] = glade_xml_get_widget(xml_tree, "spell_eventbox_repelled"); spell_eventbox[Style_Denied] = glade_xml_get_widget(xml_tree, "spell_eventbox_denied"); spell_eventbox[Style_Normal] = glade_xml_get_widget(xml_tree, "spell_eventbox_normal"); } gtk_widget_set_sensitive(spell_invoke, FALSE); gtk_widget_set_sensitive(spell_cast, FALSE); gtk_widget_show(spell_window); spell_get_styles(); has_init = 1; /* Must be called after has_init is set to 1 */ update_spell_information(); } /** * * @param treeview * @param path * @param column * @param user_data */ void on_spell_treeview_row_activated(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data) { int tag; char command[MAX_BUF]; const char *options=NULL; GtkTreeIter iter; GtkTreeModel *model; model = gtk_tree_view_get_model(treeview); if (gtk_tree_model_get_iter(model, &iter, path)) { gtk_tree_model_get(model, &iter, LIST_TAG, &tag, -1); if (!tag) { LOG(LOG_ERROR, "spells.c::on_spell_cast_clicked", "Unable to get spell tag\n"); return; } snprintf(command, MAX_BUF-1, "cast %d %s", tag, options); send_command(command, -1, 1); } } /** * * @param button * @param user_data */ void on_spell_cast_clicked(GtkButton *button, gpointer user_data) { int tag; char command[MAX_BUF]; const char *options = NULL; GtkTreeIter iter; GtkTreeModel *model; options = gtk_entry_get_text(GTK_ENTRY(spell_options)); if (gtk_tree_selection_get_selected(spell_selection, &model, &iter)) { gtk_tree_model_get(model, &iter, LIST_TAG, &tag, -1); if (!tag) { LOG(LOG_ERROR, "spells.c::on_spell_cast_clicked", "Unable to get spell tag\n"); return; } snprintf(command, MAX_BUF-1, "cast %d %s", tag, options); send_command(command, -1, 1); } } /** * * @param button * @param user_data */ void on_spell_invoke_clicked(GtkButton *button, gpointer user_data) { int tag; char command[MAX_BUF]; const char *options=NULL; GtkTreeIter iter; GtkTreeModel *model; options = gtk_entry_get_text(GTK_ENTRY(spell_options)); if (gtk_tree_selection_get_selected(spell_selection, &model, &iter)) { gtk_tree_model_get(model, &iter, LIST_TAG, &tag, -1); if (!tag) { LOG(LOG_ERROR, "spells.c::on_spell_invoke_clicked", "Unable to get spell tag\n"); return; } snprintf(command, MAX_BUF-1, "invoke %d %s", tag, options); send_command(command, -1, 1); } } /** * * @param button * @param user_data */ void on_spell_close_clicked(GtkButton *button, gpointer user_data) { gtk_widget_hide(spell_window); } crossfire-client-1.70.0/gtk-v2/src/magicmap.c0000644000014500000120000001127411731277013015610 00000000000000const char * const rcsid_gtk2_magicmap_c = "$Id: magicmap.c 12987 2010-04-27 03:50:58Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/magicmap.c * Covers drawing the magic map. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "client.h" #include "main.h" extern GtkWidget *magic_map; /**< main.c - drawing area for the magic map */ extern GtkWidget *map_notebook; /**< main.c - drawing areas for the maps */ extern GdkColor root_color[NUM_COLORS]; static GdkGC *magic_map_gc=NULL; /** * Draws the magic map - basically, it is just a simple encoding of space X is * color C. */ void draw_magic_map(void) { int x=0, y=0; /* * This can happen if a person selects the magic map pane before actually * getting any magic map data */ if (!cpl.magicmap) return; /* * Have to set this so that the gtk_widget_show below actually creates the * widget. Switch to this page when person actually casts magic map spell. */ gtk_notebook_set_current_page(GTK_NOTEBOOK(map_notebook), MAGIC_MAP_PAGE); gtk_widget_show(magic_map); if (!magic_map_gc) magic_map_gc = gdk_gc_new (magic_map->window); gdk_gc_set_foreground (magic_map_gc, &root_color[0]); gdk_draw_rectangle (magic_map->window, magic_map_gc, TRUE, 0, 0, magic_map->allocation.width, magic_map->allocation.height); cpl.mapxres = magic_map->allocation.width/cpl.mmapx; cpl.mapyres = magic_map->allocation.height/cpl.mmapy; if (cpl.mapxres < 1 || cpl.mapyres<1) { LOG(LOG_WARNING,"gtk-v2::draw_magic_map","magic map resolution less than 1, map is %dx%d", cpl.mmapx, cpl.mmapy); return; } /* * In theory, cpl.mapxres and cpl.mapyres do not have to be the same. * However, it probably makes sense to keep them the same value. Need to * take the smaller value. */ if (cpl.mapxres>cpl.mapyres) cpl.mapxres=cpl.mapyres; else cpl.mapyres=cpl.mapxres; /* * This is keeping the same unpacking scheme that the server uses to pack * it up. */ for (y = 0; y < cpl.mmapy; y++) { for (x = 0; x < cpl.mmapx; x++) { uint8 val = cpl.magicmap[y*cpl.mmapx + x]; gdk_gc_set_foreground( magic_map_gc, &root_color[val&FACE_COLOR_MASK]); gdk_draw_rectangle(magic_map->window, magic_map_gc, TRUE, cpl.mapxres*x, cpl.mapyres*y, cpl.mapxres, cpl.mapyres); } } } /** * Flash the player position on the magic map */ void magic_map_flash_pos(void) { /* * Don't want to keep doing this if the user switches back to the map * window. */ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(map_notebook))!=MAGIC_MAP_PAGE) { cpl.showmagic=0; } if (!cpl.showmagic) return; cpl.showmagic ^=2; if (cpl.showmagic & 2) { gdk_gc_set_foreground (magic_map_gc, &root_color[0]); } else { gdk_gc_set_foreground (magic_map_gc, &root_color[1]); } gdk_draw_rectangle (magic_map->window, magic_map_gc, TRUE, cpl.mapxres*cpl.pmapx, cpl.mapyres*cpl.pmapy, cpl.mapxres, cpl.mapyres); } /** * * @param widget * @param event * @param user_data * @return FALSE */ gboolean on_drawingarea_magic_map_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { draw_magic_map(); return FALSE; } crossfire-client-1.70.0/gtk-v2/src/opengl.c0000644000014500000120000011536611731277013015325 00000000000000const char * const rcsid_gtk2_opengl_c = "$Id: opengl.c 12987 2010-04-27 03:50:58Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/opengl.c * Implements an opengl version of the map renderer. I've tried to keep this * platform generic, but there are just some things that must be tied to the * window system is is using, namely, window creation and flipping the data * buffers. For that, on X, we use to use glx - MSW 2005-03-12 * * NOTE: Using dmalloc with opengl causes problems - it gets an invalid * allocation - I haven't dug through it, but my guess is that some internal * opengl/glx routine is doing something like a malloc(0) which dmalloc * catches. */ #include #ifdef HAVE_OPENGL #include #include #include #ifndef WIN32 #include #else #include #include #endif #include #include #include "main.h" #include "image.h" #include "mapdata.h" #include "gtk2proto.h" /* Start of Open GL includes */ #include #include #ifndef WIN32 #include #endif extern int time_map_redraw; #ifndef WIN32 static Display *display; /* X display & window for glx buffer swapping */ static Window window; #else static HDC devicecontext; /* Windows device context for windows buffer swapping */ #endif static int width=1, height=1; /** * This function does the generic initialization for opengl and does not use * any machine specific calls. */ static void init_opengl_common(void) { GLint texSize; /* Need to enable texture mapping */ glEnable(GL_TEXTURE_2D); glShadeModel(GL_SMOOTH); /* Need to enable alpha blending */ glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); #ifndef WIN32 glViewport(0, 0, (float)width, (float)height); #else /* * There is a bug somewhere that causes the viewport to be shifted up by * 25-MAPHEIGHT tiles when run in Windows. Don't know yet what causes * this, but this is a bad hack to fix it. */ glViewport(0, (use_config[CONFIG_MAPHEIGHT]-25)*32, (float)width, (float)height); #endif glMatrixMode(GL_PROJECTION); glLoadIdentity(); /* Make the upper left 0,0 coordinate */ glOrtho(0.0f,width,height,0.0f,-1.0f,1.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glFlush(); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize); LOG(LOG_INFO,"gtk-v2::opengl_common", "Maximum texture size is %d\n", texSize); } #ifndef WIN32 /** * GLX (X-Windows) specific OpenGL init * * @param drawingarea */ void init_glx_opengl(GtkWidget* drawingarea) { GLXContext ctx; XVisualInfo *vi; int attrListDbl[] = { GLX_RGBA, GLX_DOUBLEBUFFER, GLX_RED_SIZE, 4, GLX_GREEN_SIZE, 4, GLX_BLUE_SIZE, 4, GLX_ALPHA_SIZE, 4, GLX_DEPTH_SIZE, 16, None }; XSetWindowAttributes attr; Visual *v; /* Need to tuck these away, because they are needed for glXSwappBuffers() */ display = GDK_WINDOW_XDISPLAY(drawingarea->window); vi = glXChooseVisual(display, gdk_x11_get_default_screen (), attrListDbl); width = drawingarea->allocation.width; height = drawingarea->allocation.height; /* * On many systems, the default visual used by the display doesn't have the * features we need (alpha channel, etc). The only way around this is to * create a subwindow with the ideal visual. As an oddity, we need to * create a colormap if using a different visual or we get a BadMatch * error. */ v = DefaultVisual(display, gdk_x11_get_default_screen ()); attr.colormap= XCreateColormap(display, GDK_WINDOW_XID(drawingarea->window), vi->visual, AllocNone); window = XCreateWindow(display, GDK_WINDOW_XID(drawingarea->window), 0, 0, width, height, 0, vi->depth, InputOutput, vi->visual, CWColormap, &attr); XMapWindow(display,window); if (!vi) { LOG(LOG_WARNING,"gtk-v2::init_glx_opengl", "Could not get double buffered screen!\n"); } ctx = glXCreateContext(display, vi, 0, GL_TRUE); if (!glXMakeCurrent(display, window, ctx)) { LOG(LOG_ERROR,"gtk-v2::init_glx_opengl", "Could not set opengl context!\n"); exit(1); } if (glXIsDirect(display, ctx)) LOG(LOG_INFO,"gtk-v2::init_glx_opengl", "Direct rendering is available!\n"); else LOG(LOG_INFO,"gtk-v2::init_glx_opengl", "Direct rendering is not available!\n"); } #endif /* #ifndef WIN32 */ #ifdef WIN32 /** * WGL (MS Windows) specific OpenGL init * * @param drawingarea */ void init_wgl_opengl(GtkWidget* drawingarea) { HGLRC glctx; HDC dctx; int pixelformat; PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), //size of structure 1, //default version PFD_DRAW_TO_WINDOW | //window drawing support PFD_SUPPORT_OPENGL | //opengl support PFD_DOUBLEBUFFER, //double buffering support PFD_TYPE_RGBA, //RGBA color mode 16, //16 bit color mode 0, 0, 0, 0, 0, 0, //ignore color bits 4, //4 bits alpha buffer 0, //ignore shift bit 0, //no accumulation buffer 0, 0, 0, 0, //ignore accumulation bits 16, //16 bit z-buffer size 0, //no stencil buffer 0, //no aux buffer PFD_MAIN_PLANE, //main drawing plane 0, //reserved 0, 0, 0 //layer masks ignored }; width = drawingarea->allocation.width; height = drawingarea->allocation.height; dctx = GetDC(GDK_WINDOW_HWND(drawingarea->window)); devicecontext = dctx; /* Get the closest matching pixel format to what we specified and set it */ pixelformat = ChoosePixelFormat(dctx, &pfd); SetPixelFormat(dctx, pixelformat, &pfd); glctx = wglCreateContext(dctx); wglMakeCurrent(dctx, glctx); } #endif /* #ifdef WIN32 */ /** * Takes te GtkWindow to draw on - this should always be 'drawingarea' * Calls the correct platform-specific initialization code, then the generic. * * @param drawingarea */ void init_opengl(GtkWidget* drawingarea) { #ifndef WIN32 init_glx_opengl(drawingarea); #else init_wgl_opengl(drawingarea); #endif init_opengl_common(); } /* * We set up a table of darkness - when opengl draws the first layer, it fills * this in - in this way, we have a table of all the darkness values that we * should use - this makes dealing with darkness much faster, as we don't have * to see if the space is has valid darkness, etc. We add 2 to the value to * take into acount the padding of an extra space (thus, don't need special * logic for final row/column). That is +1 value. but the last row also has * the right/bottom side vertices, and that is where the other +1 comes from */ static uint16 map_darkness[(MAP_MAX_SIZE+2)*2][(MAP_MAX_SIZE+2)*2]; /* * This is darkness to use if we have no darkness information. 0 makes sense * for standard behaviour, but I find setting this to 255 makes for some * interesting smoothing effects relative to the edge of the screen and blocked * spaces. I'm not sure if anything other than 0 and 255 would be useful. */ #define DEFAULT_DARKNESS 0 /** * This lights a space in opengl mode. It is effectively the same quality as * the sdl per pixel lighting, but opengl makes the work much easier. * Basically, divide the space into 4 smaller subspaces. We then draw these * 4 squares, setting the color of the different vertices on a average of our * space lightness and that of the neighboring space for the outside vertices. * For the inside (middle) one, we just use our value. Note that this code * uses the light info of all 8 neighboring spaces. * * I draw all the squares starting in the upper left position and then going to * upper right, bottom right, bottom left * * As a note, for GlColor4ub, 255 is full opaque, 0 fully transparent * * @param x * @param y * @param mx * @param my */ static void opengl_light_space(int x, int y, int mx, int my) { if (use_config[CONFIG_DARKNESS] == CFG_LT_TILE) { /* If we don't have darkness, or it isn't dark, don't do anything */ if (!the_map.cells[mx][my].have_darkness || the_map.cells[mx][my].darkness==0) return; glColor4ub(0, 0, 0, the_map.cells[mx][my].darkness); glBegin(GL_QUADS); glVertex3i(x * map_image_size, y * map_image_size, 0); glVertex3i((x+1) * map_image_size, y * map_image_size, 0); glVertex3i((x+1) * map_image_size, (y+1) * map_image_size, 0); glVertex3i(x * map_image_size, (y+1) * map_image_size, 0); glEnd(); } /* Do the upper left area */ glBegin(GL_QUADS); glColor4ub(0, 0, 0, map_darkness[x*2][y*2]); glVertex3i(x * map_image_size, y * map_image_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2 + 1][y*2]); glVertex3i(x * map_image_size + map_image_half_size, y * map_image_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2 + 1][y*2 + 1]); glVertex3i( x * map_image_size + map_image_half_size, y * map_image_size + map_image_half_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2][y*2+1]); glVertex3i(x * map_image_size, y * map_image_size + map_image_half_size, 0); glEnd(); /* Repeat for upper right area */ glBegin(GL_QUADS); glColor4ub(0, 0, 0, map_darkness[x*2+1][y*2]); glVertex3i(x * map_image_size + map_image_half_size, y * map_image_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+2][y*2]); glVertex3i((x +1 ) * map_image_size, y * map_image_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+2][y*2+1]); glVertex3i((x+1) * map_image_size, y * map_image_size + map_image_half_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+1][y*2+1]); glVertex3i( x * map_image_size + map_image_half_size, y * map_image_size + map_image_half_size, 0); glEnd(); /* Repeat for lower left area */ glBegin(GL_QUADS); glColor4ub(0, 0, 0, map_darkness[x*2][y*2+1]); glVertex3i(x * map_image_size, y * map_image_size + map_image_half_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+1][y*2+1]); glVertex3i( x * map_image_size + map_image_half_size, y * map_image_size + map_image_half_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+1][y*2+2]); glVertex3i(x * map_image_size + map_image_half_size, (y + 1) * map_image_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2][y*2+2]); glVertex3i( x * map_image_size, (y +1)* map_image_size, 0); glEnd(); /* Repeat for lower right area */ glBegin(GL_QUADS); glColor4ub(0, 0, 0, map_darkness[x*2+1][y*2+1]); glVertex3i( x * map_image_size + map_image_half_size, y * map_image_size + map_image_half_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+2][y*2+1]); glVertex3i((x+1) * map_image_size, y * map_image_size + map_image_half_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+2][y*2+2]); glVertex3i((x+1) * map_image_size, (y +1)* map_image_size, 0); glColor4ub(0, 0, 0, map_darkness[x*2+1][y*2+2]); glVertex3i(x * map_image_size + map_image_half_size, (y + 1) * map_image_size, 0); glEnd(); } /* * Some basics. dx, dy are coordinate pairs for offsets. bweights and cweights * are bitmasks that determine the face to draw (or'd together) */ static int dx[8]={0,1,1,1,0,-1,-1,-1}; static int dy[8]={-1,-1,0,1,1,1,0,-1}; static int bweights[8]={2,0,4,0,8,0,1,0}; static int cweights[8]={0,2,0,4,0,8,0,1}; static int bc_exclude[8]={ 1+2,/*north exclude northwest (bit0) and northeast(bit1)*/ 0, 2+4,/*east exclude northeast and southeast*/ 0, 4+8,/*and so on*/ 0, 8+1, 0 }; /* * Vertices are floats. This sets the value appropriately for us to multiply * the x coordinate by. */ #define TEXTURE_OFFSET 1.0/16.0 /** * Draw anything in adjacent squares that could smooth on given square You * should not call this function to smooth on a 'completely black' square. * (simply for visual result). * * @param x * @param y * @param mx Coordinate of square to smooth on. * @param my Coordinate of square to smooth on. * @param layer Layer to examine (we smooth only one layer at a time). */ static void drawsmooth_opengl (int x, int y, int mx, int my, int layer) { int partdone[8]={0,0,0,0,0,0,0,0}, slevels[8], sfaces[8], i, weight,weightC, emx,emy, smoothface, dosmooth, lowest, havesmooth; dosmooth=0; for (i=0;i<8;i++){ emx=mx+dx[i]; emy=my+dy[i]; if ( (emx<0) || (emy<0) || (emx >= the_map.x) || (emy >= the_map.y)){ slevels[i]=0; sfaces[i]=0; /*black picture*/ } else if (the_map.cells[emx][emy].smooth[layer]<=the_map.cells[mx][my].smooth[layer] || the_map.cells[emx][emy].heads[layer].face == 0){ slevels[i]=0; sfaces[i]=0; /*black picture*/ } else{ slevels[i]=the_map.cells[emx][emy].smooth[layer]; sfaces[i]=pixmaps[the_map.cells[emx][emy].heads[layer].face]->smooth_face; dosmooth++; } } /* * slevels[] & sfaces[] contain the smooth level. dosmooth is the number * if spaces that need to be smoothed. lowlevel is the lowest level to * smooth. * * havesmooth is how many faces we have smoothed */ havesmooth=0; while (havesmooth < dosmooth) { lowest=-1; for (i=0;i<8;i++){ if ( (slevels[i]>0) && (!partdone[i]) && ((lowest<0) || (slevels[i]map_texture) || (pixmaps[smoothface] == pixmaps[0])) continue; /*don't have the picture associated*/ if (the_map.cells[mx][my].cleared) glBindTexture(GL_TEXTURE_2D, pixmaps[smoothface]->fog_texture); else glBindTexture(GL_TEXTURE_2D, pixmaps[smoothface]->map_texture); /* * The values of 0.0f and 0.5f are hardcoded, but as of now, it is a * known fact that there are 2 rows of data in the smoothing images, so * that should be OK. */ if (weight) { glBegin(GL_QUADS); glTexCoord2f(TEXTURE_OFFSET * weight, 0.0f); glVertex3i(x * map_image_size, y * map_image_size, 0); glTexCoord2f(TEXTURE_OFFSET * (weight+1), 0.0f); glVertex3i((x+1) * map_image_size, y * map_image_size, 0); glTexCoord2f(TEXTURE_OFFSET * (weight+1), 0.5f); glVertex3i((x+1) * map_image_size, (y+1) * map_image_size, 0); glTexCoord2f(TEXTURE_OFFSET * weight, 0.5f); glVertex3i(x * map_image_size, (y+1) * map_image_size, 0); glEnd(); } if (weightC) { glBegin(GL_QUADS); glTexCoord2f(TEXTURE_OFFSET * weight, 0.5f); glVertex3i(x * map_image_size, y * map_image_size, 0); glTexCoord2f(TEXTURE_OFFSET * (weight+1), 0.5f); glVertex3i((x+1) * map_image_size, y * map_image_size, 0); glTexCoord2f(TEXTURE_OFFSET * (weight+1), 1.0f); glVertex3i((x+1) * map_image_size, (y+1) * map_image_size, 0); glTexCoord2f(TEXTURE_OFFSET * weight, 1.0f); glVertex3i(x * map_image_size, (y+1) * map_image_size, 0); glEnd(); } } /* While there's some smooth to do */ } /** * * @param layer */ static void draw_smoothing(int layer) { int x, y, mx, my; for(y = use_config[CONFIG_MAPHEIGHT]+MAX_MAP_OFFSET; y>=0; y--) { for(x = use_config[CONFIG_MAPWIDTH]+MAX_MAP_OFFSET; x>=0; x--) { mx = x + pl_pos.x; my = y + pl_pos.y; if (CAN_SMOOTH(the_map.cells[mx][my],layer)) drawsmooth_opengl(x, y, mx, my, layer); } } } /** * Generates a map in Opengl mode and is based loosely on the SDL code. We * re-draw the entire map every time this is called * * Note that at current time, most of the options are not available. On my * system, opengl is blindingly fast compared to other drawing methods - for * the 25x25 map, sdl/pixmap took almost 100% of cpu time (athlon mp 2000). On * opengl, cpu time is less than 10%. And that is with redrawing the entire * map each time. As such, the more complex drawing options should still be * easily handled on any system that does have opengl. * (For reference, glxgears gets about 380 fps on my system) * MSW 2005-03-14a * * @param redraw */ void opengl_gen_map(int redraw) { long elapsed1, elapsed2; struct timeval tv1, tv2,tv3; int mx,my, layer,x,y, d1, d2, d3, num_dark, got_smooth, face, t1, t2; if (time_map_redraw) gettimeofday(&tv1, NULL); glClear(GL_COLOR_BUFFER_BIT); /* * Need to set this, as the darkness logic could have reset this. since * darkness is done after all other drawing, we can do it just once here. */ glColor4f(1.0f, 1.0f, 1.0f, 1.0f); /* We draw every space every time this is called. We draw from bottom * right to top left - this makes stacking of big images work as expected. * we also draw all of one layer before doing the next layer. This really * shouldn't effect performance all that much - all that is being changed * is the order of the loops we add MAX_MAP_OFFSET so that big objects off * the edge of the map are drawn. */ got_smooth=0; /*smooth marker. Once we have a face and "can_smooth" on a layer, this layer and all above draw smooth */ for (layer=0; layer<=MAXLAYERS; layer++) { if (layer == MAXLAYERS) { /* * The top layer is the darkness processing - turn off the texture * pattern so darkness works as expected. */ glBindTexture(GL_TEXTURE_2D, 0); } for(y = use_config[CONFIG_MAPHEIGHT]+MAX_MAP_OFFSET; y>=0; y--) { for(x = use_config[CONFIG_MAPWIDTH]+MAX_MAP_OFFSET; x>=0; x--) { /* * mx,my represent the spaces on the 'virtual' map (ie, the_map * structure). x and y (from the for loop) represent the * visible screen. */ mx = x + pl_pos.x; my = y + pl_pos.y; /* * If we get here, this denotes a special/top layer. This is * the time to do lighting, smoothing, etc. */ if (layer == MAXLAYERS) { /* * If off the map, don't need to do anything, because the * code here doesn't do anything that would extend onto the * map. */ if (x >= use_config[CONFIG_MAPWIDTH] || y >= use_config[CONFIG_MAPHEIGHT]) continue; /* * One could make the case it doesn't make sense to light * fog of war spaces, but I find visually it looks a lot * nicer if you do - otherwise, they are too bright * relative to the spaces around. them. */ if (use_config[CONFIG_DARKNESS]) { opengl_light_space(x, y, mx, my); } } else { /* * Only do this in the better lighting modes. Fortunately, * the CFG_LT_.. values are ordered from worst to best, to * are >= check works just fine, right now. */ if (layer == 0 && use_config[CONFIG_DARKNESS] >= CFG_LT_PIXEL && ~ x <= use_config[CONFIG_MAPWIDTH] && y <= use_config[CONFIG_MAPHEIGHT]) { /* * The darkness code is similar to the per pixel SDL * code. As such, each square we process needs to know * the values for the intersection points - there is a * lot of redundant calculation in this if done a * square at a time, so instead, we can calculate the * darkness point of all the vertices here. We * calculate the upper/left 4 vertices. * * SDL actually gets better results I think - perhaps * because the per pixel lighting uses a different * algorithm - we basically let opengl do the blending. * But the results we use here, while perhaps not as * nice, certainly look better than per tile lighting. */ if (the_map.cells[mx][my].have_darkness) map_darkness[x*2 + 1][y*2 + 1] = the_map.cells[mx][my].darkness; else map_darkness[x*2 + 1][y*2 + 1] = DEFAULT_DARKNESS; d1 = DEFAULT_DARKNESS; /* square to left */ d2 = DEFAULT_DARKNESS; /* square to upper left */ d3 = DEFAULT_DARKNESS; /* square above */ num_dark=1; /* Number of adjoining spaces w/darkness */ if (x>0 && the_map.cells[mx-1][my].have_darkness) { d1 = the_map.cells[mx-1][my].darkness; num_dark++; } if (x>0 && y>0 && the_map.cells[mx-1][my-1].have_darkness) { d2 = the_map.cells[mx-1][my-1].darkness; num_dark++; } if (y>0 && the_map.cells[mx][my-1].have_darkness) { d3 = the_map.cells[mx][my-1].darkness; num_dark++; } #if 0 /* * If we don't have darkness, we want to use our value * and not average. That is because the value we * average against is 0 - this results in lighter bands * next to areas we won't have darkness info for. */ map_darkness[x*2][y*2] = (d1 + d2 +d3 + map_darkness[x*2 + 1][y*2 + 1]) / num_dark; if (d1) { map_darkness[x*2][y*2 + 1] = (d1 + map_darkness[x*2 + 1][y*2 + 1]) / 2; } else { map_darkness[x*2][y*2 + 1] = map_darkness[x*2 + 1][y*2 + 1]; } if (d3) { map_darkness[x*2 +1 ][y*2] = (d3 + map_darkness[x*2 + 1][y*2 + 1]) / 2; } else { map_darkness[x*2 + 1][y*2] = map_darkness[x*2 + 1][y*2 + 1]; } #else /* * This block does a 'max' darkness - I think it gives * the best results, which is why by default it is the * one used. */ map_darkness[x*2][y*2] = MAX( MAX(d1, d2), MAX(d3, map_darkness[x*2 + 1][y*2 + 1])); map_darkness[x*2][y*2 + 1] = MAX(d1, map_darkness[x*2 + 1][y*2 + 1]); map_darkness[x*2 + 1][y*2] = MAX(d3, map_darkness[x*2 + 1][y*2 + 1]); #endif } if (the_map.cells[mx][my].heads[layer].face) { if (pixmaps[the_map.cells[mx][my].heads[layer].face]->map_texture) { int nx, ny; /* * nx, ny are the location of the top/left side of * the image to draw. */ nx = (x+1) * map_image_size - pixmaps[the_map.cells[mx][my].heads[layer].face]->map_width; ny = (y+1) * map_image_size - pixmaps[the_map.cells[mx][my].heads[layer].face]->map_height; /* * If both nx and ny are outside visible area, * don't need to do anything more */ if (nx > width && ny > height) continue; /* * There are some issues with this - it is really * the head of the object that is determining fog * of war logic. I don't have good solution to * that, other than to live with it. */ if (the_map.cells[mx][my].cleared) glBindTexture(GL_TEXTURE_2D, pixmaps[the_map.cells[mx][my].heads[layer].face]->fog_texture); else glBindTexture(GL_TEXTURE_2D, pixmaps[the_map.cells[mx][my].heads[layer].face]->map_texture); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3i(nx, ny, 0); glTexCoord2f(1.0f, 0.0f); glVertex3i( (x+1) * map_image_size, ny, 0); glTexCoord2f(1.0f, 1.0f); glVertex3i( (x+1) * map_image_size, (y+1) * map_image_size, 0); glTexCoord2f(0.0f, 1.0f); glVertex3i(nx, (y+1) * map_image_size, 0); glEnd(); } if (use_config[CONFIG_SMOOTH] && CAN_SMOOTH(the_map.cells[mx][my],layer) && the_map.cells[mx][my].heads[layer].face !=0) { got_smooth=1; } } if ((face=mapdata_bigface_head(x, y, layer, &t1, &t2))!=0) { if (pixmaps[face]->map_texture) { int nx, ny; /* * nx, ny are the location of the top/left side of * the image to draw. */ nx = (x+1) * map_image_size - pixmaps[face]->map_width; ny = (y+1) * map_image_size - pixmaps[face]->map_height; /* * If both nx and ny are outside visible area, * don't need to do anything more */ if (nx > width && ny > height) continue; /* * There are some issues with this - it is really * the head of the object that is determining fog * of war logic. I don't have good solution to * that, other than to live with it. */ if (the_map.cells[mx][my].cleared) glBindTexture(GL_TEXTURE_2D, pixmaps[face]->fog_texture); else glBindTexture(GL_TEXTURE_2D, pixmaps[face]->map_texture); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3i(nx, ny, 0); glTexCoord2f(1.0f, 0.0f); glVertex3i( (x+1) * map_image_size, ny, 0); glTexCoord2f(1.0f, 1.0f); glVertex3i( (x+1) * map_image_size, (y+1) * map_image_size, 0); glTexCoord2f(0.0f, 1.0f); glVertex3i(nx, (y+1) * map_image_size, 0); glEnd(); } } /* If this space has a valid face */ } /* If last layer/else not last layer */ } /* for x loop */ } /* for y loop */ /* * Because of our handling with big images, we can't easily draw this * when drawing the space - we may want to smooth onto another space in * which the ground hasn't been drawn yet, so we have to do smoothing * at the end of each layer. * * We use the got_smooth variable to know if there is in fact any * smoothing to do - for many layers, this is not likely to be set, so * we can save work by not doing this. */ if (got_smooth) draw_smoothing(layer); } if (time_map_redraw) gettimeofday(&tv2, NULL); #ifndef WIN32 glXSwapBuffers(display, window); #else SwapBuffers(devicecontext); #endif if (time_map_redraw) { gettimeofday(&tv3, NULL); elapsed1 = (tv2.tv_sec - tv1.tv_sec)*1000000 + (tv2.tv_usec - tv1.tv_usec); elapsed2 = (tv3.tv_sec - tv2.tv_sec)*1000000 + (tv3.tv_usec - tv2.tv_usec); /* * I care about performance for 'long' updates, so put the check in to * make these a little more noticable */ if ((elapsed1 + elapsed2)>10000) LOG(LOG_INFO,"gtk-v2::opengl_gen_map","gen took %7ld, flip took %7ld, total = %7ld", elapsed1, elapsed2, elapsed1 + elapsed2); } } /* opengl_gen_map function */ /** * Rather than put a bunch of opengl code in the image.c file, it instead calls * these routines for the image creation logic. * * @param data * @param pi */ void create_opengl_map_image(uint8 *data, PixmapInfo *pi) { static uint8 *newdata; static int size=0; int nwidth, nheight, numshifts, i; uint8 *data_to_use = data, *l; uint32 g, *p; /* * The width and height of textures has to be a power of 2. so 32x32 and * 64x64 images work, but 96x96 does not. The logic below basically * figures out if the width we have is in fact a power of two or not, and * if not, the next power of 2 up that is. */ for (nwidth = pi->map_width, numshifts=0; nwidth >1; nwidth >>=1, numshifts++) ; nwidth <<= numshifts; if (nwidth != pi->map_width) nwidth <<=1; for (nheight = pi->map_height, numshifts=0; nheight >1; nheight >>=1, numshifts++) ; nheight <<= numshifts; if (nheight != pi->map_height) nheight <<=1; /* * Below deals with cases where the pixmap is not a power of 2. The * 'proper' opengl way of dealing with such textures is to make a mipmap - * this is basically a resized version up/down to the nearest power of two, * which is then rescaled when it is used to actually texture something - * this means it is scaled up once, then scaled down again. For most * opengl apps, this probably isn't a big deal, because the surface the * texture being applied applied to is going to cause distortion. However, * in this client, we are doing a 1:1 paste operation, so that scaling will * certainly cause some distortion. instead, I take the approach make a * bigger image, but fill the extra bits with transparent alpha bits. This * way, we have no loss of quality. */ if (pi->map_width != nwidth || pi->map_height != nheight) { int y; uint8 *datastart; /* * Use a static buffer to hold image data, so we don't have to keep * allocating/deallocating, but need to make sure it is big enough. */ if (nwidth * nheight * 4 > size) { size = nwidth * nheight * 4; newdata = realloc(newdata, size); } /* * Fill the top portion of the image with empty/transparent data. * Also, set up datastart to point to where we should start filling in * the rest of the data. */ if (nheight > pi->map_height) { memset(newdata, 0, (nheight - pi->map_height) * nwidth * 4); datastart = newdata + (nheight - pi->map_height) * nwidth * 4; } else datastart = newdata; for (y =0; y < pi->map_height; y++) { memset(datastart + y * nwidth * 4, 0, (nwidth - pi->map_width) * 4); memcpy(datastart + y * nwidth * 4 + (nwidth - pi->map_width) * 4, data + y * pi->map_width * 4, pi->map_width * 4); } data_to_use = newdata; pi->map_width = nwidth; pi->map_height = nheight; } glGenTextures(1, &pi->map_texture); glBindTexture(GL_TEXTURE_2D, pi->map_texture); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 4, pi->map_width, pi->map_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data_to_use); /* * Generate a fog image. This isn't 100% efficient, because we copy data * we may need to modify, but makes the code simpler in in the case above * where we've had to change the size of the image. */ if (pi->map_width * pi->map_height * 4 > size) { size = pi->map_width * pi->map_height * 4; newdata = realloc(newdata, size); } /* In this case, newdata does not contain a copy of the data - make one */ if (data_to_use != newdata) { memcpy(newdata, data, pi->map_height * pi->map_width * 4); } for (i=0; i < pi->map_width * pi->map_height; i++) { l = (uint8 *) (newdata + i*4); g = MAX(*l, *(l+1)); g = MAX(g, *(l+2)); p = (uint32*) newdata + i; *p = g | (g << 8) | (g << 16) | (*(l + 3) << 24); } glGenTextures(1, &pi->fog_texture); glBindTexture(GL_TEXTURE_2D, pi->fog_texture); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 4, pi->map_width, pi->map_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, newdata); } /** * * @param pi */ void opengl_free_pixmap(PixmapInfo *pi) { if (pi->map_texture) { glDeleteTextures(1, &pi->map_texture); pi->map_texture=0; } if (pi->fog_texture) { glDeleteTextures(1, &pi->fog_texture); pi->fog_texture=0; } } #include "../../pixmaps/question.111" /** * Create question mark to display in OpenGL mode when an image is not cached. * When image caching is enabled, if a needed image is not yet in the cache, a * question mark image is displayed instead. The image displayed is unique to * the display mode. This function creates the image to use when OpenGL mode * is in effect. */ void create_opengl_question_mark(void) { GLubyte question[question_height][question_width][4]; int xb, x, y, offset=0; /* * We want data in rgba format. So convert the question bits to an rgba * format. We only need to do this once */ for (y=0; ymap_texture); glBindTexture(GL_TEXTURE_2D, pixmaps[0]->map_texture); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 4, question_width, question_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, &question[0][0][0]); glGenTextures(1, &pixmaps[0]->fog_texture); glBindTexture(GL_TEXTURE_2D, pixmaps[0]->fog_texture); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 4, question_width, question_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, &question[0][0][0]); } #endif crossfire-client-1.70.0/gtk-v2/src/about.c0000644000014500000120000000773011731277013015146 00000000000000const char * const rcsid_gtk2_about_c = "$Id: about.c 13648 2010-08-19 04:22:12Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2006 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/about.c * Supports the client's about box dialog. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include "client.h" #include "main.h" #include "image.h" #include "gtk2proto.h" #include "about.h" #include "../../pixmaps/crossfiretitle.xpm" static GtkWidget *about_window=NULL; /** * Instantiates and displays the client's about box dialog. * * @param menuitem The menu item that launches the about box * @param user_data */ void menu_about (GtkMenuItem *menuitem, gpointer user_data) { GladeXML *xml_tree; GtkWidget *widget; if (!about_window) { GtkWidget *textview; GtkTextBuffer *textbuf; GtkTextIter end; GtkWidget *hbox; GtkWidget *aboutgtkpixmap; GdkPixmap *aboutgdkpixmap; GdkBitmap *aboutgdkmask; about_window = glade_xml_get_widget(dialog_xml, "about_window"); xml_tree = glade_get_widget_tree(GTK_WIDGET(about_window)); textview = glade_xml_get_widget(xml_tree, "about_textview"); g_signal_connect((gpointer) about_window, "delete_event", G_CALLBACK(gtk_widget_hide_on_delete), NULL); widget = glade_xml_get_widget(xml_tree, "about_close"); g_signal_connect((gpointer) widget, "clicked", G_CALLBACK(on_about_close_clicked), NULL); textbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); gtk_text_buffer_get_end_iter(textbuf, &end); gtk_text_buffer_insert(textbuf, &end, VERSION_INFO, strlen(VERSION_INFO)); gtk_text_buffer_insert(textbuf, &end, "\n", 1); gtk_text_buffer_insert(textbuf, &end, text, strlen(text)); /* The window must be realized before we can create the pixmap below */ gtk_widget_show(about_window); aboutgdkpixmap = gdk_pixmap_create_from_xpm_d(about_window->window, &aboutgdkmask, NULL, (gchar **)crossfiretitle_xpm); aboutgtkpixmap= gtk_image_new_from_pixmap (aboutgdkpixmap, aboutgdkmask); /* * Use of hbox is a bit of a hack - isn't any easy way to add this * image as the first entry of the box once other fields have been * filled in. So instead, we create a hbox in that first entry just to * hold this image. */ hbox = glade_xml_get_widget(xml_tree, "about_hbox_image"); gtk_box_pack_start (GTK_BOX (hbox),aboutgtkpixmap, TRUE, TRUE, 0); gtk_widget_show(aboutgtkpixmap); } else { gtk_widget_show(about_window); } } /** * Closes and hides the client's about box dialog. * * @param button The about dialog's close button. * @param user_data */ void on_about_close_clicked (GtkButton *button, gpointer user_data) { gtk_widget_hide(about_window); } crossfire-client-1.70.0/gtk-v2/src/inventory.c0000644000014500000120000012757011731277013016076 00000000000000const char * const rcsid_gtk2_inventory_c = "$Id: inventory.c 14240 2011-01-12 06:31:21Z mwedel $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2007 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire@metalforge.org */ /** * @file gtk-v2/src/inventory.c * Covers drawing of the inventory and look windows. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "client.h" #include "main.h" #include "image.h" #include "gtk2proto.h" #include "../../pixmaps/all.xpm" #include "../../pixmaps/coin.xpm" #include "../../pixmaps/hand.xpm" #include "../../pixmaps/hand2.xpm" #include "../../pixmaps/lock.xpm" #include "../../pixmaps/mag.xpm" #include "../../pixmaps/nonmag.xpm" #include "../../pixmaps/skull.xpm" #include "../../pixmaps/unlock.xpm" #include "../../pixmaps/unidentified.xpm" GtkWidget *inv_notebook; GtkWidget *treeview_look; GtkWidget *encumbrance_current; GtkWidget *encumbrance_max; GtkWidget *inv_table; GtkTreeStore *store_look; static double weight_limit; static GtkTooltips *inv_table_tooltips; /* * Hopefully, large enough. Trying to do this with malloc gets more * complicated because position of elements within the array are important, so * a simple realloc won't work. */ #define MAX_INV_COLUMNS 20 #define MAX_INV_ROWS 100 GtkWidget *inv_table_children[MAX_INV_ROWS][MAX_INV_COLUMNS]; /* Different styles we recognize */ enum Styles { Style_Magical=0, Style_Cursed, Style_Unpaid, Style_Locked, Style_Applied, Style_Last }; /* The name of these styles in the rc file */ static const char *Style_Names[Style_Last] = { "inv_magical", "inv_cursed", "inv_unpaid", "inv_locked", "inv_applied" }; /* Actual styles as loaded. May be null if no style found. */ static GtkStyle *inv_styles[Style_Last]; /* * The basic idea of the NoteBook_Info structure is to hold everything we need * to know about the different inventory notebooks in a module fashion - * instead of hardcoding values, they can be held in the array. */ #define NUM_INV_LISTS 11 #define INV_SHOW_ITEM 0x1 #define INV_SHOW_COLOR 0x2 enum { INV_TREE, INV_TABLE }; static int num_inv_notebook_pages=0; typedef struct { const char *name; /**< Name of this page, for the show command */ const char *tooltip; /**< Tooltip for menu */ const char *const *xpm; /**< Icon to draw for the notebook selector */ int(*show_func) (item *it); /**< Function that takes an item and returns * INV_SHOW_* above on whether to show this * item and if it should be shown in color */ int type; /**< Type of widget - currently unused, but I'm * thinking it might be nice to have a pane * just of icon view or something, and need * some way to show that */ GtkWidget *treeview; /**< treeview widget for this tab */ GtkTreeStore *treestore; /**< store of data for treeview */ } Notebook_Info; static int show_all(item *it) { return INV_SHOW_ITEM | INV_SHOW_COLOR; } static int show_applied(item *it) { return (it->applied?INV_SHOW_ITEM:0); } static int show_unapplied(item *it) { return (it->applied?0:INV_SHOW_ITEM); } static int show_unpaid(item *it) { return (it->unpaid?INV_SHOW_ITEM:0); } static int show_cursed(item *it) { return ((it->cursed | it->damned)?INV_SHOW_ITEM:0); } static int show_magical(item *it) { return (it->magical?INV_SHOW_ITEM:0); } static int show_nonmagical(item *it){ return (it->magical?0:INV_SHOW_ITEM); } static int show_locked(item *it) { return (it->locked?(INV_SHOW_ITEM|INV_SHOW_COLOR):0); } static int show_unlocked(item *it) { return (it->locked?0:(INV_SHOW_ITEM|INV_SHOW_COLOR)); } static int show_unidentified(item *it) { return ((it->flagsval&F_UNIDENTIFIED)?INV_SHOW_ITEM:0); } Notebook_Info inv_notebooks[NUM_INV_LISTS] = { {"all", "All Items", all_xpm, show_all, INV_TREE}, {"applied", "Applied Items", hand_xpm, show_applied, INV_TREE}, {"unapplied", "Unapplied Items", hand2_xpm, show_unapplied, INV_TREE}, {"unpaid", "Unpaid items", coin_xpm, show_unpaid, INV_TREE}, {"cursed", "Cursed items", skull_xpm, show_cursed, INV_TREE}, {"magical", "Magical items", mag_xpm, show_magical, INV_TREE}, {"nonmagical", "Nonmagical items", nonmag_xpm, show_nonmagical, INV_TREE}, {"locked", "Inventory locked items", lock_xpm, show_locked, INV_TREE}, {"unlocked", "Inventory unlocked items",unlock_xpm, show_unlocked, INV_TREE}, {"unidentified", "Inventory unidentified items", unidentified_xpm, show_unidentified, INV_TREE}, {"icons", "Quick icon view", NULL, show_all, INV_TABLE} }; enum { LIST_NONE, LIST_ICON, LIST_NAME, LIST_WEIGHT, LIST_OBJECT, LIST_BACKGROUND, LIST_TYPE, LIST_BASENAME, LIST_FOREGROUND, LIST_FONT, LIST_NUM_COLUMNS }; #define ITEM_INVENTORY 0x1 #define ITEM_GROUND 0x2 #define ITEM_IN_CONTAINER 0x4 /** * Returns information on the environment of the item, using the return values * below. Note that there should never be a case where both ITEM_GROUND and * ITEM_INVENTORY are returned, but I prefer a more active approach in * returning actual values and not presuming that lack of value means it is in * the other location. * * @param it * @return */ static int get_item_env(item *it) { if (it->env == cpl.ob) return ITEM_INVENTORY; if (it->env == cpl.below) return ITEM_GROUND; if (it->env == NULL) return 0; return (ITEM_IN_CONTAINER | get_item_env(it->env)); } /** * * @param event * @param tmp */ static void list_item_action(GdkEventButton *event, item *tmp) { int env; /* We need to know where this item is in fact is */ env = get_item_env(tmp); /* It'd sure be nice if these weren't hardcoded values for button and * shift presses. */ if (event->button == 1) { if (event->state & GDK_SHIFT_MASK) toggle_locked(tmp); else client_send_examine (tmp->tag); } else if (event->button == 2) { if (event->state & GDK_SHIFT_MASK) send_mark_obj(tmp); else client_send_apply (tmp->tag); } else if (event->button == 3) { if (tmp->locked) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "This item is locked. To drop it, first unlock by shift+leftclicking on it."); } else { uint32 dest; cpl.count = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(spinbutton_count)); /* * Figure out where to move the item to. If it is on the ground, * it is moving to the players inventory. If it is in a container, * it is also moving to players inventory. If it is in the players * inventory (not a container) and the player has an open container * in his inventory, move the object to the container (not ground). * Otherwise, it is moving to the ground (dest=0). Have to look at * the item environment, because what list is no longer accurate. */ if (env & (ITEM_GROUND | ITEM_IN_CONTAINER)) dest = cpl.ob->tag; else if (env == ITEM_INVENTORY && cpl.container && (get_item_env(cpl.container) == ITEM_INVENTORY || get_item_env(cpl.container) == ITEM_GROUND)) { dest = cpl.container->tag; } else dest = 0; client_send_move (dest, tmp->tag, cpl.count); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton_count),0.0); cpl.count=0; } } } /** * Used when a button is pressed on the inventory or look list. The parameters * are those determined by the callback. Note that this function isn't 100% * ideal - some of the events/handling is only relevant for objects in the * inventory and not the look window (eg, locking items). OTOH, maybe it is * just as well that the behaviour is always consistent. * * @param selection * @param model * @param path * @param path_currently_selected * @param userdata * @return FALSE */ gboolean list_selection_func ( GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer userdata) { GtkTreeIter iter; GdkEventButton *event; /* Get the current event so we can know if shift is pressed */ event = (GdkEventButton*)gtk_get_current_event(); if (!event) { LOG(LOG_ERROR,"inventory.c::list_selection_func", "Unable to get event structure\n"); return FALSE; } if (gtk_tree_model_get_iter(model, &iter, path)) { item *tmp; gtk_tree_model_get(model, &iter, LIST_OBJECT, &tmp, -1); if (!tmp) { LOG(LOG_ERROR,"inventory.c::list_selection_func", "Unable to get item structure\n"); return FALSE; } list_item_action(event, tmp); } /* * Don't want the row toggled - our code above handles what we need to do, * so return false. */ return FALSE; } /** * If the player collapses the row with the little icon, we have to unapply the * object for things to work 'sanely' (eg, items not go into the container * * @param treeview * @param iter * @param path * @param user_data */ void list_row_collapse (GtkTreeView *treeview, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) { GtkTreeModel *model; item *tmp; model = gtk_tree_view_get_model(treeview); gtk_tree_model_get(GTK_TREE_MODEL(model), iter, LIST_OBJECT, &tmp, -1); client_send_apply (tmp->tag); } /** * * @param treeview */ static void setup_list_columns(GtkWidget *treeview) { GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeSelection *selection; #if 0 /* * This is a hack to hide the expander column. We do this because access * via containers need to be handled by the apply/unapply mechanism - * otherwise, I think it will be confusing - people 'closing' the container * with the expander arrow and still having things go into/out of the * container. Unfortunat */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("", renderer, "text", LIST_NONE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_visible(column, FALSE); gtk_tree_view_set_expander_column(GTK_TREE_VIEW (treeview), column); #endif renderer = gtk_cell_renderer_pixbuf_new (); /* * Setting the xalign to 0.0 IMO makes the display better. Gtk * automatically resizes the column to make space based on image size, * however, it isn't really aggressive on shrinking it. IMO, it looks * better for the image to always be at the far left - without this * alignment, the image is centered which IMO doesn't always look good. */ g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL); column = gtk_tree_view_column_new_with_attributes ("?", renderer, "pixbuf", LIST_ICON, NULL); /* gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);*/ gtk_tree_view_column_set_min_width(column, image_size); gtk_tree_view_column_set_sort_column_id(column, LIST_TYPE); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Name", renderer, "text", LIST_NAME, NULL); gtk_tree_view_column_set_expand(column, TRUE); gtk_tree_view_column_set_sort_column_id(column, LIST_BASENAME); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_add_attribute(column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute(column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute(column, renderer, "font-desc", LIST_FONT); gtk_tree_view_set_expander_column(GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Weight", renderer, "text", LIST_WEIGHT, NULL); /* * At 50, the title was always truncated on some systems. 64 is the * minimum on those systems for it to be possible to avoid truncation at * all. Truncating the title looks cheesy, especially since heavy items * (100+) need the width of the field anyway. If weight pushed off the * edge is a problem, it would be just better to let the user resize or * find a way to allow rendering with a smaller font. */ gtk_tree_view_column_set_min_width(column, 64); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_sort_column_id(column, LIST_WEIGHT); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_column_add_attribute(column, renderer, "background-gdk", LIST_BACKGROUND); gtk_tree_view_column_add_attribute(column, renderer, "foreground-gdk", LIST_FOREGROUND); gtk_tree_view_column_add_attribute(column, renderer, "font-desc", LIST_FONT); /* * Really, we never really do selections - clicking on an object causes a * reaction right then. So grab press before the selection and just negate * the selection - that's more efficient than unselection the item after it * was selected. */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); gtk_tree_selection_set_select_function(selection, list_selection_func, NULL, NULL); } /** * Gets the style information for the inventory windows. This is a separate * function because if the user changes styles, it can be nice to re-load the * configuration. The style for the inventory/look is a bit special. That is * because with gtk, styles are widget wide - all rows in the widget would use * the same style. We want to adjust the styles based on other attributes. */ void inventory_get_styles(void) { int i; GtkStyle *tmp_style; static int has_init=0; for (i=0; i < Style_Last; i++) { if (has_init && inv_styles[i]) g_object_unref(inv_styles[i]); tmp_style = gtk_rc_get_style_by_paths(gtk_settings_get_default(), NULL, Style_Names[i], G_TYPE_NONE); if (tmp_style) { inv_styles[i] = g_object_ref(tmp_style); } else { LOG(LOG_INFO, "inventory.c::inventory_get_styles", "Unable to find style for %s", Style_Names[i]); inv_styles[i] = NULL; } } has_init=1; } /** * Set up the inventory viewer. * * @param window_root The client main window. */ void inventory_init(GtkWidget *window_root) { int i; GladeXML *xml_tree; /*inventory_get_styles();*/ xml_tree = glade_get_widget_tree(GTK_WIDGET(window_root)); inv_notebook = glade_xml_get_widget(xml_tree,"notebook_inv"); treeview_look = glade_xml_get_widget(xml_tree, "treeview_look"); encumbrance_current = glade_xml_get_widget(xml_tree,"label_stat_encumbrance_current"); encumbrance_max = glade_xml_get_widget(xml_tree,"label_stat_encumbrance_max"); inv_table = glade_xml_get_widget(xml_tree,"inv_table"); g_signal_connect((gpointer) inv_notebook, "switch_page", (GCallback) on_notebook_switch_page, NULL); g_signal_connect((gpointer) inv_table, "expose_event", (GCallback) on_inv_table_expose_event, NULL); g_signal_connect((gpointer) treeview_look, "row_collapsed", (GCallback) list_row_collapse, NULL); inv_table_tooltips = gtk_tooltips_new(); gtk_tooltips_enable(inv_table_tooltips); memset(inv_table_children, 0, sizeof(GtkWidget *) * MAX_INV_ROWS * MAX_INV_COLUMNS); store_look = gtk_tree_store_new (LIST_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_OBJECT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_COLOR, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_COLOR, PANGO_TYPE_FONT_DESCRIPTION); gtk_tree_view_set_model(GTK_TREE_VIEW(treeview_look), GTK_TREE_MODEL(store_look)); setup_list_columns(treeview_look); /* * Glade doesn't let us fully realize a treeview widget - we still need to * to do a bunch of customization just like we do for the look window * above. If we have to do all that work, might as well just put it in the * for loop below vs setting up half realized widgets within glade that we * then need to finish setting up. However, that said, we want to be able * to set up other notebooks within glade for perhaps a true list of just * icons. So we presume that any tabs that exist must already be all set * up. We prepend our tabs to the existing tab - this makes the position * of the array of noteboks correspond to actual data in the tabs. */ for (i=0; i < NUM_INV_LISTS; i++) { GtkWidget *swindow, *image; if (inv_notebooks[i].type == INV_TREE) { swindow = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(swindow); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swindow), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); image = gtk_image_new_from_pixbuf( gdk_pixbuf_new_from_xpm_data((const char**)inv_notebooks[i].xpm)); if (inv_notebooks[i].tooltip) { GtkWidget *eb; eb=gtk_event_box_new(); gtk_widget_show(eb); gtk_container_add(GTK_CONTAINER(eb), image); gtk_widget_show(image); image=eb; gtk_tooltips_set_tip(inv_table_tooltips, image, inv_notebooks[i].tooltip, NULL); } gtk_notebook_insert_page(GTK_NOTEBOOK(inv_notebook), swindow, image, i); inv_notebooks[i].treestore = gtk_tree_store_new (LIST_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_OBJECT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_COLOR, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_COLOR, PANGO_TYPE_FONT_DESCRIPTION); inv_notebooks[i].treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL( inv_notebooks[i].treestore)); g_signal_connect ((gpointer) inv_notebooks[i].treeview, "row_collapsed", G_CALLBACK (list_row_collapse), NULL); setup_list_columns(inv_notebooks[i].treeview); gtk_widget_show(inv_notebooks[i].treeview); gtk_container_add(GTK_CONTAINER(swindow), inv_notebooks[i].treeview); } } num_inv_notebook_pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(inv_notebook)); /* Make sure we are on the first page */ gtk_notebook_set_current_page(GTK_NOTEBOOK(inv_notebook), 0); /* If all the data is set up properly, these should match */ if (num_inv_notebook_pages != NUM_INV_LISTS) { LOG(LOG_ERROR,"inventory.c::inventory_init", "num_inv_notebook_pages (%d) does not match NUM_INV_LISTS(%d)\n", num_inv_notebook_pages, NUM_INV_LISTS); } } /** * * @param s */ void set_show_icon (const char *s) { } /** * * @param s */ void set_show_weight (const char *s) { } /** * Open and close_container are now no-ops - since these are now drawn inline * as treestores, we don't need to update what we are drawing were. and since * the activation of a container will cause the list to be redrawn, don't need * to worry about making an explicit call here. * * @param op */ void close_container(item *op) { draw_lists(); } /** * * @param op */ void open_container (item *op) { draw_lists(); } /** * * @param params */ void command_show (const char *params) { if(!params) { /* * Shouldn't need to get current page, but next_page call is not * wrapping like the docs claim it should. */ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(inv_notebook))==num_inv_notebook_pages) gtk_notebook_set_page(GTK_NOTEBOOK(inv_notebook), 0); else gtk_notebook_next_page(GTK_NOTEBOOK(inv_notebook)); } else { int i; char buf[MAX_BUF]; for (i=0; i < NUM_INV_LISTS; i++) { if (!strncmp(params, inv_notebooks[i].name, strlen(params))) { gtk_notebook_set_page(GTK_NOTEBOOK(inv_notebook), i); return; } } snprintf(buf, sizeof(buf), "Unknown notebook page %s\n", params); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, buf); } } /** * No reason to divide by 1000 everytime we do the display, so do it once and * store it here. * * @param wlim */ void set_weight_limit (uint32 wlim) { weight_limit = wlim/ 1000.0; } /** * * @param it * @return a style based on values in it */ static GtkStyle *get_row_style(item *it) { int style; /* Note that this ordering is documented in the sample rc file. * it would be nice if this precedence could be more easily * setable by the end user. */ if (it->unpaid) style=Style_Unpaid; else if (it->cursed || it->damned) style=Style_Cursed; else if (it->magical) style = Style_Magical; else if (it->applied) style = Style_Applied; else if (it->locked) style = Style_Locked; else return NULL; /* No matching style */ return inv_styles[style]; } /*************************************************************************** * Below are the actual guts for drawing the inventory and look windows. * Some quick notes: * 1) The gtk2 widgets (treeview/treemodel) seem noticably slower than the * older clist widgets in gtk1. This is beyond the code below - just * scrolling the window, which is all done internally by gtk, is * quite slow. Seems especially bad when using the scrollwheel. * 2) documentation suggests the detaching the treemodel and re-attaching * it after insertions would be faster. The problem is that this causes * loss of positioning for the scrollbar. Eg, you eat a food in the middle * of your inventory, and then inventory resets to the top of the inventory. * 3) it'd probably be much more efficient if the code could know what changes * are taking place, instead of rebuilding the tree model each time. For * example, if the only thing that changed is the number of of the object, * we can just update the name and weight, and not rebuild the entire list. * This may be doable in the code below by getting data from the tree store * and comparing it against what we want to show - however, figuring out * insertions and removals are more difficult. */ void item_event_item_deleting(item * it) {} void item_event_container_clearing(item * container) {} void item_event_item_changed(item * it) {} /** * Adds a row to the treestore. * * @param it the object to add * @param store The TreeStore object. * @param new Returns the iter used/updated for the store * @param parent The parent iter (can be null). If non null, then this creates * a real tree, for things like containers. * @param color If true, do foreground/background colors, otherwise, just black * & white Normally it is set. However, when showing the cursed inv tab, it * doesn't make a lot of sense to show them all in the special color, since * they all meet that special criteria */ static void add_object_to_store(item *it, GtkTreeStore *store, GtkTreeIter *new, GtkTreeIter *parent, int color) { char buf[256], buf1[256]; GdkColor *foreground=NULL, *background=NULL; PangoFontDescription *font=NULL; GtkStyle *row_style; if(it->weight < 0) { strcpy (buf," "); } else { snprintf(buf, sizeof(buf), "%6.1f" ,it->nrof * it->weight); } snprintf(buf1, 255, "%s %s", it->d_name, it->flags); if (color) { row_style = get_row_style(it); if (row_style) { /* * Even if the user doesn't define these, we should still get get * defaults from the system. */ foreground = &row_style->text[GTK_STATE_NORMAL]; background = &row_style->base[GTK_STATE_NORMAL]; font = row_style->font_desc; } } gtk_tree_store_append (store, new, parent); /* Acquire an iterator */ gtk_tree_store_set (store, new, LIST_ICON, (GdkPixbuf*)pixmaps[it->face]->icon_image, LIST_NAME, buf1, LIST_WEIGHT, buf, LIST_BACKGROUND, background, LIST_FOREGROUND, foreground, LIST_FONT, font, LIST_OBJECT, it, LIST_TYPE, it->type, LIST_BASENAME, it->s_name, -1); } /** * Draws the objects beneath the player. */ void draw_look_list(void) { item *tmp; GtkTreeIter iter; /* * List drawing is actually fairly inefficient - we only know globally if * the objects has changed, but have no idea what specific object has * changed. As such, we are forced to basicly redraw the entire list each * time this is called. */ gtk_tree_store_clear(store_look); for (tmp=cpl.below->inv; tmp; tmp=tmp->next) { add_object_to_store(tmp, store_look, &iter, NULL, 1); if ((cpl.container == tmp) && tmp->open) { item *tmp2; GtkTreeIter iter1; GtkTreePath *path; for (tmp2 = tmp->inv; tmp2; tmp2=tmp2->next) { add_object_to_store(tmp2, store_look, &iter1, &iter, 1); } path = gtk_tree_model_get_path(GTK_TREE_MODEL(store_look), &iter); gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview_look), path, FALSE); gtk_tree_path_free (path); } } } /** * Draws the inventory window. tab is the notebook tab we are drawing. Has to * be passed in because the callback sets this before the notebook is updated. * * @param tab */ void draw_inv_list(int tab) { item *tmp; GtkTreeIter iter; int rowflag; /* * List drawing is actually fairly inefficient - we only know globally if * the objects has changed, but have no idea what specific object has * changed. As such, we are forced to basicly redraw the entire list each * time this is called. */ gtk_tree_store_clear(inv_notebooks[tab].treestore); for (tmp=cpl.ob->inv; tmp; tmp=tmp->next) { rowflag = inv_notebooks[tab].show_func(tmp); if (!(rowflag & INV_SHOW_ITEM)) continue; add_object_to_store(tmp, inv_notebooks[tab].treestore, &iter, NULL, rowflag & INV_SHOW_COLOR); if ((cpl.container == tmp) && tmp->open) { item *tmp2; GtkTreeIter iter1; GtkTreePath *path; for (tmp2 = tmp->inv; tmp2; tmp2=tmp2->next) { /* * Wonder if we really want this logic for objects in * containers? my thought is yes - being able to see all * cursed objects in the container could be quite useful. * Unfortunately, that doesn't quite work as intended, because * we will only get here if the container object is being * displayed. Since container objects can't be cursed, can't * use that as a filter. */ /* rowflag = inv_notebooks[tab].show_func(tmp2); */ if (!(rowflag & INV_SHOW_ITEM)) continue; add_object_to_store(tmp2, inv_notebooks[tab].treestore, &iter1, &iter, rowflag & INV_SHOW_COLOR); } path = gtk_tree_model_get_path(GTK_TREE_MODEL(inv_notebooks[tab].treestore), &iter); gtk_tree_view_expand_row(GTK_TREE_VIEW(inv_notebooks[tab].treeview), path, FALSE); gtk_tree_path_free (path); } } } /** * * @param widget * @param event * @param user_data * @return TRUE */ gboolean drawingarea_inventory_table_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { list_item_action(event, (item*)user_data); return TRUE; } /** * * @param widget * @param event * @param user_data * @return TRUE */ gboolean drawingarea_inventory_table_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { item *tmp; tmp = (item*)user_data; gdk_window_clear(widget->window); /* * Can get cases when switching tabs that we get an expose event before the * list is updated - if so, don't draw stuff we don't have faces for. */ if (tmp->face) gdk_draw_pixbuf(widget->window, NULL, (GdkPixbuf*)pixmaps[tmp->face]->icon_image, 0, 0, 0, 0, image_size, image_size, GDK_RGB_DITHER_NONE, 0, 0); return TRUE; } #define INVHELPTEXT "Left click examines the object. Middle click applies \ the object. Right click drops the object. Shift left click locks/unlocks the \ object. Shift middle click marks the object" /** * Draws the table of image icons. * * @param animate If non-zero, then this is an animation run - flip the * animation state of the objects, and only draw those that need to be drawn. */ void draw_inv_table(int animate) { int x, y, rows, columns, num_items, i; static int max_drawn=0; item *tmp; char buf[256]; gulong handler; num_items=0; for (tmp=cpl.ob->inv; tmp; tmp=tmp->next) num_items++; columns = inv_table->allocation.width / image_size; if (columns > MAX_INV_COLUMNS) columns = MAX_INV_COLUMNS; rows = inv_table->allocation.height / image_size; if (num_items > columns * rows) { rows = num_items / columns; if (num_items % columns) rows++; } if (rows > MAX_INV_ROWS) rows=MAX_INV_ROWS; gtk_table_resize(GTK_TABLE(inv_table), rows, columns); x=0; y=0; for (tmp=cpl.ob->inv; tmp; tmp=tmp->next) { if (inv_table_children[x][y] == NULL) { inv_table_children[x][y] = gtk_drawing_area_new(); gtk_drawing_area_size (GTK_DRAWING_AREA(inv_table_children[x][y]), image_size, image_size); gtk_table_attach(GTK_TABLE(inv_table), inv_table_children[x][y], x, x+1, y, y+1, GTK_FILL, GTK_FILL, 0, 0); } if (animate) { /* This is an object with animations */ if (tmp->animation_id >0 && tmp->anim_speed) { tmp->last_anim++; /* Time to change the face for this one */ if (tmp->last_anim >= tmp->anim_speed) { tmp->anim_state++; if (tmp->anim_state >= animations[tmp->animation_id].num_animations) tmp->anim_state=0; tmp->face = animations[tmp->animation_id].faces[tmp->anim_state]; tmp->last_anim=0; gdk_window_clear(inv_table_children[x][y]->window); gdk_draw_pixbuf(inv_table_children[x][y]->window, NULL, (GdkPixbuf*)pixmaps[tmp->face]->icon_image, 0, 0, 0, 0, image_size, image_size, GDK_RGB_DITHER_NONE, 0, 0); } } /* On animation run, so don't do any of the remaining logic */ } else { /* * Need to clear out the old signals, since the signals are * effectively stacked - you can have 6 signal handlers tied to the * same function. */ handler = g_signal_handler_find((gpointer)inv_table_children[x][y], G_SIGNAL_MATCH_FUNC, 0, 0, NULL, G_CALLBACK (drawingarea_inventory_table_button_press_event), NULL); if (handler) g_signal_handler_disconnect((gpointer) inv_table_children[x][y], handler); handler = g_signal_handler_find((gpointer)inv_table_children[x][y], G_SIGNAL_MATCH_FUNC, 0, 0, NULL, G_CALLBACK (drawingarea_inventory_table_expose_event), NULL); if (handler) g_signal_handler_disconnect((gpointer) inv_table_children[x][y], handler); /* * Not positive precisely what events are needed, but some events * beyond just the button press are necessary for the tooltips to * work. */ gtk_widget_add_events (inv_table_children[x][y], GDK_ALL_EVENTS_MASK); g_signal_connect ((gpointer) inv_table_children[x][y], "button_press_event", G_CALLBACK (drawingarea_inventory_table_button_press_event), tmp); g_signal_connect ((gpointer) inv_table_children[x][y], "expose_event", G_CALLBACK (drawingarea_inventory_table_expose_event), tmp); gdk_window_clear(inv_table_children[x][y]->window); gdk_draw_pixbuf(inv_table_children[x][y]->window, NULL, (GdkPixbuf*)pixmaps[tmp->face]->icon_image, 0, 0, 0, 0, image_size, image_size, GDK_RGB_DITHER_NONE, 0, 0); gtk_widget_show(inv_table_children[x][y]); /* * Use tooltips to provide additional detail about the icons. * Looking at the code, the tooltip widget will take care of * removing the old tooltip, freeing strings, etc. */ snprintf(buf, 255, "%s %s", tmp->d_name, tmp->flags); gtk_tooltips_set_tip(inv_table_tooltips, inv_table_children[x][y], buf, INVHELPTEXT); } x++; if (x == columns) { x=0; y++; } } /* Don't need to do the logic below if only doing animation run */ if (animate) return; /* * Need to disconnect the callback functions cells we did not draw. * otherwise, we get errors on objects that are drawn. */ for (i=num_items; i<=max_drawn; i++) { if (inv_table_children[x][y]) { gdk_window_clear(inv_table_children[x][y]->window); handler = g_signal_handler_find((gpointer)inv_table_children[x][y], G_SIGNAL_MATCH_FUNC, 0, 0, NULL, G_CALLBACK (drawingarea_inventory_table_button_press_event), NULL); if (handler) g_signal_handler_disconnect((gpointer) inv_table_children[x][y], handler); handler = g_signal_handler_find((gpointer)inv_table_children[x][y], G_SIGNAL_MATCH_FUNC, 0, 0, NULL, G_CALLBACK (drawingarea_inventory_table_expose_event), NULL); if (handler) g_signal_handler_disconnect((gpointer) inv_table_children[x][y], handler); /* Hide the widget so that the tooltips doesn't show up */ gtk_widget_hide(inv_table_children[x][y]); } x++; if (x == columns) { x=0; y++; } } max_drawn = num_items; gtk_widget_show(inv_table); } /** * Draws the inventory and updates the encumbrance statistics display in the * client. Have to determine how to draw it. * * @param tab */ void draw_inv(int tab) { char buf[256]; snprintf(buf, sizeof(buf), "%6.1f", cpl.ob->weight); gtk_label_set(GTK_LABEL(encumbrance_current), buf); snprintf(buf, sizeof(buf), "%6.1f", weight_limit); gtk_label_set(GTK_LABEL(encumbrance_max), buf); if (inv_notebooks[tab].type == INV_TREE) draw_inv_list(tab); else if (inv_notebooks[tab].type == INV_TABLE) draw_inv_table(0); } /** * Redraws inventory and look windows when necessary */ void draw_lists (void) { cpl.below->inv_updated=1; /* * There are some extra complications with container handling and timing. * For example, we draw the window before we get a list of the container, * and then the container contents are not drawn - this can be handled by * looking at container->inv_updated. */ if (cpl.container && cpl.container->inv_updated) { cpl.container->env->inv_updated = 1; cpl.container->inv_updated=0; } if (cpl.ob->inv_updated) { draw_inv(gtk_notebook_get_current_page(GTK_NOTEBOOK(inv_notebook))); cpl.ob->inv_updated=0; } if (cpl.below->inv_updated) { draw_look_list(); cpl.below->inv_updated=0; } } /** * People are likely go to the different tabs much less often than their * inventory changes. So rather than update all the tabs whenever the players * inventory changes, only update the tab the player is viewing, and if they * change tabs, draw the new tab and get rid of the old info. Ideally, I'd * like to call draw_inv() from this function, but there is some oddity * * @param notebook * @param page * @param page_num * @param user_data */ void on_notebook_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data) { int oldpage; oldpage = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); if (oldpage != page_num && inv_notebooks[oldpage].type == INV_TREE) gtk_tree_store_clear(inv_notebooks[oldpage].treestore); cpl.ob->inv_updated=1; } /** * * @param widget * @param event * @param user_data * @return TRUE */ gboolean on_inv_table_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) { draw_inv_table(0); return TRUE; } /** * */ void animate_inventory(void) { gboolean valid; GtkTreeIter iter; item *tmp; int page; GtkTreeStore *store; static int inv_tick=0; /* * If global tick is set, then we are getting tick events from server to * keep in sync, so we don't need the logic below. */ if (!tick) { /* * The gtk client timeout is 12 times faster than that of the server so * we slow it down here. If we were really clever, we'd find what the * timeout on the server actually is, and do gettimeofday calls here to * remain very closely in sync. */ inv_tick++; if (inv_tick < 12) return; inv_tick=0; } page = gtk_notebook_get_current_page(GTK_NOTEBOOK(inv_notebook)); /* Still need to do logic for the table view. */ if (inv_notebooks[page].type == INV_TABLE) { draw_inv_table(1); return; } store = inv_notebooks[page].treestore; /* Get the first iter in the list */ valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL(store), &iter); while (valid) { gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, LIST_OBJECT, &tmp, -1); /* This is an object with animations */ if (tmp->animation_id >0 && tmp->anim_speed) { tmp->last_anim++; /* Time to change the face for this one */ if (tmp->last_anim >= tmp->anim_speed) { tmp->anim_state++; if (tmp->anim_state >= animations[tmp->animation_id].num_animations) tmp->anim_state=0; tmp->face = animations[tmp->animation_id].faces[tmp->anim_state]; tmp->last_anim=0; /* Update image in the tree store */ gtk_tree_store_set(store, &iter, LIST_ICON, (GdkPixbuf*)pixmaps[tmp->face]->icon_image, -1); } } valid = gtk_tree_model_iter_next (GTK_TREE_MODEL(store), &iter); } } /** * */ void animate_look(void) { gboolean valid; GtkTreeIter iter; item *tmp; static int inv_tick=0; /* * If global tick is set, then we are getting tick events from server to * keep in sync, so we don't need the logic below. */ if (!tick) { /* * The gtk client timeout is 12 times faster than that of the server so * we slow it down here. If we were really clever, we'd find what the * timeout on the server actually is, and do gettimeofday calls here to * remain very closely in sync. */ inv_tick++; if (inv_tick < 12) return; inv_tick=0; } /* Get the first iter in the list */ valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL(store_look), &iter); while (valid) { gtk_tree_model_get (GTK_TREE_MODEL(store_look), &iter, LIST_OBJECT, &tmp, -1); /* This is an object with animations */ if (tmp->animation_id >0 && tmp->anim_speed) { tmp->last_anim++; /* Time to change the face for this one */ if (tmp->last_anim >= tmp->anim_speed) { tmp->anim_state++; if (tmp->anim_state >= animations[tmp->animation_id].num_animations) tmp->anim_state=0; tmp->face = animations[tmp->animation_id].faces[tmp->anim_state]; tmp->last_anim=0; /* Update image in the tree store */ gtk_tree_store_set(store_look, &iter, LIST_ICON, (GdkPixbuf*)pixmaps[tmp->face]->icon_image, -1); } } valid = gtk_tree_model_iter_next (GTK_TREE_MODEL(store_look), &iter); } } /** * This is called periodically from main.c - basically a timeout, used to * animate the inventory. */ void inventory_tick(void) { animate_inventory(); animate_look(); } crossfire-client-1.70.0/gtk-v2/src/Makefile.in0000644000014500000120000004524511731277165015750 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = crossfire-client-gtk2$(EXEEXT) subdir = gtk-v2/src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am__objects_1 = about.$(OBJEXT) account.$(OBJEXT) config.$(OBJEXT) \ create_char.$(OBJEXT) image.$(OBJEXT) info.$(OBJEXT) \ inventory.$(OBJEXT) keys.$(OBJEXT) main.$(OBJEXT) \ map.$(OBJEXT) magicmap.$(OBJEXT) menubar.$(OBJEXT) \ metaserver.$(OBJEXT) opengl.$(OBJEXT) pickup.$(OBJEXT) \ png.$(OBJEXT) sdl.$(OBJEXT) skills.$(OBJEXT) sound.$(OBJEXT) \ spells.$(OBJEXT) stats.$(OBJEXT) am_crossfire_client_gtk2_OBJECTS = $(am__objects_1) crossfire_client_gtk2_OBJECTS = $(am_crossfire_client_gtk2_OBJECTS) am__DEPENDENCIES_1 = crossfire_client_gtk2_DEPENDENCIES = $(common_LIBS) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I. -I$(top_builddir)/common@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/utils/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(crossfire_client_gtk2_SOURCES) DIST_SOURCES = $(crossfire_client_gtk2_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \ -I$(top_builddir)/common \ -I$(top_srcdir)/common \ -I$(top_srcdir)/common/shared \ -I$(top_srcdir)/help AM_CFLAGS = \ $(PTHREAD_CFLAGS) \ @LIBGLADE_CFLAGS@ \ @SDL_CFLAGS@ common_BUILT_FILES = \ $(top_builddir)/common/svnversion.h BUILT_SOURCES = \ $(common_BUILT_FILES) common_LIBS = \ $(top_builddir)/common/libcfclient.a proto_FILES = \ about.c \ account.c \ config.c \ create_char.c \ image.c \ info.c \ inventory.c \ keys.c \ main.c \ map.c \ magicmap.c \ menubar.c \ metaserver.c \ opengl.c \ pickup.c \ png.c \ sdl.c \ skills.c \ sound.c \ spells.c \ stats.c crossfire_client_gtk2_SOURCES = \ image.h \ info.h \ main.h \ gtk2proto.h \ $(proto_FILES) crossfire_client_gtk2_LDADD = $(common_LIBS) $(PTHREAD_LIBS) @LIBGLADE_LIBS@ @DMALLOC_LIB@ $(INTLLIBS) $(X_LIBS) @SDL_LIBS@ @OPENGL_LIBS@ @WIN32_LIBS@ @LUA_LIBS@ all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 gtk-v2/src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu gtk-v2/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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) crossfire-client-gtk2$(EXEEXT): $(crossfire_client_gtk2_OBJECTS) $(crossfire_client_gtk2_DEPENDENCIES) @rm -f crossfire-client-gtk2$(EXEEXT) $(LINK) $(crossfire_client_gtk2_OBJECTS) $(crossfire_client_gtk2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/account.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/create_char.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inventory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keys.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/magicmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/map.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menubar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metaserver.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opengl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pickup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/png.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skills.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spells.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stats.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` 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; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi 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)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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: -test -z "$(CONFIG_CLEAN_FILES)" || 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." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) 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-dvi: install-dvi-am install-exec-am: install-binPROGRAMS install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .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-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS $(common_BUILT_FILES): pushd `dirname $(@)` >/dev/null; \ $(MAKE) `basename $(@)`; \ popd >/dev/null; $(common_LIBS): pushd `dirname $(@)` >/dev/null; \ $(MAKE); \ popd >/dev/null; # This target breaks when it sees -pthread in the cproto command, so it has to # be stripped out to work. $(filter-out) is a GNU make extension, so it is # commented out here for portability reasons. Is there a good way to do this? # Removing PTHREAD_CFLAGS from here used to work, but something put it back. # proto: PROTO_DIRTY = \ $(INCLUDES) \ $(SDL_CFLAGS) \ $(LIBGLADE_CFLAGS) \ $(PROTO_FILES) # proto: PROTO_CLEAN = $(filter-out -pthread,$(PROTO_DIRTY)) # proto: # cproto -e -o gtk2proto.h $(PROTO_CLEAN); \ # chmod 644 gtk2proto.h proto: cproto -e -o gtk2proto.h $(PROTO_DIRTY); \ chmod 644 gtk2proto.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: crossfire-client-1.70.0/sound-src/0000755000014500000120000000000011731277220013755 500000000000000crossfire-client-1.70.0/sound-src/sounds0000644000014500000120000001503511731277014015140 00000000000000# # This is a reasonably heavily modified version of the sounds file from the # server. # # Originally it was felt that full path names were needed, but since this file # was installed in the user's .crossfire directory, that meant all it would # take to break sound was to install the sound files somewhere else. It is # better to make the sound server use a location determined at build time - in # addition to allowing use of a user-accessible cache to allow override of the # default sound set. Henceforth, paths should NOT be present in this file, # and, along these same lines, the sound name in column one should not include # a .extension (like .raw or .ogg). # # There are two sections - one for normal sounds, and one for spell sounds. # They are differentiated by the header 'Standard Sounds:' and 'Spell Sounds:' # # Empty lines and lines starting with # are ignored. # # Format of the file: pathname to sound, default volume (what volume gets # played if it is centered on the player), symbolic name (not currently used # for anything, but may be in the future for the server to communicated to the # client), and sound number.. Symbolic name and sound number may be ommitted. # If sound number is missing, the sound will be assigned one higher than the # last sound read in. # # the symbolic name can be DEFAULT, in which case all sounds for that section # which are otherwise not set will be set to that value. This can be # especially useful for that magic section, since new spells get added fairly # often. # # The volume of 100 means max volume. Anything higher may break the sound # handling. # # The server does not currently communicate what sound to play via the sound # number, so this file is technically obsolete and is likely to discontinued # once cfsndserv is better equipped to support the sound2 protocol. # # If a copy of this file is in ~/.crossfire/, it is loaded from there. # Standard Sounds: su-fanf 30 SOUND_NEW_PLAYER 0 Teeswing 80 SOUND_FIRE_ARROW 1 chord 100 SOUND_LEARN_SPELL 2 Missed 70 SOUND_FUMBLE_SPELL 3 Missed 70 SOUND_WAND_POOF 4 Creaky-1 90 SOUND_OPEN_DOOR 5 blip 80 SOUND_PUSH_PLAYER 6 click1 60 SOUND_PLAYER_HITS1 7 click2 70 SOUND_PLAYER_HITS2 8 click1 80 SOUND_PLAYER_HITS3 9 click2 90 SOUND_PLAYER_HITS4 10 FloorTom 70 SOUND_PLAYER_IS_HIT1 11 ouch1 80 SOUND_PLAYER_IS_HIT2 12 thru 90 SOUND_PLAYER_IS_HIT3 13 drip 80 SOUND_PLAYER_KILLS 14 squish 80 SOUND_PET_IS_KILLED 15 gong 150 SOUND_PLAYER_DIES 16 Whoosh 100 SOUND_OB_EVAPORATE 17 Explosion 100 SOUND_OB_EXPLODE 18 TowerClock 130 SOUND_CLOCK 19 boink2 80 SOUND_TURN_HANDLE 20 MetalCrash 200 SOUND_FALL_HOLE 21 Puke 130 SOUND_DRINK_POISON 22 # Spells : SOUND_CAST_SPELL_0 23, 24, 25 ... Spell Sounds: magic 100 DEFAULT swish 70 "magic bullet" /* 0 */ swish 60 "small fireball" swish 80 "medium fireball" swish 100 "large fireball" magic 100 "burning hands" lightning1 70 "small lightning" lightning1 90 "large lightning" swish 100 "magic missile" magic 100 "create bomb" magic 100 "summon golem" magic 100 "summon fire elemental" /* 10 */ magic 100 "summon earth elemental" magic 100 "summon water elemental" magic 100 "summon air elemental" first_try 100 "dimension door" magic 100 "create earth wall" Tear 100 "paralyze" Missle1 80 "icestorm" magic 100 "magic mapping" Tear 90 "turn undead" Tear 90 "fear" /* 20 */ Missle1 100 "poison cloud" magic 100 "wonder" Explosion 80 "destruction" magic 100 "perceive self" sci_fi_gun 100 "word of recall" magic 100 "invisible" magic 100 "invisible to undead" magic 100 "probe" swish 100 "large bullet" magic 100 "improved invisibility" /* 30 */ Tear 100 "holy word" magic 100 "minor healing" magic 100 "medium healing" magic 100 "major healing" magic 100 "heal" magic 100 "create food" Explosion 60 "earth to dust" magic 100 "armour" magic 100 "strength" magic 100 "dexterity" /* 40 */ magic 100 "constitution" magic 100 "charisma" magic 100 "create fire wall" magic 100 "create frost wall" magic 100 "protection from cold" magic 100 "protection from electricity" magic 100 "protection from fire" magic 100 "protection from poison" magic 100 "protection from slow" magic 100 "protection from paralysis" /* 50 */ magic 100 "protection from draining" magic 100 "protection from magic" magic 100 "protection from attack" magic 100 "levitate" Gun-5 100 "small speedball" Gun-5 130 "large speedball" Missle1 150 "hellfire" Missle1 170 "dragonbreath" Missle1 170 "large icestorm" magic 100 "charging" /* 60 */ magic 100 "polymorph" swish 200 "cancellation" Tear 100 "confusion" Tear 150 "mass confusion" magic 100 "summon pet monster" magic 100 "slow" magic 100 "regenerate spellpoints" magic 100 "cure poison" magic 100 "protection from confusion" magic 100 "protection from cancellation" /* 70 */ magic 100 "protection from depletion" magic 100 "alchemy" Evil_Laugh 100 "remove curse" Evil_Laugh 120 "remove damnation" magic 100 "identify" magic 100 "detect magic" magic 100 "detect monster" magic 100 "detect evil" magic 100 "detect curse" Explosion 100 "heroism" /* 80 */ bugle_charge 100 "aggravation" magic 100 "firebolt" magic 100 "frostbolt" Explosion 100 "shockwave" magic 100 "color spray" magic 100 "haste" magic 100 "face of death" lightning1 110 "ball lightning" swish 100 "meteor swarm" swish 100 "comet" /* 90 */ magic 100 "mystic fist" magic 100 "raise dead" magic 100 "resurrection" magic 100 "reincarnation" magic 100 "immune cold" magic 100 "immune electricity" magic 100 "immune fire" magic 100 "immune poison" magic 100 "immune slow" magic 100 "immune paralysis" /* 100 */ magic 100 "immune drain" magic 100 "immune magic" magic 100 "immune attack" magic 100 "invulnerability" magic 100 "defense magic 100 "rune fire" magic 100 "rune frost" magic 100 "rune shocking" magic 100 "rune blasting" magic 100 "rune death" /* 110 */ magic 100 "marking rune" magic 100 "build director" magic 100 "pool of chaos" magic 100 "build bullet wall" magic 100 "build ligtning wall" magic 100 "build fireball wall" magic 100 "magic " magic 100 "rune of magic drain" magic 100 "antimagic rune" magic 100 "rune transferrence" /* 120 */ magic 100 "transferrence" magic 100 "magic drain" magic 100 "counterspell" magic 100 "disarm" magic 100 "cure confusion" magic 100 "restoration" magic 100 "summon evil monster" magic 100 "counterwall" magic 100 "cause light wounds" magic 100 "cause medium wounds" /* 130 */ magic 100 "cause serious wounds" magic 100 "charm monsters" magic 100 "banishment" magic 100 "create missile" crossfire-client-1.70.0/sound-src/sndproto.h0000644000014500000120000000037611731277014015725 00000000000000/* common.c */ extern int init_sounds(void); extern int sound_to_soundnum(const char *name, uint8 type); extern int type_to_soundtype(uint8 type); extern int StdinCmd(char *data, int len); extern int write_settings(void); extern int read_settings(void); crossfire-client-1.70.0/sound-src/common.c0000644000014500000120000006220411731277014015336 00000000000000const char * rcsid_sound_src_common_c = "$Id: common.c 13995 2010-10-14 04:01:47Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file sound-src/common.c * */ #include "config.h" #include #include #ifdef HAVE_STRING_H #include #endif #include #include "client-types.h" #include "newclient.h" #include "client.h" #include "def_sounds.h" #include "common.h" Sound_Info normal_sounds[MAX_SOUNDS]; Sound_Info spell_sounds[MAX_SOUNDS]; Sound_Info default_normal; Sound_Info default_spell; char *client_sounds_path = NULL; /* Client sound file folder */ char *user_sounds_path = NULL; /* User sound file folder */ char *user_sounds_file = NULL; /* User sound mappings */ char *user_config_file = NULL; /* User sndconfig file. */ char *buffers = NULL; /* * Sound device parameters. See also sound_settings. */ int stereo = 0; int bit8 = 0; int sample_size = 0; int frequency = 0; int sign = 0; int zerolevel = 0; /** * Parse a line from the sound file. This is a little ugly because static * values are stored in the function so we know what we are doing - however, * it is somewhat necessary so that we can use this same function to parse * both files and the compiled in data. The linefeed delimited sound file * lines that are empty, or begin with hash (#) characters are ignored. Data * lines are space/tab-delimited fields: * * sound_filedefault_volumeSOUND_SYMBOLIC_NAMEsound_number * * sound_file is an absolute path (not at all friendly or resilient to client * changes like changing from a distro version to SVN, etc). * * default_volume is an integer from 0 to 100 (a percentage) that is left * padded with spaces to produce a fixed, three-character width. * * SOUND_SYMBOLIC_NAME is unused and may be omitted, but could be used for * client/server communication regarding a sound to play. * * sound_number is a zero-based integer that identifies the sound. If it is * omitted, the last sound number used is incremented by one. The server * used to communicate what sound to play via the sound number, so the * order was not arbitrary, but the number and order is now obsolete from * a server perspective. * * @param line A line of data from the .crossfire/sounds configuration file. * Note that this data may be modified by parse_sound_line(). * @param lineno The line number of the passed data used for error tracking. */ static void parse_sound_line(char *line, int lineno) { static int readtype=0; /**< Identifies the last section title * found in the .crossfire/sounds * file. 0 indicates a section * title was not found yet. */ static int lastnum=0; /**< The number of items processed in * the current readtype section. */ int newnum, len; char *cp, *volume, *symbolic, *cp1, filename[512]; if (line[0] == '#' || line[0] == '\n') return; if (!strcmp(line, "Standard Sounds:\n")) { lastnum = 0; readtype = 1; return; } if (!strcmp(line, "Spell Sounds:\n")) { lastnum = 0; readtype = 2; return; } if (!readtype) { #ifdef SOUND_DEBUG fprintf(stderr, "parse_sound_line: Ignored file header:\n%d:%s\n", lineno, line); #endif return; } /* * Change the LF delimiter at the end of the line to a null terminator. */ if (line[strlen(line)-1] == '\n') line[strlen(line)-1] = '\0'; /* * Convert the first whitespace found to a null terminator. */ len = strcspn(line, " \t"); line[len] = '\0'; cp = line + len + 1; /* * Skip all the following whitespace to locate the next field, and save a * pointer to the volume data. */ while (*cp != '\0' && (*cp == ' ' || *cp == '\t')) cp++; volume = cp; /* * There is no need to null terminate the volume since it is processed * with atoi. * * Next, check to see if the unprocessed portion of the line has any * whitespace following the default volume. */ cp1 = cp; if (!(cp = strchr(cp1, ' ')) && !(cp = strchr(cp1, '\t'))) { /* * If not, there cannot be a sound number, and any data left is an * unused symbolic name, so the sound number is auto-assigned. */ newnum = lastnum + 1; symbolic = NULL; } else { /* * Since there is more whitespace, there might be a symbolic name and * sound number. Ignore any additional whitespace following the * volume, and treat the next character as the beginning of a symbolic * name. */ while (*cp != '\0' && (*cp == ' ' || *cp == '\t')) cp++; symbolic = cp; /* * Some symbolic names are double-quoted to allow them to contain * whitespace. If a quote starts the name, advance the name pointer * to effectively strip the quote, and convert the final quote to a * null terminator. */ if (*symbolic == '"') { symbolic++; for (cp = symbolic; *cp != '\0' && *cp != '"'; cp++); *cp = '\0'; cp++; } /* * cp is either the beginning of an unquoted symbolic name or is * pointing to the whitespace between a quoted symbolic name and the * sound number. */ cp1 = cp; if (!(cp = strchr(cp1, ' ')) && !(cp = strchr(cp1, '\t'))) { /* * There is no more whitespace on the line. If the name was * quoted, there should have been whitespace following that cp was * pointing to, so there cannot be a sound number present. On the * other hand, if the name was not quoted, cp would point at the * symbolic name and whitespace should follow if a sound number is * present. Either way, the sound number must be auto-assigned. */ newnum = lastnum + 1; } else { /* * If there was whitespace left, cp points to it now, whether or * not the symbolic name was quoted. A sound number should follow * the whitespace. First, try to null terminate the prior data, * then skip all subsequent whitespace, and point at what should * be the sound number. If numeric data is found, read the sound * number, otherwise auto-assign the sound number. This is a bit * dodgy as invalid data is silently ignored. */ *cp++ = '\0'; while (*cp != '\0' && (*cp == ' ' || *cp == '\t')) cp++; if (isdigit(*cp)) newnum = atoi(cp); else newnum = lastnum + 1; } } if (newnum < 0 || newnum > MAX_SOUNDS) { fprintf(stderr, "Invalid sound number %d, line %d, buf %s\n", newnum, lineno, line); return; } /* * Compatibility processing for older files and/or the SDL_mixer setup. * If the filename ends in .au, convert the ending to a more appropriate * one as .au files are not distributed by the project. * * Use .raw instead of .au for most sound setups, as this is what has been * supported by the clients for a long time. * * As SDL_mixer does not support .raw, change the extension to .ogg for * systems other than Windows, or .wav for Windows. Technically, it would * be okay to use either .wav or .ogg whatever the platform, so it is a * FIXME in that it would probably be best for the file extension to be a * configurable option. * * Overriding the content of the sound file is a bit of a kludge, but * allows legacy .crossfire/sound files to work with the current client. * The dodgy part is that if someone looks in the file, it will not * necessarily indicate the actual file being played. */ strcpy(filename, line); cp = filename + strlen(filename) - 3; if (!strcmp(cp, ".au")) strcpy(cp, ".raw"); #ifdef SDL_SOUND cp = filename + strlen(filename) - 4; if (!strcmp(cp, ".raw")) #ifndef WIN32 strcpy(cp, ".ogg"); #else strcpy(cp, ".wav"); #endif #endif /* * One symbolic name is used: DEFAULT. If it is found, the sound file * becomes the default sound for any undefined sound number, so set the * appropriate default, and ignore any sound number that may follow. */ if (symbolic && !strcmp(symbolic, "DEFAULT")) { if (readtype == 1) { /* * Standard Sounds */ default_normal.filename = strdup_local(filename); default_normal.volume = atoi(volume); } else if (readtype == 2) { /* * Spell Sounds */ default_spell.filename = strdup_local(filename); default_spell.volume = atoi(volume); } return; } /* * The only way for processing to reach this point is if valid sound data * was found in a section. Process it according to the section it is in. */ if (readtype == 1) { /* * Standard Sounds */ normal_sounds[newnum].filename = strdup_local(filename); normal_sounds[newnum].volume = atoi(volume); if (symbolic) normal_sounds[newnum].symbolic = strdup_local(symbolic); else normal_sounds[newnum].symbolic = NULL; } else if (readtype == 2) { /* * Spell Sounds */ spell_sounds[newnum].filename = strdup_local(filename); spell_sounds[newnum].volume = atoi(volume); if (symbolic) spell_sounds[newnum].symbolic = strdup_local(symbolic); else spell_sounds[newnum].symbolic = NULL; } /* * Retain the assigned sound number for possible use in subsquent data * lines. */ lastnum = newnum; } /** * Opens the audio device, allocates buffers, and reads any configuration * files that need to be. * * http://en.wikipedia.org/wiki/Comparison_of_file_systems seems to show that * 255 characters is the maximum file name length for most file systems. The * same page notes that many file systems have no defined limit to directory * depth. Some operating environments have a maximum that is quite large - * for example, Windows NT can handle paths up to 32,767 bytes. This data, * along with the fact that the server Music command from the server has no * inherent limitation (other than MAXSOCKBUF), is why MAXSOCKBUF is chosen * for the maximum size of the path buffer. MAXSOCKBUF is rather large, but * the buffer size is practically only temporarily allocated (via the stack). * * @return Zero on success and on failure, the calling function will likely * disable sound support/requests from the server. */ int init_sounds(void) { FILE *fp; char path[MAXSOCKBUF]; char buf[512]; int i; #ifdef SOUND_DEBUG fprintf( stderr, "Settings: bits: %i, ", settings.bit8 ? 8 : 16); fprintf( stderr, "%s, ",settings.sign ? "signed" : "unsigned"); fprintf( stderr, "%s, ",settings.stereo ? "stereo" : "mono"); fprintf( stderr, "frequency: %i, ", settings.frequency); fprintf( stderr, "device: %s\n", settings.audiodev); #endif /* * Force the last char of the buffer to null in case strn* cuts off the * terminating null while copying file information. */ path[sizeof(path) - 1] = '\0'; /* * Initialize paths to various sound system resources. Bail if any of * the buffer allocations fail. */ strncpy(path, getenv("HOME"), sizeof(path) - 1); strncat(path, USER_CONFIG_FILE, sizeof(path) - 1); CONVERT_FILESPEC_TO_OS_FORMAT(path); user_config_file = (char *) malloc(strlen(path)); if (user_config_file) strcpy(user_config_file, path); else return -1; strncpy(path, getenv("HOME"), sizeof(path) - 1); strncat(path, USER_SOUNDS_FILE, sizeof(path) - 1); CONVERT_FILESPEC_TO_OS_FORMAT(path); user_sounds_file = (char *) malloc(strlen(path)); if (user_sounds_file) strcpy(user_sounds_file, path); else return -1; strncpy(path, getenv("HOME"), sizeof(path) - 1); strncat(path, USER_SOUNDS_PATH, sizeof(path) - 1); CONVERT_FILESPEC_TO_OS_FORMAT(path); user_sounds_path = (char *) malloc(strlen(path)); if (user_sounds_path) strcpy(user_sounds_path, path); else return -1; strncpy(path, CLIENT_SOUNDS_PATH, sizeof(path) - 1); CONVERT_FILESPEC_TO_OS_FORMAT(path); client_sounds_path = (char *) malloc(strlen(path)); if (client_sounds_path) strcpy(client_sounds_path, path); else return -1; buffers = (char *) malloc(settings.buffers * settings.buflen); if (!buffers) return -1; sounds_in_buffer = (int *) calloc(settings.buffers, sizeof(int)); if (!sounds_in_buffer) return -1; if (init_audio()) return -1; if (sign) zerolevel = 0; else zerolevel = bit8 ? 0x80 : 0x00; memset(buffers, zerolevel, settings.buflen * settings.buffers); #ifdef SOUND_DEBUG fprintf( stderr, "bits: %i, ", bit8 ? 8 : 16); fprintf( stderr, "%s, ", sign ? "signed" : "unsigned"); fprintf( stderr, "%s, ", stereo ? "stereo" : "mono"); fprintf( stderr, "freq: %i, ", frequency); fprintf( stderr, "smpl_size: %i, ", sample_size); fprintf( stderr, "0level: %i\n", zerolevel); #endif for (i = 0; i < MAX_SOUNDS; i++) { normal_sounds[i].filename = NULL; spell_sounds[i].filename = NULL; normal_sounds[i].size = -1; spell_sounds[i].size = -1; } default_normal.filename = NULL; default_spell.filename = NULL; i = 0; if (!(fp = fopen(user_sounds_file, "r"))) { fprintf(stderr, "Unable to open %s - using built-in defaults\n", user_sounds_file); for (; i < sizeof(def_sounds) / sizeof(char*); i++) { strcpy(buf, def_sounds[i]); parse_sound_line(buf, i); } } else while (fgets(buf, 511, fp) != NULL) { buf[511] = '\0'; parse_sound_line(buf, ++i); } /* Note in both cases below, we leave the symbolic name untouched. */ for (i = 0; i < MAX_SOUNDS; i++) { if (!normal_sounds[i].filename) { normal_sounds[i].filename = default_normal.filename; normal_sounds[i].volume = default_normal.volume; } if (!spell_sounds[i].filename) { spell_sounds[i].filename = default_spell.filename; spell_sounds[i].volume = default_spell.volume; } normal_sounds[i].data = NULL; spell_sounds[i].data = NULL; } return 0; } /** * Convert a sound name to a sound number to help with the transition of the * sound server from sound support to sound2 capability. This is not an end * solution, but one that gets the sound server working a little bit until a * better one can be implemented. * * @param name * @param type */ int sound_to_soundnum(const char *name, uint8 type) { fprintf(stderr, "name=%s type=%d\n", name, type); /** * @todo Implement conversion to legacy soundnum. * @todo Replace conversion to legacy soundnum. */ return 1; } /** * Convert a sound type to legacy type to help with the transition of the * sound server from sound support to sound2 capability. This is not an end * solution, but one that gets the sound server working a little bit until a * better one can be implemented. Basically, all types except 2 get changed * to 1. * * @param type */ int type_to_soundtype(uint8 type) { #ifdef SOUND_DEBUG fprintf(stderr, "Converted type %d to legacy type %d.\n", type, (type == 2) ? 2 : 1); #endif /** * @todo Replace conversion to legacy soundtype. */ return (type == 2) ? 2 : 1; } /** * Preliminary handler for Crossfire server sound2 and music commands that are * received from the client via stdin. * * The sound player differentiates sound2 and music commands by looking at the * first parameter that comes in. Music commands consist of a single, quoted * string that identifies the music to play, while a sound effect command has * various numeric parameters followed by strings that identify what to play. * * Sound2 data consists of whitespace delimited values: x, y, dir, vol, type, * sound, and source. Type, sound, and source define what to play, while the * other parameters may be used to figure out how to play it. x and y are * offsets from the player to identify where the sound originated. dir can be * set to indicate a direction that the source is travelling in. vol is an * attenuation factor (0-100) that may be applied to the sound volume to make * it possible, for example, to give map-designers the ability to suggest * relative loudness of sounds in the environment. * * FIXME: This is a work-in-progress. The sound2 was put into the server * without a plan to fix the clients. cfsndserv is basically made obsolete by * sound2. The basic fix resurrects some sound support but does not fully * implement the features sound2 is supposed to provide. * * @param data A text buffer that (hopefully) has a sound or music command. * @param len The length of the text data in the command buffer. * @return 0 if the buffer contains a well-formed command, otherwise -1. */ int StdinCmd(char *data, int len) { char* dptr; /* Pointer used when parsing data */ char* fptr; char* sound = NULL; /* Points to a sound or music name */ char* source = NULL; char soundfile[MAXSOCKBUF]; int sourcelen; int soundlen; int spacelen; int type = 0; int dir = 0; int vol = 0; int x = 0; int y = 0; int i = 0; fptr = soundfile; dptr = strtok(data, "\""); /* * Is data a blank line (ending with LF) or is it a quoted, empty string? */ if (dptr == NULL) { fprintf(stderr, "Sound/music command does not contain any data.\n"); return -1; } /* * If the first character is not a quote character, a sound command is * expected. */ if (data[0] != '\"') { /* * There are 5 numeric values expected and required. Technically, if * cfsndserv was new, and the client old, 4 might be present, but the * player does not attempt to support old clients. */ i = sscanf(dptr, "%d %d %d %d %d", &x, &y, &dir, &vol, &type); if ((i != 5) || (dir < 0) || (dir > 8) || (vol < 0) || (vol > 100) || (type < 1)) { /* * There is not much point in trying to work with data that does * not fit some basic rules known at the time of development. */ fprintf(stderr, "Unrecognized sound command data format.\n"); #ifdef SOUND_DEBUG fprintf(stderr, "(%d valid items read) x=%d y=%d dir=%d vol=%d type=%d\n", i, x, y, dir, vol, type); #endif return -1; } } /* * Below this point, when type == 0, a music command is expected, and when * type != 0, a sound command is required. */ if (type) { /* * dptr points to the numerics already read, so advance to the string * following the first quote delimiter. A sound source name is * expected. */ dptr = strtok(NULL, "\""); if (dptr == NULL) { fprintf(stderr, "Sound command is missing sound/source names.\n"); return -1; } source = dptr; sourcelen = strlen(dptr); /* * Verify there is whitespace between source and sound names. */ dptr = strtok(NULL, "\""); if (dptr == NULL) { fprintf(stderr, "Sound command is missing the sound name.\n"); return -1; } spacelen = strlen(dptr); for (i = 0; i < spacelen; i++) { if (dptr[i] != ' ' && dptr[i] != '\t') { fprintf(stderr, "Invalid characters after source name.\n"); return -1; } } /* * Advance the data pointer to the following sound name. */ dptr = strtok(NULL, "\""); if (dptr == NULL) { fprintf(stderr, "Sound command is missing the sound name.\n"); return -1; } } /* * Record the sound or music name here (type determines which it is). */ sound = dptr; soundlen = strlen(dptr); /* * If there was a trailing quote after the sound or music name, there will * be a null there now, and sound[soundlen] should point to the character * just before another null at data[len-1] (that terminates the command). */ i = sound - data + soundlen + 1 + 1; if (i - 1 == len) { fprintf(stderr, "Sound or music name does not end with a quote.\n"); return -1; } if (i > len) { fprintf(stderr, "Invalid data after sound/music name (a quoted string needed)\n"); return -1; } if (type) { /* * Play sound effect here. */ #ifdef SOUND_DEBUG fprintf(stderr, "Playing sound " "%d,%d dir=%d vol=%d type=%d source=\"%s\" sound=\"%s\"\n", x, y, dir, vol, type, source, sound); #endif play_sound(sound_to_soundnum(sound, type), type_to_soundtype(type), x, y); return 0; } else { /* * Play music here. */ #ifdef SOUND_DEBUG fprintf(stderr, "Playing music \"%s\"\n", sound); #endif play_music(sound); } return 0; } /** * Update the player .crossfire/sndconfig file. * * @return */ int write_settings(void) { FILE *f; f = fopen(user_config_file, "w"); if (!f) return -1; fprintf(f, "# Crossfire sound server settings\n"); fprintf(f, "# Please note, that not everything will work\n\n"); fprintf(f, "stereo: %i\n", settings.stereo); fprintf(f, "bits: %i\n", settings.bit8?8:16); fprintf(f, "signed: %i\n", settings.sign); fprintf(f, "frequency: %i\n", settings.frequency); fprintf(f, "buffers: %i\n", settings.buffers); fprintf(f, "buflen: %i\n", settings.buflen); fprintf(f, "simultaneously: %i\n", settings.simultaneously); /* fprintf(f,"device: %s\n",settings.audiodev); */ fclose(f); return 0; } /** * Read the player .crossfire/sndconfig file. * * @return */ int read_settings(void) { char linebuf[1024]; FILE *f; if (user_config_file == NULL) return 0; f = fopen(user_config_file, "r"); if (!f) return -1; while(fgets(linebuf, 1023, f) != NULL) { linebuf[1023] = 0; /* Strip off the newline */ linebuf[strlen(linebuf) - 1] = 0; if (strncmp(linebuf, "stereo:", strlen("stereo:")) == 0) settings.stereo = atoi(linebuf + strlen("stereo:")) ? 1 : 0; else if (strncmp(linebuf, "bits:", strlen("bits:")) == 0) settings.bit8 = (atoi(linebuf + strlen("bits:"))==8) ? 1 : 0; else if (strncmp(linebuf, "signed:", strlen("signed:")) == 0) settings.sign = atoi(linebuf + strlen("signed:")) ? 1 : 0; else if (strncmp(linebuf, "buffers:", strlen("buffers:")) == 0) settings.buffers = atoi(linebuf + strlen("buffers:")); else if (strncmp(linebuf, "buflen:", strlen("buflen:")) == 0) settings.buflen = atoi(linebuf + strlen("buflen:")); else if (strncmp(linebuf, "frequency:", strlen("frequency:")) == 0) settings.frequency = atoi(linebuf + strlen("frequency:")); else if (strncmp(linebuf, "simultaneously:", strlen("simultaneously:")) == 0) settings.simultaneously = atoi(linebuf + strlen("simultaneously:")); #if 0 else if (strncmp(linebuf,"device: ",strlen("device: "))==0) settings.audiodev=strdup_local(linebuf+strlen("device: ")); #endif } fclose(f); return 0; } crossfire-client-1.70.0/sound-src/def_sounds.h0000644000014500000120000000003611731277220016176 00000000000000extern char *def_sounds[205]; crossfire-client-1.70.0/sound-src/alsa9.c0000644000014500000120000003550711731277014015065 00000000000000static char *rcsid_sound_src_alsa9_c = "$Id: alsa9.c 13995 2010-10-14 04:01:47Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001-2005, Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file sound-src/alsa9.c * Used only for alsa 0.9 and later sound. Alsa sound code is sufficiently * different from the rest that trying to keep it common didn't make much * sense. */ #define SOUND_DEBUG /* Debugs the actual writing of data - this generally isn't that interesting, * and generates a lot of messages which tends to obscure the more interesting * ones. */ /*#define SOUND_DEBUG_WRITES */ #include #include #include #include #include #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef HAVE_SYS_IOCTL_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef HAVE_STRING_H #include #endif #include #include #include #include "newclient.h" #include "client-types.h" #include "def_sounds.h" #include "sndproto.h" #include "common.h" #include #include #define ALSA_PCM_NEW_HW_PARAMS_API #define AUDIODEV "default:0,0" snd_pcm_t *handle = NULL; int sndbuf_pos=0; #define ALSA9_ERROR(str,err) { \ fprintf(stderr,"ALSA9 Error: %s %s\n",str,snd_strerror(err)); } #define SOUND_DECREASE 0.1 /* mixer variables */ int *sounds_in_buffer=NULL; int current_buffer=0; /* Next buffer we will write out */ int first_free_buffer=0; /* So we know when to stop playing sounds */ int soundfd=0; sound_settings settings = { 0, 1, 0, 8000, 200, 2048, 4, AUDIODEV }; snd_pcm_hw_params_t *params; static snd_pcm_uframes_t chunk_size = 0; int err = 0; void alsa_audio_close(void) { snd_pcm_close(handle); } /** * Initialize the Alsa9 sound system. * * @return Zero if audio initialized successfully, otherwise -1. */ int init_audio(void) { snd_pcm_sw_params_t *sw_params; unsigned int format; printf("cfsndserv for the ALSA9 sound system\n"); printf("supports sound effects only (no background music).\n"); fflush(stdout); #ifdef SOUND_DEBUG fprintf(stderr, "init_audio: ALSA9\n"); fflush(stderr); #endif /* open the PCM device */ if ((err = snd_pcm_open(&handle,AUDIODEV,SND_PCM_STREAM_PLAYBACK,0)) <0) { ALSA9_ERROR("init_audio(): ",err); exit(1); } atexit(alsa_audio_close); /* allocate and zero out params */ snd_pcm_hw_params_alloca(¶ms); if ((err = snd_pcm_hw_params_any(handle,params)) <0) { ALSA9_ERROR("init_audio(): ",err); exit(1); } /* set the access mode (interleaved) */ if ((err = snd_pcm_hw_params_set_access(handle,params,SND_PCM_ACCESS_RW_INTERLEAVED)) <0) { ALSA9_ERROR("init_audio(): ",err); exit(1); } /* set the format */ if (settings.bit8) format = settings.sign?SND_PCM_FORMAT_S8:SND_PCM_FORMAT_U8; else format = SND_PCM_FORMAT_U16; if ((err = snd_pcm_hw_params_set_format(handle,params,format))<0) { ALSA9_ERROR("init_audio(): ",err); exit(1); } /* set the number of channels */ if ((err = snd_pcm_hw_params_set_channels(handle,params,settings.stereo?2:1))<0) { ALSA9_ERROR("init_audio(): ",err); exit(1); } stereo = settings.stereo?1:0; /* set the rate (our frequency, or closest match) */ unsigned int r = (unsigned int)settings.frequency; if (r == 0) r = 41100; int dir = 0; frequency = snd_pcm_hw_params_set_rate_near(handle,params,&r,&dir); /* get sample size */ sample_size = (snd_pcm_format_physical_width(format) * (settings.stereo?2:1)) / 8; #ifdef SOUND_DEBUG printf("init_audio(): sample_size = %d\n",sample_size); fflush(stdout); #endif /* apply the settings */ if ((err = snd_pcm_hw_params(handle,params))<0) { ALSA9_ERROR("init_audio(): ",err); exit(1); } err=snd_pcm_nonblock(handle, 1); if (err < 0) { ALSA9_ERROR("nonblock setting error: %s", err); exit(1); } if ((err = snd_pcm_sw_params_malloc (&sw_params)) < 0) { fprintf (stderr, "cannot allocate software parameters structure (%s)\n", snd_strerror (err)); exit (1); } if ((err = snd_pcm_sw_params_current (handle, sw_params)) < 0) { fprintf (stderr, "cannot initialize software parameters structure (%s)\n", snd_strerror (err)); exit (1); } if ((err = snd_pcm_sw_params_set_avail_min (handle, sw_params, 4096)) < 0) { fprintf (stderr, "cannot set minimum available count (%s)\n", snd_strerror (err)); exit (1); } if ((err = snd_pcm_sw_params_set_start_threshold (handle, sw_params, 0U)) < 0) { fprintf (stderr, "cannot set start mode (%s)\n", snd_strerror (err)); exit (1); } if ((err = snd_pcm_sw_params (handle, sw_params)) < 0) { fprintf (stderr, "cannot set software parameters (%s)\n", snd_strerror (err)); exit (1); } /* Zerolevel=0x80 seems to work best for both 8 and 16 bit audio */ if (sign) zerolevel=0; else zerolevel=0x80; snd_pcm_hw_params_get_period_size(params, &chunk_size, 0); return 0; } void alsa_recover(int e) { /* Recover from various errors */ if (e == -EAGAIN) { return; } else if (e == -EPIPE) { err = snd_pcm_prepare(handle); if (err < 0) { ALSA9_ERROR("alsa_recover(): Unable to recover from underrun. ",err); return; } } else if (e == -ESTRPIPE) { while ((err = snd_pcm_resume(handle)) == -EAGAIN) sleep(1); if (err < 0) { err = snd_pcm_prepare(handle); if (err < 0) { ALSA9_ERROR("alsa_recover(): Unable to recover from suspend. ",err); return; } } } else ALSA9_ERROR("alsa_recover(): ",e); } /** * Play a sound using the Alsa9 sound system. * * Does the actual task of writing the data to the socket. The ALSA write * logic is a bit odd, in that the count you pass in is not the number of * bytes you are writing, but the number of samples you are writing. Thus, if * you have stereo with 1 byte/channel, you'd divide the number by 2. If you * have 16 bit audio with stereo, you'd divide the number by 4. * * @param buffer * @param off * @return */ int audio_play(int buffer, int off) { int count = (settings.buflen - off) / sample_size; #ifdef SOUND_DEBUG fprintf(stderr, "audio_play: ALSA9\n"); fflush(stderr); #endif if (count > chunk_size) count=chunk_size; #ifdef SOUND_DEBUG_WRITES printf("audio play - writing starting at %d, %d bytes, off=%d\n", settings.buflen*buffer+off,count, off); fflush(stdout); #endif err = snd_pcm_writei(handle,buffers+settings.buflen*buffer+off, count); if (err < 0) { alsa_recover(err); return 0; } else { return err * sample_size; } } /* Plays sound 'soundnum'. soundtype is 0 for normal sounds, 1 for * spell_sounds. This might get extended in the future. x,y are offset * (assumed from player) to play sound. This information is used to * determine value and left vs right speaker balance. * This doesn't really play a sound, rather it just addes it to * the buffer to be played later on. */ void play_sound(int soundnum, int soundtype, int x, int y) { Sound_Info *si; int buf,off; int i; unsigned left_ratio,right_ratio; double dist; #ifdef SOUND_DEBUG fprintf(stderr, "play_sound: ALSA9\n"); fflush(stderr); #endif buf=current_buffer; if (buf>=settings.buffers) buf=1; if (buf == 0) buf++; /* check if the buffer isn't full */ #ifdef SOUND_DEBUG fprintf(stderr,"Sounds in buffer %i: %i\n",buf,sounds_in_buffer[buf]); #endif if (sounds_in_buffer[buf]>settings.simultaneously) return; if (soundnum>=MAX_SOUNDS || soundnum<0) { fprintf(stderr,"Invalid sound number: %d\n", soundnum); return; } if (soundtype < SOUND_NORMAL || soundtype == 0) soundtype = SOUND_NORMAL; if (soundtype==SOUND_NORMAL) { si = &normal_sounds[soundnum]; } else if (soundtype==SOUND_SPELL) { si = &spell_sounds[soundnum]; } else { fprintf(stderr,"Unknown soundtype: %d\n", soundtype); return; } if (!si->filename) { fprintf(stderr,"Sound %d (type %d) is not defined\n", soundnum, soundtype); return; } /* * Load the sound if it is not loaded yet. * */ if (!si->data){ FILE *f; struct stat sbuf; #ifdef SOUND_DEBUG fprintf(stderr,"Loading file: %s\n",si->filename); #endif if (stat(si->filename,&sbuf)){ perror(si->filename); return; } si->size=sbuf.st_size; if (si->size <=0 ) return; if (si->size*sample_size > settings.buflen*(settings.buffers-1) ){ fprintf(stderr,"Sound %s too long (%i > %i)\n",si->filename,si->size, settings.buflen*(settings.buffers-1)/sample_size); return; } si->data=(unsigned char *)malloc(si->size); f=fopen(si->filename,"r"); if (!f){ perror(si->filename); return; } fread(si->data,1,si->size,f); fclose(f); } /* calculate volume multiplers */ dist=sqrt(x*x+y*y); #ifdef SOUND_DEBUG fprintf(stderr,"Playing sound %i (%s), volume %i, x,y=%d,%d, dist=%f\n",soundnum,si->symbolic,si->volume,x,y, dist); #endif right_ratio=left_ratio=((1<<16)*si->volume)/(100*(1+SOUND_DECREASE*dist)); if (stereo){ double diff; if (dist) diff=(1.0-fabs((double)x/dist)); else diff=1; #ifdef SOUND_DEBUG printf("diff: %f\n",diff); fflush(stdout); #endif if (x<0) right_ratio*=diff; else left_ratio*=diff; } #ifdef SOUND_DEBUG fprintf(stderr,"Ratio: %i, %i\n",left_ratio,right_ratio); #endif /* insert the sound to the buffers */ sounds_in_buffer[buf]++; off=0; for(i=0;isize;i++){ int dat=si->data[i]-0x80; if (settings.bit8) { if (!stereo){ buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; } else{ buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; buffers[buf*settings.buflen+off+1]+=(dat*right_ratio)>>16; } } else{ /* 16 bit output */ if (!stereo){ #ifdef WORDS_BIGENDIAN buffers[buf*settings.buflen+off+1]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; } else{ buffers[buf*settings.buflen+off+1]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; buffers[buf*settings.buflen+off+3]+=((dat*right_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+2]+=(dat*right_ratio)>>16; } #else buffers[buf*settings.buflen+off]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+1]+=(dat*left_ratio)>>16; } else{ buffers[buf*settings.buflen+off]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+1]+=(dat*left_ratio)>>16; buffers[buf*settings.buflen+off+2]+=((dat*right_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+3]+=(dat*right_ratio)>>16; } #endif } off+=sample_size; if (off>=settings.buflen){ off=0; buf++; if (buf>=settings.buffers) { buf=0; } } } #ifdef SOUND_DEBUG fprintf(stderr,"Added %d bytes, last buffer=%d, lastpos=%d\n", si->size, buf, off); #endif /* This write did not wrap the buffers */ if (buf+1 > current_buffer) { if ((buf+1 > first_free_buffer) && (first_free_buffer >= current_buffer)) first_free_buffer = buf+1; } else { /* Buffers did wrap */ if (((buf+1 > first_free_buffer) && (first_free_buffer < current_buffer)) || (first_free_buffer >= current_buffer)) first_free_buffer = buf+1; } if (first_free_buffer >= settings.buffers) first_free_buffer=0; } /** * Stub for playing music with the Alsa 9 sound system. * * @param name A name of a song to play that does not include anything like * path or file extensions. It is up to this function to map the * name to a file. */ void play_music(const char *name) { #ifdef SOUND_DEBUG fprintf(stderr, "play_music: no music support for this sound system.\n"); fflush(stderr); #endif return; } int main(int argc, char *argv[]) { int infd; char inbuf[1024]; int inbuf_pos=0, sfd, frames, maxframes; fd_set inset; struct timeval timeout; printf ("%s\n",rcsid_sound_src_alsa9_c); fflush(stdout); if (read_settings()) write_settings(); if (init_sounds()) return 1; infd=fileno(stdin); FD_ZERO(&inset); FD_SET(infd,&inset); /* need to know max amount of space */ maxframes = snd_pcm_avail_update (handle); while(1){ timeout.tv_sec=0; timeout.tv_usec=10000; FD_SET(infd,&inset); sfd = select(FD_SETSIZE,&inset,NULL,NULL,&timeout); /* ALSA9 doesn't provide us with an fd to use to make * sure we have space for writing. So instead, we use * a timeout with select and if there is space, make send * more data. */ frames = snd_pcm_avail_update (handle); /* fprintf(stderr,"frames=%d\n", frames);*/ while (((settings.buflen+frames)> maxframes) || (frames == -EPIPE)) { if (current_buffer != first_free_buffer) { int wrote; if (frames == -EPIPE) snd_pcm_prepare(handle); wrote = audio_play(current_buffer, sndbuf_pos); #ifdef SOUND_DEBUG_WRITES printf("play_sound(): wrote %d\n",wrote); fflush(stdout); #endif if (wrote < settings.buflen-sndbuf_pos) { sndbuf_pos+=wrote; } else{ /* clean the buffer */ memset(buffers+settings.buflen*current_buffer,zerolevel,settings.buflen); sounds_in_buffer[current_buffer]=0; sndbuf_pos=0; current_buffer++; if (current_buffer>=settings.buffers) current_buffer=0; } } else break; frames = snd_pcm_avail_update (handle); } if (sfd > 0) { if (FD_ISSET(infd,&inset)){ int err=read(infd,inbuf+inbuf_pos,1); if (err<1 && errno!=EINTR){ if (err<0) perror("read"); break; } if (inbuf[inbuf_pos]=='\n'){ inbuf[inbuf_pos++]=0; StdinCmd((char *)inbuf, inbuf_pos); inbuf_pos=0; } else { inbuf_pos++; if (inbuf_pos>=1024){ fprintf(stderr,"Input buffer overflow!\n"); inbuf_pos=0; } } } } } return 0; } crossfire-client-1.70.0/sound-src/Makefile.in0000644000014500000120000004176011731277165015762 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2005, 2010 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = cfsndserv$(EXEEXT) @ALSA9_TARGET@ EXTRA_PROGRAMS = cfsndserv_alsa9$(EXEEXT) subdir = sound-src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_cfsndserv_OBJECTS = def_sounds.$(OBJEXT) common.$(OBJEXT) \ cfsndserv.$(OBJEXT) cfsndserv_OBJECTS = $(am_cfsndserv_OBJECTS) am__DEPENDENCIES_1 = cfsndserv_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(common_LIBS) am_cfsndserv_alsa9_OBJECTS = def_sounds.$(OBJEXT) common.$(OBJEXT) \ alsa9.$(OBJEXT) cfsndserv_alsa9_OBJECTS = $(am_cfsndserv_alsa9_OBJECTS) cfsndserv_alsa9_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(common_LIBS) DEFAULT_INCLUDES = -I. -I$(top_builddir)/common@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/utils/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(cfsndserv_SOURCES) $(cfsndserv_alsa9_SOURCES) DIST_SOURCES = $(cfsndserv_SOURCES) $(cfsndserv_alsa9_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ sounds AM_CFLAGS = \ -I$(top_builddir)/common \ -I$(top_srcdir)/common \ -I$(top_srcdir)/common/shared common_BUILT_FILES = \ $(top_builddir)/common/svnversion.h BUILT_SOURCES = \ $(common_BUILT_FILES) \ def_sounds.h \ def_sounds.c common_LIBS = \ $(top_builddir)/common/libcfclient.a cfsndserv_SOURCES = \ common.h \ sndproto.h \ def_sounds.h \ def_sounds.c \ common.c \ cfsndserv.c cfsndserv_LDADD = \ $(SND_LIBS) \ $(DMALLOC_LIB) \ $(common_LIBS) cfsndserv_alsa9_SOURCES = \ common.h \ sndproto.h \ def_sounds.h \ def_sounds.c \ common.c \ alsa9.c cfsndserv_alsa9_LDADD = \ $(ALSA9_LIBS) \ $(DMALLOC_LIB) \ $(common_LIBS) proto_FILES = \ common.c all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 sound-src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu sound-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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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) cfsndserv$(EXEEXT): $(cfsndserv_OBJECTS) $(cfsndserv_DEPENDENCIES) @rm -f cfsndserv$(EXEEXT) $(LINK) $(cfsndserv_OBJECTS) $(cfsndserv_LDADD) $(LIBS) cfsndserv_alsa9$(EXEEXT): $(cfsndserv_alsa9_OBJECTS) $(cfsndserv_alsa9_DEPENDENCIES) @rm -f cfsndserv_alsa9$(EXEEXT) $(LINK) $(cfsndserv_alsa9_OBJECTS) $(cfsndserv_alsa9_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alsa9.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfsndserv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/def_sounds.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` 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; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi 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)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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: -test -z "$(CONFIG_CLEAN_FILES)" || 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." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) 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-dvi: install-dvi-am install-exec-am: install-binPROGRAMS install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .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-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS $(common_BUILT_FILES): pushd `dirname $(@)` >/dev/null; \ $(MAKE) `basename $(@)`; \ popd >/dev/null; $(common_LIBS): pushd `dirname $(@)` >/dev/null; \ $(MAKE); \ popd >/dev/null; def_sounds.h: sounds $(PERL) \ $(top_srcdir)/utils/deftoheader.pl $(srcdir)/sounds def_sounds.h def_sounds def_sounds.c: sounds $(PERL) \ $(top_srcdir)/utils/deftoheader.pl $(srcdir)/sounds def_sounds.c def_sounds proto: cproto -e -o sndproto.h \ $(DEFAULT_INCLUDES) $(AM_CFLAGS) $(proto_FILES) chmod 644 sndproto.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: crossfire-client-1.70.0/sound-src/def_sounds.c0000644000014500000120000001751011731277220016176 00000000000000char *def_sounds[205] = { "#\n", "# This is a reasonably heavily modified version of the sounds file from the\n", "# server.\n", "#\n", "# Originally it was felt that full path names were needed, but since this file\n", "# was installed in the user's .crossfire directory, that meant all it would\n", "# take to break sound was to install the sound files somewhere else. It is\n", "# better to make the sound server use a location determined at build time - in\n", "# addition to allowing use of a user-accessible cache to allow override of the\n", "# default sound set. Henceforth, paths should NOT be present in this file,\n", "# and, along these same lines, the sound name in column one should not include\n", "# a .extension (like .raw or .ogg).\n", "#\n", "# There are two sections - one for normal sounds, and one for spell sounds.\n", "# They are differentiated by the header 'Standard Sounds:' and 'Spell Sounds:'\n", "#\n", "# Empty lines and lines starting with # are ignored.\n", "#\n", "# Format of the file: pathname to sound, default volume (what volume gets\n", "# played if it is centered on the player), symbolic name (not currently used\n", "# for anything, but may be in the future for the server to communicated to the\n", "# client), and sound number.. Symbolic name and sound number may be ommitted.\n", "# If sound number is missing, the sound will be assigned one higher than the\n", "# last sound read in.\n", "#\n", "# the symbolic name can be DEFAULT, in which case all sounds for that section\n", "# which are otherwise not set will be set to that value. This can be\n", "# especially useful for that magic section, since new spells get added fairly\n", "# often.\n", "#\n", "# The volume of 100 means max volume. Anything higher may break the sound\n", "# handling.\n", "#\n", "# The server does not currently communicate what sound to play via the sound\n", "# number, so this file is technically obsolete and is likely to discontinued\n", "# once cfsndserv is better equipped to support the sound2 protocol.\n", "#\n", "# If a copy of this file is in ~/.crossfire/, it is loaded from there.\n", "#\n", "Standard Sounds:\n", "\n", "su-fanf 30 SOUND_NEW_PLAYER 0\n", "Teeswing 80 SOUND_FIRE_ARROW 1\n", "chord 100 SOUND_LEARN_SPELL 2\n", "Missed 70 SOUND_FUMBLE_SPELL 3\n", "Missed 70 SOUND_WAND_POOF 4\n", "Creaky-1 90 SOUND_OPEN_DOOR 5\n", "blip 80 SOUND_PUSH_PLAYER 6\n", "click1 60 SOUND_PLAYER_HITS1 7\n", "click2 70 SOUND_PLAYER_HITS2 8\n", "click1 80 SOUND_PLAYER_HITS3 9\n", "click2 90 SOUND_PLAYER_HITS4 10\n", "FloorTom 70 SOUND_PLAYER_IS_HIT1 11\n", "ouch1 80 SOUND_PLAYER_IS_HIT2 12\n", "thru 90 SOUND_PLAYER_IS_HIT3 13\n", "drip 80 SOUND_PLAYER_KILLS 14\n", "squish 80 SOUND_PET_IS_KILLED 15\n", "gong 150 SOUND_PLAYER_DIES 16\n", "Whoosh 100 SOUND_OB_EVAPORATE 17\n", "Explosion 100 SOUND_OB_EXPLODE 18\n", "TowerClock 130 SOUND_CLOCK 19\n", "boink2 80 SOUND_TURN_HANDLE 20\n", "MetalCrash 200 SOUND_FALL_HOLE 21\n", "Puke 130 SOUND_DRINK_POISON 22\n", "\n", "# Spells : SOUND_CAST_SPELL_0 23, 24, 25 ...\n", "Spell Sounds:\n", "\n", "magic 100 DEFAULT\n", "swish 70 \"magic bullet\" /* 0 */\n", "swish 60 \"small fireball\"\n", "swish 80 \"medium fireball\"\n", "swish 100 \"large fireball\"\n", "magic 100 \"burning hands\"\n", "lightning1 70 \"small lightning\"\n", "lightning1 90 \"large lightning\"\n", "swish 100 \"magic missile\"\n", "magic 100 \"create bomb\"\n", "magic 100 \"summon golem\"\n", "magic 100 \"summon fire elemental\" /* 10 */\n", "magic 100 \"summon earth elemental\"\n", "magic 100 \"summon water elemental\"\n", "magic 100 \"summon air elemental\"\n", "first_try 100 \"dimension door\"\n", "magic 100 \"create earth wall\"\n", "Tear 100 \"paralyze\"\n", "Missle1 80 \"icestorm\"\n", "magic 100 \"magic mapping\"\n", "Tear 90 \"turn undead\"\n", "Tear 90 \"fear\" /* 20 */\n", "Missle1 100 \"poison cloud\"\n", "magic 100 \"wonder\"\n", "Explosion 80 \"destruction\"\n", "magic 100 \"perceive self\"\n", "sci_fi_gun 100 \"word of recall\"\n", "magic 100 \"invisible\"\n", "magic 100 \"invisible to undead\"\n", "magic 100 \"probe\"\n", "swish 100 \"large bullet\"\n", "magic 100 \"improved invisibility\" /* 30 */\n", "Tear 100 \"holy word\"\n", "magic 100 \"minor healing\"\n", "magic 100 \"medium healing\"\n", "magic 100 \"major healing\"\n", "magic 100 \"heal\"\n", "magic 100 \"create food\"\n", "Explosion 60 \"earth to dust\"\n", "magic 100 \"armour\"\n", "magic 100 \"strength\"\n", "magic 100 \"dexterity\" /* 40 */\n", "magic 100 \"constitution\"\n", "magic 100 \"charisma\"\n", "magic 100 \"create fire wall\"\n", "magic 100 \"create frost wall\"\n", "magic 100 \"protection from cold\"\n", "magic 100 \"protection from electricity\"\n", "magic 100 \"protection from fire\"\n", "magic 100 \"protection from poison\"\n", "magic 100 \"protection from slow\"\n", "magic 100 \"protection from paralysis\" /* 50 */\n", "magic 100 \"protection from draining\"\n", "magic 100 \"protection from magic\"\n", "magic 100 \"protection from attack\"\n", "magic 100 \"levitate\"\n", "Gun-5 100 \"small speedball\"\n", "Gun-5 130 \"large speedball\"\n", "Missle1 150 \"hellfire\"\n", "Missle1 170 \"dragonbreath\"\n", "Missle1 170 \"large icestorm\"\n", "magic 100 \"charging\" /* 60 */\n", "magic 100 \"polymorph\"\n", "swish 200 \"cancellation\"\n", "Tear 100 \"confusion\"\n", "Tear 150 \"mass confusion\"\n", "magic 100 \"summon pet monster\"\n", "magic 100 \"slow\"\n", "magic 100 \"regenerate spellpoints\"\n", "magic 100 \"cure poison\"\n", "magic 100 \"protection from confusion\"\n", "magic 100 \"protection from cancellation\" /* 70 */\n", "magic 100 \"protection from depletion\"\n", "magic 100 \"alchemy\"\n", "Evil_Laugh 100 \"remove curse\"\n", "Evil_Laugh 120 \"remove damnation\"\n", "magic 100 \"identify\"\n", "magic 100 \"detect magic\"\n", "magic 100 \"detect monster\"\n", "magic 100 \"detect evil\"\n", "magic 100 \"detect curse\"\n", "Explosion 100 \"heroism\" /* 80 */\n", "bugle_charge 100 \"aggravation\"\n", "magic 100 \"firebolt\"\n", "magic 100 \"frostbolt\"\n", "Explosion 100 \"shockwave\"\n", "magic 100 \"color spray\"\n", "magic 100 \"haste\"\n", "magic 100 \"face of death\"\n", "lightning1 110 \"ball lightning\"\n", "swish 100 \"meteor swarm\"\n", "swish 100 \"comet\" /* 90 */\n", "magic 100 \"mystic fist\"\n", "magic 100 \"raise dead\"\n", "magic 100 \"resurrection\"\n", "magic 100 \"reincarnation\"\n", "magic 100 \"immune cold\"\n", "magic 100 \"immune electricity\"\n", "magic 100 \"immune fire\"\n", "magic 100 \"immune poison\"\n", "magic 100 \"immune slow\"\n", "magic 100 \"immune paralysis\" /* 100 */\n", "magic 100 \"immune drain\"\n", "magic 100 \"immune magic\"\n", "magic 100 \"immune attack\"\n", "magic 100 \"invulnerability\"\n", "magic 100 \"defense\n", "magic 100 \"rune fire\"\n", "magic 100 \"rune frost\"\n", "magic 100 \"rune shocking\"\n", "magic 100 \"rune blasting\"\n", "magic 100 \"rune death\" /* 110 */\n", "magic 100 \"marking rune\"\n", "magic 100 \"build director\"\n", "magic 100 \"pool of chaos\"\n", "magic 100 \"build bullet wall\"\n", "magic 100 \"build ligtning wall\"\n", "magic 100 \"build fireball wall\"\n", "magic 100 \"magic \"\n", "magic 100 \"rune of magic drain\"\n", "magic 100 \"antimagic rune\"\n", "magic 100 \"rune transferrence\" /* 120 */\n", "magic 100 \"transferrence\"\n", "magic 100 \"magic drain\"\n", "magic 100 \"counterspell\"\n", "magic 100 \"disarm\"\n", "magic 100 \"cure confusion\"\n", "magic 100 \"restoration\"\n", "magic 100 \"summon evil monster\"\n", "magic 100 \"counterwall\"\n", "magic 100 \"cause light wounds\"\n", "magic 100 \"cause medium wounds\" /* 130 */\n", "magic 100 \"cause serious wounds\"\n", "magic 100 \"charm monsters\"\n", "magic 100 \"banishment\"\n", "magic 100 \"create missile\"\n", "\n", }; crossfire-client-1.70.0/sound-src/common.h0000644000014500000120000000521211731277014015337 00000000000000/* Crossfire client, a client program for the crossfire program. Copyright (C) 2001 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file sound-src/common.h * */ #ifndef _SOUND_SRC_COMMON_H #define _SOUND_SRC_COMMON_H #define CLIENT_SOUNDS_PATH CF_DATADIR "/sounds/" #define USER_SOUNDS_PATH "/.crossfire/sound.cache/" #define USER_CONFIG_FILE "/.crossfire/sndconfig" #define USER_SOUNDS_FILE "/.crossfire/sounds" #define MAX_SOUNDS 1024 #define SOUND_DEBUG extern char *def_sounds[]; extern char *client_sounds_path; extern char *user_sounds_path; extern char *user_config_file; extern char *user_sounds_file; extern char *buffers; typedef struct Sound_Info { char *filename; char *symbolic; unsigned char volume; int size; unsigned char *data; } Sound_Info; extern Sound_Info normal_sounds[MAX_SOUNDS]; extern Sound_Info spell_sounds[MAX_SOUNDS]; extern Sound_Info default_normal; extern Sound_Info default_spell; typedef struct sound_settings { int stereo; int bit8; int sign; int frequency; int buffers; int buflen; int simultaneously; /**< Max number of sounds to queue. */ const char *audiodev; } sound_settings; extern sound_settings settings; /* * Sound device parameters */ extern int stereo; extern int bit8; extern int sample_size; extern int frequency; extern int sign; extern int zerolevel; extern int *sounds_in_buffer; extern int init_audio(void); void play_sound(int soundnum, int soundtype, int x, int y); void play_music(const char *name); /* From ../common/libcfclient.a */ extern char *strdup_local(const char *str); extern void replace_chars_with_string(char* buffer, const uint16 buffer_size, const char find, const char* replace ); #endif /* _SOUND_SRC_COMMON_H */ crossfire-client-1.70.0/sound-src/cfsndserv.c0000644000014500000120000011117511731277014016045 00000000000000static char *rcsid_sound_src_cfsndserv_c = "$Id: cfsndserv.c 14001 2010-10-15 04:37:29Z mwedel $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001 Mark Wedel & Crossfire Development Team Copyright (C) 2003 Tim Hentenaar 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file sound-src/cfsndserv.c * The server for sound support for the client. In addition to OSS and ALSA, * sun sound is also supported. Comment from the original author is below. * * (c) 1998 Jacek Konieczny * * This file contains the server for sound support for the client. It * supports both ALSA_SOUND and OSS_SOUND. Any other sound system support can * be easily added - only new init_audio and audio_play need be written. * * If you have any problems please e-mail me. */ /*#define SDL_SOUND*/ /*#define ALSA_SOUND*/ /*#define OSS_SOUND*/ /*#define SGI_SOUND*/ /*#define SUN_SOUND*/ #include #include #include #include #include #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #include #ifdef HAVE_SYS_IOCTL_H #include #endif #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef HAVE_STRING_H #include #endif #include #include #include #include "shared/newclient.h" #include "client-types.h" #include "def_sounds.h" #include "sndproto.h" #include "common.h" #if defined(SDL_SOUND) # include "SDL.h" # include "SDL_mixer.h" # define AUDIODEV "/foo/bar" #elif defined(ALSA_SOUND) # include # define AUDIODEV "/dev/dsp" snd_pcm_t *handle=NULL; #elif defined(OSS_SOUND) # include # define AUDIODEV "/dev/dsp" #elif defined(SGI_SOUND) # include # define AUDIODEV "/foo/bar" #elif defined(SUN_SOUND) # include # define AUDIODEV "/dev/audio" #else #error Not known sound system defined #endif #define SOUND_DECREASE 0.1 int *sounds_in_buffer = NULL; int current_buffer = 0; /**< The next buffer to write out */ int first_free_buffer = 0; /**< Help know when to stop playing */ #ifdef SDL_SOUND /* SDL sound and music declarations */ /* * Mixer variables */ int audio_channels = 0; /**< Channels in use by SDL_mixer */ Uint16 audio_format = 0; /**< Format of the SDL_mixer audio */ Mix_Music *music = NULL; /**< A music file to play */ Mix_Chunk **chunk = NULL; /**< Loaded sounds to play */ int max_chunk = 0; /**< Max count of concurrent sounds */ sound_settings settings = { 0, 1, 0, 11025, 100, 4096, 4, AUDIODEV }; #else /* Legacy, sound-only declarations. */ int soundfd=0; #ifdef SUN_SOUND /* Sun support legacy declarations. */ sound_settings settings = { 0, 1, 1, 11025, 100, 4096, 4, AUDIODEV }; #else /* Alsa/OSS/SGI legacy declarations */ sound_settings settings = { 0, 1, 0, 11025, 100, 1024, 4, AUDIODEV }; #endif /* End of legacy-only declarations. */ #endif /* End of old and new declarations. */ #if defined(SDL_SOUND) /* Begin init_audio(), audio_play() */ /** * Initialize the SDL_mixer sound system. * * @return Zero if audio initialized successfully, otherwise -1. */ int init_audio(void) { printf("cfsndserv for the SDL_mixer sound system\n"); printf("supports sound effects and background music.\n"); fflush(stdout); #ifdef SOUND_DEBUG fprintf(stderr, "init_audio: SDL_SOUND\n"); fflush(stderr); #endif if (SDL_Init(SDL_INIT_AUDIO) == -1) { fprintf(stderr, "SDL_Init: %s\n", SDL_GetError()); exit(1); } frequency = settings.frequency; bit8 = settings.bit8; if (settings.bit8) audio_format = settings.sign ? AUDIO_S8 : AUDIO_U8; else audio_format = settings.sign ? AUDIO_S16 : AUDIO_U16; audio_channels = (stereo = settings.stereo) ? 1 : 2; /* * This is where we open up our audio device. Mix_OpenAudio takes as its * parameters the audio format we'd /like/ to have. */ if (Mix_OpenAudio(frequency,audio_format,audio_channels,settings.buflen)){ fprintf(stderr, "Mix_OpenAudio: Unable to open audio!\n"); exit(1); } /* * Find out what configuration we got. */ Mix_QuerySpec(&frequency, &audio_format, &audio_channels); switch (audio_format) { case AUDIO_U16LSB: case AUDIO_U16MSB: bit8 = 0; sign = 0; break; case AUDIO_S16LSB: case AUDIO_S16MSB: bit8 = 0; sign = 1; break; case AUDIO_U8: bit8 = 1; sign = 0; break; case AUDIO_S8: bit8 = 1; sign = 1; break; default: fprintf(stderr, "init_audio: Unexpected audio format\n"); return -1; } switch (audio_channels) { case 1: stereo = 0; break; case 2: stereo = 1; break; default: fprintf(stderr, "init_audio: Unexpected number of channels\n"); return -1; } return 0; } /** * Play a sound effect using the SDL_mixer sound system. * * @todo Add SDL mixer sound effect support. * * @param buffer * @param off * @return The return value is always zero and is unused by SDL_SOUND support. * It is provided to maintain consistency with the legacy sound system * functions of the same name. */ int audio_play(int buffer, int off) { #ifdef SOUND_DEBUG fprintf(stderr, "audio_play: SDL_SOUND\n"); fflush(stderr); #endif return 0; } #elif defined(ALSA_SOUND) /* End of SDL_mixer sound section. */ /** * Initialize the Alsa sound system. * * @return Zero if audio initialized successfully, otherwise -1. */ int init_audio(void) { int card=0, device=0, err; snd_pcm_channel_params_t params; printf("cfsndserv for older ALSA sound systems\n"); printf("supports sound effects only (no background music).\n"); fflush(stdout); #ifdef SOUND_DEBUG fprintf(stderr, "init_audio: ALSA\n"); fflush(stderr); #endif if ((err = snd_pcm_open(&handle, card, device, SND_PCM_OPEN_PLAYBACK))<0) { fprintf(stderr, "open failed: %s\n", snd_strerror(err)); return -1; } params.channel = SND_PCM_CHANNEL_PLAYBACK; params.mode = SND_PCM_MODE_BLOCK; if (settings.bit8) params.format.format = settings.sign ? SND_PCM_SFMT_S8 : SND_PCM_SFMT_U8; else params.format.format = settings.sign ? SND_PCM_SFMT_S16_LE : SND_PCM_SFMT_U16_LE; params.format.rate = settings.frequency; params.format.voices = settings.stereo ? 2 : 1; params.buf.block.frag_size = settings.buflen / 2; params.buf.block.frags_max = 2; params.buf.block.frags_min = 1; if ((err = snd_pcm_channel_params(handle, ¶ms)) < 0) { fprintf(stderr, "format setup failed: %s\nTrying defaults\n", snd_strerror(err)); params.format.format = SND_PCM_SFMT_U8; params.format.rate = 11025; params.format.voices = 1; if ((err = snd_pcm_channel_params(handle, ¶ms )) < 0) { fprintf(stderr, "format setup failed: %s\n", snd_strerror(err)); snd_pcm_close(handle); return -1; } } switch (params.format.format) { case SND_PCM_SFMT_S8: bit8 = 1; sign = 1; break; case SND_PCM_SFMT_U8: bit8 = 1; sign = 0; break; case SND_PCM_SFMT_S16_LE: bit8 = 0; sign = 1; break; case SND_PCM_SFMT_U16_LE: bit8 = 0; sign = 0; break; default: fprintf(stderr, "Could not set proper format\n"); return -1; } sample_size = params.format.voices * (bit8 ? 1 : 2); stereo = (params.format.voices == 1) ? 0 : 1; frequency = params.format.rate; soundfd = snd_pcm_file_descriptor(handle, SND_PCM_CHANNEL_PLAYBACK); snd_pcm_nonblock_mode(handle, 1); return 0; } /** * Play a sound using the Alsa sound system. * * @param buffer * @param off * @return */ int audio_play(int buffer, int off) { #ifdef SOUND_DEBUG fprintf(stderr, "audio_play: ALSA\n"); fflush(stderr); #endif return snd_pcm_write (handle, buffers+settings.buflen*buffer+off, settings.buflen-off); } #elif defined(OSS_SOUND) /* End of Alsa sound section. */ /** * Initialize the OSS sound system. * * @return Zero if audio initialized successfully, otherwise -1. */ int init_audio(void){ const char *audiodev; int value,format,tmp; printf("cfsndserv for the OSS sound system\n"); printf("supports sound effects only (no background music).\n"); fflush(stdout); #ifdef SOUND_DEBUG fprintf(stderr, "init_audio: OSS\n"); fflush(stderr); #endif /* Open the audio device */ if ((audiodev = getenv("AUDIODEV")) == NULL) { audiodev = settings.audiodev; } soundfd = open(audiodev, (O_WRONLY|O_NONBLOCK), 0); if (soundfd < 0) { fprintf(stderr, "Could not open %s: %s\n", audiodev, strerror(errno)); return(-1); } /* Set the audio buffering parameters */ value = 0; for (tmp = settings.buflen / 2; tmp; tmp >>= 1) value++; value |= 0x00020000; if (ioctl(soundfd, SNDCTL_DSP_SETFRAGMENT, &value) < 0) { fprintf(stderr, "Could not set audio fragment spec\n"); return(-1); } if (settings.bit8) format = settings.sign ? AFMT_S8 : AFMT_U8; else format = settings.sign ? AFMT_S16_LE : AFMT_U16_LE; value = format; if ((ioctl(soundfd, SNDCTL_DSP_SETFMT,&value) < 0) || (value != format) ) { fprintf(stderr, "Could not set audio format\n"); } switch (value) { case AFMT_S16_LE: bit8 = 0; sign = 1; break; case AFMT_U16_LE: bit8 = 0; sign = 0; break; case AFMT_S8: bit8 = 1; sign = 1; break; case AFMT_U8: bit8 = 1; sign = 0; break; default: return -1; } stereo = settings.stereo; ioctl(soundfd, SNDCTL_DSP_STEREO, &stereo); frequency = settings.frequency; if (ioctl(soundfd, SNDCTL_DSP_SPEED, &frequency) < 0) { fprintf(stderr, "Could not set audio frequency\n"); return(-1); } sample_size = (bit8 ? 1 : 2) * (stereo ? 2 : 1); return 0; } /** * Play a sound using the OSS sound system. * * @param buffer * @param off * @return */ int audio_play(int buffer, int off){ int wrote; #ifdef SOUND_DEBUG fprintf(stderr, "audio_play: OSS\n"); fflush(stderr); printf("audio play: write starting at %d, %d bytes", settings.buflen * buffer + off, settings.buflen - off); fflush(stdout); #endif wrote=write(soundfd,buffers+settings.buflen*buffer+off,settings.buflen-off); #ifdef SOUND_DEBUG printf("...wrote %d bytes\n", wrote); fflush(stdout); #endif return wrote; } #elif defined(SGI_SOUND) /* End of OSS sound section. */ ALconfig soundconfig; ALport soundport; /** * Initialize the SGI sound system. * * @return Zero if audio initialized successfully, otherwise -1. */ int init_audio(void) { long params[2]; printf("cfsndserv for the SGI sound systems\n"); printf("supports sound effects only (no background music).\n"); fflush(stdout); #ifdef SOUND_DEBUG fprintf(stderr, "init_audio: SGI\n"); fflush(stderr); #endif /* Allocate ALconfig structure. */ if ((soundconfig = ALnewconfig()) == 0) { fprintf(stderr, "Could not allocate ALconfig structure.\n"); return -1; } /* Set number of channels */ if (ALsetchannels(soundconfig, (stereo = settings.stereo) ? 2 : 1) == -1) { fprintf(stderr, "Could not set number of channels.\n"); return -1; } /* Set sample format */ if (ALsetsampfmt(soundconfig, AL_SAMPFMT_TWOSCOMP) == -1) { fprintf(stderr, "Could not set audio sample format.\n"); return -1; } sign = 1; /* Set sample width */ if (ALsetwidth( soundconfig, (bit8 = settings.bit8)?AL_SAMPLE_8:AL_SAMPLE_16) == -1) { fprintf(stderr,"Could not set audio sample width.\n"); return -1; } sample_size = (stereo ? 2 : 1) * (bit8 ? 1 : 2); /* Set frequency */ params[0] = AL_OUTPUT_RATE; params[1] = frequency = settings.frequency; if (ALsetparams(AL_DEFAULT_DEVICE, params, 2) == -1) { fprintf(stderr, "Could not set output rate of default device.\n"); return -1; } /* Open audio port */ if ((soundport = ALopenport("cfsndserv port", "w", soundconfig)) == NULL) { fprintf(stderr, "Could not open audio port.\n"); return -1; } soundfd = ALgetfd(soundport); return 0; } /** * Play a sound using the SGI sound system. * * @param buffer * @param off * @return */ int audio_play(int buffer,int off) { #ifdef SOUND_DEBUG fprintf(stderr, "audio_play: SGI\n"); fflush(stderr); #endif ALwritesamps( soundport, buffers + settings.buflen * buffer+off, (settings.buflen - off) / sample_size); return settings.buflen-off; } #elif defined(SUN_SOUND) /* End of SGI sound section. */ /** * Initialize the Sun sound system. * * @return Zero if audio initialized successfully, otherwise -1. */ int init_audio(void) { const char *audiodev; int value, format, tmp; audio_info_t audio_info; audio_device_t audio_device; printf("cfsndserv for the Sun sound systems\n"); printf("supports sound effects only (no background music).\n"); fflush(stdout); #ifdef SOUND_DEBUG fprintf(stderr, "init_audio: Sun\n"); fflush(stderr); #endif /* Open the audio device */ if ((audiodev = getenv("AUDIODEV")) == NULL) { audiodev = settings.audiodev; } soundfd = open(audiodev, (O_WRONLY|O_NONBLOCK), 0); if (soundfd < 0) { fprintf(stderr, "Could not open %s: %s\n", audiodev, strerror(errno)); return(-1); } if (ioctl(soundfd, AUDIO_GETDEV, &audio_device) < 0) { fprintf(stderr, "Could not get audio device ioctl\n"); return(-1); } if (ioctl(soundfd, AUDIO_GETINFO, &audio_info) < 0) { fprintf(stderr, "Could not get audio information ioctl\n"); return(-1); } /* * The capabilities on different sun hardware vary wildly. We attempt to * get a working setup no matter what hardware we are running on. * * This is sparc 10, sparc 20 class systems */ if (!strcmp(audio_device.name, "SUNW,dbri")) { /* * To use linear encoding, we must use 16 bit and some fixed * frequencies. 11025 matches what the rest of the systems use */ audio_info.play.precision = 16; audio_info.play.encoding = AUDIO_ENCODING_LINEAR; audio_info.play.sample_rate = 11025; } /* This is used on many of the ultra machines */ else if (!strcmp(audio_device.name, "SUNW, CS4231")) { /* * To use linear encoding, we must use 16 bit and some fixed * frequencies. 11025 matches what the rest of the systems use */ audio_info.play.precision = 16; audio_info.play.encoding = AUDIO_ENCODING_LINEAR; audio_info.play.sample_rate = 11025; } audio_info.play.channels = settings.stereo ? 2 : 1; stereo = settings.stereo; bit8 = (audio_info.play.precision == 8) ? 1 : 0; frequency = settings.frequency; sample_size = (bit8 ? 1 : 2) * (stereo ? 2 : 1); fprintf(stderr, "SUN_SOUND: bit8=%d, stereo=%d, freq=%d, sample_size=%d\n", bit8, stereo, frequency, sample_size); if (ioctl(soundfd, AUDIO_SETINFO, &audio_info) < 0) { perror("Could not set audio information ioctl"); return(-1); } return 0; } /** * Play a sound using the Sun sound system. * * @param buffer * @param off * @return */ int audio_play(int buffer,int off){ int wrote; #ifdef SOUND_DEBUG fprintf(stderr, "audio_play: Sun\n"); fflush(stderr); printf("audio play - writing starting at %d, %d bytes", settings.buflen * buffer + off, settings.buflen - off); fflush(stdout); #endif wrote=write(soundfd,buffers+settings.buflen*buffer+off,settings.buflen-off); #ifdef SOUND_DEBUG printf("...wrote %d bytes\n", wrote); fflush(stdout); #endif return wrote; } /* End of Sun sound section. */ #endif /* End init_audio() & audio_play(). */ #ifdef SDL_SOUND /* Begin play_sound(), play_music() */ /** * Play a sound effect using the SDL_mixer sound system. * * @param soundnum The sound to play. * @param soundtype 0 for normal sounds, 1 for spell_sounds. * @param x Offset (assumed from player) to play sound used to * determine value and left vs. right speaker balance. * @param y Offset (assumed from player) to play sound used to * determine value and left vs. right speaker balance. */ void play_sound(int soundnum, int soundtype, int x, int y) { int channel = 0; int playing = 0; Sound_Info *si; #ifdef SOUND_DEBUG fprintf(stderr, "play_sound: SDL_mixer\n"); fflush(stderr); #endif /* * Ignore commands to play invalid/unsupported sound numbers. */ if (soundnum >= MAX_SOUNDS || soundnum < 0) { fprintf(stderr, "play_sound: Invalid sound number: %d\n", soundnum); return; } /* * Check if the channel limit is reached. If more than a specified number * are already playing, do not add more sounds. */ playing = Mix_Playing(-1); #ifdef SOUND_DEBUG fprintf(stderr, "Channels playing: %i of %i\n", playing, max_chunk); #endif if (playing >= max_chunk) { /* * Bail. Only max_chunk channels were set up for use. It might not * be that bad to allocate more, but then nobody wants a cachophony. * Where does one stop? */ return; } /* * Find a channel that is not playing anything... */ for (channel = 1; channel < max_chunk; channel++) { if (! Mix_Playing(channel)) { if (! chunk[channel]) { Mix_FreeChunk(chunk[channel]); chunk[channel] = NULL; } break; } } /* * Get a pointer to the sound information for the given sound, and if it * does not include a filename, ignore the command to play the sound. */ if (soundtype == SOUND_NORMAL) { si = &normal_sounds[soundnum]; } else if (soundtype == SOUND_SPELL) { si = &spell_sounds[soundnum]; } else { fprintf(stderr,"play_sound: Unknown soundtype: %d\n", soundtype); return; } if (! si->filename) { fprintf(stderr, "play_sound: Sound %d (type %d) missing\n", soundnum, soundtype); return; } /* * Attempt to load the sound data. */ chunk[channel] = Mix_LoadWAV(si->filename); if (! chunk[channel]) { fprintf(stderr, "play_sound: Mix_LoadWAV: %s\n", Mix_GetError()); return; } if (Mix_PlayChannel(channel, chunk[channel], 0) == -1) { fprintf(stderr, "Mix_PlayChannel: %s\n",Mix_GetError()); } } /** * Play music with the SDL_mixer sound system. * * @param name A name of a song to play that does not include anything like * path or file extensions. It is up to this function to map the * name to a file. */ void play_music(const char* music_name) { char path[MAXSOCKBUF]; struct stat statbuf; int namelen; int pathlen; int fd = -1; #ifdef SOUND_DEBUG fprintf(stderr, "play_music: SDL_mixer\n"); fflush(stderr); #endif namelen = strlen(music_name); pathlen = strlen(user_sounds_path); if (pathlen + namelen + 5 > sizeof(path)) { return; } path[sizeof(path) - 1] = '\0'; strncpy(path, user_sounds_path, sizeof(path) - 5); strncat(path, music_name, sizeof(path) - 5); strcat(path, ".ogg"); if (stat(path, &statbuf) != -1) { if ((statbuf.st_mode & S_IFMT) == S_IFREG) { fd = open (path, O_RDONLY); if (fd != -1) { close(fd); } } } if (fd == -1) { #ifdef SOUND_DEBUG fprintf(stderr, "play_music: %s not found.\n", path); #endif pathlen = strlen(client_sounds_path); if (pathlen + namelen + 5 > sizeof(path)) { return; } path[sizeof(path) - 1] = '\0'; strncpy(path, client_sounds_path, sizeof(path) - 5); strncat(path, music_name, sizeof(path) - 5); strcat(path, ".ogg"); if (stat(path, &statbuf) != -1) { if (statbuf.st_mode == S_IFREG) { fd = open (path, O_RDONLY); if (fd != -1) { close(fd); } } } } if (fd == -1) { #ifdef SOUND_DEBUG fprintf(stderr, "play_music: %s not found.\n", path); #else fprintf(stderr, "play_music: music %x.ogg not found\n", music_name); #endif return; } music = Mix_LoadMUS(path); Mix_PlayMusic(music, 0); return ; } /** * A sound server that is specific to the SDL_mixer library, and not based on * the use of file descriptors. * */ void sdl_mixer_server(void) { int infd; fd_set inset; char inbuf[1024]; int inbuf_pos = 0; int mix_flags = MIX_INIT_OGG; int mix_init = 0; int channel = 0; #ifdef SOUND_DEBUG fprintf(stderr, "sdl_mixer_server: starting.\n"); fflush(stderr); #endif mix_init = Mix_Init(MIX_INIT_OGG); if ((mix_init & mix_flags) != mix_flags) { #ifdef SOUND_DEBUG printf("Mix_Init: Failed to init required ogg support!\n"); printf("Mix_Init: %s\n", Mix_GetError()); #endif return; } max_chunk = Mix_AllocateChannels(settings.simultaneously); chunk = calloc(max_chunk, sizeof(chunk)); if (! chunk) { return; } infd = fileno(stdin); /* * Initialize the file descriptor set "inset" to be the empty set, then * add stdin to the file descriptor set. */ FD_ZERO(&inset); FD_SET(infd, &inset); #if 1 play_music("sample"); #endif while (1) { /* * Handle sound commands from stdin * * If stdin is (still) a member of the file descriptor set "inset", * process input from it. */ if (FD_ISSET(infd, &inset)) { int result; /* * Read a character from stdin, or wait for input if there isn't * any yet. Append it to the other data already buffered up. */ result = read(infd, inbuf + inbuf_pos, 1); if (result == -1 && errno != EINTR) { if (result == -1) perror("read"); break; } /* * Check to see if the last character was an end-of-line marker. * If so, analyze the buffer contents, otherwise just collect * the data while monitoring it to be sure it doesn't overflow. */ if (inbuf[inbuf_pos] == '\n') { inbuf[inbuf_pos++] = 0; if (! StdinCmd((char*) inbuf, inbuf_pos)) { /* * */ } inbuf_pos = 0; } else { inbuf_pos++; if (inbuf_pos >= sizeof(inbuf)) { fprintf(stderr, "Input buffer overflow!\n"); inbuf_pos = 0; } } } FD_SET(infd, &inset); /* So we don't hog the CPU */ SDL_Delay(50); } Mix_HaltMusic(); Mix_FreeMusic(music); music = NULL; /* * Halt all channels playing, and de-allocate any Mix_Chunks that exist. */ Mix_HaltChannel(-1); for (channel = 0; channel < max_chunk; channel++) { if (chunk[channel]) { Mix_FreeChunk(chunk[channel]); chunk[channel] = NULL; } } /* * As long as Mix_Init() was only called once, Mix_Quit() should only need * to be called once, but this covers all the bases. */ while(Mix_Init(0)) { Mix_Quit(); } } #else /* Begin legacy play_sound(), * play_music(), and fd_server(). */ /** * Add a sound to the buffer to be played later on. This function is common * to all systems except SDL_SOUND. * * @param soundnum The sound to play. * @param soundtype 0 for normal sounds, 1 for spell_sounds. * @param x Offset (assumed from player) to play sound used to * determine value and left vs. right speaker balance. * @param y Offset (assumed from player) to play sound used to * determine value and left vs. right speaker balance. */ void play_sound(int soundnum, int soundtype, int x, int y) { Sound_Info *si; int buf, off; int i; unsigned left_ratio, right_ratio; double dist; #ifdef SOUND_DEBUG fprintf(stderr, "play_sound: legacy sound systems\n"); fflush(stderr); #endif /* * Switch to the next buffer in a circular fashion, wrapping around back * to the first as needed). */ buf = current_buffer; if (buf >= settings.buffers) buf = 1; if (buf == 0) buf++; /* * Check if the buffer is "full". If more than a specified number are * already buffered, do not add more. */ #ifdef SOUND_DEBUG fprintf(stderr, "Sounds in buffer %i: %i\n", buf, sounds_in_buffer[buf]); #endif if (sounds_in_buffer[buf] > settings.simultaneously) return; /* * Ignore commands to play invalid/unsupported sound numbers. */ if (soundnum >= MAX_SOUNDS || soundnum < 0) { fprintf(stderr, "Invalid sound number: %d\n", soundnum); return; } /* * If a sound device is not open, ignore the command to play a sound. */ if (soundfd == -1) { fprintf(stderr, "Sound device is not open\n"); return; } /* * Instead of fussing about a bad sound type being passed in, assume that * unsupported soundtype commands should play a standard sound. */ if (soundtype < SOUND_NORMAL || soundtype == 0) { soundtype = SOUND_NORMAL; } /* * Get a pointer to the sound information for the given sound, and if it * does not include a filename, ignore the command to play the sound. */ if (soundtype == SOUND_NORMAL) { si = &normal_sounds[soundnum]; } else if (soundtype == SOUND_SPELL) { si = &spell_sounds[soundnum]; } else { fprintf(stderr,"Unknown soundtype: %d\n", soundtype); return; } if (! si->filename) { fprintf(stderr, "Sound %d (type %d) is not defined\n", soundnum, soundtype); return; } /* * Attempt to load the sound data if it has not already been loaded. */ if (! si->data) { FILE *f; struct stat sbuf; #ifdef SOUND_DEBUG fprintf(stderr, "Loading file: %s\n", si->filename); #endif /* * If the file isn't found as specified, report an error. FIXME: It * seems silly to require a full path to the sound file. Surely it is * better to reference sounds from standard locations as is done with * themes, glade files, etc. */ if (stat(si->filename, &sbuf)) { perror(si->filename); return; } /* * Save the size of the sound data. If for some reason it is negative * ignore the sound file content. */ si->size = sbuf.st_size; if (si->size <= 0) return; /* * If the sound file contains more data than can fit in the allocated * number of sound buffers, do not bother loading it. */ if (si->size*sample_size > settings.buflen * (settings.buffers - 1)) { fprintf(stderr, "Sound %s too long (%i > %i)\n", si->filename, si->size, settings.buflen * (settings.buffers - 1) / sample_size); return; } /* * Allocate space for reading the sound data, open the file, then * load the sound from the file. */ si->data = (unsigned char *)malloc(si->size); f = fopen(si->filename, "r"); if (! f) { perror(si->filename); return; } fread(si->data, 1, si->size, f); fclose(f); } #ifdef SOUND_DEBUG fprintf(stderr, "Playing sound %i (%s), volume %i, x,y=%d,%d\n", soundnum, si->symbolic, si->volume, x, y); #endif /* Calculate volume multiplers */ dist = sqrt(x * x + y * y); right_ratio = left_ratio = ((1 << 16) * si->volume) / (100 * settings.simultaneously * (1 + SOUND_DECREASE * dist)); if (stereo) { double diff; if (dist) diff = (1.0 - fabs((double) x / dist)); else diff = 1; #ifdef SOUND_DEBUG printf("diff: %f\n", diff); fflush(stdout); #endif if (x < 0) right_ratio *= diff; else left_ratio *= diff; } #ifdef SOUND_DEBUG fprintf(stderr, "Ratio: %i, %i\n", left_ratio, right_ratio); #endif /* Insert the sound into the buffers */ sounds_in_buffer[buf]++; off = 0; for(i = 0; i < si->size; i++) { int dat = si->data[i] - 0x80; if (bit8) { if (!stereo) { buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; } else { buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; buffers[buf*settings.buflen+off+1]+=(dat*right_ratio)>>16; } } else { /* 16 bit output */ if (!stereo) { #ifdef WORDS_BIGENDIAN buffers[buf*settings.buflen+off+1]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; } else { buffers[buf*settings.buflen+off+1]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off]+=(dat*left_ratio)>>16; buffers[buf*settings.buflen+off+3]+=((dat*right_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+2]+=(dat*right_ratio)>>16; } #else buffers[buf*settings.buflen+off]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+1]+=(dat*left_ratio)>>16; } else { buffers[buf*settings.buflen+off]+=((dat*left_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+1]+=(dat*left_ratio)>>16; buffers[buf*settings.buflen+off+2]+=((dat*right_ratio)>>8)&0xff; buffers[buf*settings.buflen+off+3]+=(dat*right_ratio)>>16; } #endif } off += sample_size; if (off >= settings.buflen) { off = 0; buf++; if (buf >= settings.buffers) { buf = 0; } } } #ifdef SOUND_DEBUG fprintf(stderr, "Added %d bytes, last buffer=%d, lastpos=%d\n", si->size, buf, off); #endif /* This write did not wrap the buffers */ if (buf+1 > current_buffer) { if ((buf+1 > first_free_buffer) && (first_free_buffer >= current_buffer)) first_free_buffer = buf+1; } else { /* Buffers did wrap */ if (((buf+1 > first_free_buffer) && (first_free_buffer < current_buffer)) || (first_free_buffer >= current_buffer)) first_free_buffer = buf + 1; } if (first_free_buffer >= settings.buffers) first_free_buffer = 0; } /** * Music is not supported by the legacy (non-SDL_mixer) sound systems. * * @param name A name of a song to play that does not include anything like * path or file extensions. It is up to this function to map the * name to a file. */ void play_music(const char* name) { #ifdef SOUND_DEBUG fprintf(stderr, "play_music: no music support for this sound system.\n"); fflush(stderr); #endif return; } /** * A sound server that is based on the use of file descriptors. * */ void fd_server(void) { int infd; char inbuf[1024]; int inbuf_pos = 0, sndbuf_pos = 0; fd_set inset, outset; #ifdef SOUND_DEBUG fprintf(stderr, "fd_server: starting.\n"); fflush(stderr); #endif infd = fileno(stdin); FD_ZERO(&inset); FD_ZERO(&outset); FD_SET(soundfd, &outset); FD_SET(infd, &inset); while (1) { #if defined(SGI_SOUND) /* * The buffer of an audio port can hold 100000 samples. If we allow * sounds to be written to the port whenever there is enough room in the * buffer, all sounds will be played sequentially, which is wrong. We * can set the fillpoint to a high value to prevent this. */ ALsetfillpoint(soundport, 100000); #endif select(FD_SETSIZE, &inset, &outset, NULL, NULL); if (FD_ISSET(soundfd, &outset)) { /* no sounds to play */ if (current_buffer == first_free_buffer) FD_CLR(soundfd, &outset); else { int wrote; wrote = audio_play(current_buffer, sndbuf_pos); if (wrote < settings.buflen - sndbuf_pos) sndbuf_pos += wrote; else { /* clean the buffer */ memset(buffers + settings.buflen * current_buffer, zerolevel, settings.buflen); sounds_in_buffer[current_buffer] = 0; sndbuf_pos = 0; current_buffer++; if (current_buffer >= settings.buffers) current_buffer = 0; } } } else { /* * We need to reset this if it is not set - otherwise, we will never * finish playing the sounds */ FD_SET(soundfd, &outset); } if (FD_ISSET(infd, &inset)) { int err = read(infd, inbuf + inbuf_pos, 1); if (err < 1 && errno != EINTR) { if (err < 0) perror("read"); break; } if (inbuf[inbuf_pos] == '\n') { inbuf[inbuf_pos++] = 0; if (!StdinCmd(inbuf, inbuf_pos)) FD_SET(soundfd, &outset); inbuf_pos = 0; } else { inbuf_pos++; if (inbuf_pos >= 1024) { fprintf(stderr, "Input buffer overflow!\n"); inbuf_pos = 0; } } } FD_SET(infd, &inset); } } #endif /* End of play_sound(), play_music(), * and servers. */ /** * * @param argc * @param argv * @return */ int main(int argc, char *argv[]) { printf("%s\n", rcsid_sound_src_cfsndserv_c); fflush(stdout); if (read_settings()) write_settings(); if (init_sounds()) return 1; #ifdef SDL_SOUND sdl_mixer_server(); #else if (! soundfd) { #ifdef SOUND_DEBUG fprintf(stderr, "A file descriptor is not assigned.\n"); #endif return 1; } else { fd_server(); } #endif return 0; } crossfire-client-1.70.0/sound-src/Makefile.am0000644000014500000120000000422311731277014015733 00000000000000# # Makefile for crossfire client # # Copyright (C) 2005, 2010 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com bin_PROGRAMS = cfsndserv @ALSA9_TARGET@ EXTRA_PROGRAMS = cfsndserv_alsa9 EXTRA_DIST = \ sounds AM_CFLAGS = \ -I$(top_builddir)/common \ -I$(top_srcdir)/common \ -I$(top_srcdir)/common/shared common_BUILT_FILES = \ $(top_builddir)/common/svnversion.h $(common_BUILT_FILES): pushd `dirname $(@)` >/dev/null; \ $(MAKE) `basename $(@)`; \ popd >/dev/null; BUILT_SOURCES = \ $(common_BUILT_FILES) \ def_sounds.h \ def_sounds.c common_LIBS = \ $(top_builddir)/common/libcfclient.a $(common_LIBS): pushd `dirname $(@)` >/dev/null; \ $(MAKE); \ popd >/dev/null; cfsndserv_SOURCES = \ common.h \ sndproto.h \ def_sounds.h \ def_sounds.c \ common.c \ cfsndserv.c cfsndserv_LDADD = \ $(SND_LIBS) \ $(DMALLOC_LIB) \ $(common_LIBS) cfsndserv_alsa9_SOURCES = \ common.h \ sndproto.h \ def_sounds.h \ def_sounds.c \ common.c \ alsa9.c cfsndserv_alsa9_LDADD = \ $(ALSA9_LIBS) \ $(DMALLOC_LIB) \ $(common_LIBS) def_sounds.h: sounds $(PERL) \ $(top_srcdir)/utils/deftoheader.pl $(srcdir)/sounds def_sounds.h def_sounds def_sounds.c: sounds $(PERL) \ $(top_srcdir)/utils/deftoheader.pl $(srcdir)/sounds def_sounds.c def_sounds proto_FILES = \ common.c proto: cproto -e -o sndproto.h \ $(DEFAULT_INCLUDES) $(AM_CFLAGS) $(proto_FILES) chmod 644 sndproto.h crossfire-client-1.70.0/Makefile.am0000644000014500000120000000243211731277014014016 00000000000000# # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com SUBDIRS=@CF_SUBDIRS@ ACLOCAL_AMFLAGS = -I macros --install EXTRA_DIST = \ ChangeLog \ COPYING \ License \ Makefile.in \ NOTES \ README \ TODO \ aclocal.m4 \ configure \ configure.ac \ crossfire-client.spec proto: @for dir in $(SUBDIRS); \ do \ echo "making proto in $$dir..."; \ (cd $$dir; $(MAKE) $(MFLAGS) 'MFLAGS=$(MFLAGS)' proto; ) \ done; dox: @ doxygen 2>doxygen.err crossfire-client-1.70.0/crossfire-client.spec0000644000014500000120000005620411731277073016124 00000000000000# # Grab the crossfire-images archive off the sourceforge files list. If you # have a copy of the arch directory, you can run the adm/collect_images # -archive from the lib directory of the server and it will make the archive. # # Now maintaining this - easy enough to do if it proves useful. # MSW 2005-02-28 # %define Name crossfire %define extra client %define version 1.70.0 %define sndversion 1.70.0 %define release 1 %define vendor sourceforge.net/projects/crossfire %define packager Crossfire Developer %define prefix /usr/X11R6 %define _sourcedir /export/home/crossfire/Crossfire %define _srcrpmdir /export/home/crossfire/RPM-SRC %define _rpmdir /export/home/crossfire/RPMS %define _topdir /export/home/crossfire/RPM-TOP # _datadir is the client data directory to use and it represents where the # crossfire-client directory should reside. %define _datadir /usr/share/games/crossfire # _desktopdir is the directory where application .desktop files are placed # on the target system. %define _desktopdir /usr/share/applications Name: %{Name}-%{extra} Version: %{version} Release: %{release} Vendor: %{vendor} Packager: %{packager} Summary: Client for connecting to crossfire servers. Group: Amusements/Games/Crossfire License: GPL URL: http://crossfire.real-time.com Source0: %{name}-%{version}.tar.gz Source1: %{name}-sounds-%{version}.tar.gz Source2: %{name}-images-%{version}.tar.gz Provides: crossfire-client Requires: SDL Requires: libcurl Requires: SDL_image Requires: alsa-lib Requires: libglade2.0 BuildRequires: SDL-devel BuildRequires: curl-devel BuildRequires: glibc-devel BuildRequires: alsa-lib-devel BuildRequires: SDL_image-devel BuildRequires: libglade2-devel Epoch: 5 BuildRoot: %{_tmppath}/%{name}-%{version}-root %description Crossfire is a highly graphical role-playing adventure game with characteristics reminiscent of rogue, nethack, omega, and gauntlet. It has multiplayer capability and presently runs under X11. Client for playing the new client/server based version of Crossfire. This package allows you to connect to Crossfire servers around the world. You do not need install the Crossfire server in order to use this package. %package gtk2 Summary: GTKv2 client for %{Name} Group: Games/Adventure Provides: crossfire-client %description gtk2 GTKv2 version of the Crossfire client - This client game window has themes. It supports the use of customized window layouts, and is packaged with several pre-defined ones. %package sounds Summary: Sound effects for the crossfire game Group: Games/Adventure Requires: crossfire-client %description sounds Sound effects for people who want sounds with their game %package common Summary: Common files for %{Name} Group: Games/Adventure Provides: crossfire-client %description common File includes sounds and images. %prep %setup -q -a 1 -a 2 -n %{Name}-client-%{version} %build chmod 755 configure %configure \ --datadir=%{_datadir} \ --with-sound-dir=/usr/share/sounds/crossfire \ --disable-dmalloc \ --with-loglevel=3 make %{?_smp_mflags} %install [ -n "%{buildroot}" -a "%{buildroot}" != / ] && rm -rf %{buildroot} # # Sounds # install -d %{buildroot}%{_datadir}/sounds/crossfire install sounds/*.raw %{buildroot}%{_datadir}/sounds/crossfire # # Client images cd lib; adm/collect_images -archive # install -d %{buildroot}%{_datadir}/%{name} install crossfire.clsc %{buildroot}%{_datadir}/%{name} install crossfire.base %{buildroot}%{_datadir}/%{name} install bmaps.client %{buildroot}%{_datadir}/%{name} install README %{buildroot}%{_datadir}/%{name} # # crossfire-client-gtk2 themes # install -d %{buildroot}%{_datadir}/%{name}/themes install gtk-v2/themes/Black %{buildroot}%{_datadir}/%{name}/themes install gtk-v2/themes/Standard %{buildroot}%{_datadir}/%{name}/themes # # crossfire-client-gtk2 window layouts # install -d %{buildroot}%{_datadir}/%{name}/glade-gtk2 find gtk-v2/glade -name "*.glade" | while read _glade_ do install ${_glade_} %{buildroot}%{_datadir}/%{name}/glade-gtk2 done # # KDE # install -d %{buildroot}%{_desktopdir} install -d %{buildroot}%{_datadir}/icons/hicolor/16x16/apps install -d %{buildroot}%{_datadir}/icons/hicolor/32x32/apps install -d %{buildroot}%{_datadir}/icons/hicolor/48x48/apps install -d %{buildroot}%{_datadir}/icons/locolor/16x16/apps install -d %{buildroot}%{_datadir}/icons/locolor/32x32/apps install -d %{buildroot}%{_datadir}/icons/locolor/48x48/apps #%{__make} install \ # DESTDIR=%{buildroot} \ # bindir=%{buildroot}%{_bindir} \ # mandir=%{buildroot}%{_mandir}/man6 %makeinstall mandir=%{buildroot}%{_mandir} # KDE # install -m 644 -c gtk-v2/crossfire-client.desktop \ %{buildroot}%{_desktopdir}/crossfire-client-gtk2.desktop install -m 644 pixmaps/16x16.png \ %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/crossfire-client.png install -m 644 pixmaps/32x32.png \ %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/crossfire-client.png install -m 644 pixmaps/48x48.png \ %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/crossfire-client.png install -m 644 pixmaps/16x16.png \ %{buildroot}%{_datadir}/icons/locolor/16x16/apps/crossfire-client.png install -m 644 pixmaps/32x32.png \ %{buildroot}%{_datadir}/icons/locolor/32x32/apps/crossfire-client.png install -m 644 pixmaps/48x48.png \ %{buildroot}%{_datadir}/icons/locolor/48x48/apps/crossfire-client.png %post rm -f %{_datadir}/gnome/apps/Games/crossfire.desktop rm -f %{_datadir}/gnome/ximian/Programs/Games/crossfire.desktop %clean [ -n "%{buildroot}" -a "%{buildroot}" != / ] && rm -rf %{buildroot} %files gtk2 %defattr(644,root,root,755) %doc ChangeLog COPYING License NOTES README TODO %attr(755,root,root) %{_bindir}/crossfire-client-gtk2 %{_mandir}/man6/crossfire-client-gtk2.6* # Themes %dir %{_datadir}/%{name}/themes %{_datadir}/%{name}/themes/Black %{_datadir}/%{name}/themes/Standard # Window layouts %dir %{_datadir}/%{name}/glade-gtk2 %{_datadir}/%{name}/glade-gtk2/caelestis.glade %{_datadir}/%{name}/glade-gtk2/chthonic.glade %{_datadir}/%{name}/glade-gtk2/dialogs.glade %{_datadir}/%{name}/glade-gtk2/eureka.glade %{_datadir}/%{name}/glade-gtk2/gtk-v1.glade %{_datadir}/%{name}/glade-gtk2/gtk-v2.glade %{_datadir}/%{name}/glade-gtk2/lobotomy.glade %{_datadir}/%{name}/glade-gtk2/meflin.glade %{_datadir}/%{name}/glade-gtk2/oroboros.glade %{_datadir}/%{name}/glade-gtk2/sixforty.glade %{_datadir}/%{name}/glade-gtk2/un-deux.glade %{_datadir}/%{name}/glade-gtk2/v1-redux.glade # Desktop file %{_desktopdir}/crossfire-client-gtk2.desktop %files common %defattr(644,root,root,755) # Image data %{_datadir}/crossfire-client/README %{_datadir}/crossfire-client/bmaps.client %{_datadir}/crossfire-client/crossfire.base %{_datadir}/crossfire-client/crossfire.clsc # # KDE # %{_datadir}/icons/hicolor/16x16/apps/crossfire-client.png %{_datadir}/icons/hicolor/32x32/apps/crossfire-client.png %{_datadir}/icons/hicolor/48x48/apps/crossfire-client.png %{_datadir}/icons/locolor/16x16/apps/crossfire-client.png %{_datadir}/icons/locolor/32x32/apps/crossfire-client.png %{_datadir}/icons/locolor/48x48/apps/crossfire-client.png %files sounds %defattr(644,root,root,755) %dir %{_datadir}/sounds/crossfire %attr(444,root,root) %{_datadir}/sounds/crossfire/* %attr(755,root,root) %{_bindir}/cfsndserv %attr(755,root,root) %{_bindir}/cfsndserv_alsa9 %changelog * Tue Sep 14 2010 Kevin Bulgrien - Change some of the BuildRequires to be more flexible after testing. New requires curl-devel and libglade2-devel are accepted on more platforms that the prior libcurl-devel and libglade2.0-devel. * Fri Nov 28 2008 Kevin Bulgrien - Group change from X11/Games to Games/Adventure for all packages. - Tabs removed to eliminate rpmlint complaint. * Wed Jan 23 2008 Kevin Bulgrien + crossfire-client-1.11.0 - Epoch 5 - Add player selectable UI themes. - Rename cfclient->crossfire-client-x11 - Rename gcfclient->crossfire-client-gtk - Rename gcfclient2->crossfire-client-gtk2 - Add user selectable libglade XML window and dialog definitions. - Add BuildRequires: glibc-devel (gtkv2 pthreads) - Add Requires: libglade2.0, BuildRequires: libglade2.0-devel (gtkv2 UI) - Add Requires: libcurl BuildRequires: libcurl-devel (gtkv2 metaserver2) * Wed Jun 28 2006 Mark Wedel + crossfire-client-1.9.1-1 - new release 1.9.1 * Sun Feb 26 2006 Mark Wedel + crossfire-client-1.9.0-1 - new release 1.9.0 * Mon Feb 28 2005 Mark Wedel + crossfire-client-1.7.1-1 - new release 1.7.1 * Wed Feb 26 2003 Bob Tanner + crossfire-client-1.5.0-1.realtime - new release 1.5.0 * Wed Feb 20 2003 Bob Tanner + crossfire-client-20030220CVS-1.realtime - MSW: Fix bug in rescale_rgba_data() that was potentially causing a 1 byte overrun of malloc'd data, that could result in crashes or other odd problems. * Wed Feb 19 2003 Bob Tanner + crossfire-client-20030219CVS-1.realtime - upgrade to cvs snapshot from 02/19/2003 - reworked configure and build to take advantage the new autoconf stuff * Sat Sep 28 2002 Bob Tanner + crossfire-client-1.4.0-realtime.1 - upgrade to 1.4.0 - http://sourceforge.net/project/shownotes.php?group_id=13833&release_id=110812 * Wed Jul 25 2002 Bob Tanner + crossfire-client-1.3.1-realtime.4 - fixed crossfire-client.desktop entry - fix for init_SDL bug - added Requires: SDL, SDL_image - added BuildRequires: SDL-devel, SDL_image-devel * Wed Jul 10 2002 Bob Tanner + crossfire-client-1.3.1-realtime.3 - fixed location of sound files [kbulgrien@worldnet.att.net] * Wed Jul 02 2002 Bob Tanner + crossfire-client-1.3.1-realtime.2 - added 16x16, 32x32, 48x48 icons for proper KDE support - added support for SMP builds * Wed Jul 02 2002 Bob Tanner + crossfire-client-1.3.1-realtime.1 - released 1.3.1 client - BUG Fix http://mailman.real-time.com/pipermail/crossfire-devel/2002-July/003273.html - Enhancement http://www.geocrawler.com/lists/3/SourceForge/7318/0/9103079/ http://www.geocrawler.com/lists/3/SourceForge/7318/0/9093313/ * Wed Jul 02 2002 Bob Tanner + crossfire-client-1.3.0-realtime.1 - released 1.3.0 client - CHANGELOG http://mailman.real-time.com/pipermail/crossfire-list/2002-July/000943.html * Mon May 06 2002 Bob Tanner + crossfire-client-20020424-realtime.5 - missing some files dealing with cache images * Tue Apr 30 2002 Bob Tanner + crossfire-client-20020424-realtime.4 - moved desktop entries to the tclug sub-menu * Wed Apr 24 2002 Bob Tanner + crossfire-client-20020424-realtime.2 - change hard coded commands to rpms macros - change several file locations to comply with LSB - add crossfire-client to tclug-gampak; An apt4redhat virtual package - tclug-gamepak via apt rpm ftp://ftp.real-time.com/linux/apt realtime/7.2/i386 tclug * Thu Feb 14 2002 Bob Tanner - configure.in, configure: Add check for zlib before png lib check, as on some systems, png requires -lz. - common/client-types.h: Add #ifdef check for SOL_TCP - common/client.c: Add fast_tcp_send variable, comment out printing of error from socket EOF. Use TCP_NODELAY for sending data to the server if TCP_NODELAY is available. cs_write_string modified to use cs_print_string. - common/client.h: Remove display_mode enum, add fast_tcp_send extern. - common/commands.c, common/init.c,gtk/image.c, gtk/map.c cs_write_sting modified to use cs_print_string - common/external.h: set_autorepeat extern added. - common/newsocket.c: Modified to be better optimized for using TCP_NODELAY - cs_print_string function added. - common/player.c: modified to use cs_print_string , autorepeat client side command added. - common/proto.h, gtk/gtkproto.h: updated with new functions - gnome/gnome.c: display_mode variable removed, cs_write_string replaced with cs_print_string - gtk/gx11.c: display_mode variable removed, cs_write_string replaced with cs_print_string, -nofog option added - pixmaps/question.111: Resized to be 32x32 pixmaps/*.xbm - used for inventory icons in X11 client, replacing xpm files - sound-src/cfsndserv.c: Better error handling, include time.h - x11/cfclient.man: -font and -noautorepeat options added. - x11/png.c: better error checking for rescaling images - x11/x11.c: noautorepeat variable added, display_mode removed, image icon functionality re-enabled, images now created from xbm files, set_autorepeat function added, add ability to set font, add mouse wheel support - x11/x11.h: remove screen_num extern. - x11/x11proto.h: Updated with new functions. - x11/xutil.c: Modified to use image_size instead of hardcoded 24x24 value for the status icons. cs_write_replaced with cs_print_string, no auto repeat functionality added. * Mon Dec 31 2001 Bob Tanner - Rolled 1.1.0 client - NOTE Mark's new email address - Fixed typo in install target for x11 client. - Make all clients Provide: crossfire-client - Make sounds dependent on crossfire-client. * Sun Dec 30 2001 Mark Wedel - README: Update notes on needing png (and not xpm) library. Update mailing alias. - configure.in, configure: As the seperate sound program (cfsndserv) is the only supported sound configuration, remove new_sound_system defines and ability to use the old (now non existant) sound system. Have configure exit with error message if png library is not found, as it is critical to the build process. Change it so that gnome/Makefile is always built so that making of releases works. - gnome/gnome-cfclient.man, help/about.h, x11/cfclient.man: Update mail address. - gtk/gtkproto.h, x11/x11proto.h: Rebuilt, prototypes for some changed for signed to unsigned characters. - gtk/gx11.c, gtk/png.c, pixmaps/stipple.111, x11/png.c, x11/x11.c, x11/xutil.c, pixmaps/stipple.111 pixmaps/stipple.112: Mostly changes to fix compile warnings and make sure we are passing the right types to the various image creation functions (8 bit data). - sound-src/Makefile.in: Add soundsdef.h to list of things to build. - x11/x11.h: Remove extra semicolon. * Mon May 14 2001 Bob Tanner - Rolled new client 1.0.0 * Sun May 13 2001 Mark Wedel - player.c: Fix for client crashes if player enters really long commands (like say .....). - gx11.c,command.c: Remove some debug statements which really should not be there for 1.0, and which are not really useful anyways. items_types, item_types.h: Varioius minor updates. - gx11.c: Fix bug that causes gtk client not to update weapon speed. metaserver.c: Have the listing get sorted by hostname to make it easier to find the host the user may want. * Wed Apr 11 2001 Bob Tanner - Rolled new client 0.98.0 with Mark's changes listed next * Tue Apr 10 2001 Mark Wedel - Change matching for sword - hopefully this should fix problems with dancing sword spellbooks. - Move animations of the look window to the client. All the necessary was already being sent to the client - it was just needed for the client to use this information. Also remove some - Only resort items based on name if the name has changed. This fixes a problem with items moving around in the inventory if you lock/apply/unapply/unlock them. * Wed Mar 21 2001 Bob Tanner - Rolled new client 0.97.0 with Mark's changes listed next * Tue Mar 20 2001 Mark Wedel - Change so that containers on the ground still keep proper contents even if the map space itself changes (spells or other objects going onto the space). - commands.c: update the cpl.container tags when opening/closing containers. - item.c: Have locate_object see if the container matches the tag. Don't have remove_item remove the object contents of other attributes if it is the container, but still remove it from the list it is on. - item.h: remove function prototypes - these are in proto.h - png.c: New png -> X11 (or gdk) creation routines that are much faster. This should make a noticable difference in performance. Note that the X11 and gdk implementations are very different now - the gdk implementation lets the gdk library do most of the work. - gx11.c: remove some dead code, add call to gdk_rgb_init() if using png images - needed by new png loader. - x11.c: Add call to init_pngx_loader if running in png mode. Also pass colormap by pointer so png_to_xpixmap can modify it. - xutil.c: pass colormap by pointer to init_pngx_loader (same reason as above) - Makefile.in: Add DMALLOC_LIB definition instead of it going in with the the default libraries. cfsndserv will now get properly linked with dmalloc. - configure.in, configure: add --disable-sound option, and make relevant changes to use that option (which basically amounts to not checking for any of the sound systems). Add check for dmalloc.h. change substitution for -ldmalloc. - cfsndserv.c: Modified so it now compiles with the modern ALSA sound system. No idea if it actually works. MSW 2001/03/04 - metaserver.c: Modified so it uses the value of -port if that command line option is given by a user. MSW 2001/03/01 - x11.c: Fixes for info window resizing. This should fix some crashes and the code is a bit simpler now. MSW 2001/02/28 - Makefile.in: Modify so that installs the target (cfclient, gcfclient, cfsndserv) one at a time so it works with the install script. - item.c: add insert_item_before_item function. Modify the sorting function so it first sorts by type, then by locked/unlocked status, and then by alphabetical order (not including the number prefix). - item_types, item_types.h: More updates of missing objects or ones that need more specific matching rules. - x11.c: Remove a lot of duplicate code that was in place for metaserver support - instead, just add checks to the existing X event handling code to know not to do some things if we're in metaserver selection mode. This fixes a bug in that resize events would not be handled if in metaserver selection mode. * Tue Feb 13 2001 Bob Tanner - Rolled new client 0.96.0 with Mark's changes listed next * Mon Feb 12 2001 Mark Wedel - If compiled with dmalloc, add 'dmalloc command that verifies the heap. Makes checking for memory corruption easier. - CHANGES, configure configure.in crossfire-client.spec: Update for 0.96.0 release item_types item_types.h: Add some additional items. * Sat Feb 10 2001 Bob Tanner - Created new Group for this package Amusements/Games/Crossfire * Fri Feb 02 2001 Bob Tanner - Rolled new client with Mark's changes listed next * Tue Jan 30 2001 Mark Wedel - Complete rewrite of the exit handling code. Hopefully as an effect, this will fix the player appearing in the middle of the oceans. I think the code should also work better in many other areas. Main enhancements is a 3x3 area for pets to follow player to new map, as well as golems now following players to the new maps. - include/sproto.h, random_maps/rproto.h - rebuilt. - random_maps/random_map.c: Change generate_random_map to take a structure with the random map paremeters. - random_maps/reader.l, reader.c: Add set_random_map_variable function that reads the map parameters from a char buffer. Also, remove some leftover comments that were from the common/loader.l file. - random_maps/rogue_layout.c: Change some functions to be static so make proto doesn't collect them. - random_maps/standalone.c: Add opening of parms file into main function since it ws removed from the random_map.c file. - server/apply.c: Don't display the message of random maps to the players as they enter them, as this message is random map parameters, and not a real message. - server/login.c: #if 0 out using of the player loading element in the structure. this isn't used right now. - server/main.c: Bulk of the changes. main changes are to break apart the old enter_exit function into smaller functions that more logically do the needed function (random maps, unique maps, and transferring the player to the new map). random map code now passes the parameters via structure instead of file in /tmp. Code is much more understandable now and hopefully bugfree. - server/pets.c: minor changes/bugfixes. Search full SIZEOFFREE array, use real owner variable when print out messages. - server/player.c: Remove usage of the loading variable in the player structure. * Sun Jan 14 2001 Bob Tanner - Makefile.in: Create destination dirs, remove extra tab. Patch also by Dave. - Protocol: typo fixed. - config.h, config.h.in: Add HVAE_DMALLOC_H #ifdefs. Checks currently disable in configure.in, as with it, the sound won't like properly since it needs -ldmalloc, and I haven't bothered investing that much time into fixing the Makefile. - gx11.c: Patches by Dave Peticolas - mostly code cleanup, but one new feature is support of wheel mice to move the scrollbars. - png.c: No real code change, just adjustments in some ordering which I think makes the code appear a little simpler. - x11.c: Minor code cleanups, some formatting changes, some to make better error messages. * Wed Jan 08 2001 Bob Tanner - Applied MSW patch to change damge type to 16 bits * Wed Jan 03 2001 Bob Tanner [0.95.8-1] - Upgraded client to 0.95.8 - Moved sounds into /usr/share/sounds/crossfire - Moved the prefix to /usr/X11R6 - Upgrade source file locations - Made the gtk client GNOME aware and put the crossfire picture into Program->Games - Sounds are noarch * Tue Mar 16 1999 Toshio Kuratomi [0.95.2-2] - A few changes to conform to FHS 2.0 - Edit the sounds patch to place things in the /usr/share/sounds directory instead of /usr/share/sounds/sounds - Rewrite certain parts of the script to rely more on the make install target rather than hacking it ourselves. - We don't have to compile the program twice -- make all will create both the gtk and the Athena binaries. * Sat Jan 30 1999 Kjetil Wiekhorst Jørgensen [0.95.2-1] - upgraded to version 0.95.2 - fixed minor bug in Makefile * Sat Jan 23 1999 Kjetil Wiekhorst Jørgensen [0.95.1-2] - some bug fixes to the 0.95.1 release * Tue Dec 8 1998 Kjetil Wiekhorst Jørgensen [0.95.1-1] - upgraded to 0.95.1 - install sounds in /usr/share/sounds - build both vanilla X client and GTK+ client * Wed Dec 2 1998 Kjetil Wiekhorst Jørgensen [0.94.4-1] - upgraded to 0.94.4 * Fri Sep 4 1998 Kjetil Wiekhorst Jørgensen [0.94.3-1] - upgraded to version 0.94.3 * Tue Jun 02 1998 Kjetil Wiekhorst Jørgensen - Initial release. crossfire-client-1.70.0/common/0000755000014500000120000000000011731277217013336 500000000000000crossfire-client-1.70.0/common/metaserver.c0000644000014500000120000010746311731277011015602 00000000000000const char * const rcsid_common_metaserver_c = "$Id: metaserver.c 15072 2011-09-10 10:59:18Z ryo_saeba $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/metaserver.c * Deals with contacting the metaserver, getting a list of hosts, displaying * and returning them to calling function, and then connecting to the server * when requested. */ #ifndef WIN32 #include #include #include #include #include #endif /* WIN32 */ #include #include #include #include #include #include #include #ifdef HAVE_CURL_CURL_H #include #include #endif Meta_Info *meta_servers = NULL; int meta_numservers = 0; int meta_sort(Meta_Info *m1, Meta_Info *m2) { return strcasecmp(m1->hostname, m2->hostname); } /** * This checks the servers sc_version and cs_version to see * if they are compatible. * @param entry * entry number in the metaservers array to check. * @return * 1 if this entry is compatible, 0 if it is not. Note that this can * only meaningfully check metaserver2 data - metaserver1 doesn't * include protocol version number, so treats all of those as * OK. */ int check_server_version(int entry) { /* No version information - nothing to do. */ if (!meta_servers[entry].sc_version || !meta_servers[entry].cs_version) return 1; if (meta_servers[entry].sc_version != VERSION_SC) { /* 1027->1028 removed a bunch of old commands, so a 1028 * version client can still play on a 1027 server, so * special hard code that. * * Likewise, 1028->1029 just changed how weapon_speed * should be interperted on the client - the client * does the right thing, so not problem with a 1029 * client playing on 1028 or 1027 server. * * A 1028 client could in practice play on a 1029 * server, since at the protocol level, data is the same - * the client would just have screwed up weapon_sp values. */ if ((VERSION_SC == 1028 || VERSION_SC==1029) && (meta_servers[entry].sc_version==1027 || meta_servers[entry].sc_version==1028)) return 1; } if (meta_servers[entry].cs_version != VERSION_CS) return 0; return 1; } /***************************************************************************** * Start of cache related functions. *****************************************************************************/ int cached_servers_num = 0; char *cached_servers_name[CACHED_SERVERS_MAX]; char *cached_servers_ip[CACHED_SERVERS_MAX]; static int cached_servers_loaded = 0; const char *cached_server_file = NULL; /** * Load server names and addresses or DNS names from a cache file found in the * player's client data folder. The cache file has traditionally been named * "servers.cache". The server cache file is a plain text file that is * line-feed delimited. Cache entries consist of two lines each and if the * file has an odd number of lines, the last entry is ignored. The first * line of a cache entry is the name of the server, and the second line is an * IP address or DNS hostname. Metaserver uses both entries. Metaserver 2 * uses only the name since most servers set the name to a hostname anyway. * The load function does no parsing, so the entries must be in the correct * order. There is no mechanism to support comments. If a file has an odd * number of lines, the loader assumes the last line is an incomplete entry * and silently discards it. */ static void metaserver_load_cache(void) { char name[MS_LARGE_BUF], ip[MS_LARGE_BUF]; FILE *cache; if (cached_servers_loaded || !cached_server_file) return; /* If failure, we don't want to load again */ cached_servers_loaded = 1; cached_servers_num = 0; cache = fopen(cached_server_file, "r"); if (!cache) return; while (cached_servers_num < CACHED_SERVERS_MAX && fgets(name, MS_LARGE_BUF, cache) != NULL && fgets(ip , MS_LARGE_BUF, cache) != NULL) { ip[strlen(ip)-1] = 0; name[strlen(name)-1] = 0; cached_servers_ip[cached_servers_num] = strdup(ip); cached_servers_name[cached_servers_num++] = strdup(name); } fclose(cache); } /** * */ static void metaserver_save_cache(void) { FILE *cache; int server; if (!cached_server_file) return; cache = fopen(cached_server_file, "w"); if (!cache) return; for (server = 0; server < cached_servers_num; server++) { fprintf(cache, "%s\n", cached_servers_name[server]); fprintf(cache, "%s\n", cached_servers_ip[server]); } fclose(cache); } /** * Add a server to the players server cache file. * @param server_name * @param server_ip */ void metaserver_update_cache(const char *server_name, const char *server_ip) { int index; /* * Try to find the given server name in the existing server cache. If the * zero-based index ends up equal to the one-based number of cached * servers, it was not found. */ for (index = 0; index < cached_servers_num; index++) { if (strcmp(server_name, cached_servers_name[index]) == 0) { break; } } /* * If server is already first in the cache list, nothing else needs to be * done, otherwise, the server needs to be cached. */ if (index != 0 || !cached_servers_num) { char *name; char *ip; int copy; if (index == cached_servers_num) { /* * If the server was not found in the cache, expand the cache size * by one unless that creates too many entries. */ name = strdup(server_name); ip = strdup(server_ip); cached_servers_num++; if (cached_servers_num > CACHED_SERVERS_MAX) { cached_servers_num--; free(cached_servers_name[cached_servers_num-1]); free(cached_servers_ip[cached_servers_num-1]); } } else { /* * If the server was already listed in the cache, grab a copy of * the prior listing. */ name = cached_servers_name[index]; ip = cached_servers_ip[index]; } /* * If the server as already listed, move all the cached items above * the listing down a slot, otherwise, move the whole list down a * notch. This "empties" the top slot. */ for (copy = MIN(index, CACHED_SERVERS_MAX-1); copy > 0; copy--) { cached_servers_name[copy] = cached_servers_name[copy-1]; cached_servers_ip[copy] = cached_servers_ip[copy-1]; } /* * Put the added server information at the top of the cache list, and * save the changes. */ cached_servers_name[0] = name; cached_servers_ip[0] = ip; metaserver_save_cache(); } } /***************************************************************************** * End of cache related functions. *****************************************************************************/ /****************************************************************************** * Metaserver2 support starts here. * ******************************************************************************/ pthread_mutex_t ms2_info_mutex; /* we use threads so that the GUI keeps responding while we wait for * data. But we need to note if the thread is running or not, * so we store it here. This, like the other metaserver2 data, * should be protected by using the ms2_info_mutext. */ static int ms2_is_running=0; /* list of metaserver URL to get information from - this should generally * correspond to the value in the metaserver2 server file, but instead * of meta_update.php, use meta_client.php. * * These could perhaps be in some other file (config.h or the like), but * it seems unlikely that these will change very often, and certainly not * at a level where we would expect users to go about changing the values. */ static char *metaservers[] = {"http://crossfire.real-time.com/metaserver2/meta_client.php"}; /** * Curl doesn't really have any built in way to get data * from the URL into string data - instead, we get a blob * of data which we need to find the newlines, etc * from. Curl also provides the data in multiple calls * if there is lots of data, and does not break the data on * newline, so we need to store the extra (unprocessed) data * from one call to the next. * * @param ptr * pointer to data to process. * @param size * @param nmemb * the size of each piece of data, and the number of these elements. * We always presume the data is byte sized, and just multiple these * together to get total amount of data. * @param data * user supplied data pointer - in this case, it points to a buffer * which is used to store unprocessed information from one call to the * next. * @return * Number of bytes processed. We always return the total number of * bytes supplied - returning anything else is an error to CURL */ size_t metaserver2_writer(void *ptr, size_t size, size_t nmemb, void *data) { #ifdef HAVE_CURL_CURL_H size_t realsize = size * nmemb; char *cp, *newline, *eq, inbuf[CURL_MAX_WRITE_SIZE*2+1], *leftover; leftover = (char*) data; if (realsize > CURL_MAX_WRITE_SIZE) { LOG(LOG_CRITICAL, "common::metaserver2_writer", "Function called with more data than allowed!"); } /* This memcpy here is to just give us a null terminated character * array - easier to do with than having to check lengths as well as other * values. Also, it makes it easier to deal with unprocessed data from * the last call. */ memcpy(inbuf, leftover, strlen(leftover)); memcpy(inbuf+strlen(leftover), ptr, realsize); inbuf[strlen(leftover)+realsize] = 0; leftover[0] =0; /* Processing this block of data shouldn't take very long, even on * slow machines, so putting the lock here, instead of each time * we update a variable is cleaner */ pthread_mutex_lock(&ms2_info_mutex); for (cp = inbuf; cp != NULL && *cp!=0; cp=newline) { newline=strchr(cp, '\n'); if (newline) { *newline = 0; newline++; } else { /* If we didn't get a newline, then this is the * end of the block of data for this call - store * away the extra for the next call. */ strncpy(leftover, cp, CURL_MAX_WRITE_SIZE-1); leftover[CURL_MAX_WRITE_SIZE-1] = 0; break; } eq = strchr(cp,'='); if (eq) { *eq = 0; eq++; } if (!strcmp(cp, "START_SERVER_DATA")) { /* Clear out all data - MS2 doesn't necessarily use all the * fields, so blank out any that we are not using. */ memset(&meta_servers[meta_numservers], 0, sizeof(Meta_Info)); } else if (!strcmp(cp, "END_SERVER_DATA")) { int i; /* we can get data from both metaserver1 & 2 - no reason to keep * both. So check for duplicates, and consider metaserver2 * data 'better'. */ for (i=0; i=meta_numservers) { meta_numservers++; } } else { /* If we get here, these should be variable=value pairs. * if we don't have a value, can't do anything, and * report an error. This would normally be incorrect * data from the server. */ if (!eq) { LOG(LOG_ERROR, "common::metaserver2_writer", "Unknown line: %s",cp); continue; } if (!strcmp(cp,"hostname")) { strncpy(meta_servers[meta_numservers].hostname, eq, sizeof(meta_servers[meta_numservers].hostname)); } else if (!strcmp(cp,"port")) { meta_servers[meta_numservers].port = atoi(eq); } else if (!strcmp(cp,"html_comment")) { strncpy(meta_servers[meta_numservers].html_comment, eq, sizeof(meta_servers[meta_numservers].html_comment)); } else if (!strcmp(cp,"text_comment")) { strncpy(meta_servers[meta_numservers].text_comment, eq, sizeof(meta_servers[meta_numservers].text_comment)); } else if (!strcmp(cp,"archbase")) { strncpy(meta_servers[meta_numservers].archbase, eq, sizeof(meta_servers[meta_numservers].archbase)); } else if (!strcmp(cp,"mapbase")) { strncpy(meta_servers[meta_numservers].mapbase, eq, sizeof(meta_servers[meta_numservers].mapbase)); } else if (!strcmp(cp,"codebase")) { strncpy(meta_servers[meta_numservers].codebase, eq, sizeof(meta_servers[meta_numservers].codebase)); } else if (!strcmp(cp,"flags")) { strncpy(meta_servers[meta_numservers].flags, eq, sizeof(meta_servers[meta_numservers].flags)); } else if (!strcmp(cp,"version")) { strncpy(meta_servers[meta_numservers].version, eq, sizeof(meta_servers[meta_numservers].version)); } else if (!strcmp(cp,"num_players")) { meta_servers[meta_numservers].num_players = atoi(eq); } else if (!strcmp(cp,"in_bytes")) { meta_servers[meta_numservers].in_bytes = atoi(eq); } else if (!strcmp(cp,"out_bytes")) { meta_servers[meta_numservers].out_bytes = atoi(eq); } else if (!strcmp(cp,"uptime")) { meta_servers[meta_numservers].uptime = atoi(eq); } else if (!strcmp(cp,"sc_version")) { meta_servers[meta_numservers].sc_version = atoi(eq); } else if (!strcmp(cp,"cs_version")) { meta_servers[meta_numservers].cs_version = atoi(eq); } else if (!strcmp(cp,"last_update")) { /* MS2 reports update time as when it last got an update, * where as we want actual elapsed time since last update. * So do the conversion. Second check is because of clock * skew - my clock may be fast, and we don't want negative times. */ meta_servers[meta_numservers].idle_time = time(NULL) - atoi(eq); if (meta_servers[meta_numservers].idle_time < 0) meta_servers[meta_numservers].idle_time = 0; } else { LOG(LOG_ERROR, "common::metaserver2_writer", "Unknown line: %s=%s",cp,eq); } } } pthread_mutex_unlock(&ms2_info_mutex); return realsize; #else return 0; #endif } /** * Connects to the URL and gets metaserver data. * @param metaserver2 * metaserver to connect to. * @return * TRUE if successfull, false is failed for some * reason. */ static int get_metaserver2_data(char *metaserver2) { #ifdef HAVE_CURL_CURL_H CURL *curl; CURLcode res; char leftover[CURL_MAX_WRITE_SIZE]; curl = curl_easy_init(); if (!curl) return 0; leftover[0] =0; curl_easy_setopt(curl, CURLOPT_URL, metaserver2); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, metaserver2_writer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, leftover); res = curl_easy_perform(curl); curl_easy_cleanup(curl); if (res) return 0; else return 1; #else return 1; #endif } /** * Thread function that goes off and collects metaserver * data. * @return * exits when job is done, no return value. */ void *metaserver2_thread(void *junk) { int metaserver_choice, tries=0; do { metaserver_choice = random() % (sizeof(metaservers) / sizeof(char*)); tries++; if (tries>5) break; } while (!get_metaserver2_data(metaservers[metaserver_choice])); pthread_mutex_lock(&ms2_info_mutex); qsort(meta_servers, meta_numservers, sizeof(Meta_Info), (int (*)(const void *, const void *))meta_sort); ms2_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); pthread_exit(NULL); // never reached, just to make the compiler happy. return NULL; } /** * this is basically a replacement to the metaserver_get_info - * idea being that when metaserver 1 support goes away, * just yank that entire function and replace it with * this. * @return * best I can tell, always returns 0 */ int metaserver2_get_info(void) { pthread_t thread_id; int ret; if (!metaserver2_on) { return 0; } #ifndef HAVE_CURL_CURL_H return 0; #endif metaserver_load_cache(); pthread_mutex_lock(&ms2_info_mutex); if (!meta_servers) meta_servers = calloc(MAX_METASERVER, sizeof(Meta_Info)); ms2_is_running=1; pthread_mutex_unlock(&ms2_info_mutex); ret=pthread_create(&thread_id, NULL, metaserver2_thread, NULL); if (ret) { LOG(LOG_ERROR, "common::metaserver2_get_info", "Thread creation failed."); pthread_mutex_lock(&ms2_info_mutex); ms2_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); } return 0; } /** * Does single use initalization of metaserver2 variables. */ void init_metaserver(void) { pthread_mutex_init(&ms2_info_mutex, NULL); #ifdef HAVE_CURL_CURL_H curl_global_init(CURL_GLOBAL_ALL); #endif } /****************************************************************************** * End of Metasever2 functions. ******************************************************************************/ /****************************************************************************** * Start of metaserver1 logic * * Note that this shares the same mutex as metaserver2, since it is updating * most of the same structures. *******************************************************************************/ static int ms1_is_running=0; #ifdef WIN32 /* Need script.h for script_killall */ #include /** * This gets input from a socket, and returns it one line at a time. * This is a Windows-specific function, since you can't use fgets under Win32 */ char *get_line_from_sock(char *s, size_t n, int fd) { static long charsleft = 0; static char inbuf[MS_LARGE_BUF*4]; char *cp; int ct; if (!s) return s; if (n != MS_LARGE_BUF*4-1) { LOG(LOG_CRITICAL, "common::get_line_from_sock", "Serious program logic error in get_line_from_sock()."); exit(-1); } if (charsleft > MS_LARGE_BUF*4-3 && strchr(inbuf, '\n') == NULL) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Metaserver returned an overly long line."); return NULL; } /* If there is no line in the buffer */ while (charsleft == 0 || (cp = strchr(inbuf, '\n')) == NULL) { FD_SET fdset; TIMEVAL tv = {3, 0}; /* 3 second timeout on reads */ int nlen; FD_ZERO(&fdset); FD_SET(fd, &fdset); if (select(0, &fdset, NULL, NULL, &tv) == 0) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Metaserver timed out."); return NULL; } nlen = recv(fd, inbuf+charsleft-1, MS_LARGE_BUF*4-1-charsleft, 0); if (nlen == SOCKET_ERROR || nlen <= 0) /* Probably EOF */ return NULL; charsleft += nlen; } /* OK, inbuf contains a null terminated string with at least one \n * Copy the string up to the \n to s, and then move the rest of the * inbuf string to the beginning of the buffer. And finally, set * charsleft to the number of characters left in inbuf, or 0. * Oh, and cp contains the location of the \n. */ memcpy(s, inbuf, cp-inbuf+1); /* Extract the line, including the \n. */ s[cp-inbuf+1] = 0; /* null terminate it */ /* Copy cp to inbuf up to the \0, (skipping the \n) */ ct = 0; while (cp[++ct] != 0) { inbuf[ct-1] = cp[ct]; } inbuf[ct-1] = 0; charsleft = ct; /* And keep track of how many characters are left. */ return s; } #endif /* Win32 */ /** * */ void *metaserver1_thread(void *junk) { struct protoent *protox; int fd; struct sockaddr_in insock; #ifndef WIN32 FILE *fp; #endif char inbuf[MS_LARGE_BUF*4]; Meta_Info *current; protox = getprotobyname("tcp"); if (protox == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Error getting protobyname (tcp)"); pthread_mutex_lock(&ms2_info_mutex); ms1_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); pthread_exit(NULL); } fd = socket(PF_INET, SOCK_STREAM, protox->p_proto); if (fd == -1) { perror("get_metaserver_info: Error on socket command.\n"); pthread_mutex_lock(&ms2_info_mutex); ms1_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); pthread_exit(NULL); } insock.sin_family = AF_INET; insock.sin_port = htons((unsigned short)meta_port); if (isdigit(*meta_server)) insock.sin_addr.s_addr = inet_addr(meta_server); else { struct hostent *hostbn = gethostbyname(meta_server); if (hostbn == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Unknown metaserver hostname: %s", meta_server); pthread_mutex_lock(&ms2_info_mutex); ms1_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); pthread_exit(NULL); } memcpy(&insock.sin_addr, hostbn->h_addr, hostbn->h_length); } if (connect(fd, (struct sockaddr *)&insock, sizeof(insock)) == -1) { perror("Can't connect to metaserver"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "\nCan't connect to metaserver."); pthread_mutex_lock(&ms2_info_mutex); ms1_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); pthread_exit(NULL); } #ifndef WIN32 /* Windows doesn't support this */ /* Turn this into a file handle - this will break it on newlines * for us, which makes our processing much easier - it basically * means one line/server */ if ((fp = fdopen(fd, "r")) == NULL) { perror("fdopen failed."); pthread_mutex_lock(&ms2_info_mutex); ms1_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); pthread_exit(NULL); } #endif pthread_mutex_lock(&ms2_info_mutex); if (!meta_servers) meta_servers = calloc(MAX_METASERVER, sizeof(Meta_Info)); /* The loop goes through and unpacks the data from the metaserver * into its individual components. We do a little extra work and * put the |'s back in the string after we are done with that section - * this is so if there is a corrupt entry, it gets displayed as * originally received from the server. */ #ifndef WIN32 /* Windows doesn't support this */ while (fgets(inbuf, MS_LARGE_BUF*4-1, fp) != NULL) { #else while (get_line_from_sock(inbuf, MS_LARGE_BUF*4-1, fd) != NULL) { #endif char *cp, *cp1; cp = strchr(inbuf, '|'); if (cp == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Corrupt line from server: %s", inbuf); break; } *cp = 0; current = &meta_servers[meta_numservers]; strncpy(current->ip_addr, inbuf, sizeof(current->ip_addr)-1); current->ip_addr[sizeof(current->ip_addr)-1] = '\0'; *cp++ = '|'; current->idle_time = atoi(cp); cp1 = strchr(cp, '|'); if (cp1 == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Corrupt line from server: %s", inbuf); break; } *cp1 = 0; cp = strchr(cp1+1, '|'); if (cp == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Corrupt line from server: %s", inbuf); break; } *cp = 0; /* cp1 points at start of comment, cp points at end */ strncpy(current->hostname, cp1+1, sizeof(current->hostname)-1); current->hostname[sizeof(current->hostname)-1] = '\0'; *cp1++ = '|'; *cp++ = '|'; /* cp now points to num players */ current->num_players = atoi(cp); cp1 = strchr(cp, '|'); if (cp1 == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Corrupt line from server: %s", inbuf); break; } *cp1 = 0; cp = strchr(cp1+1, '|'); if (cp == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Corrupt line from server: %s", inbuf); break; } *cp = 0; /* cp1 is start of version, cp is end */ strncpy(current->version, cp1+1, sizeof(current->version)-1); current->version[sizeof(current->version)-1] = '\0'; *cp1++ = '|'; *cp++ = '|'; /* cp now points to comment */ cp1 = strchr(cp, '\n'); if (cp1 == NULL) { LOG(LOG_WARNING, "common::metaserver_get_info", "Corrupt line from server: %s", inbuf); break; } *cp1 = 0; /* There is extra info included, like the bytes to/from the server * that we dont' care about, so strip them off so they don't show up in * the comment. */ cp1 = strchr(cp, '|'); if (cp1 != NULL) *cp1 = 0; strncpy(current->text_comment, cp, sizeof(current->text_comment)-1); current->text_comment[sizeof(current->text_comment)-1] = '\0'; meta_numservers++; /* has to be 1 less than array size, since array starts counting * at 0. */ if (meta_numservers >= MAX_METASERVER-1) { LOG(LOG_WARNING, "common:metaserver_get_info", "Have reached maximum metaserver count\n"); break; } } #ifdef WIN32 closesocket(fd); #else fclose(fp); #endif qsort(meta_servers, meta_numservers, sizeof(Meta_Info), (int (*)(const void *, const void *))meta_sort); ms1_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); pthread_exit(NULL); /* never reached, just to make the compiler happy. */ return NULL; } /** * */ int metaserver1_get_info(void) { pthread_t thread_id; int ret; if (!metaserver_on) { return 0; } metaserver_load_cache(); pthread_mutex_lock(&ms2_info_mutex); if (!meta_servers) meta_servers = calloc(MAX_METASERVER, sizeof(Meta_Info)); ms1_is_running=1; pthread_mutex_unlock(&ms2_info_mutex); ret=pthread_create(&thread_id, NULL, metaserver1_thread, NULL); if (ret) { LOG(LOG_ERROR, "common::metaserver1_get_info", "Thread creation failed."); pthread_mutex_lock(&ms2_info_mutex); ms1_is_running=0; pthread_mutex_unlock(&ms2_info_mutex); } return 0; } /****************************************************************************** * End of metaserver1 logic ******************************************************************************/ /****************************************************************************** * This is start of common logic - the above sections are actually getting * the data. The code below here is just displaying the data we got */ /** * Sees if we are gathering data or not. Note that we don't have to check * to see what update methods are being used - the is_running flag * is initialized to zero no matter if we are using that method to get * the data, and unless we are using ms1 or ms2, the is_running flag * will never get changed to be non-zero. * * @return * Returns 1 if if we are getting data, 0 if nothing is going on right now. */ int metaserver_check_status(void) { int status; pthread_mutex_lock(&ms2_info_mutex); status = ms2_is_running | ms1_is_running; pthread_mutex_unlock(&ms2_info_mutex); return status; } /** * This contacts the metaserver and gets the list of servers. returns 0 * on success, 1 on failure. Errors will get dumped to stderr, * so most errors should be reasonably clear. * metaserver and meta_port are the server name and port number * to connect to. */ int metaserver_get_info(char *metaserver, int meta_port) { meta_numservers = 0; metaserver2_get_info(); if (metaserver_on) { metaserver1_get_info(); } return 0; } /** * Show the metaservers to the player. We use draw_ext_info() to do * that, and also let the player know they can enter their own host name. */ void metaserver_show(int show_selection) { int i; char buf[256]; if (cached_servers_num) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "\nLast servers you connected to:\n"); for (i = 0; i < cached_servers_num; i++) { snprintf(buf, sizeof(buf), "%2d) %-20.20s %-20.20s", i+1, cached_servers_name[i], cached_servers_ip[i]); draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, buf); } draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, " "); } while(metaserver_check_status()) { usleep(100); } draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, " #) Server # version idle"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, " Name players seconds"); pthread_mutex_lock(&ms2_info_mutex); /* Re-sort the data - may get different data from ms1 and ms2, so * order of this is somewhat random. */ qsort(meta_servers, meta_numservers, sizeof(Meta_Info), (int (*)(const void *, const void *))meta_sort); for (i = 0; i < meta_numservers; i++) { if (check_server_version(i)) { snprintf(buf, sizeof(buf), "%2d) %-15.15s %2d %-12.12s %2d", i+1+cached_servers_num, meta_servers[i].hostname, meta_servers[i].num_players, meta_servers[i].version, meta_servers[i].idle_time); draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, buf); } } if (show_selection) { /* Show default/current server */ if (server) { snprintf(buf, sizeof(buf), "%2d) %s (default)", meta_numservers+1+cached_servers_num, server); draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, buf); } draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Choose one of the entries above"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "or type in a hostname/ip address"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Hit enter to re-update this list"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Enter 0 to exit the program."); } pthread_mutex_unlock(&ms2_info_mutex); } /** * String contains the selection that the player made for the metaserver. * this may not be a a selection, but could be a host name or ip address. * this returns 0 on sucessful selection, 1 if failure (invalid selection * or the like. */ int metaserver_select(char *sel) { int num = atoi(sel); int port=0; char buf[MAX_BUF], buf2[MAX_BUF]; char *server_name = NULL, *server_ip; /* User hit return */ if (sel[0] == 0) { metaserver_get_info(meta_server, meta_port); metaserver_show(TRUE); return 1; } /* Special case - player really entered a 0, so exit the * program. */ if (num == 0 && sel[0] == '0') { #ifdef WIN32 script_killall(); #endif exit(0); } pthread_mutex_lock(&ms2_info_mutex); /* if the entry is not a number (selection from the list), * or is a selection but also has a dot (suggesting * a.b.c.d selection), just try to connect with given name. */ if (num == 0 || strchr(sel, '.') != NULL) { server_name = sel; server_ip = sel; } else { if (num <= 0 || num > meta_numservers+cached_servers_num+1) { draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Invalid selection. Try again"); return 1; } if (num == meta_numservers+cached_servers_num+1) { server_name = server; server_ip = server; } else if (num > cached_servers_num) { server_name = meta_servers[num-cached_servers_num-1 ].hostname; server_ip = meta_servers[num-cached_servers_num-1 ].ip_addr; port = meta_servers[num-cached_servers_num-1 ].port; } else { server_name = cached_servers_name[num-1]; server_ip = cached_servers_ip[num-1]; } } pthread_mutex_unlock(&ms2_info_mutex); if (!server_name) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Bad selection. Try again"); return 1; } /* check for :port suffix, and use it */ if (!port) { if ((sel = strrchr(server_name, ':')) != NULL && (port = atoi(sel+1)) > 0) { snprintf(buf2, sizeof(buf2), "%s", server_name); buf2[sel-server_name] = '\0'; server_name = buf2; } else { port = use_config[CONFIG_PORT]; } } snprintf(buf, sizeof(buf), "Trying to connect to %s:%d", server_name, port); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, buf); #ifdef MULTKEYS csocket.fd = init_connection(server_name, port); #else csocket.fd = init_connection(server_ip, port); #endif if (csocket.fd == -1) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Unable to connect to server."); return 1; } /* * Upon successful connection, add the server to the cache or move it to * the top of the list. */ if ((num <= meta_numservers) && (num != meta_numservers + cached_servers_num + 1)) metaserver_update_cache(server_name, server_ip); return 0; } #ifdef MS_STANDALONE /* This is here just to verify that the code seems to be working * properly, this tests both metaserver one and metaserver2 * To use this code, compile as: * gcc -o metaserver -I. -DMS_STANDALONE metaserver.c misc.o -lcurl -lpthread * if you only want to have support for one type of server then use either * -DMS_SA_NOTMS1 or -DMS_SA_NOTMS2 to disable the metaserver you don't want. * The list of servers goes to stdout, the headers for the tables, status messages etc, go to stderr. */ /* Following lines are to cover external symbols not * defined - trying to bring in the files the are defined * in just causes more dependencies, etc. */ void draw_ext_info(int orig_color, int type, int subtype, const char *message) {} int init_connection(char *host, int port) {} int metaserver2_on=1, metaserver_on=1; char *server=NULL; sint16 use_config[CONFIG_NUMS]; ClientSocket csocket; char *meta_server=META_SERVER; int meta_port=META_PORT; /** * */ void handle_ms_data(int msservernum) { int i; fprintf(stderr,"Collecting data from metaserver %d.", msservernum); while (metaserver_check_status()) { fprintf(stderr,"."); sleep(1); } fprintf(stderr, "\nIp Address:Idle Time:Hostname:Players:Version:Comment\n"); for (i = 0; i < meta_numservers; i++) { printf("%s:%d:%s:%d:%s:%s\n", meta_servers[i].ip_addr, meta_servers[i].idle_time, meta_servers[i].hostname, meta_servers[i].num_players, meta_servers[i].version, meta_servers[i].text_comment); } fprintf(stderr, "%d servers found\n", meta_numservers); } /** * */ int main(int argc, char *argv[]) { #ifdef MS_SA_NOTMS2 metaserver2_on=0; #endif #ifdef MS_SA_NOTMS1 metaserver_on=0; #endif init_metaserver(); if(metaserver2_on) { metaserver2_get_info(); handle_ms_data(2); } /* both metaservers use the same array to store the servers in, so we'll * reset it here in order to get the results from the other metaserver. */ free(meta_servers); meta_servers=NULL; meta_numservers = 0; if(metaserver_on) { metaserver1_get_info(); handle_ms_data(1); } } #endif crossfire-client-1.70.0/common/item-types0000644000014500000120000000631211731277011015273 00000000000000# # This file is parsed by the client and gets used for item orderings. # Order is how items will show in inventory (low numbers first). There # is no requirement that the numbers are consecutive. Max number allowed # is 254 (255 is reserved for unmatched items. # # Note: entries are case sensitive. # Note2: Many entries have a trailing space (ie, 'ring '). This is # intentional - this is so they match more closely (otherwise ring # matches things like stormbringer. # Note3: When finding matches for items, the client starts with the # lowest number and works upward. So if you want generic matches, it # is better to put them at a later number so more specific matches will # happen first. # # While this has not been done for all categories, please try to order # the entries for each category (number) in alphabetical order. # # containers # Moved containers to the top - this is because of stuff like quiver of # arrows, but also more convenient # 1: sack Luggage pouch quiver bag chest key ring # Weapon types # Stylistically, I seperate the artifacts here to make it # a little clear. It could be said that actually having a different # element for the artifacts is desirable. 2: axe club dagger falchion hammer katana mace magnifying glass morningstar nunchacu quarterstaff sabre scimitar shovel ^spear stake ^sword Belzebub's sword Firebrand Harakiri sword broadsword light sword Serpentman sword shortsword long sword taifu trident BoneCrusher Darkblade Demonslayer Dragonslayer Excalibur firebrand Firestar Flame Tongue FlameTongue Frost Hammer Katana of Masamune Lightning sticks Mjoellnir Mournblade Sting Stormbringer Trident 3: ^bow elven bow long bow crossbow sling arrow ^bolt boulder # armor 10: mail leather ^robe shirt apron hauberk # Headware 11: helmet Crown crown 12: shield Demonspawn Shield 13: boot glove gauntlet shoe 14: girdle 15: cloak 16: bracer # food 20: apple booze bread cabbage cake carrot chocolate clover cup egg fish food mint sprig mushroom onion orange potato roast bird steak waybread ^water # gems 30: diamond emerald gold nugget pearl ruby sapphire 31: coin # magic 45: rod Rod 47: wand 48: staff 52: horn 53: amulet 54: ring Ring 55: scroll # Spellbooks 56: grimore grimoire hymnal manual prayerbook sacred text spellbook testiment treatise tome # Readables. Note we included the generic book here. 57: book catalog codex collection compendium compilation divine text divine work encyclopedia exposition file formulary guide holy book holy record index moral text notes note pamphlet record tables transcript volume 59: potion bottle 61: ^balm ^dust dust figurine # Item building scrolls 63: Improve Lower Weapon Enchant Weapon Prepare Weapon Enchant Armour # Misc skill objects 65: holy symbol lockpick talisman writing pen 67: key Key # # body parts # 70: arm claw corpse dragon scale ectoplasm eye finger foot hand head Head heart icor leg lich dust liver orc chop pixie dust residue skin stinger tongue tooth ^wing # Misc alchemy items (minerals) 71: dirt lead mandrake root pile rock stone # 80: flint and steel torch # # Misc stuff - just to prevent error messages # 90: clock flower Gate Pass Glowing Crystal gravestone icecube library card Passport Port Pass rose Apartment Extender 100: chair table crossfire-client-1.70.0/common/external.h0000644000014500000120000001061511731277011015244 00000000000000/* * static char *rcsid_common_external_h = * "$Id: external.h 14486 2011-05-23 17:57:22Z ryo_saeba $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001,2006 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/external.h * Contains external calls that the common area makes callbacks to. This was * really a quick hack done to allow some separation. Really, these should be * set via callbacks that the client can make to the library. Many of these * probably should never really be callbacks in any case, or be more general. */ /* Sound functions */ extern void SoundCmd(unsigned char *data, int len); extern void Sound2Cmd(unsigned char *data, int len); extern void MusicCmd(const char *data, int len); /* Map window related functions */ extern void resize_map_window(int x, int y); extern void display_map_newmap(void); extern void display_map_addbelow(long x, long y, long face); extern void display_map_startupdate(void); extern void display_map_doneupdate(int redraw, int notice); extern int display_mapscroll(int dx, int dy); extern void draw_magic_map(void); /* Info related functions */ extern void draw_prompt(const char *str); extern void draw_ext_info(int orig_color, int type, int subtype, const char *message); extern void x_set_echo(void); extern void set_scroll(const char *s); extern void set_autorepeat(const char *s); extern void menu_clear(void); extern int get_info_width(void); /* Stats related commands */ extern void draw_stats(int redraw); extern void draw_message_window(int redraw); /* this should really just set a field in the stats, and let the * client figure the new weight limit out */ extern void set_weight_limit(uint32 wlim); /* Image related functions */ extern int display_willcache(void); extern int create_and_rescale_image_from_data(Cache_Entry *ce, int pixmap_num, uint8 *rgba_data, int width, int height); extern uint8 *png_to_data(uint8 *data, int len, uint32 *width, uint32 *height); extern int associate_cache_entry(Cache_Entry *ce, int pixnum); extern void image_update_download_status(int start, int end, int total); extern void get_map_image_size(int face, uint8 *w, uint8 *h); extern void addsmooth(uint16 face, uint16 smooth_face); /* Item related commands */ extern void open_container(item *op); extern void close_container(item *op); extern void set_show_icon(const char *s); extern void set_show_weight(const char *s); /* Keybinding relatated commands - this probably should not be a callback */ extern void bind_key(const char *params); extern void unbind_key(const char *params); /* Misc commands */ extern void save_winpos(void); extern void save_defaults(void); extern void command_show(const char *params); extern void client_tick(uint32 tick); extern void cleanup_connection(void); extern void client_pickup(uint32 pickup); /* Account Login Functions */ extern void start_login(int method); extern void hide_all_login_windows(void); extern void account_login_failure(char *message); extern void account_creation_failure(char *message); extern void account_add_character_failure(char *message); extern void account_change_password_failure(char *message); extern void create_new_character_failure(char *message); extern void choose_character_init(void); extern void update_character_choose(const char *name, const char *class, const char *race, const char *face, const char *party, const char *map, int level, int faceno); extern void update_login_info(int type); /* Character Creation Functions */ extern void new_char_window_update_info(); extern void starting_map_update_info(); crossfire-client-1.70.0/common/msgtypes.h0000644000014500000120000002564311731277216015313 00000000000000/* This file is automatically generated. Editing by hand is strongly */ /* discouraged. Look at the newclient.h file and the msgtypes.pl conversion */ /* script. */ const Msg_Type_Names msg_type_names[] = { {0, 0, "generic"}, {MSG_TYPE_BOOK, 0, "book"}, {MSG_TYPE_CARD, 0, "card"}, {MSG_TYPE_PAPER, 0, "paper"}, {MSG_TYPE_SIGN, 0, "sign"}, {MSG_TYPE_MONUMENT, 0, "monument"}, {MSG_TYPE_DIALOG, 0, "dialog"}, {MSG_TYPE_MOTD, 0, "motd"}, {MSG_TYPE_ADMIN, 0, "admin"}, {MSG_TYPE_SHOP, 0, "shop"}, {MSG_TYPE_COMMAND, 0, "command"}, {MSG_TYPE_ATTRIBUTE, 0, "attribute"}, {MSG_TYPE_SKILL, 0, "skill"}, {MSG_TYPE_APPLY, 0, "apply"}, {MSG_TYPE_ATTACK, 0, "attack"}, {MSG_TYPE_COMMUNICATION, 0, "communication"}, {MSG_TYPE_SPELL, 0, "spell"}, {MSG_TYPE_ITEM, 0, "item"}, {MSG_TYPE_MISC, 0, "misc"}, {MSG_TYPE_VICTIM, 0, "victim"}, {MSG_TYPE_CLIENT, 0, "client"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_CLASP_1, "book_clasp_1"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_CLASP_2, "book_clasp_2"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_ELEGANT_1, "book_elegant_1"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_ELEGANT_2, "book_elegant_2"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_QUARTO_1, "book_quarto_1"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_QUARTO_2, "book_quarto_2"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_EVOKER, "book_spell_evoker"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_PRAYER, "book_spell_prayer"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_PYRO, "book_spell_pyro"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_SORCERER, "book_spell_sorcerer"}, {MSG_TYPE_BOOK, MSG_TYPE_BOOK_SPELL_SUMMONER, "book_spell_summoner"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_1, "card_simple_1"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_2, "card_simple_2"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_SIMPLE_3, "card_simple_3"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_1, "card_elegant_1"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_2, "card_elegant_2"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_ELEGANT_3, "card_elegant_3"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_1, "card_strange_1"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_2, "card_strange_2"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_STRANGE_3, "card_strange_3"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_1, "card_money_1"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_2, "card_money_2"}, {MSG_TYPE_CARD, MSG_TYPE_CARD_MONEY_3, "card_money_3"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_1, "paper_note_1"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_2, "paper_note_2"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_NOTE_3, "paper_note_3"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_OLD_1, "paper_letter_old_1"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_OLD_2, "paper_letter_old_2"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_NEW_1, "paper_letter_new_1"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_LETTER_NEW_2, "paper_letter_new_2"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_ENVELOPE_1, "paper_envelope_1"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_ENVELOPE_2, "paper_envelope_2"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_OLD_1, "paper_scroll_old_1"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_OLD_2, "paper_scroll_old_2"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_NEW_1, "paper_scroll_new_1"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_NEW_2, "paper_scroll_new_2"}, {MSG_TYPE_PAPER, MSG_TYPE_PAPER_SCROLL_MAGIC, "paper_scroll_magic"}, {MSG_TYPE_SIGN, MSG_TYPE_SIGN_BASIC, "sign_basic"}, {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_LEFT, "sign_dir_left"}, {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_RIGHT, "sign_dir_right"}, {MSG_TYPE_SIGN, MSG_TYPE_SIGN_DIR_BOTH, "sign_dir_both"}, {MSG_TYPE_SIGN, MSG_TYPE_SIGN_MAGIC_MOUTH, "sign_magic_mouth"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_1, "monument_stone_1"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_2, "monument_stone_2"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STONE_3, "monument_stone_3"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_1, "monument_statue_1"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_2, "monument_statue_2"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_STATUE_3, "monument_statue_3"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_1, "monument_gravestone_1"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_2, "monument_gravestone_2"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_GRAVESTONE_3, "monument_gravestone_3"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_1, "monument_wall_1"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_2, "monument_wall_2"}, {MSG_TYPE_MONUMENT, MSG_TYPE_MONUMENT_WALL_3, "monument_wall_3"}, {MSG_TYPE_DIALOG, MSG_TYPE_DIALOG_NPC, "dialog_npc"}, {MSG_TYPE_DIALOG, MSG_TYPE_DIALOG_ALTAR, "dialog_altar"}, {MSG_TYPE_DIALOG, MSG_TYPE_DIALOG_MAGIC_EAR, "dialog_magic_ear"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_RULES, "admin_rules"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_NEWS, "admin_news"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_PLAYER, "admin_player"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_DM, "admin_dm"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_HISCORE, "admin_hiscore"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_LOADSAVE, "admin_loadsave"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_LOGIN, "admin_login"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_VERSION, "admin_version"}, {MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_ERROR, "admin_error"}, {MSG_TYPE_SHOP, MSG_TYPE_SHOP_LISTING, "shop_listing"}, {MSG_TYPE_SHOP, MSG_TYPE_SHOP_PAYMENT, "shop_payment"}, {MSG_TYPE_SHOP, MSG_TYPE_SHOP_SELL, "shop_sell"}, {MSG_TYPE_SHOP, MSG_TYPE_SHOP_MISC, "shop_misc"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_WHO, "command_who"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_MAPS, "command_maps"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_BODY, "command_body"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_MALLOC, "command_malloc"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_WEATHER, "command_weather"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_STATISTICS, "command_statistics"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_CONFIG, "command_config"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_INFO, "command_info"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_QUESTS, "command_quests"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_DEBUG, "command_debug"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR, "command_error"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_SUCCESS, "command_success"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_FAILURE, "command_failure"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_EXAMINE, "command_examine"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_INVENTORY, "command_inventory"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_HELP, "command_help"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_DM, "command_dm"}, {MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_NEWPLAYER, "command_newplayer"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_ATTACKTYPE_GAIN, "attribute_attacktype_gain"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_ATTACKTYPE_LOSS, "attribute_attacktype_loss"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_PROTECTION_GAIN, "attribute_protection_gain"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_PROTECTION_LOSS, "attribute_protection_loss"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_MOVE, "attribute_move"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_RACE, "attribute_race"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, "attribute_bad_effect_start"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_END, "attribute_bad_effect_end"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_STAT_GAIN, "attribute_stat_gain"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_STAT_LOSS, "attribute_stat_loss"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_LEVEL_GAIN, "attribute_level_gain"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_LEVEL_LOSS, "attribute_level_loss"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOOD_EFFECT_START, "attribute_good_effect_start"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOOD_EFFECT_END, "attribute_good_effect_end"}, {MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, "attribute_god"}, {MSG_TYPE_SKILL, MSG_TYPE_SKILL_MISSING, "skill_missing"}, {MSG_TYPE_SKILL, MSG_TYPE_SKILL_ERROR, "skill_error"}, {MSG_TYPE_SKILL, MSG_TYPE_SKILL_SUCCESS, "skill_success"}, {MSG_TYPE_SKILL, MSG_TYPE_SKILL_FAILURE, "skill_failure"}, {MSG_TYPE_SKILL, MSG_TYPE_SKILL_PRAY, "skill_pray"}, {MSG_TYPE_SKILL, MSG_TYPE_SKILL_LIST, "skill_list"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_ERROR, "apply_error"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_UNAPPLY, "apply_unapply"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_SUCCESS, "apply_success"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_FAILURE, "apply_failure"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_CURSED, "apply_cursed"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_TRAP, "apply_trap"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_BADBODY, "apply_badbody"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_PROHIBITION, "apply_prohibition"}, {MSG_TYPE_APPLY, MSG_TYPE_APPLY_BUILD, "apply_build"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_DID_HIT, "attack_did_hit"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_PET_HIT, "attack_pet_hit"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_FUMBLE, "attack_fumble"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_DID_KILL, "attack_did_kill"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_PET_DIED, "attack_pet_died"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_NOKEY, "attack_nokey"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_NOATTACK, "attack_noattack"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_PUSHED, "attack_pushed"}, {MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_MISS, "attack_miss"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_RANDOM, "communication_random"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_SAY, "communication_say"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_ME, "communication_me"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_TELL, "communication_tell"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE, "communication_emote"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_PARTY, "communication_party"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_SHOUT, "communication_shout"}, {MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_CHAT, "communication_chat"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_HEAL, "spell_heal"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_PET, "spell_pet"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, "spell_failure"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_END, "spell_end"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_SUCCESS, "spell_success"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, "spell_error"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_PERCEIVE_SELF, "spell_perceive_self"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_TARGET, "spell_target"}, {MSG_TYPE_SPELL, MSG_TYPE_SPELL_INFO, "spell_info"}, {MSG_TYPE_ITEM, MSG_TYPE_ITEM_REMOVE, "item_remove"}, {MSG_TYPE_ITEM, MSG_TYPE_ITEM_ADD, "item_add"}, {MSG_TYPE_ITEM, MSG_TYPE_ITEM_CHANGE, "item_change"}, {MSG_TYPE_ITEM, MSG_TYPE_ITEM_INFO, "item_info"}, {MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_SWAMP, "victim_swamp"}, {MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_WAS_HIT, "victim_was_hit"}, {MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_STEAL, "victim_steal"}, {MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_SPELL, "victim_spell"}, {MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_DIED, "victim_died"}, {MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_WAS_PUSHED, "victim_was_pushed"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, "client_config"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SERVER, "client_server"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_COMMAND, "client_command"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, "client_query"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_DEBUG, "client_debug"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "client_notice"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "client_metaserver"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "client_script"}, {MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, "client_error"}, }; crossfire-client-1.70.0/common/config.h.in0000644000014500000120000001361011731277154015302 00000000000000/* common/config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Location of other binaries. */ #undef BINDIR /* Location of read-only machine independent data. */ #undef CF_DATADIR /* Define to 1 if you have the header file. */ #undef HAVE_CURL_CURL_H /* Define to 1 if you have the header file. */ #undef HAVE_DMALLOC_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `getaddrinfo' function. */ #undef HAVE_GETADDRINFO /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have a functional curl library. */ #undef HAVE_LIBCURL /* Define to 1 if you have the `GL' library (-lGL). */ #undef HAVE_LIBGL /* Define to 1 if you have the `GLU' library (-lGLU). */ #undef HAVE_LIBGLU /* Define to 1 if you have the `glu32' library (-lglu32). */ #undef HAVE_LIBGLU32 /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define to 1 if you have the `opengl32' library (-lopengl32). */ #undef HAVE_LIBOPENGL32 /* Define to 1 if you have the `png' library (-lpng). */ #undef HAVE_LIBPNG /* Define to 1 if you have the 'pthread' library. */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the `z' library (-lz). */ #undef HAVE_LIBZ /* Define to use Lua 5.x */ #undef HAVE_LUA /* Define to use Lua 5.1 */ #undef HAVE_LUA_5_1 /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mkdir' function. */ #undef HAVE_MKDIR /* Define if you have OpenGL. */ #undef HAVE_OPENGL /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define if you have SDL */ #undef HAVE_SDL /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* 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 `strcspn' function. */ #undef HAVE_STRCSPN /* 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 `sysconf' function. */ #undef HAVE_SYSCONF /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Defined if libcurl supports AsynchDNS */ #undef LIBCURL_FEATURE_ASYNCHDNS /* Defined if libcurl supports IDN */ #undef LIBCURL_FEATURE_IDN /* Defined if libcurl supports IPv6 */ #undef LIBCURL_FEATURE_IPV6 /* Defined if libcurl supports KRB4 */ #undef LIBCURL_FEATURE_KRB4 /* Defined if libcurl supports libz */ #undef LIBCURL_FEATURE_LIBZ /* Defined if libcurl supports NTLM */ #undef LIBCURL_FEATURE_NTLM /* Defined if libcurl supports SSL */ #undef LIBCURL_FEATURE_SSL /* Defined if libcurl supports SSPI */ #undef LIBCURL_FEATURE_SSPI /* Defined if libcurl supports DICT */ #undef LIBCURL_PROTOCOL_DICT /* Defined if libcurl supports FILE */ #undef LIBCURL_PROTOCOL_FILE /* Defined if libcurl supports FTP */ #undef LIBCURL_PROTOCOL_FTP /* Defined if libcurl supports FTPS */ #undef LIBCURL_PROTOCOL_FTPS /* Defined if libcurl supports HTTP */ #undef LIBCURL_PROTOCOL_HTTP /* Defined if libcurl supports HTTPS */ #undef LIBCURL_PROTOCOL_HTTPS /* Defined if libcurl supports LDAP */ #undef LIBCURL_PROTOCOL_LDAP /* Defined if libcurl supports TELNET */ #undef LIBCURL_PROTOCOL_TELNET /* Defined if libcurl supports TFTP */ #undef LIBCURL_PROTOCOL_TFTP /* If metaserver2 support is enabled. */ #undef METASERVER2 /* Default logging level. */ #undef MINLOGLEVEL /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Version number of package */ #undef VERSION /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define curl_free() as free() if our version of curl lacks curl_free. */ #undef curl_free /* Define to `unsigned int' if does not define. */ #undef size_t crossfire-client-1.70.0/common/config.h0000644000014500000120000001454011731277211014672 00000000000000/* common/config.h. Generated from config.h.in by configure. */ /* common/config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* Location of other binaries. */ #define BINDIR "/usr/local/bin" /* Location of read-only machine independent data. */ #define CF_DATADIR "/usr/local/share/crossfire-client" /* Define to 1 if you have the header file. */ #define HAVE_CURL_CURL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_DMALLOC_H */ /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #define HAVE_DOPRNT 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `getaddrinfo' function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have a functional curl library. */ #define HAVE_LIBCURL 1 /* Define to 1 if you have the `GL' library (-lGL). */ #define HAVE_LIBGL 1 /* Define to 1 if you have the `GLU' library (-lGLU). */ #define HAVE_LIBGLU 1 /* Define to 1 if you have the `glu32' library (-lglu32). */ /* #undef HAVE_LIBGLU32 */ /* Define to 1 if you have the `m' library (-lm). */ #define HAVE_LIBM 1 /* Define to 1 if you have the `opengl32' library (-lopengl32). */ /* #undef HAVE_LIBOPENGL32 */ /* Define to 1 if you have the `png' library (-lpng). */ #define HAVE_LIBPNG 1 /* Define to 1 if you have the 'pthread' library. */ #define HAVE_LIBPTHREAD 1 /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to use Lua 5.x */ #define HAVE_LUA 1 /* Define to use Lua 5.1 */ #define HAVE_LUA_5_1 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define if you have OpenGL. */ #define HAVE_OPENGL 1 /* Define if you have POSIX threads libraries and header files. */ #define HAVE_PTHREAD 1 /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define if you have SDL */ #define HAVE_SDL 1 /* Define to 1 if you have the `socket' function. */ #define HAVE_SOCKET 1 /* 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 `strcspn' function. */ #define HAVE_STRCSPN 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 `sysconf' function. */ #define HAVE_SYSCONF 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_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_TIME_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 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Defined if libcurl supports AsynchDNS */ /* #undef LIBCURL_FEATURE_ASYNCHDNS */ /* Defined if libcurl supports IDN */ #define LIBCURL_FEATURE_IDN 1 /* Defined if libcurl supports IPv6 */ #define LIBCURL_FEATURE_IPV6 1 /* Defined if libcurl supports KRB4 */ /* #undef LIBCURL_FEATURE_KRB4 */ /* Defined if libcurl supports libz */ #define LIBCURL_FEATURE_LIBZ 1 /* Defined if libcurl supports NTLM */ #define LIBCURL_FEATURE_NTLM 1 /* Defined if libcurl supports SSL */ #define LIBCURL_FEATURE_SSL 1 /* Defined if libcurl supports SSPI */ /* #undef LIBCURL_FEATURE_SSPI */ /* Defined if libcurl supports DICT */ #define LIBCURL_PROTOCOL_DICT 1 /* Defined if libcurl supports FILE */ #define LIBCURL_PROTOCOL_FILE 1 /* Defined if libcurl supports FTP */ #define LIBCURL_PROTOCOL_FTP 1 /* Defined if libcurl supports FTPS */ #define LIBCURL_PROTOCOL_FTPS 1 /* Defined if libcurl supports HTTP */ #define LIBCURL_PROTOCOL_HTTP 1 /* Defined if libcurl supports HTTPS */ #define LIBCURL_PROTOCOL_HTTPS 1 /* Defined if libcurl supports LDAP */ #define LIBCURL_PROTOCOL_LDAP 1 /* Defined if libcurl supports TELNET */ #define LIBCURL_PROTOCOL_TELNET 1 /* Defined if libcurl supports TFTP */ #define LIBCURL_PROTOCOL_TFTP 1 /* If metaserver2 support is enabled. */ #define METASERVER2 1 /* Default logging level. */ #define MINLOGLEVEL 0 /* Name of package */ #define PACKAGE "crossfire-client" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "crossfire-client" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "crossfire-client 1.70.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "crossfire-client" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.70.0" /* Define to necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 4 /* The size of `long long', as computed by sizeof. */ #define SIZEOF_LONG_LONG 8 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Version number of package */ #define VERSION "1.70.0" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if the X Window System is missing or not being used. */ /* #undef X_DISPLAY_MISSING */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define curl_free() as free() if our version of curl lacks curl_free. */ /* #undef curl_free */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ crossfire-client-1.70.0/common/script.c0000644000014500000120000015777711731277011014746 00000000000000const char * const rcsid_common_script_c = "$Id: script.c 17543 2012-03-16 21:24:20Z ryo_saeba $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2003 Mark Wedel & Crossfire Development Team This source file also Copyright (C) 2003 Preston Crow 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /* * This file has its own script.h for prototypes, so don't want to include * this when doing a 'make proto'. */ #ifndef CPROTO /** * @file common/script.c * Handles the client-side scripting interface. * * Each script is an external process that keeps two pipes open between the * client and the script (one in each direction). When the script starts, it * defaults to receiving no data from the client. Normally, the first command * it sends to the client will be a request to have certain types of data sent * to the script as the client receives them from the server (such as drawinfo * commands). The script can also request current information from the * client, such as the contents of the inventory or the map data (either live * or last viewed "fog-of-war" data). The script can also send commands for * the client to pass to the server. * * Script Commands: * * watch {command type} * whenever the server sends the given command type to the client, also send * a copy to the script. * Note that this checked before the client processes the command, so it will * automatically handle new options that may be added in the future. * If the command type is NULL, all commands are watched. * * unwatch {command type} * turn off a previous watch command. There may be a slight delay in * response before the command is processed, so some unwanted data may * still be sent to the script. * * request {data type} * have the client send the given data to the script. * * issue [{repeat} {must_send}] {command} * issue the specified command to the server. * if {repeat} isn't numeric then the command is sent directly * For "lock" and "mark" only, the parameters are converted to binary. * * draw {color} {text} * display the text in the specified color as if the server had sent * a drawinfo command. * * monitor * send the script a copy of every command that is sent to the server. * * unmonitor * turn off monitoring. * * sync {#} * wait until the server has acknowledged all but {#} commands have been * received * * To implement this: * * Processing script commands: gtk/gx11.c:do_network() and * x11/x11.c:event_loop() are modified to also watch for input from scripts * in the select() call, in which case script_process(fd) in this file is * called. * * Handling watches: common/client.c:DoClient() is modified to pass a copy * of each command to script_watch() before checking for it in the table. * * Handling of monitor: common/player.c:send_command() is modified to pass * a copy of each command to script_monitor() before sending to the server. * * Handling of requests: global variables are directly accessed from within * this file. * * Handling of issues: send_command() is called directly. Note that this * command will be sent to any scripts that are monitoring output. * * Launching new scripts: common/player.c:extended_command() is extended to * add a check for "script " as an additional command, calling * script_init(). Also added is the "scripts" command to list all running * scripts, the "scriptkill" command to terminate a script (close the pipes * and assume it takes the hint), and the "scripttell" command to send a * message to a running script. */ /* * Include files */ /* * This does not work under Windows for now. Someday this will be fixed :) */ #ifndef WIN32 #include #include #include #include /* for SIGHUP */ #include #endif #include #include #include #include #include #include "mapdata.h" /* * Data structures */ struct script { char *name; /* the script name */ char *params; /* the script parameters, if any */ #ifndef WIN32 int out_fd; /* the file descriptor to which the client writes to the script */ int in_fd; /* the file descriptor from which we read commands from the script */ #else HANDLE out_fd; /* the file descriptor to which the client writes to the script */ HANDLE in_fd; /* the file descriptor from which we read commands from the script */ #endif /* WIN32 */ int monitor; /* true if this script is monitoring commands sent to the server */ int num_watch; /* number of commands we're watching */ char **watch; /* array of commands that we're watching */ int cmd_count; /* bytes already read in */ char cmd[1024]; /* command from the script */ #ifndef WIN32 int pid; #else DWORD pid; /* Handle to Win32 process ID */ HANDLE process; /* Handle of Win32 process */ #endif int sync_watch; }; /* * Global variables */ static struct script *scripts = NULL; static int num_scripts = 0; /* * Prototypes */ static int script_by_name(const char *name); static void script_dead(int i); static void script_process_cmd(int i); static void send_map(int i, int x, int y); static void script_send_item(int i, const char *head, const item *it); /* * Functions */ #ifdef WIN32 #define write(x, y, z) emulate_write(x, y, z) #define read(x, y, z) emulate_read(x, y, z) static int emulate_read(HANDLE fd, char *buf, int len) { DWORD dwBytesRead; BOOL rc; FlushFileBuffers(fd); rc = ReadFile(fd, buf, len, &dwBytesRead, NULL); if (rc == FALSE) return(-1); buf[dwBytesRead] = '\0'; return(dwBytesRead); } static int emulate_write(HANDLE fd, const char *buf, int len) { DWORD dwBytesWritten; BOOL rc; rc = WriteFile(fd, buf, len, &dwBytesWritten, NULL); FlushFileBuffers(fd); if (rc == FALSE) return(-1); return(dwBytesWritten); } #endif /* WIN32 */ void script_init(const char *cparams) { #ifndef WIN32 int pipe1[2]; #ifdef USE_PIPE int pipe2[2]; #endif int pid; char *name, *args, params[MAX_BUF]; if (!cparams) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Please specify a script to launch!"); return; } /* cparams as passed in is a const value, so need to copy it * to data we can write over. */ strncpy(params, cparams, MAX_BUF-1); params[MAX_BUF-1] = 0; /* Get name and args */ name = params; args = name; while (*args && *args != ' ') ++args; while (*args && *args == ' ') *args++ = '\0'; if (*args == 0) { args = NULL; } #ifdef USE_PIPE /* Create two pipes */ if (pipe(pipe1)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Unable to start script--pipe failed"); return; } if (pipe(pipe2)) { close(pipe1[0]); close(pipe1[1]); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Unable to start script--pipe failed"); return; } #else /* Create a pair of sockets */ if (socketpair(PF_LOCAL, SOCK_STREAM, AF_LOCAL, pipe1)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Unable to start script--socketpair failed"); return; } #endif /* Fork */ pid = fork(); if (pid == -1) { close(pipe1[0]); close(pipe1[1]); #ifdef USE_PIPE close(pipe2[0]); close(pipe2[1]); #endif draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Unable to start script--fork failed"); return; } /* Child--set stdin/stdout to the pipes, then exec */ if (pid == 0) { int i; int r; char *argv[256]; /* Fill in argv[] */ argv[0] = name; i = 1; while (args && *args && i < sizeof(argv)/sizeof(*argv)-1) { argv[i++] = args; while (*args && *args != ' ') ++args; while (*args && *args == ' ') *args++ = '\0'; } argv[i] = NULL; /* Clean up file descriptor space */ r = dup2(pipe1[0], 0); if (r != 0) { fprintf(stderr, "Script Child: Failed to set pipe1 as stdin\n"); } #ifdef USE_PIPE r = dup2(pipe2[1], 1); #else r = dup2(pipe1[0], 1); #endif if (r != 1) { fprintf(stderr, "Script Child: Failed to set pipe2 as stdout\n"); } for (i = 3; i < 100; ++i) close(i); /* EXEC */ r = execvp(argv[0], argv); /* If we get here, then there's been an failure of some sort. * In my case, it's often that I don't know what script name to * give to /script, so exec() can't find the script. * * Forward the error back to the client, using the script pipes. */ if (r != -1) { printf("draw %d Script child: no error, but no execvp().\n", NDI_RED); } else { printf("draw %d Script child failed to start: %s\n", NDI_RED, strerror(errno)); } exit(1); } /* Close the child's pipe ends */ close(pipe1[0]); #ifdef USE_PIPE close(pipe2[1]); #endif if (fcntl(pipe1[1], F_SETFL, O_NDELAY) == -1) { LOG(LOG_WARNING, "common::script_init", "Error on fcntl."); } /* realloc script array to add new entry; fill in the data */ scripts = realloc(scripts, sizeof(scripts[0])*(num_scripts+1)); scripts[num_scripts].name = strdup(name); scripts[num_scripts].params = args ? strdup(args) : NULL; scripts[num_scripts].out_fd = pipe1[1]; #ifdef USE_PIPE scripts[num_scripts].in_fd = pipe2[0]; #else scripts[num_scripts].in_fd = pipe1[1]; #endif scripts[num_scripts].monitor = 0; scripts[num_scripts].num_watch = 0; scripts[num_scripts].watch = NULL; scripts[num_scripts].cmd_count = 0; scripts[num_scripts].pid = pid; scripts[num_scripts].sync_watch = -1; ++num_scripts; #else /* WIN32 */ char *name, *args; char params[ MAX_BUF ]; SECURITY_ATTRIBUTES saAttr; PROCESS_INFORMATION piProcInfo; STARTUPINFO siStartupInfo; HANDLE hChildStdinRd, hChildStdinWr, hChildStdinWrDup, hChildStdoutRd; HANDLE hChildStdoutWr, hChildStdoutRdDup, hSaveStdin, hSaveStdout; if (!cparams) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Please specifiy a script to launch!"); return; } strncpy(params, cparams, MAX_BUF-1); params[MAX_BUF-1] = '\0'; /* Get name and args */ name = params; args = name; while (*args && *args != ' ') ++args; while (*args && *args == ' ') *args++ = '\0'; if (*args == 0) { args = NULL; } saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.bInheritHandle = TRUE; saAttr.lpSecurityDescriptor = NULL; hSaveStdout = GetStdHandle(STD_OUTPUT_HANDLE); if (!CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: stdout CreatePipe() failed"); return; } if (!SetStdHandle(STD_OUTPUT_HANDLE, hChildStdoutWr)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: failed to redirect stdout using SetStdHandle()"); return; } if (!DuplicateHandle(GetCurrentProcess(), hChildStdoutRd, GetCurrentProcess(), &hChildStdoutRdDup, 0, FALSE, DUPLICATE_SAME_ACCESS)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: failed to duplicate stdout using DuplicateHandle()"); return; } CloseHandle(hChildStdoutRd); hSaveStdin = GetStdHandle(STD_INPUT_HANDLE); if (!CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: stdin CreatePipe() failed"); return; } if (!SetStdHandle(STD_INPUT_HANDLE, hChildStdinRd)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: failed to redirect stdin using SetStdHandle()"); return; } if (!DuplicateHandle(GetCurrentProcess(), hChildStdinWr, GetCurrentProcess(), &hChildStdinWrDup, 0, FALSE, DUPLICATE_SAME_ACCESS)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: failed to duplicate stdin using DuplicateHandle()"); return; } CloseHandle(hChildStdinWr); ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION)); ZeroMemory(&siStartupInfo, sizeof(STARTUPINFO)); siStartupInfo.cb = sizeof(STARTUPINFO); if (args) args[-1] = ' '; if (!CreateProcess(NULL, name, NULL, NULL, TRUE, CREATE_NEW_PROCESS_GROUP, NULL, NULL, &siStartupInfo, &piProcInfo)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: CreateProcess() failed"); return; } CloseHandle(piProcInfo.hThread); if (args) args[-1] = '\0'; if (!SetStdHandle(STD_INPUT_HANDLE, hSaveStdin)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: restoring original stdin failed"); return; } if (!SetStdHandle(STD_OUTPUT_HANDLE, hSaveStdout)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Script support: restoring original stdout failed"); return; } /* realloc script array to add new entry; fill in the data */ scripts = realloc(scripts, sizeof(scripts[0])*(num_scripts+1)); scripts[num_scripts].name = strdup(name); scripts[num_scripts].params = args ? strdup(args) : NULL; scripts[num_scripts].out_fd = hChildStdinWrDup; scripts[num_scripts].in_fd = hChildStdoutRdDup; scripts[num_scripts].monitor = 0; scripts[num_scripts].num_watch = 0; scripts[num_scripts].watch = NULL; scripts[num_scripts].cmd_count = 0; scripts[num_scripts].pid = piProcInfo.dwProcessId; scripts[num_scripts].process = piProcInfo.hProcess; scripts[num_scripts].sync_watch = -1; ++num_scripts; #endif /* WIN32 */ } void script_sync(int commdiff) { int i; if (commdiff < 0) commdiff +=256; for (i = 0; i < num_scripts; ++i) { if (commdiff <= scripts[i].sync_watch && scripts[i].sync_watch >= 0) { char buf[1024]; snprintf(buf, sizeof(buf), "sync %d\n", commdiff); write(scripts[i].out_fd, buf, strlen(buf)); scripts[i].sync_watch = -1; } } } void script_list(void) { if (num_scripts == 0) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "No scripts are currently running"); } else { int i; char buf[1024]; snprintf(buf, sizeof(buf), "%d scripts currently running:", num_scripts); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); for (i = 0; i < num_scripts; ++i) { if (scripts[i].params) snprintf(buf, sizeof(buf), "%d %s %s", i+1, scripts[i].name, scripts[i].params); else snprintf(buf, sizeof(buf), "%d %s", i+1, scripts[i].name); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); } } } void script_kill(const char *params) { int i; /* Verify that the number is a valid array entry */ i = script_by_name(params); if (i < 0 || i >= num_scripts) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "No such running script"); return; } #ifndef WIN32 kill(scripts[i].pid, SIGHUP); #else GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, scripts[i].pid); #endif /* WIN32 */ draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Killed script."); script_dead(i); } #ifdef WIN32 void script_killall(void) { while (num_scripts > 0) { GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, scripts[0].pid); script_dead(0); } } #endif /* WIN32 */ void script_fdset(int *maxfd, fd_set *set) { #ifndef WIN32 int i; for (i = 0; i < num_scripts; ++i) { FD_SET(scripts[i].in_fd, set); if (scripts[i].in_fd >= *maxfd) *maxfd = scripts[i].in_fd+1; } #endif /* WIN32 */ } void script_process(fd_set *set) { int i; int r; #ifdef WIN32 DWORD nAvailBytes = 0; char cTmp; BOOL bRC; DWORD dwStatus; BOOL bStatus; #endif /* Determine which script's fd is set */ for (i = 0; i < num_scripts; ++i) { #ifndef WIN32 if (FD_ISSET(scripts[i].in_fd, set)) #else bStatus = GetExitCodeProcess(scripts[i].process, &dwStatus); bRC = PeekNamedPipe(scripts[i].in_fd, &cTmp, 1, NULL, &nAvailBytes, NULL); if (nAvailBytes) #endif /* WIN32 */ { /* Read in script[i].cmd */ r = read(scripts[i].in_fd, scripts[i].cmd+scripts[i].cmd_count, sizeof(scripts[i].cmd)-scripts[i].cmd_count-1); if (r > 0) { scripts[i].cmd_count += r; } #ifndef WIN32 else if (r == 0 || errno == EBADF) #else else if (r == 0 || GetLastError() == ERROR_BROKEN_PIPE) #endif { /* Script has exited; delete it */ script_dead(i); return; } /* If a newline or full buffer has been reached, process it */ scripts[i].cmd[scripts[i].cmd_count] = 0; /* terminate string */ while (scripts[i].cmd_count == sizeof(scripts[i].cmd)-1 #ifndef WIN32 || strchr(scripts[i].cmd, '\n')) #else || strchr(scripts[i].cmd, '\r\n')) #endif /* WIN32 */ { script_process_cmd(i); scripts[i].cmd[scripts[i].cmd_count] = 0; /* terminate string */ } return; /* Only process one script at a time */ } #ifdef WIN32 else if (!bRC || (bStatus && (dwStatus != STILL_ACTIVE))) /* Error: assume dead */ script_dead(i); #endif /* WIN32 */ } } void script_watch(const char *cmd, const uint8 *data_initial, const int data_len, const enum CmdFormat format) { int i; int w; int l, len; const uint8 *data; /* For each script... */ for (i = 0; i < num_scripts; ++i) { /* For each watch... */ for (w = 0; w < scripts[i].num_watch; ++w) { len = data_len; /* Does this command match our watch? */ l = strlen(scripts[i].watch[w]); if (!l || strncmp(cmd, scripts[i].watch[w], l) == 0) { char buf[10240]; data = data_initial; if (!len) snprintf(buf, sizeof(buf), "watch %s\n", cmd); else switch (format) { case ASCII: snprintf(buf, sizeof(buf), "watch %s %s\n", cmd, data); break; case SHORT_INT: snprintf(buf, sizeof(buf), "watch %s %d %d\n", cmd, GetShort_String(data), GetInt_String(data+2)); break; case SHORT_ARRAY: { int be; int p; be = snprintf(buf, sizeof(buf), "watch %s", cmd); for (p = 0; p*2 < len && p < 100; ++p) { be += snprintf(buf+be, sizeof(buf)-be, " %d", GetShort_String(data+p*2)); } be += snprintf(buf+be, sizeof(buf)-be, "\n"); } break; case INT_ARRAY: { int be; int p; be = snprintf(buf, sizeof(buf), "watch %s", cmd); for (p = 0; p*4 < len; ++p) { be += snprintf(buf+be, sizeof(buf)-be, " %d", GetInt_String(data+p*4)); } be += snprintf(buf+be, sizeof(buf)-be, "\n"); } break; case STATS: { /* * We cheat here and log each stat as a separate command, even * if the server sent a bunch of updates as a single message; * most scripts will be easier to write if they only parse a fixed * format. */ int be = 0; while (len) { int c; /* which stat */ be += snprintf(buf+be, sizeof(buf)-be, "watch %s", cmd); c = *data; ++data; --len; if (c >= CS_STAT_RESIST_START && c <= CS_STAT_RESIST_END) { be += snprintf(buf+be, sizeof(buf)-be, " resists %d %d\n", c, GetShort_String(data)); data += 2; len -= 2; } else if (c >= CS_STAT_SKILLINFO && c < (CS_STAT_SKILLINFO+CS_NUM_SKILLS)) { be += snprintf(buf+be, sizeof(buf)-be, " skill %d %d %" FMT64 "\n", c, *data, GetInt64_String(data+1)); data += 9; len -= 9; } else switch (c) { case CS_STAT_HP: be += snprintf(buf+be, sizeof(buf)-be, " hp %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_MAXHP: be += snprintf(buf+be, sizeof(buf)-be, " maxhp %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_SP: be += snprintf(buf+be, sizeof(buf)-be, " sp %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_MAXSP: be += snprintf(buf+be, sizeof(buf)-be, " maxsp %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_GRACE: be += snprintf(buf+be, sizeof(buf)-be, " grace %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_MAXGRACE: be += snprintf(buf+be, sizeof(buf)-be, " maxgrace %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_STR: be += snprintf(buf+be, sizeof(buf)-be, " str %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_INT: be += snprintf(buf+be, sizeof(buf)-be, " int %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_POW: be += snprintf(buf+be, sizeof(buf)-be, " pow %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_WIS: be += snprintf(buf+be, sizeof(buf)-be, " wis %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_DEX: be += snprintf(buf+be, sizeof(buf)-be, " dex %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_CON: be += snprintf(buf+be, sizeof(buf)-be, " con %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_CHA: be += snprintf(buf+be, sizeof(buf)-be, " cha %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_EXP: be += snprintf(buf+be, sizeof(buf)-be, " exp %d\n", GetInt_String(data)); data += 4; len -= 4; break; case CS_STAT_EXP64: be += snprintf(buf+be, sizeof(buf)-be, " exp %" FMT64 "\n", GetInt64_String(data)); data += 8; len -= 8; break; case CS_STAT_LEVEL: be += snprintf(buf+be, sizeof(buf)-be, " level %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_WC: be += snprintf(buf+be, sizeof(buf)-be, " wc %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_AC: be += snprintf(buf+be, sizeof(buf)-be, " ac %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_DAM: be += snprintf(buf+be, sizeof(buf)-be, " dam %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_ARMOUR: be += snprintf(buf+be, sizeof(buf)-be, " armour %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_SPEED: be += snprintf(buf+be, sizeof(buf)-be, " speed %d\n", GetInt_String(data)); data += 4; len -= 4; break; case CS_STAT_FOOD: be += snprintf(buf+be, sizeof(buf)-be, " food %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_WEAP_SP: be += snprintf(buf+be, sizeof(buf)-be, " weap_sp %d\n", GetInt_String(data)); data += 4; len -= 4; break; case CS_STAT_FLAGS: be += snprintf(buf+be, sizeof(buf)-be, " flags %d\n", GetShort_String(data)); data += 2; len -= 2; break; case CS_STAT_WEIGHT_LIM: be += snprintf(buf+be, sizeof(buf)-be, " weight_lim %d\n", GetInt_String(data)); data += 4; len -= 4; break; case CS_STAT_RANGE: { int rlen = *data; ++data; --len; be += snprintf(buf+be, sizeof(buf)-be, " range %*.*s\n", rlen, rlen, data); data += rlen; len -= rlen; break; } case CS_STAT_TITLE: { int rlen = *data; ++data; --len; be += snprintf(buf+be, sizeof(buf)-be, " title %*.*s\n", rlen, rlen, data); data += rlen; len -= rlen; break; } default: be += snprintf(buf+be, sizeof(buf)-be, " unknown %d %d bytes left\n", c, len); len = 0; } } } break; case MIXED: /* magicmap */ /* mapextended */ /* item1 item2 */ /* upditem */ /* image image2 */ /* face face1 face2 */ /* sound */ /* player */ /* * If we find that scripts need data from any of the above, we can * write special-case code as with stats. In the meantime, fall * through and just give a hex dump. Script writers should not * depend on that data format. */ case NODATA: default: { int be; int p; /*we may receive an null data, in which case len has no meaning*/ if (!data) len = 0; be = snprintf(buf, sizeof(buf), "watch %s %d bytes unparsed:", cmd, len); for (p = 0; p < len && p < 100; ++p) { be += snprintf(buf+be, sizeof(buf)-be, " %02x", data[p]); } be += snprintf(buf+be, sizeof(buf)-be, "\n"); } break; } write(scripts[i].out_fd, buf, strlen(buf)); } } } } void script_monitor(const char *command, int repeat, int must_send) { int i; /* For each script... */ for (i = 0; i < num_scripts; ++i) { /* Do we send the command? */ if (scripts[i].monitor) { char buf[1024]; snprintf(buf, sizeof(buf), "monitor %d %d %s\n", repeat, must_send, command); write(scripts[i].out_fd, buf, strlen(buf)); } } } void script_monitor_str(const char *command) { int i; /* For each script... */ for (i = 0; i < num_scripts; ++i) { /* Do we send the command? */ if (scripts[i].monitor) { char buf[1024]; snprintf(buf, sizeof(buf), "monitor %s\n", command); write(scripts[i].out_fd, buf, strlen(buf)); } } } void script_tell(const char *params) { int i; char *p; if (params == NULL) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Which script do you want to talk to?"); return; } p = strchr(params, ' '); if (p == NULL) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "What do you want to tell the script?"); return; } while (*p == ' ') { *p++ = '\0'; } /* Find the script */ i = script_by_name(params); if (i < 0) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "No such running script"); return; } /* Send the message */ write(scripts[i].out_fd, "scripttell ", 11); write(scripts[i].out_fd, p, strlen(p)); write(scripts[i].out_fd, "\n", 1); } static int script_by_name(const char *name) { int i; int l; if (name == NULL) { return(num_scripts == 1 ? 0 : -1); } /* Parse script number */ if (isdigit(*name)) { i = atoi(name); --i; if (i >= 0 && i < num_scripts) return(i); } /* Parse script name */ l = 0; while (name[l] && name[l] != ' ') ++l; for (i = 0; i < num_scripts; ++i) { if (strncmp(name, scripts[i].name, l) == 0) return(i); } return(-1); } static void script_dead(int i) { int w; /* Release resources */ #ifndef WIN32 close(scripts[i].in_fd); close(scripts[i].out_fd); #else CloseHandle(scripts[i].in_fd); CloseHandle(scripts[i].out_fd); CloseHandle(scripts[i].process); #endif free(scripts[i].name); free(scripts[i].params); for (w = 0; w < scripts[i].num_watch; ++w) free(scripts[i].watch[w]); free(scripts[i].watch); #ifndef WIN32 waitpid(-1, NULL, WNOHANG); #endif /* Move scripts with higher index numbers down one slot */ if (i < (num_scripts-1)) { memmove(&scripts[i], &scripts[i+1], sizeof(scripts[i])*(num_scripts-i-1)); } /* Update our count */ --num_scripts; } static void send_map(int i, int x, int y) { char buf[1024]; if (x < 0 || y < 0 || the_map.x <= x || the_map.y <= y) { snprintf(buf, sizeof(buf), "request map %d %d unknown\n", x, y); write(scripts[i].out_fd, buf, strlen(buf)); } /*** FIXME *** send more relevant data ***/ snprintf(buf, sizeof(buf), "request map %d %d %d %c %c %c %c" " smooth %d %d %d heads %d %d %d tails %d %d %d\n", x, y, the_map.cells[x][y].darkness, the_map.cells[x][y].need_update ? 'y' : 'n', the_map.cells[x][y].have_darkness ? 'y' : 'n', the_map.cells[x][y].need_resmooth ? 'y' : 'n', the_map.cells[x][y].cleared ? 'y' : 'n', the_map.cells[x][y].smooth[0], the_map.cells[x][y].smooth[1], the_map.cells[x][y].smooth[2], the_map.cells[x][y].heads[0].face, the_map.cells[x][y].heads[1].face, the_map.cells[x][y].heads[2].face, the_map.cells[x][y].tails[0].face, the_map.cells[x][y].tails[1].face, the_map.cells[x][y].tails[2].face ); write(scripts[i].out_fd, buf, strlen(buf)); } static void script_process_cmd(int i) { char cmd[1024]; char *c; int l; /* * Strip out just this one command */ for (l = 0; l < scripts[i].cmd_count; ++l) { if (scripts[i].cmd[l] == '\n') break; } ++l; memcpy(cmd, scripts[i].cmd, l); #ifndef WIN32 cmd[l-1] = 0; #else cmd[l-2] = 0; #endif if (l < scripts[i].cmd_count) { memmove(scripts[i].cmd, scripts[i].cmd+l, scripts[i].cmd_count-l); scripts[i].cmd_count -= l; } else { scripts[i].cmd_count = 0; } /* * Now the data in scripts[i] is ready for the next read. * We have a complete command in cmd[]. * Process it. */ /* * Script commands * * watch * unwatch * request * issue * localcmd [] * draw * monitor * unmonitor */ if (strncmp(cmd, "sync", 4) == 0) { c = cmd+4; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; scripts[i].sync_watch = -1; if (isdigit(*c)) { scripts[i].sync_watch = atoi(c); } script_sync(csocket.command_sent - csocket.command_received); /* in case we are already there */ } else if (strncmp(cmd, "watch", 5) == 0) { c = cmd+5; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; c = strdup(c); scripts[i].watch = realloc(scripts[i].watch, (scripts[i].num_watch+1)*sizeof(scripts[i].watch[1])); scripts[i].watch[scripts[i].num_watch] = c; ++scripts[i].num_watch; } else if (strncmp(cmd, "unwatch", 7) == 0) { int w; c = cmd+7; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; for (w = 0; w < scripts[i].num_watch; ++w) { if (strcmp(c, scripts[i].watch[w]) == 0) { free(scripts[i].watch[w]); while (w+1 < scripts[i].num_watch) { scripts[i].watch[w] = scripts[i].watch[w+1]; ++w; } --scripts[i].num_watch; break; } } } else if (strncmp(cmd, "request", 7) == 0) { c = cmd+7; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; if (!*c) return; /* bad request */ /* * Request information from the client's view of the world * (mostly defined in client.h) * * Valid requests: * * player Return the player's tag and title * range Return the type and name of the currently selected range attack * stat Return the specified stats * stat stats Return Str,Con,Dex,Int,Wis,Pow,Cha * stat cmbt Return wc,ac,dam,speed,weapon_sp * stat hp Return hp,maxhp,sp,maxsp,grace,maxgrace,food * stat xp Return level,xp,skill-1 level,skill-1 xp,... * stat resists Return resistances * stat paths Return spell paths: attuned, repelled, denied. * weight Return maxweight, weight * flags Return flags (fire, run) * items inv Return a list of items in the inventory, one per line * items actv Return a list of inventory items that are active, one per line * items on Return a list of items under the player, one per line * items cont Return a list of items in the open container, one per line * map pos Return the players x,y within the current map * map near Return the 3x3 grid of the map centered on the player * map all Return all the known map information * map Return the information about square x,y in the current map * skills Return a list of all skill names, one per line (see also stat xp) * spells Return a list of known spells, one per line */ if (strncmp(c, "player", 6) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request player %d %s\n", cpl.ob->tag, cpl.title); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "range", 5) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request range %s\n", cpl.range); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "weight", 5) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request weight %d %d\n", cpl.stats.weight_limit, (int)(cpl.ob->weight*1000)); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "stat ", 5) == 0) { c += 4; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; if (!*c) return; /* bad request */ /* * stat stats Return Str,Con,Dex,Int,Wis,Pow,Cha * stat cmbt Return wc,ac,dam,speed,weapon_sp * stat hp Return hp,maxhp,sp,maxsp,grace,maxgrace,food * stat xp Return level,xp,skill-1 level,skill-1 xp,... * stat resists Return resistances */ if (strncmp(c, "stats", 5) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request stat stats %d %d %d %d %d %d %d\n", cpl.stats.Str, cpl.stats.Con, cpl.stats.Dex, cpl.stats.Int, cpl.stats.Wis, cpl.stats.Pow, cpl.stats.Cha); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "cmbt", 4) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request stat cmbt %d %d %d %d %d\n", cpl.stats.wc, cpl.stats.ac, cpl.stats.dam, cpl.stats.speed, cpl.stats.weapon_sp); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "hp", 2) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request stat hp %d %d %d %d %d %d %d\n", cpl.stats.hp, cpl.stats.maxhp, cpl.stats.sp, cpl.stats.maxsp, cpl.stats.grace, cpl.stats.maxgrace, cpl.stats.food); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "xp", 2) == 0) { char buf[1024]; int s; snprintf(buf, sizeof(buf), "request stat xp %d %" FMT64, cpl.stats.level, cpl.stats.exp); write(scripts[i].out_fd, buf, strlen(buf)); for (s = 0; s < MAX_SKILL; ++s) { snprintf(buf, sizeof(buf), " %d %" FMT64, cpl.stats.skill_level[s], cpl.stats.skill_exp[s]); write(scripts[i].out_fd, buf, strlen(buf)); } write(scripts[i].out_fd, "\n", 1); } else if (strncmp(c, "resists", 7) == 0) { char buf[1024]; int s; snprintf(buf, sizeof(buf), "request stat resists"); write(scripts[i].out_fd, buf, strlen(buf)); for (s = 0; s < 30; ++s) { snprintf(buf, sizeof(buf), " %d", cpl.stats.resists[s]); write(scripts[i].out_fd, buf, strlen(buf)); } write(scripts[i].out_fd, "\n", 1); } else if (strncmp(c, "paths", 2) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request stat paths %d %d %d\n", cpl.stats.attuned, cpl.stats.repelled, cpl.stats.denied); write(scripts[i].out_fd, buf, strlen(buf)); } } else if (strncmp(c, "flags", 5) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request flags %d %d %d %d\n", cpl.stats.flags, cpl.fire_on, cpl.run_on, cpl.no_echo); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "items ", 6) == 0) { c += 5; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; if (!*c) return; /* bad request */ /* * items inv Return a list of items in the inventory, one per line * items actv Return a list of inventory items that are active, one per line * items on Return a list of items under the player, one per line * items cont Return a list of items in the open container, one per line */ if (strncmp(c, "inv", 3) == 0) { char *buf; item *it; for (it = cpl.ob->inv; it; it = it->next) { script_send_item(i, "request items inv ", it); } buf = "request items inv end\n"; write(scripts[i].out_fd, buf, strlen(buf)); } if (strncmp(c, "actv", 4) == 0) { char *buf; item *it; for (it = cpl.ob->inv; it; it = it->next) { if (it->applied) script_send_item(i, "request items actv ", it); } buf = "request items actv end\n"; write(scripts[i].out_fd, buf, strlen(buf)); } if (strncmp(c, "on", 2) == 0) { char *buf; item *it; for (it = cpl.below->inv; it; it = it->next) { script_send_item(i, "request items on ", it); } buf = "request items on end\n"; write(scripts[i].out_fd, buf, strlen(buf)); } if (strncmp(c, "cont", 4) == 0) { char *buf; item *it; if (cpl.container) { for (it = cpl.container->inv; it; it = it->next) { script_send_item(i, "request items cont ", it); } } buf = "request items cont end\n"; write(scripts[i].out_fd, buf, strlen(buf)); } } else if (strncmp(c, "map ", 4) == 0) { int x, y; c += 3; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; if (!*c) return; /* bad request */ /* * map pos Return the players x,y within the current map * map near Return the 3x3 grid of the map centered on the player * map all Return all the known map information * map Return the information about square x,y in the current map */ if (strncmp(c, "pos", 3) == 0) { char buf[1024]; snprintf(buf, sizeof(buf), "request map pos %d %d\n", pl_pos.x+use_config[CONFIG_MAPWIDTH]/2, pl_pos.y+use_config[CONFIG_MAPHEIGHT]/2); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "near", 4) == 0) { for (y = 0; y < 3; ++y) for (x = 0; x < 3; ++x) send_map(i, x+pl_pos.x+use_config[CONFIG_MAPWIDTH]/2-1, y+pl_pos.y+use_config[CONFIG_MAPHEIGHT]/2-1 ); } else if (strncmp(c, "all", 3) == 0) { char buf[1024]; for (y = 0; y < the_map.y; ++y) for (x = 0; x < the_map.x; ++x) send_map(i, x, y); snprintf(buf, sizeof(buf), "request map end\n"); write(scripts[i].out_fd, buf, strlen(buf)); } else { while (*c && !isdigit(*c)) ++c; if (!*c) return; /* No x specified */ x = atoi(c); while (*c && *c != ' ') ++c; while (*c && !isdigit(*c)) ++c; if (!*c) return; /* No y specified */ y = atoi(c); send_map(i, x, y); } } else if (strncmp(c, "skills", 6) == 0) { char buf[1024]; int s; for (s = 0; s < CS_NUM_SKILLS; s++) { if (skill_names[s]) { sprintf(buf, "request skills %d %s\n", CS_STAT_SKILLINFO + s, skill_names[s]); write(scripts[i].out_fd, buf, strlen(buf)); } } sprintf(buf, "request skills end\n"); write(scripts[i].out_fd, buf, strlen(buf)); } else if (strncmp(c, "spells", 6) == 0) { char buf[1024]; Spell *spell; for (spell = cpl.spelldata; spell; spell = spell->next) { sprintf(buf, "request spells %d %d %d %d %d %d %d %d %s\n", spell->tag, spell->level, spell->sp, spell->grace, spell->skill_number, spell->path, spell->time, spell->dam, spell->name); write(scripts[i].out_fd, buf, strlen(buf)); } sprintf(buf, "request spells end\n"); write(scripts[i].out_fd, buf, strlen(buf)); } else { char buf[1024]; snprintf(buf, sizeof(buf), "Script %d %s malfunction; unimplemented request:", i+1, scripts[i].name); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, cmd); } } else if (strncmp(cmd, "issue", 5) == 0) { int repeat; int must_send; c = cmd+5; while (*c && *c == ' ') ++c; if (*c && (isdigit(*c) || *c == '-')) { /* repeat specified; use send_command() */ repeat = atoi(c); while (*c && *c != ' ') ++c; while (*c && !isdigit(*c) && *c != '-') ++c; if (!*c) return; /* No must_send specified */ must_send = atoi(c); while (*c && *c != ' ') ++c; if (!*c) return; /* No command specified */ while (*c == ' ') ++c; if (repeat != -1) { int r; r = send_command(c, repeat, must_send); if (r != 1) { char buf[1024]; snprintf(buf, sizeof(buf), "Script %d %s malfunction; command not sent", i+1, scripts[i].name); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, cmd); } } } else { c = cmd+5; while (*c && *c != ' ') ++c; while (*c == ' ') ++c; /* * Check special cases: "mark " or "lock " */ if (strncmp(c, "mark", 4) == 0) { int tag; SockList sl; uint8 buf[MAX_BUF]; c += 4; while (*c && !isdigit(*c)) ++c; if (!*c) return; /* No tag specified */ tag = atoi(c); SockList_Init(&sl, buf); SockList_AddString(&sl, "mark "); SockList_AddInt(&sl, tag); SockList_Send(&sl, csocket.fd); } else if (strncmp(c, "lock", 4) == 0) { int tag, locked; SockList sl; uint8 buf[MAX_BUF]; c += 4; while (*c && !isdigit(*c)) ++c; if (!*c) return; /* No state specified */ locked = atoi(c); while (*c && *c != ' ') ++c; while (*c && !isdigit(*c)) ++c; if (!*c) return; /* No tag specified */ tag = atoi(c); SockList_Init(&sl, buf); SockList_AddString(&sl, "lock "); SockList_AddChar(&sl, locked); SockList_AddInt(&sl, tag); SockList_Send(&sl, csocket.fd); } else { cs_print_string(csocket.fd, "%s", c); } } } else if (strncmp(cmd, "localcmd", 8) == 0){ char *param; c = cmd+8; while (*c == ' ') c++; param = c; while ((*param != '\0') && (*param != ' ')) param++; if (*param == ' '){ *param = '\0'; param++; } else param = NULL; if (!handle_local_command(c, param)){ char buf[1024]; snprintf(buf, sizeof(buf), "Script %s malfunction; localcmd not understood", scripts[i].name); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); snprintf(buf, sizeof(buf), "Script <>", c, (param == NULL) ? "" : param); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); } } else if (strncmp(cmd, "draw", 4) == 0) { int color; c = cmd+4; while (*c && !isdigit(*c)) ++c; if (!*c) return; /* No color specified */ color = atoi(c); while (*c && *c != ' ') ++c; if (!*c) return; /* No message specified */ while (*c == ' ') ++c; draw_ext_info(color, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, c); } else if (strncmp(cmd, "monitor", 7) == 0) scripts[i].monitor = 1; else if (strncmp(cmd, "unmonitor", 9) == 0) scripts[i].monitor = 0; else { char buf[1024]; snprintf(buf, sizeof(buf), "Script %d %s malfunction; invalid command:", i+1, scripts[i].name); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, cmd); } } /* * script_send_item() * * Send one line to the script with item information. * * A header string is passed in. The format is: * *
tag num weight flags type name * * flags are a bitmask: * magic, cursed, damned, unpaid, locked, applied, open, was_open, inv_updated * 256 128 64 32 16 8 4 2 1 */ static void script_send_item(int i, const char *head, const item *it) { char buf[4096]; int flags; flags = it->magical; flags = (flags<<1)|it->cursed; flags = (flags<<1)|it->damned; flags = (flags<<1)|it->unpaid; flags = (flags<<1)|it->locked; flags = (flags<<1)|it->applied; flags = (flags<<1)|it->open; flags = (flags<<1)|it->was_open; flags = (flags<<1)|it->inv_updated; snprintf(buf, sizeof(buf), "%s%d %d %d %d %d %s\n", head, it->tag, it->nrof, (int)(it->weight*1000+0.5), flags, it->type, it->d_name); write(scripts[i].out_fd, buf, strlen(buf)); } #endif /* CPROTO */ crossfire-client-1.70.0/common/mapdata.h0000644000014500000120000001150111731277011015024 00000000000000/* $Id: mapdata.h 12149 2009-08-20 02:11:28Z kbulgrien $ */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/mapdata.h * */ #ifndef MAP_H #define MAP_H #include "client-types.h" /** The protocol supports 10 layers, so set MAXLAYERS accordingly. */ #define MAXLAYERS 10 /** * Maximum size of view area a server could support. */ #define MAX_VIEW 64 /* Map1 only used 3 layers. Trying to use 10 seems to cause * problems for that code. */ #define MAP1_LAYERS 3 struct MapCellLayer { sint16 face; sint8 size_x; sint8 size_y; /* Link into animation information. * animation is provided to us from the server in the map2 command. * animation_speed is also provided. * animation_left is how many ticks until animation changes - generated * by client. * animation_phase is current phase. */ sint16 animation; uint8 animation_speed; uint8 animation_left; uint8 animation_phase; }; /** The heads[] in the mapcell is used for single part objects * or the head piece for multipart. The easiest way to think about * it is that the heads[] contains the map information as specifically * sent from the server. For the heads value, the size_x and size_y * represent how many spaces (up and to the left) that image extends * into. * The tails are values that the client fills in - if we get * a big head value, we fill in the tails value so that the display * logic can easily redraw one space. In this case, the size_ values * are offsets that point to the head. In this way, the draw logic * can look at the size of the image, look at these values, and * know what portion of it to draw. */ struct MapCell { struct MapCellLayer heads[MAXLAYERS]; struct MapCellLayer tails[MAXLAYERS]; uint16 smooth[MAXLAYERS]; uint8 darkness; /* darkness: 0=fully illuminated, 255=pitch black */ uint8 need_update:1; /* set if tile should be redrawn */ uint8 have_darkness:1; /* set if darkness information was set */ uint8 need_resmooth:1; /* same has need update but for smoothing only */ uint8 cleared:1; /* If set, this is a fog cell. */ }; struct Map { /* Store size of map so we know if map_size has changed * since the last time we allocated this; */ int x; int y; struct MapCell **cells; }; extern struct Map the_map; /** * Initializes the module. Allocates memory for the_map. This functions must be * called before any other function is used. */ void mapdata_init(void); /** * Resets all stored information. */ void mapdata_reset(void); /** * Sets the current display size. Must be called whenever a new display size * was negotiated with the server. */ void mapdata_set_size(int viewx, int viewy); /** * Scrolls the map view. Must be called whenever a map_scroll command was * received from the server. */ void mapdata_scroll(int dx, int dy); /** * Clears the map view. Must be called whenever a newmap command was received * from the server. */ void mapdata_newmap(void); /** * Checks whether the given coordinates are within the current display size (as * set by mapdata_set_size). */ int mapdata_is_inside(int x, int y); /** * Returns the face to display at a given location. This function returns the * "head" information, i.e. the face information sent by the server. */ sint16 mapdata_face(int x, int y, int layer); /** * Returns the face to display at a given location. This function returns the * "tail" information, i.e. big faces expanded by the client. * * *ww and *hh return the offset of the current tile relative to the head; * 0 <= *ww < (width of face), 0 <= *hh < (height of face). * * When drawing the map view, this function must be used instead than a direct * access to the_map.cells[]. This is because the_map.cells[] eventually still * contains obsolete (fog of war) big face information; this function detects * and clears such faces. */ sint16 mapdata_bigface(int x, int y, int layer, int *ww, int *hh); #endif crossfire-client-1.70.0/common/player.c0000644000014500000120000001726411731277011014720 00000000000000const char * const rcsid_common_player_c = "$Id: player.c 12149 2009-08-20 02:11:28Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/player.c * Handles various player related functions. This includes both things that * operate on the player item, cpl structure, or various commands that the * player issues. * * Most of the handling of commands from the client to server (see commands.c * for server->client) is handled here. * * Most of the work for sending messages to the server is done here. Again, * most of these appear self explanatory. Most send a bunch of commands like * apply, examine, fire, run, etc. This looks like it was done by Mark to * remove the old keypress stupidity I used. */ #include #include #include /* This translates the numeric direction id's into the actual direction * commands. This lets us send the actual command (ie, 'north'), which * makes handling on the server side easier. */ const char *const directions[9] = {"stay", "north", "northeast", "east", "southeast", "south","southwest", "west", "northwest"}; /* * Initialiazes player item, information is received from server */ void new_player (long tag, char *name, long weight, long face) { Spell *spell, *spnext; cpl.ob->tag = tag; cpl.ob->nrof = 1; copy_name (cpl.ob->d_name, name); cpl.ob->weight = (float) weight / 1000; cpl.ob->face = face; if (cpl.spelldata) { for (spell = cpl.spelldata; spell; spell = spnext) { spnext = spell->next; free(spell); } cpl.spelldata = NULL; } } void look_at(int x, int y) { cs_print_string(csocket.fd, "lookat %d %d", x, y); } void client_send_apply (int tag) { cs_print_string(csocket.fd, "apply %d", tag); } void client_send_examine (int tag) { cs_print_string(csocket.fd, "examine %d", tag); } /* Requests nrof objects of tag get moved to loc. */ void client_send_move (int loc, int tag, int nrof) { cs_print_string(csocket.fd, "move %d %d %d", loc, tag, nrof); } void move_player(int dir) { /* Should we perhaps use the real repeat count here? */ send_command(directions[dir], -1, SC_NORMAL); } /* Fire & Run code. The server handles repeating of these actions, so * we only need to send a run or fire command for a particular direction * once - we use the drun and dfire to keep track if we need to send * the full command. */ static int drun=-1, dfire=-1; /* Fires in a specified direction. Note that direction 0 is a valid * case - the fire is centered on the player. */ void stop_fire(void) { if (cpl.input_state != Playing) return; dfire |= 0x100; } void clear_fire_run(void) { if ((dfire!=-1) && (dfire & 0x100)) { send_command("fire_stop", -1, SC_FIRERUN); dfire=-1; } if ((drun!=-1) && (drun & 0x100)) { send_command("run_stop", -1, SC_FIRERUN); drun=-1; } } void clear_fire(void) { if (dfire!=-1) { send_command("fire_stop", -1, SC_FIRERUN); dfire=-1; } } void clear_run(void) { if (drun!=-1) { send_command("run_stop", -1, SC_FIRERUN); drun=-1; } } void fire_dir(int dir) { char buf[MAX_BUF]; if (cpl.input_state != Playing) return; if (dir!= dfire) { snprintf(buf, sizeof(buf), "fire %d", dir); if (send_command(buf, cpl.count, SC_NORMAL)) { dfire=dir; cpl.count=0; } } else { dfire &= 0xff; /* Mark it so that we need a stop_fire */ } } void stop_run(void) { send_command("run_stop", -1, SC_FIRERUN); drun |= 0x100; } void run_dir(int dir) { char buf[MAX_BUF]; if (dir!=drun) { snprintf(buf, sizeof(buf), "run %d", dir); if (send_command(buf, -1, SC_NORMAL)) drun=dir; } else { drun &= 0xff; } } /* This should be used for all 'command' processing. Other functions should * call this so that proper windowing will be done. * command is the text command, repeat is a count value, or -1 if none * is desired and we don't want to reset the current count. * must_send means we must send this command no matter what (ie, it is * an administrative type of command like fire_stop, and failure to send * it will cause definate problems * return 1 if command was sent, 0 if not sent. */ int send_command(const char *command, int repeat, int must_send) { static char last_command[MAX_BUF]=""; script_monitor(command,repeat,must_send); if (cpl.input_state==Reply_One) { LOG(LOG_ERROR,"common::send_command","Wont send command '%s' - since in reply mode!", command); cpl.count=0; return 0; } /* Does the server understand 'ncom'? If so, special code */ if (csocket.cs_version >= 1021) { int commdiff=csocket.command_sent - csocket.command_received; if (commdiff<0) commdiff +=256; /* if too many unanswered commands, not a must send, and command is * the same, drop it */ if (commdiff>use_config[CONFIG_CWINDOW] && !must_send && !strcmp(command, last_command)) { if (repeat!=-1) cpl.count=0; return 0; #if 0 /* Obnoxious warning message we don't need */ fprintf(stderr,"Wont send command %s - window oversized %d %d\n", command, csocket.command_sent, csocket.command_received); #endif } else { SockList sl; uint8 buf[MAX_BUF]; /* Don't want to copy in administrative commands */ if (!must_send) strcpy(last_command, command); csocket.command_sent++; csocket.command_sent &= 0xff; /* max out at 255 */ SockList_Init(&sl, buf); SockList_AddString(&sl, "ncom "); SockList_AddShort(&sl, csocket.command_sent); SockList_AddInt(&sl, repeat); SockList_AddString(&sl, command); SockList_Send(&sl, csocket.fd); } } else { cs_print_string(csocket.fd, "command %d %s", repeat,command); } if (repeat!=-1) cpl.count=0; return 1; } void CompleteCmd(unsigned char *data, int len) { if (len !=6) { LOG(LOG_ERROR,"common::CompleteCmd","Invalid length %d - ignoring", len); return; } csocket.command_received = GetShort_String(data); csocket.command_time = GetInt_String(data+2); script_sync(csocket.command_sent - csocket.command_received); } /* This does special processing on the 'take' command. If the * player has a container open, we want to specifiy what object * to move from that since we've sorted it. command is * the command as tped, cpnext is any optional params. */ void command_take (const char *command, const char *cpnext) { /* If the player has specified optional data, or the player * does not have a container open, just issue the command * as normal */ if (cpnext || cpl.container == NULL) send_command(command, cpl.count, 0); else { if (cpl.container->inv == NULL) draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "There is nothing in the container to move"); else cs_print_string(csocket.fd,"move %d %d %d", cpl.ob->tag, cpl.container->inv->tag, cpl.count); } } crossfire-client-1.70.0/common/newsocket.c0000644000014500000120000002125611731277011015422 00000000000000const char * const rcsid_common_newsocket_c = "$Id: newsocket.c 13947 2010-10-01 02:24:23Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/newsocket.c * Made this either client or server specific for 0.95.2 release - getting too * complicated to keep them the same, and the common code is pretty much * frozen now. */ #include #include #include #include #include #include /* The LOG function is normally part of the libcross. If client compile, * we need to supply something since some of the common code calls this. */ /*void LOG (int logLevel, char *format, ...) { #ifdef DEBUG va_list ap; va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); #endif }*/ #define llevDebug LOG_DEBUG #define llevError LOG_ERROR /** * Write at least a specified amount of data in a buffer to the socket unless * an error occurs. * * @param fd Socket to write to. * @param buf Buffer with data to write. * @param len * @return */ static int write_socket(int fd, const unsigned char *buf, int len) { int amt=0; const unsigned char *pos=buf; /* If we manage to write more than we wanted, take it as a bonus */ while (len>0) { do { #ifndef WIN32 amt=write(fd, pos, len); } while ((amt<0) && ((errno==EINTR) || (errno=EAGAIN))); #else amt=send(fd, pos, len, 0); } while ((amt<0) && (WSAGetLastError()==EINTR)); #endif if (amt < 0) { /* We got an error */ LOG(llevError,"write_socket","New socket (fd=%d) write failed: %s.\n", fd, strerror(errno)); return -1; } if (amt==0) { LOG(llevError,"write_socket","Write_To_Socket: No data written out.\n"); } len -= amt; pos += amt; } return 0; } /** * * @param sl * @param buf */ void SockList_Init(SockList *sl, uint8 *buf) { sl->len=0; sl->buf=buf + 2; /* reserve two bytes for total length */ } /** * * @param sl * @param c */ void SockList_AddChar(SockList *sl, char c) { sl->buf[sl->len++]=c; } /** * * @param sl * @param data */ void SockList_AddShort(SockList *sl, uint16 data) { sl->buf[sl->len++] = (data>>8)&0xff; sl->buf[sl->len++] = data & 0xff; } /** * * @param sl * @param data */ void SockList_AddInt(SockList *sl, uint32 data) { sl->buf[sl->len++] = (data>>24)&0xff; sl->buf[sl->len++] = (data>>16)&0xff; sl->buf[sl->len++] = (data>>8)&0xff; sl->buf[sl->len++] = data & 0xff; } /** * * @param sl * @param str */ void SockList_AddString(SockList *sl, const char *str) { int len = strlen(str); if (sl->len + len > MAX_BUF-2) len = MAX_BUF-2 - sl->len; memcpy(sl->buf + sl->len, str, len); sl->len += len; } /** * Send data from a socklist to the socket. * * @param sl * @param fd */ int SockList_Send(SockList *sl, int fd) { sl->buf[-2] = sl->len / 256; sl->buf[-1] = sl->len % 256; return write_socket(fd, sl->buf-2, sl->len+2); } /** * * @param data * @return */ char GetChar_String(const unsigned char *data) { return (data[0]); } /** * The reverse of SockList_AddInt, but on strings instead. Same for the * GetShort, but for 16 bits. * * @param data * @return */ int GetInt_String(const unsigned char *data) { return ((data[0]<<24) + (data[1]<<16) + (data[2]<<8) + data[3]); } /** * The reverse of SockList_AddInt, but on strings instead. Same for the * GetShort, but for 64 bits * * @param data * @return */ sint64 GetInt64_String(const unsigned char *data) { #ifdef WIN32 return (((sint64)data[0]<<56) + ((sint64)data[1]<<48) + ((sint64)data[2]<<40) + ((sint64)data[3]<<32) + ((sint64)data[4]<<24) + ((sint64)data[5]<<16) + ((sint64)data[6]<<8) + (sint64)data[7]); #else return (((uint64)data[0]<<56) + ((uint64)data[1]<<48) + ((uint64)data[2]<<40) + ((uint64)data[3]<<32) + ((uint64)data[4]<<24) + (data[5]<<16) + (data[6]<<8) + data[7]); #endif } /** * * @param data * @return */ short GetShort_String(const unsigned char *data) { return ((data[0]<<8)+data[1]); } /** * Reads from the socket and puts data into a socklist. The only processing * done is to remove the initial size value. An assumption made is that the * buffer is at least 2 bytes long. * * @param fd Socket to read from. * @param sl Pointer to a buffer to put the read data. * @param len Size of the buffer allocated to accept data. * @return Return true if we think we have a full packet, 0 if we have * a partial packet, or -1 if an error occurred. */ int SockList_ReadPacket(int fd, SockList *sl, int len) { int stat,toread,readsome=0; /* We already have a partial packet */ if (sl->len<2) { #ifndef WIN32 do { stat=read(fd, sl->buf + sl->len, 2-sl->len); } while ((stat==-1) && (errno==EINTR)); #else do { stat=recv(fd, sl->buf + sl->len, 2-sl->len, 0); } while ((stat==-1) && (WSAGetLastError()==EINTR)); #endif if (stat<0) { /* In non blocking mode, EAGAIN is set when there is no data * available. */ #ifndef WIN32 if (errno!=EAGAIN && errno!=EWOULDBLOCK) #else if (WSAGetLastError()!=EAGAIN && WSAGetLastError()!=WSAEWOULDBLOCK) #endif { perror("ReadPacket got an error."); LOG(llevDebug,"SockList_ReadPacket","ReadPacket got error %d, returning -1",errno); return -1; } return 0; /*Error */ } if (stat==0) return -1; sl->len += stat; #ifdef CS_LOGSTATS cst_tot.ibytes += stat; cst_lst.ibytes += stat; #endif if (stat<2) return 0; /* Still don't have a full packet */ readsome=1; } /* Figure out how much more data we need to read. Add 2 from the * end of this - size header information is not included. */ toread = 2+(sl->buf[0] << 8) + sl->buf[1] - sl->len; if ((toread + sl->len) > len) { LOG(llevError,"SockList_ReadPacket","Want to read more bytes than will fit in buffer.\n"); /* return error so the socket is closed */ return -1; } do { #ifndef WIN32 do { stat = read(fd, sl->buf+ sl->len, toread); } while ((stat<0) && (errno==EINTR)); #else do { stat = recv(fd, sl->buf+ sl->len, toread, 0); } while ((stat<0) && (WSAGetLastError()==EINTR)); #endif if (stat<0) { #ifndef WIN32 if (errno!=EAGAIN && errno!=EWOULDBLOCK) #else if (WSAGetLastError()!=EAGAIN && WSAGetLastError()!=WSAEWOULDBLOCK) #endif { perror("ReadPacket got an error."); LOG(llevDebug,"SockList_ReadPacket","ReadPacket got error %d, returning 0",errno); } return 0; /*Error */ } if (stat==0) return -1; sl->len += stat; #ifdef CS_LOGSTATS cst_tot.ibytes += stat; cst_lst.ibytes += stat; #endif toread -= stat; if (toread==0) return 1; if (toread < 0) { LOG(llevError,"SockList_ReadPacket","SockList_ReadPacket: Read more bytes than desired."); return 1; } } while (toread>0); return 0; } /** * Send a printf-formatted packet to the socket. * * @param fd The socket to send to. * @param str The printf format string. * @param ... An optional list of values to fulfill the format string. */ int cs_print_string(int fd, const char *str, ...) { va_list args; SockList sl; uint8 buf[MAX_BUF]; SockList_Init(&sl, buf); va_start(args, str); sl.len += vsprintf((char*)sl.buf + sl.len, str, args); va_end(args); script_monitor_str((char*)sl.buf); return SockList_Send(&sl, fd); } crossfire-client-1.70.0/common/script_lua.h0000644000014500000120000000177211731277011015573 00000000000000/* Crossfire client, a client program for the crossfire program. Copyright (C) 2006 Mark Wedel & Crossfire Development Team This source file also Copyright (C) 2006 Nicolas Weeger 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/script_lua.h * */ crossfire-client-1.70.0/common/p_cmd.h0000644000014500000120000000722111731277011014503 00000000000000/* Crossfire client, a client program for the crossfire program. Copyright (C) 2005 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/p_cmd.h * Includes and prototypes for p_cmd.c for player-commands like '/magicmap'. * Basically stolen piecemeal from the server branch. */ #ifndef PCMD_H #define PCMD_H /* * List of commands. */ typedef void (*CommFunc)(const char *params); /* Cargo-cult from the above. Every entry in the table * complains about a type mismatch, too. :( */ typedef const char * (*CommHelpFunc)(void); /* This is used for displaying lists of commands. */ typedef enum { COMM_CAT_MISC = 0, /* Commands which can't be better sorted. */ COMM_CAT_HELP = 1, COMM_CAT_INFO = 2, /* A tad general. */ COMM_CAT_SETUP = 3, /* showicon, showweight, bind, commandkey... */ COMM_CAT_SCRIPT = 4, /* The four commands for the nifty-scripts. */ COMM_CAT_DEBUG = 5, /* Debugging commands - hide these? */ } CommCat; /* Retrieves a Title Cased name for the above categories. */ const char * get_category_name(CommCat cat); typedef struct { /* global list's structure */ const char * name; /* Name of command - parsed against this. */ CommCat cat; /* What category the command is in. Used for sorting on display. */ CommFunc dofunc; /* If name is matched, this is called. */ /* TODO Too specific? *sigh* Resolving *that* issue gives me a headache. */ CommHelpFunc helpfunc;/* Returns a string documenting the command. - the *really* long desc. */ const char * desc; /* One-liner describing command. (Man page subtitle, anyone?) */ } ConsoleCommand; extern const ConsoleCommand * find_command(const char * cmd); /* Define this to let the toolkit give an array of toolkit-specific commands. */ #undef TOOLKIT_COMMANDS #ifdef TOOLKIT_COMMANDS extern ConsoleCommand ToolkitCommands[]; extern const int ToolkitCommandsSize; /* Not defined in common, called at the very top of init_commands() so a toolkit can fill ToolkitCommands and ToolkitCommandsSize in. */ extern void init_toolkit_commands(void); #endif /** * Fills some internal arrays. Run this on startup, but not before filling in * ToolkitCommands and ToolkitCommandsSize. */ extern void init_commands(void); extern int get_num_commands(void); /** * Returns a pointer to the head of an array of ConsoleCommands * sorted by category, then by name. * * It's num_commands long. */ ConsoleCommand ** get_cat_sorted_commands(void); /* Used only for searching the commands list for help, er. ... Oh, well. */ extern const ConsoleCommand * find_command(const char * cmd); /* This searches ClientCommands; if there's nothing in there, it goes to the server. * With some exceptions. :( */ extern void extended_command(const char *ocommand); extern const char * complete_command(const char * ocommand); extern int handle_local_command(const char* cp, const char * cpnext); #endif crossfire-client-1.70.0/common/shared/0000755000014500000120000000000011731277217014604 500000000000000crossfire-client-1.70.0/common/shared/newclient.h0000644000014500000120000007175211731277047016702 00000000000000/* * static char *rcsid_newclient_h = * "$Id: newclient.h 14013 2010-10-21 06:16:43Z mwedel $"; */ /* CrossFire, A Multiplayer game for X-windows Copyright (C) 2002,2006,2010 Mark Wedel & Crossfire Development Team Copyright (C) 1992 Frank Tore Johansen 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., 675 Mass Ave, Cambridge, MA 02139, USA. The authors can be reached via e-mail at crossfire-devel@real-time.com */ /** * @file * Defines various flags that both the new client and new server use. These * should never be changed, only expanded. Changing them will likely cause all * old clients to not work properly. While called newclient, it is used by * both the client and server to keep some values the same. * * Name format is CS_(command)_(flag) * CS = Client/Server. * (command) is protocol command, ie ITEM * (flag) is the flag name */ #ifndef NEWCLIENT_H #define NEWCLIENT_H /** * Maximum size of a packet the client expects to get and that the server can * send. Using a buffer of this size allows the client to avoid constant * allocation and deallocation of the same buffer over and over again (at the * cost of using extra memory). This also makes the code simpler. The size * is big enough to receive any valid packet: 2 bytes for length, 65535 for * maximum packet size, 1 for a trailing null character. */ #define MAXSOCKBUF (2+65535+1) /** * How much the x,y coordinates in the map2 are off from actual upper left * corner. Necessary for light sources that may be off the edge of the * visible map. */ #define MAP2_COORD_OFFSET 15 /** * @defgroup MAP2_TYPE_xxx Type values present in map2 commands. * The different type values that may be present in a map2 command. These are * described in the protocol entry in more detail. These values are sent in * the bottom 5 bits of their byte, the top 3 are for the length of the data * that is sent. */ /*@{*/ #define MAP2_TYPE_CLEAR 0x0 #define MAP2_TYPE_DARKNESS 0x1 /* * These next two are not used presently, but the numbers are set aside for * when support is added. * * #define MAP2_TYPE_SOUND 0x2 * #define MAP2_TYPE_LIGHTSOURCE 0x3 */ /*@}*/ #define MAP2_LAYER_START 0x10 /** * Encodes a (x, y) pair suitable for map2 parameters. The coordinates must be * between [-MAP2_COORD_OFFSET..63-MAP2_COORD_OFFSET]. The flags value must be * between [0..15]. * * @param x the x-coordinate * @param y the y-coordinate * @param flags the flags value */ #define MAP2_COORD_ENCODE(x, y, flags) ((((x)+MAP2_COORD_OFFSET)&0x3f)<<10|(((y)+MAP2_COORD_OFFSET)&0x3f)<<4|(flags&0x0f)) #define CS_QUERY_YESNO 0x1 /**< Yes/no question. */ #define CS_QUERY_SINGLECHAR 0x2 /**< Single character response expected. */ #define CS_QUERY_HIDEINPUT 0x4 /**< Hide input being entered. */ #define CS_SAY_NORMAL 0x1 /**< Normal say command. */ #define CS_SAY_SHOUT 0x2 /**< Text is shouted. */ #define CS_SAY_GSAY 0x4 /**< Text is group say command. */ /** * @defgroup FLOAT_xxx FLOAT_xxx multipliers for changing floats to int. * and vice versa. */ /*@{*/ #define FLOAT_MULTI 100000 /**< Integer representation (float to int). */ #define FLOAT_MULTF 100000.0 /**< Float for going from int to float. */ /*@} FLOAT_xxx */ /** * @defgroup CS_STAT_xxx CS_STAT_xxx IDs for character statistics. */ /*@{*/ #define CS_STAT_HP 1 #define CS_STAT_MAXHP 2 #define CS_STAT_SP 3 #define CS_STAT_MAXSP 4 #define CS_STAT_STR 5 #define CS_STAT_INT 6 #define CS_STAT_WIS 7 #define CS_STAT_DEX 8 #define CS_STAT_CON 9 #define CS_STAT_CHA 10 #define CS_STAT_EXP 11 /**< No longer used */ #define CS_STAT_LEVEL 12 #define CS_STAT_WC 13 #define CS_STAT_AC 14 #define CS_STAT_DAM 15 #define CS_STAT_ARMOUR 16 #define CS_STAT_SPEED 17 #define CS_STAT_FOOD 18 #define CS_STAT_WEAP_SP 19 #define CS_STAT_RANGE 20 #define CS_STAT_TITLE 21 #define CS_STAT_POW 22 #define CS_STAT_GRACE 23 #define CS_STAT_MAXGRACE 24 #define CS_STAT_FLAGS 25 #define CS_STAT_WEIGHT_LIM 26 #define CS_STAT_EXP64 28 #define CS_STAT_SPELL_ATTUNE 29 #define CS_STAT_SPELL_REPEL 30 #define CS_STAT_SPELL_DENY 31 #define CS_STAT_RACE_STR 32 #define CS_STAT_RACE_INT 33 #define CS_STAT_RACE_WIS 34 #define CS_STAT_RACE_DEX 35 #define CS_STAT_RACE_CON 36 #define CS_STAT_RACE_CHA 37 #define CS_STAT_RACE_POW 38 #define CS_STAT_BASE_STR 39 #define CS_STAT_BASE_INT 40 #define CS_STAT_BASE_WIS 41 #define CS_STAT_BASE_DEX 42 #define CS_STAT_BASE_CON 43 #define CS_STAT_BASE_CHA 44 #define CS_STAT_BASE_POW 45 #define CS_STAT_APPLIED_STR 46 /**< STR changes from gear or skills. */ #define CS_STAT_APPLIED_INT 47 /**< INT changes from gear or skills. */ #define CS_STAT_APPLIED_WIS 48 /**< WIS changes from gear or skills. */ #define CS_STAT_APPLIED_DEX 49 /**< DEX changes from gear or skills. */ #define CS_STAT_APPLIED_CON 50 /**< CON changes from gear or skills. */ #define CS_STAT_APPLIED_CHA 51 /**< CHA changes from gear or skills. */ #define CS_STAT_APPLIED_POW 52 /**< POW changes from gear or skills. */ #define CS_STAT_RESIST_START 100 /**< Start of resistances (inclusive) */ #define CS_STAT_RESIST_END 117 /**< End of resistances (inclusive) */ #define CS_STAT_RES_PHYS 100 #define CS_STAT_RES_MAG 101 #define CS_STAT_RES_FIRE 102 #define CS_STAT_RES_ELEC 103 #define CS_STAT_RES_COLD 104 #define CS_STAT_RES_CONF 105 #define CS_STAT_RES_ACID 106 #define CS_STAT_RES_DRAIN 107 #define CS_STAT_RES_GHOSTHIT 108 #define CS_STAT_RES_POISON 109 #define CS_STAT_RES_SLOW 110 #define CS_STAT_RES_PARA 111 #define CS_STAT_TURN_UNDEAD 112 #define CS_STAT_RES_FEAR 113 #define CS_STAT_RES_DEPLETE 114 #define CS_STAT_RES_DEATH 115 #define CS_STAT_RES_HOLYWORD 116 #define CS_STAT_RES_BLIND 117 #define CS_STAT_SKILLEXP_START 118 /**< Start of skill experience + skill * level (inclusive). */ #define CS_STAT_SKILLEXP_END 129 /**< End of skill experience + skill * level (inclusive). */ #define CS_STAT_SKILLEXP_AGILITY 118 #define CS_STAT_SKILLEXP_AGLEVEL 119 #define CS_STAT_SKILLEXP_PERSONAL 120 #define CS_STAT_SKILLEXP_PELEVEL 121 #define CS_STAT_SKILLEXP_MENTAL 122 #define CS_STAT_SKILLEXP_MELEVEL 123 #define CS_STAT_SKILLEXP_PHYSIQUE 124 #define CS_STAT_SKILLEXP_PHLEVEL 125 #define CS_STAT_SKILLEXP_MAGIC 126 #define CS_STAT_SKILLEXP_MALEVEL 127 #define CS_STAT_SKILLEXP_WISDOM 128 #define CS_STAT_SKILLEXP_WILEVEL 129 /** * CS_STAT_SKILLINFO is used as the starting index point. Skill number->name * map is generated dynamically for the client, so a bunch of entries will be * used here. */ #define CS_STAT_SKILLINFO 140 /** * CS_NUM_SKILLS does not match how many skills there really are - instead, it * is used as a range of values so that the client can have some idea how many * skill categories there may be. */ #define CS_NUM_SKILLS 50 /*@}*/ /** * @defgroup SF_xxx SF_xxx Masks used in conjunction with fire and run states. * * These values are used with CS_STAT_FLAGS above to communicate S->C what the * server thinks the fireon & runon states are. */ /*@{*/ #define SF_FIREON 0x01 #define SF_RUNON 0x02 /*@}*/ /** * @defgroup ACL_xxx ACL_xxx field IDs that support account login. * * These values are used for the account login code to denote what field * follows. ACL = Account Character Login */ /*@{*/ #define ACL_NAME 1 #define ACL_CLASS 2 #define ACL_RACE 3 #define ACL_LEVEL 4 #define ACL_FACE 5 #define ACL_PARTY 6 #define ACL_MAP 7 #define ACL_FACE_NUM 8 /*@}*/ /** * @defgroup NDI_xxx NDI_xxx message color flags and masks. * * The following are the color flags passed to new_draw_info(). * * We also set up some control flags * * NDI = New Draw Info * * Color specifications - note these match the order in xutil.c. * * Note 2: Black, the default color, is 0. Thus, it does not need to * be implicitly specified. */ /*@{*/ #define NDI_BLACK 0 #define NDI_WHITE 1 #define NDI_NAVY 2 #define NDI_RED 3 #define NDI_ORANGE 4 #define NDI_BLUE 5 /**< Actually, it is Dodger Blue */ #define NDI_DK_ORANGE 6 /**< DarkOrange2 */ #define NDI_GREEN 7 /**< SeaGreen */ #define NDI_LT_GREEN 8 /**< DarkSeaGreen, which is actually paler * than seagreen - also background color. */ #define NDI_GREY 9 #define NDI_BROWN 10 /**< Sienna. */ #define NDI_GOLD 11 #define NDI_TAN 12 /**< Khaki. */ #define NDI_MAX_COLOR 12 /**< Last value in. */ #define NDI_COLOR_MASK 0xff /**< Gives lots of room for expansion - we are * using an int anyways, so we have the * space to still do all the flags. */ #define NDI_UNIQUE 0x100 /**< Print immediately, don't buffer. */ #define NDI_ALL 0x200 /**< Inform all players of this message. */ #define NDI_ALL_DMS 0x400 /**< Inform all logged in DMs. Used in case of * errors. Overrides NDI_ALL. */ /*@}*/ /** * @defgroup F_xxx F_xxx flags for the item command. */ /*@{*/ enum {a_none, a_readied, a_wielded, a_worn, a_active, a_applied}; #define F_APPLIED 0x000F #define F_UNIDENTIFIED 0x0010 #define F_UNPAID 0x0200 #define F_MAGIC 0x0400 #define F_CURSED 0x0800 #define F_DAMNED 0x1000 #define F_OPEN 0x2000 #define F_NOPICK 0x4000 #define F_LOCKED 0x8000 #define F_BLESSED 0x0100 #define CF_FACE_NONE 0 #define CF_FACE_BITMAP 1 #define CF_FACE_XPM 2 #define CF_FACE_PNG 3 #define CF_FACE_CACHE 0x10 /*@}*/ /** * @defgroup FACE_xxx FACE_xxx magic map masks. * * Used in the new_face structure on the magicmap field. Low bits are color * information. For now, only high bit information we need is for the floor. */ /*@{*/ #define FACE_FLOOR 0x80 #define FACE_WALL 0x40 /**< Or'd into the color value by the server * right before sending. */ #define FACE_COLOR_MASK 0xf /*@}*/ /** * @defgroup UPD_xxx UPD_xxx UpdSpell constants. * */ /*@{*/ #define UPD_LOCATION 0x01 #define UPD_FLAGS 0x02 #define UPD_WEIGHT 0x04 #define UPD_FACE 0x08 #define UPD_NAME 0x10 #define UPD_ANIM 0x20 #define UPD_ANIMSPEED 0x40 #define UPD_NROF 0x80 #define UPD_ALL 0xFF #define UPD_SP_MANA 0x01 /**< updspell command flag value. */ #define UPD_SP_GRACE 0x02 /**< updspell command flag value. */ #define UPD_SP_DAMAGE 0x04 /**< updspell command flag value. */ /*@}*/ /** * @defgroup SOUND_xxx SOUND_xxx constants. * */ /*@{*/ #define SOUND_NORMAL 0 #define SOUND_SPELL 1 /*@}*/ /** * @defgroup ANIM_xxx Animation constants. * */ /*@{*/ #define FACE_IS_ANIM 1<<15 #define ANIM_RANDOM 1<<13 #define ANIM_SYNC 2<<13 #define ANIM_FLAGS_MASK 0x6000 /**< Used only by the client. */ /** * AND'ing this with data from server gets us just the animation id. Used * only by the client. */ #define ANIM_MASK 0x1fff /*@}*/ /** * @defgroup EMI_xxx EMI_xxx extended map constants. * * Even if the client select the additionnal infos it wants on the map, there * may exist cases where this whole info is not given in one bunch but in * separate bunches. This is done performance reasons (imagine some info * related to a visible object and another info related to a 4 square width * and height area). At the begin of an extended info packet is a bit field. A * bit is activated for each extended information present in the data. */ /*@{*/ /**< Take extended information into account but do not redraw. Some * additional data will follow in a new packet. */ #define EMI_NOREDRAW 0x01 /** * Data about smoothing. */ #define EMI_SMOOTH 0x02 /** * Indicates the bitfield continue un next byte There may be several on * contiguous bytes. So there is 7 actual bits used per byte, and the number * of bytes is not fixed in protocol */ #define EMI_HASMOREBITS 0x80 /*@}*/ /* * Note! * When adding message types, don't forget to keep the client up to date too! */ /** * @defgroup MSG_TYPE_xxx MSG_TYPE_xxx message types */ /*@{*/ #define MSG_TYPE_BOOK 1 #define MSG_TYPE_CARD 2 #define MSG_TYPE_PAPER 3 #define MSG_TYPE_SIGN 4 #define MSG_TYPE_MONUMENT 5 #define MSG_TYPE_DIALOG 6 /**< NPCs, magic mouths, and altars */ #define MSG_TYPE_MOTD 7 #define MSG_TYPE_ADMIN 8 #define MSG_TYPE_SHOP 9 #define MSG_TYPE_COMMAND 10 /**< Responses to commands, eg, who */ #define MSG_TYPE_ATTRIBUTE 11 /**< Changes to attributes (stats, * resistances, etc) */ #define MSG_TYPE_SKILL 12 /**< Messages related to skill use. */ #define MSG_TYPE_APPLY 13 /**< Applying objects */ #define MSG_TYPE_ATTACK 14 /**< Attack related messages */ #define MSG_TYPE_COMMUNICATION 15 /**< Communication between players */ #define MSG_TYPE_SPELL 16 /**< Spell related info */ #define MSG_TYPE_ITEM 17 /**< Item related information */ #define MSG_TYPE_MISC 18 /**< Messages that don't go * elsewhere */ #define MSG_TYPE_VICTIM 19 /**< Something bad is happening to * the player. */ #define MSG_TYPE_CLIENT 20 /**< Client originated Messages */ #define MSG_TYPE_LAST 21 #define MSG_SUBTYPE_NONE 0 /* book messages subtypes */ #define MSG_TYPE_BOOK_CLASP_1 1 #define MSG_TYPE_BOOK_CLASP_2 2 #define MSG_TYPE_BOOK_ELEGANT_1 3 #define MSG_TYPE_BOOK_ELEGANT_2 4 #define MSG_TYPE_BOOK_QUARTO_1 5 #define MSG_TYPE_BOOK_QUARTO_2 6 #define MSG_TYPE_BOOK_SPELL_EVOKER 7 #define MSG_TYPE_BOOK_SPELL_PRAYER 8 #define MSG_TYPE_BOOK_SPELL_PYRO 9 #define MSG_TYPE_BOOK_SPELL_SORCERER 10 #define MSG_TYPE_BOOK_SPELL_SUMMONER 11 /* card messages subtypes*/ #define MSG_TYPE_CARD_SIMPLE_1 1 #define MSG_TYPE_CARD_SIMPLE_2 2 #define MSG_TYPE_CARD_SIMPLE_3 3 #define MSG_TYPE_CARD_ELEGANT_1 4 #define MSG_TYPE_CARD_ELEGANT_2 5 #define MSG_TYPE_CARD_ELEGANT_3 6 #define MSG_TYPE_CARD_STRANGE_1 7 #define MSG_TYPE_CARD_STRANGE_2 8 #define MSG_TYPE_CARD_STRANGE_3 9 #define MSG_TYPE_CARD_MONEY_1 10 #define MSG_TYPE_CARD_MONEY_2 11 #define MSG_TYPE_CARD_MONEY_3 12 /* Paper messages subtypes */ #define MSG_TYPE_PAPER_NOTE_1 1 #define MSG_TYPE_PAPER_NOTE_2 2 #define MSG_TYPE_PAPER_NOTE_3 3 #define MSG_TYPE_PAPER_LETTER_OLD_1 4 #define MSG_TYPE_PAPER_LETTER_OLD_2 5 #define MSG_TYPE_PAPER_LETTER_NEW_1 6 #define MSG_TYPE_PAPER_LETTER_NEW_2 7 #define MSG_TYPE_PAPER_ENVELOPE_1 8 #define MSG_TYPE_PAPER_ENVELOPE_2 9 #define MSG_TYPE_PAPER_SCROLL_OLD_1 10 #define MSG_TYPE_PAPER_SCROLL_OLD_2 11 #define MSG_TYPE_PAPER_SCROLL_NEW_1 12 #define MSG_TYPE_PAPER_SCROLL_NEW_2 13 #define MSG_TYPE_PAPER_SCROLL_MAGIC 14 /* road signs messages subtypes */ /* Including magic mouths */ #define MSG_TYPE_SIGN_BASIC 1 #define MSG_TYPE_SIGN_DIR_LEFT 2 #define MSG_TYPE_SIGN_DIR_RIGHT 3 #define MSG_TYPE_SIGN_DIR_BOTH 4 #define MSG_TYPE_SIGN_MAGIC_MOUTH 5 /* stones and monument messages */ #define MSG_TYPE_MONUMENT_STONE_1 1 #define MSG_TYPE_MONUMENT_STONE_2 2 #define MSG_TYPE_MONUMENT_STONE_3 3 #define MSG_TYPE_MONUMENT_STATUE_1 4 #define MSG_TYPE_MONUMENT_STATUE_2 5 #define MSG_TYPE_MONUMENT_STATUE_3 6 #define MSG_TYPE_MONUMENT_GRAVESTONE_1 7 #define MSG_TYPE_MONUMENT_GRAVESTONE_2 8 #define MSG_TYPE_MONUMENT_GRAVESTONE_3 9 #define MSG_TYPE_MONUMENT_WALL_1 10 #define MSG_TYPE_MONUMENT_WALL_2 11 #define MSG_TYPE_MONUMENT_WALL_3 12 /* dialog message */ #define MSG_TYPE_DIALOG_NPC 1 /**< A message from the npc */ #define MSG_TYPE_DIALOG_ALTAR 2 /**< A message from an altar */ #define MSG_TYPE_DIALOG_MAGIC_EAR 3 /**< Magic ear */ /* MOTD doesn't have any subtypes */ /* admin/global messages */ #define MSG_TYPE_ADMIN_RULES 1 #define MSG_TYPE_ADMIN_NEWS 2 #define MSG_TYPE_ADMIN_PLAYER 3 /**< Player coming/going/death */ #define MSG_TYPE_ADMIN_DM 4 /**< DM related admin actions */ #define MSG_TYPE_ADMIN_HISCORE 5 /**< Hiscore list */ #define MSG_TYPE_ADMIN_LOADSAVE 6 /**< load/save operations */ #define MSG_TYPE_ADMIN_LOGIN 7 /**< login messages/errors */ #define MSG_TYPE_ADMIN_VERSION 8 /**< version info */ #define MSG_TYPE_ADMIN_ERROR 9 /**< Error on command, setup, etc */ /* * I'm not actually expecting anything to make much use of the MSG_TYPE_SHOP * values However, to use the media tags, need to use draw_ext_info, and need * to have a type/subtype, so figured might as well put in real values here. */ #define MSG_TYPE_SHOP_LISTING 1 /**< Shop listings - inventory, * what it deals in. */ #define MSG_TYPE_SHOP_PAYMENT 2 /**< Messages about payment, lack * of funds. */ #define MSG_TYPE_SHOP_SELL 3 /**< Messages about selling items */ #define MSG_TYPE_SHOP_MISC 4 /**< Random messages */ /* * Basically, 1 subtype/command. Like shops, not expecting much to be done, * but by having different subtypes, it makes it easier for client to store * way information (eg, who output) */ #define MSG_TYPE_COMMAND_WHO 1 #define MSG_TYPE_COMMAND_MAPS 2 #define MSG_TYPE_COMMAND_BODY 3 #define MSG_TYPE_COMMAND_MALLOC 4 #define MSG_TYPE_COMMAND_WEATHER 5 #define MSG_TYPE_COMMAND_STATISTICS 6 #define MSG_TYPE_COMMAND_CONFIG 7 /**< bowmode, petmode, applymode */ #define MSG_TYPE_COMMAND_INFO 8 /**< Generic info: resistances, etc */ #define MSG_TYPE_COMMAND_QUESTS 9 /**< Quest info */ #define MSG_TYPE_COMMAND_DEBUG 10 /**< Various debug type commands */ #define MSG_TYPE_COMMAND_ERROR 11 /**< Bad syntax/can't use command */ #define MSG_TYPE_COMMAND_SUCCESS 12 /**< Successful result from command */ #define MSG_TYPE_COMMAND_FAILURE 13 /**< Failed result from command */ #define MSG_TYPE_COMMAND_EXAMINE 14 /**< Player examining something */ #define MSG_TYPE_COMMAND_INVENTORY 15 /**< Inventory listing */ #define MSG_TYPE_COMMAND_HELP 16 /**< Help related information */ #define MSG_TYPE_COMMAND_DM 17 /**< DM related commands */ #define MSG_TYPE_COMMAND_NEWPLAYER 18 /**< Create a new character - not * really a command, but is * responding to player input */ /* This is somewhat verbose. If the client ends up being able to * choose various attributes based on message type, I think it is important * for the client to know if this is a benefit or detriment to the player. * In the case of losing a bonus, this typically indicates a spell has * ended, which is probably more important (and should be displayed more * prominently) than when you cast the spell */ #define MSG_TYPE_ATTRIBUTE_ATTACKTYPE_GAIN 1 /**< Atacktypes here refer to */ #define MSG_TYPE_ATTRIBUTE_ATTACKTYPE_LOSS 2 /**< the player gaining or * losing these attacktypes * not being a victim of an * attacktype. */ #define MSG_TYPE_ATTRIBUTE_PROTECTION_GAIN 3 /**< Protections in this */ #define MSG_TYPE_ATTRIBUTE_PROTECTION_LOSS 4 /**< context are pretty * generic - things like * reflection or lifesave * are also under the * protection category. */ #define MSG_TYPE_ATTRIBUTE_MOVE 5 /**< A change in the movement * type of the player. */ #define MSG_TYPE_ATTRIBUTE_RACE 6 /**< Race-related changes. */ #define MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START 7 /**< Start of a bad effect * to the player. */ #define MSG_TYPE_ATTRIBUTE_BAD_EFFECT_END 8 /**< End of a bad effect. */ #define MSG_TYPE_ATTRIBUTE_STAT_GAIN 9 #define MSG_TYPE_ATTRIBUTE_STAT_LOSS 10 #define MSG_TYPE_ATTRIBUTE_LEVEL_GAIN 11 #define MSG_TYPE_ATTRIBUTE_LEVEL_LOSS 12 #define MSG_TYPE_ATTRIBUTE_GOOD_EFFECT_START 13 /**< Start of a good effect to * the player. */ #define MSG_TYPE_ATTRIBUTE_GOOD_EFFECT_END 14 /**< End of a good effect. */ #define MSG_TYPE_ATTRIBUTE_GOD 15 /**< changing god info */ /* I think one type/skill is overkill, so instead, use broader categories * for these messages. * The difference in ERROR vs FAILURE is basically this: ERROR indicates * something wasn't right to even attempt to use the skill (don't have * needed object, or haven't marked objects, etc). * FAILURE indicates that player attempted to use the skill, but it * didn't work. * PRAY is listed out because praying over altars can generate some * messages not really related to the skill itself. */ #define MSG_TYPE_SKILL_MISSING 1 /**< Don't have the skill */ #define MSG_TYPE_SKILL_ERROR 2 /**< Doing something wrong */ #define MSG_TYPE_SKILL_SUCCESS 3 /**< Successfully used skill */ #define MSG_TYPE_SKILL_FAILURE 4 /**< Failure in using skill */ #define MSG_TYPE_SKILL_PRAY 5 /**< Praying related messages */ #define MSG_TYPE_SKILL_LIST 6 /**< List of skills */ /* Messages related to applying objects. Note that applying many objects may * generate MSG_TYPE_ATTRIBUTE messages - the APPLY here more directly related * to the direct messages related to applying them (you put on your armor, you * apply scroll, etc). The ERROR is like that for SKILLS - something prevent * even trying to apply the object. FAILURE indicates result wasn't * successful. */ #define MSG_TYPE_APPLY_ERROR 1 #define MSG_TYPE_APPLY_UNAPPLY 2 /**< Unapply an object */ #define MSG_TYPE_APPLY_SUCCESS 3 /**< Was able to apply object */ #define MSG_TYPE_APPLY_FAILURE 4 /**< Apply OK, but no/bad result */ #define MSG_TYPE_APPLY_CURSED 5 /**< Applied a cursed object (BAD) */ #define MSG_TYPE_APPLY_TRAP 6 /**< Have activated a trap */ #define MSG_TYPE_APPLY_BADBODY 7 /**< Don't have body to use object */ #define MSG_TYPE_APPLY_PROHIBITION 8 /**< Class/god prohibiiton on obj */ #define MSG_TYPE_APPLY_BUILD 9 /**< Build related actions */ /* attack related messages */ #define MSG_TYPE_ATTACK_DID_HIT 1 /**< Player hit something else */ #define MSG_TYPE_ATTACK_PET_HIT 2 /**< Players pet hit something else */ #define MSG_TYPE_ATTACK_FUMBLE 3 /**< Player fumbled attack */ #define MSG_TYPE_ATTACK_DID_KILL 4 /**< Player killed something */ #define MSG_TYPE_ATTACK_PET_DIED 5 /**< Pet was killed */ #define MSG_TYPE_ATTACK_NOKEY 6 /**< Keys are like attacks, so... */ #define MSG_TYPE_ATTACK_NOATTACK 7 /**< You avoid attacking */ #define MSG_TYPE_ATTACK_PUSHED 8 /**< Pushed a friendly player */ #define MSG_TYPE_ATTACK_MISS 9 /**< attack didn't hit */ #define MSG_TYPE_COMMUNICATION_RANDOM 1 /**< Random event (coin toss) */ #define MSG_TYPE_COMMUNICATION_SAY 2 /**< Player says something */ #define MSG_TYPE_COMMUNICATION_ME 3 /**< Player me's a message */ #define MSG_TYPE_COMMUNICATION_TELL 4 /**< Player tells something */ #define MSG_TYPE_COMMUNICATION_EMOTE 5 /**< Player emotes */ #define MSG_TYPE_COMMUNICATION_PARTY 6 /**< Party message */ #define MSG_TYPE_COMMUNICATION_SHOUT 7 /**< Party message */ #define MSG_TYPE_COMMUNICATION_CHAT 8 /**< Party message */ #define MSG_TYPE_SPELL_HEAL 1 /**< Healing related spells */ #define MSG_TYPE_SPELL_PET 2 /**< Pet related messages */ #define MSG_TYPE_SPELL_FAILURE 3 /**< Spell failure messages */ #define MSG_TYPE_SPELL_END 4 /**< A spell ends */ #define MSG_TYPE_SPELL_SUCCESS 5 /**< Spell succeeded messages */ #define MSG_TYPE_SPELL_ERROR 6 /**< Spell failure messages */ #define MSG_TYPE_SPELL_PERCEIVE_SELF 7 /**< Perceive self messages */ #define MSG_TYPE_SPELL_TARGET 8 /**< Target of non attack spell */ #define MSG_TYPE_SPELL_INFO 9 /**< random info about spell, not * related to failure/success */ #define MSG_TYPE_ITEM_REMOVE 1 /**< Item removed from inv */ #define MSG_TYPE_ITEM_ADD 2 /**< Item added to inventory */ #define MSG_TYPE_ITEM_CHANGE 3 /**< Item has changed in some way */ #define MSG_TYPE_ITEM_INFO 4 /**< Information related to items */ /* * MSG_TYPE_MISC, by its very nature, doesn't really have subtypes. It is * used for messages that really don't belong anyplace else */ #define MSG_TYPE_VICTIM_SWAMP 1 /**< Player is sinking in a swamp */ #define MSG_TYPE_VICTIM_WAS_HIT 2 /**< Player was hit by something */ #define MSG_TYPE_VICTIM_STEAL 3 /**< Someone tried to steal from * the player */ #define MSG_TYPE_VICTIM_SPELL 4 /**< Someone cast a bad spell on * the player */ #define MSG_TYPE_VICTIM_DIED 5 /**< Player died! */ #define MSG_TYPE_VICTIM_WAS_PUSHED 6 /**< Player was pushed or attempted * pushed */ #define MSG_TYPE_CLIENT_CONFIG 1 /**< Local configuration issues */ #define MSG_TYPE_CLIENT_SERVER 2 /**< Server configuration issues */ #define MSG_TYPE_CLIENT_COMMAND 3 /**< DrawInfoCmd() */ #define MSG_TYPE_CLIENT_QUERY 4 /**< handle_query() and prompts */ #define MSG_TYPE_CLIENT_DEBUG 5 /**< General debug messages */ #define MSG_TYPE_CLIENT_NOTICE 6 /**< Non-critical note to player */ #define MSG_TYPE_CLIENT_METASERVER 7 /**< Metaserver messages */ #define MSG_TYPE_CLIENT_SCRIPT 8 /**< Script related messages */ #define MSG_TYPE_CLIENT_ERROR 9 /**< Bad things happening */ /*@}*/ /** * Definitions for the requestion/replyinfo map data. */ #define INFO_MAP_ARCH_NAME 1 /**< Archetype name of this entry */ #define INFO_MAP_NAME 2 /**< Proper name of this entry */ #define INFO_MAP_DESCRIPTION 3 /**< Description of this map */ /** * Contains the base information we use to make up a packet we want to send. */ typedef struct SockList { #ifdef CLIENT_TYPES_H /* Used by the client */ int len; unsigned char *buf; #else /* Used by the server */ size_t len; unsigned char buf[MAXSOCKBUF]; /* 2(size)+65535(content)+1(ending NULL) */ #endif } SockList; /** * Statistics on server. */ typedef struct CS_Stats { int ibytes; /**< ibytes, obytes are bytes in, out. */ int obytes; short max_conn; /**< Maximum connections received. */ time_t time_start; /**< When we started logging this. */ } CS_Stats; extern CS_Stats cst_tot, cst_lst; #endif /* NEWCLIENT_H */ crossfire-client-1.70.0/common/misc.c0000644000014500000120000003432411731277011014353 00000000000000const char * const rcsid_common_misc_c = "$Id: misc.c 13982 2010-10-09 22:41:04Z anmaster $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2006,2001 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/misc.c * Contains misc useful functions that may be useful to various parts of code, * but are not especially tied to it. */ #include "client.h" #include #include #include #include #include #ifndef WIN32 #include #else #include #include #endif /** * Convert a buffer of a specified maximum size by replacing token characters * with a provided string. Given a buffered template string "/input/to/edit", * the maximum size of the buffer, a token '/', and a replacement string ":", * the input string is transformed to ":input:to:edit". If the replacement * string is empty, the token characters are simply removed. The template is * processed from left to right, replacing token characters as they are found. * Replacement strings are always inserted whole. If token replacement would * overflow the size of the conversion buffer, the token is not replaced, and * the remaining portion of the input string is appended after truncating it * as required to avoid overfilling the buffer. * @param buffer A string to perform a find and replace operation on. * @param buffer_size Allocated buffer size (used to avoid buffer overflow). * @param find A token character to find and replace in the buffer. * @param replace A string that is to replace each token in the buffer. */ void replace_chars_with_string(char* buffer, const uint16 buffer_size, const char find, const char* replace ) { uint16 buffer_len, expand, i, replace_len, replace_limit, template_len; char* template; replace_limit = buffer_size - 1; replace_len = strlen(replace); template_len = strlen(buffer); template = strdup(buffer); buffer[0] = '\0'; buffer_len = 0; for (i = 0; i <= template_len; i++) { expand = buffer_len + replace_len < replace_limit ? replace_len : 1; if (expand == 1 && buffer_len == replace_limit) { break; } if ((template[i] != find) || ((expand == 1) && (replace_len > 1))) { buffer[buffer_len++] = template[i]; buffer[buffer_len] = '\0'; } else { strcat(buffer, replace); buffer_len += replace_len; } } free(template); } /** * Verifies that the directory exists, creates it if necessary * Returns -1 on failure */ int make_path_to_dir (char *directory) { char buf[MAX_BUF], *cp = buf; struct stat statbuf; if (!directory || !*directory) return -1; strcpy (buf, directory); while ((cp = strchr (cp + 1, (int) '/'))) { *cp = '\0'; if (stat (buf, &statbuf) || !S_ISDIR (statbuf.st_mode)) { #ifdef WIN32 if (mkdir (buf)) { #else if (mkdir (buf, 0777)) { #endif perror ("Couldn't make path to file"); return -1; } } else *cp = '/'; } /* Need to make the final component */ if (stat (buf, &statbuf) || !S_ISDIR (statbuf.st_mode)) { #ifdef WIN32 if (mkdir (buf)) { #else if (mkdir (buf, 0777)) { #endif perror ("Couldn't make path to file"); return -1; } } return 0; } /** * If any directories in the given path doesn't exist, they are created. */ int make_path_to_file (char *filename) { char buf[MAX_BUF], *cp = buf; struct stat statbuf; if (!filename || !*filename) return -1; strcpy (buf, filename); while ((cp = strchr (cp + 1, (int) '/'))) { *cp = '\0'; if (stat (buf, &statbuf) || !S_ISDIR (statbuf.st_mode)) { #ifdef WIN32 if (mkdir (buf)) { LOG(LOG_ERROR, "misc.c::make_path_to_file", "Couldn't make path to file: %s", strerror(errno)); #else if (mkdir (buf, 0777)) { perror ("Couldn't make path to file"); #endif return -1; } } *cp = '/'; } return 0; } /** * A replacement of strdup(), since it's not defined at some * unix variants. */ char *strdup_local(const char *str) { char *c=(char *)malloc(sizeof(char)*strlen(str)+1); strcpy(c,str); return c; } /* logging stuff */ LogEntry* LogFirst=NULL; LogEntry* LogLast=NULL; int logcount=0; LogListener loglist=NULL; /** * */ int setLogListener(LogListener li){ if (loglist) return 0; loglist=li; return 1; } /** * */ void clearLogListener(void) { loglist=NULL; } static const char *const LogLevelTexts[] = { " DEBUG ", " INFO ", "WARNING ", " ERROR ", "CRITICAL", "UNKNOWN ", }; /** * */ static const char *getLogLevelText(LogLevel level) { return LogLevelTexts[level>LOG_CRITICAL?LOG_CRITICAL+1:level]; } /** * */ char *getLogTextRaw(LogLevel level, const char *origin, const char *message) { static char mybuf[20480]; mybuf[0]='\0'; snprintf(mybuf, sizeof(mybuf), "[%s] (%s) %s\n",getLogLevelText(level),origin,message); return mybuf; } /** * */ char *getLogText(const LogEntry *le) { return getLogTextRaw(le->level,le->origin,le->message); } int MINLOG=MINLOGLEVEL; /** * Logs a message to stderr and save it in memory. * Or discards the message if it is of no importanse, and none have * asked to hear messages of that logLevel. * * See client.h for possible logLevels. */ void LOG(LogLevel level, const char *origin, const char *format, ...) { va_list ap; static char buf[20480]; /* This needs to be really really big - larger * than any other buffer, since that buffer may * need to be put in this one. */ if (level0){ LogEntry *le = LOG_NEW_ENTRY; LOG_APPEND(le); LOG_SETMESSAGE(le,buf); LOG_SETORIGIN(le,origin); le->level=level; fprintf(stderr, "%s", getLogText(le)); if (loglist) (*loglist)(le); } va_end(ap); } ChildProcess* FirstChild=NULL; ChildProcess* LastChild=NULL; /** * */ void purgePipe(ChildProcess* cp, int pipe){ char buf[512]; int len; len=read (cp->tube[pipe],buf,511); if (len<1){ if (errno==EAGAIN) return; LOG(LOG_ERROR,"common::purgePipe","Child %s: could not read from pipe %d!",cp->name?cp->name:"UNKNOWN",pipe); } if (len>0){ char* next; char* current=buf; buf[len<512?len:511]='\0'; if (strlen(buf)==0) return; for (;;){ if (!current) return; next=strstr(current,"\n"); if (next){ next[0]='\0'; next+=strlen("\n"); } LOG(cp->logger[pipe].level,cp->logger[pipe].name,current); current=next; } } } /** * */ void monitorChilds(void) { #ifndef WIN32 ChildProcess* cp=FirstChild; ChildProcess* last=NULL; for (;;){ if (!cp) return; /*no child to monitor*/ if (waitpid(cp->pid,NULL,WNOHANG)){ ChildProcess* next; /*pid is dead*/ LOG(LOG_INFO,"common::monitorChilds","Child %s died. Removing and closing pipes",cp->name?cp->name:"UNKNOWN"); if (cp==LastChild) LastChild=last; next=cp->next; if (last) last->next=next; else FirstChild=cp->next; cp=next; continue; } if (cp->logger[1].log) purgePipe(cp,1); if (cp->logger[2].log) purgePipe(cp,2); last=cp; cp=cp->next; } #endif } /** * */ void logPipe(ChildProcess *child, LogLevel level, int pipe){ #ifndef WIN32 char buf[1024]; if ( (pipe<1) || (pipe>2))/*can't log stdin as it's write only*/ return; if (!child->logger[pipe].name){ snprintf(buf, sizeof(buf), "Child%d::%s::%d",child->pid,child->name?child->name:"NONAME",pipe); child->logger[pipe].name=strdup(buf); } if (fcntl(child->tube[pipe], F_SETFL, O_NDELAY)==-1) { LOG(LOG_WARNING,"common::logPipe","Error on fcntl."); child->logger[pipe].log=0; /*We don't log it*/ return; } child->logger[pipe].log=1; /*We log it*/ child->logger[pipe].level=level; #endif } /** * */ void logChildPipe(ChildProcess* child, LogLevel level, int flag){ if (child->flag & flag & CHILD_STDOUT) logPipe(child,level,1); if (child->flag & flag & CHILD_STDERR) logPipe(child,level,2); } /** * */ ChildProcess* raiseChild(char* name, int flag){ #ifndef WIN32 ChildProcess* cp; int pipe_in[2]; int pipe_out[2]; int pipe_err[2]; int pid; char *args; LOG(LOG_INFO,"common::raiseChild","Raising %s with flags %d",name,flag); flag=flag & (~CHILD_SILENTFAIL); if (flag & (~CHILD_TUBE)){ LOG(LOG_ERROR,"common::raiseChild", "Serious CHILD error, unknown pipe requested: 0x%X for %s", flag,name); return NULL; /**/ } cp = (ChildProcess*)calloc(1,sizeof(ChildProcess)); if (cp==NULL) return NULL; /*No log here, we are out of memory for a few DWORDs, no chance to log*/ /* Separate name and args */ args=name; while ( *args && *args!=' ' ) ++args; while ( *args && *args==' ' ) ++args; if ( *args==0 ) args=NULL; else args[-1]=0; /*let's pipe a bit*/ if (flag&CHILD_STDERR) if ( pipe(pipe_err) ){ LOG(LOG_ERROR,"common::raiseChild","Couldn't create stderr pipe for %s",name); free(cp); return NULL; } if (flag&CHILD_STDIN) if ( pipe(pipe_in) ){ LOG(LOG_ERROR,"common::raiseChild","Couldn't create stdin pipe for %s",name); if (flag&CHILD_STDERR){ close(pipe_err[0]); close(pipe_err[1]); } free(cp); return NULL; } if (flag&CHILD_STDOUT) if ( pipe(pipe_out) ){ LOG(LOG_ERROR,"common::raiseChild","Couldn't create stdout pipe for %s",name); if (flag&CHILD_STDERR){ close(pipe_err[0]); close(pipe_err[1]); } if (flag&CHILD_STDIN){ close(pipe_in[0]); close(pipe_in[1]); } free(cp); return NULL; } pid=fork(); if (pid==-1){/*failed to fork*/ LOG(LOG_ERROR,"common::raiseChild","Couldn't create child for %s. Closing pipes",name); if (flag&CHILD_STDIN){ close(pipe_in[0]); close(pipe_in[1]); } if (flag&CHILD_STDOUT){ close(pipe_out[0]); close(pipe_out[1]); } if (flag&CHILD_STDERR){ close(pipe_err[0]); close(pipe_err[1]); } free(cp); return NULL; } if (pid==0){ /*we are the child (yeah))*/ int i; int r; char *argv[256]; /* Fill in argv[] */ argv[0]=name; i=1; while (args && *args) { argv[i]=args; ++i; while ( *args && *args!=' ' ) ++args; if ( *args ) { *args=0; ++args; } while ( *args && *args==' ' ) ++args; } argv[i]=NULL; /* Clean up file descriptor space */ if (flag&CHILD_STDERR){ r=dup2(pipe_err[1],2); close(pipe_err[0]); if ( r != 2 ) { /*No call to log, we are the child, don't mess! Console is only soluce.*/ fprintf(stderr,"common::raiseChild Failed to set pipe_err as stderr\n"); } } if (flag&CHILD_STDOUT){ r=dup2(pipe_out[1],1); close(pipe_out[0]); if ( r != 1 ) { /*No call to log Father will catch us if he cares of our stderr*/ fprintf(stderr,"common::raiseChild Failed to set pipe_out as stdout\n"); } } if (flag&CHILD_STDIN){ r=dup2(pipe_in[0],0); close(pipe_in[1]); if ( r != 0 ) { /*No call to log Father will catch us if he cares of our stderr*/ fprintf(stderr,"common::raiseChild Failed to set pipe_in as stdin\n"); } } for (i=3;i<100;++i) close(i); /* EXEC */ execvp(argv[0],argv); exit(-1); /* Should not be reached */ } /*We are in father here*/ if (flag&CHILD_STDIN){ close (pipe_in[0]); /*close read access to stdin, we are the writer*/ CHILD_PIPEIN(cp)=pipe_in[1]; } else CHILD_PIPEIN(cp)=-1; if (flag&CHILD_STDOUT){ close (pipe_out[1]); /*close write access to stdout, we are the reader*/ CHILD_PIPEOUT(cp)=pipe_out[0]; } else CHILD_PIPEOUT(cp)=-1; if (flag&CHILD_STDERR){ close (pipe_err[1]); /*close write access to stderr, we are the reader*/ CHILD_PIPEERR(cp)=pipe_err[0]; } else CHILD_PIPEERR(cp)=-1; cp->pid=pid; cp->name=strdup(name); cp->flag=flag; /*add to chained list*/ if (FirstChild) LastChild->next=cp; else FirstChild=cp; LastChild=cp; cp->next=NULL; return cp; #else return NULL; #endif } crossfire-client-1.70.0/common/client.c0000644000014500000120000006334311731277011014701 00000000000000const char * const rcsid_common_client_c = "$Id: client.c 13930 2010-09-28 02:43:00Z kbulgrien $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/client.c * Client interface main routine. Sets up a few global variables, connects to * the server, tells it what kind of pictures it wants, adds the client and * enters the main dispatch loop. * * The main event loop (event_loop()) checks the TCP socket for input and then * polls for x events. This should be fixed since you can just block on both * filedescriptors. * * The DoClient function receives a message (an ArgList), unpacks it, and in a * slow for loop dispatches the command to the right function through the * commands table. ArgLists are essentially like RPC things, only they don't * require going through RPCgen, and it's easy to get variable length lists. * They are just lists of longs, strings, characters, and byte arrays that can * be converted to a machine independent format */ #include #include #include #include #include #include "mapdata.h" /* actually declare the globals */ #ifdef SERVER char *server=SERVER; #else char *server=NULL; #endif char VERSION_INFO[MAX_BUF]; char *client_libdir=NULL,*meta_server=META_SERVER; char *sound_server="cfsndserv"; char *skill_names[MAX_SKILL]; int last_used_skills[MAX_SKILL+1]; int meta_port=META_PORT, want_skill_exp=0, replyinfo_status=0, requestinfo_sent=0, replyinfo_last_face=0, maxfd,metaserver_on=METASERVER, metaserver2_on=METASERVER2, wantloginmethod=0, serverloginmethod=0; uint32 tick=0; uint16 exp_table_max=0; uint64 *exp_table=NULL; NameMapping skill_mapping[MAX_SKILL], resist_mapping[NUM_RESISTS]; Client_Player cpl; ClientSocket csocket; const char *const resists_name[NUM_RESISTS] = { "armor", "magic", "fire", "elec", "cold", "conf", "acid", "drain", "ghit", "pois", "slow", "para", "t undead", "fear", "depl","death", "hword", "blind"}; typedef void (*CmdProc)(unsigned char *, int len); /** * Links server commands to client functions that implement them, and gives a * rough indication of the type of data that the server supplies with the * command. */ struct CmdMapping { const char *cmdname; void (*cmdproc)(unsigned char *, int ); enum CmdFormat cmdformat; }; /** * The list of server commands that this client supports along with pointers * to the function that handles the command. The table also gives a rough * indication of the type of data that the server should send with each * command. If the client receives a command not listed in the table, a * complaint is output on stdout. */ struct CmdMapping commands[] = { /* * The order of this table does not make much of a difference. Related * commands are listed in groups. */ { "map2", Map2Cmd, SHORT_ARRAY }, { "map_scroll", (CmdProc)map_scrollCmd, ASCII }, { "magicmap", MagicMapCmd, MIXED /* ASCII, then binary */}, { "newmap", NewmapCmd, NODATA }, { "mapextended", MapExtendedCmd, MIXED /* chars, then SHORT_ARRAY */ }, { "item2", Item2Cmd, MIXED }, { "upditem", UpdateItemCmd, MIXED }, { "delitem", DeleteItem, INT_ARRAY }, { "delinv", DeleteInventory, ASCII }, { "addspell", AddspellCmd, MIXED }, { "updspell", UpdspellCmd, MIXED }, { "delspell", DeleteSpell, INT_ARRAY }, { "drawinfo", (CmdProc)DrawInfoCmd, ASCII }, { "drawextinfo", (CmdProc)DrawExtInfoCmd, ASCII}, { "stats", StatsCmd, STATS /* Array of: int8, (int?s for * that stat) */}, { "image2", Image2Cmd, MIXED /* int, int8, int, PNG */ }, { "face2", Face2Cmd, MIXED /* int16, int8, int32, string */}, { "tick", TickCmd, INT_ARRAY /* uint32 */}, { "music", (CmdProc)MusicCmd, ASCII }, { "sound2", Sound2Cmd, MIXED /* int8, int8, int8, int8, * int8, int8, chars, int8, * chars */}, { "anim", AnimCmd, SHORT_ARRAY}, { "smooth", SmoothCmd, SHORT_ARRAY}, { "player", PlayerCmd, MIXED /* 3 ints, int8, str */ }, { "comc", CompleteCmd, SHORT_INT }, { "addme_failed", (CmdProc)AddMeFail, NODATA }, { "addme_success", (CmdProc)AddMeSuccess, NODATA }, { "version", (CmdProc)VersionCmd, ASCII }, { "goodbye", (CmdProc)GoodbyeCmd, NODATA }, { "setup", (CmdProc)SetupCmd, ASCII}, { "failure", (CmdProc)FailureCmd, ASCII}, { "accountplayers", (CmdProc)AccountPlayersCmd, ASCII}, { "query", (CmdProc)handle_query, ASCII}, { "replyinfo", ReplyInfoCmd, ASCII}, { "ExtendedTextSet", (CmdProc)SinkCmd, NODATA}, { "ExtendedInfoSet", (CmdProc)SinkCmd, NODATA}, { "pickup", PickupCmd, INT_ARRAY /* uint32 */}, }; /** * The number of entries in #commands. */ #define NCOMMANDS ((int)(sizeof(commands)/sizeof(struct CmdMapping))) /** * Closes the connection to the server. It seems better to have it one place * here than the same logic sprinkled about in half a dozen locations. It is * also useful in that if this logic does change, there is just one place to * update it. */ void close_server_connection() { #ifdef WIN32 closesocket(csocket.fd); #else close(csocket.fd); #endif csocket.fd = -1; } /** * Continuously reads packets from the server, passes their commands to the * script watcher, and then processes them. Each packet contains only one * command and any or no data associated with it. Incomplete packets are * ignored, and if a socket error occurs, the connection to the server is * closed. * * @param csocket The socket that server commands are received from. */ void DoClient(ClientSocket *csocket) { int i, len; unsigned char *data; while (1) { i = SockList_ReadPacket(csocket->fd, &csocket->inbuf, MAXSOCKBUF - 1); /* * If a socket error occurred while reading the packet, drop the * server connection. Is there a better way to handle this? */ if (i == -1) { close_server_connection(); return; } /* * Drop incomplete packets without attempting to process the contents. */ if (i == 0) return; /* * Null-terminate the buffer, and set the data pointer so it points * to the first character of the data (following the packet length). */ csocket->inbuf.buf[csocket->inbuf.len] = '\0'; data = csocket->inbuf.buf + 2; /* * Commands that provide data are always followed by a space. Find * the space and convert it to a null character. If no spaces are * found, the packet contains a command with no associatd data. */ while ((*data != ' ') && (*data != '\0')) ++data; if (*data == ' ') { *data = '\0'; data++; len = csocket->inbuf.len - (data - csocket->inbuf.buf); } else { len = 0; } /* * Search for the command in the list of supported server commands. * If the server command is supported by the client, let the script * watcher know what command was received, then process it and quit * searching the command list. */ for(i = 0; i < NCOMMANDS; i++) { if (strcmp((char*)csocket->inbuf.buf+2,commands[i].cmdname)==0) { script_watch((char*)csocket->inbuf.buf+2,data,len,commands[i].cmdformat); commands[i].cmdproc(data,len); break; } } /* * After processing the command, mark the socket input buffer empty. */ csocket->inbuf.len=0; /* * Complain about unsupported commands to facilitate troubleshooting. * The client and server should negotiate a connection such that the * server does not send commands the client does not support. */ if (i == NCOMMANDS) { printf("Unrecognized command from server (%s)\n", csocket->inbuf.buf+2); } } } #ifdef WIN32 #define socklen_t int #else #include #include #include #include #include #include #include #endif /** * Attempt to establish a socket connection to a specified server and port. * In the case where HAVE_GETADDRINFO is true, a timeout connect() is * implemented to avoid very long (3 minute) client freeze-up when a host is * not reachable. It is easy for this to happen if a cached server entry is * used instead of metaserver results. * * @param host Host name or address of the server. * @param port Port name to use when connecting to the server. * @return File descripter of the connected socket, or, -1 on failure. */ int init_connection(char *host, int port) { int fd = -1, oldbufsize, newbufsize=65535; socklen_t buflen=sizeof(int); #if !HAVE_GETADDRINFO || WIN32 struct sockaddr_in insock; struct protoent *protox; /* * An empty host is sometimes saved as (null) in the defaults file, but, * on load, that does not get handled as a NULL. When that happens, the * lookup of this invalid hostname takes a long time, and it isn't a valid * host name in any case, so just abort quickly. */ if (!strcmp(host,"(null)")) return -1; protox = getprotobyname("tcp"); if (protox == (struct protoent *) NULL) { LOG (LOG_ERROR,"common::init_connection", "Error getting protobyname (tcp)"); return -1; } fd = socket(PF_INET, SOCK_STREAM, protox->p_proto); if (fd==-1) { perror("init_connection: Error on socket command.\n"); LOG (LOG_ERROR,"common::init_connection", "Error on socket command"); return -1; } insock.sin_family = AF_INET; insock.sin_port = htons((unsigned short)port); if (isdigit(*host)) insock.sin_addr.s_addr = inet_addr(host); else { struct hostent *hostbn = gethostbyname(host); if (hostbn == (struct hostent *) NULL) { LOG (LOG_ERROR,"common::init_connection","Unknown host: %s",host); return -1; } memcpy(&insock.sin_addr, hostbn->h_addr, hostbn->h_length); } if (connect(fd,(struct sockaddr *)&insock,sizeof(insock)) == (-1)) { LOG (LOG_ERROR,"common::init_connection","Can't connect to server"); perror("Can't connect to server"); return -1; } #else struct addrinfo hints; struct addrinfo *res = NULL, *ai; char port_str[6]; int fd_status, fd_flags, fd_select, fd_sockopt; struct timeval tv; fd_set fdset; /* See note in section above about null hosts names */ if (!strcmp(host,"(null)")) return -1; snprintf(port_str, sizeof(port_str), "%d", port); memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; if (getaddrinfo(host, port_str, &hints, &res) != 0) return -1; /* * Assume that an error will not occur and that the socket is left open. */ fd_status = 0; for (ai = res; ai != NULL; ai = ai->ai_next) { /* * Try to create a socket. */ fd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (fd == -1) { LOG (LOG_ERROR, "common::init_connection","Error creating socket (%d %s)\n", errno, strerror(errno)); continue; } /* * Set the socket to non-blocking mode. */ fd_flags = fcntl(fd, F_GETFL, NULL); if (fd_flags == -1) { LOG (LOG_ERROR, "common::init_connection","Error fcntl(fd, F_GETFL) (%s)\n", strerror(errno)); fd_status = -1; break; } fd_flags |= O_NONBLOCK; if (fcntl(fd, F_SETFL, fd_flags) == -1) { LOG (LOG_ERROR, "common::init_connection","Error fcntl(fd, F_SETFL) (%s)\n", strerror(errno)); fd_status = -1; break; } /* * Try to connect in non-blocking mode to avoid an extended client * lockup in the event that the connection fails for some reason. */ if (connect(fd, ai->ai_addr, ai->ai_addrlen) == -1) { /* * Assume the connection will fail... */ fd_status = -1; if (errno == EINPROGRESS) { do { /* * Do not block more than the amount of time specified * here. Prior to implementation of this timeout, the * client was observed to freeze up for three minutes or * so when the connection failed. */ tv.tv_sec = 30; tv.tv_usec = 0; FD_ZERO(&fdset); FD_SET(fd, &fdset); fd_select = select(fd+1, NULL, &fdset, NULL, &tv); if (fd_select == -1 && errno != EINTR) { LOG (LOG_ERROR, "common::init_connection", "Error connecting %d - %s\n", errno, strerror(errno)); break; } else if (fd_select > 0) { /* * Socket selected for write. */ if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)(&fd_sockopt), &buflen)) { LOG (LOG_ERROR, "common::init_connection", "Error in getsockopt %d - %s\n", errno, strerror(errno)); break; } if (fd_sockopt) { LOG (LOG_ERROR, "common::init_connection", "Error in delayed connection %d - %s\n", fd_sockopt, strerror(fd_sockopt)); break; } /* * The assumption was wrong: the connection succeeded. */ fd_status = 0; break; } else { LOG (LOG_ERROR,"common::init_connection","Timeout\n"); break; } } while (1); } else { /* This log message should probably be removed - any error * should really be reported to the player through the GUI. * In addition, if system has ipv6 + ipv4, the ipv6 connection * may fail (generating this message), but ipv4 to same server * succeeds - probably not really an error there. */ LOG (LOG_ERROR, "common::init_connection", "Error connecting %d - %s\n", errno, strerror(errno)); fd_status = 0; continue; } } if (! fd_status) { /* * If we get here, the connection has worked. Now we * reset the socket to blocking mode. */ fd_flags = fcntl(fd, F_GETFL, NULL); if (fd_flags == -1) { LOG (LOG_ERROR, "common::init_connection", "Error fcntl(..., F_GETFL) (%s)\n", strerror(errno)); fd_status = -1; } else { fd_flags &= (~O_NONBLOCK); if (fcntl(fd, F_SETFL, fd_flags) == -1) { LOG (LOG_ERROR, "common::init_connection", "Error fcntl(..., F_SETFL) (%s)\n", strerror(errno)); fd_status = -1; } } break; } } if (fd_status) { close(fd); fd = -1; } freeaddrinfo(res); if (fd == -1) return -1; #endif free(csocket.servername); csocket.servername = malloc(sizeof(char)*(strlen(host)+1)); strcpy(csocket.servername, host); #ifndef WIN32 if (fcntl(fd, F_SETFL, O_NDELAY)==-1) { LOG (LOG_ERROR,"common::init_connection","Error on fcntl."); } #else { unsigned long tmp = 1; if (ioctlsocket(fd, FIONBIO, &tmp)<0) { LOG (LOG_ERROR,"common::init_connection","Error on ioctlsocket."); } } #endif #ifdef TCP_NODELAY /* turn off nagle algorithm */ if (use_config[CONFIG_FASTTCP]) { int i=1; #ifdef WIN32 if (setsockopt(fd, SOL_TCP, TCP_NODELAY, ( const char* )&i, sizeof(i)) == -1) perror("TCP_NODELAY"); #else if (setsockopt(fd, SOL_TCP, TCP_NODELAY, &i, sizeof(i)) == -1) perror("TCP_NODELAY"); #endif } #endif if (getsockopt(fd,SOL_SOCKET,SO_RCVBUF, (char*)&oldbufsize, &buflen)==-1) oldbufsize=0; if (oldbufsize 1000) { close_server_connection(); return; } } if (csocket.sc_version<1023) { LOG (LOG_WARNING,"common::negotiate_connection","Server does not support PNG images, yet that is all this client"); LOG (LOG_WARNING,"common::negotiate_connection","supports. Either the server needs to be upgraded, or you need to"); LOG (LOG_WARNING,"common::negotiate_connection","downgrade your client."); exit(1); } /* If the user has specified a numeric face id, use it. If it is a string * like base, then that resolves to 0, so no real harm in that. */ if (face_info.want_faceset) face_info.faceset = atoi(face_info.want_faceset); /* For sound, a value following determines which sound features are * wanted. The value is 1 for sound effects, and 2 for background music, * or the sum of 1 + 2 (3) for both. * * For spellmon, try each acceptable level, but make sure the one the * client prefers is last. */ cs_print_string(csocket.fd, "setup map2cmd 1 tick 1 sound2 %d darkness %d spellmon 1 spellmon 2 " "faceset %d facecache %d want_pickup 1 loginmethod %d newmapcmd 1", (sound >= 0) ? 3 : 0, want_config[CONFIG_LIGHTING] ? 1 : 0, face_info.faceset, want_config[CONFIG_CACHE], wantloginmethod); /* * We can do this right now also. There is not any reason to wait. */ cs_print_string(csocket.fd, "requestinfo skill_info"); cs_print_string(csocket.fd,"requestinfo exp_table"); /* * While these are only used for new login method, they should become * standard fairly soon. All of these are pretty small, and do not add * much to the cost. They make it more likely that the information is * ready when the window that needs it is raised. */ cs_print_string(csocket.fd,"requestinfo motd"); cs_print_string(csocket.fd,"requestinfo news"); cs_print_string(csocket.fd,"requestinfo rules"); use_config[CONFIG_MAPHEIGHT]=want_config[CONFIG_MAPHEIGHT]; use_config[CONFIG_MAPWIDTH]=want_config[CONFIG_MAPWIDTH]; mapdata_set_size(use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); if (use_config[CONFIG_MAPHEIGHT]!=11 || use_config[CONFIG_MAPWIDTH]!=11) cs_print_string(csocket.fd,"setup mapsize %dx%d",use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); use_config[CONFIG_SMOOTH]=want_config[CONFIG_SMOOTH]; /* If the server will answer the requestinfo for image_info and image_data, * send it and wait for the response. */ if (csocket.sc_version >= 1027) { /* last_start is -99. This means the first face requested will be 1 * (not 0) - this is OK because 0 is defined as the blank face. */ int last_end=0, last_start=-99; cs_print_string(csocket.fd,"requestinfo image_info"); requestinfo_sent = RI_IMAGE_INFO; replyinfo_status = 0; replyinfo_last_face = 0; do { DoClient(&csocket); /* * It is rare, but the connection can die while getting this info. */ if (csocket.fd == -1) return; if (use_config[CONFIG_DOWNLOAD]) { /* * We need to know how many faces to be able to make the * request intelligently. So only do the following block if * we have that info. By setting the sent flag, we will never * exit this loop until that happens. */ requestinfo_sent |= RI_IMAGE_SUMS; if (face_info.num_images != 0) { /* * Sort of fake things out - if we have sent the request * for image sums but have not got them all answered yet, * we then clear the bit from the status so we continue to * loop. */ if (last_end == face_info.num_images) { /* Mark that we're all done */ if (replyinfo_last_face == last_end) { replyinfo_status |= RI_IMAGE_SUMS; image_update_download_status(face_info.num_images, face_info.num_images, face_info.num_images); } } else { /* * If we are all caught up, request another 100 sums. */ if (last_end <= (replyinfo_last_face+100)) { last_start += 100; last_end += 100; if (last_end > face_info.num_images) last_end = face_info.num_images; cs_print_string(csocket.fd,"requestinfo image_sums %d %d", last_start, last_end); image_update_download_status(last_start, last_end, face_info.num_images); } } } /* Still have image_sums request to send */ } /* endif download all faces */ usleep(10*1000); /* 10 milliseconds */ /* * Do not put in an upper time limit with tries like we did above. * If the player is downloading all the images, the time this * takes could be considerable. */ } while (replyinfo_status != requestinfo_sent); } if (use_config[CONFIG_DOWNLOAD]) { char buf[MAX_BUF]; snprintf(buf, sizeof(buf), "Download of images complete. Found %d locally, downloaded %d from server\n", face_info.cache_hits, face_info.cache_misses); draw_ext_info(NDI_GOLD, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_CONFIG, buf); } /* This needs to get changed around - we really don't want to send the * SendAddMe until we do all of our negotiation, which may include things * like downloading all the images and whatnot - this is more an issue if * the user is not using the default face set, as in that case, we might * end up building images from the wrong set. * Only run this if not using new login method */ if (!serverloginmethod) SendAddMe(csocket); } crossfire-client-1.70.0/common/item.h0000644000014500000120000000703311731277011014360 00000000000000/* * static char *rcsid_common_item_h = * "$Id: item.h 12149 2009-08-20 02:11:28Z kbulgrien $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/item.h * */ #ifndef ITEM_H #define ITEM_H /* * Use static buffer for object names. Item names are changing so * often that mallocing them it just a waste of time. Also there is * probably some upper limits for names that client can show, Note * that total number of items is small (<100) so this don't even * waste too much memory */ #define NAME_LEN 128 #define copy_name(t,f) strncpy(t, f, NAME_LEN-1); t[NAME_LEN-1]=0; #define NO_ITEM_TYPE 30000 /* * item structure keeps all information what player * (= client) knows about items in its inventory */ typedef struct item_struct { struct item_struct *next; /* next item in inventory */ struct item_struct *prev; /* previous item in inventory */ struct item_struct *env; /* which items inventory is this item */ struct item_struct *inv; /* items inventory */ char d_name[NAME_LEN]; /* item's full name w/o status information */ char s_name[NAME_LEN]; /* item's singular name as sent to us */ char p_name[NAME_LEN]; /* item's plural name as sent to us */ char flags[NAME_LEN]; /* item's status information */ sint32 tag; /* item identifier (0 = free) */ uint32 nrof; /* number of items */ float weight; /* how much item weights */ sint16 face; /* index for face array */ uint16 animation_id; /* Index into animation array */ uint8 anim_speed; /* how often to animate */ uint8 anim_state; /* last face in sequence drawn */ uint16 last_anim; /* how many ticks have passed since we last animated */ uint16 magical:1; /* item is magical */ uint16 cursed:1; /* item is cursed */ uint16 damned:1; /* item is damned */ uint16 unpaid:1; /* item is unpaid */ uint16 locked:1; /* item is locked */ uint16 applied:1; /* item is applied */ uint16 open:1; /* container is open */ uint16 was_open:1; /* container was open */ uint16 inv_updated:1; /* item's inventory is updated, this is set when item's inventory is modified, draw routines can use this to redraw things */ uint8 apply_type; /* how item is applied (worn/wield/etc) */ uint32 flagsval; /* unmodified flags value as sent from the server*/ uint16 type; /* Item type for ordering */ } item; /* Toolkits implement these. */ extern void item_event_item_deleting(item * it); extern void item_event_container_clearing(item * container); /* TODO More fine-grained event - but how to handle it? */ extern void item_event_item_changed(item * it); extern int can_write_spell_on(item* it); #endif /* ITEM_H */ crossfire-client-1.70.0/common/svnversion.h0000644000014500000120000000010311731277216015634 00000000000000/* Auto-generated at build time. */ #define SVN_REV "17586:17587M" crossfire-client-1.70.0/common/version.h0000644000014500000120000000017211731277011015104 00000000000000#include #ifdef SVN_REV #define FULL_VERSION VERSION"-r"SVN_REV #else #define FULL_VERSION VERSION #endif crossfire-client-1.70.0/common/proto.h0000644000014500000120000001501311731277011014562 00000000000000/* client.c */ void DoClient(ClientSocket *csocket); int init_connection(char *host, int port); void negotiate_connection(int sound); /* commands.c */ void close_server_connection(void); void ReplyInfoCmd(uint8 *buf, int len); void SetupCmd(char *buf, int len); void ExtendedInfoSetCmd(char *data, int len); void AddMeFail(char *data, int len); void AddMeSuccess(char *data, int len); void GoodbyeCmd(char *data, int len); void AnimCmd(unsigned char *data, int len); void SmoothCmd(unsigned char *data, int len); void DrawInfoCmd(char *data, int len); void setTextManager(int type, ExtTextManager callback); void DrawExtInfoCmd(char *data, int len); void use_skill(int skill_id); void StatsCmd(unsigned char *data, int len); void handle_query(char *data, int len); void send_reply(const char *text); void PlayerCmd(unsigned char *data, int len); void item_actions(item *op); void Item2Cmd(unsigned char *data, int len); void UpdateItemCmd(unsigned char *data, int len); void DeleteItem(unsigned char *data, int len); void DeleteInventory(unsigned char *data, int len); void AddspellCmd(unsigned char *data, int len); void UpdspellCmd(unsigned char *data, int len); void DeleteSpell(unsigned char *data, int len); void NewmapCmd(unsigned char *data, int len); void Map2Cmd(unsigned char *data, int len); void map_scrollCmd(char *data, int len); int ExtSmooth(unsigned char *data, int len, int x, int y, int layer); void MapExtendedCmd(unsigned char *data, int len); void MagicMapCmd(unsigned char *data, int len); void SinkCmd(unsigned char *data, int len); void TickCmd(uint8 *data, int len); void PickupCmd(uint8 *data, int len); void FailureCmd(char *buf, int len); void AccountPlayersCmd(char *buf, int len); void free_all_race_class_info(Race_Class_Info *data, int num_entries); /* image.c */ void init_common_cache_data(void); void requestface(int pnum, char *facename); void finish_face_cmd(int pnum, uint32 checksum, int has_sum, char *face, int faceset); void reset_image_cache_data(void); void Face2Cmd(uint8 *data, int len); void Image2Cmd(uint8 *data, int len); void display_newpng(int face, uint8 *buf, int buflen, int setnum); void get_image_info(uint8 *data, int len); void get_image_sums(char *data, int len); /* init.c */ void VersionCmd(char *data, int len); void SendVersion(ClientSocket csock); void SendAddMe(ClientSocket csock); void init_client_vars(void); void reset_player_data(void); void reset_client_vars(void); /* item.c */ uint8 get_type_from_name(const char *name); void update_item_sort(item *it); const char *get_number(uint32 i); void free_all_items(item *op); item *locate_item(sint32 tag); void remove_item(item *op); void remove_item_inventory(item *op); item *create_new_item(item *env, sint32 tag); int num_free_items(void); void set_item_values(item *op, char *name, sint32 weight, uint16 face, uint16 flags, uint16 anim, uint16 animspeed, uint32 nrof, uint16 type); void toggle_locked(item *op); void send_mark_obj(item *op); item *player_item(void); item *map_item(void); void update_item(int tag, int loc, char *name, int weight, int face, int flags, int anim, int animspeed, uint32 nrof, int type); void print_inventory(item *op); void animate_objects(void); int can_write_spell_on(item *it); void inscribe_magical_scroll(item *scroll, Spell *spell); /* mapdata.c */ void mapdata_init(void); void mapdata_reset(void); void mapdata_set_size(int viewx, int viewy); int mapdata_is_inside(int x, int y); void mapdata_clear_space(int x, int y); void mapdata_set_check_space(int x, int y); void mapdata_set_darkness(int x, int y, int darkness); void mapdata_set_smooth(int x, int y, int smooth, int layer); void mapdata_clear_old(int x, int y); void mapdata_set_face_layer(int x, int y, sint16 face, int layer); void mapdata_set_anim_layer(int x, int y, uint16 anim, uint8 anim_speed, int layer); void mapdata_scroll(int dx, int dy); void mapdata_newmap(void); sint16 mapdata_face(int x, int y, int layer); sint16 mapdata_bigface(int x, int y, int layer, int *ww, int *hh); sint16 mapdata_bigface_head(int x, int y, int layer, int *ww, int *hh); void mapdata_animation(void); /* metaserver.c */ int check_server_version(int entry); size_t metaserver2_writer(void *ptr, size_t size, size_t nmemb, void *data); void *metaserver2_thread(void *junk); int metaserver2_get_info(void); void init_metaserver(void); void *metaserver1_thread(void *junk); int metaserver1_get_info(void); int metaserver_check_status(void); int metaserver_get_info(char *metaserver, int meta_port); void metaserver_show(int show_selection); int metaserver_select(char *sel); /* misc.c */ int make_path_to_dir(char *directory); int make_path_to_file(char *filename); char *strdup_local(const char *str); int setLogListener(LogListener li); void clearLogListener(void); char *getLogTextRaw(LogLevel level, const char *origin, const char *message); char *getLogText(const LogEntry *le); void LOG(LogLevel level, const char *origin, const char *format, ...); void purgePipe(ChildProcess *cp, int pipe); void monitorChilds(void); void logPipe(ChildProcess *child, LogLevel level, int pipe); void logChildPipe(ChildProcess *child, LogLevel level, int flag); ChildProcess *raiseChild(char *name, int flag); /* newsocket.c */ void SockList_Init(SockList *sl, uint8 *buf); void SockList_AddChar(SockList *sl, char c); void SockList_AddShort(SockList *sl, uint16 data); void SockList_AddInt(SockList *sl, uint32 data); void SockList_AddString(SockList *sl, const char *str); int SockList_Send(SockList *sl, int fd); char GetChar_String(const unsigned char *data); int GetInt_String(const unsigned char *data); sint64 GetInt64_String(const unsigned char *data); short GetShort_String(const unsigned char *data); int SockList_ReadPacket(int fd, SockList *sl, int len); int cs_print_string(int fd, const char *str, ...); /* p_cmd.c */ /* player.c */ void new_player(long tag, char *name, long weight, long face); void look_at(int x, int y); void client_send_apply(int tag); void client_send_examine(int tag); void client_send_move(int loc, int tag, int nrof); void move_player(int dir); void stop_fire(void); void clear_fire_run(void); void clear_fire(void); void clear_run(void); void fire_dir(int dir); void stop_run(void); void run_dir(int dir); int send_command(const char *command, int repeat, int must_send); void CompleteCmd(unsigned char *data, int len); void command_take(const char *command, const char *cpnext); /* script.c */ /* script_lua.c */ void script_lua_load(const char *name); void script_lua_list(const char *param); void script_lua_kill(const char *param); void script_lua_stats(void); int script_lua_command(const char *command, const char *param); crossfire-client-1.70.0/common/mapdata.c0000644000014500000120000011630011731277011015022 00000000000000/* $Id: mapdata.c 12149 2009-08-20 02:11:28Z kbulgrien $ */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/mapdata.c * Map processing functions. */ #include #include #include "client.h" #include "external.h" #include "mapdata.h" /** * Clear cells the_map.cells[x][y..y+len_y-1]. */ #define CLEAR_CELLS(x, y, len_y) \ do { \ int clear_cells_i, j; \ memset(&the_map.cells[(x)][(y)], 0, sizeof(the_map.cells[(x)][(y)])*(len_y)); \ for (clear_cells_i = 0; clear_cells_i < (len_y); clear_cells_i++) \ { \ for (j=0; j < MAXLAYERS; j++) { \ the_map.cells[(x)][(y)+clear_cells_i].heads[j].size_x = 1; \ the_map.cells[(x)][(y)+clear_cells_i].heads[j].size_y = 1; \ } \ } \ } while(0) /** * Size of virtual map. */ #define FOG_MAP_SIZE 512 /** * After shifting the virtual map: new minimum distance of the view area to the * new virtual map border. */ #define FOG_BORDER_MIN 128 /** * Maximum size of a big face image in tiles. Larger faces will be clipped top/left. */ #define MAX_FACE_SIZE 16 /* Max it can currently be. Important right now because * animation has to look at everything that may be viewable, * and reducing this size basically reduces processing it needs * to do by 75% (64^2 vs 33^2) */ #define CURRENT_MAX_VIEW 33 /** * The struct BigCell describes a tile *outside* the view area. head contains * the head (as sent by the server), tail contains the expanded big face. tail * is *not* set for the head cell, that is (for example) a big face with size * 2x3 occupies exactly 6 entries: 1 head and 5 tails. * * next and prev for a doubly linked list of all currently active entries. * Unused entries are set to NULL. * * x, y, and layer contain the position of the cell in the bigfaces[] array. * This information allows to find the corresponding bigfaces[] cell when * iterating through the next pointers. */ struct BigCell { struct BigCell *next; struct BigCell *prev; struct MapCellLayer head; struct MapCellLayer tail; uint16 x, y; uint8 layer; }; static void recenter_virtual_map_view(int diff_x, int diff_y); static void mapdata_get_image_size(int face, uint8 *w, uint8 *h); /** * Viewable map size. */ static int width, height; /** * Contains the head of a list of all currently active big faces outside the * view area. All entries are part of bigfaces[]. */ static struct BigCell *bigfaces_head; /** * The variable bigfaces[] contains information about big faces (faces with a * width or height >1). The viewable area bigfaces[0..width-1][0..height-1] is * unused. */ static struct BigCell bigfaces[MAX_VIEW][MAX_VIEW][MAXLAYERS]; struct Map the_map; /** * Update darkness information. This function is called whenever a map1a * command from the server was received. * * x and y are absolute coordinates into the_map.cells[]. * * darkness is the new darkness value. */ static void set_darkness(int x, int y, int darkness) { the_map.cells[x][y].have_darkness = 1; if (the_map.cells[x][y].darkness == darkness) { return; } the_map.cells[x][y].darkness = darkness; the_map.cells[x][y].need_update = 1; /* pretty ugly - since the light code with pngximage uses neighboring * spaces to adjust the darkness, we now need to let the neighbors know * they should update their darkness now. */ if (use_config[CONFIG_DISPLAYMODE] == CFG_DM_SDL && (use_config[CONFIG_LIGHTING] == CFG_LT_PIXEL || use_config[CONFIG_LIGHTING] == CFG_LT_PIXEL_BEST)) { if (x > 1) the_map.cells[x-1][y].need_update = 1; if (y > 1) the_map.cells[x][y-1].need_update = 1; if (x < width-1) the_map.cells[x+1][y].need_update = 1; if (y < height-1) the_map.cells[x][y+1].need_update = 1; } } static void mark_resmooth(int x, int y, int layer){ int sdx,sdy; if (the_map.cells[x][y].smooth[layer]>1){ for (sdx=-1;sdx<2;sdx++) for (sdy=-1;sdy<2;sdy++) if ( (sdx || sdy) /* ignore (0,0) */ && ( (x+sdx >0) && (x+sdx < FOG_MAP_SIZE) && /* only inside map */ (y+sdy >0) && (y+sdy < FOG_MAP_SIZE) ) ) the_map.cells[x+sdx][y+sdy].need_resmooth=1; } } /** * Clear a face from the_map.cells[]. * * x, y, and layer are the coordinates of the head and layer relative to * pl_pos. * * w and h give the width and height of the face to clear. */ static void expand_clear_face(int x, int y, int w, int h, int layer) { int dx, dy; struct MapCell *cell; assert(0 <= x && x < FOG_MAP_SIZE); assert(0 <= y && y < FOG_MAP_SIZE); assert(1 <= w && w <= MAX_FACE_SIZE); assert(1 <= h && h <= MAX_FACE_SIZE); assert(0 <= x-w+1 && x-w+1 < FOG_MAP_SIZE); assert(0 <= y-h+1 && y-h+1 < FOG_MAP_SIZE); cell = &the_map.cells[x][y]; for (dx = 0; dx < w; dx++) { for (dy = !dx; dy < h; dy++) { struct MapCellLayer *tail = &the_map.cells[x-dx][y-dy].tails[layer]; assert(0 <= x-dx && x-dx < FOG_MAP_SIZE); assert(0 <= y-dy && y-dy < FOG_MAP_SIZE); assert(0 <= layer && layer < MAXLAYERS); /* Do not clear faces that already have been overwritten by another * face. */ if (tail->face == cell->heads[layer].face && tail->size_x == dx && tail->size_y == dy) { tail->face = 0; tail->size_x = 0; tail->size_y = 0; the_map.cells[x-dx][y-dy].need_update = 1; } mark_resmooth(x-dx,y-dy,layer); } } cell->heads[layer].face = 0; cell->heads[layer].animation = 0; cell->heads[layer].animation_speed = 0; cell->heads[layer].animation_left = 0; cell->heads[layer].animation_phase = 0; cell->heads[layer].size_x = 1; cell->heads[layer].size_y = 1; cell->need_update = 1; cell->need_resmooth = 1; mark_resmooth(x,y,layer); } /** * Clear a face from the_map.cells[]. * * x, y, and layer are the coordinates of the head and layer relative to * pl_pos. */ static void expand_clear_face_from_layer(int x, int y, int layer) { const struct MapCellLayer *cell; assert(0 <= x && x < FOG_MAP_SIZE); assert(0 <= y && y < FOG_MAP_SIZE); assert(0 <= layer && layer < MAXLAYERS); cell = &the_map.cells[x][y].heads[layer]; if (cell->size_x && cell->size_y) expand_clear_face(x, y, cell->size_x, cell->size_y, layer); } /** * Update a face into the_map.cells[]. * * x, y, and layer are the coordinates and layer of the head relative to * pl_pos. * * face is the new face to set. * if clear is set, clear this face. If not set, don't clear. the reason * clear may not be set is because this is an animation update - animations * must all be the same size, so when we set the data for the space, * we will just overwrite the old data. Problem with clearing is that * clobbers the animation data. */ static void expand_set_face(int x, int y, int layer, sint16 face, int clear) { struct MapCell *cell; int dx, dy; uint8 w, h; assert(0 <= x && x < FOG_MAP_SIZE); assert(0 <= y && y < FOG_MAP_SIZE); assert(0 <= layer && layer < MAXLAYERS); cell = &the_map.cells[x][y]; if (clear) expand_clear_face_from_layer(x, y, layer); mapdata_get_image_size(face, &w, &h); assert(1 <= w && w <= MAX_FACE_SIZE); assert(1 <= h && h <= MAX_FACE_SIZE); cell->heads[layer].face = face; cell->heads[layer].size_x = w; cell->heads[layer].size_y = h; cell->need_update=1; mark_resmooth(x,y,layer); for (dx = 0; dx < w; dx++) { for (dy = !dx; dy < h; dy++) { struct MapCellLayer *tail = &the_map.cells[x-dx][y-dy].tails[layer]; assert(0 <= x-dx && x-dx < FOG_MAP_SIZE); assert(0 <= y-dy && y-dy < FOG_MAP_SIZE); assert(0 <= layer && layer < MAXLAYERS); tail->face = face; tail->size_x = dx; tail->size_y = dy; the_map.cells[x-dx][y-dy].need_update = 1; mark_resmooth(x-dx,y-dy,layer); } } } /** * Clear a face from bigfaces[]. * * x, y, and layer are the coordinates and layer of the head relative to * pl_pos. * * w and h give the width and height of the face to clear. * * If set_need_update is set, all affected tiles are marked as "need_update". */ static void expand_clear_bigface(int x, int y, int w, int h, int layer, int set_need_update) { int dx, dy; struct MapCellLayer *head; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); assert(1 <= w && w <= MAX_FACE_SIZE); assert(1 <= h && h <= MAX_FACE_SIZE); head = &bigfaces[x][y][layer].head; for (dx = 0; dx < w && dx <= x; dx++) { for (dy = !dx; dy < h && dy <= y; dy++) { struct MapCellLayer *tail = &bigfaces[x-dx][y-dy][layer].tail; assert(0 <= x-dx && x-dx < MAX_VIEW); assert(0 <= y-dy && y-dy < MAX_VIEW); assert(0 <= layer && layer < MAXLAYERS); /* Do not clear faces that already have been overwritten by another * face. */ if (tail->face == head->face && tail->size_x == dx && tail->size_y == dy) { tail->face = 0; tail->size_x = 0; tail->size_y = 0; if (0 <= x-dx && x-dx < width && 0 <= y-dy && y-dy < height) { assert(0 <= pl_pos.x+x-dx && pl_pos.x+x-dx < FOG_MAP_SIZE); assert(0 <= pl_pos.y+y-dy && pl_pos.y+y-dy < FOG_MAP_SIZE); if (set_need_update) { the_map.cells[pl_pos.x+x-dx][pl_pos.y+y-dy].need_update = 1; } } } } } head->face = 0; head->size_x = 1; head->size_y = 1; } /** * Clear a face from bigfaces[]. * * x, y, and layer are the coordinates and layer of the head relative to * pl_pos. * * If set_need_update is set, all affected tiles are marked as "need_update". */ static void expand_clear_bigface_from_layer(int x, int y, int layer, int set_need_update) { struct BigCell *headcell; const struct MapCellLayer *head; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); assert(0 <= layer && layer < MAXLAYERS); headcell = &bigfaces[x][y][layer]; head = &headcell->head; if (head->face != 0) { assert(headcell->prev != NULL || headcell == bigfaces_head); /* remove from bigfaces_head list */ if (headcell->prev != NULL) headcell->prev->next = headcell->next; if (headcell->next != NULL) headcell->next->prev = headcell->prev; if (bigfaces_head == headcell) { assert(headcell->prev == NULL); bigfaces_head = headcell->next; } else { assert(headcell->prev != NULL); } headcell->prev = NULL; headcell->next = NULL; expand_clear_bigface(x, y, head->size_x, head->size_y, layer, set_need_update); } else { assert(headcell->prev == NULL && headcell != bigfaces_head); assert(head->size_x == 1); assert(head->size_y == 1); } } /** * Update a face into bigfaces[]. * * x, y, and layer are the coordinates and layer of the head relative to * pl_pos. * * face is the new face to set. */ static void expand_set_bigface(int x, int y, int layer, sint16 face, int clear) { struct BigCell *headcell; struct MapCellLayer *head; int dx, dy; uint8 w, h; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); assert(0 <= layer && layer < MAXLAYERS); headcell = &bigfaces[x][y][layer]; head = &headcell->head; if (clear) expand_clear_bigface_from_layer(x, y, layer, 1); /* add to bigfaces_head list */ if (face != 0) { assert(headcell->prev == NULL); assert(headcell->next == NULL); assert(headcell != bigfaces_head); if (bigfaces_head != NULL) { assert(bigfaces_head->prev == NULL); bigfaces_head->prev = headcell; } headcell->next = bigfaces_head; bigfaces_head = headcell; } mapdata_get_image_size(face, &w, &h); assert(1 <= w && w <= MAX_FACE_SIZE); assert(1 <= h && h <= MAX_FACE_SIZE); head->face = face; head->size_x = w; head->size_y = h; for (dx = 0; dx < w && dx <= x; dx++) { for (dy = !dx; dy < h && dy <= y; dy++) { struct MapCellLayer *tail = &bigfaces[x-dx][y-dy][layer].tail; assert(0 <= x-dx && x-dx < MAX_VIEW); assert(0 <= y-dy && y-dy < MAX_VIEW); assert(0 <= layer && layer < MAXLAYERS); tail->face = face; tail->size_x = dx; tail->size_y = dy; if (0 <= x-dx && x-dx < width && 0 <= y-dy && y-dy < height) { assert(0 <= pl_pos.x+x-dx && pl_pos.x+x-dx < FOG_MAP_SIZE); assert(0 <= pl_pos.y+y-dy && pl_pos.y+y-dy < FOG_MAP_SIZE); the_map.cells[pl_pos.x+x-dx][pl_pos.y+y-dy].need_update = 1; } } } } /** * Mark a face as "need_update". * * x and y are the coordinates of the head relative to pl_pos. * * w and h is the size of the face. */ static void expand_need_update(int x, int y, int w, int h) { int dx, dy; assert(0 <= x && x < FOG_MAP_SIZE); assert(0 <= y && y < FOG_MAP_SIZE); assert(1 <= w && w <= MAX_FACE_SIZE); assert(1 <= h && h <= MAX_FACE_SIZE); assert(0 <= x-w+1 && x-w+1 < FOG_MAP_SIZE); assert(0 <= y-h+1 && y-h+1 < FOG_MAP_SIZE); for (dx = 0; dx < w; dx++) { for (dy = 0; dy < h; dy++) { struct MapCell *cell = &the_map.cells[x-dx][y-dy]; assert(0 <= x-dx && x-dx < FOG_MAP_SIZE); assert(0 <= y-dy && y-dy < FOG_MAP_SIZE); cell->need_update = 1; } } } /** * Mark a face as "need_update". * * x, y, and layer are the coordinates and layer of the head relative to * pl_pos. */ static void expand_need_update_from_layer(int x, int y, int layer) { struct MapCellLayer *head; assert(0 <= x && x < FOG_MAP_SIZE); assert(0 <= y && y < FOG_MAP_SIZE); assert(0 <= layer && layer < MAXLAYERS); head = &the_map.cells[x][y].heads[layer]; if (head->face != 0) { expand_need_update(x, y, head->size_x, head->size_y); } else { assert(head->size_x == 1); assert(head->size_y == 1); } } void mapdata_init(void) { int x, y; int i; if (the_map.cells == NULL) { the_map.cells = malloc( sizeof(*the_map.cells)*FOG_MAP_SIZE+ sizeof(**the_map.cells)*FOG_MAP_SIZE*FOG_MAP_SIZE); if (the_map.cells == NULL) { LOG(LOG_ERROR, "mapdata_init", "%s\n", "out of memory"); exit(1); } /* Skip past the first row of pointers to rows and assign the * start of the actual map data */ the_map.cells[0] = (struct MapCell *)((char *)the_map.cells+(sizeof(struct MapCell *)*FOG_MAP_SIZE)); /* Finish assigning the beginning of each row relative to the * first row assigned above */ for (i = 0; i < FOG_MAP_SIZE; i++) { the_map.cells[i] = the_map.cells[0]+i*FOG_MAP_SIZE; } the_map.x = FOG_MAP_SIZE; the_map.y = FOG_MAP_SIZE; } width = 0; height = 0; pl_pos.x = FOG_MAP_SIZE/2-width/2; pl_pos.y = FOG_MAP_SIZE/2-height/2; for (x = 0; x < FOG_MAP_SIZE; x++) { CLEAR_CELLS(x, 0, FOG_MAP_SIZE); } for (y = 0; y < MAX_VIEW; y++) { for (x = 0; x < MAX_VIEW; x++) { for (i = 0; i < MAXLAYERS; i++) { bigfaces[x][y][i].next = NULL; bigfaces[x][y][i].prev = NULL; bigfaces[x][y][i].head.face = 0; bigfaces[x][y][i].head.size_x = 1; bigfaces[x][y][i].head.size_y = 1; bigfaces[x][y][i].tail.face = 0; bigfaces[x][y][i].tail.size_x = 0; bigfaces[x][y][i].tail.size_y = 0; bigfaces[x][y][i].x = x; bigfaces[x][y][i].y = y; bigfaces[x][y][i].layer = i; } } } bigfaces_head = NULL; } void mapdata_reset(void) { mapdata_init(); } void mapdata_set_size(int viewx, int viewy) { mapdata_init(); width = viewx; height = viewy; pl_pos.x = FOG_MAP_SIZE/2-width/2; pl_pos.y = FOG_MAP_SIZE/2-height/2; } int mapdata_is_inside(int x, int y) { return(x >= 0 && x < width && y >= 0 && y < height); } /* mapdate_clear_space() is used by Map2Cmd() * Basically, server has told us there is nothing on * this space. So clear it. */ void mapdata_clear_space(int x, int y) { int px, py; int i; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); px = pl_pos.x+x; py = pl_pos.y+y; assert(0 <= px && px < FOG_MAP_SIZE); assert(0 <= py && py < FOG_MAP_SIZE); if (x < width && y < height) { /* tile is visible */ /* visible tile is now blank ==> do not clear but mark as cleared */ if (!the_map.cells[px][py].cleared) { the_map.cells[px][py].cleared = 1; the_map.cells[px][py].need_update = 1; for (i=0; i < MAXLAYERS; i++) if (the_map.cells[px][py].heads[i].face) expand_need_update_from_layer(px, py, i); } } else { /* tile is invisible (outside view area, i.e. big face update) */ for (i = 0; i < MAXLAYERS; i++) { expand_set_bigface(x, y, i, 0, TRUE); } } } /* With map2, we basically process a piece of data at a time. Thus, * for each piece, we don't know what the final state of the space * will be. So once Map2Cmd() has processed all the information for * a space, it calls mapdata_set_check_space() which can see if * the space is cleared or other inconsistencies. */ void mapdata_set_check_space(int x, int y) { int px, py; int is_blank; int i; struct MapCell *cell; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); px = pl_pos.x+x; py = pl_pos.y+y; assert(0 <= px && px < FOG_MAP_SIZE); assert(0 <= py && py < FOG_MAP_SIZE); is_blank=1; cell = &the_map.cells[px][py]; for (i=0; i < MAXLAYERS; i++) { if (cell->heads[i].face>0 || cell->tails[i].face>0) { is_blank=0; break; } } if (cell->have_darkness) is_blank=0; /* We only care if this space needs to be blanked out */ if (!is_blank) return; if (x < width && y < height) { /* tile is visible */ /* visible tile is now blank ==> do not clear but mark as cleared */ if (!the_map.cells[px][py].cleared) { the_map.cells[px][py].cleared = 1; the_map.cells[px][py].need_update = 1; for (i=0; i < MAXLAYERS; i++) expand_need_update_from_layer(px, py, i); } } } /* This just sets the darkness for a space. * Used by Map2Cmd() */ void mapdata_set_darkness(int x, int y, int darkness) { int px, py; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); px = pl_pos.x+x; py = pl_pos.y+y; assert(0 <= px && px < FOG_MAP_SIZE); assert(0 <= py && py < FOG_MAP_SIZE); /* Ignore darkness information for tile outside the viewable area: if * such a tile becomes visible again, it is either "fog of war" (and * darkness information is ignored) or it will be updated (including * the darkness information). */ if (darkness != -1 && x < width && y < height) { set_darkness(px, py, 255-darkness); } } /* Sets smooth information for layer */ void mapdata_set_smooth(int x, int y, int smooth, int layer) { static int dx[8]={0,1,1,1,0,-1,-1,-1}; static int dy[8]={-1,-1,0,1,1,1,0,-1}; int rx, ry, px, py, i; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); px = pl_pos.x+x; py = pl_pos.y+y; assert(0 <= px && px < FOG_MAP_SIZE); assert(0 <= py && py < FOG_MAP_SIZE); if (the_map.cells[px][py].smooth[layer] != smooth) { for (i=0;i<8;i++){ rx=px+dx[i]; ry=py+dy[i]; if ( (rx<0) || (ry<0) || (the_map.x<=rx) || (the_map.y<=ry)) continue; the_map.cells[rx][ry].need_resmooth=1; } the_map.cells[px][py].need_resmooth=1; the_map.cells[px][py].smooth[layer] = smooth; } } /* If old cell data is set and is to be cleared, clear it. * This used to be in mapdata_set_face_layer(), however it needs to be * called here, earlier in the Map2Cmd() because otherwise darkness * doesn't work went sent before the layer data when that square was * going to be cleared. This is used by the Map2Cmd() */ void mapdata_clear_old(int x, int y) { int px, py; int i; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); px = pl_pos.x+x; py = pl_pos.y+y; assert(0 <= px && px < FOG_MAP_SIZE); assert(0 <= py && py < FOG_MAP_SIZE); if (x < width && y < height) if (the_map.cells[px][py].cleared) { for (i=0; i < MAXLAYERS; i++) expand_clear_face_from_layer(px, py, i); the_map.cells[px][py].darkness = 0; the_map.cells[px][py].have_darkness = 0; } } /* This is vaguely related to the mapdata_set_face() above, but rather * than take all the faces, takes 1 face and the layer this face is * on. This is used by the Map2Cmd() */ void mapdata_set_face_layer(int x, int y, sint16 face, int layer) { int px, py; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); px = pl_pos.x+x; py = pl_pos.y+y; assert(0 <= px && px < FOG_MAP_SIZE); assert(0 <= py && py < FOG_MAP_SIZE); if (x < width && y < height) { the_map.cells[px][py].need_update = 1; if (face >0) expand_set_face(px, py, layer, face, TRUE); else { expand_clear_face_from_layer(px, py, layer); } the_map.cells[px][py].cleared = 0; } else { expand_set_bigface(x, y, layer, face, TRUE); } } /* This is vaguely related to the mapdata_set_face() above, but rather * than take all the faces, takes 1 face and the layer this face is * on. This is used by the Map2Cmd() */ void mapdata_set_anim_layer(int x, int y, uint16 anim, uint8 anim_speed, int layer) { int px, py; int i, face, animation, phase, speed_left; assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); px = pl_pos.x+x; py = pl_pos.y+y; assert(0 <= px && px < FOG_MAP_SIZE); assert(0 <= py && py < FOG_MAP_SIZE); animation = anim & ANIM_MASK; face = 0; /* Random animation is pretty easy */ if ((anim & ANIM_FLAGS_MASK) == ANIM_RANDOM) { phase = random() % animations[animation].num_animations; face = animations[animation].faces[phase]; speed_left = anim_speed % random(); } else if ((anim & ANIM_FLAGS_MASK) == ANIM_SYNC) { animations[animation].speed = anim_speed; phase = animations[animation].phase; speed_left = animations[animation].speed_left; face = animations[animation].faces[phase]; } if (x < width && y < height) { the_map.cells[px][py].need_update = 1; if (the_map.cells[px][py].cleared) { for (i=0; i < MAXLAYERS; i++) expand_clear_face_from_layer(px, py, i); the_map.cells[px][py].darkness = 0; the_map.cells[px][py].have_darkness = 0; } if (face >0) { expand_set_face(px, py, layer, face, TRUE); the_map.cells[px][py].heads[layer].animation = animation; the_map.cells[px][py].heads[layer].animation_phase = phase; the_map.cells[px][py].heads[layer].animation_speed = anim_speed; the_map.cells[px][py].heads[layer].animation_left = speed_left; } else { expand_clear_face_from_layer(px, py, layer); } the_map.cells[px][py].cleared = 0; } else { expand_set_bigface(x, y, layer, face, TRUE); } } void mapdata_scroll(int dx, int dy) { int x, y; recenter_virtual_map_view(dx, dy); if (want_config[CONFIG_MAPSCROLL] && display_mapscroll(dx, dy)) { struct BigCell *cell; /* Mark all tiles as "need_update" that are overlapped by a big face * from outside the view area. */ for (cell = bigfaces_head; cell != NULL; cell = cell->next) { for (x = 0; x < cell->head.size_x; x++) { for (y = !x; y < cell->head.size_y; y++) { if (0 <= cell->x-x && cell->x-x < width && 0 <= cell->y-y && cell->y-y < height) { the_map.cells[pl_pos.x+cell->x-x][pl_pos.y+cell->y-y].need_update = 1; } } } } } else { /* Emulate map scrolling by redrawing all tiles. */ for (x = 0; x < width; x++) { for (y = 0; y < height; y++) { the_map.cells[pl_pos.x+x][pl_pos.y+y].need_update = 1; } } } pl_pos.x += dx; pl_pos.y += dy; /* clear all newly visible tiles */ if (dx > 0) { for (y = 0; y < height; y++) { for (x = width-dx; x < width; x++) { the_map.cells[pl_pos.x+x][pl_pos.y+y].cleared = 1; the_map.cells[pl_pos.x+x][pl_pos.y+y].need_update = 1; } } } else { for (y = 0; y < height; y++) { for (x = 0; x < -dx; x++) { the_map.cells[pl_pos.x+x][pl_pos.y+y].cleared = 1; the_map.cells[pl_pos.x+x][pl_pos.y+y].need_update = 1; } } } if (dy > 0) { for (x = 0; x < width; x++) { for (y = height-dy; y < height; y++) { the_map.cells[pl_pos.x+x][pl_pos.y+y].cleared = 1; the_map.cells[pl_pos.x+x][pl_pos.y+y].need_update = 1; } } } else { for (x = 0; x < width; x++) { for (y = 0; y < -dy; y++) { the_map.cells[pl_pos.x+x][pl_pos.y+y].cleared = 1; the_map.cells[pl_pos.x+x][pl_pos.y+y].need_update = 1; } } } /* Remove all big faces outside the view area. */ while (bigfaces_head != NULL) { expand_clear_bigface_from_layer(bigfaces_head->x, bigfaces_head->y, bigfaces_head->layer, 0); } } void mapdata_newmap(void) { int x, y; /* Clear the_map.cells[]. */ for (x = 0; x < FOG_MAP_SIZE; x++) { CLEAR_CELLS(x, 0, FOG_MAP_SIZE); for (y = 0; y < FOG_MAP_SIZE; y++) { the_map.cells[x][y].need_update = 1; } } /* Clear bigfaces[]. */ while (bigfaces_head != NULL) { expand_clear_bigface_from_layer(bigfaces_head->x, bigfaces_head->y, bigfaces_head->layer, 0); } display_map_newmap(); } sint16 mapdata_face(int x, int y, int layer) { if (width <= 0) return(0); assert(0 <= x && x < width); assert(0 <= y && y < height); assert(0 <= layer && layer < MAXLAYERS); return(the_map.cells[pl_pos.x+x][pl_pos.y+y].heads[layer].face); } sint16 mapdata_bigface(int x, int y, int layer, int *ww, int *hh) { sint16 result; if (width <= 0) return(0); assert(0 <= x && x < width); assert(0 <= y && y < height); assert(0 <= layer && layer < MAXLAYERS); result = the_map.cells[pl_pos.x+x][pl_pos.y+y].tails[layer].face; if (result != 0) { int clear_bigface; int dx = the_map.cells[pl_pos.x+x][pl_pos.y+y].tails[layer].size_x; int dy = the_map.cells[pl_pos.x+x][pl_pos.y+y].tails[layer].size_y; int w = the_map.cells[pl_pos.x+x+dx][pl_pos.y+y+dy].heads[layer].size_x; int h = the_map.cells[pl_pos.x+x+dx][pl_pos.y+y+dy].heads[layer].size_y; assert(1 <= w && w <= MAX_FACE_SIZE); assert(1 <= h && h <= MAX_FACE_SIZE); assert(0 <= dx && dx < w); assert(0 <= dy && dy < h); /* Now check if we are about to display an obsolete big face: such a * face has a cleared ("fog of war") head but the current tile is not * fog of war. Since the server would have sent an appropriate head * tile if it was already valid, just clear the big face and do not * return it. */ if (the_map.cells[pl_pos.x+x][pl_pos.y+y].cleared) { /* Current face is a "fog of war" tile ==> do not clear * old information. */ clear_bigface = 0; } else { if (x+dx < width && y+dy < height) { /* Clear face if current tile is valid but the * head is marked as cleared. */ clear_bigface = the_map.cells[pl_pos.x+x+dx][pl_pos.y+y+dy].cleared; } else { /* Clear face if current tile is valid but the * head is not set. */ clear_bigface = bigfaces[x+dx][y+dy][layer].head.face == 0; } } if (!clear_bigface) { *ww = w-1-dx; *hh = h-1-dy; return(result); } assert(the_map.cells[pl_pos.x+x][pl_pos.y+y].tails[layer].face == result); expand_clear_face_from_layer(pl_pos.x+x+dx, pl_pos.y+y+dy, layer); assert(the_map.cells[pl_pos.x+x][pl_pos.y+y].tails[layer].face == 0); } result = bigfaces[x][y][layer].tail.face; if (result != 0) { int dx = bigfaces[x][y][layer].tail.size_x; int dy = bigfaces[x][y][layer].tail.size_y; int w = bigfaces[x+dx][y+dy][layer].head.size_x; int h = bigfaces[x+dx][y+dy][layer].head.size_y; assert(0 <= dx && dx < w); assert(0 <= dy && dy < h); *ww = w-1-dx; *hh = h-1-dy; return(result); } *ww = 1; *hh = 1; return(0); } /* This is used by the opengl logic. * Basically the opengl code draws the the entire image, * and doesn't care if if portions are off the edge * (opengl takes care of that). So basically, this * function returns only if the head for a space is set, * otherwise, returns 0 - we don't care about the tails * or other details really. */ sint16 mapdata_bigface_head(int x, int y, int layer, int *ww, int *hh) { sint16 result; if (width <= 0) return(0); assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); assert(0 <= layer && layer < MAXLAYERS); result = bigfaces[x][y][layer].head.face; if (result != 0) { int w = bigfaces[x][y][layer].head.size_x; int h = bigfaces[x][y][layer].head.size_y; *ww = w; *hh = h; return(result); } *ww = 1; *hh = 1; return(0); } /** * Check if current map position is out of bounds if shifted by (dx, dy). If * so, shift the virtual map so that the map view is within bounds again. * * Assures that [pl_pos.x-MAX_FACE_SIZE..pl_pos.x+MAX_VIEW+1] is within the * bounds of the virtual map area. This covers the area a map1a command may * affect plus a one tile border. */ static void recenter_virtual_map_view(int diff_x, int diff_y) { int new_x, new_y; int shift_x, shift_y; int src_x, src_y; int dst_x, dst_y; int len_x, len_y; int sx; int dx; int i; /* shift player position in virtual map */ new_x = pl_pos.x+diff_x; new_y = pl_pos.y+diff_y; /* determine neccessary amount to shift */ /* if(new_x < 1) is not possible: a big face may reach up to * (MAX_FACE_SIZE-1) tiles to the left of pl_pos. Therefore maintain a * border of at least MAX_FACE_SIZE to the left of the virtual map * edge. */ if (new_x < MAX_FACE_SIZE) { shift_x = FOG_BORDER_MIN+MAX_FACE_SIZE-new_x; /* This yields: new_x+shift_x == FOG_BORDER_MIN+MAX_FACE_SIZE, * i.e. left border is FOG_BORDER_MIN+MAX_FACE_SIZE after * shifting. */ } else if (new_x+MAX_VIEW > FOG_MAP_SIZE) { shift_x = FOG_MAP_SIZE-FOG_BORDER_MIN-MAX_VIEW-new_x; /* This yields: new_x+shift_x == * FOG_MAP_SIZE-FOG_BODER_MIN-MAX_VIEW, i.e. right border is * FOGBORDER_MIN after shifting. */ } else { shift_x = 0; } /* Same as above but for y. */ if (new_y < MAX_FACE_SIZE) { shift_y = FOG_BORDER_MIN+MAX_FACE_SIZE-new_y; } else if (new_y+MAX_VIEW > FOG_MAP_SIZE) { shift_y = FOG_MAP_SIZE-FOG_BORDER_MIN-MAX_VIEW-new_y; } else { shift_y = 0; } /* No shift neccessary? ==> nothing to do. */ if (shift_x == 0 && shift_y == 0) { return; } /* If shifting at all: maintain a border size of FOG_BORDER_MIN to all * directions. For example: if pl_pos=30/MAX_FACE_SIZE, and map_scroll is * 0/-1: shift pl_pos to FOG_BORDER_MIN+1/FOG_BORDER_MIN+1, not to * 30/FOG_BORDER_MIN+1. */ if (shift_x == 0) { if (new_x < FOG_BORDER_MIN+MAX_FACE_SIZE) { shift_x = FOG_BORDER_MIN+MAX_FACE_SIZE-new_x; } else if (new_x+MAX_VIEW+FOG_BORDER_MIN > FOG_MAP_SIZE) { shift_x = FOG_MAP_SIZE-FOG_BORDER_MIN-MAX_VIEW-new_x; } } if (shift_y == 0) { if (new_y < FOG_BORDER_MIN+MAX_FACE_SIZE) { shift_y = FOG_BORDER_MIN+MAX_FACE_SIZE-new_y; } else if (new_y+MAX_VIEW+FOG_BORDER_MIN > FOG_MAP_SIZE) { shift_y = FOG_MAP_SIZE-FOG_BORDER_MIN-MAX_VIEW-new_y; } } /* Shift for more than virtual map size? ==> clear whole virtual map * and recenter. */ if (shift_x <= -FOG_MAP_SIZE || shift_x >= FOG_MAP_SIZE || shift_y <= -FOG_MAP_SIZE || shift_y >= FOG_MAP_SIZE) { for (dx = 0; dx < FOG_MAP_SIZE; dx++) { CLEAR_CELLS(dx, 0, FOG_MAP_SIZE); } pl_pos.x = FOG_MAP_SIZE/2-width/2; pl_pos.y = FOG_MAP_SIZE/2-height/2; return; } /* Move player position. */ pl_pos.x += shift_x; pl_pos.y += shift_y; /* Actually shift the virtual map by shift_x/shift_y */ if (shift_x < 0) { src_x = -shift_x; dst_x = 0; len_x = FOG_MAP_SIZE+shift_x; } else { src_x = 0; dst_x = shift_x; len_x = FOG_MAP_SIZE-shift_x; } if (shift_y < 0) { src_y = -shift_y; dst_y = 0; len_y = FOG_MAP_SIZE+shift_y; } else { src_y = 0; dst_y = shift_y; len_y = FOG_MAP_SIZE-shift_y; } if (shift_x < 0) { for (sx = src_x, dx = dst_x, i = 0; i < len_x; sx++, dx++, i++) { /* srcx!=dstx ==> can use memcpy since source and * destination to not overlap. */ memcpy(&the_map.cells[dx][dst_y], &the_map.cells[sx][src_y], len_y*sizeof(the_map.cells[dx][dst_y])); } } else if (shift_x > 0) { for (sx = src_x+len_x-1, dx = dst_x+len_x-1, i = 0; i < len_x; sx--, dx--, i++) { /* srcx!=dstx ==> can use memcpy since source and * destination to not overlap. */ memcpy(&the_map.cells[dx][dst_y], &the_map.cells[sx][src_y], len_y*sizeof(the_map.cells[dx][dst_y])); } } else { assert(src_x == dst_x); for (dx = src_x, i = 0; i < len_x; dx++, i++) { /* srcx==dstx ==> use memmove since source and * destination probably do overlap. */ memmove(&the_map.cells[dx][dst_y], &the_map.cells[dx][src_y], len_y*sizeof(the_map.cells[dx][dst_y])); } } /* Clear newly opened area */ for (dx = 0; dx < dst_x; dx++) { CLEAR_CELLS(dx, 0, FOG_MAP_SIZE); } for (dx = dst_x+len_x; dx < FOG_MAP_SIZE; dx++) { CLEAR_CELLS(dx, 0, FOG_MAP_SIZE); } if (shift_y > 0) { for (dx = 0; dx < len_x; dx++) { CLEAR_CELLS(dx+dst_x, 0, shift_y); } } else if (shift_y < 0) { for (dx = 0; dx < len_x; dx++) { CLEAR_CELLS(dx+dst_x, FOG_MAP_SIZE+shift_y, -shift_y); } } } /** * Return the size of a face in tiles. The returned size is at between 1 and * MAX_FACE_SIZE (inclusive). */ static void mapdata_get_image_size(int face, uint8 *w, uint8 *h) { get_map_image_size(face, w, h); if (*w < 1) *w = 1; if (*h < 1) *h = 1; if (*w > MAX_FACE_SIZE) *w = MAX_FACE_SIZE; if (*h > MAX_FACE_SIZE) *h = MAX_FACE_SIZE; } /* This basically goes through all the map spaces and does the necessary * animation. */ void mapdata_animation(void) { int x, y, layer, face, smooth; struct MapCellLayer *cell; /* For synchronized animations, what we do is set the initial values * in the mapdata to the fields in the animations[] array. In this way, * the code below the iterates the spaces doesn't need to do anything * special. But we have to update the animations[] array here to * keep in sync. */ for (x=0; x < MAXANIM; x++) { if (animations[x].speed) { animations[x].speed_left++; if (animations[x].speed_left >= animations[x].speed) { animations[x].speed_left=0; animations[x].phase++; if (animations[x].phase >= animations[x].num_animations) animations[x].phase=0; } } } for (x=0; x < CURRENT_MAX_VIEW; x++) { for (y=0; y < CURRENT_MAX_VIEW; y++) { /* Short cut some processing here. It makes sense to me * not to animate stuff out of view */ if (the_map.cells[pl_pos.x + x][pl_pos.y + y].cleared) continue; for (layer=0; layeranimation) { cell->animation_left++; if (cell->animation_left >= cell->animation_speed) { cell->animation_left=0; cell->animation_phase++; if (cell->animation_phase >= animations[cell->animation].num_animations) cell->animation_phase=0; face = animations[cell->animation].faces[cell->animation_phase]; /* I don't think we send any to the client, but it is possible * for animations to have blank faces. */ if (face >0) { expand_set_face(pl_pos.x + x, pl_pos.y + y, layer, face, FALSE); /* mapdata_set_smooth(x, y, smooth, layer);*/ } else { expand_clear_face_from_layer(pl_pos.x + x, pl_pos.y + y , layer); } } } cell = &bigfaces[x][y][layer].head; if (cell->animation) { cell->animation_left++; if (cell->animation_left >= cell->animation_speed) { cell->animation_left=0; cell->animation_phase++; if (cell->animation_phase >= animations[cell->animation].num_animations) cell->animation_phase=0; face = animations[cell->animation].faces[cell->animation_phase]; /* I don't think we send any to the client, but it is possible * for animations to have blank faces. */ expand_set_bigface(x, y, layer, face, FALSE); } } } } } } crossfire-client-1.70.0/common/init.c0000644000014500000120000002321111731277011014354 00000000000000const char * const rcsid_common_init_c = "$Id: init.c 14014 2010-10-21 06:18:46Z mwedel $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/init.c * Handles the initialization of the client. This includes making the I_IMAGE * and I_ARCH commands. */ #include #include "p_cmd.h" /* init_commands() */ /* XXX Does the x11 client *use* these? */ /* Makes the load/save code trivial - basically, the * entries here match the same numbers as the CONFIG_ values defined * in common/client.h - this means the load and save just does * something like a fprintf(outifle, "%s: %d", config_names[i], * want_config[i]); */ const char *const config_names[CONFIG_NUMS] = { NULL, "download_all_images", "echo_bindings", "fasttcpsend", "command_window", "cacheimages", "fog_of_war", "iconscale", "mapscale", "popups", "displaymode", "showicon", "tooltips", "sound", "splitinfo", "split", "show_grid", "lighting", "trim_info_window", "map_width", "map_height", "foodbeep", "darkness", "port", "grad_color_bars", "resistances", "smoothing", "nosplash", "auto_apply_container", "mapscroll", "sign_popups", "message_timestamping" }; sint16 want_config[CONFIG_NUMS], use_config[CONFIG_NUMS]; #define FREE_AND_CLEAR(xyz) { free(xyz); xyz=NULL; } void VersionCmd(char *data, int len) { char *cp; csocket.cs_version = atoi(data); /* set sc_version in case it is an old server supplying only one version */ csocket.sc_version = csocket.cs_version; if (csocket.cs_version != VERSION_CS) { LOG(LOG_WARNING,"common::VersionCmd","Differing C->S version numbers (%d,%d)", VERSION_CS,csocket.cs_version); /* exit(1);*/ } cp = strchr(data,' '); if (!cp) return; csocket.sc_version = atoi(cp); if (csocket.sc_version != VERSION_SC) { LOG(LOG_WARNING,"common::VersionCmd","Differing S->C version numbers (%d,%d)", VERSION_SC,csocket.sc_version); } cp = strchr(cp+1, ' '); if (cp) LOG(LOG_INFO,"common::VersionCmd","Playing on server type %s", cp); } void SendVersion(ClientSocket csock) { cs_print_string(csock.fd, "version %d %d %s", VERSION_CS, VERSION_SC, VERSION_INFO); } void SendAddMe(ClientSocket csock) { cs_print_string(csock.fd, "addme"); } void init_client_vars(void) { int i; /* I think environment variables should be more important than * compiled in defaults, so these probably should be reversed. */ client_libdir=getenv("CFCLIENT_LIBDIR"); #ifdef CLIENT_LIBDIR if (client_libdir==NULL) client_libdir=CLIENT_LIBDIR; #endif if (exp_table) { free(exp_table); exp_table=NULL; } exp_table_max=0; cpl.count_left = 0; cpl.container = NULL; memset(&cpl.stats,0, sizeof(Stats)); cpl.stats.maxsp=1; /* avoid div by 0 errors */ cpl.stats.maxhp=1; /* ditto */ cpl.stats.maxgrace=1; /* ditto */ /* ditto - displayed weapon speed is weapon speed/speed */ cpl.stats.speed=1; cpl.input_text[0]='\0'; cpl.title[0] = '\0'; cpl.range[0] = '\0'; cpl.last_command[0] = '\0'; for (i=0; i number mapping so that we don't * need to rebuild all the images. */ face_info.old_bmaps_checksum = face_info.bmaps_checksum; face_info.bmaps_checksum = 0; face_info.cache_hits=0; face_info.cache_misses=0; face_info.have_faceset_info=0; for (i=0; iclient commands; See player.c for client->server commands. * * Not necessarily all commands are handled - some might be in other files * (like init.c) * * This file contains most of the commands for the dispatch loop. Most of the * functions are self-explanatory. * * pixmap/bitmap : receive the picture, and display it. * drawinfo : draws a string in the info window. * stats : updates the local copy of the stats and displays it. * handle_query : prompts the user for input. * send_reply : sends off the reply for the input. * player : gets the player information. * MapScroll : scrolls the map on the client by some amount. * MapCmd : displays the map with layer packing or stack packing. * packing/unpacking is best understood by looking at the server code * (server/ericserver.c) * stack packing: for every map entry that changed, we pack 1 byte for the * x/y location, 1 byte for the count, and 2 bytes per face in the stack. * layer packing is harder, but I seem to remember more efficient: first we * pack in a list of all map cells that changed and are now empty. The end * of this list is a 255, which is bigger that 121, the maximum packed map * location. * For each changed location we also pack in a list of all the faces and X/Y * coordinates by layer, where the layer is the depth in the map. This * essentially takes slices through the map rather than stacks. * Then for each layer, (max is MAXMAPCELLFACES, a bad name) we start * packing the layer into the message. First we pack in a face, then for * each place on the layer with the same face, we pack in the x/y location. * We mark the last x/y location with the high bit on (11*11 = 121 < 128). * We then continue on with the next face, which is why the code marks the * faces as -1 if they are finished. Finally we mark the last face in the * layer again with the high bit, clearly limiting the total number of faces * to 32767, the code comments it's 16384, I'm not clear why, but the second * bit may be used somewhere else as well. * The unpacking routines basically perform the opposite operations. */ int mapupdatesent = 0; #include #include #include #include #include "mapdata.h" /* In general, the data from the server should not do bad * things like this, but checking for it makes it easier * to find bugs. Often this is called within a loop * that of iterating over the length of the buffer, hence * the break. Note that this may not prevent crashes, * but at least we generate a message. * Note that curpos & buflen may be string pointers or * may be integers - as long as both are the same * (both integers or both char *) it will work. */ #define ASSERT_LEN(function, curpos, buflen) \ if (curpos > buflen) { \ LOG(LOG_WARNING, function, "Data goes beyond length of buffer (%d>%d)", curpos, buflen); \ break; \ } char *news=NULL, *motd=NULL, *rules=NULL; int spellmon_level = 0; /**< Keeps track of what spellmon * command is supported by the * server. */ int num_races = 0; /* Number of different races server has */ int used_races = 0; /* How many races we have filled in */ int num_classes = 0; /* Same as race data above, but for classes */ int used_classes = 0; int stat_points = 0; /* Number of stat points for new characters */ int stat_min = 0; /* Minimum stat for new characters */ int stat_maximum = 0; /* Maximum stat for new characters */ int starting_map_number = 0; /* Number of starting maps */ Race_Class_Info *races=NULL, *classes=NULL; Starting_Map_Info *starting_map_info = NULL; /* Best I can tell, none of this stat information is stored anyplace * else in the server - MSW 2010-07-28 */ #define NUM_STATS 7 /** Short name of stats. */ const char *const short_stat_name[NUM_STATS] = { "Str", "Dex", "Con", "Wis", "Cha", "Int", "Pow" }; /* Note that the label_cs and label_rs will be in this same * order, eg, label_cs[0] will be strength, label_cs[1] will * be con. However, this order can be changed, so it should * not be assumed that label_cs[1] will always be con. */ struct Stat_Mapping stat_mapping[NUM_NEW_CHAR_STATS] = { {"str", CS_STAT_STR, 0}, {"con", CS_STAT_CON, 1}, {"dex", CS_STAT_DEX, 2}, {"int", CS_STAT_INT, 3}, {"wis", CS_STAT_WIS, 4}, {"pow", CS_STAT_POW, 5}, {"cha", CS_STAT_CHA, 6} }; /** * This function clears the data from the Race_Class_Info array. Because the * structure itself contains data that is allocated, some work needs to be * done to clear that data. * */ void free_all_starting_map_info() { int i; if (!starting_map_info) return; /* Because we are going free the array storage itself, there is no reason * to clear the data[i].. values. */ for (i=0; i len) { LOG(LOG_WARNING, "common::get_starting_map_info", "Length of data is greater than buffer (%d>%d)", length + pos, len); return; } cp = malloc(length+1); strncpy(cp, data+pos, length); cp[length] = 0; pos += length; /* If it is the arch name, it is a new entry, so we allocate * space and clear it. This isn't most efficient, but at * the same time, I don't see there being many maps. * Note: If realloc is given a null pointer (which starting_map_info * will be after free or first load), realloc just acts as malloc. */ if (type == INFO_MAP_ARCH_NAME) { map_entry++; starting_map_info = realloc(starting_map_info, (map_entry + 1) * sizeof(Starting_Map_Info)); memset(&starting_map_info[map_entry], 0, sizeof(Starting_Map_Info)); starting_map_info[map_entry].arch_name = cp; } else if (type == INFO_MAP_NAME) { starting_map_info[map_entry].public_name = cp; } else if (type == INFO_MAP_DESCRIPTION) { starting_map_info[map_entry].description = cp; } else { /* Could be this is old client - but we can skip over * this bad data so long as the length byte is valid. */ LOG(LOG_WARNING, "common::get_starting_map_info", "Unknown type: %d\n", type); } } starting_map_number = map_entry; starting_map_update_info(); } /** * This is process the newcharinfo requestinfo. * In some cases, it stores away the value, for others, it just * makes sure we understand them. * * The data is a series of length prefixed lines. * * @param data * data returned from server. Format is documented in protocol file. * @param len * length of data. */ static void get_new_char_info(char *data, int len) { int olen=0, llen; /* We reset these values - if the user is switching between * servers before restarting the client, these may have * different values. */ stat_points = 0; stat_min = 0; stat_maximum = 0; while (olen < len) { char datatype, *cp; /* Where this line ends in the total buffer */ llen = olen + GetChar_String(data + olen); /* By protocol convention, this should already be NULL, * but we ensure it is. If the server has not included the * null byte, we are overwriting some real data here, but * the client will probably get an error at that point - * if the server is not following the protocol, we really * can't trust any of the data we get from it. */ data[llen] = 0; if (llen > len) { LOG(LOG_WARNING, "common::get_new_char_info", "Length of line is greater than buffer (%d>%d)", llen, len); return; } olen++; datatype = GetChar_String(data+olen); /* Type value */ olen++; /* First skip all the spaces */ while (olen <= len) { if (!isspace(data[olen])) break; olen++; } if (olen > len) { LOG(LOG_WARNING, "common::get_new_char_info", "Overran length of buffer (%d>%d)", olen, len); return; } cp = data + olen; /* Go until we find another space */ while (olen <= len) { if (isspace(data[olen])) break; olen++; } data[olen] = 0; /* Null terminate the string */ olen++; if (olen > len) { LOG(LOG_WARNING, "common::get_new_char_info", "Overran length of buffer (%d>%d)", olen, len); return; } /* At this point, cp points to the string portion (variable name) * of the line, with data+olen is the start of the next string * (variable value). */ if (!strcasecmp(cp,"points")) { stat_points = atoi(data+olen); olen = llen + 1; continue; } else if (!strcasecmp(cp,"statrange")) { if (sscanf(data + olen, "%d %d", &stat_min, &stat_maximum)!=2) { LOG(LOG_WARNING, "common::get_new_char_info", "Unable to process statrange line (%s)", data + olen); } /* Either way, we go onto the next line */ olen = llen + 1; continue; } else if (!strcasecmp(cp,"statname")) { /* The checking we do here is somewhat basic: * 1) That we understand all the stat names that the server sends us * 2) That we get the correct number of stats. * Note that if the server sends us the same stat name twice, eg * Str Str Dex Con ..., that will screw up this logic, but to a * great extent, we have to trust that server is sending us correct * information - sending the same stat twice does not follow that. */ int i, matches=0; while (olen < llen) { for (i=0; i < NUM_STATS; i++) { if (!strncasecmp(data + olen, short_stat_name[i], strlen(short_stat_name[i]))) { matches++; olen += strlen(short_stat_name[i]) + 1; break; } } if (i == NUM_STATS) { LOG(LOG_WARNING, "common::get_new_char_info", "Unable to find matching stat name (%s)", data + olen); break; } } if (matches != NUM_STATS) { LOG(LOG_WARNING, "common::get_new_char_info", "Did not get correct number of stats (%d!=%d)", matches, NUM_STATS); } olen = llen + 1; continue; } else if (!strcasecmp(cp,"race") || !strcasecmp(cp,"class")) { if (strcasecmp(data+olen, "requestinfo")) { LOG(LOG_WARNING, "common::get_new_char_info", "Got unexpected value for %s: %s", cp, data+olen); } olen = llen + 1; continue; } else if (!strcasecmp(cp,"startingmap")) { if (strcasecmp(data+olen, "requestinfo")) { LOG(LOG_WARNING, "common::get_new_char_info", "Got unexpected value for %s: %s", cp, data+olen); } else { cs_print_string(csocket.fd, "requestinfo startingmap"); free_all_starting_map_info(); } olen = llen + 1; continue; } else { if (datatype == 'V' || datatype == 'R') { LOG(LOG_WARNING, "common::get_new_char_info", "Got unsupported string from server, type %c, value %s", datatype, cp); /* pop up error here */ } else { /* pop up warning here */ } olen = llen + 1; } } if (stat_min == 0 || stat_maximum == 0 || stat_points == 0) { /* this needs to be handled better, but I'm not sure how - * we could fall back to legacy character creation mode, * but that will go away at some point - in a sense, if the * server is not sending us values, that is a broken/non comformant * server - best we could perhaps do is throw up a window saying * this client is not compatible with the server. */ LOG(LOG_ERROR, "common::get_new_char_info", "Processed all newcharinfo yet have 0 value: stat_min=%d, stat_maximum=%d, stat_points=%d", stat_min, stat_maximum, stat_points); } else { new_char_window_update_info(); } } /** * Used for bsearch searching. */ static int rc_compar(const Race_Class_Info *a, const Race_Class_Info *b) { return strcasecmp(a->public_name, b->public_name); } /** * This function clears the data from the Race_Class_Info array. Because the * structure itself contains data that is allocated, some work needs to be * done to clear that data. * * @param data * array to clear * @param num_entries * size of the array. */ void free_all_race_class_info(Race_Class_Info *data, int num_entries) { int i; /* Because we are going free the array storage itself, there is no reason * to clear the data[i].. values. */ for (i=0; iarch_name = strdup(cp); cp = nl+1; } else { LOG(LOG_WARNING, "common::process_race_class_info", "Did not find archetype name"); return; } /* Now we process the rest of the data - we look for a word the describes * the data to follow. cp is a pointer to the data we are processing. nl * is used to store temporary values. */ do { nl = strchr(cp, ' '); /* If we did not find a space, may just mean we have reached the end * of the data - could be a stray character, etc */ if (!nl) break; if (nl) { *nl = 0; nl++; } if (!strcmp(cp, "name")) { /* We get a name. The string is not NULL terminated, but the * length is transmitted. So get the length, allocate a string * large enough for that + NULL terminator, and copy string in, * making sure to put terminator in place. also make sure we * update cp beyond this block of data. */ int namelen; namelen = GetChar_String(nl); ASSERT_LEN("common::process_race_class_info", nl + namelen, data + len); nl++; rci->public_name = malloc(namelen+1); strncpy(rci->public_name, nl, namelen); rci->public_name[namelen] = 0; cp = nl + namelen; } else if (!strcmp(cp, "stats")) { cp = nl; /* This loop goes through the stat values - *cp points to the stat * value - if 0, no more stats, hence the check here. */ while (cp < data + len && *cp != 0) { int i; for (i=0; i < NUM_NEW_CHAR_STATS; i++) if (stat_mapping[i].cs_value == *cp) break; if (i == NUM_NEW_CHAR_STATS) { /* Just return with what we have */ LOG(LOG_WARNING, "common::process_race_class_info", "Unknown stat value: %d", cp); return; } rci->stat_adj[stat_mapping[i].rc_offset] = GetShort_String(cp+1); cp += 3; } cp++; /* Skip over 0 terminator */ } else if (!strcmp(cp, "msg")) { /* This is really exactly same as name processing above, except * length is 2 bytes in this case. */ int msglen; msglen = GetShort_String(nl); ASSERT_LEN("common::process_race_class_info", nl + msglen, data + len); nl+=2; rci->description = malloc(msglen+1); strncpy(rci->description, nl, msglen); rci->description[msglen] = 0; cp = nl + msglen; } else if (!strcmp(cp, "choice")) { int oc = rci->num_rc_choice, clen; rci->num_rc_choice++; /* rc_choice may be null, but realloc still works there */ rci->rc_choice = realloc(rci->rc_choice, sizeof(struct RC_Choice) * rci->num_rc_choice); memset(&rci->rc_choice[oc], 0, sizeof(struct RC_Choice)); cp = nl; /* First is the coice string we return */ clen = GetChar_String(cp); cp++; ASSERT_LEN("common::process_race_class_info", cp + clen, data + len); rci->rc_choice[oc].choice_name = malloc(clen+1); strncpy(rci->rc_choice[oc].choice_name, cp, clen); rci->rc_choice[oc].choice_name[clen] = 0; cp += clen; /* Next is the description */ clen = GetChar_String(cp); cp++; ASSERT_LEN("common::process_race_class_info", cp + clen, data + len); rci->rc_choice[oc].choice_desc = malloc(clen+1); strncpy(rci->rc_choice[oc].choice_desc, cp, clen); rci->rc_choice[oc].choice_desc[clen] = 0; cp += clen; /* Now is a series of archetype/description pairs */ while (1) { int vn; clen = GetChar_String(cp); cp++; if (!clen) break; /* 0 length is end of data */ vn = rci->rc_choice[oc].num_values; rci->rc_choice[oc].num_values++; rci->rc_choice[oc].value_arch = realloc(rci->rc_choice[oc].value_arch, sizeof(char*) * rci->rc_choice[oc].num_values); rci->rc_choice[oc].value_desc = realloc(rci->rc_choice[oc].value_desc, sizeof(char*) * rci->rc_choice[oc].num_values); ASSERT_LEN("common::process_race_class_info", cp + clen, data + len); rci->rc_choice[oc].value_arch[vn] = malloc(clen+1); strncpy(rci->rc_choice[oc].value_arch[vn], cp, clen); rci->rc_choice[oc].value_arch[vn][clen] = 0; cp += clen; clen = GetChar_String(cp); cp++; ASSERT_LEN("common::process_race_class_info", cp + clen, data + len); rci->rc_choice[oc].value_desc[vn] = malloc(clen+1); strncpy(rci->rc_choice[oc].value_desc[vn], cp, clen); rci->rc_choice[oc].value_desc[vn][clen] = 0; cp += clen; } } else { /* Got some keyword we did not understand. Because we do not know * about it, we do not know how to skip it over - the data could * very well contain spaces or other markers we look for. */ LOG(LOG_WARNING, "common::process_race_class_info", "Got unknown keyword: %s", cp); break; } } while (cp < data+len); /* The display code expects all of these to have a description - * rather than add checks there for NULL values, simpler to * just set things to an empty value. */ if (!rci->description) rci->description = strdup(""); } /** * This is a little wrapper function that does some bounds checking and then * calls process_race_info() to do the bulk of the work. * * @param data * data returned from server. Format is documented in protocol file. * @param len * length of data. */ static void get_race_info(char *data, int len) { /* This should not happen - the client is only requesting race info for * races it has received - and it knows how many of those it has. */ if (used_races >= num_races) { LOG(LOG_ERROR, "common::get_race_info", "used races exceed num races, %d>=%d", used_races, num_races); return; } process_race_class_info(data, len, &races[used_races]); used_races++; if (used_races == num_races) { qsort(races, used_races, sizeof(Race_Class_Info), (int (*)(const void *, const void *))rc_compar); new_char_window_update_info(); } } /** * This is a little wrapper function that does some bounds checking and then * calls process_race_info() to do the bulk of the work. Pretty much * identical to get_race_info() except this is for classes. * * @param data * data returned from server. Format is documented in protocol file. * @param len * length of data. */ static void get_class_info(char *data, int len) { /* This should not happen - the client is only requesting race info for * classes it has received - and it knows how many of those it has. */ if (used_classes >= num_classes) { LOG(LOG_ERROR, "common::get_race_info", "used classes exceed num classes, %d>=%d", used_classes, num_classes); return; } process_race_class_info(data, len, &classes[used_classes]); used_classes++; if (used_classes == num_classes) { qsort(classes, used_classes, sizeof(Race_Class_Info), (int (*)(const void *, const void *))rc_compar); new_char_window_update_info(); } } /** * * @param data * @param len */ static void get_exp_info(const unsigned char *data, int len) { int pos, level; if (len < 2) { LOG(LOG_ERROR, "common::get_exp_info", "no max level info from server provided"); return; } exp_table_max = GetShort_String(data); pos = 2; exp_table = calloc(exp_table_max, sizeof(uint64)); for (level = 1; level <= exp_table_max && pos < len; level++) { exp_table[level] = GetInt64_String(data+pos); pos += 8; } if (level != exp_table_max) { LOG(LOG_ERROR, "common::get_exp_info", "Incomplete table sent - got %d entries, wanted %d", level, exp_table_max); } } /** * * @param data * @param len */ static void get_skill_info(char *data, int len) { char *cp, *nl, *sn; int val; cp = data; do { nl = strchr(cp, '\n'); if (nl) { *nl = 0; nl++; } sn = strchr(cp, ':'); if (!sn) { LOG(LOG_WARNING, "common::get_skill_info", "corrupt line: /%s/", cp); return; } *sn = 0; sn++; val = atoi(cp); val -= CS_STAT_SKILLINFO; /* skill_names[MAX_SKILL] is the declaration, so check against that */ if (val < 0 || val >= MAX_SKILL) { LOG(LOG_WARNING, "common::get_skill_info", "invalid skill number %d", val); return; } free(skill_names[val]); skill_names[val] = strdup_local(sn); cp = nl; } while (cp < data+len); } /** * Handles the response from a 'requestinfo' command. This function doesn't * do much itself other than dispatch to other functions. * * @param buf * @param len */ void ReplyInfoCmd(uint8 *buf, int len) { uint8 *cp; int i; /* Covers a bug in the server in that it could send a replyinfo with no * parameters */ if (!buf) { return; } for (i = 0; i < len; i++) { /* Either a space or newline represents a break */ if (*(buf+i) == ' ' || *(buf+i) == '\n') { break; } } if (i >= len) { /* Don't print buf, as it may contain binary data */ /* Downgrade this to DEBUG - if the client issued an unsupported * requestinfo info to the server, we'll end up here - this could be * normal behaviour */ LOG(LOG_DEBUG, "common::ReplyInfoCmd", "Never found a space in the replyinfo"); return; } /* Null out the space and put cp beyond it */ cp = buf+i; *cp++ = '\0'; if (!strcmp((char*)buf, "image_info")) { get_image_info(cp, len-i-1); /* Located in common/image.c */ } else if (!strcmp((char*)buf, "image_sums")) { get_image_sums((char*)cp, len-i-1); /* Located in common/image.c */ } else if (!strcmp((char*)buf, "skill_info")) { get_skill_info((char*)cp, len-i-1); /* Located in common/commands.c */ } else if (!strcmp((char*)buf, "exp_table")) { get_exp_info(cp, len-i-1); /* Located in common/commands.c */ } else if (!strcmp((char*)buf, "motd")) { if (motd) free((char*)motd); motd = strdup(cp); update_login_info(INFO_MOTD); } else if (!strcmp((char*)buf, "news")) { if (news) free((char*)news); news = strdup(cp); update_login_info(INFO_NEWS); } else if (!strcmp((char*)buf, "rules")) { if (rules) free((char*)rules); rules = strdup(cp); update_login_info(INFO_RULES); } else if (!strcmp((char*)buf, "race_list")) { char *cp1; for (cp1=cp; *cp !=0; cp++) { if (*cp == '|') { *cp++ = '\0'; /* The first separator has no data, so only send request to * server if this is not null. */ if (*cp1!='\0') { cs_print_string(csocket.fd, "requestinfo race_info %s", cp1); num_races++; } cp1 = cp; } } if (races) { free_all_race_class_info(races, num_races); num_races=0; used_races=0; } races = calloc(num_races, sizeof(Race_Class_Info)); } else if (!strcmp((char*)buf, "class_list")) { char *cp1; for (cp1=cp; *cp !=0; cp++) { if (*cp == '|') { *cp++ = '\0'; /* The first separator has no data, so only send request to * server if this is not null. */ if (*cp1!='\0') { cs_print_string(csocket.fd, "requestinfo class_info %s", cp1); num_classes++; } cp1 = cp; } } if (classes) { free_all_race_class_info(classes, num_classes); num_classes=0; used_classes=0; } classes = calloc(num_classes, sizeof(Race_Class_Info)); } else if (!strcmp((char*)buf, "race_info")) { get_race_info(cp, len -i -1); } else if (!strcmp((char*)buf, "class_info")) { get_class_info(cp, len -i -1); } else if (!strcmp((char*)buf, "newcharinfo")) { get_new_char_info(cp, len -i -1); } else if (!strcmp((char*)buf, "startingmap")) { get_starting_map_info(cp, len -i -1); } } /** * Received a response to a setup from the server. This function is basically * the same as the server side function - we just do some different processing * on the data. * * @param buf * @param len */ void SetupCmd(char *buf, int len) { int s; char *cmd, *param; /* Process the setup commands. * Syntax is setup ... * * The server sends the status of the cmd back, or a FALSE if the cmd is * unknown. The client then must sort this out. */ LOG(LOG_DEBUG, "common::SetupCmd", "%s", buf); for (s = 0; ; ) { if (s >= len) { /* Ugly, but for secure...*/ break; } cmd = &buf[s]; /* Find the next space, and put a null there */ for (; buf[s] && buf[s] != ' '; s++) ; buf[s++] = 0; while (buf[s] == ' ') { s++; } if (s >= len) { break; } param = &buf[s]; for (; buf[s] && buf[s] != ' '; s++) ; buf[s++] = 0; while (s < len && buf[s] == ' ') { s++; } /* What is done with the returned data depends on what the server * returns. In some cases the client may fall back to other methods, * report an error, or try another setup command. */ if (!strcmp(cmd, "sound2")) { /* No parsing needed, but we don't want a warning about unknown * setup option below. */ } else if (!strcmp(cmd, "sound")) { /* No, this should not be !strcmp()... */ } else if (!strcmp(cmd, "mapsize")) { int x, y = 0; char *cp, tmpbuf[MAX_BUF]; if (!strcasecmp(param, "false")) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SERVER, "Server only supports standard sized maps (11x11)"); /* Do this because we may have been playing on a big server * before */ use_config[CONFIG_MAPWIDTH] = 11; use_config[CONFIG_MAPHEIGHT] = 11; mapdata_set_size(use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); resize_map_window(use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); continue; } x = atoi(param); for (cp = param; *cp != 0; cp++) { if (*cp == 'x' || *cp == 'X') { y = atoi(cp+1); break; } } /* A size larger than what the server supports was requested. * Reduce the size to server maximum, and re-send the setup * command. Update our want sizes, and tell the player what is * going on. */ if (use_config[CONFIG_MAPWIDTH] > x || use_config[CONFIG_MAPHEIGHT] > y) { if (use_config[CONFIG_MAPWIDTH] > x) use_config[CONFIG_MAPWIDTH] = x; if (use_config[CONFIG_MAPHEIGHT] > y) use_config[CONFIG_MAPHEIGHT] = y; mapdata_set_size(use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); cs_print_string(csocket.fd, "setup mapsize %dx%d", use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); snprintf(tmpbuf, sizeof(tmpbuf), "Server supports a max mapsize of %d x %d - requesting a %d x %d mapsize", x, y, use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SERVER, tmpbuf); } else if (use_config[CONFIG_MAPWIDTH] == x && use_config[CONFIG_MAPHEIGHT] == y) { mapdata_set_size(use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); resize_map_window(use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT]); } else { /* The request was not bigger than what server supports, and * not the same size, so what is the problem? Tell the user * that something is wrong. */ snprintf(tmpbuf, sizeof(tmpbuf), "Unable to set mapsize on server - we wanted %d x %d, server returned %d x %d", use_config[CONFIG_MAPWIDTH], use_config[CONFIG_MAPHEIGHT], x, y); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SERVER, tmpbuf); } } else if (!strcmp(cmd, "darkness")) { /* Older servers might not support this setup command. */ if (!strcmp(param, "FALSE")) { LOG(LOG_WARNING, "common::SetupCmd", "Server returned FALSE for setup command %s", cmd); } } else if (!strcmp(cmd, "spellmon")) { /* Older servers might not support this setup command or all of * the extensions. * * Spellmon 2 was added to the protocol in January 2010 to send an * additional spell information string with casting requirements * including required items, if the spell needs arguments passed * (like text for rune of marking), etc. * * To use the new feature, "setup spellmon 1 spellmon 2" is sent, * and if "spellmon 1 spellmon FALSE" is returned then the server * doesn't accept 2 - sending spellmon 2 to a server that does not * support it is not problematic, so the spellmon 1 command will * still be handled correctly by the server. If the server sends * "spellmon 1 spellmon 2" then the extended mode is in effect. * * It is not particularly important for the player to know what * level of command is accepted by the server. The extra features * will simply not be functionally available. */ if (!strcmp(param, "FALSE")) { LOG(LOG_INFO, "common::SetupCmd", "Server returned FALSE for a %s setup command", cmd); } else { spellmon_level = atoi(param); } } else if (!strcmp(cmd, "facecache")) { use_config[CONFIG_CACHE] = atoi(param); } else if (!strcmp(cmd, "faceset")) { if (!strcmp(param, "FALSE")) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SERVER, "Server does not support other image sets, will use default"); face_info.faceset = 0; } } else if (!strcmp(cmd, "map2cmd")) { if (!strcmp(param, "FALSE")) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SERVER, "Server does not support map2cmd!"); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SERVER, "This server is too old to support this client!"); close_server_connection(); } } else if (!strcmp(cmd, "want_pickup")) { /* Nothing special to do as this is info pushed from server and * not having it isn't that bad. */ } else if (!strcmp(cmd, "loginmethod")) { int method = atoi(param); /* If the server supports new login, start the process. Pass what * version the server supports so client can do appropriate * work */ if (method) { start_login(method); } } else { LOG(LOG_INFO, "common::SetupCmd", "Got setup for a command we don't understand: %s %s", cmd, param); } } } /** * Handles when the server says we can't be added. In reality, we need to * close the connection and quit out, because the client is going to close us * down anyways. * * @param data * @param len */ void AddMeFail(char *data, int len) { (void)data; /* __UNUSED__ */ (void)len; /* __UNUSED__ */ LOG(LOG_INFO, "common::AddMeFail", "addme_failed received."); return; } /** * This is really a throwaway command - there really isn't any reason to send * addme_success commands. * * @param data * @param len */ void AddMeSuccess(char *data, int len) { (void)data; /* __UNUSED__ */ (void)len; /* __UNUSED__ */ hide_all_login_windows(); LOG(LOG_INFO, "common::AddMeSuccess", "addme_success received."); return; } /** * * @param data * @param len */ void GoodbyeCmd(char *data, int len) { (void)data; /* __UNUSED__ */ (void)len; /* __UNUSED__ */ /* This could probably be greatly improved - I am not sure if anything * needs to be saved here, but it should be possible to reconnect to the * server or a different server without having to rerun the client. */ LOG(LOG_WARNING, "common::GoodbyeCmd", "Received goodbye command from server - exiting"); exit(0); } Animations animations[MAXANIM]; /** * * @param data * @param len */ void AnimCmd(unsigned char *data, int len) { short anum; int i, j; anum = GetShort_String(data); if (anum < 0 || anum > MAXANIM) { LOG(LOG_WARNING, "common::AnimCmd", "animation number invalid: %d", anum); return; } animations[anum].flags = GetShort_String(data+2); animations[anum].num_animations = (len-4)/2; if (animations[anum].num_animations < 1) { LOG(LOG_WARNING, "common::AnimCmd", "num animations invalid: %d", animations[anum].num_animations); return; } animations[anum].faces = malloc(sizeof(uint16)*animations[anum].num_animations); for (i = 4, j = 0; i < len; i += 2, j++) { animations[anum].faces[j] = GetShort_String(data+i); } if (j != animations[anum].num_animations) { LOG(LOG_WARNING, "common::AnimCmd", "Calculated animations does not equal stored animations? (%d!=%d)", j, animations[anum].num_animations); } animations[anum].speed = 0; animations[anum].speed_left = 0; animations[anum].phase = 0; LOG(LOG_DEBUG, "common::AnimCmd", "Received animation %d, %d faces", anum, animations[anum].num_animations); } /** * Receives the smooth mapping from the server. Because this information is * reference a lot, the smoothing face is stored in the pixmap data - this * makes access much faster than searching an array of data for the face to * use. * * @param data * @param len */ void SmoothCmd(unsigned char *data, int len) { uint16 faceid; uint16 smoothing; /* len is unused. We should check that we don't have an invalid short * command. Hence, the compiler warning is valid. */ faceid = GetShort_String(data); smoothing = GetShort_String(data+2); addsmooth(faceid, smoothing); } /** * Draws a string in the info window. * * @param data * @param len */ void DrawInfoCmd(char *data, int len) { int color = atoi(data); char *buf; (void)len; /* __UNUSED__ */ buf = strchr(data, ' '); if (!buf) { LOG(LOG_WARNING, "common::DrawInfoCmd", "got no data"); buf = ""; } else { buf++; } draw_ext_info(color, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_COMMAND, buf); } TextManager *firstTextManager = NULL; /** * * @param type * @param callback */ void setTextManager(int type, ExtTextManager callback) { TextManager *current = firstTextManager; while (current != NULL) { if (current->type == type) { current->callback = callback; return; } current = current->next; } current = malloc(sizeof(TextManager)); current->type = type; current->callback = callback; current->next = firstTextManager; firstTextManager = current; } /** * * @param type */ static ExtTextManager getTextManager(int type) { TextManager *current = firstTextManager; while (current != NULL) { if (current->type == type) { return current->callback; } current = current->next; } return NULL; } /** * We must extract color, type, subtype and dispatch to callback * * @param data * @param len */ void DrawExtInfoCmd(char *data, int len) { int color; int type, subtype; char *buf = data; int wordCount = 3; ExtTextManager fnct; while (wordCount > 0) { while (buf[0] == ' ') { buf++; } wordCount--; while (buf[0] != ' ') { if (buf[0] == '\0') { LOG(LOG_WARNING, "common::DrawExtInfoCmd", "Data is missing %d parameters %s", wordCount, data); return; } else { buf++; } } if (buf[0] == ' ') { buf++; /*remove trailing space to send clean data to callback */ } } wordCount = sscanf(data, "%d %d %d", &color, &type, &subtype); if (wordCount != 3) { LOG(LOG_WARNING, "common::DrawExtInfoCmd", "Wrong parameters received. Could only parse %d out of 3 int in %s", wordCount, data); return; } fnct = getTextManager(type); if (fnct == NULL) { LOG(LOG_WARNING, "common::DrawExtInfoCmd", "Server send us a type %d but i can't find any callback for it", type); return; } fnct(color, type, subtype, buf); } /** * Maintain the last_used_skills LRU list for displaying the recently used * skills first. * * @param skill_id */ void use_skill(int skill_id) { int i = 0; int next; int prev = last_used_skills[0]; if(last_used_skills[0] == skill_id) return; do { next = last_used_skills[i+1]; last_used_skills[i+1] = prev; prev = next; ++i; } while(next != skill_id && next >= 0); last_used_skills[0] = skill_id; } /** * Updates the local copy of the stats and displays it. * * @param data * @param len */ void StatsCmd(unsigned char *data, int len) { int i = 0, c, redraw = 0; sint64 last_exp; while (i < len) { c = data[i++]; if (c >= CS_STAT_RESIST_START && c <= CS_STAT_RESIST_END) { cpl.stats.resists[c-CS_STAT_RESIST_START] = GetShort_String(data+i); i += 2; cpl.stats.resist_change = 1; } else if (c >= CS_STAT_SKILLINFO && c < (CS_STAT_SKILLINFO+CS_NUM_SKILLS)) { /* We track to see if the exp has gone from 0 to some total value * - we do this because the draw logic currently only draws skills * where the player has exp. We need to communicate to the draw * function that it should draw all the players skills. Using * redraw is a little overkill, because a lot of the data may not * be changing. OTOH, such a transition should only happen * rarely, not not be a very big deal. */ cpl.stats.skill_level[c-CS_STAT_SKILLINFO] = data[i++]; last_exp = cpl.stats.skill_exp[c-CS_STAT_SKILLINFO]; cpl.stats.skill_exp[c-CS_STAT_SKILLINFO] = GetInt64_String(data+i); use_skill(c-CS_STAT_SKILLINFO); if (last_exp == 0 && cpl.stats.skill_exp[c-CS_STAT_SKILLINFO]) { redraw = 1; } i += 8; } else { switch (c) { case CS_STAT_HP: cpl.stats.hp = GetShort_String(data+i); i += 2; break; case CS_STAT_MAXHP: cpl.stats.maxhp = GetShort_String(data+i); i += 2; break; case CS_STAT_SP: cpl.stats.sp = GetShort_String(data+i); i += 2; break; case CS_STAT_MAXSP: cpl.stats.maxsp = GetShort_String(data+i); i += 2; break; case CS_STAT_GRACE: cpl.stats.grace = GetShort_String(data+i); i += 2; break; case CS_STAT_MAXGRACE:cpl.stats.maxgrace = GetShort_String(data+i); i += 2; break; case CS_STAT_STR: cpl.stats.Str = GetShort_String(data+i); i += 2; break; case CS_STAT_INT: cpl.stats.Int = GetShort_String(data+i); i += 2; break; case CS_STAT_POW: cpl.stats.Pow = GetShort_String(data+i); i += 2; break; case CS_STAT_WIS: cpl.stats.Wis = GetShort_String(data+i); i += 2; break; case CS_STAT_DEX: cpl.stats.Dex = GetShort_String(data+i); i += 2; break; case CS_STAT_CON: cpl.stats.Con = GetShort_String(data+i); i += 2; break; case CS_STAT_CHA: cpl.stats.Cha = GetShort_String(data+i); i += 2; break; case CS_STAT_EXP: cpl.stats.exp = GetInt_String(data+i); i += 4; break; case CS_STAT_EXP64: cpl.stats.exp = GetInt64_String(data+i); i += 8; break; case CS_STAT_LEVEL: cpl.stats.level = GetShort_String(data+i); i += 2; break; case CS_STAT_WC: cpl.stats.wc = GetShort_String(data+i); i += 2; break; case CS_STAT_AC: cpl.stats.ac = GetShort_String(data+i); i += 2; break; case CS_STAT_DAM: cpl.stats.dam = GetShort_String(data+i); i += 2; break; case CS_STAT_ARMOUR: cpl.stats.resists[0] = GetShort_String(data+i); i += 2; break; case CS_STAT_SPEED: cpl.stats.speed = GetInt_String(data+i); i += 4; break; case CS_STAT_FOOD: cpl.stats.food = GetShort_String(data+i); i += 2; break; case CS_STAT_WEAP_SP: cpl.stats.weapon_sp = GetInt_String(data+i); i += 4; break; case CS_STAT_SPELL_ATTUNE:cpl.stats.attuned = GetInt_String(data+i); i += 4; cpl.spells_updated = 1; break; case CS_STAT_SPELL_REPEL:cpl.stats.repelled = GetInt_String(data+i); i += 4; cpl.spells_updated = 1; break; case CS_STAT_SPELL_DENY:cpl.stats.denied = GetInt_String(data+i); i += 4; cpl.spells_updated = 1; break; case CS_STAT_FLAGS: cpl.stats.flags = GetShort_String(data+i); i += 2; break; case CS_STAT_WEIGHT_LIM:set_weight_limit(cpl.stats.weight_limit = GetInt_String(data+i)); i += 4; break; case CS_STAT_RANGE: { int rlen = data[i++]; strncpy(cpl.range, (const char*)data+i, rlen); cpl.range[rlen] = '\0'; i += rlen; break; } case CS_STAT_TITLE: { int rlen = data[i++]; strncpy(cpl.title, (const char*)data+i, rlen); cpl.title[rlen] = '\0'; i += rlen; break; } default: LOG(LOG_WARNING, "common::StatsCmd", "Unknown stat number %d", c); break; } } } if (i > len) { LOG(LOG_WARNING, "common::StatsCmd", "got stats overflow, processed %d bytes out of %d", i, len); } draw_stats(redraw); draw_message_window(0); #ifdef HAVE_LUA script_lua_stats(); #endif } /** * Prompts the user for input. * * @param data * @param len */ void handle_query(char *data, int len) { char *buf, *cp; uint8 flags = atoi(data); (void)len; /* __UNUSED__ */ if (flags&CS_QUERY_HIDEINPUT) { /* No echo */ cpl.no_echo = 1; } else { cpl.no_echo = 0; } /* Let the window system know this may have changed */ x_set_echo(); /* The actual text is optional */ buf = strchr(data, ' '); if (buf) { buf++; } /* If we just get passed an empty string, why draw this? */ if (buf) { cp = buf; while ((buf = strchr(buf, '\n')) != NULL) { *buf++ = '\0'; draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_QUERY, cp); cp = buf; } /* Yes/no - don't do anything with it now */ if (flags&CS_QUERY_YESNO) { } /* One character response expected */ if (flags&CS_QUERY_SINGLECHAR) { cpl.input_state = Reply_One; } else { cpl.input_state = Reply_Many; } if (cp) { draw_prompt(cp); } } LOG(LOG_DEBUG, "common::handle_query", "Received query. Input state now %d", cpl.input_state); } /** * Sends a reply to the server. This function basically just packs the stuff * up. * * @param text contains the null terminated string of text to send. */ void send_reply(const char *text) { cs_print_string(csocket.fd, "reply %s", text); /* Let the window system know that the (possibly hidden) query is over. */ cpl.no_echo = 0; x_set_echo(); } /** * Gets the player information. This function copies relevant data from the * archetype to the object. Only copies data that was not set in the object * structure. * * @param data * @param len */ void PlayerCmd(unsigned char *data, int len) { char name[MAX_BUF]; int tag, weight, face, i = 0, nlen; reset_player_data(); tag = GetInt_String(data); i += 4; weight = GetInt_String(data+i); i += 4; face = GetInt_String(data+i); i += 4; nlen = data[i++]; memcpy(name, (const char*)data+i, nlen); name[nlen] = '\0'; i += nlen; if (i != len) { LOG(LOG_WARNING, "common::PlayerCmd", "lengths do not match (%d!=%d)", len, i); } new_player(tag, name, weight, face); } /** * * @param op */ void item_actions(item *op) { if (!op) { return; } if (op->open) { open_container(op); cpl.container = op; } else if (op->was_open) { close_container(op); cpl.container = NULL; } } /** * Parses the data sent to us from the server. revision is what item command * the data came from - newer ones have addition fields. * * @param data * @param len */ static void common_item_command(uint8 *data, int len) { int weight, loc, tag, face, flags, pos = 0, nlen, anim, nrof, type; uint8 animspeed; char name[MAX_BUF]; loc = GetInt_String(data); pos += 4; if (pos == len) { LOG(LOG_WARNING, "common::common_item_command", "Got location with no other data"); return; } else if (loc < 0) { /* Delete following items */ LOG(LOG_WARNING, "common::common_item_command", "Got location with negative value (%d)", loc); return; } else { while (pos < len) { tag = GetInt_String(data+pos); pos += 4; flags = GetInt_String(data+pos); pos += 4; weight = GetInt_String(data+pos); pos += 4; face = GetInt_String(data+pos); pos += 4; nlen = data[pos++]; memcpy(name, (char*)data+pos, nlen); pos += nlen; name[nlen] = '\0'; anim = GetShort_String(data+pos); pos += 2; animspeed = data[pos++]; nrof = GetInt_String(data+pos); pos += 4; type = GetShort_String(data+pos); pos += 2; update_item(tag, loc, name, weight, face, flags, anim, animspeed, nrof, type); item_actions(locate_item(tag)); } if (pos > len) { LOG(LOG_WARNING, "common::common_item_cmd", "Overread buffer: %d > %d", pos, len); } } } /** * * @param data * @param len */ void Item2Cmd(unsigned char *data, int len) { common_item_command(data, len); } /** * Updates some attributes of an item * * @param data * @param len */ void UpdateItemCmd(unsigned char *data, int len) { int weight, loc, tag, face, sendflags, flags, pos = 0, nlen, anim; uint32 nrof; char name[MAX_BUF]; item *ip, *env = NULL; uint8 animspeed; sendflags = data[0]; pos += 1; tag = GetInt_String(data+pos); pos += 4; ip = locate_item(tag); if (!ip) { /* fprintf(stderr, "Got update_item command for item we don't have (%d)\n", tag); */ return; } /* Copy all of these so we can pass the values to update_item and don't * need to figure out which ones were modified by this function. */ *name = '\0'; loc = ip->env ? ip->env->tag : 0; weight = ip->weight*1000; face = ip->face; flags = ip->flagsval; anim = ip->animation_id; animspeed = ip->anim_speed; nrof = ip->nrof; if (sendflags&UPD_LOCATION) { loc = GetInt_String(data+pos); env = locate_item(loc); LOG(LOG_WARNING, "common::UpdateItemCmd", "Got tag of unknown object (%d) for new location", loc); pos += 4; } if (sendflags&UPD_FLAGS) { flags = GetInt_String(data+pos); pos += 4; } if (sendflags&UPD_WEIGHT) { weight = GetInt_String(data+pos); pos += 4; } if (sendflags&UPD_FACE) { face = GetInt_String(data+pos); pos += 4; } if (sendflags&UPD_NAME) { nlen = data[pos++]; memcpy(name, (char*)data+pos, nlen); pos += nlen; name[nlen] = '\0'; } if (pos > len) { LOG(LOG_WARNING, "common::UpdateItemCmd", "Overread buffer: %d > %d", pos, len); return; /* We have bad data, probably don't want to store it then */ } if (sendflags&UPD_ANIM) { anim = GetShort_String(data+pos); pos += 2; } if (sendflags&UPD_ANIMSPEED) { animspeed = data[pos++]; } if (sendflags&UPD_NROF) { nrof = (uint32)GetInt_String(data+pos); pos += 4; } /* update_item calls set_item_values which will then set the list redraw * flag, so we don't need to do an explicit redraw here. Actually, * calling update_item is a little bit of overkill, since we already * determined some of the values in this function. */ update_item(tag, loc, name, weight, face, flags, anim, animspeed, nrof, ip->type); item_actions(locate_item(tag)); } /** * * @param data * @param len */ void DeleteItem(unsigned char *data, int len) { int pos = 0, tag; while (pos < len) { item *op; tag = GetInt_String(data+pos); pos += 4; op = locate_item(tag); if (op != NULL) { remove_item(op); } else { LOG(LOG_WARNING, "common::DeleteItem", "Cannot find tag %d", tag); } } if (pos > len) { LOG(LOG_WARNING, "common::DeleteItem", "Overread buffer: %d > %d", pos, len); } } /** * * @param data * @param len */ void DeleteInventory(unsigned char *data, int len) { int tag; item *op; (void)len; /* __UNUSED__ */ tag = atoi((const char*)data); op = locate_item(tag); if (op != NULL) { remove_item_inventory(op); } else { LOG(LOG_WARNING, "common::DeleteInventory", "Invalid tag: %d", tag); } } /****************************************************************************/ /** * @defgroup SCSpellCommands Server->Client spell command functions. * @{ */ /** * * @param data * @param len */ void AddspellCmd(unsigned char *data, int len) { uint8 nlen; uint16 mlen, pos = 0; Spell *newspell, *tmp; while (pos < len) { newspell = calloc(1, sizeof(Spell)); /* Get standard spell information (spellmon 1) */ newspell->tag = GetInt_String(data+pos); pos += 4; newspell->level = GetShort_String(data+pos); pos += 2; newspell->time = GetShort_String(data+pos); pos += 2; newspell->sp = GetShort_String(data+pos); pos += 2; newspell->grace = GetShort_String(data+pos); pos += 2; newspell->dam = GetShort_String(data+pos); pos += 2; newspell->skill_number = GetChar_String(data+pos); pos += 1; newspell->path = GetInt_String(data+pos); pos += 4; newspell->face = GetInt_String(data+pos); pos += 4; nlen = GetChar_String(data+pos); pos += 1; strncpy(newspell->name, (char*)data+pos, nlen); pos += nlen; newspell->name[nlen] = '\0'; /* To ensure we are null terminated */ mlen = GetShort_String(data+pos); pos += 2; strncpy(newspell->message, (char*)data+pos, mlen); pos += mlen; newspell->message[mlen] = '\0'; /* To ensure we are null terminated */ if (spellmon_level < 2) { /* The server is not sending spellmon 2 extended information, so * initialize the spell data fields as unused/empty. */ newspell->usage = 0; newspell->requirements[0] = '\0'; } else if (pos < len) { /* The server is sending extended spell information (spellmon 2) so * process it. */ newspell->usage = GetChar_String(data+pos); pos += 1; nlen = GetChar_String(data+pos); pos += 1; strncpy(newspell->requirements, (char*) data+pos, nlen); pos += nlen; newspell->requirements[nlen] = '\0'; /* Ensure null-termination */ } /* Compute the derived spell information. */ newspell->skill = skill_names[newspell->skill_number-CS_STAT_SKILLINFO]; /* Add the spell to the player struct. */ if (!cpl.spelldata) { cpl.spelldata = newspell; } else { for (tmp = cpl.spelldata; tmp->next; tmp = tmp->next) ; tmp->next = newspell; } /* Check to see if there are more spells to add. */ } if (pos > len) { LOG(LOG_WARNING, "common::AddspellCmd", "Overread buffer: %d > %d", pos, len); } cpl.spells_updated = 1; } /** * * @param data * @param len */ void UpdspellCmd(unsigned char *data, int len) { int flags, tag, pos = 0; Spell *tmp; if (!cpl.spelldata) { LOG(LOG_WARNING, "common::UpdspellCmd", "I know no spells to update"); return; } flags = GetChar_String(data+pos); pos += 1; tag = GetInt_String(data+pos); pos += 4; for (tmp = cpl.spelldata; tmp && tmp->tag != tag; tmp = tmp->next) ; if (!tmp) { LOG(LOG_WARNING, "common::UpdspellCmd", "Invalid tag: %d", tag); return; } if (flags&UPD_SP_MANA) { tmp->sp = GetShort_String(data+pos); pos += 2; } if (flags&UPD_SP_GRACE) { tmp->grace = GetShort_String(data+pos); pos += 2; } if (flags&UPD_SP_DAMAGE) { tmp->dam = GetShort_String(data+pos); pos += 2; } if (pos > len) { LOG(LOG_WARNING, "common::UpdspellCmd", "Overread buffer: %d > %d", pos, len); } cpl.spells_updated = 1; } /** * * @param data * @param len */ void DeleteSpell(unsigned char *data, int len) { int tag; Spell *tmp, *target; if (!cpl.spelldata) { LOG(LOG_WARNING, "common::DeleteSpell", "I know no spells to delete"); return; } tag = GetInt_String(data); /* Special case: the first spell is the one removed */ if (cpl.spelldata->tag == tag) { target = cpl.spelldata; if (target->next) { cpl.spelldata = target->next; } else { cpl.spelldata = NULL; } free(target); return; } for (tmp = cpl.spelldata; tmp->next && tmp->next->tag != tag; tmp = tmp->next) ; if (!tmp->next) { LOG(LOG_WARNING, "common::DeleteSpell", "Invalid tag: %d", tag); return; } target = tmp->next; if (target->next) { tmp->next = target->next; } else { tmp->next = NULL; } free(target); cpl.spells_updated = 1; } /****************************************************************************/ /** * @} */ /* EndOf SCSpellCommands */ /** * @defgroup SCMapCommands Server->Client map command functions. * @{ */ /** * * @param data * @param len */ void NewmapCmd(unsigned char *data, int len) { (void)data; /* __UNUSED__ */ (void)len; /* __UNUSED__ */ mapdata_newmap(); } /* This is the common processing block for the map1 and map1a protocol * commands. The map1a mieks minor extensions and are easy to deal with * inline (in fact, this code doesn't even care what rev is - just certain * bits will only bet set when using the map1a command. rev is 0 for map1, 1 * for map1a. It conceivable that there could be future revisions. */ /* NUM_LAYERS should only be used for the map1{a} which only has a few layers. * Map2 has 10 layers. However, some of the map1 logic requires this to be * set right. */ #define NUM_LAYERS (MAP1_LAYERS-1) /** * * @param data * @param len */ void Map2Cmd(unsigned char *data, int len) { int mask, x, y, pos = 0, space_len, value; uint8 type; display_map_startupdate(); /* Not really using map1 protocol, but some draw logic differs from the * original draw logic, and map2 is closest. */ while (pos < len) { mask = GetShort_String(data+pos); pos += 2; x = ((mask>>10)&0x3f)-MAP2_COORD_OFFSET; y = ((mask>>4)&0x3f)-MAP2_COORD_OFFSET; /* This is a scroll then. Go back and fetch another coordinate */ if (mask&0x1) { mapdata_scroll(x, y); continue; } if (x<0) { LOG(LOG_WARNING, "commands.c::Map2Cmd", "got negative x!"); x = 0; } else if (x >= MAX_VIEW) { LOG(LOG_WARNING, "commands.c::Map2Cmd", "got x >= MAX_VIEW!"); x = MAX_VIEW - 1; } if (y<0) { LOG(LOG_WARNING, "commands.c::Map2Cmd", "got negative y!"); y = 0; } else if (y >= MAX_VIEW) { LOG(LOG_WARNING, "commands.c::Map2Cmd", "got y >= MAX_VIEW!"); y = MAX_VIEW - 1; } assert(0 <= x && x < MAX_VIEW); assert(0 <= y && y < MAX_VIEW); /* Clearing old cell data as needed (was in mapdata_set_face_layer() * before however that caused darkness to only work if sent after the * layers). */ mapdata_clear_old(x, y); /* Inner loop is for the data on the space itself */ while (pos < len) { type = data[pos++]; /* type == 255 means nothing more for this space */ if (type == 255) { mapdata_set_check_space(x, y); break; } space_len = type>>5; type &= 0x1f; /* Clear the space */ if (type == MAP2_TYPE_CLEAR) { mapdata_clear_space(x, y); continue; } else if (type == MAP2_TYPE_DARKNESS) { value = data[pos++]; mapdata_set_darkness(x, y, value); continue; } else if (type >= MAP2_LAYER_START && type < MAP2_LAYER_START+MAXLAYERS) { int layer, opt; /* This is face information for a layer. */ layer = type&0xf; if (layer < 0) { LOG(LOG_WARNING, "commands.c::Map2Cmd", "got negative layer!"); layer = 0; } else if (layer >= MAXLAYERS) { LOG(LOG_WARNING, "commands.c::Map2Cmd", "got layer >= MAXLAYERS!"); layer = MAXLAYERS - 1; } assert(0 <= layer && layer < MAXLAYERS); /* This is the face */ value = GetShort_String(data+pos); pos += 2; if (!(value&FACE_IS_ANIM)) { mapdata_set_face_layer(x, y, value, layer); } if (space_len > 2) { opt = data[pos++]; if (value&FACE_IS_ANIM) { /* Animation speed */ mapdata_set_anim_layer(x, y, value, opt, layer); } else { /* Smooth info */ mapdata_set_smooth(x, y, opt, layer); } } /* Currently, if 4 bytes, must be a smooth byte */ if (space_len > 3) { opt = data[pos++]; mapdata_set_smooth(x, y, opt, layer); } continue; } /* if image layer */ } /* while pos>10)&0x3f; y = (mask>>4)&0x3f; for (layer = NUM_LAYERS; layer >= 0; layer--) { if (mask&(1< len) { /*erroneous packet*/ break; } startpackentry = pos; /* If you had extended infos to the server, this is where, in * the client, you may add your code */ if (hassmooth) { pos = pos+ExtSmooth(data+pos, len-pos, x, y, NUM_LAYERS-layer); } /* Continue with other if you add new extended infos to server * * Now point to the next data */ pos = startpackentry+entrysize; } } } if (!noredraw) { display_map_doneupdate(FALSE, FALSE); mapupdatesent = 0; } } /** * * @param data * @param len */ void MagicMapCmd(unsigned char *data, int len) { unsigned char *cp; int i; /* First, extract the size/position information. */ if (sscanf((const char*)data, "%hd %hd %hd %hd", &cpl.mmapx, &cpl.mmapy, &cpl.pmapx, &cpl.pmapy) != 4) { LOG(LOG_WARNING, "common::MagicMapCmd", "Was not able to properly extract magic map size, pos"); return; } if (cpl.mmapx == 0 || cpl.mmapy == 0) { LOG(LOG_WARNING, "common::MagicMapCmd", "empty map"); return; } /* Now we need to find the start of the actual data. There are 4 space * characters we need to skip over. */ for (cp = data, i = 0; i < 4 && cp < data+len; cp++) { if (*cp == ' ') { i++; } } if (i != 4) { LOG(LOG_WARNING, "common::MagicMapCmd", "Was unable to find start of magic map data"); return; } i = len-(cp-data); /* This should be the number of bytes left */ if (i != cpl.mmapx*cpl.mmapy) { LOG(LOG_WARNING, "common::MagicMapCmd", "Magic map size mismatch. Have %d bytes, should have %d", i, cpl.mmapx*cpl.mmapy); return; } free(cpl.magicmap); cpl.magicmap = malloc(cpl.mmapx*cpl.mmapy); /* Order the server puts it in should be just fine. Note that the only * requirement that this works is that magicmap by 8 bits, being that is * the size specified in the protocol and what the server sends us. */ memcpy(cpl.magicmap, cp, cpl.mmapx*cpl.mmapy); cpl.showmagic = 1; draw_magic_map(); } /** * @} */ /* EndOf SCMapCommands */ /** * * @param data * @param len */ void SinkCmd(unsigned char *data, int len) { } /** * Got a tick from the server. We currently don't care what tick number it * is, but just have the code in case at some time we do. * * @param data * @param len */ void TickCmd(uint8 *data, int len) { tick = GetInt_String(data); /* Up to the specific client to decide what to do */ client_tick(tick); } /** * Server gives us current player's pickup. * * @param data * buffer sent by server. * @param len * length of data. */ void PickupCmd(uint8 *data, int len) { uint32 pickup = GetInt_String(data); client_pickup(pickup); } /** * Handles a failure return from the server. * * @param buf * buffer sent by server. * @param len * length of data. */ void FailureCmd(char *buf, int len) { char *cp; /* The format of the buffer is 'command error message'. We need to * extract the failed command, and then pass in the error message to the * appropriate handler. So find the space, set it to null. in that way, * buf is now just the failure command, and cp is the message. */ cp = strchr(buf,' '); if (!cp) return; *cp = 0; cp++; if (!strcmp(buf,"accountlogin")) { account_login_failure(cp); } else if (!strcmp(buf,"accountnew")) { account_creation_failure(cp); } else if (!strcmp(buf,"accountaddplayer")) { account_add_character_failure(cp); } else if (!strcmp(buf,"createplayer")) { create_new_character_failure(cp); } else if (!strcmp(buf, "accountpw")) { account_change_password_failure(cp); } else /* This really is an error - if this happens it menas the server * failed to process a request that the client made - the client * should be able to handle failures for all request types it makes. * But this is also a problem in that it means that the server is * waiting for a correct response, and if we do not display anything, * the player is unlikely to know this. */ LOG(LOG_ERROR, "common::FailureCmd", "Got a failure response we can not handle: %s:%s", buf, cp); } /** * This handles the accountplayers command */ void AccountPlayersCmd(char *buf, int len) { int num_characters, level, pos, flen, faceno; char name[MAX_BUF], class[MAX_BUF], race[MAX_BUF], face[MAX_BUF], party[MAX_BUF], map[MAX_BUF]; /* This is called first so it can clear out the existing data store. */ choose_character_init(); level=0; name[0]=0; class[0]=0; race[0]=0; face[0]=0; party[0]=0; map[0]=0; faceno=0; /* We don't do anything with this right now */ num_characters=buf[0]; pos=1; while (pos < len) { flen = buf[pos]; /* flen == 0 is to note that we got end of character data */ if (flen == 0) { update_character_choose(name, class, race, face, party, map, level, faceno); /* Blank all the values - it is no sure thing that the next * character will fill all these in. */ level=0; name[0]=0; class[0]=0; race[0]=0; face[0]=0; party[0]=0; map[0]=0; faceno=0; pos++; continue; } pos++; if ((pos +flen) > len || flen>=MAX_BUF) { LOG(LOG_ERROR,"commands.c:AccountPlayerCmd", "data overran buffer"); return; } switch (buf[pos]) { case ACL_NAME: strncpy(name, buf + pos +1, flen-1); name[flen-1] = 0; break; case ACL_CLASS: strncpy(class, buf + pos +1, flen-1); class[flen-1] = 0; break; case ACL_RACE: strncpy(race, buf + pos +1, flen-1); race[flen-1] = 0; break; case ACL_FACE: strncpy(face, buf + pos +1, flen-1); face[flen-1] = 0; break; case ACL_PARTY: strncpy(party, buf + pos +1, flen-1); party[flen-1] = 0; break; case ACL_MAP: strncpy(map, buf + pos +1, flen-1); map[flen-1] = 0; break; case ACL_LEVEL: level = GetShort_String(buf+pos+1); break; case ACL_FACE_NUM: faceno = GetShort_String(buf+pos+1); break; } pos += flen; } } crossfire-client-1.70.0/common/cconfig.h0000644000014500000120000000657311731277011015042 00000000000000/* * static char *rcsid_common_cconfig_h = * "$Id: cconfig.h 14247 2011-01-24 05:21:30Z mwedel $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001,2011 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/cconfig.h * Contains various client configuration options. Most all of these can be * overridden via command line options, but setting them here provides nice * defaults. */ /* This is how often the client checks for X events, as well as how often * it performs animations (or will). This value can be most anything. * IT is only configurable because the exact value it needs to be set to * has to be figured out. This value is in microseconds (100,000 microseconds= * 0.1 seconds */ #define MAX_TIME 100000 /* This is the default port to connect to the server with. */ #define EPORT 13327 /* This is the default port to connect to the server with in string form. */ #define DEFPORT "13327" /* Set to default server you want the client to connect to. This can * be especially useful if your installing the client binary on a LAN * and want people to just be able to run it without options and connect * to some server. localhost is the default. Remember to use double * quotes around your server name. * Comment this out - by default, things connect to metaserver so * this is normally ignored in any case. If this is not commented out, * the the client will automatically try to connect to this - useful * if inside a firewall and have a local server. Using -server "" * can then bypass this setting */ /* #define SERVER "localhost" */ /* Server to contact to get information about crossfire servers. * This is not the server you play on, but rather a central repository * that lists the servers. * METASERVER controls default behaviour (same as -metaserver options) - * if set to TRUE, we try to get metaserver information, if false, we do * not. If you are behind a firewall, you probably want this off by * default. * METASERVER2 is controlled via --disable-metaserver2 when configure * is run - by default, it is enabled. */ #define META_SERVER "crossfire.real-time.com" #define META_PORT 13326 #define METASERVER FALSE /* If you uncomment this, the gtk client will dump information about * how long it took to update the display. If your having * performance problems, this may be a more useful way to see * what your performance really is like. The data will be dumped * to stderr, with timings in microseconds. A general rule of thumb * is you want the update times to be less than 100,000 microseconds */ /* #define TIME_MAP_REDRAW */ crossfire-client-1.70.0/common/script.h0000644000014500000120000000372711731277011014734 00000000000000/* * static char *rcsid_common_script_h = * "$Id: script.h 12149 2009-08-20 02:11:28Z kbulgrien $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2003 Mark Wedel & Crossfire Development Team This source file also Copyright (C) 2003 Preston Crow 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/script.h * */ #ifndef SCRIPT_H #define SCRIPT_H #ifndef PF_LOCAL #define PF_LOCAL PF_UNIX /* Old BSD name for PF_LOCAL. */ #endif #ifndef AF_LOCAL #define AF_LOCAL PF_LOCAL #endif enum CmdFormat { ASCII, SHORT_ARRAY, INT_ARRAY, SHORT_INT, /* one short, one int */ MIXED, /* weird ones like magic map */ STATS, NODATA }; void script_init(const char *params); void script_list(void); void script_sync(int cmddiff); void script_kill(const char *params); #ifdef WIN32 void script_killall(void); #endif void script_fdset(int *maxfd,fd_set *set); void script_process(fd_set *set); void script_watch(const char *cmd, const uint8 *data, const int len, const enum CmdFormat format); void script_monitor(const char *command, int repeat, int must_send); void script_monitor_str(const char *command); void script_tell(const char *params); #endif /* SCRIPT_H */ crossfire-client-1.70.0/common/Makefile.in0000644000014500000120000004224511731277165015334 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire-client # # Copyright (C) 2005,2007 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = common DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru libcfclient_a_AR = $(AR) $(ARFLAGS) libcfclient_a_LIBADD = am_libcfclient_a_OBJECTS = client.$(OBJEXT) commands.$(OBJEXT) \ image.$(OBJEXT) init.$(OBJEXT) item.$(OBJEXT) \ mapdata.$(OBJEXT) metaserver.$(OBJEXT) misc.$(OBJEXT) \ newsocket.$(OBJEXT) p_cmd.$(OBJEXT) player.$(OBJEXT) \ script.$(OBJEXT) script_lua.$(OBJEXT) libcfclient_a_OBJECTS = $(am_libcfclient_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/utils/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libcfclient_a_SOURCES) DIST_SOURCES = $(libcfclient_a_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libcfclient.a libcfclient_a_SOURCES = \ client.c \ commands.c \ image.c \ init.c \ item.c \ mapdata.c \ metaserver.c \ misc.c \ newsocket.c \ p_cmd.c \ player.c \ script.c \ script_lua.c noinst_HEADERS = \ cconfig.h \ client-types.h \ client.h \ config.h \ def-keys.h \ external.h \ item-types.h \ item.h \ mapdata.h \ metaserver.h \ msgtypes.h \ p_cmd.h \ proto.h \ script.h \ script_lua.h \ version.h \ svnversion.h \ shared/newclient.h BUILT_SOURCES = svnversion.h CLEANFILES = svnversion.h EXTRA_DIST = \ def-keys \ item-types \ items.pl AM_CFLAGS = $(PTHREAD_CFLAGS) all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 common/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu common/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status common/config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libcfclient.a: $(libcfclient_a_OBJECTS) $(libcfclient_a_DEPENDENCIES) -rm -f libcfclient.a $(libcfclient_a_AR) libcfclient.a $(libcfclient_a_OBJECTS) $(libcfclient_a_LIBADD) $(RANLIB) libcfclient.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commands.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/item.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapdata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metaserver.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newsocket.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_cmd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/script_lua.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` 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) 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; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(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) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LIBRARIES) $(HEADERS) config.h installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || 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." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am 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: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-hdr distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am proto: cproto -DCPROTO -DCFCLIENT $(DEFAULT_INCLUDES) $(AM_CFLAGS) \ $(libcfclient_a_SOURCES) > proto.h chmod 644 proto.h item-types.h: item-types $(PERL) $(srcdir)/items.pl $(srcdir) def-keys.h: def-keys $(srcdir)/../utils/mdk.sh $(srcdir) $(srcdir)/msgtypes.h: $(srcdir)/shared/newclient.h $(PERL) $(srcdir)/msgtypes.pl $(srcdir) svnversion.h: FORCE OUTPUT_DATA='/* Auto-generated at build time. */'; \ if [ "X`echo -n`" = "X-n" ]; then \ echo_n() { echo $${1+"$$@"}"\c"; } \ else \ echo_n() { echo -n $${1+"$$@"}; } \ fi; \ if test -n "$(SVNVERSION)" -a -d "$(top_srcdir)/.svn"; \ then OUTPUT_DATA=`echo "$$OUTPUT_DATA"; echo_n '#define SVN_REV "'; $(SVNVERSION) -n "$(top_srcdir)"`'"'; \ fi; \ if test ! -e svnversion.h; then \ echo "$$OUTPUT_DATA" > svnversion.h; \ elif test "$$OUTPUT_DATA" != "`cat svnversion.h`"; then \ echo "$$OUTPUT_DATA" > svnversion.h; \ fi FORCE: # 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: crossfire-client-1.70.0/common/image.c0000644000014500000120000006555611731277011014515 00000000000000const char * const rcsid_common_image_c = "$Id: image.c 13982 2010-10-09 22:41:04Z anmaster $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2002-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/image.c * Contains image related functions at a high level. It mostly deals with the * caching of the images, processing the image commands from the server, etc. */ #include #include #include #ifndef WIN32 #include #else #include #include #endif #include #include "client.h" #include "external.h" /* Rotate right from bsd sum. */ #define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1; /*#define CHECKSUM_DEBUG*/ struct FD_Cache { char name[MAX_BUF]; int fd; } fd_cache[MAX_FACE_SETS]; /** * Given a filename, this tries to load the data. It returns 0 success, -1 on * failure. It returns the data and len, the passed options. This function * is called only if the client caching feature is enabled. * * @param filename File name of an image to try to load. * @param data Caller-allocated pointer to a buffer to load image into. * @param len Amount of buffer used by the loaded image. * @param csum Returns 0/unset (caller already knows if checksum matches?). * Changes have made such that the caller knows whether or not * the checksum matches, so there is little point to re-do it. * @return 0 on success, -1 on failure. */ static int load_image(char *filename, uint8 *data, int *len, uint32 *csum) { int fd, i; char *cp; /* If the name includes an @, then that is a combined image file, * so we need to load the image a bit specially. By using these * combined image files, it reduces number of opens needed. * In fact, we keep track of which ones we have opened to improve * performance. Note that while not currently done, this combined * image scheme could be done when storing images in the players * ~/.crossfire/image-cache directory. */ if ((cp=strchr(filename,'@'))!=NULL) { char *lp; int offset, length, last=-1; offset = atoi(cp + 1); lp = strchr(cp,':'); if (!lp) { LOG(LOG_ERROR,"common::load_image","Corrupt filename - has '@' but no ':' ?(%s)", filename); return -1; } length = atoi(lp + 1); *cp = 0; for (i=0; i> 6; } hash += hash << 3; hash ^= hash >> 11; hash += hash << 15; return hash % tablesize; } /** * This function returns an index into the image_cache for a matching entry, * -1 if no match is found. */ static sint32 image_find_hash(char *str) { uint32 hash = image_hash_name(str, IMAGE_HASH), newhash; newhash = hash; do { /* No entry - return immediately */ if (image_cache[newhash].image_name == NULL) return -1; if (!strcmp(image_cache[newhash].image_name, str)) return newhash; newhash ++; if (newhash == IMAGE_HASH) newhash=0; } while (newhash != hash); /* If the hash table is full, this is bad because we won't be able to * add any new entries. */ LOG(LOG_WARNING,"common::image_find_hash","Hash table is full, increase IMAGE_CACHE size"); return -1; } /** * */ static void image_remove_hash(char *imagename, Cache_Entry *ce) { int hash_entry; Cache_Entry *last; hash_entry = image_find_hash(imagename); if (hash_entry == -1) { LOG(LOG_ERROR,"common::image_remove_hash","Unable to find cache entry for %s, %s", imagename, ce->filename); return; } if (image_cache[hash_entry].cache_entry == ce) { image_cache[hash_entry].cache_entry = ce->next; free(ce->filename); free(ce); return; } last = image_cache[hash_entry].cache_entry; while (last->next && last->next != ce) last=last->next; if (!last->next) { LOG(LOG_ERROR,"common::image_rmove_hash","Unable to find cache entry for %s, %s", imagename, ce->filename); return; } last->next = ce->next; free(ce->filename); free(ce); } /** * This finds and returns the Cache_Entry of the image that matches name * and checksum if has_sum is set. If has_sum is not set, we can't * do a checksum comparison. */ static Cache_Entry *image_find_cache_entry(char *imagename, uint32 checksum, int has_sum) { int hash_entry; Cache_Entry *entry; hash_entry = image_find_hash(imagename); if (hash_entry == -1) return NULL; entry = image_cache[hash_entry].cache_entry; if (has_sum) { while (entry) { if (entry->checksum == checksum) break; entry = entry->next; } } return entry; /* This could be NULL */ } /** * Add a hash entry. Returns the entry we added, NULL on failure. */ static Cache_Entry *image_add_hash(char *imagename, char *filename, uint32 checksum, uint32 ispublic) { Cache_Entry *new_entry; uint32 hash = image_hash_name(imagename, IMAGE_HASH), newhash; newhash = hash; while (image_cache[newhash].image_name != NULL && strcmp(image_cache[newhash].image_name, imagename)) { newhash ++; if (newhash == IMAGE_HASH) newhash=0; /* If the hash table is full, can't do anything */ if (newhash == hash) { LOG(LOG_WARNING,"common::image_find_hash","Hash table is full, increase IMAGE_CACHE size"); return NULL; } } if (!image_cache[newhash].image_name) { image_cache[newhash].image_name = strdup(imagename); } /* We insert the new entry at the start of the list of the buckets * for this entry. In the case of the players entries, this probably * improves performance, presuming ones later in the file are more likely * to be used compared to those at the start of the file. */ new_entry = malloc(sizeof(struct Cache_Entry)); new_entry->filename = strdup(filename); new_entry->checksum = checksum; new_entry->ispublic = ispublic; new_entry->image_data = NULL; new_entry->next = image_cache[newhash].cache_entry; image_cache[newhash].cache_entry = new_entry; return new_entry; } /** * Process a line from the bmaps.client file. In theory, the format should be * quite strict, as it is computer generated, but we try to be lenient/follow * some conventions. Note that this is destructive to the data passed in * line. */ static void image_process_line(char *line, uint32 ispublic) { char imagename[MAX_BUF], filename[MAX_BUF]; uint32 checksum; if (line[0] == '#') return; /* Ignore comments */ if (sscanf(line, "%s %u %s", imagename, &checksum, filename)==3) { image_add_hash(imagename, filename, checksum, ispublic); } else { LOG(LOG_WARNING,"common::image_process_line","Did not parse line %s properly?", line); } } /** * */ void init_common_cache_data(void) { FILE *fp; char bmaps[MAX_BUF], inbuf[MAX_BUF]; int i; if (!want_config[CONFIG_CACHE]) return; for (i = 0; i < MAXPIXMAPNUM; i++) facetoname[i] = NULL; /* First, make sure that image_cache is nulled out */ memset(image_cache, 0, IMAGE_HASH * sizeof(struct Image_Cache)); snprintf(bmaps, sizeof(bmaps), "%s/bmaps.client",CF_DATADIR); if ((fp=fopen(bmaps,"r"))!=NULL) { while (fgets(inbuf, MAX_BUF-1, fp)!=NULL) { image_process_line(inbuf, 1); } fclose(fp); } else { snprintf(inbuf, sizeof(inbuf), "Unable to open %s. You may wish to download and install the image file to improve performance.\n", bmaps); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, inbuf); } snprintf(bmaps, sizeof(bmaps), "%s/.crossfire/image-cache/bmaps.client", getenv("HOME")); if ((fp=fopen(bmaps,"r"))!=NULL) { while (fgets(inbuf, MAX_BUF-1, fp)!=NULL) { image_process_line(inbuf, 0); } fclose(fp); } /* User may not have a cache, so no error if not found */ for (i=0; iimage_data) { /* If this has image_data, then it has already been rendered */ if (!associate_cache_entry(ce, pnum)) return; } if (ce->ispublic) snprintf(filename, sizeof(filename), "%s/%s", CF_DATADIR, ce->filename); else snprintf(filename, sizeof(filename), "%s/.crossfire/image-cache/%s", getenv("HOME"), ce->filename); if (load_image(filename, data, &len, &newsum)==-1) { LOG(LOG_WARNING,"common::finish_face_cmd","file %s listed in cache file, but unable to load", filename); requestface(pnum, face); return; } } /* If we got here, we found an image and the checksum is OK. */ if (!(png_tmp = png_to_data(data, len, &nx, &ny))) { /* If the data is bad, remove it if it is in the players private cache */ LOG(LOG_WARNING,"common::finish_face_cmd","Got error on png_to_data, image=%s",face); if (ce) { if (!ce->ispublic) unlink(filename); image_remove_hash(face,ce); } requestface(pnum, face); } /* create_and_rescale_image_from data is an external reference to a piece in * the gui section of the code. */ if (create_and_rescale_image_from_data(ce, pnum, png_tmp,nx, ny)) { LOG(LOG_WARNING,"common::finish_face_cmd","Got error on create_and_rescale_image_from_data, file=%s",filename); requestface(pnum, face); } free(png_tmp); } /** * We can now connect to different servers, so we need to clear out any old * images. We try to free the data also to prevent memory leaks. * Note that we don't touch our hashed entries - so that when we connect to a * new server, we still have all that information. */ void reset_image_cache_data(void) { int i; if (want_config[CONFIG_CACHE]) for (i=1; i=0 && setnum < MAX_FACE_SETS && face_info.facesets[setnum].prefix) snprintf(basename, sizeof(basename),"%s.%s", facetoname[face], face_info.facesets[setnum].prefix); else strcpy(basename, facetoname[face]); /* Decrease it by one since it will immediately get increased * in the loop below. */ setnum--; do { setnum++; snprintf(filename, sizeof(filename), "%s/.crossfire/image-cache/%c%c/%s.%d", getenv("HOME"), facetoname[face][0], facetoname[face][1], basename, setnum); } while (access(filename, F_OK)==-0); #ifdef WIN32 if ((tmpfile = fopen(filename,"wb"))==NULL) #else if ((tmpfile = fopen(filename,"w"))==NULL) #endif { LOG(LOG_WARNING,"common::display_newpng","Can not open %s for writing", filename); } else { /* found a file we can write to */ fwrite(buf, buflen, 1, tmpfile); fclose(tmpfile); csum=0; for (i=0; (int)i len) return; face_info.num_images = atoi(lp); lp = cp+1; cp = strchr(lp, '\n'); if (!cp || (cp - lp) > len) return; face_info.bmaps_checksum = strtoul(lp, NULL, 10); /* need unsigned, so no atoi */ lp = cp+1; cp = strchr(lp, '\n'); while (cp && (cp - lp) <= len) { *cp++ = '\0'; /* The code below is pretty much the same as the code from the server * which loads the original faceset file. */ if (!(cps[0] = strtok(lp, ":"))) badline=1; for (i=1; i<7; i++) { if (!(cps[i] = strtok(NULL, ":"))) badline=1; } if (badline) { LOG(LOG_WARNING,"common::get_image_info","bad data, ignoring line:/%s/", lp); } else { onset = atoi(cps[0]); if (onset >=MAX_FACE_SETS) { LOG(LOG_WARNING,"common::get_image_info","setnum is too high: %d > %d", onset, MAX_FACE_SETS); } face_info.facesets[onset].prefix = strdup_local(cps[1]); face_info.facesets[onset].fullname = strdup_local(cps[2]); face_info.facesets[onset].fallback = atoi(cps[3]); face_info.facesets[onset].size = strdup_local(cps[4]); face_info.facesets[onset].extension = strdup_local(cps[5]); face_info.facesets[onset].comment = strdup_local(cps[6]); } lp = cp; cp = strchr(lp, '\n'); } face_info.have_faceset_info = 1; /* if the user has requested a specific face set and that set * is not numeric, try to find a matching set and send the * relevent setup command. */ if (face_info.want_faceset && atoi(face_info.want_faceset)==0) { for (onset=0; onset len) return; while (isspace(*cp)) cp++; lp = cp; cp = strchr(lp, ' '); if (!cp || (cp - data) > len) return; stop = atoi(lp); replyinfo_last_face = stop; /* Can't use isspace here, because it matches with tab, ascii code * 9 - this results in advancing too many spaces because * starting at image 2304, the MSB of the image number will be * 9. Using a check against space will work until we get up to * 8192 images. */ while (*cp==' ') cp++; while ((cp - data) < len) { imagenum = GetShort_String((uint8*)cp); cp += 2; checksum = GetInt_String((uint8*)cp); cp += 4; faceset = *cp; cp++; slen = *cp; cp++; /* Note that as is, this can break horribly if the client is missing a large number * of images - that is because it will request a whole bunch which will overflow * the servers output buffer, causing it to close the connection. * What probably should be done is for the client to just request this checksum * information in small batches so that even if the client has no local * images, requesting the entire batch won't overflow the sockets buffer - this * probably amounts to about 100 images at a time */ finish_face_cmd(imagenum, checksum, 1, (char*)cp, faceset); if (imagenum > stop) LOG(LOG_WARNING,"common::get_image_sums","Received an image beyond our range? %d > %d", imagenum, stop); cp += slen; } } crossfire-client-1.70.0/common/metaserver.h0000644000014500000120000000621111731277011015574 00000000000000/* char *rcsid_common_metaserver_h = * "$Id: metaserver.h 13043 2010-04-30 01:05:36Z kbulgrien $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2005,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/metaserver.h * */ /* Arbitrary size. At some point, we would need to cut this off simply * for display/selection reasons. */ #define MAX_METASERVER 100 /* Various constants we use in the structure */ #define MS_SMALL_BUF 60 #define MS_LARGE_BUF 512 /** * Structure that contains data we get from metaservers * This is used by both metaserver1 and metaserver2 * support - fields used by only one metaserver type * or the other are noted with MS1 or MS2 comments. * Note that the client doesn't necessary do anything with * all of these fields, but might as well store them around * just in case */ typedef struct Meta_Info { char ip_addr[MS_SMALL_BUF]; /* MS1 */ char hostname[MS_LARGE_BUF]; /* MS1 & MS2 */ int port; /* MS2 - port server is on */ char html_comment[MS_LARGE_BUF]; /* MS2 */ char text_comment[MS_LARGE_BUF]; /* MS1 & MS2 - for MS1, presumed */ /* all comments are text */ char archbase[MS_SMALL_BUF]; /* MS2 */ char mapbase[MS_SMALL_BUF]; /* MS2 */ char codebase[MS_SMALL_BUF]; /* MS2 */ char flags[MS_SMALL_BUF]; /* MS2 */ int num_players; /* MS1 & MS2 */ uint32 in_bytes; /* MS2 */ uint32 out_bytes; /* MS2 */ int idle_time; /* MS1 - for MS2, calculated from */ /* last_update value */ int uptime; /* MS2 */ char version[MS_SMALL_BUF]; /* MS1 & MS2 */ int sc_version; /* MS2 */ int cs_version; /* MS2 */ } Meta_Info; extern Meta_Info *meta_servers; /* Before accessing the metaservers structure, * a lock against this is needed */ extern pthread_mutex_t ms2_info_mutex; /* Needs to be here because gtk2 client needs to resort for example */ extern int meta_sort(Meta_Info *m1, Meta_Info *m2); extern int meta_numservers; extern int cached_servers_num; #define CACHED_SERVERS_MAX 10 extern char* cached_servers_name[ CACHED_SERVERS_MAX ]; extern char* cached_servers_ip[ CACHED_SERVERS_MAX ]; extern const char* cached_server_file; /* Used by GTK-V2 client to maintain servers.cache */ extern void metaserver_update_cache(const char *server_name, const char *server_ip); crossfire-client-1.70.0/common/item-types.h0000644000014500000120000001253111731277216015530 00000000000000/* This file is automatically generated editing by hand is strongly*/ /* discouraged. Look at the item-types file and the items.pl conversion */ /* script. */ #define NUM_ITEM_TYPES 256 #define MAX_NAMES_PER_TYPE 64 static const char * const item_types[256][64] = { { NULL }, { "sack", "Luggage", "pouch", "quiver", "bag", "chest", "key ring", NULL }, { "axe", "club", "dagger", "falchion", "hammer", "katana", "mace", "magnifying glass", "morningstar", "nunchacu", "quarterstaff", "sabre", "scimitar", "shovel", "^spear", "stake", "^sword", "Belzebub's sword", "Firebrand", "Harakiri sword", "broadsword", "light sword", "Serpentman sword", "shortsword", "long sword", "taifu", "trident", "BoneCrusher", "Darkblade", "Demonslayer", "Dragonslayer", "Excalibur", "firebrand", "Firestar", "Flame Tongue", "FlameTongue", "Frost Hammer", "Katana of Masamune", "Lightning sticks", "Mjoellnir", "Mournblade", "Sting", "Stormbringer", "Trident", NULL }, { "^bow", "elven bow", "long bow", "crossbow", "sling", "arrow", "^bolt", "boulder", NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { "mail", "leather", "^robe", "shirt", "apron", "hauberk", NULL }, { "helmet", "Crown", "crown", NULL }, { "shield", "Demonspawn Shield", NULL }, { "boot", "glove", "gauntlet", "shoe", NULL }, { "girdle", NULL }, { "cloak", NULL }, { "bracer", NULL }, { NULL }, { NULL }, { NULL }, { "apple", "booze", "bread", "cabbage", "cake", "carrot", "chocolate", "clover", "cup ", "egg", "fish", "food", "mint sprig", "mushroom", "onion", "orange", "potato", "roast bird", "steak", "waybread", "^water", NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { "diamond", "emerald", "gold nugget", "pearl", "ruby", "sapphire", NULL }, { "coin", NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { "rod", "Rod", NULL }, { NULL }, { "wand", NULL }, { "staff", NULL }, { NULL }, { NULL }, { NULL }, { "horn", NULL }, { "amulet", NULL }, { "ring", "Ring ", NULL }, { "scroll", NULL }, { "grimore", "grimoire", "hymnal", "manual", "prayerbook", "sacred text", "spellbook", "testiment", "treatise", "tome", NULL }, { "book", "catalog", "codex", "collection", "compendium", "compilation", "divine text", "divine work", "encyclopedia", "exposition", "file ", "formulary", "guide ", "holy book ", "holy record ", "index", "moral text", "notes", "note", "pamphlet", "record ", "tables", "transcript", "volume", NULL }, { NULL }, { "potion", "bottle", NULL }, { NULL }, { "^balm", "^dust", "dust ", "figurine", NULL }, { NULL }, { "Improve", "Lower Weapon", "Enchant Weapon", "Prepare Weapon", "Enchant Armour", NULL }, { NULL }, { "holy symbol", "lockpick", "talisman", "writing pen", NULL }, { NULL }, { "key", "Key", NULL }, { NULL }, { NULL }, { "arm", "claw", "corpse", "dragon scale", "ectoplasm", "eye", "finger", "foot", "hand", "head", "Head", "heart", "icor", "leg", "lich dust", "liver", "orc chop", "pixie dust", "residue", "skin", "stinger", "tongue", "tooth", "^wing", NULL }, { "dirt", "lead", "mandrake root", "pile", "rock", "stone", NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { "flint and steel", "torch", NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { "clock", "flower", "Gate Pass", "Glowing Crystal", "gravestone", "icecube", "library card", "Passport", "Port Pass", "rose", "Apartment Extender", NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { "chair", "table", NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, }; crossfire-client-1.70.0/common/client-types.h0000644000014500000120000000671311731277011016046 00000000000000/* * static char *rcsid_common_client_types_h = * "$Id: client-types.h 13273 2010-05-20 13:40:07Z cavesomething $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/client-types.h * */ #ifndef CLIENT_TYPES_H #define CLIENT_TYPES_H #include /* If using autoconf, use it to pick up the necessary files. Otherwise, * we will draw on includes.h */ #include #include #include #include #ifdef HAVE_SYS_TIME_H # include #endif #include #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_FCNTL_H # include #endif #ifdef WIN32 # include #endif #ifdef HAVE_PTHREAD_H # include #endif /* Just some handy ones I like to use */ #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif #ifndef WIN32 /* Set of common types used through the program and modules */ typedef unsigned int uint32; typedef signed int sint32; typedef unsigned short uint16; typedef signed short sint16; typedef unsigned char uint8; typedef signed char sint8; #if SIZEOF_LONG == 8 typedef unsigned long uint64; typedef signed long sint64; #define FMT64 "ld" #define FMT64U "ld" #elif SIZEOF_LONG_LONG == 8 typedef unsigned long long uint64; typedef signed long long sint64; #define FMT64 "lld" #define FMT64U "lld" #else #error do not know how to get a 64 bit value on this system. #error correct and send mail to crossfire-devel on how to do this. #endif #else /* Windows specific defines */ typedef unsigned __int64 uint64; typedef signed __int64 sint64; typedef unsigned __int32 uint32; typedef signed __int32 sint32; typedef unsigned __int16 uint16; typedef signed __int16 sint16; typedef unsigned char uint8; typedef signed char sint8; #define FMT64 "I64d" #define FMT64U "I64u" /* mingw defines rand and srand only */ #ifndef random #define random rand #endif #ifndef srandom #define srandom srand #endif #ifndef sleep #define sleep(x) Sleep((x)*1000) #endif #endif #ifndef SOL_TCP #define SOL_TCP IPPROTO_TCP #endif #define MAX_BUF 256 #define BIG_BUF 1024 /* used to register gui callbacks to extended texts * (which are supposed to be handled more friendly than raw text)*/ typedef void (*ExtTextManager)(int flag, int type, int subtype, char* message); typedef struct TextManager{ int type; ExtTextManager callback; struct TextManager* next; } TextManager; #endif crossfire-client-1.70.0/common/Makefile.am0000644000014500000120000000461211731277011015305 00000000000000# # Makefile for crossfire-client # # Copyright (C) 2005,2007 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com noinst_LIBRARIES = libcfclient.a libcfclient_a_SOURCES = \ client.c \ commands.c \ image.c \ init.c \ item.c \ mapdata.c \ metaserver.c \ misc.c \ newsocket.c \ p_cmd.c \ player.c \ script.c \ script_lua.c noinst_HEADERS = \ cconfig.h \ client-types.h \ client.h \ config.h \ def-keys.h \ external.h \ item-types.h \ item.h \ mapdata.h \ metaserver.h \ msgtypes.h \ p_cmd.h \ proto.h \ script.h \ script_lua.h \ version.h \ svnversion.h \ shared/newclient.h BUILT_SOURCES = svnversion.h CLEANFILES = svnversion.h EXTRA_DIST = \ def-keys \ item-types \ items.pl AM_CFLAGS = $(PTHREAD_CFLAGS) proto: cproto -DCPROTO -DCFCLIENT $(DEFAULT_INCLUDES) $(AM_CFLAGS) \ $(libcfclient_a_SOURCES) > proto.h chmod 644 proto.h item-types.h: item-types $(PERL) $(srcdir)/items.pl $(srcdir) def-keys.h: def-keys $(srcdir)/../utils/mdk.sh $(srcdir) $(srcdir)/msgtypes.h: $(srcdir)/shared/newclient.h $(PERL) $(srcdir)/msgtypes.pl $(srcdir) svnversion.h: FORCE OUTPUT_DATA='/* Auto-generated at build time. */'; \ if [ "X`echo -n`" = "X-n" ]; then \ echo_n() { echo $${1+"$$@"}"\c"; } \ else \ echo_n() { echo -n $${1+"$$@"}; } \ fi; \ if test -n "$(SVNVERSION)" -a -d "$(top_srcdir)/.svn"; \ then OUTPUT_DATA=`echo "$$OUTPUT_DATA"; echo_n '#define SVN_REV "'; $(SVNVERSION) -n "$(top_srcdir)"`'"'; \ fi; \ if test ! -e svnversion.h; then \ echo "$$OUTPUT_DATA" > svnversion.h; \ elif test "$$OUTPUT_DATA" != "`cat svnversion.h`"; then \ echo "$$OUTPUT_DATA" > svnversion.h; \ fi FORCE: crossfire-client-1.70.0/common/items.pl0000644000014500000120000000206611731277011014730 00000000000000#!/usr/local/bin/perl $MAXVAL=256; # Number of subscripts $SUBS=64; $lastval=-1; open(ITEMS,"<$ARGV[0]/item-types") || die("can not open item-types file"); while() { next if (/^#/ || /^\s*$/); if (/^(\d*):/) { $lastval=$1; } # skip empty lines else { chomp; die("Got item name before item number: $_\n") if ($lastval == -1); push @{ $names[$lastval]} , $_; } } close(ITEMS); open(ITEMS, ">item-types.h") || die("Can not open item-types.h\n"); print ITEMS "/* This file is automatically generated editing by hand is strongly*/\n"; print ITEMS "/* discouraged. Look at the item-types file and the items.pl conversion */\n"; print ITEMS "/* script. */\n"; print ITEMS "\n#define NUM_ITEM_TYPES $MAXVAL\n"; print ITEMS "#define MAX_NAMES_PER_TYPE $SUBS\n\n"; print ITEMS "static const char * const item_types[$MAXVAL][$SUBS] = {\n"; for ($i=0; $i<$MAXVAL; $i++) { print ITEMS "{ "; for ($j=0; $j<= $#{ $names[$i] }; $j++) { print ITEMS "\"$names[$i][$j]\", "; } print ITEMS "NULL }, \n"; } print ITEMS "}; \n"; close(ITEMS); crossfire-client-1.70.0/common/def-keys0000644000014500000120000000364211731277011014705 00000000000000# # Default keys # # # # will typically be the keycode for that key. While # keysyms are defined to work across different servers, keycodes are # server/machine specific. Keycodes are only needed because some keyboards # (sun's type 5 for one) have keys with no corresponding keysym. # When loading, all keysyms are converted to keycodes for matching. # # flags: # N - Normal mode # F - Fire mode # R - Run mode # A - All modes # E - Leave in line edit mode # #quotedbl 1 AE quotedbl 1 AE say period 1 N stay fire # nethack keys h 1 A west j 1 A south k 1 A north l 1 A east y 1 A northwest u 1 A northeast b 1 A southwest n 1 A southeast H 1 A west J 1 A south K 1 A north L 1 A east Y 1 A northwest U 1 A northeast B 1 A southwest N 1 A southeast # default cursorkeys Up 1 A north Down 1 A south Left 1 A west Right 1 A east # numpad Up 76 A north Down 120 A south Left 98 A west Right 100 A east KP_8 1 A north KP_2 1 A south KP_4 1 A west KP_6 1 A east KP_7 1 A northwest KP_9 1 A northeast KP_5 1 A stay KP_1 1 A southwest KP_3 1 A southeast # Sun type 4 keyboards will often have different key names. KP_Up 1 A north KP_Down 1 A south KP_Right 1 A east KP_Left 1 A west KP_Home 1 A northwest KP_Prior 1 A northeast #Unfortunately, there is no name for the middle key. #KP_5 1 A stay KP_End 1 A southwest KP_Next 1 A southeast F28 1 A north F34 1 A south F30 1 A west F32 1 A east F27 1 A northwest F29 1 A northeast F31 1 A stay F33 1 A southwest F35 1 A southeast # a 1 N apply A 1 N apply inventory a 1 RF apply A 1 RF apply d 1 N disarm e 1 N examine inventory E 1 N examine inventory e 1 RF examine E 1 RF examine s 1 A search S 1 A brace t 1 A ready_skill throw x 1 NF show comma 1 A take Tab 1 N rotatespells 1 Tab 1 FR rotatespells -1 question 1 A help KP_Add 1 A rotateshoottype KP_Subtract 1 A rotateshoottype - minus 1 N rotateshoottype -1 plus 1 NF rotateshoottype at 1 A pickup crossfire-client-1.70.0/common/client.h0000644000014500000120000006602211731277011014703 00000000000000/* * static char *rcsid_common_client_h = * "$Id: client.h 14099 2010-11-15 07:21:33Z mwedel $"; */ /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001,2007,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file client.h * Includes various dependencies header files needed by most everything. It * also declares structures and other variables that the GUI portion needs. */ #include #include #include #include #include #ifdef HAVE_DMALLOC_H # include #endif #define MULTKEYS #define VERSION_CS 1023 #define VERSION_SC 1029 extern char VERSION_INFO[256]; /** * Do not send more than this many outstanding commands to the server this is * only a default value. */ #define COMMAND_WINDOW 10 #define STRINGCOMMAND 0 /** * How many skill types server supports/client will get sent to it. If more * skills are added to server, this needs to get increased. */ #define MAX_SKILL CS_NUM_SKILLS #define MAXANIM 2000 /** * @defgroup SC_xxx SC_xxx send_command options. * Values assigned to send_command option. */ /*@{*/ #define SC_NORMAL 0 #define SC_FIRERUN 1 #define SC_ALWAYS 2 /*@}*/ typedef struct Animations { uint16 flags; uint8 num_animations; /**< Number of animations. Value of 2 * means only faces[0],[1] have * meaningful values. */ uint8 speed; uint8 speed_left; uint8 phase; uint16 *faces; } Animations; extern Animations animations[MAXANIM]; #define CAN_SMOOTH(__SQUARE,__LEVEL) ( ( \ (__SQUARE.heads[__LEVEL].face==0) \ && (__LEVEL >0) \ ) \ || (__SQUARE.smooth[layer]) \ ) /** * Basic support for socket communications, including the file descriptor, * input buffer, server, server, version, etc. ClientSocket could probably * hold more of the global values - it could probably hold most all * socket/communication related values instead of globals. */ typedef struct ClientSocket { int fd; SockList inbuf; int cs_version, sc_version; /**< Server versions of these */ int command_sent, command_received; /**< These are used for the newer * 'windowing' method of commands - * number of last command sent, * number of received confirmation */ int command_time; /**< Time (in ms) players commands * currently take to execute */ char* servername; } ClientSocket; extern ClientSocket csocket; extern char *server, *client_libdir,*image_file, *sound_server; typedef enum Input_State { Playing, Reply_One, Reply_Many, Configure_Keys, Command_Mode, Metaserver_Select } Input_State; typedef enum rangetype { range_bottom = -1, range_none = 0, range_bow = 1, range_magic = 2, range_wand = 3, range_rod = 4, range_scroll = 5, range_horn = 6, range_steal = 7, range_size = 8 } rangetype; /** * @defgroup CONFIG_xxx CONFIG_xxx want_config array indices. * Definitions to index into an array of most of the configuration options. * * Instead of having a whole mess of variables of different names, instead use * a common 16 bit signed array, and index into these - this makes processing * in the GUI aspect of the GTK client much easier. * * There are also 2 elements - want_options, and use_options. The former is * what the player wants to use, the latter is what is currently in use. * There are many options that can not be switched between during actual play, * but we want to record what the player has changed them to so that when we * save them out, we save what the player wants, and not what is currently * being used. * * Note that all the GUI interfaces may not use all these values, but making * them available here makes it easy for the GUI to present a nice interface. * * 0 is intentially skipped so the index into this doesn't get a default if a * table has a blank value * * CONFIG_NUMS is the number of configuration options; don't forget to add to * some of: * * common/init.c config_names, * init_client_vars, * x11/x11.c load_defaults * save_defaults * gtk/config.c load_defaults * save_defaults * * and probably other places, if you add a new option. */ /*@{*/ #define CONFIG_DOWNLOAD 1 #define CONFIG_ECHO 2 #define CONFIG_FASTTCP 3 #define CONFIG_CWINDOW 4 #define CONFIG_CACHE 5 #define CONFIG_FOGWAR 6 #define CONFIG_ICONSCALE 7 #define CONFIG_MAPSCALE 8 #define CONFIG_POPUPS 9 #define CONFIG_DISPLAYMODE 10 /**< @sa CFG_DM_xxx */ #define CONFIG_SHOWICON 11 #define CONFIG_TOOLTIPS 12 #define CONFIG_SOUND 13 #define CONFIG_SPLITINFO 14 #define CONFIG_SPLITWIN 15 #define CONFIG_SHOWGRID 16 #define CONFIG_LIGHTING 17 /**< @sa CFG_LT_xxx */ #define CONFIG_TRIMINFO 18 #define CONFIG_MAPWIDTH 19 #define CONFIG_MAPHEIGHT 20 #define CONFIG_FOODBEEP 21 #define CONFIG_DARKNESS 22 #define CONFIG_PORT 23 /**< Is this useful any more? */ #define CONFIG_GRAD_COLOR 24 #define CONFIG_RESISTS 25 #define CONFIG_SMOOTH 26 #define CONFIG_SPLASH 27 #define CONFIG_APPLY_CONTAINER 28 /**< Reapply container */ #define CONFIG_MAPSCROLL 29 /**< Use bitmap operations for map scrolling */ #define CONFIG_SIGNPOPUP 30 #define CONFIG_TIMESTAMP 31 #define CONFIG_NUMS 32 /**< This should always be the last value in the CONFIG_xxx list. */ /*@}*/ /** * @defgroup CFG_LT_xxx CONFIG_LIGHTING values. * Values that may be assigned to want_config[CONFIG_LIGHTING]. */ /*@{*/ #define CFG_LT_NONE 0 #define CFG_LT_TILE 1 #define CFG_LT_PIXEL 2 #define CFG_LT_PIXEL_BEST 3 /*@}*/ /** * @defgroup CFG_DM_xxx CONFIG_DISPLAYMODE values. * Values that may be assigned to want_config[CONFIG_DISPLAYMODE]. */ /*@{*/ #define CFG_DM_PIXMAP 0 #define CFG_DM_SDL 1 #define CFG_DM_OPENGL 2 /*@}*/ extern sint16 want_config[CONFIG_NUMS], use_config[CONFIG_NUMS]; extern const char *const config_names[CONFIG_NUMS]; /**< See common/init.c - * number mapping used * when loading/saving * the values. */ typedef struct Stat_struct { sint8 Str; /**< Strength */ sint8 Dex; /**< Dexterity */ sint8 Con; /**< Constitution */ sint8 Wis; /**< Wisdom */ sint8 Cha; /**< Charisma */ sint8 Int; /**< Intelligence */ sint8 Pow; /**< Power */ sint8 wc; /**< Weapon Class */ sint8 ac; /**< Armour Class */ sint8 level; /**< Experience level */ sint16 hp; /**< Hit Points */ sint16 maxhp; /**< Maximum hit points */ sint16 sp; /**< Spell points for casting spells */ sint16 maxsp; /**< Maximum spell points. */ sint16 grace; /**< Spell points for using prayers. */ sint16 maxgrace; /**< Maximum spell points. */ sint64 exp; /**< Experience. Killers gain 1/10. */ sint16 food; /**< Quantity food in stomach. * 0 = starved. */ sint16 dam; /**< How much damage this object does * for each hit */ sint32 speed; /**< Speed (is displayed as a float) */ sint32 weapon_sp; /**< Weapon speed (displayed in client * as a float) */ uint32 attuned; /**< Spell paths to which the player is * attuned */ uint32 repelled; /**< Spell paths to which the player is * repelled */ uint32 denied; /**< Spell paths denied to the player*/ uint16 flags; /**< Contains fire on/run on flags */ sint16 resists[30]; /**< Resistant values */ uint32 resist_change:1; /**< Resistant value change flag */ sint16 skill_level[MAX_SKILL]; /**< Level of known skills */ sint64 skill_exp[MAX_SKILL]; /**< Experience points for skills */ uint32 weight_limit; /**< Carrying weight limit */ } Stats; typedef struct Spell_struct { struct Spell_struct *next; char name[256]; /**< One length byte plus data */ char message[10000]; /**< This is huge, the packets can't * be much bigger than this anyway */ uint32 tag; /**< Unique ID number for a spell so * updspell etc can operate on it. */ uint16 level; /**< The casting level of the spell. */ uint16 time; /**< Casting time in server ticks. */ uint16 sp; /**< Mana per cast; may be zero. */ uint16 grace; /**< Grace per cast; may be zero. */ uint16 dam; /**< Damage done by spell though the * meaning is spell dependent and * actual damage may depend on how * the spell works. */ uint8 skill_number; /**< The index in the skill arrays, * plus CS_STAT_SKILLINFO. 0: no * skill used for cast. See also: * request_info skill_info */ char *skill; /**< Pointer to the skill name, * derived from the skill number. */ uint32 path; /**< The bitmask of paths this spell * belongs to. See request_info * spell_paths and stats about * attunement, repulsion, etc. */ sint32 face; /**< A face ID that may be used to * show a graphic representation * of the spell. */ uint8 usage; /**< Spellmon 2 data. Values are: * 0: No argument required. * 1: Requires other spell name. * 2: Freeform string is optional. * 3: Freeform string is required. */ char requirements[256]; /**< Spellmon 2 data. One length byte * plus data. If the spell requires * items to be cast, this is a list * of req'd items. Comma-separated, * number of items, singular names * (like ingredients for alchemy). */ } Spell; typedef struct Player_Struct { item *ob; /**< Player object */ item *below; /**< Items below the player * (pl.below->inv) */ item *container; /**< open container */ uint16 count_left; /**< count for commands */ Input_State input_state; /**< What the input state is */ char last_command[MAX_BUF]; /**< Last command entered */ char input_text[MAX_BUF]; /**< keys typed (for long commands) */ item *ranges[range_size]; /**< Object that is used for that */ /**< range type */ uint8 ready_spell; /**< Index to spell that is readied */ char spells[255][40]; /**< List of all the spells the */ /**< player knows */ Stats stats; /**< Player stats */ Spell *spelldata; /**< List of spells known */ char title[MAX_BUF]; /**< Title of character */ char range[MAX_BUF]; /**< Range attack chosen */ uint32 spells_updated; /**< Whether or not spells updated */ uint32 fire_on:1; /**< True if fire key is pressed */ uint32 run_on:1; /**< True if run key is on */ uint32 meta_on:1; /**< True if fire key is pressed */ uint32 alt_on:1; /**< True if fire key is pressed */ uint32 no_echo:1; /**< If TRUE, don't echo keystrokes */ uint32 count; /**< Repeat count on command */ uint16 mmapx, mmapy; /**< size of magic map */ uint16 pmapx, pmapy; /**< Where the player is on the magic * map */ uint8 *magicmap; /**< Magic map data */ uint8 showmagic; /**< If 0, show the normal map, * otherwise show the magic map. */ uint16 mapxres,mapyres; /**< Resolution to draw on the magic * map. Only used in client-specific * code, so it should move there. */ #ifdef MULTKEYS char name[ 40 ]; /**< Player's name, for player-specific * key files */ #endif } Client_Player; /** * @defgroup MAX_xxx_xxx MAX_xxx_xxx Face and image constants. * Faceset information pretty much grabbed right from server/socket/image.c. */ /*@{*/ #define MAX_FACE_SETS 20 #define MAX_IMAGE_SIZE 320 /**< Maximum size of image in each * direction. Needed for the X11 * client, which wants to initialize * some data once. Increasing this * would likely only need a bigger * footprint. */ /*@}*/ typedef struct FaceSets_struct { uint8 setnum; /**< */ uint8 fallback; /**< */ char *prefix; /**< */ char *fullname; /**< */ char *size; /**< */ char *extension; /**< */ char *comment; /**< */ } FaceSets; /** * One struct that holds most of the image related data to reduce danger of * namespace collision. */ typedef struct Face_Information_struct { uint8 faceset; char *want_faceset; sint16 num_images; uint32 bmaps_checksum, old_bmaps_checksum; /** * Just for debugging/logging purposes. This is cleared on each new * server connection. This may not be 100% precise (as we increment * cache_hits when we find a suitable image to load - if the data is bad, * that would count as both a hit and miss. */ sint16 cache_hits, cache_misses; uint8 have_faceset_info; /**< Simple value to know if there is * data in facesets[]. */ FaceSets facesets[MAX_FACE_SETS]; } Face_Information; extern Face_Information face_info; extern Client_Player cpl; /**< Player object. */ extern char *skill_names[MAX_SKILL]; extern int last_used_skills[MAX_SKILL+1]; /**< maps position to skill id with * trailing zero as stop mark. */ typedef enum LogLevel { LOG_DEBUG = 0, LOG_INFO = 1, LOG_WARNING = 2, LOG_ERROR = 3, LOG_CRITICAL = 4 } LogLevel; typedef struct LogEntry { char* message; char* origin; LogLevel level; struct LogEntry* next; } LogEntry; extern LogEntry* LogFirst; extern LogEntry* LogLast; extern int logcount; typedef void (*LogListener)(LogEntry*); #define MAX_LOGS 200 #define LOG_APPEND(_Entry) if (LogLast) {\ LogLast->next=_Entry;\ } else {\ LogFirst=_Entry;\ };\ LogLast=_Entry;_Entry->next=NULL;\ if (++logcount > MAX_LOGS)\ {\ LogEntry* old = LogFirst;\ LogFirst = LogFirst -> next;\ if (old->message) free (old->message);\ if (old->origin) free (old->origin);\ } #define LOG_NEW_ENTRY (LogEntry*)calloc(1,sizeof(LogEntry)) #define LOG_SETMESSAGE(_Entry,_msg) free(_Entry->message);_Entry->message=strdup(_msg) #define LOG_SETORIGIN(_Entry,_orig) free(_Entry->origin);_Entry->origin=strdup(_orig) typedef struct PipeLog { char* name; LogLevel level; int log; /**< To log or not to log. */ }PipeLog; #define CHILD_STDIN 1 #define CHILD_STDOUT 2 #define CHILD_STDERR 4 #define CHILD_SILENTFAIL 8 #define CHILD_TUBE (CHILD_STDIN|CHILD_STDOUT|CHILD_STDERR) typedef struct ChildProcess{ char* name; int flag; int pid; int tube[3]; PipeLog logger[3]; struct ChildProcess* next; }ChildProcess; #define CHILD_PIPEIN(__child) (__child->tube[0]) #define CHILD_PIPEOUT(__child) (__child->tube[1]) #define CHILD_PIPEERR(__child) (__child->tube[2]) /** * Translation of the STAT_RES names into printable names, in matching order. */ #define NUM_RESISTS 18 extern const char *const resists_name[NUM_RESISTS]; extern char *meta_server; extern int meta_port; extern int metaserver_on, metaserver2_on, serverloginmethod, wantloginmethod; extern uint32 tick; /** * Holds the names that correspond to skill and resistance numbers. */ typedef struct { const char *name; int value; } NameMapping; extern NameMapping skill_mapping[MAX_SKILL], resist_mapping[NUM_RESISTS]; extern uint64 *exp_table; extern uint16 exp_table_max; /** * Map size the client will request the map to be. The bigger it is, more * memory it will use. */ #define MAP_MAX_SIZE 31 /** * This is the smallest the map structure used for the client can be. It * needs to be bigger than the MAP_MAX_SIZE simply because we have to deal * with off map big images, Also, the center point is moved around within this * map, so that if the player moves one space, we don't have to move around * all the data. */ #define MIN_ALLOCATED_MAP_SIZE MAP_MAX_SIZE * 2 /** * How many spaces an object might extend off the map. E.g. For bigimage * stuff, the head of the image may be off the the map edge. This is the most * it may be off. This is needed To cover case of need_recenter_map routines. */ #define MAX_MAP_OFFSET 8 /* Start of map handling code. * * For the most part, this actually is not window system specific, but * certainly how the client wants to store this may vary. */ #define MAXPIXMAPNUM 10000 /** * Used mostly in the cache.c file, however, it can be returned to the graphic * side of things so that they can update the image_data field. Since the * common side has no idea what data the graphic side will point to, we use a * void pointer for that - it is completely up to the graphic side to * allocate/deallocate and cast that pointer as needed. */ typedef struct Cache_Entry { char *filename; uint32 checksum; uint32 ispublic:1; void *image_data; struct Cache_Entry *next; } Cache_Entry; /** * @defgroup RI_IMAGE_xxx RI_IMAGE_xxx RequestInfo values. * Values used for various aspects of the library to hold state on what * requestinfo's we have gotten replyinfo for and what data was received. In * this way, common/client.c can loop until it has gotten replies for all the * requestinfos it has sent. This can be useful - we don't want the addme * command sent for example if we are going to use a different image set. The * GUI stuff should really never change these variables, but I suppose I could * look at them for debugging/ status information. */ /*@{*/ #define RI_IMAGE_INFO 0x1 #define RI_IMAGE_SUMS 0x2 /*@}*/ extern int replyinfo_status, requestinfo_sent, replyinfo_last_face; typedef struct PlayerPosition { int x; int y; } PlayerPosition; extern PlayerPosition pl_pos; typedef struct Msg_Type_Names { int type; /**< Type of message */ int subtype; /**< Subtype of message */ const char *style_name; /**< Name of this message in the * configfile. */ } Msg_Type_Names; extern TextManager* firstTextManager; /* declared/handled in commands.c . These variables are documented * in that file - the data they present is created by the command * code, but consumed by the GUI code. */ extern char *motd, *news, *rules; extern char *motd, *news, *rules; /* Declared/handled in commands.c */ extern int num_races, used_races, num_classes, used_classes; extern int stat_points, stat_min, stat_maximum; /* * This structure is used to hold race/class adjustment info, as * received by the requestinfo command. We get the same info * for both races and class, so it simplifies code to share a structure. */ /* This is how many stats (str, dex, con, etc) that are present * in the create character window. */ #define NUM_NEW_CHAR_STATS 7 /** * The usage of the stat_mapping is to simplify the code and make it easier * to expand. Within the character creation, the different stats really * do not have any meaning - the handling is pretty basic - value user * has selected + race adjust + class adjustment = total stat. */ struct Stat_Mapping { const char *widget_suffix; /* within the glade file, suffix used on widget */ uint8 cs_value; /* within the protocol, the CS_STAT value */ uint8 rc_offset; /* Offset into the stat_adj array */ }; extern struct Stat_Mapping stat_mapping[NUM_NEW_CHAR_STATS]; /** * For classes & races, the server can present some number of * choices, eg, the character gets to choose 1 skill from a * choice of many. Eg RC_Choice entry represents one of these * choices. However, each race/class may have multiple choices. * For example, if the class had the character make 2 choices - * one for a skill, and one for an item, 2 RC_Choice structures * would be used. */ struct RC_Choice { char *choice_name; /* name to respond, eg, race_choice_1 */ char *choice_desc; /* Longer description of choice */ int num_values; /* How many values we have */ char **value_arch; /* Array arch names */ char **value_desc; /* Array of description */ }; typedef struct Race_Class_Info { char *arch_name; /* Name of the archetype this correponds to */ char *public_name; /* Public (human readadable) name */ char *description; /* Description of the race/class */ sint8 stat_adj[NUM_NEW_CHAR_STATS]; /* Adjustment values */ int num_rc_choice; /* Size of following array */ struct RC_Choice *rc_choice; /* array of choices */ } Race_Class_Info; typedef struct Starting_Map_Info { char *arch_name; /* Name of archetype for this map */ char *public_name; /* Name of the human readable name */ char *description; /* Description of this map */ } Starting_Map_Info; extern Race_Class_Info *races, *classes; extern Starting_Map_Info *starting_map_info; extern int starting_map_number; /* End of commands.c data, start of other declarations */ #ifndef MIN #define MIN(X__,Y__) ( (X__)<(Y__)?(X__):(Y__) ) #endif /** * @defgroup INFO_xxx INFO_xxx login information constants. * Used for passing in to update_login_info() used instead of passing in the * strings. */ /*@{*/ #define INFO_NEWS 1 #define INFO_MOTD 2 #define INFO_RULES 3 /*@}*/ /** * @defgroup CONVERT_FILESPEC CONVERT_FILESPEC_TO_OS_FORMAT declarations. * Support for converting forward-slash delimited filespecs to WIN32 format * when clients are built for that platform. Client code that uses a path * reference builds paths in a buffer using forward slashes. After * constructing the path, CONVERT_FILESPEC_TO_OS_FORMAT() is used on the * buffer. On non-WIN32 platforms, the macro does nothing and the path is * used as-is. On WIN32 platforms forward slashes found in the buffer are * converted to backslash characters. */ /*@{*/ #ifndef WIN32 #define CONVERT_FILESPEC_TO_OS_FORMAT(path) #else extern void replace_chars_with_string( char* buffer, const uint16 buffer_size, const char find, const char* replace); #define CONVERT_FILESPEC_TO_OS_FORMAT(path) \ replace_chars_with_string((path), sizeof(path), '/', "\\") #endif /*@}*/ #ifndef CPROTO /* We need to declare most of the structs before we can include this */ #include #endif crossfire-client-1.70.0/common/item.c0000644000014500000120000005141411731277011014355 00000000000000const char * const rcsid_common_item_c = "$Id: item.c 12356 2010-01-20 08:07:04Z mwedel $"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2001,2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/item.c * Provides functions that process items in various ways. */ #include /* needed for isdigit */ #include #include #include #include #include static item *free_items; /* the list of free (unused) items */ static item *player, *map; /* these lists contains rest of items */ /* player = pl->ob, map = pl->below */ #define NROF_ITEMS 50 /* how many items are reserved initially */ /* for the item spool */ #include /* This uses the item_types table above. We try to figure out if * name has a match above. Matching is done pretty loosely - however * we try to match the start of the name because that is more reliable. * We return the 'type' (matching array element above), 255 if no match * (so unknown objects put at the end) */ uint8 get_type_from_name(const char *name) { int type, pos; for (type = 0; type < NUM_ITEM_TYPES; type++) { pos = 0; while (item_types[type][pos] != NULL) { /* Only search at start of line */ if (item_types[type][pos][0] == '^') { if (!strncasecmp(name, item_types[type][pos]+1, strlen(item_types[type][pos]+1))) { return type; } } /* String anywhere in name */ else if (strstr(name, item_types[type][pos]) != NULL) { #if 0 fprintf(stderr, "Returning type %d for %s\n", type, name); #endif return type; } pos++; } } LOG(LOG_WARNING, "common::get_type_from_name", "Could not find match for %s", name); return 255; } /* Does what is says - inserts newitem before the object. * the parameters can not be null */ static void insert_item_before_item(item *newitem, item *before) { if (before->prev) { before->prev->next = newitem; } else { newitem->env->inv = newitem; } newitem->prev = before->prev; before->prev = newitem; newitem->next = before; if (newitem->env) { newitem->env->inv_updated = 1; } } /* Item it has gotten an item type, so we need to resort its location */ void update_item_sort(item *it) { item *itmp, *last = NULL; /* If not in some environment or the map, return */ /* Sorting on the map doesn't work. In theory, it would be nice, * but the server really must know the map order for things to * work. */ if (!it->env || it->env == it || it->env == map) { return; } /* If we are already sorted properly, don't do anything further. * this is prevents the order of the inventory from changing around * if you just equip something. */ if (it->prev && it->prev->type == it->type && it->prev->locked == it->locked && !strcasecmp(it->prev->s_name, it->s_name)) { return; } if (it->next && it->next->type == it->type && it->next->locked == it->locked && !strcasecmp(it->next->s_name, it->s_name)) { return; } /* Remove this item from the list */ if (it->prev) it->prev->next = it->next; if (it->next) it->next->prev = it->prev; if (it->env->inv == it) it->env->inv = it->next; for (itmp = it->env->inv; itmp != NULL; itmp = itmp->next) { last = itmp; /* If the next item is higher in the order, insert here */ if (itmp->type > it->type) { insert_item_before_item(it, itmp); return; } else if (itmp->type == it->type) { #if 0 /* This could be a nice idea, but doesn't work very well if you * have a few unidentified wands, as the position of a wand * which you know the effect will move around as you equip others. */ /* Hmm. We can actually use the tag value of the items to reduce * this a bit - do this by grouping, but if name is equal, then * sort by tag. Needs further investigation. */ /* applied items go first */ if (itmp->applied) continue; /* put locked items before others */ if (itmp->locked && !it->locked) continue; #endif /* Now alphabetise */ if (strcasecmp(itmp->s_name, it->s_name) < 0) continue; /* IF we got here, it means it passed all our sorting tests */ insert_item_before_item(it, itmp); return; } } /* No match - put it at the end */ /* If there was a previous item, update pointer. IF no previous * item, we need to update the environment to point to us */ if (last) { last->next = it; } else { it->env->inv = it; } it->prev = last; it->next = NULL; } /* Stolen from common/item.c */ /* * get_number(integer) returns the text-representation of the given number * in a static buffer. The buffer might be overwritten at the next * call to get_number(). * It is currently only used by the query_name() function. */ const char *get_number(uint32 i) { static const char numbers[21][20] = { "no", "a", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty", }; static char buf[MAX_BUF]; if (i < 0) { snprintf(buf, sizeof(buf), "negative"); return buf; } if (i <= 20) { return numbers[i]; } else { snprintf(buf, sizeof(buf), "%u", i); return buf; } } /* * new_item() returns pointer to new item which * is allocated and initialized correctly */ static item *new_item(void) { item *op = malloc(sizeof(item)); if (!op) { exit(0); } op->next = op->prev = NULL; copy_name(op->d_name, ""); copy_name(op->s_name, ""); copy_name(op->p_name, ""); op->inv = NULL; op->env = NULL; op->tag = 0; op->face = 0; op->weight = 0; op->magical = op->cursed = op->damned = 0; op->unpaid = op->locked = op->applied = 0; op->flagsval = 0; op->animation_id = 0; op->last_anim = 0; op->anim_state = 0; op->nrof = 0; op->open = 0; op->type = NO_ITEM_TYPE; op->inv_updated = 0; return op; } /* * alloc_items() returns pointer to list of allocated objects */ static item *alloc_items(int nrof) { item *op, *list; int i; list = op = new_item(); for (i = 1; i < nrof; i++) { op->next = new_item(); op->next->prev = op; op = op->next; } return list; } /* * free_items() frees all allocated items from list */ void free_all_items(item *op) { item *tmp; while (op) { if (op->inv) { free_all_items(op->inv); } tmp = op->next; free(op); op = tmp; } } /* * Recursive function, used by locate_item() */ static item *locate_item_from_item(item *op, sint32 tag) { item *tmp; for (; op; op = op->next) { if (op->tag == tag) { return op; } else if (op->inv && (tmp = locate_item_from_item(op->inv, tag))) { return tmp; } } return NULL; } /* * locate_item() returns pointer to the item which tag is given * as parameter or if item is not found returns NULL */ item *locate_item(sint32 tag) { item *op; if (tag == 0) { return map; } if ((op = locate_item_from_item(map->inv, tag)) != NULL) { return op; } if ((op = locate_item_from_item(player, tag)) != NULL) { return op; } if (cpl.container && cpl.container->tag == tag) { return cpl.container; } if (cpl.container && (op = locate_item_from_item(cpl.container->inv, tag)) != NULL) return op; return NULL; } /* * remove_item() inserts op the the list of free items * Note that it don't clear all fields in item */ void remove_item(item *op) { /* IF no op, or it is the player */ if (!op || op == player || op == map) { return; } item_event_item_deleting(op); op->env->inv_updated = 1; /* Do we really want to do this? */ if (op->inv && op != cpl.container) { remove_item_inventory(op); } if (op->prev) { op->prev->next = op->next; } else { op->env->inv = op->next; } if (op->next) { op->next->prev = op->prev; } if (cpl.container == op) { return; /* Don't free this! */ } /* add object to a list of free objects */ op->next = free_items; if (op->next != NULL) { op->next->prev = op; } free_items = op; /* Clear all these values, since this item will get re-used */ op->prev = NULL; op->env = NULL; op->tag = 0; copy_name(op->d_name, ""); copy_name(op->s_name, ""); copy_name(op->p_name, ""); op->inv = NULL; op->env = NULL; op->tag = 0; op->face = 0; op->weight = 0; op->magical = op->cursed = op->damned = 0; op->unpaid = op->locked = op->applied = 0; op->flagsval = 0; op->animation_id = 0; op->last_anim = 0; op->anim_state = 0; op->nrof = 0; op->open = 0; op->type = NO_ITEM_TYPE; } /* * remove_item_inventory() recursive frees items inventory */ void remove_item_inventory(item *op) { if (!op) { return; } item_event_container_clearing(op); op->inv_updated = 1; while (op->inv) { remove_item(op->inv); } } /* * add_item() adds item op to end of the inventory of item env */ static void add_item(item *env, item *op) { item *tmp; for (tmp = env->inv; tmp && tmp->next; tmp = tmp->next) ; op->next = NULL; op->prev = tmp; op->env = env; if (!tmp) { env->inv = op; } else { if (tmp->next) { tmp->next->prev = op; } tmp->next = op; } } /* * create_new_item() returns pointer to a new item, inserts it to env * and sets its tag field and clears locked flag (all other fields * are unitialized and may contain random values) */ item *create_new_item(item *env, sint32 tag) { item *op; if (!free_items) { free_items = alloc_items(NROF_ITEMS); } op = free_items; free_items = free_items->next; if (free_items) { free_items->prev = NULL; } op->tag = tag; op->locked = 0; if (env) { add_item(env, op); } return op; } int num_free_items(void) { item *tmp; int count = 0; for (tmp = free_items; tmp; tmp = tmp->next) { count++; } return count; } /* * Hardcoded now, server could send these at initiation phase. */ static const char *const apply_string[] = { "", " (readied)", " (wielded)", " (worn)", " (active)", " (applied)", }; static void set_flag_string(item *op) { op->flags[0] = 0; if (op->locked) { strcat(op->flags, " *"); } if (op->apply_type) { if (op->apply_type < sizeof(apply_string)/sizeof(apply_string[0])) { strcat(op->flags, apply_string[op->apply_type]); } else { strcat(op->flags, " (undefined)"); } } if (op->open) { strcat(op->flags, " (open)"); } if (op->damned) { strcat(op->flags, " (damned)"); } if (op->cursed) { strcat(op->flags, " (cursed)"); } if (op->magical) { strcat(op->flags, " (magic)"); } if (op->unpaid) { strcat(op->flags, " (unpaid)"); } } static void get_flags(item *op, uint16 flags) { op->was_open = op->open; op->open = flags&F_OPEN ? 1 : 0; op->damned = flags&F_DAMNED ? 1 : 0; op->cursed = flags&F_CURSED ? 1 : 0; op->magical = flags&F_MAGIC ? 1 : 0; op->unpaid = flags&F_UNPAID ? 1 : 0; op->applied = flags&F_APPLIED ? 1 : 0; op->locked = flags&F_LOCKED ? 1 : 0; op->flagsval = flags; op->apply_type = flags&F_APPLIED; set_flag_string(op); } void set_item_values(item *op, char *name, sint32 weight, uint16 face, uint16 flags, uint16 anim, uint16 animspeed, uint32 nrof, uint16 type) { int resort = 1; if (!op) { printf("Error in set_item_values(): item pointer is NULL.\n"); return; } /* Program always expect at least 1 object internall */ if (nrof == 0) { nrof = 1; } if (*name != '\0') { copy_name(op->s_name, name); /* Unfortunately, we don't get a length parameter, so we just have * to assume that if it is a new server, it is giving us two piece * names. */ if (csocket.sc_version >= 1024) { copy_name(op->p_name, name+strlen(name)+1); } else { /* If not new version, just use same for both */ copy_name(op->p_name, name); } /* Necessary so that d_name is updated below */ op->nrof = nrof+1; } else { resort = 0; /* no name - don't resort */ } if (op->nrof != nrof) { if (nrof != 1 ) { sprintf(op->d_name, "%s %s", get_number(nrof), op->p_name); } else { strcpy(op->d_name, op->s_name); } op->nrof = nrof; } if (op->env) { op->env->inv_updated = 1; } op->weight = (float)weight/1000; op->face = face; op->animation_id = anim; op->anim_speed = animspeed; op->type = type; get_flags(op, flags); /* We don't sort the map, so lets not bother figuring out the * type. Likewiwse, only figure out item type if this * doesn't have a type (item2 provides us with a type */ if (op->env != map && op->type == NO_ITEM_TYPE) { op->type = get_type_from_name(op->s_name); } if (resort) { update_item_sort(op); } item_event_item_changed(op); } void toggle_locked(item *op) { SockList sl; uint8 buf[MAX_BUF]; if (op->env->tag == 0) { return; /* if item is on the ground, don't lock it */ } snprintf((char*)buf, sizeof(buf), "lock %c %d", !op->locked, op->tag); script_monitor_str((char*)buf); SockList_Init(&sl, buf); SockList_AddString(&sl, "lock "); SockList_AddChar(&sl, !op->locked); SockList_AddInt(&sl, op->tag); SockList_Send(&sl, csocket.fd); } void send_mark_obj(item *op) { SockList sl; uint8 buf[MAX_BUF]; if (op->env->tag == 0) { return; /* if item is on the ground, don't mark it */ } snprintf((char*)buf, sizeof(buf), "mark %d", op->tag); script_monitor_str((char*)buf); SockList_Init(&sl, buf); SockList_AddString(&sl, "mark "); SockList_AddInt(&sl, op->tag); SockList_Send(&sl, csocket.fd); } item *player_item (void) { player = new_item(); return player; } item *map_item (void) { map = new_item(); map->weight = -1; return map; } /* Upates an item with new attributes. */ void update_item(int tag, int loc, char *name, int weight, int face, int flags, int anim, int animspeed, uint32 nrof, int type) { item *ip = locate_item(tag), *env = locate_item(loc); /* Need to do some special handling if this is the player that is * being updated. */ if (player->tag == tag) { copy_name(player->d_name, name); /* I don't think this makes sense, as you can have * two players merged together, so nrof should always be one */ player->nrof = nrof; player->weight = (float)weight/1000; player->face = face; get_flags(player, flags); if (player->inv) { player->inv->inv_updated = 1; } player->animation_id = anim; player->anim_speed = animspeed; player->nrof = nrof; } else { if (ip && ip->env != env) { remove_item(ip); ip = NULL; } set_item_values(ip ? ip : create_new_item(env, tag), name, weight, face, flags, anim, animspeed, nrof, type); } } /* * Prints players inventory, contain extra information for debugging purposes * This isn't pretty, but is only used for debugging, so it doesn't need to be. */ void print_inventory(item *op) { char buf[MAX_BUF]; char buf2[MAX_BUF]; item *tmp; static int l = 0; #if 0 int info_width = get_info_width(); #else /* A callback for a debugging command seems pretty pointless. If anything, * it may be more useful to dump this out to stderr */ int info_width = 40; #endif if (l == 0) { snprintf(buf, sizeof(buf), "%s's inventory (%d):", op->d_name, op->tag); snprintf(buf2, sizeof(buf2), "%-*s%6.1f kg", info_width-10, buf, op->weight); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_DEBUG, buf2); } l += 2; for (tmp = op->inv; tmp; tmp = tmp->next) { snprintf(buf, sizeof(buf), "%*s- %d %s%s (%d)", l-2, "", tmp->nrof, tmp->d_name, tmp->flags, tmp->tag); snprintf(buf2, sizeof(buf2), "%-*s%6.1f kg", info_width-8-l, buf, tmp->nrof*tmp->weight); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_DEBUG, buf2); if (tmp->inv) { print_inventory(tmp); } } l -= 2; } /* Check the objects, animate the ones as necessary */ void animate_objects(void) { item *ip; int got_one = 0; /* Animate players inventory */ for (ip = player->inv; ip; ip = ip->next) { if (ip->animation_id > 0 && ip->anim_speed) { ip->last_anim++; if (ip->last_anim >= ip->anim_speed) { ip->anim_state++; if (ip->anim_state >= animations[ip->animation_id].num_animations) { ip->anim_state = 0; } ip->face = animations[ip->animation_id].faces[ip->anim_state]; ip->last_anim = 0; got_one = 1; } } } #ifndef GTK_CLIENT if (got_one) { player->inv_updated = 1; } #endif if (cpl.container) { /* Now do a container if one is active */ for (ip = cpl.container->inv; ip; ip = ip->next) { if (ip->animation_id > 0 && ip->anim_speed) { ip->last_anim++; if (ip->last_anim >= ip->anim_speed) { ip->anim_state++; if (ip->anim_state >= animations[ip->animation_id].num_animations) { ip->anim_state = 0; } ip->face = animations[ip->animation_id].faces[ip->anim_state]; ip->last_anim = 0; got_one = 1; } } } if (got_one) { cpl.container->inv_updated = 1; } } else { /* Now do the map (look window) */ for (ip = cpl.below->inv; ip; ip = ip->next) { if (ip->animation_id > 0 && ip->anim_speed) { ip->last_anim++; if (ip->last_anim >= ip->anim_speed) { ip->anim_state++; if (ip->anim_state >= animations[ip->animation_id].num_animations) { ip->anim_state = 0; } ip->face = animations[ip->animation_id].faces[ip->anim_state]; ip->last_anim = 0; got_one = 1; } } } if (got_one) { cpl.below->inv_updated = 1; } } } int can_write_spell_on(item* it) { return (it->type == 661); } void inscribe_magical_scroll(item *scroll, Spell *spell) { SockList sl; uint8 buf[MAX_BUF]; snprintf((char*)buf, sizeof(buf), "inscribe 0 %d %d", scroll->tag, spell->tag); script_monitor_str((char*)buf); SockList_Init(&sl, buf); SockList_AddString(&sl, "inscribe "); SockList_AddChar(&sl, 0); SockList_AddInt(&sl, scroll->tag); SockList_AddInt(&sl, spell->tag); SockList_Send(&sl, csocket.fd); } crossfire-client-1.70.0/common/script_lua.c0000644000014500000120000002556111731277011015570 00000000000000const char * const rcsid_common_script_lua_c = "$Id$"; /* Crossfire client, a client program for the crossfire program. Copyright (C) 2006-2007 Mark Wedel & Crossfire Development Team This source file also Copyright (C) 2006 Nicolas Weeger 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/script_lua.c * */ #ifndef WIN32 #include #include #include #include #include #include #endif #include #ifdef HAVE_LUA /* It seems easier to just comment everything out if we don't have * lua vs trying to play around with it in the makefiles. */ #include #include #include #include #if LUA_VERSION_NUM >= 501 #include #endif struct script_state { lua_State* state; const char* filename; }; #if 0 static void *l_alloc (void * /*ud*/, void *ptr, size_t /*osize*/, size_t nsize) { if (nsize == 0) { free(ptr); return NULL; } else return realloc(ptr, nsize); } #endif static const char* l_readerfile(lua_State *L, void *data, size_t *size) { static char buf[4096]; FILE* file = (FILE*)data; *size = fread(buf, 1, 4096, file); if ( !*size && ferror(file) ) return NULL; if ( !*size && feof(file)) return NULL; return buf; } static struct script_state* scripts = NULL; static int script_count = 0; static void update_player(lua_State* lua) { lua_pushstring(lua, "player"); lua_gettable(lua, LUA_GLOBALSINDEX); if (!lua_istable(lua, -1)) { lua_pop(lua, 1); return; } lua_pushstring(lua, "hp"); lua_pushnumber(lua, cpl.stats.hp); lua_settable(lua, -3); lua_pushstring(lua, "gr"); lua_pushnumber(lua, cpl.stats.grace); lua_settable(lua, -3); lua_pushstring(lua, "sp"); lua_pushnumber(lua, cpl.stats.sp); lua_settable(lua, -3); lua_pushstring(lua, "food"); lua_pushnumber(lua, cpl.stats.food); lua_settable(lua, -3); lua_pop(lua, 1); } static void do_item(lua_State* lua, item* it) { lua_newtable(lua); lua_pushstring(lua, "s_name"); lua_pushstring(lua, it->s_name); lua_settable(lua, -3); lua_pushstring(lua, "magical"); lua_pushnumber(lua, it->magical); lua_settable(lua, -3); lua_pushstring(lua, "cursed"); lua_pushnumber(lua, it->cursed); lua_settable(lua, -3); lua_pushstring(lua, "damned"); lua_pushnumber(lua, it->damned); lua_settable(lua, -3); lua_pushstring(lua, "unpaid"); lua_pushnumber(lua, it->unpaid); lua_settable(lua, -3); lua_pushstring(lua, "locked"); lua_pushnumber(lua, it->locked); lua_settable(lua, -3); lua_pushstring(lua, "applied"); lua_pushnumber(lua, it->applied); lua_settable(lua, -3); lua_pushstring(lua, "open"); lua_pushnumber(lua, it->open); lua_settable(lua, -3); } static void update_inv(lua_State* lua) { item* it; int index = 1; lua_pushstring(lua, "inv"); lua_newtable(lua); lua_settable(lua, LUA_GLOBALSINDEX); lua_pushstring(lua, "inv"); lua_gettable(lua, LUA_GLOBALSINDEX); for ( it = cpl.ob->inv; it; it = it->next ) { lua_pushnumber(lua, index++); do_item(lua, it); lua_settable(lua, -3); } lua_pop(lua, 1); } static void update_ground(lua_State* lua) { item* it; int index = 1; lua_pushstring(lua, "ground"); lua_newtable(lua); lua_settable(lua, LUA_GLOBALSINDEX); lua_pushstring(lua, "ground"); lua_gettable(lua, LUA_GLOBALSINDEX); for ( it = cpl.below->inv; it; it = it->next ) { if ( it->tag == 0 || strlen(it->s_name) == 0 ) continue; lua_pushnumber(lua, index++); do_item(lua, it); lua_settable(lua, -3); } lua_pop(lua, 1); } static int lua_draw(lua_State *L) { int n = lua_gettop(L); /* number of arguments */ const char* what; if ( n != 1 ) { lua_pushstring(L, "draw what?"); lua_error(L); } if ( !lua_isstring(L, 1) ) { lua_pushstring(L, "expected a string"); lua_error(L); } what = lua_tostring(L,1); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, what); return 0; } static int lua_issue(lua_State *L) { int n = lua_gettop(L); /* number of arguments */ const char* what; int repeat, must_send; if ( n != 3 ) { lua_pushstring(L, "syntax is cfissue repeat must_send command"); lua_error(L); } if ( !lua_isnumber(L, 1) ) { lua_pushstring(L, "expected a number"); lua_error(L); } if ( !lua_isnumber(L, 2) ) { lua_pushstring(L, "expected a number"); lua_error(L); } if ( !lua_isstring(L, 3) ) { lua_pushstring(L, "expected a number"); lua_error(L); } repeat = lua_tonumber(L, 1); must_send = lua_tonumber(L, 2); what = lua_tostring(L,3); send_command(what,repeat,must_send); return 0; } void script_lua_load(const char* name) { lua_State* lua; FILE* file; int load; int index = script_count; file = fopen(name,"r"); if ( !file ) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Invalid file"); return; } lua = lua_open(); if ( !lua ) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Memory allocation error."); fclose(file); return; } luaopen_base(lua); lua_pop(lua,1); luaopen_table(lua); lua_pop(lua,1); if (( load = lua_load(lua, l_readerfile, (void*)file, name))) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Load error!"); if ( load == LUA_ERRSYNTAX ) draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Syntax error!"); fclose(file); lua_close(lua); return; } fclose(file); lua_register(lua, "cfdraw", lua_draw); lua_register(lua, "cfissue", lua_issue); lua_pushstring(lua, "player"); lua_newtable(lua); lua_settable(lua, LUA_GLOBALSINDEX); update_player(lua); update_inv(lua); update_ground(lua); /* Load functions, init script */ if (lua_pcall(lua, 0, 0, 0)) { draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Init error!"); fclose(file); lua_close(lua); return; } scripts = realloc(scripts,sizeof(scripts[0])*(script_count+1)); script_count++; scripts[index].filename = strdup_local(name); scripts[index].state = lua; /* printf("lua_gettop = %d, lua_type => %s\n", lua_gettop(lua), lua_typename( lua, lua_type(lua, lua_gettop(lua)))); printf("lua_gettop = %d, lua_type => %s\n", lua_gettop(lua), lua_typename( lua, lua_type(lua, lua_gettop(lua)))); lua_pushstring(lua, "init"); printf("lua_gettop = %d, lua_type => %s\n", lua_gettop(lua), lua_typename( lua, lua_type(lua, lua_gettop(lua)))); lua_gettable(lua, LUA_GLOBALSINDEX); printf("lua_gettop = %d, lua_type => %s\n", lua_gettop(lua), lua_typename( lua, lua_type(lua, lua_gettop(lua)))); if (lua_isfunction(lua, lua_gettop(lua))) lua_call(lua, 0, 0); lua_pop(lua, 1); */ } void script_lua_list(const char* param) { if ( script_count == 0 ) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "No LUA scripts are currently running"); } else { int i; char buf[1024]; snprintf(buf, sizeof(buf), "%d LUA scripts currently running:",script_count); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, buf); for ( i=0;i= script_count ) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, "Invalid script index!"); return; } lua_close(scripts[i].state); if ( i < (script_count-1) ) { memmove(&scripts[i],&scripts[i+1],sizeof(scripts[i])*(script_count-i-1)); } --script_count; } void script_lua_stats() { int script; lua_State* lua; for ( script = 0; script < script_count; script++ ) { lua = scripts[script].state; lua_pushstring(lua, "event_stats"); lua_gettable(lua, LUA_GLOBALSINDEX); if (lua_isfunction(lua, lua_gettop(lua))) { int luaerror; update_player(lua); update_inv(lua); update_ground(lua); if ( ( luaerror = lua_pcall(lua, 0, 0, 0) ) ) { const char* what = lua_tostring(lua, lua_gettop(lua)); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, what); lua_pop(lua,1); } } else lua_pop(lua, 1); } } int script_lua_command(const char* command, const char* param) { int script; lua_State* lua; int ret = 0; for ( script = 0; script < script_count; script++ ) { lua = scripts[script].state; lua_pushstring(lua, "event_command"); lua_gettable(lua, LUA_GLOBALSINDEX); if (lua_isfunction(lua, lua_gettop(lua))) { int luaerror; update_player(lua); update_inv(lua); update_ground(lua); lua_pushstring(lua, command); lua_pushstring(lua, param ? param : ""); if ( ( luaerror = lua_pcall(lua, 2, 1, 0) ) ) { const char* what = lua_tostring(lua, lua_gettop(lua)); draw_ext_info( NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_SCRIPT, what); lua_pop(lua,1); } else { ret = lua_tonumber(lua, 1); lua_pop(lua, 1); } } else lua_pop(lua, 1); } return ret; } #endif /* HAVE_LIB_LUA */ crossfire-client-1.70.0/common/p_cmd.c0000644000014500000120000007305011731277011014501 00000000000000/* Crossfire client, a client program for the crossfire program. Copyright (C) 2005-2010 Mark Wedel & Crossfire Development Team 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., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be reached via e-mail to crossfire-devel@real-time.com */ /** * @file common/p_cmd.c * Contains a lot about the commands typed into the client. */ #ifndef CPROTO /* use declarations from p_cmd.h instead of doing make proto on this file */ #include #include #include #include /** * @defgroup PCmdHelpCommands Common client player commands. * @{ */ /* TODO This should really be under /help commands or something... */ /* This dynamically generates a list from the ConsoleCommand list. */ #undef CLIENTHELP_LONG_LIST /* long-list: category name - description name - description ... not long list: category name name name ... */ #undef HELP_USE_COLOR #ifdef HELP_USE_COLOR #error Oops, need to put them back. #else #define H1(a) draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, a) #define H2(a) draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, a) #define LINE(a) draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, a) #endif #define assumed_wrap get_info_width() /* TODO Help topics other than commands? Refer to other documents? */ /** * */ static void do_clienthelp_list(void) { ConsoleCommand ** commands_array; ConsoleCommand * commands_copy; int i; CommCat current_cat = COMM_CAT_MISC; #ifndef CLIENTHELP_LONG_LIST char line_buf[MAX_BUF]; size_t line_len = 0; line_buf[0] = '\0'; #endif commands_array = get_cat_sorted_commands(); /* Now we have a nice sorted list. */ H1(" === Client Side Commands === "); for (i = 0; i < get_num_commands(); i++) { commands_copy = commands_array[i]; /* Should be LOG_SPAM but I'm too lazy to tweak it. */ /* LOG(LOG_INFO, "p_cmd::do_clienthelp_list", "%s Command %s", get_category_name(commands_copy->cat), commands_copy->name); */ if (commands_copy->cat != current_cat) { char buf[MAX_BUF]; #ifndef CLIENTHELP_LONG_LIST if (line_len > 0) { LINE(line_buf); line_buf[0] = '\0'; line_len = 0; } #endif #ifdef HELP_USE_COLOR snprintf(buf, MAX_BUF - 1, "%s Commands:", get_category_name(commands_copy->cat)); #else snprintf(buf, MAX_BUF - 1, " --- %s Commands --- ", get_category_name(commands_copy->cat)); #endif H2(buf); current_cat = commands_copy->cat; } #ifdef CLIENTHELP_LONG_LIST if (commands_copy->desc != NULL) { char buf[MAX_BUF]; snprintf(buf, MAX_BUF - 1, "%s - %s", commands_copy->name, commands_copy->desc); LINE(buf); } else { LINE(commands_copy->name); } #else { size_t name_len; name_len = strlen(commands_copy->name); if (strlen(commands_copy->name) > MAX_BUF) { LINE(commands_copy->name); } else if (name_len > assumed_wrap) { LINE(line_buf); LINE(commands_copy->name); line_len = 0; } else if (line_len + name_len > assumed_wrap) { LINE(line_buf); strncpy(line_buf, commands_copy->name, name_len + 1); line_len = name_len; } else { if (line_len > 0) { strncat(line_buf, " ", 2); line_len += 1; } strncat(line_buf, commands_copy->name, name_len + 1); line_len += name_len; } } #endif } #ifndef CLIENTHELP_LONG_LIST if (line_len) { LINE(line_buf); } #endif } /** * * @param cc */ static void show_help(const ConsoleCommand * cc) { { char buf[MAX_BUF]; snprintf(buf, MAX_BUF - 1, "%s Command help:", get_category_name(cc->cat)); H1(buf); } if (cc->desc != NULL) { char buf[MAX_BUF]; snprintf(buf, MAX_BUF - 1, "%s - %s", cc->name, cc->desc); H2(buf); } else { H2(cc->name); } if (cc->helpfunc != NULL) { const char * long_help = NULL; long_help = cc->helpfunc(); if (long_help != NULL) { /* For a test, let's watch draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, * MSG_TYPE_CLIENT_NOTICE, ) choke on newlines. */ /* TODO C line wrapping (get_info_width()), argh. Or move it to UI? */ LINE(long_help); } else { LINE("This command's documentation is bugged!"); } } else { LINE("This command has no extended documentation. :("); } } /** * * @param arg */ static void do_clienthelp(const char * arg) { const ConsoleCommand * cc; if (!arg || !strlen(arg)) { do_clienthelp_list(); return; } cc = find_command(arg); if (cc == NULL) { char buf[MAX_BUF]; snprintf(buf, MAX_BUF - 1, "clienthelp: Unknown command %s.", arg); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); return; } show_help(cc); } /** * */ static const char * help_clienthelp(void) { return "Syntax:\n" "\n" " clienthelp\n" " clienthelp \n" "\n" "Without any arguments, displays a list of client-side " "commands.\n" "\n" "With arguments, displays the help for the client-side " "command .\n" "\n" "See also: serverhelp, help."; } /** * * @param arg */ static void do_serverhelp(const char * arg) { if (arg) { char buf[MAX_BUF]; snprintf(buf, sizeof(buf), "help %s", arg); /* maybe not a must send, but we probably don't want to drop it */ send_command(buf, -1, 1); } else { send_command("help", -1, 1); /* TODO make install in server branch doesn't install def_help. */ } } /** * */ static const char * help_serverhelp(void) { return "Syntax:\n" "\n" " serverhelp\n" " serverhelp \n" "\n" "Fetches help from the server.\n" "\n" "Note that currently nothing can be done (without a recompile) if a " "client command masks a server command.\n" "\n" "See also: clienthelp, help."; } /** * * @param cpnext */ static void command_help(const char *cpnext) { if (cpnext) { const ConsoleCommand * cc; char buf[MAX_BUF]; cc = find_command(cpnext); if (cc != NULL) { show_help(cc); } else { snprintf(buf, sizeof(buf), "help %s", cpnext); /* maybe not a must send, but we probably don't want to drop it */ send_command(buf, -1, 1); } } else { do_clienthelp_list(); /* Now fetch (in theory) command list from the server. TODO Protocol command - feed it to the tab completer. Nope! It effectivey fetches '/help commands for commands'. */ send_command("help", -1, 1); /* TODO make install in server branch doesn't install def_help. */ } } /** * */ static const char * help_help(void) { return "Syntax:\n" "\n" " help\n" " help \n" "\n" "Without any arguments, displays a list of client-side " "commands, and fetches the without-arguments help from " "the server.\n" "\n" "With arguments, first checks if there's a client command " "named . If there is, display it's help. If there " "isn't, send the topic to the server.\n" "\n" "See also: clienthelp, serverhelp."; } /** * @} */ /* EndOf PCmdHelpCommands */ /* * Other commands. */ /** * * @param cpnext */ static void set_command_window(const char *cpnext) { if (!cpnext) { draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "cwindow command requires a number parameter"); } else { want_config[CONFIG_CWINDOW] = atoi(cpnext); if (want_config[CONFIG_CWINDOW]<1 || want_config[CONFIG_CWINDOW]>127) want_config[CONFIG_CWINDOW]=COMMAND_WINDOW; else use_config[CONFIG_CWINDOW] = want_config[CONFIG_CWINDOW]; } } /** * * @param cpnext */ static void command_foodbeep(const char *cpnext) { (void)cpnext; /* __UNUSED__ */ if (want_config[CONFIG_FOODBEEP]) { want_config[CONFIG_FOODBEEP]=0; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Warning bell when low on food disabled"); } else { want_config[CONFIG_FOODBEEP]=1; draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Warning bell when low on food enabled"); } use_config[CONFIG_FOODBEEP] = want_config[CONFIG_FOODBEEP]; } /** * * @param cat */ const char * get_category_name(CommCat cat) { const char * cat_name; /* HACK Need to keep this in sync. with player.h */ switch(cat) { case COMM_CAT_MISC: cat_name = "Miscellaneous"; break; case COMM_CAT_HELP: cat_name = "Help"; break; case COMM_CAT_INFO: cat_name = "Informational"; break; case COMM_CAT_SETUP: cat_name = "Configuration"; break; case COMM_CAT_SCRIPT: cat_name = "Scripting"; break; case COMM_CAT_DEBUG: cat_name = "Debugging"; break; default: cat_name = "PROGRAMMER ERROR"; break; } return cat_name; } /* * Command table. * * Implementation basically stolen verbatim from the server. */ /* "Typecasters" (and some forwards) */ /** * * @param ignored */ static void do_script_list(const char * ignored) { script_list(); } /** * * @param ignored */ static void do_clearinfo(const char * ignored) { menu_clear(); } /** * * @param ignored */ static void do_disconnect(const char * ignored) { close_server_connection(); /* the gtk clients need to do some cleanup logic - otherwise, * they start hogging CPU. */ cleanup_connection(); return; } #ifdef HAVE_DMALLOC_H #ifndef DMALLOC_VERIFY_NOERROR #define DMALLOC_VERIFY_NOERROR 1 #endif /** * * @param ignored */ static void do_dmalloc(const char * ignored) { if (dmalloc_verify(NULL)==DMALLOC_VERIFY_NOERROR) draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Heap checks out OK"); else draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_ERROR, "Heap corruption detected"); } #endif /** * * @param ignored */ static void do_inv(const char * ignored) { print_inventory (cpl.ob); } static void do_magicmap(const char * ignored) { cpl.showmagic=1; draw_magic_map(); } /** * * @param ignored */ static void do_metaserver(const char * ignored) { if (!metaserver_get_info(meta_server, meta_port)) metaserver_show(FALSE); else draw_ext_info( NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_METASERVER, "Unable to get metaserver information."); } /** * * @param ignored */ static void do_savedefaults(const char * ignored) { save_defaults(); } /** * * @param ignored */ static void do_savewinpos(const char * ignored) { save_winpos(); } /** * * @param used */ static void do_take(const char * used) { command_take("take", used); /* I dunno why they want it. */ } /** * * @param ignored */ static void do_num_free_items(const char * ignored) { LOG(LOG_INFO,"common::extended_command","num_free_items=%d", num_free_items()); } static void do_clienthelp(const char * arg); /* Forward. */ /* Help "typecasters". */ #include "../help/chelp.h" /** * */ static const char * help_bind(void) { return HELP_BIND_LONG; } /** * */ static const char * help_unbind(void) { return HELP_UNBIND_LONG; } /** * */ static const char * help_magicmap(void) { return HELP_MAGICMAP_LONG; } /** * */ static const char * help_inv(void) { return HELP_INV_LONG; } /** * */ static const char * help_cwindow(void) { return "Syntax:\n" "\n" " cwindow \n" "\n" "set size of command" "window (if val is exceeded" "client won't send new" "commands to server\n\n" "(What does this mean, 'put a lid on it'?) TODO"; } /** * */ static const char * help_script(void) { return "Syntax:\n" "\n" " script \n" "\n" "Run the program at path " "as a Crossfire client script." "See Documentation/Script.html"; } /** * */ static const char * help_scripttell(void) { return "Syntax:\n" "\n" " scripttell \n" "\n" "?"; } /* Toolkit-dependent. */ /** * */ static const char * help_savewinpos(void) { return "Syntax:\n" "\n" " savewinpos\n" "\n" "save window positions - split windows mode only."; } /** * */ static const char * help_metaserver(void) { /* TODO Add command_escape() where appropriate. On the other hand, that can lead to a meaningless syntax-display API.*/ return "Syntax:\n" "\n" " metaserver\n" "\n" "Get updated list of servers " "from the metaserver and show it." "This is the same information that the client " "uses to show a list of servers when it starts.\n" "\n" "Warning: This command may freeze the client until it gets the list."; } /** * */ static const char * help_scriptkill(void) { return "Syntax:\n" "\n" " scriptkill \n" "\n" "Stop scripts named .\n" "(Not guaranteed to work?)"; } /** * */ static const char * help_showweight(void) { return "Syntax:\n" "\n" " showweight\n" " showweight inventory\n" " showweight look\n" "\n" "(Or any prefix of the arguments.)" "Toggles if you see the weight of" "items in your inventory (also if" "no argument given) or your" "look-window."; } /* * draw_ext_info(NDI_NAVY, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Information Commands");* draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " inv - *recursively* print your"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " inventory - includes containers."); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " mapredraw, showinfo, take"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " help - show this message"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " help - get more information on a"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " command (Server command only?)"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " showicon - draw status icons in"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " inventory window"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " showweight - show weight in inventory"); draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " look windows"); draw_ext_info(NDI_NAVY, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Scripting Commands"); draw_ext_info(NDI_NAVY, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, "Client Side Debugging Commands"); #ifdef HAVE_DMALLOC_H draw_ext_info(NDI_BLACK, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, " dmalloc - Check heap?"); #endif */ /* TODO Wrap these? Um. */ static ConsoleCommand CommonCommands[] = { /* From player.h: name, cat, func, helpfunc, long_desc */ { "autorepeat", COMM_CAT_MISC, set_autorepeat, NULL, "toggle autorepeat" /* XXX Eh? */ }, { "bind", COMM_CAT_SETUP, bind_key, help_bind, HELP_BIND_SHORT }, { "script", COMM_CAT_SCRIPT, script_init, help_script, NULL }, #ifdef HAVE_LUA { "lua_load", COMM_CAT_SCRIPT, script_lua_load, NULL, NULL }, { "lua_list", COMM_CAT_SCRIPT, script_lua_list, NULL, NULL }, { "lua_kill", COMM_CAT_SCRIPT, script_lua_kill, NULL, NULL }, #endif { "scripts", COMM_CAT_SCRIPT, do_script_list, NULL, "List the running scripts(?)" }, { "scriptkill", COMM_CAT_SCRIPT, script_kill, help_scriptkill, NULL }, { "scripttell", COMM_CAT_SCRIPT, script_tell, help_scripttell, NULL }, { "clearinfo", COMM_CAT_MISC, do_clearinfo, NULL, "clear the info window" }, { "cwindow", COMM_CAT_SETUP, set_command_window, help_cwindow, NULL }, { "disconnect", COMM_CAT_MISC, do_disconnect, NULL, "close connection to server" }, #ifdef HAVE_DMALLOC_H { "dmalloc", COMM_CAT_DEBUG, do_dmalloc, NULL, NULL }, #endif { "foodbeep", COMM_CAT_SETUP, command_foodbeep, NULL, "toggle audible low on food warning" }, { "help", COMM_CAT_HELP, command_help, help_help, NULL }, { "clienthelp", COMM_CAT_HELP, do_clienthelp, help_clienthelp, "Client-side command information" }, { "serverhelp", COMM_CAT_HELP, do_serverhelp, help_serverhelp, "Server-side command information" }, { "inv", COMM_CAT_DEBUG, do_inv, help_inv, HELP_INV_SHORT }, { "magicmap", COMM_CAT_MISC, do_magicmap, help_magicmap, HELP_MAGICMAP_SHORT }, { "metaserver", COMM_CAT_INFO, do_metaserver, help_metaserver, "Print 'metaserver information'. Warning - your client will pause." }, { "savedefaults", COMM_CAT_SETUP, do_savedefaults, NULL, HELP_SAVEDEFAULTS_SHORT /* How do we make sure showicons stays on? */ }, { "savewinpos", COMM_CAT_SETUP, do_savewinpos, help_savewinpos, "Saves the position and sizes of windows." /* Panes? */ }, { "scroll", COMM_CAT_SETUP, set_scroll, NULL, "toggle scroll/wrap mode in info window" }, { "showicon", COMM_CAT_SETUP, set_show_icon, NULL, "Toggles if you see the worn, locked, cursed etc state in the inventory pane." }, { "showweight", COMM_CAT_SETUP, set_show_weight, help_showweight, "Toggles if you see item weights in inventory look windows." }, { "take", COMM_CAT_MISC, do_take, NULL, NULL }, { "unbind", COMM_CAT_SETUP, unbind_key, help_unbind, NULL }, { "num_free_items", COMM_CAT_DEBUG, do_num_free_items, NULL, "log the number of free items?" }, { "show", COMM_CAT_SETUP, command_show, NULL, "Change what items to show in inventory" }, }; const int CommonCommandsSize = sizeof(CommonCommands) / sizeof(ConsoleCommand); #ifdef TOOLKIT_COMMANDS extern ConsoleCommand ToolkitCommands[]; extern const int ToolkitCommandsSize; #endif /* ------------------------------------------------------------------ */ int num_commands; /** * */ int get_num_commands(void) { return num_commands; } static ConsoleCommand ** name_sorted_commands; /** * * @param a_ * @param b_ */ static int sort_by_name(const void * a_, const void * b_) { ConsoleCommand * a = *((ConsoleCommand **)a_); ConsoleCommand * b = *((ConsoleCommand **)b_); return strcmp(a->name, b->name); } static ConsoleCommand ** cat_sorted_commands; /* Sort by category, then by name. */ /** * * @param a_ * @param b_ */ static int sort_by_category(const void *a_, const void *b_) { /* Typecasts, so it goes. */ ConsoleCommand * a = *((ConsoleCommand **)a_); ConsoleCommand * b = *((ConsoleCommand **)b_); if (a->cat == b->cat) { return strcmp(a->name, b->name); } return a->cat - b->cat; } /** * */ void init_commands(void) { int i; #ifdef TOOLKIT_COMMANDS init_toolkit_commands(); /* TODO I dunno ... go through the list and print commands without helps? */ num_commands = CommonCommandsSize + ToolkitCommandsSize; #else num_commands = CommonCommandsSize; #endif /* Make a list of (pointers to statically allocated!) all the commands. We have a list; the toolkit has a ToolkitCommands and ToolkitCommandsSize, initialized before calling this. */ /* XXX Leak! */ name_sorted_commands = malloc(sizeof(ConsoleCommand *) * num_commands); for (i = 0; i < CommonCommandsSize; i++) { name_sorted_commands[i] = &CommonCommands[i]; } #ifdef TOOLKIT_COMMANDS for(i = 0; i < ToolkitCommandsSize; i++) { name_sorted_commands[CommonCommandsSize + i] = &ToolkitCommands[i]; } #endif /* Sort them. */ qsort(name_sorted_commands, num_commands, sizeof(ConsoleCommand *), sort_by_name); /* Copy the list, then sort it by category. */ cat_sorted_commands = malloc(sizeof(ConsoleCommand *) * num_commands); memcpy(cat_sorted_commands, name_sorted_commands, sizeof(ConsoleCommand *) * num_commands); qsort(cat_sorted_commands, num_commands, sizeof(ConsoleCommand *), sort_by_category); /* TODO Add to the list of tab-completion items. */ } #ifndef tolower #define tolower(C) (((C) >= 'A' && (C) <= 'Z')? (C) - 'A' + 'a': (C)) #endif /** * * @param cmd */ const ConsoleCommand * find_command(const char * cmd) { ConsoleCommand ** asp_p = NULL, dummy; ConsoleCommand * dummy_p; ConsoleCommand * asp; char *cp, *cmd_cpy; cmd_cpy = strdup(cmd); for (cp=cmd_cpy; *cp; cp++) { *cp =tolower(*cp); } dummy.name = cmd_cpy; dummy_p = &dummy; asp_p = bsearch( (void *)&dummy_p, (void *)name_sorted_commands, num_commands, sizeof(ConsoleCommand *), sort_by_name); if (asp_p == NULL) { free(cmd_cpy); return NULL; } asp = *asp_p; /* TODO The server's find_command() searches first the commands, then the emotes. We might have to do something similar someday, too. */ /* if (asp == NULL) search something else? */ free(cmd_cpy); return asp; } /** * Returns a pointer to the head of an array of ConsoleCommands sorted by * category, then by name. It's num_commands long. */ ConsoleCommand ** get_cat_sorted_commands(void) { return cat_sorted_commands; } /** * Tries to handle command cp (with optional params in cpnext, which may be * null) as a local command. If this was a local command, returns true to * indicate command was handled. This code was moved from extended_command so * scripts ca issue local commands to handle keybindings or anything else. * * @param cp * @param cpnext */ int handle_local_command(const char* cp, const char * cpnext) { const ConsoleCommand * cc = NULL; cc = find_command(cp); if (cc == NULL) { return FALSE; } if (cc->dofunc == NULL) { char buf[MAX_BUF]; snprintf(buf, MAX_BUF - 1, "Client command %s has no implementation!", cc->name); draw_ext_info(NDI_RED, MSG_TYPE_CLIENT, MSG_TYPE_CLIENT_NOTICE, buf); return FALSE; } cc->dofunc(cpnext); return TRUE; } /** * This is an extended command (ie, 'who, 'whatever, etc). In general, we * just send the command to the server, but there are a few that we care about * (bind, unbind) * * The command passed to us can not be modified - if it is a keybinding, we * get passed the string that is that binding - modifying it effectively * changes the binding. * * @param ocommand */ void extended_command(const char *ocommand) { const char *cp = ocommand; char *cpnext, command[MAX_BUF]; if ((cpnext = strchr(cp, ' '))!=NULL) { int len = cpnext - ocommand; if (len > (MAX_BUF -1 )) len = MAX_BUF-1; strncpy(command, ocommand, len); command[len] = '\0'; cp = command; while (*cpnext == ' ') cpnext++; if (*cpnext == 0) cpnext = NULL; } /* cp now contains the command (everything before first space), * and cpnext contains everything after that first space. cpnext * could be NULL. */ #ifdef HAVE_LUA if ( script_lua_command(cp, cpnext) ) return; #endif /* If this isn't a client-side command, send it to the server. */ if (!handle_local_command(cp, cpnext)) { /* just send the command(s) (if `ocommand' is a compound command */ /* then split it and send each part seperately */ /* TODO Remove this from the server; end of commands.c. */ strncpy(command, ocommand, MAX_BUF-1); command[MAX_BUF-1]=0; cp = strtok(command, ";"); while ( cp ) { while( *cp == ' ' ) cp++; /* throw out leading spaces; server does not like them */ send_command(cp, cpl.count, 0); cp = strtok(NULL, ";"); } } } /* ------------------------------------------------------------------ */ /* This list is used for the 'tab' completion, and nothing else. * Therefore, if it is out of date, it isn't that terrible, but * ideally it should stay somewhat up to date with regards to * the commands the server supports. */ /* TODO Dynamically generate. */ static const char *const commands[] = { "accuse", "afk", "apply", "applymode", "archs", "beg", "bleed", "blush", "body", "bounce", "bow", "bowmode", "brace", "build", "burp", "cackle", "cast", "chat", "chuckle", "clap", "cointoss", "cough", "cringe", "cry", "dance", "disarm", "dm", "dmhide", "drop", "dropall", "east", "examine", "explore", "fire", "fire_stop", "fix_me", "flip", "frown", "gasp", "get", "giggle", "glare", "grin", "groan", "growl", "gsay", "help", "hiccup", "hiscore", "hug", "inventory", "invoke", "killpets", "kiss", "laugh", "lick", "listen", "logs", "mapinfo", "maps", "mark", "me", "motd", "nod", "north", "northeast", "northwest", "orcknuckle", "output-count", "output-sync", "party", "peaceful", "petmode", "pickup", "players", "poke", "pout", "prepare", "printlos", "puke", "quests", "quit", "ready_skill", "rename", "reply", "resistances", "rotateshoottype", "run", "run_stop", "save", "say", "scream", "search", "search-items", "shake", "shiver", "shout", "showpets", "shrug", "shutdown", "sigh", "skills", "slap", "smile", "smirk", "snap", "sneeze", "snicker", "sniff", "snore", "sound", "south", "southeast", "southwest", "spit", "statistics", "stay", "strings", "strut", "sulk", "take", "tell", "thank", "think", "throw", "time", "title", "twiddle", "use_skill", "usekeys", "version", "wave", "weather", "west", "whereabouts", "whereami", "whistle", "who", "wimpy", "wink", "yawn", }; #define NUM_COMMANDS ((int)(sizeof(commands) / sizeof(char*))) /** * Player has entered 'command' and hit tab to complete it. See if we can * find a completion. Returns matching command. Returns NULL if no command * matches. * * @param command */ const char * complete_command(const char *command) { int i, len, display; const char *match; static char result[64]; char list[500]; len = strlen(command); if (len == 0) return NULL; display = 0; strcpy(list, "Matching commands:"); /* TODO Partial match, e.g.: If the completion list was: wear wet #? If we type 'w' then hit tab, put in the e. Basically part of bash (readline?)'s behaviour. */ match = NULL; /* check server side commands */ for (i=0; i \n", "#\n", "# will typically be the keycode for that key. While\n", "# keysyms are defined to work across different servers, keycodes are\n", "# server/machine specific. Keycodes are only needed because some keyboards\n", "# (sun's type 5 for one) have keys with no corresponding keysym.\n", "# When loading, all keysyms are converted to keycodes for matching.\n", "#\n", "# flags:\n", "# N - Normal mode\n", "# F - Fire mode\n", "# R - Run mode\n", "# A - All modes\n", "# E - Leave in line edit mode\n", "#\n", "#quotedbl 1 AE \n", "quotedbl 1 AE say \n", "period 1 N stay fire\n", "# nethack keys\n", "h 1 A west\n", "j 1 A south\n", "k 1 A north\n", "l 1 A east\n", "y 1 A northwest\n", "u 1 A northeast\n", "b 1 A southwest\n", "n 1 A southeast\n", "H 1 A west\n", "J 1 A south\n", "K 1 A north\n", "L 1 A east\n", "Y 1 A northwest\n", "U 1 A northeast\n", "B 1 A southwest\n", "N 1 A southeast\n", "# default cursorkeys\n", "Up 1 A north\n", "Down 1 A south\n", "Left 1 A west\n", "Right 1 A east\n", "# numpad\n", "Up 76 A north\n", "Down 120 A south\n", "Left 98 A west\n", "Right 100 A east\n", "KP_8 1 A north\n", "KP_2 1 A south\n", "KP_4 1 A west\n", "KP_6 1 A east\n", "KP_7 1 A northwest\n", "KP_9 1 A northeast\n", "KP_5 1 A stay\n", "KP_1 1 A southwest\n", "KP_3 1 A southeast\n", "# Sun type 4 keyboards will often have different key names.\n", "KP_Up 1 A north\n", "KP_Down 1 A south\n", "KP_Right 1 A east\n", "KP_Left 1 A west\n", "KP_Home 1 A northwest\n", "KP_Prior 1 A northeast\n", "#Unfortunately, there is no name for the middle key.\n", "#KP_5 1 A stay\n", "KP_End 1 A southwest\n", "KP_Next 1 A southeast\n", "F28 1 A north\n", "F34 1 A south\n", "F30 1 A west\n", "F32 1 A east\n", "F27 1 A northwest\n", "F29 1 A northeast\n", "F31 1 A stay\n", "F33 1 A southwest\n", "F35 1 A southeast\n", "#\n", "a 1 N apply\n", "A 1 N apply inventory\n", "a 1 RF apply\n", "A 1 RF apply\n", "d 1 N disarm\n", "e 1 N examine inventory\n", "E 1 N examine inventory\n", "e 1 RF examine\n", "E 1 RF examine\n", "s 1 A search\n", "S 1 A brace\n", "t 1 A ready_skill throw\n", "x 1 NF show\n", "comma 1 A take\n", "Tab 1 N rotatespells 1\n", "Tab 1 FR rotatespells -1\n", "question 1 A help\n", "KP_Add 1 A rotateshoottype\n", "KP_Subtract 1 A rotateshoottype -\n", "minus 1 N rotateshoottype -1\n", "plus 1 NF rotateshoottype\n", "at 1 A pickup\n", }; crossfire-client-1.70.0/COPYING0000644000014500000120000004310511731277014013017 00000000000000 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) 19yy 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) 19yy 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. crossfire-client-1.70.0/NOTES0000644000014500000120000000052411731277014012575 00000000000000These are the official RedHate 6.2 crossfire client RPMS. The crossfire-client rpm is the old client. The crossfire-client-gtk is the newer GTK client and is GNOME aware and will install itself under GNOME Foot->Programs->Games, I highly recommend this client. The crossfire-client-sounds is if you want to have sounds during game play. crossfire-client-1.70.0/macros/0000755000014500000120000000000011731277216013331 500000000000000crossfire-client-1.70.0/macros/libcurl.m40000644000014500000120000002176611731277007015161 00000000000000# LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION], # [ACTION-IF-YES], [ACTION-IF-NO]) # ---------------------------------------------------------- # David Shaw May-09-2006 # # Checks for libcurl. DEFAULT-ACTION is the string yes or no to # specify whether to default to --with-libcurl or --without-libcurl. # If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the # minimum version of libcurl to accept. Pass the version as a regular # version number like 7.10.1. If not supplied, any version is # accepted. ACTION-IF-YES is a list of shell commands to run if # libcurl was successfully found and passed the various tests. # ACTION-IF-NO is a list of shell commands that are run otherwise. # Note that using --without-libcurl does run ACTION-IF-NO. # # This macro #defines HAVE_LIBCURL if a working libcurl setup is # found, and sets @LIBCURL@ and @LIBCURL_CPPFLAGS@ to the necessary # values. Other useful defines are LIBCURL_FEATURE_xxx where xxx are # the various features supported by libcurl, and LIBCURL_PROTOCOL_yyy # where yyy are the various protocols supported by libcurl. Both xxx # and yyy are capitalized. See the list of AH_TEMPLATEs at the top of # the macro for the complete list of possible defines. Shell # variables $libcurl_feature_xxx and $libcurl_protocol_yyy are also # defined to 'yes' for those features and protocols that were found. # Note that xxx and yyy keep the same capitalization as in the # curl-config list (e.g. it's "HTTP" and not "http"). # # Users may override the detected values by doing something like: # LIBCURL="-lcurl" LIBCURL_CPPFLAGS="-I/usr/myinclude" ./configure # # For the sake of sanity, this macro assumes that any libcurl that is # found is after version 7.7.2, the first version that included the # curl-config script. Note that it is very important for people # packaging binary versions of libcurl to include this script! # Without curl-config, we can only guess what protocols are available, # or use curl_version_info to figure it out at runtime. AC_DEFUN([LIBCURL_CHECK_CONFIG], [ AH_TEMPLATE([LIBCURL_FEATURE_SSL],[Defined if libcurl supports SSL]) AH_TEMPLATE([LIBCURL_FEATURE_KRB4],[Defined if libcurl supports KRB4]) AH_TEMPLATE([LIBCURL_FEATURE_IPV6],[Defined if libcurl supports IPv6]) AH_TEMPLATE([LIBCURL_FEATURE_LIBZ],[Defined if libcurl supports libz]) AH_TEMPLATE([LIBCURL_FEATURE_ASYNCHDNS],[Defined if libcurl supports AsynchDNS]) AH_TEMPLATE([LIBCURL_FEATURE_IDN],[Defined if libcurl supports IDN]) AH_TEMPLATE([LIBCURL_FEATURE_SSPI],[Defined if libcurl supports SSPI]) AH_TEMPLATE([LIBCURL_FEATURE_NTLM],[Defined if libcurl supports NTLM]) AH_TEMPLATE([LIBCURL_PROTOCOL_HTTP],[Defined if libcurl supports HTTP]) AH_TEMPLATE([LIBCURL_PROTOCOL_HTTPS],[Defined if libcurl supports HTTPS]) AH_TEMPLATE([LIBCURL_PROTOCOL_FTP],[Defined if libcurl supports FTP]) AH_TEMPLATE([LIBCURL_PROTOCOL_FTPS],[Defined if libcurl supports FTPS]) AH_TEMPLATE([LIBCURL_PROTOCOL_FILE],[Defined if libcurl supports FILE]) AH_TEMPLATE([LIBCURL_PROTOCOL_TELNET],[Defined if libcurl supports TELNET]) AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP]) AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT]) AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP]) AC_ARG_WITH(libcurl, AC_HELP_STRING([--with-libcurl=DIR],[look for the curl library in DIR]), [_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])]) if test "$_libcurl_with" != "no" ; then AC_PROG_AWK _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" _libcurl_try_link=yes if test -d "$_libcurl_with" ; then LIBCURL_CPPFLAGS="-I$withval/include" _libcurl_ldflags="-L$withval/lib" AC_PATH_PROG([_libcurl_config],[curl-config],["$withval/bin"], ["$withval/bin"]) else AC_PATH_PROG([_libcurl_config],[curl-config]) fi if test x$_libcurl_config != "x" ; then AC_CACHE_CHECK([for the version of libcurl], [libcurl_cv_lib_curl_version], [libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $[]2}'`]) _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` _libcurl_wanted=`echo ifelse([$2],,[0],[$2]) | $_libcurl_version_parse` if test $_libcurl_wanted -gt 0 ; then AC_CACHE_CHECK([for libcurl >= version $2], [libcurl_cv_lib_version_ok], [ if test $_libcurl_version -ge $_libcurl_wanted ; then libcurl_cv_lib_version_ok=yes else libcurl_cv_lib_version_ok=no fi ]) fi if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then if test x"$LIBCURL_CPPFLAGS" = "x" ; then LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` fi if test x"$LIBCURL" = "x" ; then LIBCURL=`$_libcurl_config --libs` # This is so silly, but Apple actually has a bug in their # curl-config script. Fixed in Tiger, but there are still # lots of Panther installs around. case "${host}" in powerpc-apple-darwin7*) LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` ;; esac fi # All curl-config scripts support --feature _libcurl_features=`$_libcurl_config --feature` # Is it modern enough to have --protocols? (7.12.4) if test $_libcurl_version -ge 461828 ; then _libcurl_protocols=`$_libcurl_config --protocols` fi else _libcurl_try_link=no fi unset _libcurl_wanted fi if test $_libcurl_try_link = yes ; then # we didn't find curl-config, so let's see if the user-supplied # link line (or failing that, "-lcurl") is enough. LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} AC_CACHE_CHECK([whether libcurl is usable], [libcurl_cv_lib_curl_usable], [ _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBCURL $LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],[ /* Try and use a few common options to force a failure if we are missing symbols or can't link. */ int x; curl_easy_setopt(NULL,CURLOPT_URL,NULL); x=CURL_ERROR_SIZE; x=CURLOPT_WRITEFUNCTION; x=CURLOPT_FILE; x=CURLOPT_ERRORBUFFER; x=CURLOPT_STDERR; x=CURLOPT_VERBOSE; ])],[libcurl_cv_lib_curl_usable=yes],[libcurl_cv_lib_curl_usable=no]) CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs ]) if test $libcurl_cv_lib_curl_usable = yes ; then # Does curl_free() exist in this version of libcurl? # If not, fake it with free() _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBS $LIBCURL" AC_CHECK_FUNC(curl_free,, AC_DEFINE(curl_free,free, [Define curl_free() as free() if our version of curl lacks curl_free.])) CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs AC_DEFINE(HAVE_LIBCURL,1, [Define to 1 if you have a functional curl library.]) AC_SUBST(LIBCURL_CPPFLAGS) AC_SUBST(LIBCURL) for _libcurl_feature in $_libcurl_features ; do AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_feature_$_libcurl_feature),[1]) eval AS_TR_SH(libcurl_feature_$_libcurl_feature)=yes done if test "x$_libcurl_protocols" = "x" ; then # We don't have --protocols, so just assume that all # protocols are available _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT" if test x$libcurl_feature_SSL = xyes ; then _libcurl_protocols="$_libcurl_protocols HTTPS" # FTPS wasn't standards-compliant until version # 7.11.0 if test $_libcurl_version -ge 461568; then _libcurl_protocols="$_libcurl_protocols FTPS" fi fi fi for _libcurl_protocol in $_libcurl_protocols ; do AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_protocol_$_libcurl_protocol),[1]) eval AS_TR_SH(libcurl_protocol_$_libcurl_protocol)=yes done else unset LIBCURL unset LIBCURL_CPPFLAGS fi fi unset _libcurl_try_link unset _libcurl_version_parse unset _libcurl_config unset _libcurl_feature unset _libcurl_features unset _libcurl_protocol unset _libcurl_protocols unset _libcurl_version unset _libcurl_ldflags fi if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then # This is the IF-NO path ifelse([$4],,:,[$4]) else # This is the IF-YES path ifelse([$3],,:,[$3]) fi unset _libcurl_with ])dnl crossfire-client-1.70.0/macros/gtk-2.0.m40000644000014500000120000001656311731277007014606 00000000000000# Configure paths for GTK+ # Owen Taylor 1997-2001 dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, dnl pass to pkg-config dnl AC_DEFUN([AM_PATH_GTK_2_0], [dnl dnl Get the cflags and libraries from pkg-config dnl AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program], , enable_gtktest=yes) pkg_config_args=gtk+-2.0 for module in . $4 do case "$module" in gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; esac done no_gtk="" AC_PATH_PROG(PKG_CONFIG, pkg-config, no) if test x$PKG_CONFIG != xno ; then if pkg-config --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." no_gtk=yes PKG_CONFIG=no fi else no_gtk=yes fi min_gtk_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version) if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" enable_gtktest=no fi if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then : else no_gtk=yes fi fi if test x"$no_gtk" = x ; then GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" dnl dnl Now check if the installed GTK+ is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.gtktest AC_TRY_RUN([ #include #include #include int main () { int major, minor, micro; char *tmp_version; fclose (fopen ("conf.gtktest", "w")); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://pkgconfig.sourceforge.net" else if test -f conf.gtktest ; then : else echo "*** Could not run GTK+ test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" AC_TRY_LINK([ #include #include ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK+ or finding the wrong" echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) rm -f conf.gtktest ]) crossfire-client-1.70.0/macros/sdl.m40000644000014500000120000001440411731277007014276 00000000000000# Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl AC_DEFUN([AM_PATH_SDL], [dnl dnl Get the cflags and libraries from the sdl-config script dnl AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], , enable_sdltest=yes) if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) min_sdl_version=ifelse([$1], ,0.11.0,$1) AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) crossfire-client-1.70.0/macros/pkg.m40000644000014500000120000001214511731277007014275 00000000000000# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES crossfire-client-1.70.0/macros/ax_pthread.m40000644000014500000120000005277411731277007015647 00000000000000# =========================================================================== # http://www.nongnu.org/autoconf-archive/ax_pthread.html # =========================================================================== # # SYNOPSIS # # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # DESCRIPTION # # This macro figures out how to build C programs using POSIX threads. It # sets the PTHREAD_LIBS output variable to the threads library and linker # flags, and the PTHREAD_CFLAGS output variable to any special C compiler # flags that are needed. (The user can also force certain compiler # flags/libs to be tested by setting these environment variables.) # # Also sets PTHREAD_CC to any special C compiler that is needed for # multi-threaded programs (defaults to the value of CC otherwise). (This # is necessary on AIX to use the special cc_r compiler alias.) # # NOTE: You are assumed to not only compile your program with these flags, # but also link it with them as well. e.g. you should link with # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # # If you are only building threads programs, you may wish to use these # variables in your default LIBS, CFLAGS, and CC: # # LIBS="$PTHREAD_LIBS $LIBS" # CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # CC="$PTHREAD_CC" # # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant # has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name # (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # # ACTION-IF-FOUND is a list of shell commands to run if a threads library # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it # is not found. If ACTION-IF-FOUND is not specified, the default action # will define HAVE_PTHREAD. # # Please let the authors know if this macro fails on any platform, or if # you have any other suggestions or comments. This macro was based on work # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by # Alejandro Forero Cuervo to the autoconf macro repository. We are also # grateful for the helpful feedback of numerous users. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. AC_DEFUN([AX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) AC_MSG_RESULT($ax_pthread_ok) if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; esac if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; pthread-config) AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [ax_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($ax_pthread_ok) if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_MSG_CHECKING([for joinable pthread attribute]) attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_TRY_LINK([#include ], [int attr=$attr; return attr;], [attr_name=$attr; break]) done AC_MSG_RESULT($attr_name) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else ax_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl AX_PTHREAD # =========================================================================== # http://www.nongnu.org/autoconf-archive/ax_pthread.html # =========================================================================== # # SYNOPSIS # # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # DESCRIPTION # # This macro figures out how to build C programs using POSIX threads. It # sets the PTHREAD_LIBS output variable to the threads library and linker # flags, and the PTHREAD_CFLAGS output variable to any special C compiler # flags that are needed. (The user can also force certain compiler # flags/libs to be tested by setting these environment variables.) # # Also sets PTHREAD_CC to any special C compiler that is needed for # multi-threaded programs (defaults to the value of CC otherwise). (This # is necessary on AIX to use the special cc_r compiler alias.) # # NOTE: You are assumed to not only compile your program with these flags, # but also link it with them as well. e.g. you should link with # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # # If you are only building threads programs, you may wish to use these # variables in your default LIBS, CFLAGS, and CC: # # LIBS="$PTHREAD_LIBS $LIBS" # CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # CC="$PTHREAD_CC" # # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant # has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name # (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # # ACTION-IF-FOUND is a list of shell commands to run if a threads library # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it # is not found. If ACTION-IF-FOUND is not specified, the default action # will define HAVE_PTHREAD. # # Please let the authors know if this macro fails on any platform, or if # you have any other suggestions or comments. This macro was based on work # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by # Alejandro Forero Cuervo to the autoconf macro repository. We are also # grateful for the helpful feedback of numerous users. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. AC_DEFUN([AX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) AC_MSG_RESULT($ax_pthread_ok) if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; esac if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; pthread-config) AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [ax_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($ax_pthread_ok) if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_MSG_CHECKING([for joinable pthread attribute]) attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_TRY_LINK([#include ], [int attr=$attr; return attr;], [attr_name=$attr; break]) done AC_MSG_RESULT($attr_name) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else ax_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl AX_PTHREAD crossfire-client-1.70.0/configure0000755000014500000120000151012711731277154013704 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for crossfire-client 1.70.0. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= 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=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # 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 after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, 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 # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (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 sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 7<&0 &1 # 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` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='crossfire-client' PACKAGE_TARNAME='crossfire-client' PACKAGE_VERSION='1.70.0' PACKAGE_STRING='crossfire-client 1.70.0' PACKAGE_BUGREPORT='' ac_unique_file="crossfire-client.spec" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS CF_DATADIR LIBXPM_LIB SOUNDDIR XPM DMALLOC_LIB LIBCURL LIBCURL_CPPFLAGS _libcurl_config SDL_LIBS SDL_CFLAGS SDL_CONFIG ALSA9_LIBS ALSA9_TARGET CF_SUBDIRS TARGET SND_LIBS GUI_SRCS GUI_OBJS RANLIB LN_S OPENGL_LIBS LUA_LIBS LUA_CFLAGS INTLLIBS PACKAGE_LIBS MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE LIBGLADE_LIBS LIBGLADE_CFLAGS GTK_LIBS GTK_CFLAGS PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC ax_pthread_config WIN32_LIBS EGREP GREP X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC XMKMF SVNVERSION PKG_CONFIG AR PERL RM CP DEPEND TAR MKDIR am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_x enable_dependency_tracking enable_debug enable_ansi enable_sound enable_alsa9 enable_alsa with_sound_dir with_ldflags with_includes with_loglevel enable_gtkv2 enable_sdl enable_sdl_mixer enable_dmalloc enable_metaserver2 enable_gtktest enable_maintainer_mode with_sdl_prefix with_sdl_exec_prefix enable_sdltest with_libcurl ' ac_precious_vars='build_alias host_alias target_alias XMKMF CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG LIBGLADE_CFLAGS LIBGLADE_LIBS LUA_CFLAGS LUA_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_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 && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } 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 $as_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 ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures crossfire-client 1.70.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/crossfire-client] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of crossfire-client 1.70.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-debug Turn on debugging (default=no) --enable-ansi Turn on strict ansi (default=no) --disable-sound Disable sound support (default=implement sound support if supported libraries exist) --disable-alsa9 Disable ALSA9 sound support (default=use alsa9 sound support if alsa9 libraries exist) --disable-alsa Disable ALSA sound support (default=use alsa sound support if alsa libraries exist) --disable-gtkv2 Do not make gtk-v2 client (default=make it if available) --disable-sdl Disable linking with the SDL library, default is to use it if available --enable-sdl_mixer Enable use of the SDL_mixer library, default is not to use it --enable-dmalloc Enable checking for dmalloc library, default is to use it if available --disable-metaserver2 Do not build in metaserver2 support --disable-gtktest do not try to compile and run a test GTK+ program --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-sdltest Do not try to compile and run a test SDL program 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-sound-dir=dir Directory where the sounds are located (default=/usr/local/lib/sounds) --with-ldflags=dir Provide additional linker directives to find libraries --with-includes=dir Provide different compiler options to find headers with --with-logevel=level Sets default loglevel --with-sdl-prefix=PFX Prefix where SDL is installed (optional) --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) --with-libcurl=DIR look for the curl library in DIR Some influential environment variables: XMKMF Path to xmkmf, Makefile generator for X Window System CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility LIBGLADE_CFLAGS C compiler flags for LIBGLADE, overriding pkg-config LIBGLADE_LIBS linker flags for LIBGLADE, overriding pkg-config LUA_CFLAGS C compiler flags for LUA, overriding pkg-config LUA_LIBS linker flags for LUA, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF crossfire-client configure 1.70.0 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by crossfire-client $as_me 1.70.0, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) 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_arg'" ;; 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: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # 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 an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" 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 { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_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 $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_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 ac_aux_dir= for ac_dir in utils "$srcdir"/utils; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in utils \"$srcdir\"/utils" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in utils \"$srcdir\"/utils" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if test "${ac_cv_target+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 $as_echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- am__api_version='1.10' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&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". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_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 { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "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 $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` 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= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='crossfire-client' VERSION='1.70.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"\$(SHELL) $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 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers common/config.h" # AM_ACLOCAL_INCLUDE(macros) # These are subdirectories that have make files in them CF_SUBDIRS="common pixmaps utils help" # Check for some needed programs # Extract the first word of "mkdir", so it can be a program name with args. set dummy mkdir; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MKDIR+set}" = set; then $as_echo_n "(cached) " >&6 else case $MKDIR in [\\/]* | ?:[\\/]*) ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MKDIR=$ac_cv_path_MKDIR if test -n "$MKDIR"; then { $as_echo "$as_me:$LINENO: result: $MKDIR" >&5 $as_echo "$MKDIR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "tar", so it can be a program name with args. set dummy tar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_TAR+set}" = set; then $as_echo_n "(cached) " >&6 else case $TAR in [\\/]* | ?:[\\/]*) ac_cv_path_TAR="$TAR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi TAR=$ac_cv_path_TAR if test -n "$TAR"; then { $as_echo "$as_me:$LINENO: result: $TAR" >&5 $as_echo "$TAR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "makedepend", so it can be a program name with args. set dummy makedepend; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_DEPEND+set}" = set; then $as_echo_n "(cached) " >&6 else case $DEPEND in [\\/]* | ?:[\\/]*) ac_cv_path_DEPEND="$DEPEND" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DEPEND="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi DEPEND=$ac_cv_path_DEPEND if test -n "$DEPEND"; then { $as_echo "$as_me:$LINENO: result: $DEPEND" >&5 $as_echo "$DEPEND" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "cp", so it can be a program name with args. set dummy cp; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_CP+set}" = set; then $as_echo_n "(cached) " >&6 else case $CP in [\\/]* | ?:[\\/]*) ac_cv_path_CP="$CP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi CP=$ac_cv_path_CP if test -n "$CP"; then { $as_echo "$as_me:$LINENO: result: $CP" >&5 $as_echo "$CP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_RM+set}" = set; then $as_echo_n "(cached) " >&6 else case $RM in [\\/]* | ?:[\\/]*) ac_cv_path_RM="$RM" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi RM=$ac_cv_path_RM if test -n "$RM"; then { $as_echo "$as_me:$LINENO: result: $RM" >&5 $as_echo "$RM" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PERL+set}" = set; then $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:$LINENO: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_AR+set}" = set; then $as_echo_n "(cached) " >&6 else case $AR in [\\/]* | ?:[\\/]*) ac_cv_path_AR="$AR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi AR=$ac_cv_path_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Check if svnversion is available to get the rev number # Extract the first word of "svnversion", so it can be a program name with args. set dummy svnversion; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_SVNVERSION+set}" = set; then $as_echo_n "(cached) " >&6 else case $SVNVERSION in [\\/]* | ?:[\\/]*) ac_cv_path_SVNVERSION="$SVNVERSION" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SVNVERSION="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi SVNVERSION=$ac_cv_path_SVNVERSION if test -n "$SVNVERSION"; then { $as_echo "$as_me:$LINENO: result: $SVNVERSION" >&5 $as_echo "$SVNVERSION" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Put this early on, since gtk may rely on it. 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. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # 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 { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_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. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_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.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_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 # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&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' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_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 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_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 $as_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 { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_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 { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_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 { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" 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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" 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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=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 -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && 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 # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_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 nonexistent 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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_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 { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_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 nonexistent 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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_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 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_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 { $as_echo "$as_me:$LINENO: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5 $as_echo "$as_me: error: cannot use X directory names containing '" >&2;} { (exit 1); exit 1; }; };; #( *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/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 Xlib.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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # We can compile using X headers with no special include directory. ac_x_includes= else $as_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/Xlib.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="-lX11 $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 () { XrmInitialize () ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:$LINENO: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. 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 . . . . { $as_echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat >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 { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dnet_dnet_ntoa=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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. { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5 $as_echo_n "checking for gethostbyname... " >&6; } if test "${ac_cv_func_gethostbyname+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); /* 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 #endif int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_gethostbyname=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 $as_echo "$ac_cv_func_gethostbyname" >&6; } if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_nsl_gethostbyname=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_bsd_gethostbyname=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = x""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. { $as_echo "$as_me:$LINENO: checking for connect" >&5 $as_echo_n "checking for connect... " >&6; } if test "${ac_cv_func_connect+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); /* 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 #endif int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_connect=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 $as_echo "$ac_cv_func_connect" >&6; } if test $ac_cv_func_connect = no; then { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if test "${ac_cv_lib_socket_connect+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_socket_connect=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = x""yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. { $as_echo "$as_me:$LINENO: checking for remove" >&5 $as_echo_n "checking for remove... " >&6; } if test "${ac_cv_func_remove+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); /* 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 #endif int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_remove=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 $as_echo "$ac_cv_func_remove" >&6; } if test $ac_cv_func_remove = no; then { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if test "${ac_cv_lib_posix_remove+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_posix_remove=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. { $as_echo "$as_me:$LINENO: checking for shmat" >&5 $as_echo_n "checking for shmat... " >&6; } if test "${ac_cv_func_shmat+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); /* 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 #endif int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shmat=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 $as_echo "$ac_cv_func_shmat" >&6; } if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if test "${ac_cv_lib_ipc_shmat+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_ipc_shmat=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = x""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 { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_ICE_IceConnectionNumber=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi SOUNDDIR="${datadir}/crossfire-client/sounds" # Add some options to 'configure'. # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then enableval=$enable_debug; if eval "test x$enable_debug = xyes"; then DEBUGFLAG="-g" fi fi # Check whether --enable-ansi was given. if test "${enable_ansi+set}" = set; then enableval=$enable_ansi; else enable_ansi=$enableval fi # Check whether --enable-sound was given. if test "${enable_sound+set}" = set; then enableval=$enable_sound; sound=$enableval else sound=yes fi # These are because some of us use OSS sound, even with ALSA or ALSA9 libs # installed # Check whether --enable-alsa9 was given. if test "${enable_alsa9+set}" = set; then enableval=$enable_alsa9; alsa9=$enableval else alsa9=yes fi # Check whether --enable-alsa was given. if test "${enable_alsa+set}" = set; then enableval=$enable_alsa; alsa=$enableval else alsa=yes fi # Check whether --with-sound-dir was given. if test "${with_sound_dir+set}" = set; then withval=$with_sound_dir; SOUNDDIR="$withval" fi # The following two are really just a way to specify where the xpm information # resides if not with the normal X11 stuff (ie, in /usr/local and not /usr # /usr/X11) # Check whether --with-ldflags was given. if test "${with_ldflags+set}" = set; then withval=$with_ldflags; EXTRA_LIB="$withval" fi # Check whether --with-includes was given. if test "${with_includes+set}" = set; then withval=$with_includes; EXTRA_INC="$withval" fi # Check whether --with-loglevel was given. if test "${with_loglevel+set}" = set; then withval=$with_loglevel; MINLOGLEVEL="$withval" else MINLOGLEVEL=0 fi # Check whether --enable-gtkv2 was given. if test "${enable_gtkv2+set}" = set; then enableval=$enable_gtkv2; gtkv2=$enableval else gtkv2=yes fi # Check whether --enable-sdl was given. if test "${enable_sdl+set}" = set; then enableval=$enable_sdl; use_sdl=$enableval else use_sdl=yes fi # SDL_mixer support is experimental. Do not enable by default until it is # ready for general use. # # Check whether --enable-sdl_mixer was given. if test "${enable_sdl_mixer+set}" = set; then enableval=$enable_sdl_mixer; use_sdl_mixer=$enableval else use_sdl_mixer=no fi # Check whether --enable-dmalloc was given. if test "${enable_dmalloc+set}" = set; then enableval=$enable_dmalloc; use_dmalloc=$enableval else use_dmalloc=no fi # Check whether --enable-metaserver2 was given. if test "${enable_metaserver2+set}" = set; then enableval=$enable_metaserver2; metaserver2=$enableval else metaserver2=yes fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_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. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" 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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" 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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=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 -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && 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 # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >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 #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if test "${ac_cv_c_bigendian+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then # Check for potential -arch flags. It is not universal unless # there are some -arch flags. Note that *ppc* also matches # ppc64. This check is also rather less than ideal. case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #( *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;; esac else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # 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 ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; 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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_bigendian=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). 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 () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; 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 int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_bigendian=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then # Try to guess by grepping values from an object file. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; 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 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core 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. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_bigendian=no else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) cat >>confdefs.h <<\_ACEOF #define WORDS_BIGENDIAN 1 _ACEOF ;; #( no) ;; #( universal) cat >>confdefs.h <<\_ACEOF #define AC_APPLE_UNIVERSAL_BUILD 1 _ACEOF ;; #( *) { { $as_echo "$as_me:$LINENO: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&5 $as_echo "$as_me: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac networklibs="yes" case "$target" in alpha-dec-osf*) # If we are not using gcc, we want the ansi version of cc. if test -z "$GCC"; then # CFLAGS="$CFLAGS -std1 -warnprotos" # Not yet ready for warnprotos... CFLAGS="$CFLAGS -std1" fi ;; # SGI systems don't need -lnsl -lsocket mips*-sgi-irix*) networklibs="no" ;; # linux systems don't appear to need -lnsl *-linux-*) networklibs="no" ;; *-*-solaris2*) need_r_flag="yes" ;; *-*-mingw32*) win32="yes" # -mms-bitfields is needed for GTK+ in Windows. It is set # automatically by pkg-config, but it is also needed in common, so we # explicitely set it CFLAGS="$CFLAGS -mms-bitfields" WIN32_LIBS="-lwsock32 -lwinmm" ;; *) ;; esac # dnl # dnl Detect pthreads libraries # dnl # # pthreads is required by both metaservers. Only metaserver2 is optional, so # we cannot build any client if pthreads is not present. # # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # Default is to define HAVE_PTHREAD. PTHREAD_CC and PTHREAD_LIBS are set. # Both compile and link with these flags. # 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 ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ax_pthread_ok=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; esac if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) { $as_echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ax_pthread_config+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ax_pthread_config="yes" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then { $as_echo "$as_me:$LINENO: result: $ax_pthread_config" >&5 $as_echo "$ax_pthread_config" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { $as_echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. 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 () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ax_pthread_ok=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:$LINENO: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { $as_echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do 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 () { int attr=$attr; return attr; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then attr_name=$attr; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext done { $as_echo "$as_me:$LINENO: result: $attr_name" >&5 $as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF #define PTHREAD_CREATE_JOINABLE $attr_name _ACEOF fi { $as_echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { $as_echo "$as_me:$LINENO: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then for ac_prog in xlc_r cc_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PTHREAD_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_PTHREAD 1 _ACEOF : else ax_pthread_ok=no { { $as_echo "$as_me:$LINENO: error: POSIX threads not found. Cannot build any client." >&5 $as_echo "$as_me: error: POSIX threads not found. Cannot build any client." >&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 # Check to see if gtk-v2 client will build. # if eval "test x$gtkv2 = xyes" ; then # # Check for GTK+ 2 # # Check whether --enable-gtktest was given. if test "${enable_gtktest+set}" = set; then enableval=$enable_gtktest; else enable_gtktest=yes fi pkg_config_args=gtk+-2.0 for module in . do case "$module" in gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; esac done no_gtk="" # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test x$PKG_CONFIG != xno ; then if pkg-config --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." no_gtk=yes PKG_CONFIG=no fi else no_gtk=yes fi min_gtk_version=2.0.0 { $as_echo "$as_me:$LINENO: checking for GTK+ - version >= $min_gtk_version" >&5 $as_echo_n "checking for GTK+ - version >= $min_gtk_version... " >&6; } if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH" enable_gtktest=no fi if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then : else no_gtk=yes fi fi if test x"$no_gtk" = x ; then GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags` GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs` gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_gtktest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$GTK_LIBS $LIBS" rm -f conf.gtktest if test "$cross_compiling" = yes; then echo $ac_n "cross compiling; assumed OK... $ac_c" 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 int main () { int major, minor, micro; char *tmp_version; fclose (fopen ("conf.gtktest", "w")); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = g_strdup("$min_gtk_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_gtk_version"); exit(1); } if ((gtk_major_version != $gtk_config_major_version) || (gtk_minor_version != $gtk_config_minor_version) || (gtk_micro_version != $gtk_config_micro_version)) { printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, gtk_major_version, gtk_minor_version, gtk_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) no_gtk=yes fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gtk" = x ; then { $as_echo "$as_me:$LINENO: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5 $as_echo "yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6; } HAVE_GTK2=yes else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://pkgconfig.sourceforge.net" else if test -f conf.gtktest ; then : else echo "*** Could not run GTK+ test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" 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 () { return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK+ or finding the wrong" echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GTK+ is incorrectly installed." fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GTK_CFLAGS="" GTK_LIBS="" HAVE_GTK2=no fi rm -f conf.gtktest if eval "test x$HAVE_GTK2 = xyes" ; then # # Check for Libglade-2.0 # if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for LIBGLADE" >&5 $as_echo_n "checking for LIBGLADE... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LIBGLADE_CFLAGS"; then pkg_cv_LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libglade-2.0 >= 2.0.0\"") >&5 ($PKG_CONFIG --exists --print-errors "libglade-2.0 >= 2.0.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBGLADE_CFLAGS=`$PKG_CONFIG --cflags "libglade-2.0 >= 2.0.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LIBGLADE_LIBS"; then pkg_cv_LIBGLADE_LIBS="$LIBGLADE_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libglade-2.0 >= 2.0.0\"") >&5 ($PKG_CONFIG --exists --print-errors "libglade-2.0 >= 2.0.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBGLADE_LIBS=`$PKG_CONFIG --libs "libglade-2.0 >= 2.0.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBGLADE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libglade-2.0 >= 2.0.0"` else LIBGLADE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libglade-2.0 >= 2.0.0"` fi # Put the nasty error message in config.log where it belongs echo "$LIBGLADE_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } HAVE_LIBGLADE=no elif test $pkg_failed = untried; then HAVE_LIBGLADE=no else LIBGLADE_CFLAGS=$pkg_cv_LIBGLADE_CFLAGS LIBGLADE_LIBS=$pkg_cv_LIBGLADE_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } HAVE_LIBGLADE=yes fi if eval "test x$HAVE_LIBGLADE = xyes" ; then CF_SUBDIRS="$CF_SUBDIRS gtk-v2" { $as_echo "$as_me:$LINENO: GTK+ >= 2.0.0 & Libglade-2.0 found; will build gtk-v2 client" >&5 $as_echo "$as_me: GTK+ >= 2.0.0 & Libglade-2.0 found; will build gtk-v2 client" >&6;} else { $as_echo "$as_me:$LINENO: WARNING: Libglade-2.0 libraries not found; will not build gtk-v2 client" >&5 $as_echo "$as_me: WARNING: Libglade-2.0 libraries not found; will not build gtk-v2 client" >&2;} gtkv2="no" fi else { $as_echo "$as_me:$LINENO: WARNING: GTK+ libraries missing or < 2.0.0; will not build gtk-v2 client" >&5 $as_echo "$as_me: WARNING: GTK+ libraries missing or < 2.0.0; will not build gtk-v2 client" >&2;} gtkv2="no" fi else { $as_echo "$as_me:$LINENO: gtkv2 client disabled" >&5 $as_echo "$as_me: gtkv2 client disabled" >&6;} fi # # End of gtk-v2 client check { $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # sound.c needs sqrt. So does png (on some systems). Lua also needs it, so # put it near the top # { $as_echo "$as_me:$LINENO: checking for sqrt in -lm" >&5 $as_echo_n "checking for sqrt in -lm... " >&6; } if test "${ac_cv_lib_m_sqrt+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sqrt (); int main () { return sqrt (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_m_sqrt=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_m_sqrt=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5 $as_echo "$ac_cv_lib_m_sqrt" >&6; } if test "x$ac_cv_lib_m_sqrt" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { $as_echo "$as_me:$LINENO: checking for library containing pthread_create" >&5 $as_echo_n "checking for library containing pthread_create... " >&6; } if test "${ac_cv_search_pthread_create+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF for ac_lib in '' pthread, pthreadgc, pthreadgc1, pthreadgc2; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_pthread_create=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_pthread_create+set}" = set; then break fi done if test "${ac_cv_search_pthread_create+set}" = set; then : else ac_cv_search_pthread_create=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_pthread_create" >&5 $as_echo "$ac_cv_search_pthread_create" >&6; } ac_res=$ac_cv_search_pthread_create if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for LUA" >&5 $as_echo_n "checking for LUA... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LUA_CFLAGS"; then pkg_cv_LUA_CFLAGS="$LUA_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"lua >= 5.0.0\"") >&5 ($PKG_CONFIG --exists --print-errors "lua >= 5.0.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LUA_CFLAGS=`$PKG_CONFIG --cflags "lua >= 5.0.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LUA_LIBS"; then pkg_cv_LUA_LIBS="$LUA_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"lua >= 5.0.0\"") >&5 ($PKG_CONFIG --exists --print-errors "lua >= 5.0.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LUA_LIBS=`$PKG_CONFIG --libs "lua >= 5.0.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LUA_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "lua >= 5.0.0"` else LUA_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "lua >= 5.0.0"` fi # Put the nasty error message in config.log where it belongs echo "$LUA_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } lua_scripting=no elif test $pkg_failed = untried; then lua_scripting=no else LUA_CFLAGS=$pkg_cv_LUA_CFLAGS LUA_LIBS=$pkg_cv_LUA_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } lua_scripting=yes fi if eval "test x$lua_scripting = xyes" ; then LUA_LIBS=`$PKG_CONFIG --libs lua` fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for LUA" >&5 $as_echo_n "checking for LUA... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$LUA_CFLAGS"; then pkg_cv_LUA_CFLAGS="$LUA_CFLAGS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"lua >= 5.1.0\"") >&5 ($PKG_CONFIG --exists --print-errors "lua >= 5.1.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LUA_CFLAGS=`$PKG_CONFIG --cflags "lua >= 5.1.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$LUA_LIBS"; then pkg_cv_LUA_LIBS="$LUA_LIBS" else if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"lua >= 5.1.0\"") >&5 ($PKG_CONFIG --exists --print-errors "lua >= 5.1.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LUA_LIBS=`$PKG_CONFIG --libs "lua >= 5.1.0" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LUA_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "lua >= 5.1.0"` else LUA_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "lua >= 5.1.0"` fi # Put the nasty error message in config.log where it belongs echo "$LUA_PKG_ERRORS" >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } HAVE_LUA_5_1=no elif test $pkg_failed = untried; then HAVE_LUA_5_1=no else LUA_CFLAGS=$pkg_cv_LUA_CFLAGS LUA_LIBS=$pkg_cv_LUA_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } HAVE_LUA_5_1=yes fi if eval "test x$HAVE_LUA_5_1 = xyes" ; then cat >>confdefs.h <<\_ACEOF #define HAVE_LUA_5_1 1 _ACEOF fi CPPFLAGS="$CPPFLAGS $EXTRA_INC" LDFLAGS="$LDFLAGS $EXTRA_LIB" if eval "test x$need_r_flag = xyes"; then LDFLAGS="$LDFLAGS" fi if eval "test x$lua_scripting = xyes" ; then cat >>confdefs.h <<\_ACEOF #define HAVE_LUA 1 _ACEOF else lua_scripting="no" LUA_LIBS="" fi # Check for OpenGL { $as_echo "$as_me:$LINENO: checking for main in -lGL" >&5 $as_echo_n "checking for main in -lGL... " >&6; } if test "${ac_cv_lib_GL_main+set}" = set; then $as_echo_n "(cached) " >&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. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_GL_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GL_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_GL_main" >&5 $as_echo "$ac_cv_lib_GL_main" >&6; } if test "x$ac_cv_lib_GL_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBGL 1 _ACEOF LIBS="-lGL $LIBS" fi { $as_echo "$as_me:$LINENO: checking for main in -lGLU" >&5 $as_echo_n "checking for main in -lGLU... " >&6; } if test "${ac_cv_lib_GLU_main+set}" = set; then $as_echo_n "(cached) " >&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. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_GLU_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_GLU_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_GLU_main" >&5 $as_echo "$ac_cv_lib_GLU_main" >&6; } if test "x$ac_cv_lib_GLU_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBGLU 1 _ACEOF LIBS="-lGLU $LIBS" fi { $as_echo "$as_me:$LINENO: checking for main in -lopengl32" >&5 $as_echo_n "checking for main in -lopengl32... " >&6; } if test "${ac_cv_lib_opengl32_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lopengl32 $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_opengl32_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_opengl32_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_opengl32_main" >&5 $as_echo "$ac_cv_lib_opengl32_main" >&6; } if test "x$ac_cv_lib_opengl32_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBOPENGL32 1 _ACEOF LIBS="-lopengl32 $LIBS" fi { $as_echo "$as_me:$LINENO: checking for main in -lglu32" >&5 $as_echo_n "checking for main in -lglu32... " >&6; } if test "${ac_cv_lib_glu32_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lglu32 $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_glu32_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_glu32_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_glu32_main" >&5 $as_echo "$ac_cv_lib_glu32_main" >&6; } if test "x$ac_cv_lib_glu32_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBGLU32 1 _ACEOF LIBS="-lglu32 $LIBS" fi { $as_echo "$as_me:$LINENO: checking for main in -lglut" >&5 $as_echo_n "checking for main in -lglut... " >&6; } if test "${ac_cv_lib_glut_main+set}" = set; then $as_echo_n "(cached) " >&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. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_glut_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_glut_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_glut_main" >&5 $as_echo "$ac_cv_lib_glut_main" >&6; } if test "x$ac_cv_lib_glut_main" = x""yes; then opengl="yes"; cat >>confdefs.h <<\_ACEOF #define HAVE_OPENGL 1 _ACEOF else opengl="no" fi if eval "test x$opengl = xyes" ; then if eval "test x$win32 = xyes" ; then OPENGL_LIBS="-lopengl32 -lglu32 -lglut" else OPENGL_LIBS="-lGL -lGLU -lglut" fi fi # End of OpenGL checks # Checks for programs. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_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 nonexistent 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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_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 { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_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 nonexistent 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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_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 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if eval "test x$sound = xyes"; then if eval "test x$alsa = xyes"; then { $as_echo "$as_me:$LINENO: checking for main in -lasound" >&5 $as_echo_n "checking for main in -lasound... " >&6; } if test "${ac_cv_lib_asound_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lasound -lm $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_asound_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_asound_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_asound_main" >&5 $as_echo "$ac_cv_lib_asound_main" >&6; } if test "x$ac_cv_lib_asound_main" = x""yes; then alsa_sound=yes fi fi { $as_echo "$as_me:$LINENO: checking for alNewConfig in -laudio" >&5 $as_echo_n "checking for alNewConfig in -laudio... " >&6; } if test "${ac_cv_lib_audio_alNewConfig+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-laudio $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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char alNewConfig (); int main () { return alNewConfig (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_audio_alNewConfig=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_audio_alNewConfig=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_audio_alNewConfig" >&5 $as_echo "$ac_cv_lib_audio_alNewConfig" >&6; } if test "x$ac_cv_lib_audio_alNewConfig" = x""yes; then sgi_sound=yes fi if eval "test x$alsa9 = xyes"; then if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5 $as_echo_n "checking for alsa/asoundlib.h... " >&6; } if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5 $as_echo "$ac_cv_header_alsa_asoundlib_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking alsa/asoundlib.h usability" >&5 $as_echo_n "checking alsa/asoundlib.h usability... " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking alsa/asoundlib.h presence" >&5 $as_echo_n "checking alsa/asoundlib.h presence... " >&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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_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 { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: alsa/asoundlib.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5 $as_echo_n "checking for alsa/asoundlib.h... " >&6; } if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_alsa_asoundlib_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5 $as_echo "$ac_cv_header_alsa_asoundlib_h" >&6; } fi if test "x$ac_cv_header_alsa_asoundlib_h" = x""yes; then alsa9_sound=yes else alsa_sound=no fi fi if eval "test x$use_sdl_mixer = xyes"; then { $as_echo "$as_me:$LINENO: checking for Mix_OpenAudio in -lSDL_mixer" >&5 $as_echo_n "checking for Mix_OpenAudio in -lSDL_mixer... " >&6; } if test "${ac_cv_lib_SDL_mixer_Mix_OpenAudio+set}" = set; then $as_echo_n "(cached) " >&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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char Mix_OpenAudio (); int main () { return Mix_OpenAudio (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_mixer_Mix_OpenAudio=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_mixer_Mix_OpenAudio" >&5 $as_echo "$ac_cv_lib_SDL_mixer_Mix_OpenAudio" >&6; } if test "x$ac_cv_lib_SDL_mixer_Mix_OpenAudio" = x""yes; then sdl_sound=yes else sdl_sound=no fi fi if test "${ac_cv_header_sys_soundcard_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for sys/soundcard.h" >&5 $as_echo_n "checking for sys/soundcard.h... " >&6; } if test "${ac_cv_header_sys_soundcard_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_soundcard_h" >&5 $as_echo "$ac_cv_header_sys_soundcard_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking sys/soundcard.h usability" >&5 $as_echo_n "checking sys/soundcard.h usability... " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking sys/soundcard.h presence" >&5 $as_echo_n "checking sys/soundcard.h presence... " >&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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_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 { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/soundcard.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: sys/soundcard.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for sys/soundcard.h" >&5 $as_echo_n "checking for sys/soundcard.h... " >&6; } if test "${ac_cv_header_sys_soundcard_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_sys_soundcard_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_soundcard_h" >&5 $as_echo "$ac_cv_header_sys_soundcard_h" >&6; } fi if test "x$ac_cv_header_sys_soundcard_h" = x""yes; then oss_sound=yes else oss_sound=no fi if test "${ac_cv_header_sys_audioio_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for sys/audioio.h" >&5 $as_echo_n "checking for sys/audioio.h... " >&6; } if test "${ac_cv_header_sys_audioio_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_audioio_h" >&5 $as_echo "$ac_cv_header_sys_audioio_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking sys/audioio.h usability" >&5 $as_echo_n "checking sys/audioio.h usability... " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking sys/audioio.h presence" >&5 $as_echo_n "checking sys/audioio.h presence... " >&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 { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_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 { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: sys/audioio.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: sys/audioio.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for sys/audioio.h" >&5 $as_echo_n "checking for sys/audioio.h... " >&6; } if test "${ac_cv_header_sys_audioio_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_sys_audioio_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_audioio_h" >&5 $as_echo "$ac_cv_header_sys_audioio_h" >&6; } fi if test "x$ac_cv_header_sys_audioio_h" = x""yes; then sun_sound=yes else sun_sound=no fi # alsa9 sound support is now independent of other sound systems, so don't # preclude compilation of others just because we find it. if eval "test x$alsa9_sound = xyes"; then { $as_echo "$as_me:$LINENO: Using ALSA sound system (0.9.x)" >&5 $as_echo "$as_me: Using ALSA sound system (0.9.x)" >&6;} CFLAGS="$CFLAGS -DALSA9_SOUND" ALSA9_TARGET='cfsndserv_alsa9$(EXEEXT)' ALSA9_LIBS="-lasound -lm" SOUND_SRC="sound-src"; # It appears that alsa9 sound while having the same headers, is not # backwards compatible, so if you have alsa 0.9 or later, you can't # compile the old old sound daemon, so if we find alsa9, disable old # alsa. alsa_sound="no"; fi if eval "test x$sdl_sound = xyes"; then { $as_echo "$as_me:$LINENO: Using SDL_mixer sound system" >&5 $as_echo "$as_me: Using SDL_mixer sound system" >&6;} SDL_CFLAGS=`sdl-config --cflags` CFLAGS="${CFLAGS} ${SDL_CFLAGS} -DSDL_SOUND" SND_LIBS="-lSDL_mixer" SOUND_SRC="sound-src"; else if eval "test x$alsa_sound = xyes"; then { $as_echo "$as_me:$LINENO: Using ALSA sound system" >&5 $as_echo "$as_me: Using ALSA sound system" >&6;} CFLAGS="$CFLAGS -DALSA_SOUND" SND_LIBS="-lasound -lm" SOUND_SRC="sound-src"; else if eval "test x$sgi_sound = xyes"; then { $as_echo "$as_me:$LINENO: Using SGI sound system" >&5 $as_echo "$as_me: Using SGI sound system" >&6;} CFLAGS="$CFLAGS -DSGI_SOUND" SND_LIBS="-laudio" SOUND_SRC="sound-src"; else if eval "test x$oss_sound = xyes"; then { $as_echo "$as_me:$LINENO: Using OSS sound system" >&5 $as_echo "$as_me: Using OSS sound system" >&6;} CFLAGS="$CFLAGS -DOSS_SOUND" SND_LIBS="-lm" { $as_echo "$as_me:$LINENO: checking for main in -lossaudio" >&5 $as_echo_n "checking for main in -lossaudio... " >&6; } if test "${ac_cv_lib_ossaudio_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lossaudio $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_ossaudio_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ossaudio_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ossaudio_main" >&5 $as_echo "$ac_cv_lib_ossaudio_main" >&6; } if test "x$ac_cv_lib_ossaudio_main" = x""yes; then SND_LIBS="$LIBS -lossaudio" fi SOUND_SRC="sound-src"; else if eval "test x$sun_sound = xyes"; then { $as_echo "$as_me:$LINENO: Using solaris sound system" >&5 $as_echo "$as_me: Using solaris sound system" >&6;} CFLAGS="$CFLAGS -DSUN_SOUND" SND_LIBS="-lm" SOUND_SRC="sound-src"; else { $as_echo "$as_me:$LINENO: WARNING: No suitable sound system found." >&5 $as_echo "$as_me: WARNING: No suitable sound system found." >&2;} sound="no" fi fi fi fi fi fi # Basically, only want to put sound-src once in the subdirs listing. # if eval "test x$SOUND_SRC != x"; then CF_SUBDIRS="$CF_SUBDIRS $SOUND_SRC"; fi # Check for SDL 1.1.3 and sdl_image. Note SDL_image does not ship with an # sdl-image-config, so I'll just assume it is in the same dir as SDL. if eval "test x$use_sdl = xyes"; then # Check whether --with-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then withval=$with_sdl_prefix; sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest was given. if test "${enable_sdltest+set}" = set; then enableval=$enable_sdltest; else enable_sdltest=yes fi if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # Extract the first word of "sdl-config", so it can be a program name with args. set dummy sdl-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_SDL_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $SDL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" ;; esac fi SDL_CONFIG=$ac_cv_path_SDL_CONFIG if test -n "$SDL_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $SDL_CONFIG" >&5 $as_echo "$SDL_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi min_sdl_version=1.1.3 { $as_echo "$as_me:$LINENO: checking for SDL - version >= $min_sdl_version" >&5 $as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then echo $ac_n "cross compiling; assumed OK... $ac_c" 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 "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) no_sdl=yes fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main () { return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" : fi rm -f conf.sdltest if eval "test x$no_sdl = x"; then { $as_echo "$as_me:$LINENO: checking for IMG_LoadPNG_RW in -lSDL_image" >&5 $as_echo_n "checking for IMG_LoadPNG_RW in -lSDL_image... " >&6; } if test "${ac_cv_lib_SDL_image_IMG_LoadPNG_RW+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL_image $SDL_CFLAGS $SDL_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 GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IMG_LoadPNG_RW (); int main () { return IMG_LoadPNG_RW (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_SDL_image_IMG_LoadPNG_RW=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_SDL_image_IMG_LoadPNG_RW=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_image_IMG_LoadPNG_RW" >&5 $as_echo "$ac_cv_lib_SDL_image_IMG_LoadPNG_RW" >&6; } if test "x$ac_cv_lib_SDL_image_IMG_LoadPNG_RW" = x""yes; then have_sdlimage="yes" else have_sdlimage="no" fi if eval "test x$have_sdlimage = xyes"; then { $as_echo "$as_me:$LINENO: sdl image detected!" >&5 $as_echo "$as_me: sdl image detected!" >&6;} SDL_LIBS="$SDL_LIBS -lSDL_image" else no_sdl="yes" fi fi if eval "test x$no_sdl = x"; then cat >>confdefs.h <<\_ACEOF #define HAVE_SDL 1 _ACEOF else use_sdl="no" fi fi # The following hacks for modifying CFLAGS were borrowed from the GIMP. if test -n "$DEBUGFLAG"; then CFLAGS="$DEBUGFLAG $CFLAGS" fi if eval "test x$GCC = xyes"; then if echo "$CFLAGS" | grep "\-Wall" > /dev/null 2> /dev/null; then CFLAGS="$CFLAGS" else CFLAGS="$CFLAGS -Wall" fi if eval "test x$enable_ansi = xyes"; then if echo "$CFLAGS" | grep "\-ansi" > /dev/null 2> /dev/null; then CFLAGS="$CFLAGS" else CFLAGS="$CFLAGS -ansi" fi if echo "$CFLAGS" | grep "\-pedantic" > /dev/null 2> /dev/null; then CFLAGS="$CFLAGS" else CFLAGS="$CFLAGS -pedantic" fi fi fi # We need to check for socket/nsl here - some versions of the windowing # systems need these to properly link with X (I thought AC_PATH_XTRA should # take care of this, but apparently is does not). If it is not here, the # check for xpm fails, and configure quits. if eval "test x$networklibs = xyes"; then { $as_echo "$as_me:$LINENO: checking for main in -lnsl" >&5 $as_echo_n "checking for main in -lnsl... " >&6; } if test "${ac_cv_lib_nsl_main+set}" = set; then $as_echo_n "(cached) " >&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. */ int main () { return main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_nsl_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_main" >&5 $as_echo "$ac_cv_lib_nsl_main" >&6; } if test "x$ac_cv_lib_nsl_main" = x""yes; then LIBS="$LIBS -lnsl" fi { $as_echo "$as_me:$LINENO: checking for main in -lsocket" >&5 $as_echo_n "checking for main in -lsocket... " >&6; } if test "${ac_cv_lib_socket_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_socket_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_main" >&5 $as_echo "$ac_cv_lib_socket_main" >&6; } if test "x$ac_cv_lib_socket_main" = x""yes; then LIBS="$LIBS -lsocket" fi fi # Save and modify CPPFLAGS and LIBS (to include X and GTK paths temporarily). gcfc_save_CPPFLAGS="$CPPFLAGS" gcfc_save_LIBS="$LIBS" CPPFLAGS="$GTK_CFLAGS $CPPFLAGS $X_CFLAGS $EXTRA_INC" LIBS="$LIBS $GTK_LIBS $X_LIBS" # Put this here so we get the gdk libs # AC_CHECK_LIB(gdk_imlib, main,GTK_LIBS="$GTK_LIBS -lgdk_imlib") # Need to check for Xext while we still have X_LIBS set. { $as_echo "$as_me:$LINENO: checking for main in -lXext" >&5 $as_echo_n "checking for main in -lXext... " >&6; } if test "${ac_cv_lib_Xext_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXext $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_Xext_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xext_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_main" >&5 $as_echo "$ac_cv_lib_Xext_main" >&6; } if test "x$ac_cv_lib_Xext_main" = x""yes; then X_LIBS="$X_LIBS -lXext" fi # AC_CHECK_LIB(Imlib, main, X_LIBS="$X_LIBS -lImlib") # Restore previous CPPFLAGS and LIBS. CPPFLAGS="$gcfc_save_CPPFLAGS" LIBS="$gcfc_save_LIBS" # Check whether --with-libcurl was given. if test "${with_libcurl+set}" = set; then withval=$with_libcurl; _libcurl_with=$withval else _libcurl_with=yes fi if test "$_libcurl_with" != "no" ; then for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[1]+256*A[2]+A[3]; print X;}'" _libcurl_try_link=yes if test -d "$_libcurl_with" ; then LIBCURL_CPPFLAGS="-I$withval/include" _libcurl_ldflags="-L$withval/lib" # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path__libcurl_config+set}" = set; then $as_echo_n "(cached) " >&6 else case $_libcurl_config in [\\/]* | ?:[\\/]*) ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in "$withval/bin" do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path__libcurl_config" && ac_cv_path__libcurl_config=""$withval/bin"" ;; esac fi _libcurl_config=$ac_cv_path__libcurl_config if test -n "$_libcurl_config"; then { $as_echo "$as_me:$LINENO: result: $_libcurl_config" >&5 $as_echo "$_libcurl_config" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path__libcurl_config+set}" = set; then $as_echo_n "(cached) " >&6 else case $_libcurl_config in [\\/]* | ?:[\\/]*) ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi _libcurl_config=$ac_cv_path__libcurl_config if test -n "$_libcurl_config"; then { $as_echo "$as_me:$LINENO: result: $_libcurl_config" >&5 $as_echo "$_libcurl_config" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test x$_libcurl_config != "x" ; then { $as_echo "$as_me:$LINENO: checking for the version of libcurl" >&5 $as_echo_n "checking for the version of libcurl... " >&6; } if test "${libcurl_cv_lib_curl_version+set}" = set; then $as_echo_n "(cached) " >&6 else libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $2}'` fi { $as_echo "$as_me:$LINENO: result: $libcurl_cv_lib_curl_version" >&5 $as_echo "$libcurl_cv_lib_curl_version" >&6; } _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` _libcurl_wanted=`echo 0 | $_libcurl_version_parse` if test $_libcurl_wanted -gt 0 ; then { $as_echo "$as_me:$LINENO: checking for libcurl >= version " >&5 $as_echo_n "checking for libcurl >= version ... " >&6; } if test "${libcurl_cv_lib_version_ok+set}" = set; then $as_echo_n "(cached) " >&6 else if test $_libcurl_version -ge $_libcurl_wanted ; then libcurl_cv_lib_version_ok=yes else libcurl_cv_lib_version_ok=no fi fi { $as_echo "$as_me:$LINENO: result: $libcurl_cv_lib_version_ok" >&5 $as_echo "$libcurl_cv_lib_version_ok" >&6; } fi if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then if test x"$LIBCURL_CPPFLAGS" = "x" ; then LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` fi if test x"$LIBCURL" = "x" ; then LIBCURL=`$_libcurl_config --libs` # This is so silly, but Apple actually has a bug in their # curl-config script. Fixed in Tiger, but there are still # lots of Panther installs around. case "${host}" in powerpc-apple-darwin7*) LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` ;; esac fi # All curl-config scripts support --feature _libcurl_features=`$_libcurl_config --feature` # Is it modern enough to have --protocols? (7.12.4) if test $_libcurl_version -ge 461828 ; then _libcurl_protocols=`$_libcurl_config --protocols` fi else _libcurl_try_link=no fi unset _libcurl_wanted fi if test $_libcurl_try_link = yes ; then # we didn't find curl-config, so let's see if the user-supplied # link line (or failing that, "-lcurl") is enough. LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} { $as_echo "$as_me:$LINENO: checking whether libcurl is usable" >&5 $as_echo_n "checking whether libcurl is usable... " >&6; } if test "${libcurl_cv_lib_curl_usable+set}" = set; then $as_echo_n "(cached) " >&6 else _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBCURL $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 () { /* Try and use a few common options to force a failure if we are missing symbols or can't link. */ int x; curl_easy_setopt(NULL,CURLOPT_URL,NULL); x=CURL_ERROR_SIZE; x=CURLOPT_WRITEFUNCTION; x=CURLOPT_FILE; x=CURLOPT_ERRORBUFFER; x=CURLOPT_STDERR; x=CURLOPT_VERBOSE; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then libcurl_cv_lib_curl_usable=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 libcurl_cv_lib_curl_usable=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs fi { $as_echo "$as_me:$LINENO: result: $libcurl_cv_lib_curl_usable" >&5 $as_echo "$libcurl_cv_lib_curl_usable" >&6; } if test $libcurl_cv_lib_curl_usable = yes ; then # Does curl_free() exist in this version of libcurl? # If not, fake it with free() _libcurl_save_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" _libcurl_save_libs=$LIBS LIBS="$LIBS $LIBCURL" { $as_echo "$as_me:$LINENO: checking for curl_free" >&5 $as_echo_n "checking for curl_free... " >&6; } if test "${ac_cv_func_curl_free+set}" = set; then $as_echo_n "(cached) " >&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 curl_free to an innocuous variant, in case declares curl_free. For example, HP-UX 11i declares gettimeofday. */ #define curl_free innocuous_curl_free /* System header to define __stub macros and hopefully few prototypes, which can conflict with char curl_free (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef curl_free /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char curl_free (); /* 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_curl_free || defined __stub___curl_free choke me #endif int main () { return curl_free (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_curl_free=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_curl_free=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_curl_free" >&5 $as_echo "$ac_cv_func_curl_free" >&6; } if test "x$ac_cv_func_curl_free" = x""yes; then : else cat >>confdefs.h <<\_ACEOF #define curl_free free _ACEOF fi CPPFLAGS=$_libcurl_save_cppflags LIBS=$_libcurl_save_libs unset _libcurl_save_cppflags unset _libcurl_save_libs cat >>confdefs.h <<\_ACEOF #define HAVE_LIBCURL 1 _ACEOF for _libcurl_feature in $_libcurl_features ; do cat >>confdefs.h <<_ACEOF #define `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_cpp` 1 _ACEOF eval `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_sh`=yes done if test "x$_libcurl_protocols" = "x" ; then # We don't have --protocols, so just assume that all # protocols are available _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT" if test x$libcurl_feature_SSL = xyes ; then _libcurl_protocols="$_libcurl_protocols HTTPS" # FTPS wasn't standards-compliant until version # 7.11.0 if test $_libcurl_version -ge 461568; then _libcurl_protocols="$_libcurl_protocols FTPS" fi fi fi for _libcurl_protocol in $_libcurl_protocols ; do cat >>confdefs.h <<_ACEOF #define `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_cpp` 1 _ACEOF eval `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_sh`=yes done else unset LIBCURL unset LIBCURL_CPPFLAGS fi fi unset _libcurl_try_link unset _libcurl_version_parse unset _libcurl_config unset _libcurl_feature unset _libcurl_features unset _libcurl_protocol unset _libcurl_protocols unset _libcurl_version unset _libcurl_ldflags fi if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then # This is the IF-NO path : else # This is the IF-YES path : fi unset _libcurl_with LIBS="$LIBS $LIBCURL" CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" # png on some systems need the zlib, so check for it { $as_echo "$as_me:$LINENO: checking for main in -lz" >&5 $as_echo_n "checking for main in -lz... " >&6; } if test "${ac_cv_lib_z_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_z_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_z_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_z_main" >&5 $as_echo "$ac_cv_lib_z_main" >&6; } if test "x$ac_cv_lib_z_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBS="-lz $LIBS" fi { $as_echo "$as_me:$LINENO: checking for main in -lpng" >&5 $as_echo_n "checking for main in -lpng... " >&6; } if test "${ac_cv_lib_png_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpng $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_png_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_png_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_png_main" >&5 $as_echo "$ac_cv_lib_png_main" >&6; } if test "x$ac_cv_lib_png_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBPNG 1 _ACEOF LIBS="-lpng $LIBS" else { { $as_echo "$as_me:$LINENO: error: You must have the png library installed to compile the client" >&5 $as_echo "$as_me: error: You must have the png library installed to compile the client" >&2;} { (exit 1); exit 1; }; } fi # Checks for header files. { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >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 #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi for ac_header in curl/curl.h fcntl.h pthread.h string.h sys/ioctl.h sys/select.h sys/time.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&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 <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_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 { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Metaserver support is pretty critical to the client, so fail unless the # user explicity tells us to compile it without metaserver2 support. if eval "test x$ac_cv_header_curl_curl_h = xno" ; then if eval "test x$metaserver2 = xyes"; then { { $as_echo "$as_me:$LINENO: error: curl/curl.h header not found, but metaserver2 support is enabled. Install header file or use --disable-metaserver2" >&5 $as_echo "$as_me: error: curl/curl.h header not found, but metaserver2 support is enabled. Install header file or use --disable-metaserver2" >&2;} { (exit 1); exit 1; }; }; fi fi # Used to control default behavior when client starts up - even if user has # necessary files, if they use --disable-metaserver2, they won't try to get # data from those servers. # if eval "test x$metaserver2 = xyes"; then cat >>confdefs.h <<_ACEOF #define METASERVER2 1 _ACEOF else cat >>confdefs.h <<_ACEOF #define METASERVER2 0 _ACEOF fi if eval "test x$use_dmalloc = xyes"; then { $as_echo "$as_me:$LINENO: checking for main in -ldmalloc" >&5 $as_echo_n "checking for main in -ldmalloc... " >&6; } if test "${ac_cv_lib_dmalloc_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldmalloc $LIBS" 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 main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dmalloc_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dmalloc_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dmalloc_main" >&5 $as_echo "$ac_cv_lib_dmalloc_main" >&6; } if test "x$ac_cv_lib_dmalloc_main" = x""yes; then DMALLOC_LIB="-ldmalloc" fi for ac_header in dmalloc.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&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 <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&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 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_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 { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done fi # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then $as_echo_n "(cached) " >&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 () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const /**/ _ACEOF fi { $as_echo "$as_me:$LINENO: checking for size_t" >&5 $as_echo_n "checking for size_t... " >&6; } if test "${ac_cv_type_size_t+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_type_size_t=no 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 int main () { if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then 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 int main () { if (sizeof ((size_t))) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_size_t=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 $as_echo "$ac_cv_type_size_t" >&6; } if test "x$ac_cv_type_size_t" = x""yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if test "${ac_cv_header_time+set}" = set; then $as_echo_n "(cached) " >&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 int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_time=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF #define TIME_WITH_SYS_TIME 1 _ACEOF fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:$LINENO: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if test "${ac_cv_sizeof_long+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; '') if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } else ac_cv_sizeof_long=0 fi ;; esac 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 static long int longval () { return (long int) (sizeof (long)); } static unsigned long int ulongval () { return (long int) (sizeof (long)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (long))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (long)))) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (long)))) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_long=`cat conftest.val` else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } else ac_cv_sizeof_long=0 fi fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:$LINENO: checking size of long long" >&5 $as_echo_n "checking size of long long... " >&6; } if test "${ac_cv_sizeof_long_long+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long long))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long long))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` 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 int main () { static int test_array [1 - 2 * !(((long int) (sizeof (long long))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_long=$ac_lo;; '') if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (long long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } else ac_cv_sizeof_long_long=0 fi ;; esac 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 static long int longval () { return (long int) (sizeof (long long)); } static unsigned long int ulongval () { return (long int) (sizeof (long long)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (long long))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (long long)))) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (long long)))) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_long_long=`cat conftest.val` else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long long) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (long long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } else ac_cv_sizeof_long_long=0 fi fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { $as_echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 $as_echo "$ac_cv_sizeof_long_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF # Checks for library functions. if test $ac_cv_c_compiler_gnu = yes; then { $as_echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } if test "${ac_cv_prog_gcc_traditional+set}" = set; then $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi for ac_func in vprintf do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&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 $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* 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_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF { $as_echo "$as_me:$LINENO: checking for _doprnt" >&5 $as_echo_n "checking for _doprnt... " >&6; } if test "${ac_cv_func__doprnt+set}" = set; then $as_echo_n "(cached) " >&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 _doprnt to an innocuous variant, in case declares _doprnt. For example, HP-UX 11i declares gettimeofday. */ #define _doprnt innocuous__doprnt /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _doprnt (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef _doprnt /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char _doprnt (); /* 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__doprnt || defined __stub____doprnt choke me #endif int main () { return _doprnt (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func__doprnt=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func__doprnt=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 $as_echo "$ac_cv_func__doprnt" >&6; } if test "x$ac_cv_func__doprnt" = x""yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_DOPRNT 1 _ACEOF fi fi done for ac_func in getaddrinfo mkdir socket strcspn sysconf do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&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 $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* 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_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Run evals on the original variable names so that they get expanded to the # actual path - otherwise, the substitution below will contain the unexpanded # variables that don't resolve. test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ndatadir=`eval echo ${datadir}` ndatadir=`eval echo ${ndatadir}/crossfire-client` # Datadir should be working directory in Windows, as there is no set # installation directory (choosable at installation time) if eval "test x$win32 = xyes" ; then ndatadir="." fi # Do this twice to cover variables within variables. nbindir=`eval echo ${bindir}` nbindir=`eval echo ${nbindir}` cat >>confdefs.h <<_ACEOF #define CF_DATADIR "${ndatadir}" _ACEOF cat >>confdefs.h <<_ACEOF #define BINDIR "${nbindir}" _ACEOF cat >>confdefs.h <<_ACEOF #define MINLOGLEVEL ${MINLOGLEVEL} _ACEOF # Make all Makefiles, even if CF_SUBDIRS are not set for that directory. # since CF_SUBDIRS won't be set in the top level Makefile, we don't descend # into these subdirs. ac_config_files="$ac_config_files Makefile common/Makefile sound-src/Makefile gtk-v2/Makefile pixmaps/Makefile gtk-v2/glade/Makefile gtk-v2/src/Makefile gtk-v2/themes/Makefile help/Makefile utils/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, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_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 { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_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__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_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 "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # 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 after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, 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 # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (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 sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by crossfire-client $as_me 1.70.0, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ crossfire-client config.status 1.70.0 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_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" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "common/config.h") CONFIG_HEADERS="$CONFIG_HEADERS common/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "common/Makefile") CONFIG_FILES="$CONFIG_FILES common/Makefile" ;; "sound-src/Makefile") CONFIG_FILES="$CONFIG_FILES sound-src/Makefile" ;; "gtk-v2/Makefile") CONFIG_FILES="$CONFIG_FILES gtk-v2/Makefile" ;; "pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;; "gtk-v2/glade/Makefile") CONFIG_FILES="$CONFIG_FILES gtk-v2/glade/Makefile" ;; "gtk-v2/src/Makefile") CONFIG_FILES="$CONFIG_FILES gtk-v2/src/Makefile" ;; "gtk-v2/themes/Makefile") CONFIG_FILES="$CONFIG_FILES gtk-v2/themes/Makefile" ;; "help/Makefile") CONFIG_FILES="$CONFIG_FILES help/Makefile" ;; "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_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 against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # 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 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } 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"" >`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || 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. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # 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 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { $as_echo "$as_me:$LINENO: " >&5 $as_echo "$as_me: " >&6;} { $as_echo "$as_me:$LINENO: Configuration summary...." >&5 $as_echo "$as_me: Configuration summary...." >&6;} { $as_echo "$as_me:$LINENO: " >&5 $as_echo "$as_me: " >&6;} { $as_echo "$as_me:$LINENO: Paths" >&5 $as_echo "$as_me: Paths" >&6;} { $as_echo "$as_me:$LINENO: prefix default value ${prefix}" >&5 $as_echo "$as_me: prefix default value ${prefix}" >&6;} { $as_echo "$as_me:$LINENO: exec_prefix default value ${exec_prefix}" >&5 $as_echo "$as_me: exec_prefix default value ${exec_prefix}" >&6;} { $as_echo "$as_me:$LINENO: Will put executables in $nbindir" >&5 $as_echo "$as_me: Will put executables in $nbindir" >&6;} { $as_echo "$as_me:$LINENO: Will put config in $sysconfdir" >&5 $as_echo "$as_me: Will put config in $sysconfdir" >&6;} { $as_echo "$as_me:$LINENO: Will put data in $ndatadir" >&5 $as_echo "$as_me: Will put data in $ndatadir" >&6;} { $as_echo "$as_me:$LINENO: " >&5 $as_echo "$as_me: " >&6;} { $as_echo "$as_me:$LINENO: Build options" >&5 $as_echo "$as_me: Build options" >&6;} { $as_echo "$as_me:$LINENO: Will build GTK2 client? $gtkv2" >&5 $as_echo "$as_me: Will build GTK2 client? $gtkv2" >&6;} { $as_echo "$as_me:$LINENO: With OpenGL renderer? $opengl" >&5 $as_echo "$as_me: With OpenGL renderer? $opengl" >&6;} { $as_echo "$as_me:$LINENO: With SDL renderer? $use_sdl" >&5 $as_echo "$as_me: With SDL renderer? $use_sdl" >&6;} sound_system="" if eval "test x$sound = xyes"; then if eval "test x$sdl_sound = xyes"; then sound_system="$sound_system (SDL_mixer)" fi if eval "test x$alsa9_sound = xyes"; then sound_system="$sound_system (Alsa 0.9.x)" fi if eval "test x$alsa_sound = xyes"; then sound_system="$sound_system (Alsa)" fi if eval "test x$sgi_sound = xyes"; then sound_system="$sound_system (SGI)" fi if eval "test x$oss_sound = xyes"; then sound_system="$sound_system (OSS)" fi if eval "test x$sun_sound = xyes"; then sound_system="$sound_system (Solaris)" fi fi { $as_echo "$as_me:$LINENO: Will build sound server? $sound $sound_system" >&5 $as_echo "$as_me: Will build sound server? $sound $sound_system" >&6;} { $as_echo "$as_me:$LINENO: " >&5 $as_echo "$as_me: " >&6;} { $as_echo "$as_me:$LINENO: Scripting options" >&5 $as_echo "$as_me: Scripting options" >&6;} { $as_echo "$as_me:$LINENO: Will include lua interface? $lua_scripting" >&5 $as_echo "$as_me: Will include lua interface? $lua_scripting" >&6;} crossfire-client-1.70.0/TODO0000644000014500000120000000312611731277014012453 00000000000000Things to do in no particular order: gnome client: Make it work. IT compiles, but there is something in the map code (or someplace else) causing stack overflows. What really needs to get done is for it to share much more of the code with the gtk client. x11: Modify to support variable sized images. This probably isn't too much work - just some modifications in the gen_draw_face/display_mapcell_pixmap functions to only copy to relevant portion. create_status_icons needs to be redone to load png files instead of Xpm's (since we no longer check for Xpm. Have containers present number of objects/number of different objects in name. Add a damfactor display to the client (this would be weapon speed * damage of the weapon) Allow the seperation character for keybinding to be set to things other than semicolon - changes for this would really be to fix up the strtok in extended_command (common/player.c) to pass in the appropriate string, and some option in the config pane or someplace to change it - note that if it is changed by the player, then that function would have to go through all the keybindings updating the current set of complex keybindings for the new characters. MSW 2003-02-19 Have inventory/look/container display mechanism which only show icons and numbers, and not full names - in a sense, a much condensed view of things. Add a seperate container view (when one is open) in addition to the ground one, so it is easier to move things here and there (perhaps support drag and drop operations for this) Add a 'paper doll' display which shows what is equipped and where. crossfire-client-1.70.0/ChangeLog0000644000014500000120000104315511731277142013546 00000000000000"$Id: ChangeLog 17587 2012-03-18 06:20:34Z mwedel $" ============================================================================== Changes for 1.70.0 ============================================================================== Apply patch #3428070: Autoreconf Warnings, by Steven Johnson. Nicolas Weeger 2011-10-27 Fix metaserver not correctly displaying everything. Maurice Massar 2011-09-10 Add timestamping option. Nicolas Weeger 2011-06-06 Add account password change logic and dialogs. Nicolas Weeger 2011-05-23 ============================================================================== Changes for 1.60.0 ============================================================================== Minor bugfixes/improvements: common/cconfig.h: Turn off metaserver1 support - will remove code in future, but will see what effect this has. gtk-v2/src/create_char.c: Remove call setting starting map combox box active - this is done elsewhere, and that call generates an error since the widget isn't realized yet, so isn't doing anything in any case. gtk-v2/src/info.c: Handle client generated messages at startup - removes a bunch of errors going to console about invalid type/subtype. gtk-v2/src/gtk2proto.h: Add missing prototypes. gtk-v2/src/main.h: Change default layout to be gtk-v1 MSW 2011-01-23 Fix theme handling so it is properly loaded/processed at client start up. Remove the theme lookup from the init_...() routines and load the theme after all the initialization routines are done. MSW 2011-01-11 common/client.h: Update race & class structures to hold choice information from server. common/commands.c: Add handling of choice information from server. gtk-v2/src/create_char.c: Add handling of choice option lists. gtk-v2/glade/dialogs.glade - add labels and combo boxes for the choice options. MSW 2010-11-14 Fix client crash on empty magic map. This fixes bug #3098933: invoking magic mapping crashes client. Fix building client with build directory separate from source directory. Arvid Norlander 2010-10-24 Commit client side support for new in client character creation. common/client.h: Add various new globals for map, race, and class info. common/commands.c: Move Race_Class_Info structure to header file, add new global declarations. Add handling of requesting and storing starting map information from server. Handle newcharinfo protocol command. common/external.h: Add new external calls. common/init.c: Add calls to free race and class data. common/proto.h: Add new prototype gtk-v2/glade/dialogs.glade: Update dialogs.glade file with new window for creating character. gtk-v2/src/Makefile.am: Add create_char.c file gtk-v2/src/account.c: Add calls for popups and to show the choose character window. Add handling for new character creation method. gtk-v2/src/create_char.c: New file that handles character creation logic. gtk-v2/src/gtk2proto.h: Update with new functions gtk-v2/src/main.c: update loginmethod to 2, add call to init_create_character_window() gtk-v2/src/main.h: Add global reference to account password gtk-v2/src/stats.c: Make some widgets static to the file. MSW 2010-10-20 Commit basic, functional music support via cfsndserv when the client is built with SDL_mixer sound support. Music support is not presently planned for any of the legacy sound systems: Alsa, Alsa9 (cfsndserv_alsa9), OSS, SGI, and Sun. Neither cfsndserv nor cfsndserv_alsa9 yet support playing sound effects. NOTE: `/configure --enable-sdl_mixer` is required to enable building with the SDL_mixer library since the present default is to not use it (but the default will change shortly as music is now functional, and since all other sound support is still broken for all of the sound systems (including SDL_mixer). NOTE: cfsndserv looks for .ogg or .wav files based on whether the OS is WIN32 or not. The sound files are expected to be in either ${HOME}/sound.cache/ or CF_DATADIR/sounds/. No provision exists yet for sound file installation. Kevin Bulgrien 2010-10-13 Fix some bugs found by static analysis (dead assignment, NULL dereference) using clang-analyzer. Arvid Norlander 2010-10-10 Fix a number of serious compiler warnings (passing pointer to integer of different size, discarding const qualifiers). Arvid Norlander 2010-10-09 gtk-v2/src/sound.c: Converted the Sound2Cmd() and play_sound() functions to correspond with the sound2 protocol. Neither the client nor the server support the legacy sound protocol. Sound has been broken in this client ever since the legacy protocol was removed. This change is made in preparation for a cfsndserv re-write that is necessary to support sounds. Added a MusicCmd() function to accept music commands from the server and to pass them on to cfsndserv. Kevin Bulgrien 2010-10-06 Fix out of tree build. common/Makefile.am called some scripts that were not properly handling the case of source directory and build directory differing. Arvid Norlander 2010-10-06 Add 'containers' pickup menu item. Nicolas Weeger 2010-10-02 configure.ac - Back out the 2.18.0 dependency by converting the dependent functions to code that is compatible with older GTK. This was positively tested on both 2.20 and 2.14. On both systems the spell dialog functions as intended... resizing the description column and reflowing the text into it. Kevin Bulgrien 2010-09-14 configure.ac: - Use the gtk-2.0.m4 macro to test for a usable version of GTK+ 2.0. mmetson found that build fails on Fedora Core 11. It turns out the spells dialog uses two functions first provided by GTK+ 2.18.0 in the code that wraps the description and auto-grows/shrinks the column when the player resizes the dialog. It is known that one of the calls is pretty easy to rewrite for build with pre-2.18.0, but converting the other call has not been reviewed. Until further notice, GTK-V2 now requires GTK+ 2.18.0 or newer. Kevin Bulgrien 2010-09-13 gtk-v2/src/spells.c: The spells dialog description text now dynamically alters line wrap width and table row heights when the dialog is re-sized by the user. Kevin Bulgrien 2010-08-25 gtk-v2/src/spells.c: 1) The spells dialog now defaults to wrap the description at 300 pixels or so as before, but dynamically re-calculates the wrap width based on the dialog width and the width of the other columns. Presently the code does not reclaim extra vertical height when the dialog is widened, so the dynamic wrap is a bit pointless except for shrinking the dialog down. More work is needed to get the description field to shrink vertically. 2) Three of the columns now have their values centered under the column title to try to improve aesthetics. 3) The SP/Mana column title is renamed "Cast/Cost" as SP/Mana was redundant and Grace was unmentioned. This new title also goes along with Spellmon 2 changes in the pipeline that support setting ingredients as additional casting costs. Ingredient data is expected to merge with the mana/grace data in this dialog, and go in the same column as mana/grace cost. Kevin Bulgrien 2010-08-24 gtk-v2/src/spells.c: Adjust the spell dialog to align all data in the top right corner, and to aauto-wrap the description (at a fixed width). Though a dynamic wrap width would be ideal, this at least returns the dialog to a manageable width after the spell descriptions were purged of line breaks. Even with a fixed wrap width, the dialog is improved by the alignment change. Previously the alignment was in the middle, which put the spell name and data below the first line of the description. Kevin Bulgrien 2010-08-22 gtk-v2/src/account.c: Fix client malfunction on [X] closing of account system dialogs. Though the dialogs have the Deletable property set to No, some window managers do not honor this setting, and put the [X] close icon on the window frame. Added new on_window_delete_event() callback and connected it to all of the account system dialogs so their delete_events are trapped and ignored. The dialogs now only dismiss in the manner the designer intended. Kevin Bulgrien 2010-08-19 gtk-v2/src: about.c, config.c, info.c, keys.c, skills.c, spells.c: Fix segfault and/or client malfunction when [X] closing dialogs on window managers that do not honor setting their GTK deletable property to No. Kevin Bulgrien 2010-08-18 gtk-v2/glade/*.glade: Change design up to support GTK 2.16 and add orientation properties so the files load up and render properly in Glade-3 ver 3.6.7. Fix some more widget names to remove trailing whitespace. Set the login dialog deleteable property to false so window (some) window managers do not show the [X] close icon. The client can't handle the dialog being closed. This is a partial fix only. Some window managers (or whatever) do not honor the GTK property. Clean up a widget name in the config dialog. Kevin Bulgrien 2010-08-16/17 gtk-v2/glade/dialogs.glade: Fix for bug 3020531 - The Create Character button does nothing. Trailing space in widget name resulted in code not finding the widget and attaching callback to it. MSW 2010-07-12 Remove disabled GTK and X11 clients. Nicolas Weeger 2010-06-19 gtk-v2/win32/gtkclient.nsi: Include theme files in the package script, these don't seem to actually work under a windows build yet though. Brendan Lally 2010-05-21 gtk-v2/win32/gdefaults2: Use a better default value for map height on win32 Brendan Lally 2010-05-20 gtk-v2/win32: remove old-style icon and a compiled windows package I'd accidentally included. Brendan Lally 2010-05-20 gtk-v2/win32/gtkclient.nsi: Merge some changes to the nsi file from the one from the 1.12 branch Brendan Lally 2010-05-20 Win32Readme.txt, gtk-v2/win32/Running.txt: Merge the contents of win32Readme into the Running.txt file. Brendan Lally 2010-05-20 common/client-types.h: Define sleep in a way that can be compilied for windows. Brendan Lally 2010-05-20 common/client.h: Use a more explicit type in a struct definition (doesn't compile on windows otherwise) Brendan Lally 2010-05-20 gtk-v2/win32: Remove .gladep files from the win32 nsi file, these are not needed by an end-user. Brendan Lally 2010-05-20 gtk-v2/win32: Add some support files for building on win32 Brendan Lally 2010-05-19 common/commands.c: Add code to process & store race_info and class_info data. Still TODO is actually write code that will use this information (new character creator) MSW 2010-05-17 common/client.c: Fix connection logic which failed if system was using ipv6 + ipv4 (and trying ipv6 first) - code was not properly re-setting variables and trying the next protocol in the list. Also clean up some formatting. MSW 2010-05-15 GTK-V2 client now converts paths to WIN32 format as needed on such platforms. This should fix Bug ID: 2933761 and 2913885. Kevin Bulgrien 2010-05-06 The GTK-V2 client now updates the player's ~/.crossfire/servers.cache file whenever a successful server connection is established. Kevin Bulgrien 2010-04-29 Fixed a logic bug in the loader that reads player .crossfire/servers.cache files. The loader wrongly ignored the last valid entry in a cache when it contained an odd number of lines. I.e. if the servers.cache file had only one valid two-line entry, and an extra blank line, the loader ignored the the valid entry and it would not show up in the client. With this change, it does show up. Kevin Bulgrien 2010-04-28 In the case where HAVE_GETADDRINFO is available (not WIN32), a timeout is now implemented when establishing a connection with a server. The timeout is presently hard-coded at 30 seconds. Prior to this, if a connection attempt failed, the client was observed to lock up hard for three minutes. Half a minute is still pretty harsh, but a DNS lookup failure can take 30 seconds, so it may be wiser to wait at least as long before bailing out on the attempt. Kevin Bulgrien 2010-04-28 ============================================================================== Changes for 1.50.0 ============================================================================== common/client.c: Send server deprecated 'newmpcmd 1' setup option - this lets the client work properly on old servers. MSW 2010-04-25 Add missing code for account login to display character icons (note server code won't be checked in until after 1.50 release). Add missing function declarations to external.h to remove compiler warnings. Update common/shared to latest version. common/commands.c: Add support for new attribute. common/external.h: Add missing declarations. gtk-v2/src/account.c: Update update_character_choose() to display icon. MSW 2010-04-24 Remove the Skills/Experience tab from the core stats notebook in gtk-v2.glade as the skills window is better to use. Tested at 1400x1050, 640x480. At 640x480, the inventory/message panel is all the way to the left, but the hpane grab bar is visible. At default client size with no gdefaults2 or gtk-v2.pos, the map is to small to work properly, but, if the corestats are pushed down or hidden at the bottom of the screen it is playable. Kevin Bulgrien 2010-04-23 common/metaserver.c: Update the standalone metaserver code so that it works properly, merge the standalone versions of for both metaservers, and add a some more explanatory text to stdout. Brendan Lally 2010-04-24 gtk-v2/src/main.c, common/client.h: Put the name of the glade layout file that is being used in the version string that the client sends to the server. Brendan Lally 2010-04-24 - Remove the disfunctional scrollbars from around the map in most gtk-v2 .glade files. The layout acts better under different circumstances when they aren't there. After all these years they've never been used, so no point in keeping them around as they just take up space. Kevin Bulgrien 2010-04-23 gtk-v2/src/config.c Extend the client theme handling by adding support for player-accessible style file support. load_theme() is modified to always look in the player ${HOME}/.crossfire folder for a gtkrc file even when the client theme is None. This file can serve as a player's private theme file, or could be used just to tweak certain aspects of the client in the same way any other .gtkrc file would. After looking for the gtkrc file, load_theme() also now looks for a .gtkrc file. I.e. If sixforty.glade is in use, a corresponding ${HOME}/sixforty.gtkrc is processed to make it possible to create layout-specific adjustments. Both files have the same capabilities as a client theme file, and, in cases where a player might not have write access to the client theme folder, this modification allows the player to use themes by putting them in the .crossfire folder, albeit under fixed names. This also sets up a mechanism by which the client could one day actually actively maintain (write/update) per-user GTK rc files, but the current goal is primarily to make it easier to customize the client's presentation without having to put a bunch of highly customized files in the distribution. An in-client-selected theme is loaded last, so as to have a higher priority than either the gtkrc or layout-specific rc files. Kevin Bulgrien 2010-04-22 gtk-v2/glade/vi-redux.glade gtk-v2/glade/un-deux.glade gtk-v2/glade/AUTHORS - Remove the skills/experience table from these layout as a result of the new skills window. A significant design point for both of these layouts was to try to remove the vertical space constraints that the skills & experience information placed on the layout when it was used on smaller displays. - Update the AUTHORS notes for both of these layouts. Kevin Bulgrien 2010-04-19 gtk-v2/glade/chthonic.glade gtk-v2/glade/AUTHORS - Remove the skills/experience table from this layout as a result of the new skills window. At least one user desires this change also. - Give meaningful names to various widgets that had generic names. - Add a note to the AUTHORS file that notes a minor save/restore issue with the protections/core statistics notebook area in the lower right corner. It seems as though nesting hpaned or vpaned within each other may be part of why some layouts have restore issues that need to be dealt with. Kevin Bulgrien 2010-04-18 gtk-v2/glade/sixforty.glade - Fix issue with spinbutton_count to avoid run-time message regarding non-zero page size. - Remove the table_skills_exp and enclosing structures now that the skills window is available. gtk-v2/glade/AUTHORS - Add note that sixforty.glade has save/restore window position issues at this time. This issue has been present prior to this, so until it is fixed, just document it as a known issue so it doesn't get forgotten (again). Also do not mention a map dimension less than allowed (8 vs. minimum 11), and add mention of use of map and icon scale to improve usability. Kevin Bulgrien 2010-04-18 gtk-v2/glade/AUTHORS Update the description of oroboros.glade. gtk-v2/glade/oroboros.glade Removed the skills and experience table per creation of the new skills window. This in turn allowed the four tab notebook in the top right to change to a 2 tab notebook to improve accessibility of vital statistics. This redesign also seems to improve the sizability of the client, possibly making it easier to shrink below the default 1024x768 dimensions and opening the door to improvements in other layouts. gtk-v2/glade/dialogs.glade A complete rework of the client configuration dialog to make it take up less vertical space. Netbook users with a screen height of 600 pixels could not access all items in the dialog. The dialog was also pretty ugly and the controls were not organized as well as they could be. The overall design of the dialog now matches the design principles used for the account dialogs. Kevin Bulgrien 2010-04-17 gtk-v2/src/skills.c Fix broken build (perhaps only on older gtk/libglade versions?). Replaced gtk_widget_get_visible() with GTK_WIDGET_VISIBLE(). gtk-v2/src/stats.c Allow the table_skills_exp to be missing from a main window .glade layout without generating stderr spew like (crossfire-client-gtk2:*): Gtk-CRITICAL **: gtk_label_set_text: assertion `GTK_IS_LABEL (label)' failed. The new skills window means this table is optional, so there is no point to make noise or do extra work if it is absent from the window definition. Kevin Bulgrien 2010-04-17 gtk-v2/src/Makefile.am Yet another attempt to fix builds after disable of x11 and gtk-v1 clients. configure.ac Second attempt to fix builds after disable of x11 and gtk-v1 clients. crossfire-client.spec First attempt at disabling x11 and gtk-v1 clients. Kevin Bulgrien 2010-04-17 gtk-v2/src/stats.c, gtk-v2/src/skills.c If the player has left the skill window open whilst playing, update the exp/level values. Brendan Lally 2010-04-17 gtk-v2/glade/dialogs.glade Dress up the dialogs related to the account code. A few items are moved to make better use of space, but this mostly adds containers, attributes, padding, etc. that improves the dialog aesthetics. Orientation properties are removed to reduce libglade spew when running on older versions. They aren't needed anyway. The other major change is that now all widgets have logical names. Kevin Bulgrien 2010-04-15 common/client.c: File that was missed in the previous commit Brendan Lally 2010-04-15 Add a skill window for the gtk-v2 client gtk-v2/src/skills.c: file added gtk-v2/src/stats.c, gtk-v2/src/gtk2proto.h gtk-v2/src/Makefile.am gtk-v2/src/menubar.c - add menu entry callback common/client.h gtk-v2/glade/dialogs.glade - new window gtk-v2/glade/*.glade - update layouts to include new menu entry Brendan Lally 2010-04-15 Fix for bug 1845694 - improper inventory/map redraws in cache mode. gtk-v2/src/image.c: Add a variable to track if we have gotten new images. gtk-v2/src/image.h: Add declaration for above variable. gtk-v2/src/main.c: If we have new images, force full map and inventory redraws in main loop. MSW 2010-04-11 gtk-v2/src/account.c: Clear new account names/status when activating window. Otherwise, odd to have info filled in from account created on previous server. MSW 2010-04-11 common/client.c: Mostly whitespace changes. Make minor improvment to -download_all_faces to request 1 set more than being worked on. common/image.c: Whitespace change - fix formatting. common/newsocket.c: Whitespace change - fix formatting. gtk-v2/src/image.c: Fix for bug 2938906 - don't free pixmap data when using cache mode. gtk-v2/src/info.c: Remove useless message about not fine (sic) color. MSW 2010-04-11 gtk-v2/src/info.c: Fix problem with crashes on some systems - initialization was outside of for loop which set the variable. Should fix bug 2984398. MSW 2010-04-09 Add error message and quit client if user has out of date dialog.glade file installed. Make error_dialog non static so account.c can use this, add check in account.c to see if we found required window, and change order if initialization of account windows to do login window first (as that is where the check is). Files changed: gtk-v2/src/account.c gtk-v2/src/main.c gtk-v2/src/gtk2proto.h MSW 2010-04-09 Add account based support to gtk2 client & common code. Remove support for gtk1 and X11 clients --- configure.ac: Remove check for gtk1, cfgtk2 option, X11 libraries, and checks related to those clients. common/client.c: Add tracking of loginmethod. Update setup to send loginmethod, update dispatch table for new commands. Add close_server_connection() so duplicate code does not need to be repeated. Don't send addme command when using new login method. common/client.h: Add globals for motd, news, rules, loginmethods, INFO_... types. common/commands.c: Add processing of requestinfo for motd, rules, news. Add handling of loginmethod setup. Add call to hde_all_login_windows() when play starts. Add FailureCmd(), AccountPlayersCmd() to handle protocol commands. common/init.c: Free motd/news/rules data when changing servers. common/metaserver.c: Move meta_sort() to this file, don't make it static - removes compiler warnings. common/metaserver.h: Remove static declaration of meta_sort, and function prototype for it. common/p_cmd.c: Update do_disconnect() to use close_server_connection() common/proto.h: Updated with new functions. gtk-v2/glade/dialogs.glade: Add new windows for account login code. gtk-v2/src/Makefile.am: Add account.c file. gtk-v2/src/gtk2proto.h: Update with new functions. gtk-v2/src/account.c: New file - does account logic. gtk-v2/src/info.c: Change order of includes. Move some declarations from this file to info.h. Generalize some of the handling so other functions can use textbuffer but take advantage of the markup processing provided in this file gtk-v2/src/info.h: New file - declarations from info.c moved here. gtk-v2/src/keys.c: Change order if include of main.h. Update to use close_server_connection() gtk-v2/src/main.c: Change order of includes. Add sample use of custom glib log handler. Update to try and use loginmethod 1 gtk-v2/src/main.h: Add extern for csocket_fd so a bunch of files don't have to declare it itself. gtk-v2/src/map.c: Change ordering of includes. gtk-v2/src/menubar.c: Update to sue close_server_connection() gtk-v2/src/metaserver.c: change order of includes. Call hide_all_login_windows() when bringing up metaserver window. gtk-v2/src/opengl.c: Change order of includes. gtk-v2/src/pickup.c: Change order of includes. gtk-v2/src/spells.c: Change order of include of gtk2proto.h ---- MSW 2010-04-08 gtk-v2/glade/dialogs.glade - Convert tooltip_text fields to tooltip fields as mwedel reports that newer versions of glade3 have issues with it (though the version I have does not). - Remove has_tooltip settings not needed by the tooltip fields. - Make sure all the tooltips have a Translatable property. Kevin Bulgrien 2010-04-04 common/commands.c common/client.c - Add debugged trunk server code for spellmon 2 request to handle the extended data in AddspellCmd(). The extended information is currently not exposed to the user interface, but this commit makes it available. - The original idea to look at data on the fly instead of tracking spellmon command response did not work out. It turns out to be very easy to track server response anyway, so there is not much point in trying to figure things out dynamically. - These changes have been tested on old and new servers - including logging in and out of each on the same client session. The data in the Spell struct has been confirmed to hold data (by testing with spells found in the test/spell_requirements map). - LOG message for spellmon FALSE is changed from WARNING to INFO. It's not clear that a server's failure to support spellmon is really that bad. It mostly seems to mean that spell information dialog will not be populated. Also with the addition of spellmon 2, it is normal for older servers to not support it, so that does not seem to warrant the error being a warning anymore. Kevin Bulgrien 2010-04-03 gtk-v2/themes/Black gtk-v2/themes/Standard - Fix [ INFO ] (spells.c::spell_get_styles) Unable to find style for spell_normal Kevin Bulgrien 2010-04-02 common/client.h - Reformat of a lot of comments to ~ 80 cols to reduce vertical text spacing. - Fix some spelling/grammar issues in comments, and improve readability in various places. - Fill out the doxygen comments to the Spell structure by adding information found in the server documentation of the protocol. - Add usage and requirements members to the structure that will support the spellmon 2 extended information. - Convert some variable comments to doxygen style. common/client.c - Reformat of a lot of comments to ~ 80 cols to reduce vertical text spacing. - Add a TODO at the spot where spellmon 2 will be requested when the code is ready. common/commands.c - Update SetupCmd() to get ready to handle spellmon 2. Non-functional changes are comment reformatting/rewriting, and addition of spellmon 2 comments. Code change to separate darkness and spellmon done, but presently no actual functional change occurs except there is a minor duplication of an identical LOG() call. - Update AddspellCmd() to get ready to handle spellmon 2. Non-functional changes are comment reformatting/rewriting/addition. Stubs are added to initialize the spellmon 2 data fields in the Spell structure. Kevin Bulgrien 2010-03-30 common - Update the link to the server/trunk/include/shared folder to revision 12770 to pull in a new revision of shared/newclient.h for the purpose of updating the message type/subtype for magic ears and magic mouths. common/msgtypes.h - Regenerate to capture the changes from the updated shared/newclient.h file. gtk-v2/themes/Standard gtk-v2/themes/Black - Rename msg_dialog_magic_mouth to msg_dialog_magic_ear to more accurately identify what is being themed. Magic mouths are signs, not dialogs. It is the magic ears that are dialogs. gtk-v2/src/info.c - Fix msgctrl_defaults[] to list magic ears as a subtype but not magic mouths. Magic mouths are signs, so add that to the sign message descriptive text. This results in a change to the message control dialog. Kevin Bulgrien 2010-03-30 common/command.c - use the map2 type defines in the parsing code Brendan Lally 2010-03-28 common/client.c common/commands.c common/client.h gtk/gx11.c x11/x11.c gtk-v2/sound.c: Remove the use of the setup flag sexp - The server doesn't respond to it any more and the clients don't use it. Brendan Lally 2010-03-18 Protocol cleanup - remove code that supports protocol commands that are out of date. Also change setup to only request current options. MSW 2010-01-18 --- common/client.c: Remove handling of obsolete protocol commands. Clean up setup logic - do it all in one setup command instead of several, don't send options to server which are now standard. common/client.h: remove extern command_inscribe declaration. common/commands.c: Fix up a lot of setup logic - remove fallbacks to protocol commands that predate the setup replacements. Remove handling of settings which are now standard. common/init.c: Remove SendSetFaceMode() common/item.c: Presume all servers support inscribe protocol command. gtk/gx11.c: Presume all servers support inscribe protocol command. gtk/sound.c: remove SoundCmd() gtk/win32/porting.c: Remove SoundCmd() gtk-v2/src/sound.c: Remove SoundCmd() --- gtk-v2/src/info.c: off duplicate supression of command responses by default. Otherwise, things like statistics output ends up in what effectively looks like random order, which isn't good when you have a table. MSW 2009-12-07 macros/ax_pthread.m4: Add a new m4 macro ax_pthread.m4 to (hopefully) better suport detection of pthreads. See: SF tracker ID 2850517 for info: crossfire-client-1.12.0 build failure under Slackware 12.2 - ID: 2850517. Note that ax_thread.m4 is itself licensed under GPLv3. Note a possibility for license confusion, but also note that a review of various projects shows a fairly common precedent of allowing mixed licenses in the m4 macro directory - not all explicitly documenting the fact that different licenses are used. Other projects maintain a file identifying copyright and licensing provisions for various parts of the project. Whereas it is very likely other sources will be modified, it is highly unlikely anyone will expect to modify the .m4 macros in this project. aclocal.m4: Rebuilt file after incorporation of macros/ax_pthread.m4. configure.ac: Replace AC_CHECK_LIB(pthread, pthread_create) method of detecting pthreads with AX_PTHREAD(). Now halt the build if pthreads is not found since presently all clients are required to use metaserver code that uses pthreads. Also modify the configure.ac file to create a configure script that reports if the x11 client is built. There is no reason to avoid this since it reports other clients that are or are not built. The notices at the end of the configure script that say "Will build * renderer" are changed to say "With * renderer" since it looks silly in the case where no clients are built that use the renderers. common/Makefile.am x11/Makefile.am gtk/Makefile.am gtk-v2/src/Makefile.am: - Modify files to use PTHREAD_CFLAGS and PTHREAD_LIBS variables as advised by the new macros/ax_pthread.m4 file. It is advised that both CFLAGS and LIBS variables be used (even though on some systems both are not needed). gtk-v2/glade/un-deux.glade gtk-v2/glade/gtk-v1.glade gtk-v2/glade/v1-redux.glade: This is a resumption of the rework of all .glade layouts to support SVN revision 11699 changes to GTK-V2 client code. HP/SP/Grace/Food/Exp label is split up into four labels each, and the encumbrance data is also split. This change fixes all zeroes reported by knotwork/mark metson. The other layouts in the V1 theme need similar updates. Kevin Bulgrien 2009/09/04 gtk-v2/glade/dialogs.glade: The msgctrl_window now has more padding around the title label to improve aesthetics. The header of the dialog is modified to make room for two new spinbutton controls: msgctrl_spinbutton_count and msgctrl_spinbutton_timer. The spinbuttons allow user access to the output count and time controls previously hardcoded. The controls have tooltips that explain what they are for. Both spinbuttons allow pasting new values, clicking the value up/down, or using PgUp/PgDn to adjust the values in one second increments (8 client ticks). The tooltips for all of the column labels are reworked. Padding is added to numerous widgets to improve the overall appearance of the dialog. Tool tips have been added to all the buttons to give some indication of what they do. gtk-v2/src/info.c: Add output count and timer spinbutton control capability to the new message control dialog by adding a buffer_parameter_t struct typedef and buffer_control initialize structure that contains space for the pointer, state variable, and a default value. The message_control struct is initialized with the #defines that controlled the system previously. Renamed checkbox_t to boolean_widget_t since it doesn't really matter what kind of control is used as we only care whether it supports some kind of on/off capability. msgctrl_init() initializes the state and ptr members of the buffer_control structure. Comments are also added to the function header. update_msgctrl_configuration() now updates the count and timer spinbuttons. save_msgctrl_configuration() has improved comments, and also reads the dialog to assure saving of the currently displayed settings and not just the last applied settings. The save file format is modified to add the spinbutton values. The format of the file is slightly changed to include a record type so that it is easier to validate the file format. load_msgctrl_configuration() is heavily modified to improve the savefile error detection, and to support the new file format. The load process is a bit more strict about the file being in the right format. Saved values are only read from records that are in the correct format. Spinbutton initialization is added to default_msgctrl_configuration(). The comment header for read_msgctrl_configuration() is improved and spinbutton support added. Comment improvements are made for all the button handlers, and now on_msgctrl_button_close_clicked() automatically applies the current values displayed on the control. Kevin Bulgrien 2009/09/03 gtk-v2/src/info.c: Support autoload of Message Control dialog settings by reading the configuration file in msgctrl_init(). gtk-v2/src/main.c: Move msgctrl_init() later in client start up so that auto- load of Message Control dialog settings does not segfault. Kevin Bulgrien 2009/09/02 gtk-v2/src/info.c: The Message Control dialog Load button is now functional. Changed some of the struct definitions to be compatible with use to allocate a buffer in load_msgctrl_configuration() by making them typedefs and then by declaring the msgctrl_widgets[] separately. Remove various instances of end-of-line whitespace. Fix the update_msgctrl_configuration() truncated header comment. save_msgctrl_configuration() client message format changed to report the save file path/filename. Add load_msgctrl_configuration() data parsing using strtok() and only report settings were loaded if at least some valid data records were processed. If any data records are not in the expected format, the file is reported as corrupt. Add comments to local variables in several message control system functions. Kevin Bulgrien 2009/09/01 gtk-v2/src/info.c: The Save and Load buttons are now enabled. The Save button is fully functional, but the Load button only opens the save file and scans it without actually loading the data. The Load data parsing is not yet implemented. For now, it counts the number of non-comment and non-blank lines and outputs a message if it does not match the number of message types the system supports. msgctrl_init() no longer de-sensitizes the Save and Load buttons. save_msgctrl_configuration() now supports saving the message control configuration to ./crossfire/msgs. load_msgctrl_configuration() does read the ./crossfire/msgs file, but does not update the client message control configuration yet (though it does reset the control to match the msgctrl_widgets[] state variables). on_msgctrl_button_load_clicked() now calls the load_msgctrl_configuration() function. Kevin Bulgrien 2009/08/31 gtk-v2/glade/dialogs.glade: Add Defaults and Load buttons to the Message Control dialog. Add some space between the buttons so they are not crammed completely together when the dialog is small. gtk-v2/src/gtk2proto.h: Update for addition of Defaults button support in the Message Control dialog. gtk-v2/src/info.c: Rename msgctrl_data[] to msgctrl_defaults[] to better indicate current function and make all values const. This data is never modified at run-time. In msgctrl_init(), connect the Load and Defaults buttons, but in the case of the Load button, desensitize it until the functionality is present. Replace widget and state variable initialization code with a call to a new default_msgctrl_configuration(). This is now the method by which msgctrl_widgets[] state is initialized, and is the method invoked when the Defaults button is pressed. It invokes another new function, update_msgctrl_configuration(), that loads all msgctrl_widgets[] state variables with values stored in msgctrl_defaults[]. Added also are on_msgctrl_button_load_clicked() and on_msgctrl_button_defaults_clicked(). Kevin Bulgrien 2009/08/30 gtk-v2/src/info.c: Rework the data structures for the Message Control dialog to prepare for supporting return to default. msgctrl_data[] is now only used to hold the defaults. Also convert the buffer empty code to use the flush function to centralize that operation in one place. Kevin Bulgrien 2009/08/30 gtk-v2/glade/oroboros.glade gtk-v2/glade/lobotomy.glade gtk-v2/glade/gtk-v1.glade gtk-v2/glade/meflin.glade gtk-v2/glade/gtk-v2.glade gtk-v2/glade/v1-redux.glade gtk-v2/glade/caelestis.glade gtk-v2/glade/eureka.glade gtk-v2/glade/un-deux.glade gtk-v2/glade/sixforty.glade gtk-v2/glade/chthonic.glade: Link the new Message Control dialog to the Client menu. gtk-v2/src/info.c: Begin referring to the in-client output-count and message routing as the "Message Control System", and add support for in-client, player configuration via a new dialog to replace previously hard-coded settings. Change some previously selected data types to GTK data types to make interfacing with the UI require fewer casts. Instead of continuing to use the info_ prefix for this functionality, start using a msgctrl_ prefix. Added new functions to support the Message Control dialog: msgctrl_init() which does the dialog setup on client start; save_msgctrl_configuration(), and load_msgctrl_configuration() that are presently stubs, but are intended to be used to allow the message control configuration to be saved and restored. read_msgctrl_configuration() obtains the state of the Message Control dialog checkboxes, and dynamically, at run-time, allows the player to reconfigure which message types undergo duplicate suppression, and to which message panels they are routed to. on_msgctrl_button_save_clicked(), on_msgctrl_button_apply_clicked(), and on_msgctrl_button_close_clicked() support the dialog buttons (though presently the save button is disabled as saving and loading is not yet supported). on_msgctrl_activate() displays the new dialog when the Client | Message Control menu option is selected. All data structures and functions are heavily commented in the doxygen style. gtk-v2/src/main.c: Added a call to msgctrl_init() during client startup to construct the checkbox table and preset all the checkboxes to match the hardcoded defaults in info.c. gtk-v2/src/menubar.c: Link the new Message Control dialog into the client menu. gtk-v2/src/gtk2proto.h: Update to include prototypes for the new Message Control system in-client configuration support. gtk-v2/glade/dialog.glade: Dress up the about, metaserver, spell, and keybinding dialogs by adding a couple of horizontal separator bars and by replacing an HBoxes with HButtonBoxes. Adjust padding here and there as well (also on the config dialog). Rename widget names that were "typenumber" to "dialog_type_description". Add a new Message Control dialog that is for configuring the client-side output-count and message routing. Kevin Bulgrien 2009/08/29 gtk-v2/src/info.c: Set up an info_control[] array of structs, one element for each message MSG_TYPE_* in common/shared/newclient.h. This array contains enable/disable flags that determine whether or not a message shows up in any of the message panels (and it is possible to route message types to both panels). The array also determines which of the message types are processed for duplicate message reduction. There are still a few conditions that override the info_control[] settings. Presently the array is filled with hard-coded defaults, but they will ultimately become defaults that can be over-ridden by an in-client control panel and, eventually, by settings saved to a configuration file. message_callback() and draw_ext_info() are now modified to use info_control[] instead of the hard-coded settings they used previously. Kevin Bulgrien 2009/08/25 Adjust the client-side output-count implementation to always output a message the first time it occurs when it first enters the buffering system. After the initial display, the output-count and sync settings determine display time. With the new scheme, inactive buffers are also aged and discarded by age so that the content can be re-used if the message recurs before it is pushed out of the buffer. The "initial" display of a message is not done if the message buffer is re-activated after having been inactivated by output-count or sync. Meflin also pointed out the trailing " (Nx)" differed from the original server implementation, so now the count is prefixed on the message as "N times ". This changed the size of the count buffer, and affected the output buffering method - making it more logical to avoid allocating the count buffer in each message buffer, but rather only one time in the info_buffer_flush() function. This implementation is a bit heavier since buffers are now processed more when they are inactive, but it does get unique messages to the player more quickly even if they happen to pass through the duplicate suppression system. gtk-v2/src/info.c Kevin Bulgrien 2009/08/23 Implement a client-side replacement for the recently removed output-count and output-sync commands. The client implementation matches the basic operation of the server feature. Output-count determines the highest number of messages that can to coalesce into one. The output-sync determines the maximum amount of time a message stays in a buffer until it is displayed. The present code has output-count hardcoded to 16 (info.c: MESSAGE_COUNT_MAX) and output-sync to 16 client ticks, or about 2 seconds (info.c: MESSAGE_AGE_MAX). Messages ARE NOT considered for duplicate suppression if: define MESSAGE_COUNT_MAX <= 1; the message is sourced from client code; the hinted color of the message is NDI_UNIQUE; the message length is greater than 56 characters. Messages are displayed if either output-count or output-sync limits are reached. Either or both client command configuration and GUI configuration is planned. Probably GUI configuration will be implemented with an ability to configure message routing as well. gtk-v2/src/gtk2proto.h: Re-ran `make proto` to update prototypes. gtk-v2/src/main.c: Addied a call to the output-count/sync maintenance function info_buffer_tick() from client_tick(). gtk-v2/src/info.c: All output count/sync functionality is implemented in this file. Presently the feature is configured by adjusting defines in this file. The new defines, variables, and code are fully commented in the doxygen style. The system is initialized by calling info_buffer_init() from info_init(). To further support the system, info_buffer_flush() ejects messages from the buffers to the client display, and info_buffer_tick() both ages the buffers and evaluates them to determine if they need to be flushed. The old message_callback() is renamed draw_ext_info() and all messages still pass through it for routing and styling. The pre-existing draw_ext_info() function is removed. A replacement message_callback() is the front-end for the buffering system, and all messages except client-sourced messages pass through it. Kevin Bulgrien 2009/08/17 gtk-v2/glade/*.glade: Finish an incomplete rename of ratio_pickup_off1 to ratio_pickup_off in the pickup menu. Kevin Bulgrien 2009/08/09 common/metaserver.c: Fix bug 2806906- gcfclient hangs on exit when offline. Limit number of attempts to get metaserver2 data - was trying perpetually before. MSW 2009-07-27 gtk-v2/src/keys.c: Always extract spinbutton count and send it to server when doing commands - fixes 'invoke dimension door' spacing issue. MSW 2009-07-13 gtk-v2/glade/sixforty.glade: This started out as a rework for the new stat.c and pickup.c code, but became a general improvement effort. The layout has some issues in that saving windows position seems unreliable - possibly due to a need for constraining containers (viewport?) in the vpaned widgets. To debug, experimentation with scrolled windows can show when widgets might be have a size that subverts sizing. The default layout with no sixforty.pos is sane. The stats panel is changed the most with scroll bars added so the wide stats can be viewed in a small client. Both message panels are not in a notebook anymore to support recent chat/tell/say changes. Kevin Bulgrien 2009/05/25 gtk-v2/glade/lobotomy.glade gtk-v2/glade/oroboros.glade gtk-v2/glade/gtk-v1.glade gtk-v2/glade/gtk-v2.glade gtk-v2/glade/meflin.glade gtk-v2/glade/v1-redux.glade gtk-v2/glade/eureka.glade gtk-v2/glade/caelestis.glade gtk-v2/glade/un-deux.glade gtk-v2/glade/sixforty.glade gtk-v2/glade/chthonic.glade: Fix an omitted change in the menubar edits made prior to support changes in pickup.c. Kevin Bulgrien 2009/05/24 gtk-v2/glade/lobotomy.glade: A significant dress-up of the layout and general reduction of various container widgets that are not necessary for one reason or another. An issue with chat panels was discovered and fixed. Under some circumstances, the vertical scroll bar would disappear due to the horizontal scroll bar policy being set to never. The policy is now set to automatic to prevent the issue. Unused menu bar widgets are removed, and the menu widgets names are made more consistent. This drove widget name changes in menubar.c and pickup.c. gtk-v2/src/pickup.c gtk-v2/src/menubar.c: Menubar widgets are renamed to remove numeric suffixes and improve uniformity. gtk-v2/glade/oroboros.glade gtk-v2/glade/gtk-v1.glade gtk-v2/glade/meflin.glade gtk-v2/glade/gtk-v2.glade gtk-v2/glade/v1-redux.glade gtk-v2/glade/caelestis.glade gtk-v2/glade/eureka.glade gtk-v2/glade/un-deux.glade gtk-v2/glade/sixforty.glade gtk-v2/glade/chthonic.glade: All of the .glade files have the same menubar as made for lobotomy.glade to correspond with the above changes in menubar.c and pickup.c Kevin Bulgrien 2009/05/23 gtk-v2/glade/oroboros.glade: This update supports recent client code changes. The layout is basically the same as before the the update but viewports are added in a number of places to improve the aesthetics of the UI. The stat bar numeric data has been moved to the left of the bars. Kevin Bulgrien 2009/05/23 gtk-v2/glade/eureka.glade: This update supports recent client code changes. The stat bar display is moderately reorganized to allow very long experience data to be covered by the neighboring hpane panel as needed. The critical and normal message panels have swapped positions due to recent use of the critical panel for chat, tell, and say messages (placed nearer the command entry control). gtk-v2/glade/lobotomy.glade: This update includes both stylistic changes and updates to support recent client code changes. Though the lobotomy layout was unique in certain respects, the notorious skills and stats carry-overs from the original gtk-v2 layout were ugly. This commit introduces statistic panels that are completely unique. The skills and protections areas still take up the bulk of the bottom row, but they are designed to better avoid the overlap that so easily occurs in gtk-v2. A stats cluster in the bottom right corner explores a new method of organizing all character stats and any related stat bars in a small area, while tending to avoid the width problems that can so easily crop up with the stat bar numeric data. Another notable change is that all notebooks except the map/magic map notebook are gone. The critical and normal message panels have swapped positions to put chat, tell, and say messages closer to the command entry box. gtk-v2/glade/AUTHORS: The lobotomy.glade section has been updated to match the changes made to the layout. gtk-v2/glade/caelestis.glade gtk-v2/glade/chthonic.glade: Glade3 Designer apparently does not work well with single column tables, so a vbox was substituted to avoid misbehavior in the designer. The presentation to the player is basically unchanged except the critical and normal message panels have swapped positions to put chat, tell, and say messages closer to the command entry box. Kevin Bulgrien 2009/05/22 gtk-v2/glade/caelestis.glade gtk-v2/glade/chthonic.glade gtk-v2/glade/gtk-v2.glade: This is the beginning of the rework of all .glade layouts to support SVN revision 11699 changes to GTK-V2 client code. All of the files are changed using Glade3 Designer, so are about half their former size. The files target Glade 2.12 and do not contain deprecations or version conflicts. The HP/SP/Grace/Food/Exp label is split up into four labels each, and the encumbrance data is also split. Though gtk-v2.glade has been changed subtly, the data is still in the same relative location as the original layout. The caelestis and chthonic relocate stat numeric data to the right side of the progress bars to achieve the same improvements originally developed for meflin.glade. All layouts have had some viewports added in various places to give the UI an overall better, more polished appearance. Kevin Bulgrien 2009/05/21 The following commit introduces a code incompatibility with existing .glade layouts. All layouts must be updated to match this code to retain encumbrance display and the numerical data next to the stat progressbar widgets. This change is made because it allows much greater flexibility in the UI layout. The motive was to reduce bad UI behavior when a character had very large amounts of XP, but a side-effect is that layout density can be improved for those wanting a small UI footprint. The existing .glade layouts may still be used, but some numeric data will not be available until the layout is updated. meflin.glade rework sparked the idea for this change, and was used to test the code, so is hereby committed. The other layouts will be changed in relatively short order. gtk-v2/src/stats.c: The stat_label pointer was split into two pointers called stat_current and stat_max. The widget that stat_label pointed to used to be set with a programmatically defined stat name, current value/max value all as a single string. With the Exp: data in particular, this resulted in a very wide string that tended be be quite problematic. Not only that, but it forced client layouts to use a hardcoded name for stats instead of allowing the layout to define (or omit) the name. In the .glade file, the change corresponds with the splitting of the label_stats_* widgets each into four separate widget sets wth the names: label_stat_name_*, label_stat_current_*, label_stat_ratio_*, and label_stat_max_*. label_stat_name_* is no longer programmatically set by the client code. The current/max data formerly in the split widget is now divided between the other newly created widgets. The *_ratio_* widgets are generally defined in the .glade file as a "/", and the client code does not modify it. Various block comments were reformatted to wider margins to reduce vertical height of the comments. One spelling error was fixed in a code comment. gtk-v2/src/inventory.c: The changes closely match the changes described for stats.c except that they change the behavior of the weight or encumbrance data shown in the client. The pointer weight_label is split into two pointers: encumbrance_current and encumbrance_max. This makes it possible to split the two numbers formerly displayed as current/max in a single string. The widget name label_inv_weight was replaced by widgets with the the names label_stat_encumbrance_current, label_stat_ratio_encumbrance, and label_stat_encumbrance_max. The stat name label was not programmatically set for encumbrance, but was renamed to label_stat_encumbrance_name to match the stats.c changes. Block comments were reformatted to wider margins to decrease their vertical height. gtk-v2/glade/meflin.glade: The stats panel has been reorganized to make use of and test the above changes. The stat labels for the progressbars are still to the left of the progress bar, but the associated numeric ratio is now to the right of the progress bar. This allows the player adjust the hpane to cover extremely long experience/next_level strings to increase the area available for critical messages. The stat columns are moved from the right side of the progress bars to the left side. Fire/Run and the active ranged skill are now shown below the progress bars and separated from them by a blank line (to improve readability). The overall appearance of this layout was also improved by introducing into the design more viewports with borders. Kevin Bulgrien 2009/05/21 gtk-v2/glade/meflin.glade: Swapped position of Messages and Look/Inventory at Meflin's request. The Range: slot in the stats table caused some expanding and contracting of the stats panel when rotating through ranged skills, so it is now assigned a row of its own. After adding this row, the table now has seven rows, so the Str/Dex/Con/Int/Wis/Pow/Cha can now be laid out in a vertical fashion. The addition of a row also leaves a cell above WSp blank, so Run/Fire is moved from the menubar to this cell. The cell where Range: used to be is now blank. Added separators between the menu and the player information items in the menu bar. Now that the look/inventory panel is at the bottom, it makes more sense to put the notebook tabs next to the command input, so the tabs are change to the bottom of the notebook, and to maintain a consistent appearance, the stats/prot/skills notebook also has the tabs moved to the bottom. Kevin Bulgrien 2009/05/17 gtk-v2/glade/meflin.glade: Reworked this layout which was not used (probably because messages were not visible when clicking or examining items with the mouse). The changes from sixforty involve making sure critical messages and regular messages are both visible at the same time. The critical messages are put on the stats pane below the maps. The other big change is to try putting ground view and inventory on their own tabbed notebook with the ground view the default. This layout makes more use of viewports to make the UI look nicer. There are still areas for improvement like the menubar. The command input box seems small too, but its worth getting other feedback before messing around too much more with it. gtk-v2/glade/sixforty.glade gtk-v2/glade/sixforty.gladep: Add a four-quadrant layout that seems workable at a 640x480 screen resolution. It has some innovations for tightening up stats display, and will likely be nice for larger resolutions also. This layout actually appears to be different enough to inspire some ideas on how to make a few code changes to improve the ability to tighten up the displays even more. This layout was developed with glade2, but resaved using glade3 prior to commit. The XML targets GTK+ 2.12 and fully passes glade3s deprecation and version mismatch checks. gtk-v2/glade/Makefile.am: Incorporate the new sixforty.glade into the build. gtk-v2/glade/AUTHORS: Add a descriptive summary of the new sixforty layout. crossfire-client.spec: Add sixforty.glade to the package, and update the internal changelog. gtk-v2/glade/meflin.glade: Open in glade3 and save changes after verifying GTK+ target 2.12 and that deprecation and version mismatch checks pass. Kevin Bulgrien 2009/05/16 gtk-v2/glade/dialogs.glade: Set the About dialog window_position property to center for more logical and natural positioning of an infrequently viewed dialog. The other dialogs seem to try to position themselves in corners of the screen, which makes sense so they do not overlay each other, but it doesn't make a lot of sense for the About dialog, and looks better this way. Kevin Bulgrien 2009/05/15 gto-v2/glade/dialogs.glade: Set the deletable property False on all dialogs to fix Tracker ID: 2784779 GTK-V2 loses dialogs if closed with X control. It looks like glade3 is going to be annoying. The diff is huge, but if you sort the old file and new file, the real difference is only one line of text for each dialog. Kevin Bulgrien 2009/05/14 gtk-v2/glade/dialogs.glade: Open/save using glade3 so that later modifications may be better identified in a diff. Glade3 appears to save widgets in alpha order. Glade3 also seemed to remove quite a bit of content, but so far what I have seen indicates that glade2 to glade3 migration is pretty safe. Kevin Bulgrien 2009/05/14 crossfire-client.spec: Change some of the RPM .spec file BuildRequires to be more flexible after after testing on Mandriva 2009.0 (local machine) and Centos (Invidious). Centos build failed with requires libcurl-devel and libglade2.0-devel but both succeed if the requires are changed to curl-devel and libglade2-devel. These new requires also work on fedora10. Kevin Bulgrien 2009/05/10 common/shared/newclient.h: After coming to the realization that this file is better sourced in the server so that different client codebases could conceptually use different versions of the file depending on their development state, this file is now moved to server/include/shared. common/shared: Removed to allow the server/include/shared directory to be made and external reference here. common: Added an svn:externals property to use server/include/shared revision 11676 to create and populate client/common/shared so that newclient.h is a direct copy of the file maintained in the server area. Kevin Bulgrien 2009/05/09 common/shared/newclient.h: Removed comment that talked about the file being separately controlled in client and server. Add a comment to the #ifdef that switches the content of one typedef depending on where it is compiled. Kevin Bulgrien 2009/05/09 common/newclient.h: Moved to the new common/shared subdirectory because svn externals work on a directories only. It is planned to share this file between the server and client to assure synchronization. common/shared/newclient.h: Moved from common. common/item.c common/msgtypes.pl common/client.h common/newsocket.h common/Makefile.am sound-src/alsa9.c sound-src/cfsndserv.c: changed all #includes to reference newclient.h in its new location (common/shared/newclient.h). common/msgtypes.h: Changes resulting from merge of server newclient.h with the client newclient.h. Kevin Bulgrien 2009/05/08 common/newclient.h: Merge differences from server/trunk/include/newclient.h in preparation for correcting the fact that the two files are separately maintained - allowing divergence in implementation. One apparent required conflict is handled by detecting a define present only in the client. Kevin Bulgrien 2009/05/08 The following commit converts all common code and GTK-V2 draw_info() calls to draw_ext_info() calls so that support for untyped draw_info() messages can be completely removed from GTK-V2. While converting the draw_info() calls, also get rid of the deprecated draw_color_info() use in common so that the clients can have this deprecated function removed. This conversion also requires all clients provide a draw_ext_info() for common code to use. In the X11 and the GTK-V1 client, draw_ext_info() discards the message type information and just uses its existing draw_info() function. To support this change, new message types and subtypes have been added to support client-sourced messages. More than likely the client-side message subtypes could be fine tuned, but GTK-V2 also has changed to allow the draw_info() colors to be used until style data is set up for the client message types. draw_info() is removed from GTK-V2. common/item.c: draw_info() --> draw_ext_info(). common/commands.c: draw_info() --> draw_ext_info(); Remove draw_color_info(). Remove commented code used to develop skills report. common/script.c: draw_info() --> draw_ext_info(). common/client.c: draw_info() --> draw_ext_info(). common/msgtypes.h: Regenerated with `make msgtypes.h`. common/p_cmd.c: draw_info() --> draw_ext_info(). common/image.c: draw_info() --> draw_ext_info(). common/player.c: draw_info() --> draw_ext_info(). common/script_lua.c: draw_info() --> draw_ext_info(). common/metaserver.c: draw_info() --> draw_ext_info(); comment updates. common/external.h: Remove draw_info(); remove draw_color_info(); add draw_ext_info(). common/newclient.h: Add/tweak comments for pre-existing message types. Add a new message type for client-sourced messages along with some subtypes that seemed reasonable when reviewing the kinds of messages the client spawns. x11/x11proto.h: Regenerated with `make proto`. x11/x11.c: Remove draw_color_info(). Add draw_ext_info(). gtk/gtkproto.h: Rebuilt file with `make proto`. gtk/gx11.c: Remove draw_color_info(). Add draw_ext_info(). gtk-v2/src/gtk2proto.h: Regenerated with `make proto`. gtk-v2/src/config.c: draw_info() --> draw_ext_info(). gtk-v2/src/keys.c: draw_info() --> draw_ext_info(). Fix a misspelling in a message. gtk-v2/src/info.c: Fix the message_callback() prototype to match the function declaration and add a draw_ext_info() prototype. Modify message_callback() to honor the orig_color parameter in cases where a style has not been set for a particular message type/subtype so that draw_info() texts converted to draw_ext_info() will not lose their color just because the themes are not updated. To make this work, the message routing code was moved to run earlier. draw_info() is removed from the GTK-V2 client to strongly show that any new client messages need to be typed. This enhances the value and coverage of the theme support in the client. In fact, draw_info() comments hinted that draw_info() has been considered questionable in various ways before this conversion was conceived. Add a draw_ext_info() call that simply uses the message_callback(). Really the message_callback() should probably be renamed draw_ext_info() instead of putting this extra call in. gtk-v2/src/pickup.c: draw_info() --> draw_ext_info(). gtk-v2/src/inventory.c: draw_info() --> draw_ext_info(). Kevin Bulgrien 2009/04/22 gtk-v2/src/info.c: After some play-testing, its kind of wierd for say to go to one window and NPC/Magic Mouth stuff to go to the other, so MSG_TYPE_DIALOG is now also routed to the critical messages pane. Kevin Bulgrien 2009/04/16 gtk-v2/src/info.c: Per mailing list discussion on or about 2008/12/22, route MSG_TYPE_ATTRIBUTE (Changes to attributes: stats, resistances, etc), MSG_TYPE_COMMUNICATION (Communication between players), and MSG_TYPE_VICTIM (Something bad is happening to the player) to the critical messages pane. As stated on the ML, there are other potentially superior solutions to chats tells not getting drowned out by other messages, but this is a very simple one. The critical messages pane gets very little activity, unlike the regular messages pane. Addition of a chat-specific panel, or client-side routing configuration is not considered precluded by this quick fix. Kevin Bulgrien 2009/04/16 Fix typo in scripting protocol: send "watch stats maxsp" rather than "watch stats maxspp". Andreas Kirschbaum 2009-01-19 Send correct coordinates for "request map pos" script command. Do not crash for "request items cont" if there is no opened container. Report weight in grams in "request items" commands. Previously a localized floating point number in kg was passed. Add checks for incorrect parameters to scripttell command. Do not pass the script ID to the script. common/script.c Andreas Kirschbaum 2009-01-18 Various fixes and improvements, mostly related to map handling in gtk2 client. Main change is that the map area can now be resized during play and it will draw things as expected. Note server change is needed for map to not appear jumbled after initial resize. Fix bug 2476715: Image display problem when not sized to a multiple of 32 -- configure.ac: Move evaluation of extra includes and extra linker flags ( --with-..) options before lua/opengl checks - if those libraries are not in usual location, still want to be able to use them. gtk-v2/src/gtk2proto.h: callback for configure event added. gtk-v2/src/map.c: map_init(): Remove explicit call to set map area size. display_mapcell(): Fix drawing of images not a multiple of 32. resize_map_window(): Additional processing after resize event. on_drawingarea_map_configure_event(): New function - gets resize event and makes necessary updates. gtk-v2/glade/gtk-v2.glade: Remove explicit size value from layout. This gives more resize flexibility. MSW 2009-01-04 gtk-v2/src/info.c: Add missing initializer to pane variable. Without it, we are passing in garbage value to functions, which results in crashes. MSW 2008-12-29 make proto in the GTK-V2 source directory yielded an error about a missing about.h file. Additional includes are passed to cproto to remove this error. gtk-v2/src/Makefile.am Kevin Bulgrien 2008-12-21 The GTK-V2 client for some reason saved the window positions file multiple times per use of menubar Client | Save Window Position. Adding a call to g_signal_stop_emission_by_name() in on_save_window_position_activate() puts this silliness to an end. The file is now only saved one time. gtk-v2/src/config.c Kevin Bulgrien 2008-12-21 Remove "(crossfire-client-gtk2:2088): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated run-time warnings for the GTK-V2 client. gtk-v2/glade/lobotomy.glade gtk-v2/glade/oroboros.glade gtk-v2/glade/gtk-v1.glade gtk-v2/glade/gtk-v2.glade gtk-v2/glade/meflin.glade gtk-v2/glade/v1-redux.glade gtk-v2/glade/eureka.glade gtk-v2/glade/caelestis.glade gtk-v2/glade/dialogs.glade gtk-v2/glade/un-deux.glade gtk-v2/glade/chthonic.glade Kevin Bulgrien 2008-12-20 Complete fixing GTK-V1 issue [ 1876788 ] Doubled characters in GTK clients (unusable). Tested with --enable-cfgtk2 compiled as RPM. gtk/keys.c Kevin Bulgrien 2008-12-16 Misc compilation tweaks, no functional change. common/init.c mapdata.c: remove redundant Win32 macros. common/metaserver.c: add dummy return values to make the compiler happy. Nicolas Weeger 2008-12-14 gtk_signal_emit_stop_by_name() was poorly placed and is moved to a location where it will help fix the [ 1876788 ] Doubled characters in GTK clients (unusable) for the GTK-V1 client. gtk/keys.c Kevin Bulgrien 2008-12-13 Fix for [ 2022488 ] 2.x GTKv1 client built with --enable-cfgtk2 cannot login and for [ 1862055 ] GTKv1 client built with --enable-cfgtk2 cannot login so it is no longer necessary to run the client with Popup Windows. gtk/keys.c Kevin Bulgrien 2008-12-13 Pending fix for [ 1876788 ] Doubled characters in GTK clients (unusable). mwedel noted gtk_signal_emit_stop_by_name() was not used consistently everywhere keypresses were consumed by the client. Patches were written and tested to show that consistent use of gtk_signal_emit_stop_by_name() caused the doubled character problem to disappear. Then a new patch was written to replace redundant call/return pairs with fall-through logic. http://www.gtk.org/api/2.6/gtk/gtk-Signals.html#gtk-signal-emit-stop-by-name also states this is a deprecated function, g_signal_stop_emission_by_name() is now used instead of gtk_signal_emit_stop_by_name(). gtk-v2/src/keys.c Kevin Bulgrien 2008-12-04 To satisfy rpmlint and remove the error "E: no-packager-tag", add the packager tag and define it to a sane default. crossfire-client.spec Kevin Bulgrien 2008-11-28 To satisfy rpmlint and remove the error "E: non-standard-group X11/Games", all package groups are changed from "X11/Games" to "Games/Adventure". Choices offered by rpmlint were "Games/Adventure", "Games/Arcade", "Games/Boards", "Games/Cards", "Games/Other", "Games/Puzzles", "Games/Sports", and "Games/Strategy" crossfire-client.spec Kevin Bulgrien 2008-11-28 Update all client .desktop files so they do not trigger rpmlint messages like ".desktop file is not valid, check with desktop-file-validate": Terminate the Categories key/value with a semicolon; remove the deprecated Encoding key. Unify the Comment for all three clients. Add an appropriate GenericName key. Add [en] localestrings for the Name, GenericName, and Comment keys to help make it more obvious that translations may be placed in this file. Put the keys in order as listed in http://standards.freedesktop.org/desktop-entry-spec These changes are tested with desktop-file-validate. x11/crossfire-client.desktop gtk/crossfire-client.desktop gtk-v2/crossfire-client.desktop Kevin Bulgrien 2008-11-28 Eliminate rpmlint message W: mixed-use-of-spaces-and-tabs (spaces: line 159, tab: line 169) by converting tabs to spaces. No functional change. crossfire-client.spec Kevin Bulgrien 2008-11-28 Remove remaining vestiges of the old gcfclient/gcfclient2 naming convention. This does also slightly change the default gdefaults2 file generated by the client, and removes a blank line from the help output of the gtk-v2 client. INSTALL gtk-v2/src/config.c gtk-v2/src/main.c Kevin Bulgrien 2008-11-26 Win32 updates. common/commands.c: variables declaration at top gtk/sound.c: empty stubs gtk/win32/config.h: vsnprintf exists under another name gtk/win32/GTKClient.dsp: update gtk/win32/GTKClient.dsw: update gtk/win32/gtkclient.nsi: update gtk/win32/Win32Changes.txt: update Nicolas Weeger 2008-08-04 Update crossfire-client.desktop files by using consistent names; making sure all have categories; and adding a new file for the X11 client. x11/crossfire-client.desktop x11/Makefile.am gtk/crossfire-client.desktop gtk-v2/Makefile.am gtk/crossfire-client.desktop Change the default version for the client to 2.0.dev instead of 2.0-dev as the dash is incompatible with modern RPM tools. Dash is reserved for separating things in the RPM file name, and must not be embedded in the version string. Also rework datadir computation, and report where client data files will be placed. Improve reporting of the bindir to be used. configure.ac Fix RPM creation for the client release procedure. Add new .desktop files and package them with the clients rather than in the common package. Change the location for the .desktop files to /usr/share/applications. Update the list of .glade files for the GTK client V2. Correct the RPM build process by adding a _datadir definition, and modify all file specifications accordingly. Fix the build specs so a crossfire-client-x11 package is made. Swap the gtk client build to use GTK V2 by default. Change versions to 2.0.dev instead of 2.0-dev, which is invalid for current versions of rpmbuild. crossfire-client.spec Kevin Bulgrien 2008/07/19 Fix Makefile.am per use of configure.ac vs. configure.in. Makefile.am Fix release procedure support (make dist) for script_lua.h. Fix release procedure support (make dist) for msgtypes.h. common/Makefile.am GTK-v1 client name changes from gcfclient to crossfire-client-gtk. gtk/crossfire-client.desktop gtk/config.c gtk/gx11.c gtk/win32/config.h gtk/crossfire-client-gtk.man Add -popups to the default startup options as a partial workaround for Bug #2022488 2.x GTKv1 client built --enable-cfgtk2 cannot login. gtk/crossfire-client.desktop Spelling, capitalization, and some whitespace modifications. No functional code changes. gtk/gx11.c common/init.c Override common/init.c default for popups for GTKv1 client only as a partial workaround for Bug #2022488 2.x GTKv1 client built --enable-cfgtk2 cannot login. This actually changes the behavior to agree with the man page that states popups on is the default. Naturally this will not work if a player has a ~/.crossfire/gdefaults file with popups off, but this ensures a new player with have a working client with popups on. gtk/gx11.c Kevin Bulgrien 2008-07-19 common/newsocket.c: Improve error message (print out actual error) on failed write. Also, try to write again on errno==EAGAIN - fixes problem for systems that return EAGAIN instead of 0 when a write fails on a non blocking device. MSW 2008-07-07 Allow scripts to retrieve information that was previously unavailable: tag of the player object (used in move commands), title, list of known spells, names of the known skills, and attuned/repelled/denied spell paths. common/script.c Raphael Quinet 2008-06-22 Clean up configure.ac and add a missing test for size_t. configure.ac common/config.h.in Arvid Norlander 2008-06-05 Fix a valgrind error (uninitialised value) in smoothing code. gtk-v2/src/config.c gtk-v2/src/map.c Arvid Norlander 2008-06-03 Fix a valgrind error in the common metaserver code. For some reason sc_version and cs_version fields were not always properly initialized when check_server_version() was called. common/metaserver.c Arvid Norlander 2008-06-03 Add stub support for sound2/music commands, I was unable to make server send the actual commands except "music NONE" (and jxclient that do have sounds don't get these commands either, but decides locally to play some sounds it seems) so was not able to debug it beyond making sure it compiled and ran. When the server actually sends these commands someone need to fill in the implementations and check the parsing code is correct for sound2. gtk/gtkproto.h gtk/sound.c common/commands.c common/client.c common/external.h x11/x11proto.h x11/sound.c gtk-v2/src/gtk2proto.h gtk-v2/src/sound.c Arvid Norlander 2008-06-02 Unbreak LUA check in configure. Also update autogen.sh to mention that autoreconf should be used instead and make the call aclocal in the script correct. autogen.sh configure.ac Arvid Norlander 2008-06-01 Remove acinclude.m4 and add macros/libcurl.m4 (as acinclude.m4 just contained a copy of what should have been in macros/libcurl.m4). aclocal.m4 Added: macros/libcurl.m4 Removed: acinclude.m4 Arvid Norlander 2008-06-01 Normalize the *.xpm and *.xbm files by opening them in gimp and resaving them. Then readd "const" as needed in a text editor. Also had to update some source files because the name of the array for the xpm changed in some cases. pixmaps/applied.xpm pixmaps/magic.xpm pixmaps/unpaid.xpm pixmaps/cursed.xpm pixmaps/lock.xpm pixmaps/bg.xpm pixmaps/skull.xpm pixmaps/unlock.xpm pixmaps/mag.xpm pixmaps/question.xpm pixmaps/clear.xbm pixmaps/hand.xpm pixmaps/damned.xbm pixmaps/sign_east.xpm pixmaps/stipple.111 pixmaps/nonmag.xpm pixmaps/stipple.112 pixmaps/test.xpm pixmaps/locked.xbm pixmaps/dot.xpm pixmaps/close.xbm pixmaps/damned.xpm pixmaps/coin.xpm pixmaps/hand2.xpm pixmaps/applied.xbm pixmaps/locked.xpm pixmaps/crossfiretitle.xpm pixmaps/magic.xbm pixmaps/sign_west.xpm pixmaps/unpaid.xbm pixmaps/question.111 pixmaps/close.xpm pixmaps/sign_flat.xpm pixmaps/cursed.xbm pixmaps/all.xpm gtk/gx11.c x11/clientbmap.h gtk-v2/src/about.c gtk-v2/src/map.c gtk-v2/src/image.c Arvid Norlander 2008-06-01 Run protoize on code to add missing void in prototypes. Run the png_compress script from arch on some *.png files in the tree to reduce their size. pixmaps/48x48.png pixmaps/32x32.png pixmaps/16x16.png gtk/config.c gtk/keys.c gtk/map.c gtk/gx11.c gtk/image.c gtk/inventory.c common/item.c common/init.c common/mapdata.c common/image.c common/player.c common/metaserver.c x11/xutil.c x11/x11.c gtk-v2/src/stats.c gtk-v2/src/spells.c gtk-v2/src/config.c gtk-v2/src/keys.c gtk-v2/src/map.c gtk-v2/src/metaserver.c gtk-v2/src/image.c gtk-v2/src/opengl.c gtk-v2/src/main.c gtk-v2/src/info.c gtk-v2/src/inventory.c Arvid Norlander 2008-06-01 Some changes to use snprintf instead of sprintf. gtk-v2/src/stats.c gtk-v2/src/spells.c gtk-v2/src/config.c gtk-v2/src/keys.c gtk-v2/src/sdl.c gtk-v2/src/sound.c gtk-v2/src/info.c gtk-v2/src/pickup.c gtk-v2/src/inventory.c Arvid Norlander 2008-06-01 Set svn:eol-style to native on *.c and *.h files that were missing it. common/msgtypes.h common/script_lua.c common/script_lua.h common/version.h Arvid Norlander 2008-06-01 Add some missing "extern" keywords that caused warnings. Remove some extern variable definitions in source file that were already found in headers. gtk/map.c gtk/image.c common/client.c common/client.h x11/xutil.c gtk-v2/src/image.c gtk-v2/src/main.c gtk-v2/src/main.h Arvid Norlander 2008-06-01 Run make proto in subdirs. Make sure make doesn't error out on some subdirs when running make proto in top directory. pixmaps/Makefile.am gtk/gtkproto.h help/Makefile.am utils/Makefile.am x11/x11proto.h gtk-v2/src/gtk2proto.h Arvid Norlander 2008-06-01 Use the -combine option of gcc to find code (mostly extern inside source instead of headers), where the definitions didn't agree with each other. Fix most of them. One (hard to fix) is left, I will look at it later. Also use cproto in common/. Two sprintf changed to snprintf as well. gtk/keys.c gtk/gx11.c common/proto.h x11/x11proto.h x11/png.c x11/xutil.c gtk-v2/src/gtk2proto.h gtk-v2/src/keys.c gtk-v2/src/info.c gtk-v2/src/inventory.c Arvid Norlander 2008-06-01 Some changes to use snprintf instead of sprintf. common/item.c common/commands.c common/script.c common/client.c common/image.c common/p_cmd.c common/player.c common/script_lua.c common/metaserver.c common/misc.c Arvid Norlander 2008-06-01 Run a script to clean up trailing whitespaces. In this list below "ChangeLog" is listed due to script cleaning up some whitespaces. gtk/gx11.c ChangeLog help/about.h help/shelp.h common/item-types.h common/mapdata.c common/metaserver.c gtk-v2/src/stats.c gtk-v2/src/spells.c gtk-v2/src/config.c gtk-v2/src/about.c gtk-v2/src/keys.c gtk-v2/src/map.c gtk-v2/src/metaserver.c gtk-v2/src/magicmap.c gtk-v2/src/image.c gtk-v2/src/png.c gtk-v2/src/opengl.c gtk-v2/src/main.c gtk-v2/src/sound.c gtk-v2/src/main.h gtk-v2/src/menubar.c gtk-v2/src/info.c gtk-v2/src/pickup.c gtk-v2/src/inventory.c gtk-v2/glade/README Arvid Norlander 2008-06-01 Reorder some structs to waste less memory, also cosmetic changes to struct definitions. common/client.h gtk-v2/src/image.h Arvid Norlander 2008-06-01 More changes of char* to const char*. common/item-types.h common/items.pl gtk-v2/src/stats.c gtk-v2/src/config.c gtk-v2/src/image.c gtk-v2/src/main.c Arvid Norlander 2008-06-01 Change some char* to const char*. This reduces memory usage when serveral copies are running as const data can be shared between the copies. gtk/config.c gtk/keys.c gtk/map.c gtk/gx11.c gtk/image.c gtk/sdl.c gtk/text.c gtk/png.c gtk/sound.c common/item.c common/commands.c common/init.c common/script.c common/msgtypes.pl common/proto.h common/client.c common/msgtypes.h common/image.c common/client.h common/player.c common/newsocket.c common/script_lua.c common/metaserver.c common/misc.c gtk-v2/src/stats.c gtk-v2/src/spells.c gtk-v2/src/config.c gtk-v2/src/about.c gtk-v2/src/keys.c gtk-v2/src/metaserver.c gtk-v2/src/map.c gtk-v2/src/magicmap.c gtk-v2/src/image.c gtk-v2/src/sdl.c gtk-v2/src/main.c gtk-v2/src/opengl.c gtk-v2/src/png.c gtk-v2/src/sound.c gtk-v2/src/menubar.c gtk-v2/src/info.c gtk-v2/src/pickup.c gtk-v2/src/inventory.c Arvid Norlander 2008-06-01 Move configure.in to configure.ac (the new name since a few years). Update configure.ac syntax with autoupdate. Make help strings use AS_HELP_STRING. common/config.h.in aclocal.m4 configure.ac Moved: configure.in to configure.ac Arvid Norlander 2008-06-01 Yet more fixes of Makefile.am/aclocal stuff: Make aclocal install needed macros into the macros directory. Makefile.am aclocal.m4 Added: macros/pkg.m4 Arvid Norlander 2008-06-01 Fix Makefile.am so aclocal.m4 generation works correctly. Makefile.am aclocal.m4 Arvid Norlander 2008-06-01 Seems like the autotools define for LUA changed, update source to properly use LUA. common/commands.c common/p_cmd.c common/script_lua.c common/config.h.in aclocal.m4 Arvid Norlander 2008-06-01 More cleanup of autotools mess. Also update svn:ignore where needed. svn:ignore updated: . pixmaps gtk help common utils x11 gtk-v2 gtk-v2/themes gtk-v2/src gtk-v2/glade sound-src Removed: utils/mkinstalldirs utils/depcomp utils/missing utils/install-sh Arvid Norlander 2008-06-01 Remove some auto generated autotools files from the tree. Just run autogen.sh to create them. This prevents the mess of different developers using different versions of autotools, making commits a mess. utils/Makefile.in utils/config.guess utils/config.sub x11/Makefile.in gtk-v2/Makefile.in gtk-v2/themes/Makefile.in gtk-v2/src/Makefile.in gtk-v2/glade/Makefile.in sound-src/Makefile.in pixmaps/Makefile.in configure Makefile.in gtk/Makefile.in common/Makefile.in help/Makefile.in Arvid Norlander 2008-06-01 Fix bug #1871476:] client script 'watch stats' error. common/script.c: don't work on initial length, as it'll affect other scripts. Make parameters const to avoid issues. common/script.h: change function definition. Nicolas Weeger 2008-05-09 Apply patch by Jochen Suckfüll to move recently updated skills to top of list for X11 client (could possibly be used for other clients). common/client.c client.h commands.c init.c x11/x11.c Nicolas Weeger 2008-05-07 configure.in: detect lua 5.0 and 5.x as the build broke on some systems if the liblua stuff was loaded. For 5.0, libm and libdl are added to LUA_LIBS for liblualib to be usable. The summary report for ./configure now reports if lua scripting support is included in the build. gtk/Makefile.am, gtk-v2/src/Makefile.am, x11/Makefile.am: Add @LUA_LIBS@ into the link library list to fix build problems when lua is detected. Kevin Bulgrien 2008-04-26 gtk-v2/src/main.c gtk-v2/src/sound.c: Move the signal handler for SIGPIPE in main so that it can be used both for sounds and for scripts. Raphael Quinet 2008-04-26 Apply patch #1878451: Let crossfire client compile with OSS4's soundcard.h Courtesy anonymous. sound-src/cfsndserv.c Nicolas Weeger 2008-03-29 gtk-v2/src/main.c: Change the minimum window size to 640x480 since a window layout has been made that shows it is possible. There seem to be people out there that like small... Kevin Bulgrien 2008-02-17 gtk-v2/glade/gtk-v2.glade: Primarily a rename of widgets that had generic names (Eg. vbox2 --> vbox_all). The corestats tab changed to cuddle the stat value with the stat name for readability. Numeric values beside the stat bars is now left justified. Fire/Run indicator positions slightly altered. Presently the window will not shrink smaller than 800x600. This is due to the size set in main.c (geometry.min_width and geometry.min_height). Kevin Bulgrien 2008-02-17 gtk-v2/glade/AUTHORS: Update the descriptions of recently modified client layout files. Kevin Bulgrien 2008-02-12 gtk-v2/glade/un-deux.glade: This is an aethsetic overhaul, adding viewports with insets to set different screen elements off. Key widgets are moved to a common centerline below the map notebook to keep critical information at a consistent eye-level to improve visibility during play. The encumbrance and count box is now between the inventory and ground view, and the fire/run indicators are just below the command entry box. Kevin Bulgrien 2008-02-12 gtk-v2/glade/v1-redux.glade: Roll in the changes from gtk-v1.glade that make the layout more true to the original GTK V1 layout while keeping the tab notebook improvement. The encumbrance display and count box has had a slight aesthetic improvement also. Kevin Bulgrien 2008-02-12 gtk-v2/glade/gtk-v1.glade, gtk-v2/glade/gtk-v2.gladep: A major facelift brings this client layout much closer to the appearance of the GTK V1 client layout with a few exceptions like the XP bar and the Magic Map in the tab notebook. Kevin Bulgrien 2008-02-12 gtk-v2/glade/meflin.glade, gtk-v2/glade/meflin.gladep: Miscellaneous fixes to add previously invisible or missing widgets: Run/Fire labels, Count input, and encumbrance. Kevin Bulgrien 2008-02-12 gtk-v2/crossfire-client-gtk2.man gtk/crossfire-client-gtk.man x11/crossfire-client-x11.man: Escape the apostrophe when it starts a line to avoid confusing man or nroff ('help -> \'help). Reported by Kari Pahula. Raphael Quinet 2008-02-11 gtk-v2/crossfire-client-gtk2.man: Change more instances of gcfclient to crossfire-client-gtk2, and change the title to specify that this client is a second-generation GTK client. Update the client option list, and add or remove descriptions to match the client's capabilities. Some additional work may be needed to be sure the information is up to date and accurate, but this is a first pass at an update. Change some capitalization, and document the new window position save file conventions. gtk-v2/src/main.c: Add some doxygen comments to variable definitions. LOG() calls are reformatted to break long lines and convert instances of "gtk::" to "main.c::" for consistency with other LOG() messages. Change the title bar of the client from "GTK2 ... Client" to "GTK V2 ... Client" to make it a little less likely that people will assume that the 2 means GTK version 2 (especially since this client may eventually be built with a different version of GTK). gtk-v2/src/config.c: Reformat LOG() calls to break long lines, and convert all instances of "gtk::" to "config.c::" for better consistency with other LOG() messages. Also change all "config.c:" to "config.c::". Player visible change in load_winpos() and save_winpos() changes the window position save file from gwinpos2 to a name based on the window layout file name. For example, if the default window layout (gtk-v2.glade) is used, the window positions are now saved to gtk-v2.pos. This allows retention of saved window sizes for all window layouts, and has a side benefit of making sure that the default window positions are all used the first time a window layout is selected. Providing that the player's screen size is large enough, this will tend to reduce difficulty in setting up window positions for the first time. Kevin Bulgrien 2008-02-10 Doxyfile: Remove the .xpm files from the list of files to parse as it is painfully slow to do so. Kevin Bulgrien 2008-02-06 gtk-v2/src/info.c: Factor out redundancy in draw_info() in both cases of an if/else statement. Kevin Bulgrien 2008-02-05 gtk-v2/src/info.c: Prepare to work on this file. Break long lines; indention fixes; commenting changes; addition of new doxygen content. No code changed in this commit. Kevin Bulgrien 2008-02-05 common/Makefile.am: Use hint at http://www.in-ulm.de/~mascheck/various/echo/ to try to remove a portability issue regarding use of echo -n. Kevin Bulgrien 2008-01-29 gtk-v2/glade: gtk-v1.glade, un-deux.glade: Rename widgets to use a proper name instead of the numbered names. gtk-v2/glade/v1-redux.glade: Add missing label_cha for Charisma stat. Rename widgets to use a proper name instead of the numbered names. gtk-v2/glade: gtk-v1.gladep, v1-redux.glade, un-deux.glade: Edit program_name to see if it shows up in the title bar. Kevin Bulgrien gtk-v2/glade/Makefile.am: Fix non portable usage of foreach, use makes built in variable substitution instead. MSW 2008-01-27 gtk-v2/glade/un-deux.glade: Fix missing label_cha for Charisma value to be shown. gtk-v2/glade/un-deux.glade: The original design did not allow the ground view to be expanded optimally, the layout was changed to remove this limitation. gtk-v2/glade/AUTHORS: Update the description of the un-deux layout. gtk-v2/glade/README: Updated this file with new hints and information. Some spelling fixed. gtk-v2/glade/un-deux.glade, gtk-v2/glade/un-deux.gladep: This layout is a heavily modified v1-redux that places the critical messages, stat bars, protections, and ground view all in horizontally adjustable boxes. It still vaguely reminiscent of the original GTK V1 client, but only slightly so. The message boxes are to the left of the map, and the inventory view is to the right. The command input box is between the tall message pane and the short critical message pane, at the bottom left corner of the map. This puts chat messages right next to the command input box. The window size defaults to 1180x925 and comfortably handles a 19x17 map pane. gtk-v2/glade/Makefile.am: Add support for un-deux.glade gtk-v2/glade/AUTHORS: Describe the un-deux window. Kevin Bulgrien gtk-v2/glade/lobotomy.glade, gtk-v2/glade/lobotomy.gladep: A slightly variant layout that challenges the tradition of those that came before. gtk-v2/glade/AUTHORS: Describe the lobotomy layout. gtk-v2/glade/Makefile.am: Lobotomize me? Kevin Bulgrien gtk-v2/glade/gtk-v1.glade, gtk-v2/glade/AUTHORS, gtk-v2/glade/eureka.glade: Standardize these layouts at 1180x925 so they easily fit 1280x1024 screens and allow for a either a vertical or horizontal menu bar. Document the map pane sizes and overall window sizes for the different layout files. Kevin Bulgrien gtk-v2/glade/v1-redux.glade, gtk-v2/glade/v1-redux.gladep: Add a new layout that revisits the legacy GTK V1 client look, but saves on vertical space by using a tab notebook for the character and skill information. gtk-v2/glade/eureka.glade, gtk-v2/glade/eureka.gladep: Add a new layout to SVN that has just been sitting on my system for ages. gtk-v2/glade/AUTHORS: Add and describe the eureka and v1-redux layouts. gtk-v2/glade/Makefile.am: Add support for the eureka and v1-redux layouts. gtk-v2/glade/README: Remove no longer relevant comment about inability to restore screen positions. Kevin Bulgrien General cleanup with propset svn:ignore && fixup oops due to not quite getting how svn:ignore works. Kevin Bulgrien Packaging update work. crossfire-client-spec: An initial attempt to bring the .spec file up to date with the libglade/libcurl/pthread requirements and for packaging the theme and window layout files. It has not been tested yet and probably needs more work. gtk-v2/crossfire-client-gtk2.man: For now, this is really only a slightly modified copy of gtk/crossfire-client-gtk. It needs an update, but then so do all the other client man pages. gtk-v2/crossfire-client.desktop: An executable file name change. Really, I think this file needs a rename to be correct. gtk-v2/Makefile.am: Support for the new crossfire-client-gtk2.man file. gtk/crossfire-client-gtk.man: Client name changes for trunk, and a number of spelling errors fixed and .crossfire file names fixed like winpos->gwinpos. x11/crossfire-client-x11.man: Client name changes for trunk, and a number of spelling errors fixed. Kevin Bulgrien [ 1839894 ] Keybind editor flaw (gtk2, gtkv2) appears fixed by prior commit. This is basically a doxygen documentation commit. gtk-v2/keys.c: Remove erroneous comment. Document Key_Entry struct typedef. Fix @defgroup syntax. Fix @todo items with #if 0 in description by quoting the hash mark. Line length adjustments and notation consistency fixes for LOG() calls. Other miscellaneous line length adjustments. Add descriptions for more functions. Enhance one function descriptions. Kevin Bulgrien This should fix remaining issues in [ 1527973 ] bind command does not work, & also is a general doxygen update for keys.c files. help/chelp: Add the additional flags supported by the GTK V2 client and a note that says each client may not support all flags, and to use bind w/o any parameters for client specific help, otherwise there is no verbose help for the GTK V2 enhancements, and no explanation for why -g doesn't work. gtk/keys.c: doxygen @file added. gtk-v2/keys.c: In parse_keybind_line(), A is for all flags, so add KEYF_META and KEYF_ALT when it is the flag in a keybinding entry. Add function descriptions for various previously undocumented one, or improve/add detail to others. Various minor reformatting including spacing and line length changes. In bind_key(), remove spurious line break and whitespace from bind help text. Indentation fixes. In keybinding_get_data() change up the logic for use of the checkboxes in the keybinding dialog so that flags are set consistently. The new logic is very intuitive. KEYF_NORMAL is set if none or all of the Run/Fire/Alt/Meta checkboxes are checked. In update_keybinding_list(), "All " is now used to indicate when all of these flags are set to differentiate from only the normal flag being set. Kevin Bulgrien 2008-01-21 gtk-v2/src/keys.c: Saved work-in-progress. Long lines shortened. Added doxygen modules definition. More comments converted to doxygen form. Improved the style of some previously converted commenting. Reordered some declarations to move them with other similar ones. Started to use column 41 for end-of- line comments where reasonable for cleaner read. Rewrote some function comment descriptions. Added new function and parameter descriptions. Some indentation corrections. Kevin Bulgrien 2008-01-20 gtk-v2/src/keys.c: Fix for [ 1875657 ] Bogus keybinding too long errors. Made more truncation messages consistent, and fixed an inconsistently formatted LOG message. Fixed case and shortened message when keybinds are saved. Kevin Bulgrien 2008-01-20 gtk-v2/glade/dialogs.xml: Change Update Keybindings button to Update Bindings for consistency with the Remove Bindings button. Kevin Bulgrien 2008-01-19 gtk-v2/glade/dialogs.xml: Dress up the dialog for the libglade client by adding some padding in various places. Fixed some spelling and reworked various texts on the dialogs. Kevin Bulgrien 2008-01-19 Per-character keybind support. gtk-v2/src/keys.c: In save_keys() and keys_init(), a pointless #ifdef WIN32 was used to attempt to implement per-character keybind files but keys_init() is called long before a player can log in, so this had the effect of writing keybinds to a file that cannot be loaded. Oddly, this was under a #ifdef WIN32 which is quite inappropriate as if supported, it should be for all platforms. The support is commented out with #if 0 until it can be fixed and then re-enabled for all clients. Meanwhile, it surely fixes a WIN32 bug. General doxygen update: gtk/sound.c: Convert function description comments to doxygen form. common/client.h: Convert comments to doxygen form. x11/sound.c: Add doxygen file header. Makefile.am: Add target dox to generate doxygen files and output errors to doxygen.err gtk-v2/src/stats.c: Add doxygen file header. Convert function description comments to doxygen form. Fix missing doxygen @param for update_stat(). Add stubs for missing function descriptions. gtk-v2/src/spells.c: Add doxygen file header. Convert comments to doxygen form. Convert function description comments to doxygen form. gtk-v2/src/about.c: Whitespace only. gtk-v2/src/keys.c: Convert comments to doxygen form. Convert function description comments to doxygen form. Define groups for the functions in this file. In parse_keybind_line, add a parameter description. In init_default_keybindings, add to the function description. gtk-v2/src/image.c: Minor reformatting. In image_update_download_status() description, remove erroneous @param items. gtk-v2/src/sdl.c: Add doxygen file header. Convert comments to doxygen form. Convert function description comments to doxygen form. Add stubs for missing function descriptions. Move some defines from between a function description and the function code to above the description to help out doxygen. gtk-v2/src/png.c: Add doxygen file header. Convert comments to doxygen form. Add stubs for missing function descriptions. Move some defines from between a function description and the function code to above the description to help out doxygen. gtk-v2/src/sound.c: Rework the doxygen file header. Kevin Bulgrien 2008-01-19 Undo unintentional change from prior commit. gtk-v2/glade/caelestis.glade Kevin Bulgrien 2008-01-18 Fix: [ 1806282 ] Libglade client screen position saving faulty The root window "visible" property must be set to "no" in order for saved screen size settings to be restored when the application starts up. gtk-v2/glade/*.glade gtk-v2/glade/README Kevin Bulgrien 2008-01-18 Fix for bug [ 1810609 ] menu items don't work if metaserver is bypassed - move call to enable_menu_items() into main.c, and call it even if we are doing direct connection (-server option). gtk-v2/src/metaserver.c: Remove call to enable_menu_items() gtk-v2/src/main.c: Add calls to enable_menu_items() MSW 2008-01-15 Various bugfixes mostly: common/client.c: If servername is (null), don't both trying to connect - this happens when the NULL value is saved out on some systems. common/client.h: Update VERSION_SC to 1029 common/metaserver.c: Add more code since this client (at version_sc 1029) can still play on 1027 and 1028 servers. gtk-v2/src/stats.c: Fix stat bar handling for exp - it now shows a progression relative to currently level (so the instance you gain a new level, stat bar goes back to zero) - this is more how things are expected to work. Also, handle weapon_speed properly based on sc_version. gtk-v2/src/gtk2proto.h: Rebuilt MSW 2008-01-15 common/image.c, README: Rename client '.crossfire/crossfire-images/' to '.crossfire/image-cache/' to make backups avoid backing it up with a generic exclude like "*/*cache*/*" that works for many other packages that employ caching. Kevin Bulgrien 2008-01-04 Win32 compilation fixes. Remove superflous includes messing everything. (merge from 1.x) common/client.c commands.c item.c metaserver.c newsocket.c p_cmd.c player.c script.c gtk/win32/config.h porting.c Nicolas Weeger 2008-01-03 Fix smoothing code so it take into account smoothing on layers >0 if there is something drawn at lower layers. gtk-v2/src/map.c gtk-v2/src/sdl.c gtk-v2/src/opengl.c Tchize 2007-12-24 Fix for bug #1825653: Odd number problem with nrof. common/item.c: nrof is unsigned int32. Nicolas Weeger 2007-12-01 gtk/text.c: Add missing write_media() calls in handling of admin messages. Results in news and rules not being displayed. Fixes bug 1657000 MSW 2007-10-03 gtk-v2/src/info.c - Change error message when the client gets a message with a [] text format tag that is not valid to make it more obvious what is wrong. This can help determine the error faster if the server inadvertently sends the client a message with displayed text that has square brackets around it. Kevin Bulgrien 2007-09-30 Fix for bug 1800702 - gdk_draw_drawable: assertion `src != NULL' failed. gtk/gx11.c: Call sdl_gen_map() or gtk_draw_map() based on displaymode in use. gtk-v2/src/main.c: Call draw_map() instead of gtk_draw_map(). draw_map() will figure out what function (sdl, opengl, gtk) to call do actually draw the map. MSW 2007-09-25 gtk-v2/src/info.c gtk-v2/src/inventory.c gtk-v2/src/keys.c gtk-v2/src/magicmap.c gtk-v2/src/main.c gtk-v2/src/menubar.c gtk-v2/src/metaserver.c gtk-v2/src/opengl.c gtk-v2/src/pickup.c - Spelling/grammar fixes. - Doxygen commenting work. - Some indentation adjustments. - Reformat block comments to use 79 columns. - else block structures changed to comply with project coding standards. Kevin Bulgrien 2007-09-25 gtk-v2/src/about.c - Doxygen commenting work. gtk-v2/src/config.c gtk-v2/src/image.c - Spelling/grammar fixes. - Doxygen commenting work. - Some indentation adjustments. - Reformat block comments to use 79 columns. Kevin Bulgrien 2007-09-24 gtk/text.c: Remove call to void_callback() for MSG_TYPE_MONUMENT - if there is no code to handle it, no reason to set the callback. Fixes bug 1759860 - gravestone messages go to stdout and not client window. MSW 2007-09-23 gtk-v2/src/map.c - Doxygen commenting work. - Spelling fix visable --> visible. - Reformat block comments to use 79 columns. Kevin Bulgrien 2007-09-23 gtk-v2/src/metaserver.c: Modify metaserver_connect_to so it can connect to servers running on different ports (eg, localhost:13328). Gtk1 client already handles this fine, so this is only a change for the gtk2 client. MSW 2007-09-16 gtk-v2/src/stats.c gtk-v2/src/spells.c gtk-v2/src/keys.c gtk-v2/src/map.c gtk-v2/src/metaserver.c gtk-v2/src/magicmap.c gtk-v2/src/image.c gtk-v2/src/sdl.c gtk-v2/src/opengl.c gtk-v2/src/png.c gtk-v2/src/sound.c gtk-v2/src/main.h gtk-v2/src/info.c gtk-v2/src/pickup.c - Tabs --> spaces. gtk-v2/src/config.c gtk-v2/src/inventory.c - Tabs --> spaces. - End-of-line whitespace removed. Kevin Bulgrien 2007-09-16 gtk-v2/src/map.c gtk-v2/src/main.c - Fix for SourceForge Bugs Tracker #1794455 Libglade client Magic Map: cannot return to Map. During the libglade conversion, and incorrect g_signal_connect() call was placed in map.c. The corrected connection is now made in main.c where the magic_map pointer is initialized. gtk-v2/glade/README - Add a note for glade file developers concerning the MAGIC_MAP_PAGE define that constrains the tab on which magic maps must appear. Kevin Bulgrien 2007-09-14 Improve metaserver handling some - in particular, if server is listed on both metaserver 1 & 2, listed it only once. Also, for gtk2 client, fix handling of not showing cached entries if they are listed on the metaserver. Add filtering of protocol versions, so we only show player compatible servers. -- common/metaserver.c: Add check_server_version() to do version checking. Add checks to find duplicate server entries. gtk-v2/src/metaserver.c: Move retrieval of data from metaserver before adding cached entries to table - otherwise, can not detect duplicates. Add check to proper version information. MSW 2007-09-13 common/client.h - Add doxygen file header. gtk-v2/src/gtk2proto.h gtk-v2/src/main.c gtk-v2/src/metaserver.c - Remove unused return value for get_metaserver(). gtk-v2/src/metaserver.c - Doxygen commenting, and add comment headers for all functions. - Remove commented-out IP Address column formerly shown in metaserver dialog. Kevin Bulgrien 2007-09-05 gtk-v2/src/menubar.c - Doxygenification of source/comments. Kevin Bulgrien 2007-09-04 gtk-v2/src/about.c gtk-v2/src/image.h gtk-v2/src/sound.c gtk-v2/src/main.h - Doxygenification of comments and files. Kevin Bulgrien 2007-09-03 gtk-v2/glade/AUTHORS - Adjust some glade file descriptions. gtk-v2/glade/oroboros.glade - Reorder character data tabs. Kevin Bulgrien 2007-09-03 gtk-v2/glade/AUTHORS - Add oroboros.glade and add short paragraph descriptions of each of the new layout files. gtk-v2/glade/Makefile.am gtk-v2/glade/Makefile.in gtk-v2/glade/oroboros.glade gtk-v2/glade/oroboros.gladep - A layout designed expressly for clients running with 1024x768 resolution. Doxyfile - Copied from server; modified and added for client. prop svn:ignore - Add autom4te gtk-v2/src/main.c - Tabs --> spaces, commenting, and doxygenation. No functional code changes. Kevin Bulgrien 2007-09-03 configure configure.in - Tabs --> spaces, indenting uniformity, and typo corrections only. Kevin Bulgrien 2007-09-02 aclocal.m4 configure Makefile.in common/Makefile.in gtk/Makefile.in gtk-v2/Makefile.in gtk-v2/themes/Makefile.in gtk-v2/src/Makefile.in gtk-v2/glade/Makefile.in help/Makefile.in pixmaps/Makefile.in sound-src/Makefile.in utils/Makefile.in x11/Makefile.in - Result of new and fixed m4 files. autogen.sh - Point aclocal at macros so that undefined macros do not crash ./configure macros/gtk.m4 macros/sdl.m4 - ./configure should never crash, so add to remove errors as follows: aclocal:configure.in:?: warning: macro `AM_PATH_GTK' not found in library ./configure: line ?: syntax error near unexpected token `1.0.0' ./configure: line ?: ` AM_PATH_GTK(1.0.0)' aclocal:configure.in:?: warning: macro `AM_PATH_SDL' not found in library ./configure: line ?: syntax error near unexpected token `1.1.3' ./configure: line ?: ` AM_PATH_SDL(1.1.3)' macros/curses.m4 macros/gnome-print-check.m4 macros/gnome-gettext.m4 macros/linger.m4 macros/need-declaration.m4 - Update .m4 files from a newer glade package to remove many warnings like the following: macros/linger.m4:4: warning: underquoted definition of AC_STRUCT_LINGER Kevin Bulgrien 2007-09-02 gtk-v2/src/main.c - Add error_dialog() to notify the user via a graphical dialog that a Glade layout file failed to open. The dialog displayed the client version information, a brief error description, and the file that failed to load. Kevin Bulgrien 2007-09-02 gtk-v2/glade/AUTHORS - Add attribution for caelestis.glade project files. Kevin Bulgrien 2007-09-01 ChangeLog - Summarize gtk-v2-libglade branch merge to trunk. Kevin Bulgrien 2007-09-01 This is a merge of client/branches/gtk-v2-libglade to trunk. It converts the GTK-V2 client to a libglade-2.0 client that supports changing the UI layout with glade-2 generated .glade XML files. Various alternate client layouts are included. AUTHORS - Reformatted for aesthetics. - Added libglade-2.0 conversion author. common/init.c - Typo corrected in LOG message (inic.c --> init.c). configure - LIBGLADE_CFLAGS/LIBS addition. - gtkv2 checks converted to HAVE_GTK2. - gtk-v2/glade directory addition now supported. - V2 client now depends on libglade2.0 instead of GTK+ 2.0. - Some reformatting resulting from autoconf/automake changes flowing down. configure.in - gtk-v2/glade directory addition now supported. - Update indenting; tab->space conversion for readability. - Minor message updates for consistency like GTK2 -> GTK+ 2.0. - V2 client dependency checks changed to require libglade-2.0 vs. gtk+-2.0. gtk-v2/glade gtk-v2/glade/Makefile gtk-v2/glade/Makefile.am gtk-v2/glade/Makefile.in - A fully autoconf/automake supported directory to be used for the control of glade-2 layouts compatible with this client. gtk-v2/glade/AUTHORS - A file to attribute the authors of the glade-2 XML layout projects in this directory. gtk-v2/glade/README - A help file for prospective glade-2 XML layout creation that describes how to create a new layout and workarounds for various issues that may arise. gtk-v2/glade/caelestis.glade gtk-v2/glade/caelestis.gladep gtk-v2/glade/chthonic.glade gtk-v2/glade/chthonic.gladep gtk-v2/glade/gtk-v1.glade gtk-v2/glade/gtk-v1.gladep gtk-v2/glade/meflin.glade gtk-v2/glade/meflin.gladep - New layout files for the V2 client. make install places the .glade files in the crossfire-client data directory, where they are detected by the client in order to allow a user to select a new layout from the configuration popup dialog. gtk-v2/glade/dialogs.glade gtk-v2/glade/dialogs.gladep - This glade-2 XML layout project contains pop-up dialogs formerly contained in the ../gtk-v2.glade files. It was created to reduce the overhead in setting up a new main window layout. The client allows a user to specify a new file at the command-line, but does not attempt to support in-client selection of an alternate file. - Various modification to the original pop-up dialogs have been made to support the libglade-2.0 conversion. The generated code allowed the XML file to have variations in it that cause problems for libglade. - Minor alterations have been mode to appearance and/or text on various dialogs. gtk-v2/glade/gtk-v2.glade gtk-v2/glade/gtk-v2.gladep gtk-v2/gtk-v2.glade gtk-v2/gtk-v2.gladep - Moved to gtk-v2/glade sub-directory. - This is the original gtk-v2 client layout by mwedel. - All popup dialogs have moved into gtk-v2/glade/dialogs.glade. gtk-v2/Makefile.am gtk-v2/Makefile.in - LIBGLADE_CFLAGS/LIBS addition - gtk-v2/glade directory addition now supported. - DIST_COMMON modifications by autoconf/automake to remove files not under SVN control. - Remove gtk-v2/gtk-v2.glade and gtk-v2/gtk-v2.gladep from EXTRA_DIST as they are now located in the gtk-v2/glade subdirectory. gtk-v2/README-dev - Reformat for aesthetics and readability. - Various updates to content based upon IRC or mailing list discussions. - Rework content to third-party point-of-view to make it easier for other developers to modify the document. gtk-v2/src - Inexplicable property changes to svn:ignore simply reposition .deps entry. gtk-v2/src/about.c gtk-v2/src/inventory.c gtk-v2/src/keys.c gtk-v2/src/map.c gtk-v2/src/metaserver.c gtk-v2/src/spells.c - Include glade.h - Remove includes of glade-2 generated source files. - Conversion to libglade-2.0 requires use of glade_get_widget_tree() and change from lookup_widget() to glade_xml_get_widget() and insertion of g_signal_connect() to replace functionality previously found in glade-2 generated source files. gtk-v2/src/config.c - Include glade.h - Various code comment improvements. - Remove includes of glade-2 generated source files. - All functions without a comment header now have one. - Significant code comment reformatting to use of a 79 character line width and to reduce line lengths over 80 characters. - Add static char pointers themedir and gladedir to better support loading combo box widgets from the crossfire-client data directory, and to reduce the number of redundant hard-coded strings. - The configuration popup dialog now supports in-client selection of an XML layout file to redefine the root window appearance. Modified functions include load_defaults(), save_defaults(), setup_config_window(), and read_config_window(). New functions are scandir_glade_filter, fill_combobox_from_datadir() which is derived from code factored out of setup_config_window() so it can be used multiple times. Modifications to save_winpos() and load_window_positions() alters screen position saving to remove hard-coded copy/pasted code and more flexibly support multiple XML UI layout files. - Conversion to libglade-2.0 requires use of glade_get_widget_tree() and change from lookup_widget() to glade_xml_get_widget() and insertion of g_signal_connect() to replace functionality previously found in glade-2 generated source files. - scandir_filter() renamed to scandir_theme_filter() for more consistent naming for multiple scandir filter functions now required since the window layout combo box also requires on. gtk-v2/src/image.c gtk-v2/src/opengl.c gtk-v2/src/sdl.c - Include glade.h gtk-v2/src/info.c gtk-v2/src/pickup.c gtk-v2/src/stats.c - Include glade.h - Remove includes of glade-2 generated source files. - Conversion to libglade-2.0 requires use of glade_get_widget_tree() and change from lookup_widget() to glade_xml_get_widget(). gtk-v2/src/interface.c gtk-v2/src/interface.h gtk-v2/src/callbacks.h gtk-v2/src/support.c gtk-v2/src/support.h - Remove glade-2 generated source files. gtk-v2/src/magicmap.c - Include glade.h - Remove includes of glade-2 generated source files. gtk-v2/src/main.c gtk-v2/src/main.h - Include glade.h - General changes to support the conversion to libglade-2.0 require runtime processing of the glade-2 XML layout file names and locations. - Add support for command-line specification of glade-2 generated XML files that describe the UI windows and pop-up dialogs. - Conversion to libglade-2.0 requires use of glade_get_widget_tree() and change from lookup_widget() to glade_xml_get_widget() and insertion of g_signal_connect() to replace functionality previously found in glade-2 generated source files. gtk-v2/src/Makefile.am gtk-v2/src/Makefile.in - LIBGLADE_CFLAGS/LIBS addition. - Replace GTK2_CFLAGS/LIBS with LIBGLADE_CFLAGS/LIBS. - Changes resulting from removal of glade-2 generated source files. gtk-v2/src/menubar.c - Include glade.h - Remove includes of glade-2 generated source files. - Include image.h and gtk2proto.h as support the libglade-2.0 conversion. - Conversion to libglade-2.0 requires use of glade_get_widget_tree() and change from lookup_widget() to glade_xml_get_widget() and insertion of g_signal_connect() to replace functionality previously found in glade-2 generated source files. gtk-v2/TODO - Reformat for aesthetics and readability. - Add todo for non-functional scroll bar handles on the map display. - Adjust todo for lower screen resolution support since the libglade-2.0 port at least partially addresses usability on smaller desktops. help/about.h - EOL whitespace removed. - Minor reformat for aesthetics. - Added libglade-2.0 conversion author. Makefile.in common/Makefile.in gtk/Makefile.in gtk/themes/Makefile.in help/Makefile.in pixmaps/Makefile.in sound-src/Makefile.in - LIBGLADE_CFLAGS/LIBS addition x11/Makefile.in - LIBGLADE_CFLAGS/LIBS addition - DIST_COMMON modifications by autoconf/automake to remove files not under SVN control. Kevin Bulgrien 2007-09-01 common/metaserver.c: Update to use official and not test metaserver2 location. MSW 2007-08-31 Fix map not updated at tick causing items to appear non animated. gtk/gx11.c gtk-v2/src/main.c Nicolas Weeger 2007-08-15 Partial fix for bug #1772759: Too much alchemy causes client crash. common/item.c: find item in container too. Nicolas Weeger 2007-08-15 Make metaserver1 gather it's data in its own thread. common/metaserver.c: Add ms1_is_running flag, re-work some of the metaserver1 logic so the function structure makes it easy to spawn the thread, rename metaserver2_check_status() to just metaserver_check_status() gtk-v2/src/metaserver.c: Change call to metaserver_check_status(), resort data after getting all info from sever. SMW 2007-08-14 gtk-v2/src/metaserver.c: Add missing pthread_mutex_unlock() - resulted in client hanging after disconnecting from server. MSW 2007-08-14 Add support for metaserver2 in client. For the X11/C clients, they use basic interface (drawn in text window, select a number), so no changes to the GUI portions of those clients was done - gtk2 uses window, so some extra work there. -- acinclude.m4: New file - added for LIBCURL_CHECK_CONFIG macro support. aclocal.m4: Rebuilt configure: Add --disable-metaserver2 option, check for Curl, pthread. Make sure user either has curl installed or has used --disable-metaserver2 configure, */Makefile.in: Rebuilt with Curl support common/cconfig.h: Add note about METASERVER2 (controlled via configure) common/client.c: Add metaserver2 global common/client.h: Add metaserver2 global common/config.h.in: Rebuilt by autoheader. common/init.c: Add call to init_metaserver() common/metaserver.c: Support for metaserver2. More fields in Meta_Info. Re-arrange file a little so logical functions are together. common/metaserver.h: New fields in Meta_Info, some renamed to keep it consistent accross all of metaserver2. common/proto.h: rebuilt gtk-v2/src/metaserver.c: Add support for threaded metaserver2 retrievals - need to make sure data is accessed in thread safe way, also need to add check for status of retrieval thread. MSW 2007-08-08 Fix bug #1735271: Version numbers of client and server do not match. common/client.h: make S->C version 1028 for coherence with server. Nicolas Weeger 2007-08-05 gtk-v2/src/stats.c - Applied patch by "Olivier Huet" to fix experience label and progress bar for high levels (int -> sint64, %d -> %"FMT64"). Kevin R. Bulgrien 2007-07-24 gtk-v2/gtk-v2.glade gtk-v2/src/interface.c - Minor rework of prompt texts. - Add Escape key accelerator for the Quit button. - Add tooltip to the Quit button to tell a user about the accelerator. - Cosmetic improvement to the metaserver dialog done by adding padding or border width to some widgets so there is spacing between them. gtk-v2/src/metaserver.c - Make more room for "Server Comments" by removing the redundant "IP Addr" field, renaming "Last Update (Sec)" to "Updated (Sec)", and renaming "# Players" to "Players". gtk-v2/src/callbacks.h - Glade generated changes. Kevin R. Bulgrien 2007-07-22 gtk-v2/src/inventory.c: Adjust GTK2 client setup_list_columns() so "Weight" column titles are no longer truncated (on some systems). Kevin R. Bulgrien 2007-07-22 gtk/gx11.c: fix memory leak. Nicolas Weeger 2007-07-11 gtk-v2/src/inventory.c: Add support for client side animation of look window. MSW 2007-07-09 Fix various GAIM/GTK links. gtk/win32/gtkclient.nsi Running.txt Nicolas Weeger 2007-07-05 utils/mdk.sh: Make script work again. Andreas Kirschbaum 2007-06-27 Remove Gnome client, which is not built anyway. Deleted: gnome Modified: aclocal.m4 configure configure.in Nicolas Weeger 2007-06-18 Trash obsolete junk. common/client.c image.c item.c misc.c p_cmd.c proto.h Nicolas Weeger 2007-06-18 Remove 'map1cmd' variable which is always 1. common/client.c client.h commands.c gnome/map.c Nicolas Weeger 2007-06-18 Remove map1cmd, face, face1, item1 and some obsolete stuff. common/client.c commands.c image.c mapdata.c mapdata.h proto.h Nicolas Weeger 2007-06-18 common/p_cmd.c: remove 'resist' command, duplicates server-side 'resistances' giving more info. Nicolas Weeger 2007-06-18 configure.in: Add another eval $ndatadir line so properly resolve all the shell variable names so that CF_DATADIR is set properly in common/config.h -- MSW 2007-06-11 gtk-v2/src/inventory.c: Add tooltips to the inventory tabs, to make it clearer what the different tabs do. -- MSW 2007-06-11 Add pick up menu updating support for gtk2 client - when you log in, it will get your character pickup mode and update the check boxes accordingly. --- gtk-v2/gtk-v2.glade: Change "don't_pickup1" widget name to "do_not_pickup" gtk-v2/src/interface.c: Rebuilt gtk-v2/src/main.c: Remove empty client_pickup() function, add pickup_init() gtk-v2/src/pickup.c: Bunch of new code to support pickup updating - mostly a mapping from menu items to pickup modes, since glade doesn't let us store those attributes in the menu item. MSW 2007-06-11 Remove obsolete mapredraw command (empty on server-side). common/p_cmd.c gnome/map.c gtk/config.c map.c gtk-v2/src/config.c map.c x11/xutil.c Nicolas Weeger 2007-06-02 Apply patch #1720388: data len in client.c is calculated wrong courtesy Jürgen Kahnert. common/client.c Nicolas Weeger 2007-05-16 gtk/text.c: fix callback that was eating a word. Nicolas Weeger 2007-05-03 Change the version string from 1.9.1 to 2.0-dev for trunk. Alex Schultz 2007-04-28 Implement feature request #1560389: improve inscription logic. gtk/gx11.c inventory.c common/client.c client.h commands.c item.c item.h proto.h Nicolas Weeger 2007-04-23 Fix memory overrun errors. --- gtk/gx11.c: Allocate enough space in pickup_menus/value to store all allocated entries. gtk-v2/src/stats.c: Allocate enough skill boxes to store MAX_SKILL skills. gtk-v2/src/info.c: Allocate enough memory in info_pane[] to not cause memory overruns. gtk-v2/src/config.c: Allocate enough memory to not cause memory overrun when loading gtk rc files. Andreas Kirschbaum 2007-04-23 autogen.sh: Add script to rebuild autoconf files. configure, aclocal.m4, */Makefile.in: Rebuilt. common/Makefile.am: Rewrite commands to build svnversion.h to not generate an error message the first time they are run. configure.in: Remove duplicate use of AC_CONFIG_SRCDIR. configure.in: Add template comments to AC_DEFINEs. Now autoheader and ./configure --enable-maintainer-mode does work again. --- Andreas Kirschbaum 2007-04-16 Use #include instead #include "config.h" to support multiple configurations outside the source directory. --- Andreas Kirschbaum 2007-04-16 Rename DATADIR to CF_DATADIR to avoid name clashes when cross-compiling to Win32. --- gtk/win32/config.h, configure.in, common/image.c, common/config.h.in, gnome/gnome.c, gnome/gnome-sound.c, gtk-v2/src/config.c: Replace DATADIR by CF_DATADIR. Andreas Kirschbaum 2007-04-16 Add theme support to the gtk2 client spell window. gtk-v2/gtk-v2.glade: Remove the drawingarea boxes, add eventboxes and put the labels in the eventbox - the labels now act as key, as it is easier to do all of foreground, background, and font style there. gtk-v2/src/config.c: Add calls to set spell styles and redraw spell window gtk-v2/src/interface.c: Rebuilt gtk-v2/src/inventory.c: Declare Style_Names static, since it is a generic name and spells.c uses same name. Linewrap a long line. gtk-v2/src/spells.c: Add theme handling - load up theme data, set entries in the treeview widget, update code to draw keys. gtk-v2/themes/Black, gtk-v2/themes/Standard: Add style information for the spells. MSW 2007-02-25 configure, configure.in: Fix broken check for liblua - not all systems have liblualib, so assuming they do if liblua exists breaks compilation. And separate check for lualib. MSW 2007-02-25 Fix missing liblua when linking. configure,configure.in: rebuilt */Makefile.am, */Makefile.in: rebuilt Ryo 2007-02-23 Remove hard dependancy of LUA - instead, have configure check for it and just don't compile in the LUA bits if we don't have lua installed. -- configure,configure.in: Add lua checks. */Makefile.am, */Makefile.in: Remove hard coded links of -llua common/config.h.in: Add HAVE_LIBLUA define common/commands.c, common/p_cmd.c, common/script_lua.c: Add #ifdef HAVE_LIBLUA checks MSW 2007-02-20 Implement feature request 1025952: GTK Client - Save Pickup options. New external command, 'client_pickup(uint32 pickup)', which is called when player logged in. common/client.c commands.c external.h proto.h gtk/gx11.c gtk-v2/src/gtk2proto.h main.c x11/xutil.c Ryo 2007-02-18 Apply patch #1560052: LUA client-side support. New commands: lua_list, lua_load, lua_kill. pixmaps/Makefile.in configure gtk/Makefile.am Makefile.in common/commands.c Makefile.am Makefile.in proto.h p_cmd.c Makefile.am help/Makefile.in utils/Makefile.in x11/Makefile.am Makefile.in gtk-v2/Makefile.in gtk-v2/src/Makefile.am Makefile.in sound-src/Makefile.in Ryo 2007-02-10 gtk-v2/gtk-v2.glade: Apply patch 1636013 - standardize on underscored widget names. Patch by Veli-Matti Valtonen - maligor. MSW 2007-02-06 Add support for different themes in the gtk2 client. A lot of compiled in defaults have also moved to the the theme file. --- INSTALL: Added file - wanted by automake. README: Move install directions to INSTALL file. configure.in, configure: Add gtk-v2/themes/Makefile to list of Makefiles. common/Makefile.in, common/Makefile.am: Add rule to make msgtypes.h file. common/client.h: Add Msg_Type_Names file, used by msgtypes.h file. common/msgtypes.h: File that holds names for the message type/subtype values. common/msgtypes.pl: Script to make msgtypes.h file - basically parses newclient.h, pulling out the MSG_ structures. common/newclient.h: Update to match server version. gtk-v2/Makefile.am, gtk-v2/Makefile.in: Add themes to list of subdirectories. gtk-v2/gtk-v2.glade: Add theme selection to config window. gtk-v2/src/config.c: Add support for loading/saving theme to gdefaults2 file. Add support for getting theme from config window, and changing appearance without need for restart. gtk-v2/src/gtk2proto.h: rebuilt for theme related functions. gtk-v2/src/info.c: Remove hard coded font values. Add code to load color, font, and msg type/subtype from theme file. Remove a lot of the hardcoding for having 2 textviews - removes a lot of redundant code. Change processing for adding messages to to text buffers - don't create a new text tag - use the various textags we have that match. gtk-v2/src/interface.c: Rebuilt with theme selection for config window. gtk-v2/src/inventory.c: Remove hard coded values for color on inventory status. Add ability to specify more than just background color for different status - can now also change font & foreground color. Add code to load up style information. Change processing for getting row style. Update code that adds entries to the rows. gtk-v2/src/main.c: Ad usercolorname global array that provides a name to color number mapping to be used in theme files. Add code to load up user theme. gtk-v2/src/stats.c: Add support for parsing theme data. Remove hard coded color values for the stat bars. Removed hard coded value on number of stat bars in lots of places. gtk-v2/themes: New directory to hold the theme files. --- MSW 2007-02-04 Fix for bug #1538948: Assertion failure for map2 command. Add checks for x,y and layer validity in the Map2Cmd. Note that invalid values are not discarded, but clipped to valid ones. common/commands.c: add checks. common/mapdata.[ch]: move #define to header for access outside .c. Ryo 2007-01-07 Improve command completion: display matching commands. common/p_cmd.c Fix bug with autocompletion: don't change focus, don't select text. gtk/gx11.c keys.c Ryo 2007-01-01 Merge patch #1558073: newpickup flesh courtesy bencha gtk/gx11.c gtk-v2/gtk-v2.glade gtk-v2/src/callbacks.h gtk2proto.h interface.c pickup.c Ryo 2006-11-29 common/Makefile.am: Change svnversion.h generation to not update the file unless it needs updating. Alex Schultz 2006-11-09 Fix problem in display logic when the size of the image was not a multiple of the map_image_size. This shows up when using tall character images. It also shows up when using different -mapscale options due to rounding errors - in both cases now, things are drawn correctly. -- gtk/map.c: Add size parameters to draw_pixmap(). Add logic to figure out proper offsets for drawing odd sized images. gtk/sdl.c: Add logic to figure out proper offsets for drawing these odd sized images. gtk-v2/src/map.c: Add size parameters to draw_pixmap(). Add logic to figure out proper offsets for drawing odd sized images. gtk-v2/src/sdl.c: Add logic to figure out proper offsets for drawing these odd sized images. MSW 2006-11-05 gtk/image.c: Fix bug that results in SDL mode not working if map_scale and icon_scale are the same - can't use GDK pixmaps for SDL drawing. MSW 2006-11-05 Fix bug 1559804 - unable to drop items from inventory into open container on the ground. gtk-v2/src/inventory.c: Add check to see if container is on the ground in addition to being in the player inventory as a valid drop target. MSW 2006-11-03 Add ability for client to get exp table from server. Add exp progressbar to GTK2 client. -- common/client.c: Add declarations for exp_table, exp_table_max, and call to send 'requestinfo exp_table' to server. common/client.h: Add extern declarations for exp_table, exp_table_max common/commands.c: Add get_exp_info() function to get exp table from server in replyinfo command. Fix crash bug in ReplyInfoCmd() if replyinfo with no parameters is sent to client. common/init.c: Add code to clear/initialize exp_table, exp_table_max gtk-v2/gtk-v2.glade: Add exp progessbar widget. gtk-v2/src/gtk2proto.h: rebuilt gtk-v2/src/interface.c: Rebuilt gtk-v2/src/stats.c: Add code to draw/update the exp progressbar. Replace some static numeric constants with #define values instead. Add can_alert option to update_stat() MSW 2006-11-03 common/newclient.h: Merge/copy over file from server to get it synced up. gtk-v2/src/info.c: Modify so that it sets the text manager for all the types so it can use extended markup language. MSW 2006-10-30 Fix annoying bug where popups appear all the time. common/newclient.h: add some missing message types. gtk/text.c: by default, admin commands are just sent to draw_info. This prevents annoying popups. Ryo 2006-10-29 common/Makefile.am: Make sure svnversion.h rebuilds every time. Alex Schultz 2006-10-29 gtk/rcs-id.h, common/rcs-id.h, x11/rcs-id.h, gtk/gx11.c, x11/x11.c: Remove rcs-id code. gtk/Makefile.am, common/Makefile.am, x11/Makefile.am: Remove references to rcs-id.h files. -- configure.in, common/Makefile.am: Generate svnversion.h to define SVN_REV from running the svnversion command if avaliable. common/version.h: Add FULL_VERSION macro, to include SVN_REV if avaliable. gtk/gx11.c, x11/x11.c, gtk-v2/src/main.c: Use FULL_VERSION instead of VERSION. Alex Schultz 2006-10-20 common/client.c, gtk-v2/src/main.c: Remove excess log messages that flood console. Alex Schultz 2006-10-12 Apply patches #1562945, #1562947, #1563796, and #1566467 to allow the gtk2 client to be built in mingw. Courtesy of Kurt Fitzner. --- configure.in, gtk-v2/src/Makefile.in: Clean up build system a little and add mingw supports. common/item.c, common/commands.c, common/init.c, common/script.c, common/mapdata.c, common/client.c, common/p_cmd.c, common/player.c, common/newsocket.c, common/metaserver.c: Add mingw/win32 support. gtk-v2/src/keys.c, gtk-v2/src/map.c, gtk-v2/src/image.c, gtk-v2/src/sdl.c, gtk-v2/src/main.c, gtk-v2/src/opengl.c, gtk-v2/src/png.c, gtk-v2/src/Makefile.am, gtk-v2/src/sound.c, gtk-v2/src/menubar.c: Add win32 support to gtk2 client code, including for sdl and opengl. Alex Schultz 2006-10-07 common/mapdata.c, common/proto.h: Move clearing of old map data from mapdata_set_face_layer() to a new mapdata_clear_old() function. common/commands.c: Call mapdata_clear_old() in Map2Cmd() instead of relying on mapdata_set_face_layer() to clear it. Fixes bug #1559683. x11/x11.c: Fix display_mapscroll() to handle scrolling by greater than 1 tile at a time. Fixes bug #1564584. Alex Schultz 2006-09-26 gtk-v2/src/info.c: Add some notes about downloading font. Add support for underline in extended text modes. MSW 2006-09-17 configure.in: Fix opengl checks. Alex Schultz 2006-09-17 Fix bug 1531060 - metaserver selection button is improperly activated. Fix this by clearing the text box if an entry in the tree widget is selected - if text is entered in the text box, unselect any selection - keeps it very consistent what the connect button does. Have it greyed out until there is either text in the text box or something selected in the treeview. -- gtk-v2/gtk-v2.glade: add callback for key press events for text entry box. gtk-v2/src/callbacks.h,gtk-v2/src/interface.c: Rebuilt gtk-v2/src/metaserver.c: Add code to activate/disable button based on status. Add code to clear text box when treeview selected. Add code to deselect treeview if data is entered in textbox. MSW 2006-09-05 gtk-v2/src/stats.c: Fix bug 1527966 - protections window not properly updated. Wrong variable was being used in loop. MSW 2006-09-05 gtk-v2/src/map.c: Clear clipmask and clear window in draw_splash() so that splash is correctly redrawn. gtk-v2/src/metaserver.c: Add call to draw_map() in metaserver selection just to make sure splash is drawn correctly. MSW 2006-09-04 gtk-v2/src/inventory.c: Fix bug 1528014 - when dropping all objects, display isn't updated correctly. Remove checks for cpl.ob->inv - relying on cpl.ob->inv_updated appears to work fine. gtk-v2/src/keys.c: Fix bug 1527988 - message about unused keys isn't very useful. Include meta and alt information about unused keys. Add warning message to bind when trying to bind a key that may conflict with an existing binding. MSW 2006-09-04 Add suggestion from bug 1528536 - some menu items should be disabled during metaserver selection. -- gtk-v2/gtk-v2.glade: Fix some incorrect name (meny vs menu) gtk-v2/src/interface.c: Rebuilt gtk-v2/src/menubar.c: Add enable_menu_items(), which enables/disables some menu items. gtk-v2/src/metaserver.c: Add calls to enable_menu_items() to disable some menu items before metaserver selection, and to enable them after. MSW 2006-09-04 gtk-v2/gtk-v2.glade: Add callback for pressed event on metaserver quit button - allows alt-Q to work - fix for bug 1551373 gtk-v2/src/interface.c: Rebuilt -- gtk-v2/server/metaserver.c: Make some changes related to bug 1548290 - cached entries show 0 value in players. Add code to check list of servers from metaserver - if we have a match in the cached server list, don't display the cached entry - use the one from the metaserver instead. Also, add logic to not display empty server if the default server is null. -- gtk-v2/src/config.c: Make save_winpos() do actual saving, have on_save_window_position_activate() call save_winpos() - fixes bug 1551395 where savewinpos command does not work. gtk-v2/src/main.c: Remove empty function save_winpos() MSW 2006-09-04 gtk-v2/src/stats.c: Remove extra Player: in the player name. Fixes bug 1528011. MSW 2006-09-03 This change mainly adds support for the extended info messages for the gtkv2 client. Note that unlike the gtkv1 client, the gtkv2 client doesn't in any way try to do pop up windows or fancy graphics - rather, the support is there just so it can do font changes, color changes, etc, within the normal text window. -- common/newclient.h: Sync it back up with server version. Several new MSG_ types added. gtk-v2/src/info.c: Redo info pane handling - move all the relevant variables into a structure - this should make it easier to add more panes in the future, but right now, it means an integer can be passed in to functions to control what pane to draw in. Add support for extended draw info - notably, this means listing alternative fonts, and adding support for different tags. Add callsbacks for the different message types. Add code to process extended text message tags. gtk-v2/src/keys.c: Change the grab focus after user enters command to use the treeview_look widget instead fo the textview - given that the textview is now stored away in a structure, harder to get to that variable. MSW 2006-09-03 common/client.c: fix Win32 compilation. Ryo 2006-09-03 gtk-v2: Fix bug 1528540 - if metaserver window is closed, client is unusable. Take suggested fix - if metaserver window is closed, exit client. Just another hook to last commit. gtk-v2/gtk-v2.glade: Add callback for destroy event on metaserver window. gtk-v2/src/interface.c: rebuilt. MSW 2006-08-21 gtk-v2: Fix bug 1530024 - errors when manually closing a window. gtk-v2/gtk-v2.glade: Add callback for destroy event on main window. gtk-v2/src/callbacks.h, gtk-v2/src/interface.c: Updated by glade with new callback gtk-v2/src/main.c: Code to handle callback MSW 2006-08-20 gtk/gx11.c: if cpl.no_echo is set, hide input. Ryo 2006-08-08 configure: add --enable-cfgtk2 flag, to build gtk1 client with gtk2. configure.in: add --enable-cfgtk2 flag. Add getaddrinfo check. common/commands.c: check buffer length. common/init.c: free allocated memory. gtk/gx11.c: replace some WIN32 with CFGTK2. gtk/win32/config.c: add #define CFGTK2. Ryo 2006-07-29 Make common/cconfig.h act as the default server if set, if not set, connect to metaserver. Prior to this, it always went to the metaserver unless -server option was given. -- common/cconfig.h: Comment out SERVER so by default it connects to metaserver common/client.c: Add handling to initialize server from SERVER if defined, null otherwise. common/metaserver.c: Don't present default server in metaserver selection default is null. gtk/gx11.c, gtk-v2/src/main.c, x11/x11.c: Change command line handling - if server is set, use that as default to connect to. -- MSW 2006-07-17 gtk-v2/src/inventory.c: Add another invisible column to inventory/look lists for sorting based on name without nrof clogging results. Comment out code that makes image fixed width. MSW 2006-07-17 x11/xutil.c: Use snprintf() to avoid possible buffer overflows. gtk/image.c gtk-v2/src/image.c gtk-v2/src/opengl.c: Remove superfluous casts. common/item.h, gnome/gnome.c, gtk/gx11.c, x11/x11.c: Remove unused macros. common/commands.c: Unify/fix calls to LOG(). common/commands.c: In DeleteItem() and DeleteInventory() do not crash if an invalid object tag was received. Andreas Kirschbaum 2006-07-16 Fix problem in gtk1 & gtk2 client when player issues disconnect command - client would hang and consume all CPU time. --- common/external.h: Add declaration to cleanup_connection() common/p_cmd.c: In disconnect command, add call to cleanup_connection() gtk/gx11.c, gtk-v2/src/main.c: Add cleanup_connection() - removes socket from one of the gdk input device, call gtk_main_quit so it returns to metaserver selection. x11/x11.c: Add empty cleanup_connection() - x11 client doesn't need to do anything special. MSW 2006-07-06 More changes related to default logging. Able to specify default log level with configure. Note: you will need to re-run configure after this change, as otherwise MINLOGLEVEL will not be defined in config.h. --- configure.in, configure: Add --with-loglevel= to specify default loglevel. crossfire-client.spec: Update to include --with-loglevel for building RPMs common/config.h.in: Add MINLOGLEVEL #define. common/misc.c: Modify to use the MINLOGLEVEL #define MSW 2006-07-05 Clean up some compile warnings. They generally fall into either wrong form for variable (%lld vs %ld), or cast for data (char* vs uint8*) --- common/client-types.h: Add FMT64 defines like done in the server. Removes need for #ifdef WIN32 in many places. common/client.c: Remove unneeded cast for ReplyInfoCmd(). Change type of length parameter passed to getsockopt() to be a socklen_t. common/commands.c: Change ReplyInfoCmd() to take a uint8*. Add several char*/uint8* casts. Change TickCmd() to also take uint8* common/external.h: Add extern void client_tick(uint32 tick). common/image.c: load_image() so that its fourth param (checksum) is a uint32. In finish_face_cmd() change filename to be a char*. Add some casts in ImageCmd() & Image2Cmd(). Change display_newpng() so its first param (face) is just a int, not a long. Change get_image_info() to take in a uint8* for data, add some casts. Change get_image_sums() to take in a char* common/item.c: Change several buffers used by the socklist structure to be uint8, add casts as needed. common/newsocket.c: Change SockList_Init() so that the passed in buffer is a uint8*, so that is what the target buffer type is. Add some casts and update some types within the program. common/player.c: Change a buffer from char to uint8. common/proto.h: Rebuilt. common/script.c: Change it to take in a uint8 for data. Change %lld to use FMT64 common/script.h: Update declaration of script_watch() gtk/config.c: Remove const from titles. While they may be used as a const, the gtk function they are passed to isn't declared that way. gtk/gx11.c: Remove unused function end_windows(). Replace %lld with FMT64. Removed const from title declaration. gtk/inventory.c: Remove const from titles declaration. re-enable cast for image creation for tabs. gtk/keys.c: Add note about compiler warning and bad code technique for for getting the selection. gtk/png.c: Removed unused variables/function - png_to_gdkpixmap() gtk/text.c: Change void_callback() to match format of other callbacks to prevent warning. gtk-v2/src/gtk2proto.h: Rebuilt. gtk-v2/src/png.c: Remove unused variable. gtk-v2/src/stats.c: Replace %lld with FMT64. pixmaps/question.111, pixmaps/stipple.111, pixmaps/stipple.112: Change types to be char and not unsigned char, since that is what the function tha uses this data expects. x11/x11.c: Replace %lld with FMT64 --- MSW 2006-07-04 Changes related to logging of version information. aclocal, Makefiles.*: Rebuilt for new file in gtk-v2/src. common/misc.c: Change MINLOG to be a variable so it can be changed via command line options. gtk/gx11.c: Have bug window display rcsid versions. Add -loglevel command line option. Move printing of some log messages until after we process command line options since that can change the log level. gtk-v2/gtk-v2.glade: Add an about window for the gtkv2 client. gtk-v2/src/Makefile.am: Add about.c file. gtk-v2/src/about.c: file for about window. gtk-v2/src/callbacks.h: on_about_close_clicked() added by glade. gtk-v2/src/interface.c, interface.c: New logic for about window. New function - create_about_window() gtk-v2/src/main.c: Add -loglevel command line option. Move printing of some log messages after we process command line options. gtk-v2/src/menubar.c: remove menu_about() - now in about.c MSW 2006-07-04 common/misc.c: Make default log level 2 when not in debug mode. Normal users probably don't want all the INFO log messages, and it never makes a good impression about stability/quality if a program spews out lots of errors or other messages. MSW 2006-07-01 Make some changes to the defaults so that the game is a bit more user friendly to completely new users (eg, those that don't have a settings file): -- common/init.c: Turn off popups (gtkv1 client) by default - general seems that it isn't popular, and placement of the popups needs to be fixed. gtk-v2/src/main.c: Change default map size to ask from server to be 25x25 - the gtkv2 client has default window size for that, so lets use it. x11/x11.c: Turn on scroll of text by default - non scroll is really ugly and doesn't make any sense give the power of even very slow cpus now. MSW 2006-07-01 gtk-v2/src/config.c: Fix bug resulting in a crash when opening the configuration dialogue if you have an empty gdefaults2 file. MSW 2006-06-30 Changes for 1.9.1: ------------------------------------------------------------------------------ sound-src/alsa9.c: Fix up sound for alsa9+. Not positive exact change that fixed the problem, but following changes made: Add SOUND_DEBUG_WRITES to separate the debug from writes vs all the other debug messags. If using 16 bit data, always use unsigned no matter wit the sign config option says. In alsa_recover(), if error is EAGAIN, just do nothing and return. In audio_play(), don't write more bytes than chunk size (basically largest block that alsa wants at one time). In play_sound(), don't decrease volume based on maximum number of sounds that may be played at once - this makes things too quiet. MSW 2006-06-25 gtk/gx11.c, gtk-v2/src/main.c: Add checks for csocket.fd==-1 after return of DoClient. With change in DoClient to close the socket, the network routines are not called again (like they used to be), and thus the GUI was't really aware the socket was closed, and wouldn't prompt for metaserver selection. MSW 2006-05-21 Make socket handling more robust. --- common/client.c: In DoClient() properly close the socket if an invalid packet was received. common/newclient.h: Increase the receive buffer size to 65535 bytes. This allows the client to receive any valid packet (even if no currently existing server is supposed to send such big packets). common/newsocket.c: Fix definitions of llevDebug and llevError to make error messages visible. Andreas Kirschbaum 2006-05-21 common/mapdata.c: fix unitialized variable. Ryo 2006-05-17 This commit adds client side support for the map2 & tick protocol commands. In additional the the necessary decode logic, more layers are also added to the map. -- common/Makefile.am/.in: Fix proto directive common/client.c: Add global tick variable. Add links to handle map2 and tick protocol commands. Update setup request sent to server to request to use the tick and map2 commands. common/client.h: Add additional fields to Animations structure. Increase MAX_MAP_OFFSET to match the value on the server. common/commands.c: Add parsing of return of map2 failures on setup command so that client can fall back. Add additional initializations for new fields in AnimCmd(). Change definition of NUM_LAYERS to match what the map1 command wants/expects. Add Map2Cmd() to decode map2 protocol command. Do some whitepsace clean of ExtSmooth(). Add TickCmd() common/init.c: Add seeing of random number generator. common/mapdata.c: Rewrite CLEAR_CELLS macro to handle additional layers. Clear animation data in expand_clear_face(). Change MAXLAYERS to MAP1_LAYERS since map2 increase MAXLAYERS. Add support functions for setting data in the map2 command. common/mapdata.h: Increase MAXLAYERS, add MAP1_LAYERS define to old number of layers. Add animation data to MapCellLayer. common/newclient.h: Add various defines related to the map2 data. common/proto.h: Rebuilt gtk/gx11.c: Add cleint_tick() to handle map animations. Update do_timeout() to not do animations if we are getting tick data. gtk-v2/src/config.c: Fix bug in config code where it wasn't enabling darkness when player switched back from no darkness mode to some mode. gtk-v2/src/main.c: Add client_tick() to handle animations. Update do_timeout() to not do animations if tick is set. gtk-v2/src/opengl.c: Fix drawing logic where objects which were visible but in which the bottom right corner was off the map was not being drawn - only a problem in opengl since it only draws the object when it finds the head, does not draw each piece. sound-src/Makefile.am/.in: Fix creation of sounds file - was using wrong variable name. x11/xutil.c: Add basic client_tick() that is a callback from the common code. MSW 2006-05-14 common/image.c: use the same image hashing algorithm that the server uses for archetypes, increase the table size to 8192 to reduce collisions Brendan Lally 2006-04-12 common/item.c: fix unitialized variable. common/p_cmd.c: fix memory leak. gtk/keys.c: fix memory leak. Ryo 2006-03-14 Yet more changes for gtkv2 clients, mostly aimed at making it usable on lower resolution displays. Window can now be resized to 800x600, added save window positions so it will remember where you moved the panes to (as well as root window size). Unrelated change to this is that now the inventory list is sortable like the metaserver and spell lists are - you can sort by name, weight, or by item type (click on the icon for item type). -- gtk-v2/gtk-v2.glade: Add new menu item for save window positions. Change statbar area so there is a pane between stat bar and stat notebooks. Change statbars so they resize smaller/larger. gtk-v2/src/callbacks.h: callback for on_save_window_position_activate() added. gtk-v2/src/config.c: Add on_save_window_position_activate() and load_window_positions() gtk-v2/src/interface.c: rebuilt. gtk-v2/src/inventory.c: Add LIST_TYPE column for sorting. Change table definitions so columns are sortable. gtk-v2/src/main.c: Add code to allow resizing down to 800x600. Add call to load_window_positions() gtk-v2/src/map.c: Try to set map size based on window size - save some memory. --- MSW 2006-03-10 More updates for the gtkv2 client. Add a config window to change the config options. Note this isn't quite as cluttered as the gtkv1 config window because only the options that affect the gtkv2 client are presented. --- common/client.h: Add CFG_LT_NONE to use instead of 0. common/init.c: Change 'sdl' config name to 'displaymode'. the CONFIG_ parameter was changed a while back, but still used this old name in the save file. gtk/config.c: Add some logic to handle 'sdl' legacy config mode. gtk-v2/gtk-v2.glade: Updated with new config window. gtk-v2/src/callbacks.h: rebuilt by glade-2 gtk-v2/src/config.c: Lots of new code to handle setting/getting of config values in config window. gtk-v2/src/gtk2proto.h: Rebuilt. gtk-v2/src/interface.c: Rebuilt by glade-2 gtk-v2/src/interface.h: Rebuilt by glade-2 gtk-v2/src/main.c: Add call to config_init() to initialize config window. MSW 2006-02-27 ------------------------------------------------------------------------------ sound-src/Makefile.in: replaced SOUNDDIR with SOUND_DIR, so that --with-sound-dir will work now Klaus Elsbernd 2006-03-07 common/p_cmd.c: Update command table for auto-completion to all (non-DM) server side commands. Also check for client side commands. Add a space after a completed command so the player can enter arguments. Andreas Kirschbaum 2006-03-04 Fix bug #1442523 (Crash when pressing TAB during login). Also fix undefined behavior due to overlapping strings passed to strncpy(). common/p_cmd.c: In complete_command() remove hack for x11 client and return NULL if no match was found. gtk/gx11.c, gtk-v2/src/keys.c, x11/x11.c: Adapt to changes in complete_command(). x11/x11.c: Replace strncpy() with memmove() to cope with overlapping strings. Andreas Kirschbaum 2006-03-04 Apply patch #1424583 (IPv6 patch for client) courtesy Christoph Hohmann - (reboot) common/client.c common/config.h.in Ryo 2006-02-26 Changes for 1.9.0: Fix server cache which was broken for some reason. common/metaserver.c Ryo 2006-02-25 Apply patch #1433271 (code-cleanup) by Stefan Huehner: Add const and static, remove unused variables --- Affected files: common/{client.c,commands.c,image.c,init.c,item.c,metaserver.c}, common/{misc.c,newsocket.c,player.c,proto.h,rcs-id.h,script.c,script.h}, gtk/{config.c,gtkproto.h,gx11.c,image.c,inventory.c,keys.c,map.c,png.c}, gtk/{rcs-id.h,sdl.c,sound.c,text.c,win32/soundsdef.h}, gtk-v2/src/{main.c,sdl.c}, x11/{png.c,rcs-id.h,sound.c,x11.c,xutil.c} Andreas Kirschbaum 2006-02-23 More improvements to the gtk-v2 client: - Add spell selection window similar to that in the gtk-v1 client. - Make it so that clicking on the headers in the metaserver and keybinding selection windows will result in table be sorted by that header. -- */Makefile.in: Rebuilt by automake. aclocal.m4: Updated by aclocal. gtk-v2/TODO: Remove things that have been done, add other things mentioned on mailing list that should be done. gtk-v2/gtk-v2.glade: Updated with new spell selection window. gtk-v2/src/Makefile.am: Add spells.c file gtk-v2/src/spells.c: File that handles spell selection window. gtk-v2/src/callbacks.h: Updated by glade gtk-v2/src/gtk2proto.h: rebuilt gtk-v2/src/interface.c: Updated by glade. gtk-v2/src/interface.h: Updated by glade. gtk-v2/src/keys.c: Add necessary calls to enable sorting of table by clicking on headers. gtk-v2/src/main.c: Add call to update_spell_information() if spell information has changed. gtk-v2/src/metaserver.c: Add necessary calls to enable sorting of table by clicking on headers. Convert the idletime and number of players columns to be ints - this makes the sort work as expected, and actually simplifies the code a little. gtk-v2/src/support.h: Rebuilt by glade. MSW 2006-02-22 common/player.c: Fix bug in that spell data wasn't being cleared when logging on. Thus, if you logged on as one character, then another, etc, it would just keep adding to the spell list, not being a representative list of spells character knows. MSW 2006-02-20 gtk/gx11.c: when no skill is sent in a addspell packet, display the skill as 'generic' in the Spell window Brendan Lally 2006-02-20 Improvements to the gtkv2 client - Add free form text box to metaserver selection window so server name can be manually entered, add keybinding interface window to client similar to one in gtkv1 client, and disconnect menu item to client. Note that this keybinding interfaces allows for ALT and META modifiers in addition to SHIFT and CONTROL, hence minor changes to the common code. --- common/client.h: Add meta_on, alt_on to player structure. gtk-v2/gtk-v2.glade: Updated with new elements - keybinding window, new menubar, text box for metaserver window. gtk-v2/src/callbacks.h: Generated by glade for new function prototypes gtk-v2/src/gtk2proto.h: rebuilt for new function definitions. gtk-v2/src/interface.c: Generated by glade for new features. gtk-v2/src/interface.h: Generated by glade for new function prototypes gtk-v2/src/keys.c: New initialization code for keybinding window. New KEYF_ modifiers. New handling for meta and alt keys. Many new callbacks for new code. gtk-v2/src/main.c: Remove unused extern declartions. gtk-v2/src/menubar.c: Add function for disconnect menu item. gtk-v2/src/metaserver.c: Add metaserver_connect_to() to handle common connection logic (pulled from on_treeview_metaserver_row_activated(). Add on_metaserver_text_entry_activate() for text entry server connections. MSW 2006-02-19 Apply modified patch #1432404 (Solve bug in watch stats script function) by Benjamin Lerman: make watch stats command work if more than one stat changes simultaneously. --- common/script.c: In script_watch() do not overwrite but append multiple watch stats commands. Andreas Kirschbaum 2006-02-17 Apply patch #1430279 (code-cleanup: const, static, etc) by Stefan Huehner. --- Affected files: common/{client.c,client.h,commands.c,def-keys.h,external.h, init.c,item-types.h,item.c,metaserver.c,misc.c,p_cmd.c,player.c,proto.h}, gtk/{config.c,gtkproto.h,gx11.c,help.c,inventory.c,keys.c,png.c,sdl.c,sound.c, text.c,win32/soundsdef.h}, gtk-v2/src/{inventory.c,keys.c,magicmap.c,main.c,sdl.c,sound.c,stats.c}, pixmaps/{all.xpm,close.xpm,coin.xpm,crossfiretitle.xpm,hand.xpm,hand2.xpm, lock.xpm,mag.xpm,nonmag.xpm,question.xpm,sign_east.xpm,sign_flat.xpm, sign_west.xpm,skull.xpm,unlock.xpm}, sound-src/{alsa9.c,cfsndserv.c,common.c}, utils/mdk.sh, x11/{sound.c,x11.c,xutil.c} Andreas Kirschbaum 2006-02-16 Apply patch #1429975 (patch to support port numbers in metaserver host names) by Marc Lehmann. --- common/metaserver.c: In metaserver_select() allow a port number in the server string. Andreas Kirschbaum 2006-02-12 common/metaserver.c, common/metaserver.h: Make cached_servers_loaded static since it is not used elsewhere. Andreas Kirschbaum 2006-02-12 gtk/inventory.c, gtk-v2/src/inventory.c, x11/x11.c: Make the message displayed for locked items more descriptive. Brendan Lally 2005-02-09 Remove unscrollable single column resistances option from gcfclient. Change the setting name in the config file and convert old values. Reduce MAX_BUTTONS to 33. Replace radio buttons with a single push button. Remove legacy lighting save code. Remove SHOW_RESISTS, use NUM_RESISTS instead (this reduces the blank space at the bottom of the resistances window). Call resize_resistance_table from get_message_display, remove duplicated code from the latter. Affected files: gtk/gx11.c, config.c common/init.c -- Remove coloured inventory and text options, as well as all supporting code for them. Make text always print in colour. Remove special code for initialising black and white monitors in cfclient, and change its background colour to colour number 9 (to not be the same as so many draw_info's from the server). Change colour number 9 to a pale grey to make text show up better. Affected files: common/client.h, init.c gtk/config.c, gtkproto.h, gx11.c, inventory.c gtk-v2/src/info.c, inventory.c x11/x11.c, x11proto.h, xutil.c Brendan Lally 2006-01-31 gtk-v2/src/opengl.c: For opengl mode, create a subwindow of the map window with the needed visual. On many systems, the visual that glXChooseVisual() returns doesn't match the default visual of the system, thus resulting in opengl not being able to create a context. MSW 2006-01-28 gtk/gx11.c: add a 'spell options' box to allow extra options to be passed to spells, make any mouse button change the spell description, not just the left one and reorder some gtk function calls to improve clarity Brendan Lally 2006-10-21 Fixed compilation for some compilers. gtk/gx11.c inventory.c Ryo 2006-01-19 common/commands.c: actually read the right amount of data on an updspell -- Add spell listing support to gcfclient and common, in particular: common/client.c: addspell, updspell, delspell function pointers, send spellmon in setup common/client.h: Spell struct, add attuned, repelled, denied to stats, add spelldata and spells_updated to player struct common/commands.c: parse stat details concerning spell paths, addspell, delspell, and updspell packet handling common/newclient.h: new flags related to this common/proto.h: function declarations gtk/gx11.c: make the client->spells menu option show a window displaying all spells known to the player, have a function update_spell_list to update it, add a call to this to do_timeout. Brendan Lally 2006-01-19 gtk/gx11.c: make skills display in a scroll pane, display all known skills, not just those with exp Brendan Lally 2006-01-17 gtk/inventory.c: grey out close button when it won't do anything Brendan Lally 2006-01-16 common/commands.c: In DeleteItem() properly handle more than one item. Andreas Kirschbaum 2006-01-13 x11/png.c: Add same workaround from gtk/png.c to make it work on 64 bit systems. MSW 2006-01-01 Made item's nrof uint32, like server-side. Fix a crash in get_number if nrof < 0 (not supposed to happen, server bug, but still). Modified files: common/commands.c item.c item.h proto.h Ryo 2005-12-27 gtk-v2/src/image.c: Remove call to free fog pixels (SDL) - with call in place, client crashes on double free in SDL mode after disconnecting from server. MSW 2005-12-11 gtk/{map.c,sdl.c}, x11/x11.c: General cleanup - just whitespace changes. Andreas Kirschbaum 2005-12-11 Apply patch 1352490 "newpickup rings/amulets client side" courtesy anonymous. Modified files: gtk/gx11.c Ryo 2005-11-12 common/player.c: Properly ignore received comc commands with invalid length. gtk/gx11.c, gtk-v2/src/image.c: Initialize smooth_face field when allocating pixmaps array. Andreas Kirschbaum 2005-11-02 Add support for newpickup PU_NOT_CURSED (ignore cursed items) flag. -- gtk/gx11.c: Add flag #define and menu entry. gtk-v2/gtk-v2.glade: Add menu entry. gtk-v2/src/{callbacks.h,interface.c}: Rebuilt. gtk-v2/src/gtk2proto.h: Add prototype for menu callback. gtk-v2/src/pickup.c: Add #define and menu callback function. Andreas Kirschbaum 2005-11-01 gtk/config.c: fallback to PIXMAP display mode when SDL is not built in. Ryo 2005-11-01 Fix bug #1288647 (typing text in password mode). Now hidden input (for password entry) is reliably turned off afterwards. -- common/command.c: Enable hidden input before printing the query; this allows the gtk client to enable it in his callback function. Also: reset hidden input mode after sending a reply to the server. gtk/gx11.c: Enable/disable hidden input in non-popup input area even if popup mode is enabled. Otherwise hidden input mode will not be disabled when switching to popup mode while entering a password. Andreas Kirschbaum 2005-10-29 common/p_cmd.{c,h}: Remove superfluous "const" from get_num_commands() return value. Andreas Kirschbaum 2005-10-29 gtk/text.c: Print MOTD into text window if using -nopopups mode. Previously it was discarded in -nopopups mode. Andreas Kirschbaum 2005-10-28 Documentation/Scripting.html: Clarify the repeat parameter for the issue command. Andreas Kirschbaum 2005-10-28 common/script.c: Make parameters passed to scripts work again. Andreas Kirschbaum 2005-10-28 common/script.c: fix Win32 that didn't detect end of script correctly. Ryo 2005-10-16 Avoid using c++ reserved words, in case one wants to link a c++ program to client.h Alex Schultz 2005-09-22 common/{client.h, init.c}, gtk/{config.c, gx11.c}: Add configuration option to allow clients to timestamp incoming coloured messages. This implements RFE #1090049 Brendan Lally 2005-09-22 gtk-v2/src/image.c copy part of gtk1 image.c to fix a compile issue on mac. Brendan Lally 2005-09-21 common/external.h: add definition of addsmooth. gtl/inventory.c: explicit cast of parameters. Ryo 2005-09-10 configure, configure.in: Move check for X11 early in the process so that gtk dependencies on them should be resolved. MSW 2005-09-05 x11/x11.c: Fix similar problem for x11 client: need_update needs to be cleared too. Andreas Kirschbaum 2005-09-04 gtk/map.c: need_resmooth needs to be cleared too, else drawing routines called all the time. common/misc.c: LOG buffer made static to avoid stack creation/destruction. common/script.c: removed unused variable/call. gtk/gx11.c: no need to refresh game area when window gets focus. gtk/gx11.h: add cache fields for listinfo. gtk/inventory.c: don't refresh list labels if not changed. common/mapdata.c: remove parasite #define NDEBUG gtk/image.c: if icon and map scales are the same, just gdk_pixmap_ref image and mask. This saves graphical resources and time. gtk/map.c: don't draw black rectangle if no face with transparency. Ryo 2005-09-04 *Makefile.in, aclocal.m4, configure: Rebuilt. Andreas Kirschbaum 2005-09-03 Fix bug #1102991 (Duplicate grapical display of the same monster): common/Makefile.am: Add new files mapdata.c and mapdata.h. common/{client.c, commands.c}: Tell mapdata module the current display size. common/commands.c: Remove functions to handle map updates. Rewrite map1_common() to pass information into mapdata module. common/init.c, gtk/gx11.c: Add new config options -mapscroll and -nomapscroll to enable/disable scrolling the map view with bitmap operations. common/mapdata.[ch]: Add new module to handle all updates to the_map. gtk/gx11.c: Remove code for #if ALTERNATE_MAP_REDRAW. Initialize question mark face for fog of war. Remove code to allocate the_map. gtk/image.c: Do not clear the_map in reset_image_data() anymore. gtk/map.c: Move code to update map data into mapdata module. draw_pixmap(): New function to draw one face. drawsmooth(): Check correct layer instead of fixed layer zero. Fix out of bounds array access. display_mapcell(): New function to draw one cell. gtk_draw_map(): Move map drawing code into display_mapcell(). gtk/sdl.c: Basically the same changes as in gtk/map.c gtk-v2/src/image.c: Basically the same changes as in gtk/gx11.c. gtk-v2/src/main.c: Add config options -smooth/-nosmooth to enable/disable smoothing. Remove code to allocate the_map. gtk-v2/src/map.c: Basically the same changes as in gtk/map.c. gtk-v2/src/opengl.c: Fix out of bounds array access. Initialize question mark face for fog of war. gtk-v2/src/sdl.c: Basically the same changes as in gtk/map.c. x11/x11.c: Implement map scrolling by using XCopyArea(). Add config options -mapscroll/-nomapscroll to enable/disable this. Remove code to allocate or clear the_map. Add new function display_mapcell() to draw one cell. Move map drawing code from display_map_doneupdate() into display_mapcell(). Remove two pixel border around map window; is was used inconsistently, and the window size was four pixels too small. x11/xutil.c: Move code to update map data into mapdata module. Andreas Kirschbaum 2005-08-31 Fix bug #1245535 (negative grace showss up as positive amount): gtk-v2/src/stats.c: Clip negative stat values to zero. Andreas Kirschbaum 2005-08-30 Fix sound compilation so it only tries to compile alsa9 helper if we in fact have alsa 9 libs. */Makefile.in: Rebuilt configure.in, configure: Add ALSA9_TARGET, replacing SOUND_TARGETS which was no longer being used. sound-src/Makefile.am: add EXTRA_PROGRAMS line for cfsndserv_alsa9 so don't get errors from automake, add @ALSA9_TARGET@ to bin_PROGRAMS. MSW 2005-08-28 gtk/config.c, gtkproto.h, gx11.c, inventory.c: Commit patch #1265199 from Kevin Rudat to fix client crash when using split window mode Brendan Lally 2005-08-21 common/misc.c, gtk/{gx11.c,sdl.c,text.c}, gtk-v2/src/sdl.c, x11/sound.c: Fix non-Ansi C89 code: remove "inline" function specifier, replace "//" comments. common/metaserver.c: Fix buffer overflow in metaserver_get_info(). x11/x11proto.h, x11/xutil.c: Use correct parameter type "uint16" for addsmooth(). Andreas Kirschbaum 2005-08-14 This commit adds full automake support for the client - previously, only the gtk-v2 directory used automake, rest was Makefile.in - now everything is automake - makes maintenance and distributions easier. -- common/Makefile.am gtk/Makefile.am help/Makefile.am pixmaps/Makefile.am sound-src/Makefile.am utils/Makefile.am x11/Makefile.am pixmaps/Makefile.in utils/Makefile.in help/Makefile.in: New Makefiles Makefile.am, Makefile.in: Removed unneeded rules, move pixmap, help, util handling to makefiles in their own directories. configure, configure.in: Update to include pixmap, help, util as directories. gtk-v2/Makefile.am, gtk-v2/Makefile.in: Clean up some rules in this makefile. common/Makefile.in, gtk/Makefile.in, sound-src/Makefile.in, x11/Makefile.in: Rebuilt as part of automake. gtk-v2/src/Makefile.am, gtk-v2/src/Makefile.in: Add banner copyright, remove uneeded rules. MSW 2005-08-11 ------------------------------------------------------------------------------ Changes for 1.8.0: Makefile.am, Makefile.in: Add missing pixmaps, change CHANGES to ChangeLog, update archive directive so it works. aclocal.m4: updated configure, configure.in: Updated for 1.8.0 release. Remove gnome/Makefile from list of Makefiles to create. gtk-v2/Makefile.am, gtk-v2/Makefile.in: Add archive directive. gtk-v2/src/Makefile.{am|in}: Add missing soruces to list so that archive works correctly. Add archive directive. MSW 2005-08-10 gtk/keys.c: don't select text in widget under Windows. Ryo 2005-07-30 gtk/gx11.c: fix a crash if closing login window. Weird behaviour, but no crash. Ryo 2005-07-29 gtk/image.c: Remove stray '+' at beginning of line. Andreas Kirschbaum 2005-07-21 x11/x11.c: Fix crash if display cannot be opened. common/script.c: Properly terminate string with '\0' in script_init(). Andreas Kirschbaum 2005-07-18 gtk/sdl.c, gtk-v2/src/sdl.c: Fix printf like format specifiers. Andreas Kirschbaum 2005-07-16 common/init.c: Win32 should use %APPDATA% instead of . for home directory. Ryo 2005-07-10 Bulk of this change is the addition of a pop up window in the gtk-v2 client for metaserver selection, as well as other updates. The files to the common area was really to pull the metaserver defines and data structures from the C file to a header file so that the gtk-v2 code can access them: -- AUTHORS: New file, required by automake, data pulled README file. NEWS: New file, required by automake. Makefile.in, aclocal.m4: Rebuilt README: Remove author info from this file, move it to AUTHORS. common/Makefile.in: add metaserver.h file common/metaserver.h: New file containing metaserver defines and structures. common/metaserver.c: Pull out defines/structures from this file, moved to metaserver.h. Have it strip packets/byte count info from comment section that metaserver reports. gtk-v2/Makefile.in: Rebuilt. gtk-v2/gtk-v2.glade: Added new metaserver window. gtk-v2/src/Makefile.am: Add metaserver.c as a standalone file that gets compiled gtk-v2/src/Makefile.in: Rebuilt gtk-v2/src/callbacks.h, gtk-v2/src/interface.c, gtk-v2/src/interface.h: Updated by glade2 gtk-v2/src/main.c: Remove metaserver.c inclusion. Initialize cached_server_file. Change metaserver selection/display code. gtk-v2/src/metaserver.c: Lots of new code - have it display window, handle selections, connect to server, etc. MSW 2005-07-04 gtk-v2/src/info.c: Remove extra lines of code for scrolling. Have newlines be inserted in the correct place for the color info tab. gtk-v2/src/inventory.c: Remove call to check to display object in inventory tab for container objects - if we show the container object, so all objects within the container (bug 1226968) gtk-v2/src/keys.c: Move initialization of global widges to before loading keybindings - otherwise, they can end up not being initialized. MSW 2005-06-29 Add inventory animation to the gtk2 client. gtk2proto.h: rebuilt inventory.c: Add new function that animates inventory. Have draw_table() take a second param that determines if it is doing an animation run or just a normal draw. main.c: Move PACKAGE_DATA_DIR to be within WIN32 defines. Add call to inventory_tick() in do_timeout() MSW 2005-06-26 common/metaserver.c: wrong number displayed for cached servers. Ryo 2005-06-25 configure.in, configure: Turn of the use of dmalloc as the default - if dmalloc is disabled, it has to be intentionally set. gtkv2 client runs dog slow if dmalloc is used, so that isn't a good default common/item.c: Fix bug that resulted in the item names not being updated properly - bug introduced in patch 1197437. MSW 2005-06-04 crossfire-client.spec, gnome/Makefile.in, x11/Makefile.in: Patch from Kari Pahula to fix manpage paths. gtk/gx11.h: Patch from Kari Pahula to remove incorrect variable declaration. Andreas Kirschbaum 2005-06-01 Committed patch #1197437 courtesy Kevin Rudat (krudat). This patch moves inventory-related functions in GTK client to one specific file. Also makes inventory refresh less often. Affected files: * common: client.h item.c item.h p_cmd.c proto.h * gtk: config.c gtkproto.h gx11.c gx11.h inventory.c Makefile.in * x11: x11.c x11proto.h common/metaserver.c: add server cache. gtk/gx11.c: initialize server cache filename. Ryo 2005-05-23 gtk/gx11.c: Windows has player-specific keys, get'em (was broken with new login window) Ryo 2005-05-12 Add newpickup support to the gtkv2 client. Didn't add old support (still available by specific commands) as I think the interface gets confusing to have them both - would be better to extend newpickup logic if necessary to support anything old pickup does that newpickup doesn't. -- gtk-v2/Makefile.in: Rebuilt gtk-v2/gtk-v2.glade: Add menu options for newpickup gtk-v2/src/Makefile.am, gtk-v2/src/Makefile.in: Add pickup.c file gtk-v2/src/callbacks.h, gtk-v2/src/interface.c: Rebuilt by glade-2 gtk-v2/src/pickup.c: New file - handles pickup logic. MSW 2005-04-17 gtk/image.c: Apply patch from bug 1120881 that fixes pointer operations on netbsd/macppc. Changed code still works on linux/x86. MSW 2005-04-16 Improve behaviour of information windows on gtkv2 client - before this patch, they would always scroll to bottom when getting new output, making it difficult to look at shop listings or other long listings that require going back in the scroll buffer. With this change, if the buffer isn't at the end, the scroll position isn't changed. IF it it at the end, it keeps it at the end. -- gtk-v2/gtk-v2.glade: Chane scrolledwindows used by the textbuffers to have a meaningful name. gtk-v2/src/info.c: Add code that gets position of scroll bar (adjustment) and compares it with maximum, and if not at end, don't scroll window. gtk-v2/src/interface.c: Rebuilt. MSW 2005-04-11 Fix so that magic map works properly on the gtkv2 client. gtk-v2/gtk-v2.glade: change name of map notebook to map_notebook. Add signal to handle expose events of the magic map area. gtk-v2/src/callbacks.h: Rebuilt with addition of expose callback. gtk-v2/src/interface.c: Rebuilt with addition of expose, change of name. gtk-v2/src/magicmap.c: Have magic map switch the notebook page to the magic map page to ensure widget is realized - also good for expected behaviour. Add some checks for null values so if user switches before getting magic map data, doesn't crash. Add check in magic_map_flash_pos() to see if still on the magic map notebook page. Add expose callback. gtk-v2/src/main.h: Add MAGIC_MAP_PAGE which defines which notebook page is the magic map one. gtk-v2/src/map.c: Have it look up the map_notebook widget. MSW 2005-04-05 Various minor bugfixes: configure.in, configure: Add warning message if we can't find gtk+ 2.0 or later, but continue configure process instead of exiting. common/misc.c: Fix code so that it compiles with older C compilers. gtk-v2/src/map.c: Change code on need_recenter_map() - use MAX_MAP_OFFSET instead of hard coded value of 2 - found a crash here when running around the world map - could have been caused by a big image and/or the fact my character moved 2 spaces in one tick. either way, this change shouldn't impact things, as it is seldom the virtual map needs to be recentered. MSW 2005-03-27 This patch fixes a few memory leaks related to image caching in all clients. common/image.c: Declare facetoname[] as static. Add all code accessing this array. Print warning if image cannot be created. gtk/gx11.c, gtk/image.c, gtk-v2/src/image.c, x11/x11.c, x11/xutil.c: Remove code accessing facetoname[]. gtk/gx11.c, gtk-v2/src/main.c, x11/x11.c: Always call init_cache_data() to initialize pixmaps[] array. gtk/image.c, gtk-v2/src/image.c, x11/png.c: Reject invalid face numbers and fix resource leak in create_and_rescale_image_from_data(). gtk/image.c, gtk-v2/src/image.c, get_map_image_size: Pretend invalid faces to be of size 1x1 in get_map_image_size(). gtk-v2/src/image.c: Properly free opengl resources in free_pixmap(). Fix resource leak when freeing old pixmaps in reset_image_data(). x11/png.c: Properly free resources if an error occurs. x11/x11.c: Ignore invalid face numbers. x11/x11.h Remove duplicate definition of MAXPIXMAPNUM and facetoname[]. x11/xutil.c: Initialize size of pixmaps[0]. Andreas Kirschbaum 2005-03-27 gtk-v2/src/map.c: Fix typo to make it compile without opengl. Andreas Kirschbaum 2005-03-26 Main change of this is addition of opengl drawing for the map in the gtk-v2 client. On my system, the opengl code is about 10 times faster than the sdl code was, making it so I can turn on all the bells and whistles (smoothing, best lighting) and still use less than 10% cpu time. As part of this, I redid the smoothing logic, so the client now requires a new server for smoothing to work (needs push logic, as client won't request smoothing info as that adds a lot of complication). This change was done because the old smoothing code wasn't that efficient - now, we store the smoothing face along with the face it smooths, so finding the smoothing info is much faster. -- configure.in, configure: Add check for -lglut - indication we have opengl libraries available. common/client.h: Remove Smooths struct. Change CONFIG_SDL to CONFIG_DISPLAY, and add CFG_DM_... to denote different display modes, since there is more than just sdl and not sdl now. common/commands.c: Don't have SmoothCmd try to update what spaces need to be redrawn - for opengl, it doesn't care about that, and for most other maps, it will figure it out when it needs to redraw anyways. common/config.h.in: Addition of HAVE_OPENGL line. common/image.c: Remove getsmooth() - rely on push logic. common/init.c: Update want_config[CONFIG_SDL] to want_config[CONFIG_DISPLAYMODE] gtk/config.c: Change access to CONFIG_DISPLAYMODE gtk/gx11.c: Change access to CONFIG_DISPLAYMODE. Add -smooth command line option. gtk/gx11.h: Add smooth_face to PixmapInfo struct. gtk/image.c: Change access to CONFIG_DISPLAYMODE. When getting new PixmapInfo struct, use calloc so we are sure all fields are initialized to zero. Add addsmooth(). gtk/map.c: Change access to CONFIG_DISPLAYMODE. Change how we access smooth face info. gtk/sdl.c: Change how we access smooth face info. gtk-v2/src/Makefile.am, gtk-v2/src/Makefile.in: Add addition of OPENGL_LIBS to link libs. Add opengl.c file. gtk-v2/src/config.c: Add image.h include. gtk-v2/src/gtk2proto.h: Rebuilt. gtk-v2/src/image.c: Change access to CONFIG_DISPLAYMODE. Add hooks for opengl image generation. Change call for pixmap creation from malloc to calloc. Add addsmooth(). gtk-v2/src/image.h. If we have opengl, include GL/gl.h. Add fields for opengl texture maps. gtk-v2/src/info.c: Update so text line wraps if it is too long. gtk-v2/src/inventory.c: Add checks to make sure object face is valid before trying to draw. In icon mode, add code to cleanup old fields (if you drop an item, it wouldn't erase the list item in the list). Also, free callbacks, as they effectively stack, and we were using incorrect object pointers (pointer from first callback, which didn't match current one). gtk-v2/src/keys.c: Add image.h to includes. gtk-v2/src/main.c: Add image.h to includes. Change access to CONFIG_DISPLAYMODE. Add -opengl command switch. Remove +sdl and popups command line options. Relocate setup of cache call setup to after we know all windows have been created. gtk-v2/src/map.c: Change access to CONFIG_DISPLAYMODE. Add opengl drawing hooks. Change access for smooth info. Implement button press code for map window (basically grabbed from gtk/map.c) gtk-v2/src/opengl.c: New file containing opengl draw code. gtk-v2/src/png.c: Remove some unused code resulting in compile warnings. gtk-v2/src/sdl.c: Remove some commented out code. Change access method for smoothing code. x11/xutil.c: Change access to CONFIG_DISPLAYMODE. Add addsmooth() function. MSW 2005-03-20 Applied patch #1161817 (cowboyatheart): Add wands/staves/rods/horns to new pickup (client). gtk/gx11.c: add new 'magic devices' menu option. Ryo 2005-03-13 More improvements for the gtkv2 client, mostly adding SDL support: gtk-v2/TODO: updated gtk-v2/src/logfile: Removed - don't need dmalloc logfile. gtk-v2/src/Makefile.am, gtk-v2/src/Makefile.in: Change program name from 'gtk-v2' to 'gcfclient2'. Add sdl.c to list of files. gtk-v2/src/gtk2proto.h: Rebuilt gtk-v2/src/inventory.c: Fix bug in show_nonmagical() (which corresponds to inventory tab) - was showing unpaid objects, not nonmagical objects. gtk-v2/src/main.c: Remove time_map_redraw declaration from function, since it is declared in map.c. Change map logic to draw when we finish processing network data. Change client naem as it reports itself to server to GTK2 ... Client. gtk-v2/src/map.c: Add map_updated variable which is set by display_map_doneupdate - used by map draw function to know if anything has changed. Clean up some formatting, remove unused code. gtk-v2/src/sdl.c: New file containing sdl support. MSW 2005-03-07 Commit for GTKv2 client - please read gtk-v2/README before using this client. The bulk of the changes are limited to the gtk-v2 directory (addition), but some changes elsewhere as related to using automake. You will need to run configure for the gtk-v2 client to be built (it should be built automatically if you have the needed libraries) -- Changelog: Replaces CHANGES file to meet automake standards. Makefile.am: New file for use with automake. Makefile.in: rebult from Makefile.am aclocal.m4: Updated with macros to check for gtk-v2. configure.in: checks for gtk-v2 added. Chane SUBDIRS to CF_SUBDIRS as using SUBDIRS causes conflicts. utils/config.guess, utils/config.sub, utils/missing: Updated as part of automake changes. gtk-v2/*, gtk-v2/src/*: Files related to gtk-v2 client. MSW 2005-03-01 crossfire-client.spec: Update for 1.7.1 release, make some other changes that better match my system since I don't think anyone else is using it. gtk/Makefile.in: Add crossfire-client.desktop to list of files to add to distribution. README.rpm: removed - had info that didn't really apply to me making RPM files configure.in, configure: Add --disable-dmalloc option to configure. MSW 2005-02-28 ------------------------------------------------------------------------------ Changes for 1.7.1: configure, configure.in: Rev for 1.7.1 release sound-src/Makefile.in: Add files to EXTRA_DIST, fix typo so that make arhive works. MSW 2005-02-27 Add 'show' command back in to list of commands. common/external.h: Change prototype of command_show() to match p_cmd.c prototype. common/p_cmd.c: Add 'show' to command dispatch table. gtk/gtkproto.h: rebuilt gtk/gx11.c: change declaration of command_show() to take const char *. gtk/sdl.c: Make drawsmooth_sdl() static so it won't be put into gtkproto.h file, which causes compilations to fail. x11/x11.c: change declaration of command_show() to take const char *. x11/x11proto.h: rebuilt MSW 2005-02-26 common/metaserver.c: Once we have read in limit of number of metaservers, don't do anymore processing - otherwise, client just crashes. MSW 2005-02-19 Sound cleanup and redo for ALSA9. The bulk of this is to break out the alsa9 code from the cfsndser.c and compile its own seperate cfsndserv-alsa9 executable. Add options to config file/gtk client to support setting which sound daemon to use. Note that ALSA9 sound now works all properly - significant changes had to get made to the code for this to happen. -- configure, configure.in: The existence of ALSA9 sound does not preclude compilation of OSS sound support (or others for that matter), so change the logic accordingly to set variables only used for ALSA9. Add SOUND_TARGETS that can be used by the makefile, change logic of setting SUBDIRS so we don't put sound-src in multiple times. common/client.c, common/client.h: Add sound_server variable. gtk/config.c: Add support for loading/saving sound_server line in gdefaults file. gtk/gcfclient.man: Update about -sound_server option. gtk/gx11.c: Update help and command line processing to support -sound_server option. gtk/sound.c: Change initialization of sound pipe to use sound_server variable (set by options above) instead of hard coded cfsndserv. Path can be either be absolute or relative to to bindir. Also change code so that pipe is set for non blocking output, so if the sound daemon gets hung up, won't effect rest of the client. sound-src/Makefile.in: Redone to handle cfsnserv-alsa9 binary. uses SOUND_TARGETS to know what to build. sound-src/cfsndserv.c: Remove all ALSA9 code, since that is now in alsa9.c file. sound-src/alsa9.c, sound-src/common.c: Nwe files - alsa9.c contains logic for playing sound. common.c is common routines. Idea being that other code could get pulled from cfsndserv.c and use the common.c routines for parsing sound file, etc. MSW 2005-02-13 common/script.c: fix broken script with a parameter change. gtk/help.c: use 'const gchar' instead of 'gchar' as widget text. gtk/win32/config.h: snprintf => _snprintf Ryo 2005-02-12 Makefile.in, common/Makefile.in, gnome/Makefile.in, gtk/Makefile.in, sound-src/Makefile.in, x11/Makefile.in: Add ${DESTDIR} prefix for installation into other directories. Patch from sourcefore #1061895 MSW 2005-02-09 common/external.h, common/init.c, common/player.c, common/proto.h, common/script.c, common/script.h, common/p_cmd.c (new file), common/p_cmd.h (new file), gtk/gtkproto.h, gtk/gx11.c, gtk/help.c (new file), gtk/keys.c, help/chelp.h, x11/x11.c, x11/x11proto.h, x11/xutil.c: Install command table for client side commands - makes adding commands a little easier, but also makes it easier to have better help. Bulk of the changes are in p_cmd.c file, which pulled some code out of player.c. Other source files modified to clean up function parameters (all now take const char * as the command options). Patch from sourceforge 1022245, with some work done by me. Addition fix in gtk/keys.c unbind - buffer overflow would result if unbinding very long binding. MSW 2005-02-09 common/client-types.h: use char instead of __int8 under Windows. common/commands.c: use 'const' for strings when possible. common/misc.c: use 'const' for strings when possible. common/newsocket.c: use 'const' for strings when possible. common/player.c: use 'const' for strings when possible. common/proto.h: use 'const' for strings when possible. gtk/gx11.c: use 'const' for strings when possible. gtk/keys.c: fix a buffer overflow in 'unbind' when displaying keys. Use 'const' for strings when possible. gtk/win32/config.h: don't define 'G_DISABLE_CONST_RETURNS' anymore, strings are now correctly const. Ryo 2005-02-05 Makefile.in: Fix up distclean directive to go into all directories. configure.in, configure: Fix configure so the --enable-feature and --disable-feature flags follow proper standard (from patch on sourceforge). Add check for -lossaudio. Modify check for -lSDL_image library - don't require it for SDL support (if we have it, we'll use it, but for newer versions of SDL, it doesn't seem to exist anymore) common/client-types.h: Minor formatting change. common/script.h: add defines for PF_LOCAL and AF_LOCAL if they are missing. gtk/Makefile.in: Install man page into section 6. sound-src/Makefile.in: Fix up depend command - had wrong variable. Fix up distclean to remove automatically generated files. x11/Makefile.in: Install man page into section 6. MSW 2005-02-04 gtk/gx11.c: send text first, then close popup. Else won't work under some circumstances, text is empty. Fix party password dialog containing only ':' (missing case in dialog handling). Ryo 2005-01-07 common/script.c: add 'signal.h' header, needed for NetBSD. gtk/keys.c: fix buffer overflow when binding a very long command. This fixes bug #1085729. gtk/win32/config.h: fix S_ISDIR macro, even if not used. Ryo 2004-12-21 gtk/win32/config.h: Add parentheses around arguments of sleep and usleep macros. Andreas Kirschbaum 2004-09-19 common/script.c: warn when script start failure (Linux), patch courtesy Kevin Rudat. Check there actually is a parameter to 'script', else that'd crash nicely. Ryo 2004-08-16 gnome/gnome.c, gtk/gx11.c: Fix improper access to history buffer variable. Andreas Kirschbaum 2004-05-24 gtk/gx11.c: Comment out printing of size when we receive config event. gtk/image.c: Remove some superfluos LIL_ENDIAN code that would never be used because it was already in an #ifdef LIL_ENDIAN/#else block. Fix up freeing of data - need to free the pixel info before freeing the surface, don't free the fog pixels since SDL will do that for us. MSW 2004-05-15 gtk/image.c: Patch from bug list to fix compilation on big endian machines. MSW 2004-05-11 gtk/gx11.c: Fix configure_event() to only allocate new data structures if the size of the map area has in fact change. This fixes a major memory leak, as it seems gtk erroneously generates configure events. gtk/map.c: Clean out some commented out code, clean up the formatting of the draw_map function - no actual code change. MSW 2004-05-08 ------------------------------------------------------------------------------ Changes for 1.7.0: common/client.h: synced client version to 1023. gtk/win32/config.h: changed version numbers. gtk/win32/gtkclient.nsi: added scripting documentation. Checks for GTK. gtk/win32/Win32Changes.txt: updated. Ryo 2004-04-25 gtk/win32/porting.c: tweaked SDL's sound support to use panning information. Added missing header files. Ryo 2004-04-11 gtk/win32/porting.c: implemented basic sound with PlaySound. gtk/win32/gtkclient.dsp: added winmm.lib to link list. Ryo 2004-04-11 This is related to Win32 scripting. It now works correctly thanks to archaios's patch. I tweaked it some, so if it doesn't work, my mistake :) common/metaserver.c: call 'script_killall' under Win32 when exiting. common/script.c: some Win32-specific magic to make it work. common/script.h: add Win32-specific function. gtk/gtkproto.h: Win32-specific function. gtk/gx11.c: call the scripting functions for Win32, not like other platforms. Ryo 2004-04-04 common/metaserver.c: use 'draw_info' to report being unable to connect to metaserver. Also changed failure color from red to black, so it appears after the 'trying to connect' even in split window mode. gtk/gx11.c: correctly refresh text windows so failure messages appear. Ryo 2004-03-12 gtk/keys.c: Windows now uses default 'keys' file if player file not found for key loading. Ryo 2004-03-04 configure.in: Remove checks for gnome libraries, since we no longer use gnome/build a gnome client. aclocal.m4: downgrade requirement for needed autoconf version. MSW 2004-02-05 common/init.c: changed 'printf' to 'LOG' for HOME Win32-warning Ryo 2004-02-01 common/image.c: fix stupid crashing mistake. common/rcs-id.h: remove ; after #define gtk/rcs-id.h: remove ; after #define gtk/sound.c: #ifndef WIN32 for cfsndserv specific parts Ryo 2004-01-30 all .c files: all Makefile.in: all rcs-id.h: Basic logging is now complete. All console messages sent by client are now sent to LOG(). All source files versions have are sent to LOG() at startup too (except for the still non compilable gnome client!). Gtk client can show the Logs in 'Help -> Report a Bug' along with a small doc on how to bug report Tchize 2004-01-30 Documentation/ Have added a Documentation directory. It contains a first basic how-to related to client side scripting with two examples. Tchize 2004-01-29 Those fixes are all Win32-specific, except the last one on keys.c common/commands.c: Use correct Win32 function for closing socket. common/image.c: Added missing headers, use correct mkdir syntax. Change a call to 'read', to be on the safe side. common/misc.c: Added missing headers, use correct mkdir syntax, stub functions not yet ported. common/player.c: Use correct Win32 function for closing socket. gtk/gx11.c: Disabled bug window font setting, as GTK2 apparently doesn't use the same fonts. Use correct function for closing socket. gtk/keys.c: Don't display 'Key unused' for left-alt & windows key (as they are often used to switch away from CF). Also fix a potential use of a variable not initialized (rare line corruption case) Ryo 2004-01-29 common/client.c: Win32-specific fixes. common/metaserver.c: small Win32 fixes, explicitely cast meta_sort in qsort. gtk/config.c: Win32-specific fixes. gtk/map.c: added Win32-specific header. Ryo 2004-01-27 common/item.c: check supplied argument to remove_item_inventory is not NULL. Ryo 2004-01-25 gtk/map.c, gnome/map.c: Apply patch by kirschbaum@myrealbox.com which fixes improper coordinate comparision. gtk/gx11.c: Remove some unused declarations. gtk/map.c: always set the cleared flag as spaces come into view. MSW 2003-11-28 gtk/gx11.c: fixed invalid level display for skills under Win32 (int64 issue, %lld doesn't work under Win32) Also removed dumb Win-newlines from previous commits. Ryo 2003-11-22 common/client.h: readded (Win32 only) player's name. Used for specific key bindings file loading/saving. common/script.c: made dummy functions to correctly compile under Win32. Actual implementation will come someday :) Ryo 2003-11-10 x11/x11.c: Fix button pressing in the game window so it properly deals with non standard size maps. MSW 2003-10-26 Those fixes are for Windows compilation ('for Windows' is implicit everywhere). Most code was borrowed from Philip aka Somebdy's previous GTK port. Note: the changed code is embedded in #if(n)def WIN32 / #endif. --- Win32-Readme.txt: added to tell about supported clients under Windows. common/client-types.h: Windows-specific typedefs. common/client.c: missing include fixed, changed fcntl for ioctlsocket. common/image.c: forced opening of files in binary mode to avoid bad troubles. common/init.c: make sure HOME is set, to correctly find paths. common/metaserver.c: made it work, with a specific function (fgets can't work). common/newsocket.c: fix GetInt64_String. Make write_socket and SockList_ReadPacket work. gtk/config.c: use correct header file gtk/gx11.c: fix bad header files. Fix g_free() / free() issue. Catch player's name to load specific keys. Fix score display issue. Other specific stuff. gtk/gx11.h: fix undefined X-Window specific type (Window). gtk/image.c: fix headers. gtk/keys.c: fix headers. Key file uses player's name, when known. Fix input issue with 'entrytext'. Fix missing KeyCode type. gtk/map.c: fix headers. gtk/png.c: fix headers. gtk/win32: Windows specific files. Ryo 2003-10-26 common/client.h, common/newsocket.c: Remove 'extern in errno' lines - errno.h is included, which takes care of the problem. MSW 2003-10-25 ------------------------------------------------------------------------------ Changes for 1.6.0: common/commands.c: Clean up some formatting. common/item.c: Add num_free_items() to try and help see some memory laakage. common/player.c: Add num_free_items command which calls above routine. gtk/gx11.c: Fix movement/firing by using mouse pointer. Map size was hard coded in, so didn't work correct if non standard map size was used. MSW 2003-10-09 Add an option to the gtk client which controls what happens when you use apply to cycle through containers. It used to be closed->applied->open->applied. Now, if you select the config option, it goes closed->applied->open->close->.. common/client.h: Add new config variable. common/commands.c: Remove some dead commented out code. common/init.c: Update save name for config value. gtk/config.c: Update to have menu option in config window. gtk/gx11.c: Change close_container() to send/not send apply based on setting. Add close_container_callback() which is used for the 'close' button, which has to always send the apply command. MSW 2003-10-08 common/commands.c: improve expand_face() - there was the problem if multipart object that overlapped not always being drawn properly. This is because expand_face would basicaly put the first one it received on the lower stack - this is fine if you came from above, but was incorrect if you approached from the south. expand_face() now checks to see which one should overlap the other, based on where the coordinates would put it. MSW 2003-10-07 Bulk of this commit is to fix big image support for the X11 client. common/client.h: Add a couple new defines to denote how big the largest image may be, minimum reasonable map size for the_map structure, and how far off the map a head could be. x11/png.c: Remove hard coded values of images being 32 pixels wide/high. Also, store away actual size of images, needed for big image stuff to get filled in properly. x11/x11.c: Add an error handler to make it easier to catch bugs (gets real stack trace instead of the program exiting). Fix up the gen_draw_face to properly draw big images, change call to allocate map to pass in new larger values. x11/x11.h: Add width, height values to Pixmap data structure. x11/xutil.c: Change the routine to recenter virtual map some - we need to take into account that there can be big images, so include that value in when seeing if we are too close to the map edge. MSW 2003-10-05 common/commands.c: Add call to reset_player_data() - necessarily for data to be sanely displayed for next time player logs in. common/init.c: add reset_player_data - clears out skill data. gtk/gx11.c: Add code to erase skills that current player doesn't know. Some alternative map drawing code also in place, but disabled. gtk/gx11.h: Add ALTERNATE_MAP_REDRAW define. gtk/sdl.c: Add check for ALTERNATE_MAP_REDRAW. MSW 2003-09-12 common and gtk: Client understand the smoothing protocol and the gtk client is able to draw the smoothing information. Tchize 2003-07-08 gtk/gx11.c: Change skill experience display - instead of skill name and exp/level being the same string and same table element, add additional columns, so the skill name is in one, the exp/level in another. IMO, this makes for cleaner display, as the exp totals for the different skills then line up better. Also, fix some display bug when new skills need to be displayed. x11/x11.c: Fix bug where stipple patterns where being improperly displayed/retained in fog of war and darkness modes. x11/xutil.c: always set cleared and need_update flag for map scrolls - fixes bug of big objects (griffons for example) not being drawn properly. MSW 2003-05-25 x11/x11.c: Add darkness and fog of war tiling stipling, so it is now clearer what spaces are dark and which spaces are fog of war spaces. Add -fogofwar and -nofogofwar command line options. MSW 2003-05-18 Bulk of this change is to support the upcoming split skill experience system. skill names are now sent to the client. Backwards compatibility with older servers is in place - however, the client will now only show those skills which the player has a non zero exp total in the stat window. -- configure, configure.in: Add checks for size of long and long long - needed to have 64 bit types. common/Makefile.in: modify proto to define CPROTO so we can avoid including proto.h when cproto runs. common/client-types.h: Add checks to define uint64/sint64 types. common/client.c: Modify setup command to send 'exp64' request. Change definition of skill_names. common/client.h: Make MAX skilled tied in with CS_NUM_SKILLS. update exp and skill_exp to 64 bit types. Don't include proto.h if CPROTO is defined. common/commands.c: Add get_skill_info() which gets skill number->name mapping. Add code to handle exp64 setup request/failure. Update StatsCmd to support 64 bit exp for new skill mapping, as well as 64 bit overall exp for player. common/config.h.in: Add SIZEOF_LONG and SIZEOF_LONG_LONG for autoconf. common/external.h: Add menu_clear() protoype. common/init.c: Add code to init skill values/names. common/newclient.h: Resync from server code. common/newsocket.c: Add GetInt64_String() function. common/proto.h: rebuilt. gtk/gx11.c: always include errno.h. Modify layout of skill exp table (properly set up rows/columns). Add some padding to the entries, and don't pre-set the names. Modify draw logic to handle 64 bit values. Modify draw to only draw skills which player has exp in. x11/x11.c: update draw logic to handle 64 bit exp values, only draw skill exp when player has exp in the category. MSW 2003-05-17 common/client.c: Add some usleeps() in negotiate_connection() - this reduces cpu load when negotiating the connection (given 10 ms for data to actually come in before checking for new data). Also, add a count and if we don't get a response back from the server in the time frame, bail out. MSW 2003-03-24 configure.in, configure: checks added for alsa9 sound - update for cfsndserv.c should come shortly. common/client.c: Fix setup problem - it was using FOGWAR setting when determining if client wanted darkness - should have been using darkness setting. This was resulting in darkness not being used if fog of war was turned off. x11/x11.c: Modify handling of mouse button press logic - rather than only modifier being shift, do appropriate logic if the shift mask is set, but does not have to be only modifier set. -- The following bits changes how fog of war looks in SDL mode. Now, fog of war spaces are drawn in greyscale, instead of half darkness. This makes it clearer what the status of the space is (fog of war/darkness). This change probably uses less cpu to draw, but uses more memory for the images (as it now has to store a rendered greyscale image). If not using SDL, you'll still have the old behaviour (dimmed spaces for fog of war), and no significant amount of extra memory will be used. -- gtk/gx11.h: Add fog_image pointer to PixmapInfo structure. gtk/image.c: Add code to render greyscale image. Also add code to free greyscale image. gtk/sdl.c: Modify map draw code to use grey fog image if space is fog of war space. Disable dimming of fog spaces - no longer necessary as space now looks different. MSW 2003-03-24 ------------------------------------------------------------------------------ Changes for 1.5.0: gtk/png.c, x11/png.c: Fix bug in rescale_rgba_data() that was potentially causing a 1 byte overrun of malloc'd data, that could result in crashes or other odd problems. MSW 2003-02-19 common/init.c: Make sure we initalize all the config values. gtk/gx11.c: fix foodbeep - now only beep when food is low, and continue to beep when food reaches 0. sound-src/Makefile.in: Remove gx11.c in depend statement. MSW 2003-02-04 gtk/config.c, gtk/gx11.c: remove including some files which we don't need included. gtk/keys.c: Modify to not use X11 for keybinding - instead, uses gdk functionality - this should make it more portable. MSW 2003-01-22 Patch by scachi@gmx.de to add different display options for the players resistances. common/client.h: increase CONFIG_NUMS and add CONFIG_RESISTS common/init.c: extend resists_table, initialize resist value to proper value. gtk/config.c: Add config option for selecting different options for resistance displays. Add comment about radio button usage. Increase size of config window. gtk/gtkproto.h: rebuilt. gtk/gx11.c: Update get_message_display to support different resistance display options. Add resisze_resistance_table function. Disable code the causes the message window to get relocated next to the stats display on wide displays. MSW 2003-01-12 x11/x11.c: Patch by Jochen Suckfuell that fixes problem of lines printed out while entering extended commands causes the extended command line to get overwritten - the extended command line is now copied to the next line. common/client.c: Add handling of client if it loses its connection to server during setup phase. common/newsocket.c: Have SockList_ReadPacket return -1 if it gets a real error on read - in this way, callers can tell if error is terminal or retryable (return code 0) MSW 2003-01-03 common/player.c: Break out some of the extended commands into there own function to make the extended_command function more readable. Alphabetize strcmps in extended_command. Add special processing for the 'take' command so that it handles open containers properly. gtk/gx11.c: Add version information to the About dialogue box. gtk/key.c: Fix bug in that extended commands (') didn't work right and would crash the client if not entered in info window. Entering these now works properly, and crashes are removed. Clean up formatting of affected function keyfunc(). help/about.h: Add extra newline to text to make it look better with the version string above. MSW 2002-11-30 gtk/gx11.c: Add patch by jshelley@ictransnet.com that fixes save window positions. MSW 2002-10-03 ------------------------------------------------------------------------------ Changes for 1.4.0: common/image.c: Fix bug of not fulling clearing the cache entry data after allocation. This resulted in various random crashes when using cached image mode. x11/x11.c: Add note about -facset. CHANGES, Makefile.in, configure, configure.in: Update for 1.4 release MSW 2002-09-14 common/item.c: Update comment about possible sorting improvements. gtk/gx11.c: Add missing foodbeep functionality to GTK client. MSW 2002-08-13 gtk/config.c: Fix crash when trying to apply config changes when compiled with SDL support but user is not using it. Fix bug where settings were not being properly updated. gtk/sound.c: initialize sound_pipe to NULL, and have init_sounds close the sound pipe if there is currently one open - fixes bug when switching sound control many times in that multiple cfsndserv processes could get started. MSW 2002-07-25 Makefile.in: if no makedepend, don't run make depend directive. README: Add not about ALSA revisions and possible problems compiling. MSW 2002-07-10 This commit adds graduated colored statbars to the gtk client. What this means is that the color of the statbar goes smoothly from red to yellow to green depending on what percentage of your hp/sp/grace/food is compared to your maximum. To use this, you need to go to the config pane and hit the 'gradually change stat bar color' button. common/client.h: Add CONFIG_ value for this, increase CONFIG_NUMS. common/init.c: Add "grad_color_bars" to config_names array. gtk/config.c: Add button to select this behaviour. Move all the special config checks to beyond the for loop that checks the values in apply_config(). There is no need to check all the values on each loop. gtk/gtkproto.h: Rebuilt for inclusion of reset_stat_bars() gtk/gx11.c: Add two styles to the Vitals (stat bar) structure so we can alternate between them. Default is to initialize one for green and the other for red (in non graduated color mode). This should be more efficient then allocating a new one each time we need to change the value. add reset_stat_bars() to reset the colors of the styles to red and green - needed because the graduated color code will change the colors of these. Remove code that freed these styles. Modify draw_stat_bar() to draw them in color or simple mode, in simple mode, we now just need to use the appropriate style and not allocated a new one. Modify draw_message_window() to pass bar values greater than 1 to the draw_stat_bar() function - in graduated color mode, we draw such values with a blue tinting (more blue the more over it is). draw_stat_bar() knows how to properly deal with these higher values. MSW 2002-07-04 gtk/config.c: Fix setting of radio button set state - it was always setting the same (last) radio button as the active button, which did not match state - now it sets the proper button active - this is for the lighting control toggle. gtk/map.c: Add/subtract 2 to the need_recenter_map function - in this way, code that checks known display position +/-1 will still be within map array. gtk/sdl.c: Fix per pixel (fastest and best) lighting code - this got broken quite a while - it was looking to see if the coordinates for the map structure where within range, and not the real coordinates. Since the map coordinates would almost never be within range, the effect was that the per pixel effects more ore less looked like the per tile effects. MSW 2002-07-03 ------------------------------------------------------------------------------ Changes for 1.3.0: Add support for the 'item2' command. This lets us get the item type from the server so that we don't need to figure it out for ourselves. Also, remove support for the 'item' command - that has long since been obseleted by the 'item1' command. -- common/client.c: Remove 'item' from dispatch table, add 'item2'. Add 'itemcmd 2' as part of setup command we send to server. common/commands.c: Add handling for response of 'itemcmd' setup command from server. Remove ItemCmd() function. Add type to calls to update_item(). Change Item1Cmd() function to be called common_item_command() since both item1 and item2 use almost exactly the same logic. Add Item1Cmd() and Item2Cmd() which just call common_item_command() common/item.c: Init item types to 'NO_ITEM_TYPE'. Remove get_nrof() as it was no longer being used. Add type argument to set_item_values() and update_item(). Simplify code in case of name handling, since we know that we will be using at least the 'itemcmd'. Don't worry about getting proper nrof for the player object - its nrof isn't really meaningful anyways. common/item.h: Add #define NO_ITEM_TYPE. Update type field in item to be 16 bits. common/proto.h: rebuilt. MSW 2002-05-30 The bulk of this checkin adds support in the client for the map1a protocol command and the display of big images properly in the map window. A lot of code cleanup was also done however, including removal for the support of the 'map' (original) command. The map1 has been in the server code for quite a while. TODO: Update what needs to be done for the x11 client. common/client.c: Remove map command, add map1a command to dispatch table. Modify setup we send to server to always try to use the map1a command - there is no reason not to use it. common/client.h: Change some of the CONFIG_ values - basically, change it so that there is just one entry for lighting configuration, but it can have any number of values. Modify MapCell so that instead of having multiple arrays for the different values (faces, sizes), add a MapCellLayer structure that contains the specific face information for that layer. Move the PlayerPosition struct and value to this function so that more of the map decompress logic can be handled in the common code. Remove count value from MapCell since it wasn't really being used. common/commands.c: Add code to set the use_config[CONFIG_CACHE] value based on what we get back from the server. Add code to check the setup response for the for the map1a and map1 options. Add code to deal with expanding big images into appropriate spaces. Move some functions from the gui portion to (display_map_clearcell, set_map_face). Add code for map1_common function to deal with map1a extensions. common/external.h: Remove display_map_clearcell and set_map_face from list of external functions. Add get_map_image_size function. common/init.c: change some values of the config values. Update initialization of config values for lighting. common/proto.h: rebuilt. gtk/config.c: Add new button for lighting - best per pixel. Modify code to properly deal with how lighting preference is now stored. Add legacy support for loading of per_tile_lighting and per_pixel_lighting values from config file. Add diagnostic of bad value if selected map/width is out of range. gtk/gtkproto.h: rebuilt. gtk/gx11.c: Change formatting of draw_list. Modify it so that it adjusts the column/row width based on the largest image it needs to display - In this way, if a player stands on a big building, the entire building is displayed in the look list. add row_height and column_width values so we only need to call the function to change them if they are in fact different. Add +sdl command line option to disable sdl code. Modify gtk_draw_map to include redraw parameter. gtk/gx11.h: remove PlayerPosition structure. add row_height, column_width elements to itemlist structure. gtk/image.c: Add table that is used to determine the scaling used for big images in the look list - in this way, big images still appear big, but not necessary 2 or 3 times bigger. Modify create_and_rescale_image_from_data to use this logic. Add get_map_image_size which the common code uses to determine the number of spaces an image may be. gtk/map.c: remove display_map_clearcell and set_map_face functions - now in common code. Modify the dump map/darkness routines to use the new format of the MapCell structure. Modify set_darkness to only set adjoining spaces for needing an update if lighting type is set that needs this. Remove display_map_addbelow - only used for 'map' command. Modify logic of fog of war code to have it done all at display time - not when setting/clearing a cells contents. Modify gtk_draw_map - this basically follows the same logic of sdl_draw_map - it is now better optimized to only draw the spaces that have changed, and not the entire map - this should improve performance considerably. gtk/sdl.c: Remove #if 0 around putpixel - used for best lighting. Change indention of init_SDL - modify it so that if just_lightmap is true, that really is the only thing that is changed. Modify per_pixel_light code to use both methods of per pixel lighting depending on player prefernce. Modify sdl_gen_map to properly handle draw portion of big images. x11/png.c: Add get_map_image_size function. x11/x11.c: modify display_mapcell_pixmap to use new format of MapCell structure. Remove reference to count in MapCell structure. x11/x11.h: Remove PlayerPosition information - now in common code. x11/x11proto.h: rebuilt. x11/xutil.c: Remove display_map_clearcell and set_map_face functions. Modify dump map code for new MapCell structure layout. Remove display_map_addbelow funtion. MSW 2002-05-21 ------------------------------------------------------------------------------ Changes for 1.2.1: Makefile.in: Add pixmaps/question.sdl to archive list. configure, configure.in: Update for 1.2.1 release. MSW 2002-04-28 gtk/config.c: Allocate string data for want_faceset - data returned by gtk_entry_get_text is non persistent. MSW 2002-04-28 gtk/gx11.c: Fix bug in that the wrong variable was being passed to negotiate_connection, resulting in the sound not being properly communicated to the client. MSW 2002-04-19 Main change is to make all the configuration options now available in the configure window in the gtk client. The way all the various values was stored was changed around, so it is now pretty trivial to add any future options. For the most part, most of the logic of the other code is unchanged - one thing that is different is that the clients use the larger virtual maps that are normally used for fog of map - this means that fog of war can be turned on and off. There are probably some bugs in this, but it seems to basically work - no horrendous bugs that I noticed that prevent it from working at all. - common/client.c: replaced config values with new system. Always send setup mapredraw 1 to server to make toggling for fog of war easier, and it doesn't use any significant bandwidth. common/client.h: Add new value configuration system/defines. remove the old values. common/commands.c, common/image.c,common/metaserver.c,common/player.c : update for new configuration value system common/init.c: Add config_names which is used for the load/save logic. update the init and clear functions to set up new values. gtk/Makefile.in: add config.c file. gtk/gtkproto.h: rebuilt. gtk/config.c: New file - holds the config creating code, as well as the load and save for the gdefaults file. gtk/gx11.c: Remove some widgets now in config.c, move itemlist to gx11.h, remove some other values that are in the new configuration scheme. gtk/gx11.h: Moved several structures and externs from gx11.c to gx11.h so they are available to config.c. Remove several values that are done with the new config arrays. gtk/image.c, gtk/keys.c, gtk/sdl.c, gtk/sound.c: : update for new configuration value system gtk/map.c: update for new configuration value system, modified so that fog of war map logic is used all the time. Change allocate_map to no longer refer to map_size global - use the x and y values in the map structure. x11/x11.c: update for new configuration value system - the x11 portion still uses the old load/save method - this should get converted. Many of the options available in the gtk client have no corresponding use in the x11 client. x11/x11.h: update for new configuration value system x11/xutil.c: update for new configuration value system. Most of the map logic is now synced up with the gtk/map.c MSW 2002-04-03 configure.in, configure: Fix the --disable-sound configure option (when used, it won't look for sound support, and will not build the sound-src directory). Likewise, if that option is not used but configure does not find any supported sound systems, it also will not build the sound-src directory. MSW 2002-03-31 Various fixes/enhancements: 1) For the files stored in the players cache, include the image set suffix (eg, base, clsc) when saving the file. 2) Add a gui update element to the gtk client when running with -download_all_faces. For the cfclient, print the updates to the window. 3) Apply patch by 'Alfie' that shows skill experience in the cfclientp 4) Fix caching bugs with the cfclient that caused it to not work right. common/client.c: Add callbacks to image_update_download_status from the download all image routine. It is this callback that provides whatever update mechanism for the player. common/external.h: add image_update_download_status common/image.c: Modify display_newpng to put in the image set name of the saved cache files if that information is available. gtk/gtkproto.h: rebuilt. gtk/gx11.c: Make get_window_coord non static so other files can use it. gtk/image.c: Add image_update_download_status that draws a progress bar. Convenient side effect is that other GUI elements are now updated as part of this, so player can access other menu items. x11/png.c: Fix some bugs when using cached images - rgba_to_xpixmap was using initialized bpp value - we now know this is always 4. create_and_rescale_image_from_data did not match the parameters as the common routines use. Also missing some logic for allocating the data and linking it back to the cache entry. x11/x11.c: Add display for skill experience. This necessitated making some of the windows bigger. x11/x11.h: Remove now unused fields from PixmapInfo structure (fg, bg, bitmap) x11/x11proto.h: rebuilt x11/xutil.c: Remove code that was storing data into the unusued fields in the PixmapInfo structure. Add missing call to init_common_cache_data. Add image_update_download_status function that just does a draw info. MSW 2002-03-26 Many changes to image handling. The most noteworthy are: 1) Ability to use different image sets. 2) Ability to get checksums of all images and download missing images before play starts. 3) Storing cache information for images in a bmaps.client file so that it can know if it has a match without needing to load the image and checksum it. 4) Can use crossfire-image archives to bootstrap the client with a large number of images to save the time of downloading them later. README: Update some out of data information about sounds, add section describing the image handling. configure,configure.in: Make the SOUNDDIR be based and datadir and not an absolute path - this means using a different -prefix changes the location of where it will find the sound file. Moved some of the defines into the config.h file so that we don't need to pass them as -D compiler options. Add code to properly substitute DATADIR and BINDIR values. common/Makefile.in: Add image.c to list of files. Fix depend directive. common/cconfig.h: Remove some options that no longer did anything. common/client.c: clean up some unused global variables, add a few new ones. and support for replyinfo protocol command. Modify negotiate connection to issue requestinfo requests, set up face set to use, use setup command to set caching behaviour, and support for it to download all image sums and missing images before play starts. common/client.h: Update VERSION_SC to 1027. Remove some unused global externs. Add FaceSets structure, Face_Information structure, the later which holds some user preferences. Add Cache_Entry structure, as well as some state when negotiating the connection. common/commands.c: Add ReplyInfoCmd function. Move FaceCmd to common/image.c. Add handling of received setup command for faceache and faceset information. Remove some dead code. common/config.h.in: Add BINDIR and DATADIR defines so we don't need to pass them on the command line. common/external.h: Add some more functions that are called back from the common area. common/image.c: New file - cache logic, png image load code, and protocol image related commands in this file. This removes some of the code that was previously in the GUI area of the client into a common area. common/init.c: Add TEST_FREE_AND_CLEAR macro. Add code to clear some of the newly added structures. common/proto.h: rebuilt. gnome/gnome-cf.h: remove cache_images extern. gtk/gcfclient.man: Update man page for new options (-download_all_faces, -faceset) gtk/gtkproto.h: rebuilt. gtk/gx11.c: add redraw_needed flag so the map window is properly redrawn when caching images and new images show up. Change some other variables to deal with new image code. pixmaps changed to a pointer so that a copy can be held in the common cache structure. Add support for new options. Remove some code that is now in the common/image.c file. gtk/gx11.h: Remove keepcache, change cache_images, add redraw_needed, and change type of pixmaps to be a pointer. gtk/image.c: Move requestface to the common/image.c, change pixmaps to pointer type. remove finish_face_cmd and ReadImages command. gtk/map.c: Change pixmaps to pointer types. gtk/sdl.c: add redraw paramter to sdl_gen_map. change pixmaps type to pointer. gtk/sound.c: Add missing / when running cfsndserv. x11/png.c: Remove gdk related code from the file. Add rgba_to_xpixmap data so tha the common area can load the png file. x11/sound.c: Add missing / when running cfsndserv. x11/x11.c: change pixmap type to pointer. Add new options (-faceset and -download_all_faces). Remove -keepcache option. change cache_images to face_info.cache_images. Change how the pixmaps are generated x11/x11.h: remove keepcache and cache_images variables. Change pixmaps to pointer type. x11/x11proto.h: rebuilt. x11/xutil.c: remove keepcache option. Change pixmap type to pointer. Move requestface and finish_face_cmd to common/image.c MSW 2002-03-25 ------------------------------------------------------------------------------ Changes for 1.2.0: Makefile.in: add missing pixmaps file for archive. crossfire-client.spec, configure.in: Update for 1.2.0 release. MSW 2002-03-19 Most of the changes are by Edgar Toernig - I've just applied them and checked them in. The stripping out of the display_mode variable is my doing however. configure.in, configure: Add check for zlib before png lib check, as on some systems, png requires -lz. common/client-types.h: Add #ifdef check for SOL_TCP common/client.c: Add fast_tcp_send variable, comment out printing of error from socket EOF. Use TCP_NODELAY for sending data to the server if TCP_NODELAY is available. cs_write_string modified to use cs_print_string. common/client.h: Remove display_mode enum, add fast_tcp_send extern. common/commands.c, common/init.c,gtk/image.c, gtk/map.c cs_write_sting modified to use cs_print_string common/external.h: set_autorepeat extern added. common/newsocket.c: Modified to be better optimized for using TCP_NODELAY - cs_print_string function added. common/player.c: modified to use cs_print_string , autorepeat client side command added. common/proto.h, gtk/gtkproto.h: updated with new functions gnome/gnome.c: display_mode variable removed, cs_write_string replaced with cs_print_string gtk/gx11.c: display_mode variable removed, cs_write_string replaced with cs_print_string, -nofog option added pixmaps/question.111: Resized to be 32x32 pixmaps/*.xbm - used for inventory icons in X11 client, replacing xpm files sound-src/cfsndserv.c: Better error handling, include time.h x11/cfclient.man: -font and -noautorepeat options added. x11/png.c: better error checking for rescaling images x11/x11.c: noautorepeat variable added, display_mode removed, image icon functionality re-enabled, images now created from xbm files, set_autorepeat function added, add ability to set font, add mouse wheel support x11/x11.h: remove screen_num extern. x11/x11proto.h: Updated with new functions. x11/xutil.c: Modified to use image_size instead of hardcoded 24x24 value for the status icons. cs_write_replaced with cs_print_string, no auto repeat functionality added. MSW 2001-01-14 ------------------------------------------------------------------------------ Changes for 1.1.0: README: Update notes on needing png (and not xpm) library. Update mailing alias. configure.in, configure: As the seperate sound program (cfsndserv) is the only supported sound configuration, remove new_sound_system defines and ability to use the old (now non existant) sound system. Have configure exit with error message if png library is not found, as it is critical to the build process. Change it so that gnome/Makefile is always built so that making of releases works. gnome/gnome-cfclient.man, help/about.h, x11/cfclient.man: Update mail address. gtk/gtkproto.h, x11/x11proto.h: Rebuilt, prototypes for some changed for signed to unsigned characters. gtk/gx11.c, gtk/png.c, pixmaps/stipple.111, x11/png.c, x11/x11.c, x11/xutil.c, pixmaps/stipple.111 pixmaps/stipple.112: Mostly changes to fix compile warnings and make sure we are passing the right types to the various image creation functions (8 bit data). sound-src/Makefile.in: Add soundsdef.h to list of things to build. x11/x11.h: Remove extra semicolon. MSW 2001-12-28 common/config.h, gnome/gnome-cfclient.soundlist, sound-src/sounds, sound-src/soundsdef.h: Remove from CVS as it gets automatically generated as part of configure/build process. common/player.c, gtk/keys.c: Send valid count values when sending a fire command. Some spells use the count value (eg dimension door). gtk/gx11.c: Minor change to the trim_info_window code - still causes periodic crashes in the gtk code however. Modify style code so that if we don't get a valid style, we don't crash the client. MSW 2001-11-25 gtk/gx11.c: Made the inventory lists respect the user's GTK font settings, and made the various window parts use the font size to decide what size to make the displays and the window. TSB 2001-11-21 configure.in, configure: Modified so that if not compiling the gnome client, we don't create the gnome Makefile. MSW 2001-11-05 gtk/gcfclient.man: Add -timemapredraw documentation to man page. gtk/gx11.c: Update size of buffers to 100k, instead of 10k. Add some debugging information to when info window is trimmed. Add -timemapredraw command instead of it being a compile time option. gtk/gx11.h: Add extern for time_map_redraw. gtk/map.c,gtk/sdl.c: use time_map_redraw variable instead of define option. MSW 2001-11-04 gtk/gcfclient.man: Update man page to include all options supported by gtk client. gtk/gx11.c: remove some unused #defines. add -trim_info_window option which takes place of compile time option. Re-order command line switches to be in alphabetical order. Add support for client to load/save most all new options to the gdefaults file. gtk/map.c: Some refinements to fog of war so if a space is empty, don't mark it as a fog space to improve performance. Modify gdk draw routine so that it also supports fog of war. There is still some problem in that the client will really bog down in some circumstances when drawing the map. x11/Makefile.in: Add cfclient.man to list of files. MSW 2001-11-03 Complete client re-org. Create common, gtk, gnome, sounds, and x11 subdirs. Gtk client: only image support is png. Also add resizing options for the images (-mapscale/-iconscale), remove pngximage, update sdl image and normal draw image to support arbitrary image sizes. sound: Only support new sound system. MSW 2001-11-01 gx11.c: Modified to know about new pickup mode (frontend - most all the work is still done on the server). Patch by Nils Lohner. MSW 2001-08-28 Add reset_map_function into xutil.c that gets called after we lose a connection to the server. This fixes a problem of some leftover images from the previous session appearing in the map windows. MSW 2001-08-12 client.c: add call to reset_map_data proto.h: rebuilt xutil.c: Add reset_map_function (mostly a copy of reset_map), make some other functions 'static' so they don't show up in proto.h Fog of war code checkin. This is a fairly complex check in so hopefully not too much breaks. This adds the feature where tiles that have been seen but have since moved out of LOS are still shown on screen but with a 50% transparent black tile over it show it is no longer in LOS. Whatever was in that tile is still shown until a new update comes in from the server at which point the tile is cleared of all old info. The old way was to just paint an opaque black tile. To do this the client now keeps state of as many tiles as it can and remembers which tiles have been marked as cleared. This is a fair amount of memory so when -fog is not specified, the code reverts back to a much smaller in memory map. To allow this, the map structure is now dynamically allocated. I also had to add a new protocol command "newmap" so the client knows when to reinit its map state. NOTE: This feature only works when the client is using SDL. No reason the other blitters can't take advantage of it, just hasn't been done yet. client.c: fog_of_war global variable and newmap cmd added to CmdMapping Added "newmapcmd" to SetUp command. client.h: FOG_MAP_SIZE macro and Player_Position struct commands.c: handled "newmapcmd" sent from server, added NewmapCmd which just calls display_map_newmap(); gnome.c: stub function for display_map_newmap(); gx11.c: Modified all commands that take x,y coordinates to convert to the virtual coordinate system if fog_of_war is active. Added code to sdl_add_png_face to paint a fog_of_war cell over cleared but still in view tiles. Added handling of Control-shift-i to simulate a newmap cmd. Added -fog cmd line option. Added display_map_newmap() function that resets the virtual map state. Correctly deal with dynamically allocate map structure. proto.h: Added new prototypes by hand. x11.c: Added code to dynamically allocate map structure. Added stub function for display_map_newmap(); xutil.c: Modified functions to convert to virtual coordinate system when fog_of_war is active. Modified display_map_clearcell to not clear cell when fog_of_war is active, now just marks the tile as cleared. New function "allocate_map" to dynamically allocate a new map structure and setup the 2 dimensional array pointers correctly. New function, reset_map that clears out the map structure and resets to coordinate system if fog_of_war is active. Changed map_scroll to only update the virtual coordinates on scroll instead of moving memory around if fog_of_war is active. Also checks if the view is close to the edge of the virtual map and recenters it if so. SMACFIGGEN 2001-07-21 Speed optimization to the SDL rendering code. sdl_add_png_face now exits when all 5 dark[] array values are set to full bright. gx11.c: Added a line in the per_pixel lighting section that exits right away if all darkness values are set to 255. SMACFIGGEN 2001-06-23 Quick fix to the get_metaserver function. It was originally calling gtk_main_interation() in a while loop. This is really really really slooooow. I replaced it with a call to gtk_main(). gtk_main_quit for this invocation of gtk_main is called in enter_callback() when the user types in the metaserver he wants to play on. This is WAY faster then the old method. gx11.c: Changed get_main_interation to gtk_main in get_metaserver. Added call to gtk_main_quit() in enter_callback() when state changes from Metaserver_Select to Playing. SMACFIGGEN 2001-06-19 Fix for the sdl/pngximage clients where the client would draw stale data on blank squares after a mapscroll. Basically if you had say an image of a wall on the bottom of your screen and you walked down one tile. If the new tile on the bottom of the screen is now blank, the client would have drawn the wall again and you get a funky recursive effect. The fix is in the display_mapscroll function in xutil.c. xutil.c: Modifed display_mapscroll so that new cells just coming onto the screen would be marked as the_map.cells[ax][ay].need_update= 1. For cells that are already on screen and just moving, we still leave need_update= 0. SMACFIGGEN 2001-06-19 This checkin puts Scott MacFiggen's SDL support into the gtk client. I've made some enhancements to the code - it can now co-exist with the other image formats (so if all the libraries are available, you can choose from -xpm, vanilla -png, -png -pngximage or -sdl (which also forces -png). aclocal.m4, configure, configure.in: Add checks for SDL. client.man: Update with -sdl option. config.h, config.h.in: Add HAVE_SDL define gx11.c, xutil.c: Support for SDL drawing. A lot of the code in xutil.c is command with that of pngximage. gx11.c adds some additional options beyond just the drawing - per tile darkness and gridline options available under the client config window. MSW 2001-06-17 client.c,client.h: Add want_darkness global variable, include when in setup command we send server. client.man,gx11.c,x11.c: Update to include -darkness/-nodarkness command line options commands.c: Change handling of negative results from server on setup command. MSW 2001-06-16 The main thing this fixes is a major memory corruption problem when using -pngximage with the client. Better darkness display is also when using -pngximage, but it depends on a server change (the change basically lets the client do blending from completely dark spaces. ++ cconfig.h: add METASERVER define option which determines if client should try to contact metaserver or not (useful to turn off if behind a firewall so you don't have to wait for the timeout) client.c: add metaserver_on, map1cmd to global variables commands.c: divide by mapy value instead of 11 when using old map command - needed if playing with smaller maps. set map1cmd value on/off depending on type of map command we receive from server. gx11.c: Add BPP define for internal testing to see if using 4 bytes/pixel gives any speed of 3 (answer is performance is the same or slightly worse with 4bpp). when run with mapsize with x>15, create windows with bigmap outlook (message & stats above map, and not above/below). Fix bug in -mapsize processing which would set invalid sizes. Various cleanups to use image_size instead of 32. Changes in drawing to also use BPP define value instead of 3 is various areas. Optimizations for darkness rendering. Use map1cmd global variable to know the packing form instead of looking at map size. Improved darkness handling to know if adjoining spaces have valid darkness information instead of looking at number of tiles. metaserver.c: if metaserver_on isn't set, don't try to get metaserver information. png.c: remove end_ptr processing - wasn't getting used, so not allocating/ freeing it should improve performance a little. Also, move png_set_filler call to before calling png_read_update_info - this fixes a memory corruption problem. x11.c: use map1cmd for determine packing information in map, fix bug in -mapsize command processing which could result in invalid values being used. xutil.c: add have_darkness value to mapcell structure. Set value when we have valid darkness information for this space. This allows the client to use darkness for blocked spaces if the server provides it. update to use BPP instead of 3 for copies of image data. MSW 2001-06-12 This is actually a fairly big checkin: 1) add large map support into the client (use -mapsize option) 2) using GdkRgb structure for drawing the map. This prevents some more advanced map handling functions (like true alpha) as well as much better darkness support (use -pngximage option) cconfig.h: add TIME_MAP_REDRAW define. I originally used this to benchmark my improvements with the gdkrgb code, but throught it may be useful to others client.c: add map sizing global variables. Add map1 protocol pointer. request different mapsize of server. client.h: add map sizing variables to extern declarations. client.man: add description of -mapsize and -pngximage commands.c: Make it more forgiving about extra spaces in setu command. and support for mapsize option of setup command. Add option to map_doneupdate which controls if we want a full redraw or not. Add Map1Cmd command which handles map1 protocol command. gx11.c: Add support for big maps as well as gdkrgb backing images. Add support for -mapsize and -pngximage command line options. Lots of new image drawing code for pngximage. Add resize_map_window function which is called when new map size is negotiated with server - depending on new and old values, re-arrange some windows. png.c: add png_to_data function which takes the png image and and returns rgba data. used by pngximage code. x11.c Add big map support (-mapsize option). It otherewise lacks many of the other features I added to gx11.c xutil.c: add png_data to image structure, and have data put here when using pngximage mode. Move some of the basic map handling functions here - not the stuff that draws the map, but what sets up the server idea of wha the map looks like in terms of spaces. MSW 2001-06-04 The three main things this checkin does: Ability to save relative sizes of gtk subwindows, and have those restored when re-running the client. Use of the setup protocol command to set configuration values. Receipt of skill experience information, and display of that in the gtk client. ++ Makefile.in: Remove Protocol entry Protocol: Removed - now located in server/doc directory. client.c: Add value to determine if we want this option, initialize global array that maps the number to skill names. Add support for 'setup' protocol command. Send sound selection using new setup command. client.h: add MAX_SKILL to no max number of skills. And skill experience and level total to Stats structure, put extern for skill_names array and want_skill_exp value. commands.c: Add SetupCmd function which handles processing of 'setup' protocol command. If sound setting fails with setup command, fall back to old method. In StatsCmd, add code to get skill experience and level totals. gx11.c: Add ability to save window size and relative pane positions in non split mode, as well as loading and setting of those values (required moving pane information widgets from create_windows to global values) - while at it, renamed this to be more descriptive. Have client now display skill experience totals in stats window. metaserver.c: Make meta_sort a static function so that it does not get put into proto files. Its only used within the metaserver.c file in any case. newclient.h: Add CS_STAT_SKILL* values (to keep in sync with server version of this file) proto.h: automatic rebuild needed for SetupCmd function. MSW 2001-05-28 gx11.c: remove some unused code. Add color for cursed/magic items in the unlocked inventory pane (makes it easier to sort items picked up) Add support for trimming the info window buffers - now gtk just has to be fixed. Have the second information window do the seem freeze logic as the first. Fix problem of trying to access to many resistance labels (may fix some reliability problems). Remove -scrolllines command line option since the client does not use it. xutil.c: Don't load/save scrolllines line in config file when included with gx11.c - gtk client has no use for it. Add newline to error message about lines in default file we did not process. MSW 2001-05-25 client.c: update call to metaserver_show client.h: make meta_server, meta_port vars available to other files. gx11.c: clear echo hiding after user completes entry in text window. metaserver.c: Add parameter to metaserver_show which determines if we display instructions for selecting metaserver. Re-get metaserver information if user hits enter on metaserver selection. player.c: Add metaserver command that gets updated metaserver information. proto.h: rebuilt. MSW 2001-04-29 gx11.c: Add disconnect menu item and callback function to disconnect from server. player.c: Fix/improve firing logic. Was problem with gtk client in that it would stop firing after a little while when holding shift direction. This was because the outgoing command queue got filled up and never emptied because it still sent fire_stop commands. Add 'disconnect command to disconnect from server. MSW 2001-04-28 Makefile.in: Add gx11.c to depend directive, so it recompiles properly on changes to png.c, xutil.c command.c: clear no_echo instead of letting the graphic handler do this. also add call to x_set_echo - this fixes cases in nopopups mode of it not switching to echo things properly. gx11.c: Add nopopups/splitinfo options to configure menu. Add x_set_echo function, and remove detection of this from do_timeout. proto.h: automatic rebuild. x11.c: Add setup x_set_echo function. xutil.c: Add saving/loading of splitinfo and nopopups value to/from ~/.crossfire/gdefaults file. MSW 2001-04-27 Note: by default, the command history forward/back keys are not bound to anything. At least on Sparc/Solaris systems, the up key in the cluster of 4 arrow keys is the same keysym as the the key on the keypad, so by automatically binding these, you basically make it so the player can not move north/south, so I figure its better to let players bind them safely. gx11.c: Make the command completion key as well as history move backwards/ forwards custom settable by the player. Also, resize the width of the name/weight window for the look window the same way we do for the inv window. xutil.c: Add support for binding command completion and history scroll keys. Also, add support of loading/saving these bindings (As well as those for fire keys, run keys, command keys. MSW 2001-04-20 gx11.c: Have it hide password entered when using -nopopups mode. Add command completion with tab. remove some dead code. Add command history. Accessible through the up/down arrow keys (the 4 keys between the standard keys and the keypad, not the arrow keys on the keypad.) This feature is barely tested. Most of the editing functionality used here is what gtk provides. MSW 2001-04-20 client.c: add image_file declaration. Also, properly handle cases where the option given by -server (or config file) is not a valid server - go back to metaserver selection instead of looping infinitely. client.h: add image_file declaration. gx11.c: Lots of changes. remove duplicate code between this file and xutil.c. Add show_unlocked inventory tab selection. Add -nopopups command line option which prevents pop up windows. Also results in the count value getting cleared when used. Add -splitinfo command line option that results in two info (Text) windows - one for colored text, one for normal text. When resizing pane that has inventory listing, now updates inventory headings so weight keeps constant width so that the space for the name increases. Implement command_show options so that 'show' command will rotate through tabs (or goes directly to tab if right name is given) of inventory display options. Add handling for -pngfile option. player.c: add complete_command function that returns complete server command when partial string is passed to it (currently only used by x11.c) x11.c: Add unlocked inventory show option. Add command completion via tab key when entering an extended command. Add -pngfile support processing. xutil.c: Modified with #ifdef GDK_XUTIL so the gx11.c file can include this file to reduce duplicate code. Have cache code look in gfx directory first for images to load. Also have cache code then look at images loaded by -pngfile for match before looking in images previously download, then request image from server if we still don't have an image. MSW 2001-04-19 ------------------------------------------------------------------------------ Changes for 1.0.0: player.c: Fix for client crashes if player enters really long commands (like say .....). MSW 2001-05-08 gx11.c,command.c: Remove some debug statements which really should not be there for 1.0, and which are not really useful anyways. items_types, item_types.h: Varioius minor updates. MSW 2001-05-04 gx11.c: Fix bug that causes gtk client not to update weapon speed. metaserver.c: Have the listing get sorted by hostname to make it easier to find the host the user may want. MSW 2001-05-02 ------------------------------------------------------------------------------ Changes for 0.98.0: item_types,item_types.h: Change matching for sword - hopefully this should fix problems with dancing sword spellbooks. MSW 2001/04/06 gx11.c, item.c: move animations of the look window to the client. All the necessary was already being sent to the client - it was just needed for the client to use this information. Also remove some #if 0 code from gx11.c. MSW 2001/03/28 item.c: set_item_values - only resort items based on name if the name has changed. This fixes a problem with items moving around in the inventory if you lock/apply/unapply/unlock them. MSW 2001/03/23 ------------------------------------------------------------------------------ Changes for 0.97.0: MSW 2001/03/18 Change so that containers on the ground still keep proper contents even if the map space itself changes (spells or other objects going onto the space). This is done by using the cpl.container pointer and when getting an updated map space, seeing if one of the map space object tags match that. commands.c: update the cpl.container tags when opening/closing containers. item.c: Have locate_object see if the container matches the tag. Don't have remove_item remove the object contents of other attributes if it is the container, but still remove it from the list it is on. item.h: remove function prototypes - these are in proto.h MSW 2001/03/13: png.c: New png -> X11 (or gdk) creation routines that are much faster. This should make a noticable difference in performance. Note that the X11 and gdk implementations are very different now - the gdk implementation lets the gdk library do most of the work. gx11.c: remove some dead code, add call to gdk_rgb_init() if using png images - needed by new png loader. x11.c: Add call to init_pngx_loader if running in png mode. Also pass colormap by pointer so png_to_xpixmap can modify it. xutil.c: pass colormap by pointer to init_pngx_loader (same reason as above) MSW 2001/03/06: Makefile.in: Add DMALLOC_LIB definition instead of it going in with the the default libraries. cfsndserv will now get properly linked with dmalloc. configure.in, configure: add --disable-sound option, and make relevant changes to use that option (which basically amounts to not checking for any of the sound systems). Add check for dmalloc.h. change substitution for -ldmalloc. cfsndserv.c: Modified so it now compiles with the modern ALSA sound system. No idea if it actually works. MSW 2001/03/04 metaserver.c: Modified so it uses the value of -port if that command line option is given by a user. MSW 2001/03/01 x11.c: Fixes for info window resizing. This should fix some crashes and the code is a bit simpler now. MSW 2001/02/28 Makefile.in: Modify so that it installs the target (cfclient, gcfclient, cfsndserv) one at a time so it works with the install script. item.c: add insert_item_before_item function. Modify the sorting function so it first sorts by type, then by locked/unlocked status, and then by alphabetical order (not including the number prefix). item_types, item_types.h: More updates of missing objects or ones that need more specific matching rules. x11.c: Remove a lot of duplicate code that was in place for metaserver support - instead, just add checks to the existing X event handling code to know not to do some things if we're in metaserver selection mode. This fixes a bug in that resize events would not be handled if in metaserver selection mode. MSW 2001/02/22 ------------------------------------------------------------------------------ Changes for 0.96.0: MSW 2001/02/02: Protocol: Update with new face1 command that includes checksum. client.c: add face1 protocol command. client.h: Update version_sc to 1026. commands.c: Move FaceCmd from gx11.c/x11.c to this file, since it now only does decoding of data and passes rendering off to appropriate file. Also add Face1Cmd function that deals with checksum. Both of these functions pass off the rendering to the same function. gx11.c: add keepcache variable, re-do facing loading/caching - if we have local version of face, generate checksum of it and compare to that against what server has. finish_face_command added to do this - called by the face functions in commands.c. Add -keepcache command line option which will have it not request images from server if checksum is different. Add usleep in metserver selection area to prevent client from hogging all the cpu time. item.c: Add support for ^ in items file to say only match at start of line. Useful for 'bolt' - doing substring also matched against firebolt. item_types, item_types.h: make bolt ^bolt, add Head and hauberk to matching criteria. proto.h: automatic regen. x11.c: As gx11.c above, plus: Use one font for all windows - reduces complexity. Add easy selection of font to use with -font command line option. xutil.c: As gx11.c for relevant functions that are located in this file and not x11.c End of MSW 2001/02/02 checkin. MSW 2001/01/31: client.c: Clear player inventory and look windows after disconnection from server. Prevents client crashes. gx11.c: various fixes - window placement no longer always centered on screen (very obnoxious if running xinerama), various prototypes fixed up, clear map data after clearing image data. player.c: Add suport for 'mapredraw' command. Not that this should ever really be needed, but the server supports it, so its nice to be able to use it. x11.c: Fixes prototype/casting problems when clearing pixmaps. Like gx11.c, clear map data. xutil.c: add better description to the unbind command. MSW 2001/1/13 (except as mentioned, all changes by MSW): Makefile.in: Create destination dirs, remove extra tab. Patch also by Dave. Protocol: typo fixed. config.h, config.h.in: Add HVAE_DMALLOC_H #ifdefs. Checks currently disable in configure.in, as with it, the sound won't like properly since it needs -ldmalloc, and I haven't bothered investing that much time into fixing the Makefile. gx11.c: Patches by Dave Peticolas - mostly code cleanup, but one new feature is support of wheel mice to move the scrollbars. png.c: No real code change, just adjustments in some ordering which I think makes the code appear a little simpler. x11.c: Minor code cleanups, some formatting changes, some to make better error messages. End of MSW 2000/1/13 checkin. MSW 2001/1/8: client.h: Change damage type to be 16 bits. MSW 2000/12/24: png.c: Fix a major memory corruption issue - the png function was re-allocing for a larger hunk of data, but did not update the pointer and was still using the pointer to the smaller hunk. Severity of this bug depended on luck - if the first png downloaded happened to have the full 4 bytes/pixel, it never needed to do a realloc so would work fine. Otherwise, a matter of luck what data got stomped over. Also, modified the main function in this file so that it you can compile against it and it now works with the new in memory data read. MSW 2000/12/19: Metaserver update. Most files updated. This change has the client connect the metaserver and lets the user choose which server to connect to. Also, if the client loses a connection (either because the player has quit playing or the server died), the client will no longer exit and instead go back to the server selection screen. A few unrelated changes (cfclient): when running cache, non downloaded images should look better. Also, client starts up with larger window in Png mode to take into account the extra space png images takes up in the game window. Changes by file: Makefile.in: Add metaserver.c file. cconfig.h: Add metaserver configuration information. client.c: Add meta_ variables, move resists_name to this file, no longer have DoClient exit if it gets an error on the socket (instead mark the fd as -1 and return), change main loop such that if connection to server has been lost, go through loop to establish a new connection. client.h: Add Metaserver_Select input state. Change resists_name from a static to extern. gx11.c: Remove some unused code, various code cleanups, and additions to support the metaserver connection process. init.c: Add reset_client_vars - call it between connections to servers. proto.h: rebuilt for new functions. x11.c: Update for metaserver connection status. If running Png mode, have windows created larger. xutil.c: When creating default images for cache, create 32x32 images for png mode, not 24x24 images. metaserver.c: New file for metaserver code. End MSW 2000/12/19 checkin. MSW 2000/12/10: png.c, gx11.c, x11.c, xutil.c: modified to use in memory loading of png's. This means that if not caching images, we don't need to write it out to a temp file. This should result in a minor performance gain, but also remove the need of using tmpnam. Also, modified gx11.c so that it uses same logic as the x11 client for extended command key ('). Before gx11.c client would use both ' and ", and there was no way to unbind the later - since one can always bind the command key, I found that a bit annoying. Updated to display resistance values in the message window. Except for armour, this is only displayed when running against serves with PR code. Change for both cfclient and gcfclient. Files affected: Protocol client.h commands.c gx11.c newclient.h player.c sounds soundsdef.h x11.c MSW 12-3-2000 ------------------------------------------------------------------------------ Changes for 0.95.8: Checkin on 2000-11-7 by MSW: item.h: Update NAME_LEN to 128, as the server may send us names that long. Also, terminate the name after we copy it. Checkin on 11/3 by MSW: Remove remaining font support for x11 client. Allow setting default display mode and server to connect to in the cconfig.h file. Files affected: CHANGES, cconfig.h, client.c, client.h, gx11.c, x11.c, xutil.c ------------------------------------------------------------------------------ Changes for 0.95.7: Makefile.in: Update to include png.c when packing up distributions. configure.in, configure: Move check for -lm before png check, and libpng on sparc/solaris systems require math library for proper linking. Also, change the -with-xpm* to -with-ldflags and -with-includes to be more general since extra values may be needed for more than just xpm library. client.man: Updated for information about png images and cwindow command. README: Updated with changes mentioned above with the --with-png options. gx11.c: Remove all support for pixmap images. They didn't work anyways, but you could specify -pix on the command line and get no images - now it will at least result in an error message. Also, savedefaults will now save png status properly. xutil.c: Modified so that it will save png status when savedefaults is issued. MSW 8/24/2000 The following change removes imlib as are png loading/rendering library - instead, we use our own local function located in png.c. libpng is still needed, but it removes the dependancy on imlib. Also, my home spun function renders all the png images crossfire uses correctly, while imlib had several it did not do properly. MSW 8/13/2000 Files affected: config.h, config.h.in: Change HAVE_IMLIB_H to HAVE_LIBPNG configure, configure.in: Change check from imlib to libpng. gx11.c,x11.c,xutil.c: Changed to use our functions and not imlib. png.c: new file that has our png support in it. cfsndserv.c: Make some changes so that sound on ultrasparc systems is played properly. Missing FD_SET call to re-add the soundfd, as well as a missing wrap check for first_free_buffer. MSW 8/10/2000 The following matches a change made to the server which includes two piece item names to make the item names in the client appear more perfect. Protocol: Updated to document the new item name transmission method. client.h: Update SC version to 1024. item.h: Remove name and o_name from item structure, instead there is now d_name, s_name, and p_name, representing the display name, singular name, and plural name. display name is derived from the s/p names plus nrof value. commands.c: Chance strncpy to memcpy, as a null character is used to seperate the two name values. UpdateItemCmd is also modified to supply an empty string to set_item_values instead of the same name if the name is unchanged. gx11.c, player.c, x11.c: use d_name instead of name to correspond with changes to item.h item.c: Update item initialization and clearing functions with new name elements. Update set_item_values with new two piece name support. remove adding 'a' and 'an' prefix to singular objects, as it generally doesn't look good in the look window and isn't all that useful in the inventory window either. Mark Wedel 8/6/2000 item_types, item_types.h: Update with new item types - MSW 7/19/2000 player.c: Comment out command buffering output - MSW 7/19/2000 ------------------------------------------------------------------------------ Changes for 0.95.6: configure.in: Update for 0.95.6 release. x11.c: Change MAX_BUF definition in to match that in config.h Update README for necessary libraries. configure.in, configure: Re-order testing of Xext, Imlib where we still have the any special link flags set. Also, when finding these, explicity set them in the X_LIBS variable and not the default, since they are only needed for the X11 client. MSW 6/16/2000 Protocol: Update for png information - addition of image command. client.c: Add support for image command. Change initializing so we get the protocol from the server early on - we need to know it before we tell it what facemode we want, as it may not support png images. do protocol version check and if the server does not support it and the user request png, fail out. client.h: Increase versions of protocol. Add Png_Display to possible display modes. command.c: Add ImageCmd function which processes the image command (used for receipt of png images). the use of the image command can be abstracted in the future for other image formats quite easily. config.h.in (& config.h): Add HAVE_IMLIB_H define which lets us know if the imlib is available. configure.in (& configure): Add detection for imlib and set the appropriate variables so that they get linked properly. Also add check for Imlib.h gx11.c: Update for png support - add display_newpng command, change XPM_SIZE to image_size and make it a variable and not a define. Pull in appropriate imlib support, as well as rendering of png data. Some dead code removed. display_usepng, display_usxpm, and display_newpng functions added. newclient.h: Add CF_FACE_PNG constant for CS communication. proto.h: Updated for new png functions. x11.c: Many of the same changes as gx11.c above. More work was done here as the 24 image size was hardcoded into this file - it is now a variable also, so supporting other image sizes in the future should also be quite easy. Once the Png's are rendered, they are drawn the same was as the Xpm's are, so many checks for display_mode==Xpm_Display also check for Png_Display. xutil.c: Support for PNG images added. Changes are mostly related to caching code. Changes by Mark Wedel, 6/2/2000 Makfile.in: Have cfsndserv.o removed when make clean is done. Also add a 'distclean' directive which removes the config.cache/log/status files as well as the executables. MSW 5/29/2000 x11.c: Fix bug introduced in 4/20 update which would cause xpm display mode to fail with no such face warnings - code check was in the wrong place - MSW 5/7/2000 xutil.c: Improve logic for built in keybindings - if the def_keys specifies a unique keycode, we don't update the keycode - this is necessary for some keyboards to have working keybindings (for example, sun Type 5 keyboards use the Up keysym for both the arrows and the keypad, so we can't get the keycode for both with the XKeysymToKeycode file - MSW 5/7/2000 Add key ring to item_types and item_types.h file in the container category. MSW 4/21/2000 Change Makefile.in to use perl that configure has found when running items.pl script - MSW 4/21/2000 License: Add license file for the client - MSW 4/20/2000 cfsndserv.c: Various changes 1) Add support for sound on Sun (solaris) systems - another init_audio function added. 2) If in SOUND_DEBUG mode, also print out the audio device we would try to use. Also, add x,y coordinates when printing debug information when playing a sound. 3) Add various casts to reduce compiler warnings on going from signed char to unsigned char data types. 4) For 16 bit output, big endian (sparc) should now work - have two sections when packing the sound information to pack it the write direction depending on endianess of the machine. 5) Ignore the device entry in the .crossfire/sndstat file - using that resulted in incompatibilities between system types. If player needs to use a specific audio device, the AUDIODEV environmental variable can be used. --MSW 4/20/2000 configure.in (and configure): Many fixes: 1) On solaris, add -R flag to linker options if --with-xpm-lib=dir is used - needed to run the client when dynamic linking is used. 2) Add AC_C_BIGENDIAN check - we need to know the byte order for sound to work on both sparc and other systems properly. NOTE - when running autoconf, you will get a warning about that line. 3) Add detecition for solaris audio include, and add appropriate declarations to use it. 4) Fix for xpm check - if X11 includes are in a nonstandard place, it would fail to find xpm.h since that includes some standard X11 files. Add X_CFLAGS which includes any necessary -I options for this to work. --MSW 4/20/2000 config.h, config.h.in: Add WORDS_BIGENDIAN define to file. MSW 4/20/2000 x11.c, xutil.c, client.h, client.man: Only update keycodes for the local keyboard for standard keybindings. Custom keybindings will keep their old/original keycodes, which is often needed. Add -updatekeycodes option so have it update all keycodes. client.man updated to describe the -updatekeycodes command. MSW 4/20/2000 gx11.c: Above update for keycodes added. Also, update so that it has the same set of command line options that x11.c does (-nocache, -nosound) MSW 4/20/2000 x11.c:add closing comment - the missing close comment was just resulting in warnings of 'comment detected inside comment' - the change does not affect the execution of the code. MSW 4/20/2000 item.c: Remove extra semicolon that was resulting in compiler warnings. Update mail address/copyright date. Mark Wedel 4/18/2000 Makefile, config.cache, config.status: Removed from CVS tree it should not be distributed - rather each person should generate it on their own by using the configure script. One advantage of removing these is that a 'cvs diff' of the directory won't show the diffs of these automatically generated files. Mark Wedel, 4/12/2000 commands.c, client.h: Change animation code to dynamically allocate space needed for animations instead of using a statically defined/sized array to contain the face information. This fixes a bug with icors causing the client to crash (it had more animations than the static array had), and this method is just generally a good idea. Mark Wedel, 4/12/2000 x11.c: Add code into gen_draw_face so if a request to draw a nonexistant face is performed, it will handle the problem gracefully. Mark Wedel, 4/12/2000 ------------------------------------------------------------------------------ Changes for 0.95.4: README updated to give better install directions - msw. Add checks to xutil.c to verify we have a valid keysym before trying to convert it to a string and print it out. Before, this could result in trying to print null strings, which would cause a crash - msw. fix unbind and bind in xutil.c so they properly skip over leading spaces - msw. fix Makefile.in so make depend will pick up x11.c dependencies - msw. Fix 'help command so that the draw info commands are formatted to fit on the default window width (player.c - msw). Fix so that cwindow without options results in a message that an option is needed instead of causing the program to crash (player.c - msw) Update Makefile.in so that make install works again - msw Updated gtk client with speedups in text handling and drawing. It should now remain responsive during massive text updates on slower machines. Prepared with a single define (XPM_SIZE) for 32x32 graphic tiles. /David ------------------------------------------------------------------------------ Changes for 0.95.3: Don't link in -lnsl -lsocket on sgi systems. Don't link in -lnsl on linux systems. This list probably needs to be expanded. Gracefully handle failures of the sound daemon for whatever reason (most likely because there is no good sound support). Client should now detect write errors and just stop trying to write stuff to the sound daemon. Improve logic in cfsndserv when adding to the buffers. Prior, it would actually skip over buffers, and logic on determine the amount of data was faulty if a short sound was played after a long song. Fix in cfsndserv.c so that it will read the device entry in the ~.crossfire/sndconfig properly. Include sys/select.h if we have it in cfsndserv.c. Some systems appear to need to for proper compilation of that file. Also, #ifdef for checks already done to determine if we should include some includes or not. Status line should now show hp/sp/gr successfully when player has totals greater than 100 in those stats (From Timo Kokkonen) Option to have system beep when low on food - setable via foodbeep command. (From Timo Kokkonen) Better logic to prevent 'You can not issue commands - state is not ST_PLAYING' warning from Timo Kokkonen) Various non functional changes that should prevent warnings during compile (From Timo Kokkonen) Have client create the ~/.crossfire directory if needed prior to saving keys. Change client help command so it will not display client side help information if the user is requesting help on a specific command. Ability to specify location of sound files at the configure state with --with-sound-dir=/some/path Support for SGI sound system added by Paul Mikell, configure detection for sgi sound by Pertti Karppinen (both untested by me since I don't have an sgi handy) ------------------------------------------------------------------------------ Changes for 0.95.2: Improve item_actions so it can handle getting pashed null objects (just return then) In create_item, only add to an objects environment if we actually have an environment to add to. configure.in changes - special check for alpha systems. Add configure option for new/old sound, and auto detection of alsa (hopefully - untested) Build both gcf and cfclient if possible. Improved Makefile.in - more dependancies and automatic defaults have rules. Support for building both the gcfclient and cfclient with the same common object files. Support for building in other directories. Include aclocal.m4 file in distribution so autoconf can be re-run Improved fire/run handling. Previously, due to the auto repeat of the x-server, numerous fire starts and stops would be continuously sent because the code would see a keypress and keyrelease events. Logic changed to eliminate that constant sending - only send the actual run/fire stop if when all x-events have been processed, the specific key is no longer being pressed. This also seems to improve interact performance when using run to move in the game. This is only fixed in the X11 client - wasn't able to figure out where in the gtk client to call the functions after all events had been processed. Size of command window setable. The command window is the number of commands the client will let go unanswered before it stops sending commands. This is setable with the 'cwindow' command, and will be saved into the defaults file so it stays constant across multiple runs. Fixes to work on black and white systems (cfclient, both pixmap and xpm) Change update_item function to update open/close containers if the flags change. Remove rotateinventory from default keybindings - no reason to keep it around, since it isn't used anymore. Increase buffer size used when reading in key bindings. Fix for x11.c to hopefully prevent FPE's - it seems that at times the players weapon speed could be zero, and dividing by that resulted in the Fpe. If the players weapon speed is zero, then we just display 0 as the speed. Remove instruction from README telling the player to copy the def_keys into their custom key file. Not needed, and clutters up the unbind list quite a bit. Patches from Tero Kivinen: Fix help files so that they do not have embedded new lines (under ansi C, strings can not span multiple lines unless continued with a \ - gcc lets this behaviour go through however). Also, change to configure.in to add -std1 to cc on digital unix. Include aclocal.m4 in distribution so end users can remake configure.in Strip leading spaces when sending complex commands. Parsing of complex commands made a bit cleaner (patch from Maciej Kalisiak) GTK changes by David Sundqvist: Compiles for both gtk+-1.0 and development gtk+-1.1.12 and onwards. Close button for open things in the look window added. Included various patches by Maciej Kalisiak for locking and marking in inventory, as well as coloring damned items too. Some cosmetic code cleanups by Charles Duffy. Tearoff menus for development version of GTK. Some small tooltips. I'd like more, but gtk is picky about what widgets it accepts tooltips for. Some fixup for drop count. Not entirely sure how that should work to be practical. Menu choice to clear info window. Speedup for image creation in non-cached mode. Main loop moved into gx11.c to allow both clients to be built at once. ------------------------------------------------------------------------------ Changes for 0.95.1: Add 'depend' directive to makefile. remove 'includes.h' as a distributed file. -nosplit option added to x11 client. Useful if you don't want split modes but your default file is set for it. resizing of main window in non split mode for x11 client supported. The sub windows will try to be maintained in the same proportions. use autoconf to determine if we have sysconf instead of by system type. Check to see if the item has an environment before setting the inv_updated flag of that environment. This should fix some crashes. Add #ifdef of SOUND_DEBUG so we don't get verbose notifications in the sound code unless we want them. Clear item attributes after the item has been freed. When the items are first created, they are initialized to sane values, and many areas of the code expect that new item will be initialized properly. This change seems to fix the problem with item names being incorrect (ie, "two" and the like). Expanded item_types file to be more complete. GTK changes by David Sundqvist: 981127 Further GUI configuration (keybindings too, needs more work tho) XPM caching now implemented Color text in info window (warning: this may trigger a bug in pre 1.0.5 gtk, but you can turn it off in the GUI config :) ) Menu reorganizations and additions 981114 Split windows mode For those who want new fun layouts. (still has some problems with focus here) Color coded inventory Now you can see cursed and magic items in color coding. Smart dialogs It will actually try to figure out what options you have in dialogs. Fix for inventory count Now pressing 0-9 should update count. Configuration dialog GUI configuration for some options. ------------------------------------------------------------------------------ Changes for 0.94.4: Set receive socket buf to 64K. Added item type detection and sorting (prior, items basically appeared in the inventory in which they were sent.) Ordering can be changed/extended- see item_types file. Incorporate gtk version 0.94.3auto into this release to have one common client source base. Support for complex keybindings (more than one command bound to the same key, seperated by semicolons) added -nocache command line option (default behaviour, but option needed if your defaults file is set to cache). When receiving new xpm image from server, create xpm data from the data provided instead of saving it to a file and creating it from the file. This should be much faster. If we are caching images, we still save the data to a file but use the buffer to create the image (this is the same thing that pixmap display does). This is only true for the x11 client - I am not sure what the gtk client does. Added support in the client to understand the 'goodbye' command from the server. This is to allow the client clean exits. SC protocol updated for 1022 for this. 'goodbye' will be in the 0.95.0 server. ------------------------------------------------------------------------------ Changes for 0.94.3: Only print debugging output on runs if compiled with -DDEBUG option. Most fprintf(stderr,...) changed to use the LOG call instead. Updated protocol version to 1021. This is for the ncom and commc commands (command windowing). Support for the ncom and comc functions above added to client. Client will now stop sending repeat commands at a certain point. README cleaned up - README now contains more of the first level type instructions, where README.old contains some of the older discussion and background notes. README now includes very good notes on extracting keybindings from save files for use with client. ------------------------------------------------------------------------------ Changes for 0.94.2: Change Version command to include 2 versions strings - version of of C->S commands and version of S->C commands. Allows for better handling when versions are mismatched. Current versions for both set to 1020. Also, version command can now take an optional string describing the client and server (ie, X11 C client, or Java client, etc) Client query command now will handle multi line text fields (seperated by newlines) as sent in the query command. Before, it was never explicity set that this should be done, and was never an issue because there never was multiple lines sent. However, to make input handling on some clients easier, text describing what the query is for is not sent via drawinfo, but now sent via the query command. When user enters the help command, send any options along to the server (ie, send 'help asdf' to server. Before, it only sent the help. Added ability to mark items similar to server. 'mark' command added to protocol. Bug fix when using commans bound with 'bind -e'.Prior, when hitting return to finish the command, it would not advance to a new line. It now does. nrof and item name with nrof now properly updated in inventory window when server sends and update command (prior, the client internally know the correct nrof, but the item name in the window was not properly updated) Changed local showicons command to showicon instead. The later is what it should have been in the first place. ------------------------------------------------------------------------------ Changes for 0.94.1: CS_STAT_WEIGHT_LIM added to stats command. Client will store value, and print it at top of inventory window (carried weight/limit) Handling of dmalloc library in makefiles better done. Don't assume gcc on mips machines. Minor updates to protocol file (more accurate, no change in actual commands save for weight limit above) Only send fire start/stop commands if in play state. cleaned up overly verbose messages in sound.c (comment out). Also, soundcard.h assumed to only exist on linux systems. ------------------------------------------------------------------------------ Changes for 0.94.0: Client will handle item1, upditem, face, sound, and anim commands from server (new commands) Client will now animate objects. Fully handles caching of images - should be a big speed improvement over slow links. Client now handles numbering of commands on its own (item1 will send nrof) Handling of locked items now also handled on client. Created misc.c file - handles things like strdup, and creation of directories. Client will now send lookat command to server. sound.c file added - handles playing of sounds. This should work on most systems that have a /dev/audio which can play .au files. On linux (open sound system), more sophisticated handling is added (stereo support and volume control). soundsdef.h file added which contains default sound information. -nosound option added to disable sounds. Added inventory show options (ie, magical, nonmagical, etc) - equivalant of 'x' command on oldserver. Bug fix that would cause grace bar to always be drawn same color as sp bar. Print fire on/run on informatin in the message window. Add KEYF_STANDARD flag to keybindings, so when do an unbind, we can only show custom keybindings. Can now save window positions (in -split mode) accross runs. Saved in ~/.crossfire/winpos Can now save standard defaults (sound, scrollboard, port, tec) in ~/.crossfire/defaults Protocol file updated with new commands. Added some client side 'help command - shows commands the client handles locally. New local commands added: savewinpos, savedefaults, help, show. ------------------------------------------------------------------------------ Changes for 0.93.7: Fixed make proto directive to exclude inline functions in the proto.h file. Added support to using debug malloc library (dmalloc.) Change Extra_Flags, LOCAL_LIBRARIES in the Imakefile to disable this. made update_item a non static function in item.c. Also, no will probably find the player object for weight updates. Removed carrying field in the item structure. Fixed bugs in resizing the info window which would cause program to crash - left over problems from when the scrollbar was added. Can now drop a portion of a group of objects (ie, 50 of 100 arrows) ------------------------------------------------------------------------------ Changes for 0.93.6: Change the select loop to reset the timeout each time - looks like linux select resets this to zero (undocumented feature?) Use correct length in SendAddMe function. Started adding code for local face caching. Protocol file updated to be more accurate/complete. ------------------------------------------------------------------------------ Changes for 0.93.5: Added support for multi line input. ------------------------------------------------------------------------------ Changes of 0.92.2-a: Scrollback buffer for the info window added. crossfire-client-1.70.0/AUTHORS0000644000014500000120000000127211731277014013033 00000000000000Authors of the client: Note: This is hardly a complete list - feel free to add yourself as you work on the client. ------------------------------------------------------------------------------ Mark Wedel (mwedel@sonic.net) - General client source, gtk, gtkv2, Xlib client, opengl for gtkv2 client. David Sundqvist (azzie@netpolicy.com) - GTK+ port Raphael Quinet (Raphael.Quinet@eed.ericsson.se) - Configure scripts and graphics Jacek Konieczny - New Sound System support. Eric Anderson - Did a lot of initial work on the client. Scott MacFiggen (smurf@CSUA.Berkeley.EDU) - SDL support Kevin Bulgrien (kbulgrien@att.net) - libglade-2.0 conversion. crossfire-client-1.70.0/aclocal.m40000644000014500000120000010036011731277152013624 00000000000000# generated automatically by aclocal 1.10 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_if(m4_PACKAGE_VERSION, [2.63],, [m4_fatal([this file was generated for autoconf 2.63. You have another version of autoconf. If you want to use that, you should regenerate the build system entirely.], [63])]) # Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10])dnl _AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [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, 2004, 2005, 2006 # 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. # serial 8 # 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])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # 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. # serial 9 # 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], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && 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 # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --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])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # 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. #serial 3 # _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. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -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"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006 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. # serial 12 # 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. # 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.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) 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([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [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 AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])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]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 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. # serial 2 # 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])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 # 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. # serial 4 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 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. # serial 3 # 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 ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # 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. # serial 5 # 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 AC_REQUIRE_AUX_FILE([missing])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 ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 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. # serial 3 # _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. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # 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. # serial 4 # 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)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 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. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([macros/ax_pthread.m4]) m4_include([macros/gtk-2.0.m4]) m4_include([macros/libcurl.m4]) m4_include([macros/pkg.m4]) m4_include([macros/sdl.m4]) crossfire-client-1.70.0/help/0000755000014500000120000000000011731277217012776 500000000000000crossfire-client-1.70.0/help/shelp.h0000644000014500000120000000165611731277007014207 00000000000000/* Client helpfile */ gchar *text="Server Side Commands:\n\ \n\ add\n\ apply\n\ archs\n\ bell \n\ berzerk \n\ bind \n\ brace\n\ cast\n\ clearinfo\n\ disarm \n\ dm \n\ drop \n\ dropall\n\ east\n\ examine\n\ fix_me\n\ get\n\ gsay\n\ help\n\ hiscore\n\ inv-lock\n\ inv-unlock \n\ inventory\n\ invoke\n\ keyboard\n\ last\n\ listen\n\ malloc\n\ mapinfo\n\ maps\n\ mark\n\ motd\n\ north\n\ northeast\n\ northwest\n\ output-count\n\ output-sync\n\ party\n\ peaceful\n\ pickup\n\ prepare\n\ quit\n\ ready_skill\n\ refresh\n\ rotateinventory\n\ rotateshoottype\n\ rotatespells \n\ save \n\ savewinpos\n\ say\n\ scroll\n\ search\n\ search-items\n\ shout show\n\ showinvicon \n\ shutdown\n\ skills\n\ sort_inventory\n\ sound\n\ south\n\ southeast\n\ southwest \n\ sstable\n\ statistics\n\ stay\n\ strength\n\ strings \n\ sync\n\ take \n\ tell \n\ throw\n\ time \n\ title\n\ unbind \n\ use-buttons\n\ use_skill\n\ version\n\ west \n\ who \n\ wimpy\n\ "; crossfire-client-1.70.0/help/Makefile.am0000644000014500000120000000177511731277007014761 00000000000000# # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com noinst_HEADERS= \ about.h \ chelp.h \ shelp.h \ bugreport.h proto: echo "Nothing to do for proto" crossfire-client-1.70.0/help/bugreport.h0000644000014500000120000000107611731277007015101 00000000000000/* Client aboutfile */ gchar *text="\n\ Thanks for consideration on submitting a bug report\n\ You came here either because you clicked on 'Report a bug' in Help menu,\n\ either because a bug in client showed this window.\n\ To submit a bug report, please go to the following web page\n\n\ http://sourceforge.net/tracker/?func=add&group_id=13833&atid=113833\n\n\ and don't forget to add the content of 'MESSAGES TRACK' below.\n\ If you ran client in console, the output in console may be of interrest too.\n\ Also don't forget to add any informations you may find useful."; crossfire-client-1.70.0/help/chelp.h0000644000014500000120000000474311731277007014167 00000000000000/* Client helpfile */ #ifndef CHELP_H #define CHELP_H #define HELP_BIND_SHORT "bind a command to a key" #define HELP_BIND_LONG "Syntax:\n\ bind [[-nframeg] ]\n\ \n\ Flags (default -nrfam):\n\ n - used in normal-mode\n\ f - used in fire-mode\n\ r - used in run-mode\n\ a - used with alt key\n\ m - used with meta key\n\ e - leave command in line edit\n\ g - global key (not recommended)\n\ Each client may not support every flag.\n\ \n\ bind without flags/command gets client help.\n\ \n\ Special 'commands':\n\ bind commandkey - sets commandkey\n\ bind firekey1 - sets first firekey\n\ bind firekey2 - sets second firekey\n\ bind runkey1 - sets first runkey\n\ bind runkey2 - sets second runkey\n\ bind prevkey - sets history-previous key\n\ bind nextkey - sets history-next key\n\ bind completekey - sets complete-command key\n\ \n\ Examples:\n\ bind -f cast paralyzed (F3)\n\ will typically mean that Shift-F3\n\ is used to select that spell (Shift\n\ being the fire key)\n\ \n\ bind -e shout (\")\n\ will put the cursor in the command\n\ box after writing 'shout' when you\n\ press double-quote. So you can shout\n\ to your friends easier. ;)\n" #define HELP_UNBIND_SHORT "unbind a command, show bindings" #define HELP_UNBIND_LONG "Syntax:\n\ unbind [-g] [#]\n\ unbind reset\n\ Without -g command uses user's bindind,\n\ with -g global binding.\n\ Without number it displays current bindings,\n\ with # it unbinds it.\n\ 'reset' resets default bindings." #define HELP_MAGICMAP_SHORT "show last received magic map" #define HELP_MAGICMAP_LONG "Syntax:\n\ magicmap\n\ Displays last shown magic map." #define HELP_SAVEDEFAULTS_SHORT "save various defaults into ~/.crossfire/defaults" #define HELP_SAVEDEFAULTS_LONG "Syntax:\n\ savedefaults\n\ Saves configuration." /* XXX *Which* configuration? */ #define HELP_INV_SHORT "show clients inventory (debug)" #define HELP_INV_LONG "Syntax:\n\ inv\n\ Debug info about inventory." /* Used to be gchar, but it couldn't find it. */ /* char * text = " === Client Side Commands: === \n\ \n\ bind - " HELP_BIND_SHORT "\n\ unbind - " HELP_UNBIND_SHORT "\n\ magicmap - " HELP_MAGICMAP_SHORT "\n\ savedefaults - " HELP_SAVEDEFAULTS_SHORT "\n\ inv - " HELP_INV_SHORT "\n\ \n\ \n\ bind\n\ \n\ " HELP_BIND_LONG "\n\ \n\ unbind\n\ \n\ " HELP_UNBIND_LONG "\n\ \n\ \n\ magicmap\n\ \n\ " HELP_MAGICMAP_LONG "\n\ \n\ \n\ savedefaults\n\ \n\ " HELP_SAVEDEFAULTS_LONG "\n\ \n\ \n\ inv\n\ \n\ " HELP_INV_LONG "\n\ \n\ \n\ "; */ #endif crossfire-client-1.70.0/help/about.h0000644000014500000120000000214411731277007014177 00000000000000/* Client aboutfile */ gchar *text="\n\ Authors of the client: \n\ Mark Wedel (mwedel@sonic.net) - general client source and Xlib client\n\ Kevin Bulgrien (kbulgrien@att.net) - libglade-2.0 conversion.\n\ David Sundqvist (azzie@netpolicy.com) - GTK+ port\n\ Raphael Quinet (Raphael.Quinet@eed.ericsson.se)\n\ - Configure scripts and graphics\n\ Eric Anderson did a lot of initial work on the client.\n\ \n\ This program is free software; you can redistribute it and/or modify\n\ it under the terms of the GNU General Public License as published by\n\ the Free Software Foundation; either version 2 of the License, or\n\ (at your option) any later version.\n\ \n\ This program is distributed in the hope that it will be useful,\n\ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ GNU General Public License for more details.\n\ \n\ You should have received a copy of the GNU General Public License\n\ along with this program; if not, write to the Free Software\n\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307\n\ USA."; crossfire-client-1.70.0/help/Makefile.in0000644000014500000120000003012211731277165014763 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = help DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_HEADERS = \ about.h \ chelp.h \ shelp.h \ bugreport.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 help/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu help/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 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; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi 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)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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 $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(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: -test -z "$(CONFIG_CLEAN_FILES)" || 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ctags distclean distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags uninstall uninstall-am proto: echo "Nothing to do for proto" # 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: crossfire-client-1.70.0/utils/0000755000014500000120000000000011731277217013206 500000000000000crossfire-client-1.70.0/utils/Makefile.am0000644000014500000120000000171611731277011015157 00000000000000# # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com dist_noinst_SCRIPTS = \ deftoheader.pl \ mdk.sh proto: echo "Nothing to do for proto" crossfire-client-1.70.0/utils/mdk.sh0000755000014500000120000000036211731277011014231 00000000000000#!/bin/sh # Make default key bindings into header file if [ -f def-keys.h ] ; then rm def-keys.h fi echo "const char *const def_keys[] = {" >def-keys.h cat "$1/def-keys" | sed 's/^/"/' | sed 's/$/\\n",/' >>def-keys.h echo "};" >>def-keys.h crossfire-client-1.70.0/utils/deftoheader.pl0000644000014500000120000000163411731277011015731 00000000000000#!/usr/local/bin/perl # # This program takes some file and encapsulates it into a header file # as a giant string. # # It takes three options . # the encapsulation string is what string the script uses to encapsulate # the data. # if ($#ARGV!=2) { print "Usage: $0 \n"; exit; } open(INFILE, "<$ARGV[0]") || die("can not open $ARGV[0]\n"); open(OUTFILE, ">$ARGV[1]") || die("can not open $ARGV[1]\n"); $LINES += tr/\n/\n/ while sysread(INFILE, $_, 2 ** 16); if ( $ARGV[1] =~ m/.h$/) { print OUTFILE "extern char *$ARGV[2]\[" . $LINES . "\];\n"; } else { seek(INFILE, 0, 0); print OUTFILE "char *$ARGV[2]\[" . $LINES . "\] = {\n"; while () { chomp; s/\"/\\\"/g; print OUTFILE "\"$_\\n\",\n"; } print OUTFILE "};\n"; } print $LINES . " lines processed\n"; close(INFILE); close(OUTFILE); crossfire-client-1.70.0/utils/Makefile.in0000644000014500000120000002505611731277165015205 00000000000000# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 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@ # # Makefile for crossfire client # # Copyright (C) 2005 Mark Wedel & Crossfire Development Team # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. # # The author can be reached via e-mail to crossfire-devel@real-time.com VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = utils DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in config.guess config.sub depcomp \ install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ax_pthread.m4 \ $(top_srcdir)/macros/gtk-2.0.m4 \ $(top_srcdir)/macros/libcurl.m4 $(top_srcdir)/macros/pkg.m4 \ $(top_srcdir)/macros/sdl.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/common/config.h CONFIG_CLEAN_FILES = SCRIPTS = $(dist_noinst_SCRIPTS) SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALSA9_LIBS = @ALSA9_LIBS@ ALSA9_TARGET = @ALSA9_TARGET@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CF_DATADIR = @CF_DATADIR@ CF_SUBDIRS = @CF_SUBDIRS@ CP = @CP@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPEND = @DEPEND@ DMALLOC_LIB = @DMALLOC_LIB@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ GUI_OBJS = @GUI_OBJS@ GUI_SRCS = @GUI_SRCS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBCURL = @LIBCURL@ LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ LIBGLADE_LIBS = @LIBGLADE_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBXPM_LIB = @LIBXPM_LIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LUA_CFLAGS = @LUA_CFLAGS@ LUA_LIBS = @LUA_LIBS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR = @MKDIR@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ OPENGL_LIBS = @OPENGL_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PKG_CONFIG = @PKG_CONFIG@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ RM = @RM@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SND_LIBS = @SND_LIBS@ SOUNDDIR = @SOUNDDIR@ STRIP = @STRIP@ SVNVERSION = @SVNVERSION@ TAR = @TAR@ TARGET = @TARGET@ VERSION = @VERSION@ WIN32_LIBS = @WIN32_LIBS@ XMKMF = @XMKMF@ XPM = @XPM@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ _libcurl_config = @_libcurl_config@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ dist_noinst_SCRIPTS = \ deftoheader.pl \ mdk.sh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 utils/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu utils/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(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 $(SCRIPTS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(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: -test -z "$(CONFIG_CLEAN_FILES)" || 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am proto: echo "Nothing to do for proto" # 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: crossfire-client-1.70.0/utils/missing0000555000014500000120000002557711236751521014536 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2006-05-10.23 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 # 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., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, 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=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # 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 ;; -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' autom4te touch the output file, or create a stub one 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 ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case $1 in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $1 in aclocal*) 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) 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) 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*) 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) 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 "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 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 test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -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 test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) 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 "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) 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." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # 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: crossfire-client-1.70.0/utils/depcomp0000555000014500000120000004224611236751521014504 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2006-10-15.18 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, 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'. DEPDIR directory where to store dependencies. 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 $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; 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 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # 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. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -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" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. 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$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. 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 # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done 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 -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, 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: crossfire-client-1.70.0/utils/install-sh0000555000014500000120000003160011236751521015123 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2006-10-14.15 # 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. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment 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}" posix_glob= posix_mkdir= # Desired mode of installed file. mode=0755 chmodcmd=$chmodprog chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --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 $# -ne 0; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit $?;; -m) mode=$2 shift shift case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac done if test $# -ne 0 && test -z "$dir_arg$dstarg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$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 if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix=/ ;; -*) prefix=./ ;; *) prefix= ;; esac case $posix_glob in '') if (set -f) 2>/dev/null; then posix_glob=true else posix_glob=false fi ;; esac oIFS=$IFS IFS=/ $posix_glob && set -f set fnord $dstdir shift $posix_glob && set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dst"; then $doit $rmcmd -f "$dst" 2>/dev/null \ || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } } || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: crossfire-client-1.70.0/utils/config.guess0000555000014500000120000012626011236751521015446 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2006-07-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # 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 Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; x86:Interix*:[3456]*) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T:Interix*:[3456]*) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: crossfire-client-1.70.0/utils/config.sub0000555000014500000120000007746011236751521015120 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, # Inc. timestamp='2006-09-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # 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. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: crossfire-client-1.70.0/README0000644000014500000120000001172511731277014012647 00000000000000See INSTALL file for notes on installing. ------------------------------------------------------------------------------ Converting keybindings from old save files for use with the client: 1) You will need to get a copy of your character file. 2) Type "mkdir ~/.crossfire". This will automatically be done the first time you run the client. 3) Type awk 'BEGIN {ORS=" "} /^key / {for (i=2; i<=NF; i++) print $i;printf "\n"}' infile > ~/.crossfire/keys (Note that this should all be entered on one line, but is broken up here to be more readable.) 'infile' is the name of the character file. Note that the client use global keybindings, and not per character. This means that the same keybindings will be for all characters you play with the client. The gtk client and x11 client both use the same keybindings file. ------------------------------------------------------------------------------ Sound support: If you wnat sound support (only useful if you have a system that has good sound hardware), you will also need to get some sounds for the program. You will need the raw sound files - the .au files no longer work with the client. The sounds file determines what file is played for what sound. The default location for the sound files is /share/cfclient/sounds. is the -prefix= option given when running configure, default of /usr/local. You can set this to another directory at the configure stage by using --with-sound-dir=/some/directory. This file is only used for compiled in defaults. If you have a ~/.crossfire/sounds file (some format), that file will be used instead of the built in defaults. Sound are now played by separate process invoked from crossfire client. The process - called sound server - adjusts sounds' volume according to relative position of player and sound source on map and mixes the sounds together, so many sounds can be played simultaneously. CONFIG FILE The config file ~/.crossfire/sndconfig contains some configurable settings. If there is no such file, one with default settings will be created. The file contains following fields: stereo: 1 means stereo sound, 0 - mono bits: bitrate of generated sound - 8 or 16 16 means better quality, especially when more sounds are to be played simultaneously, but takes more memory signed: if we should sent signed data to the soundcard. 1 means yes. frequency: speed of playing data. This should be 11025, or sound pitch will change buffers: how many buffers to allocate buflen: how big the buffers should be. buffers*buflen shouldn't be smaller than the longest sound to be played. simultaneously: home many sound can be played at the same time. When this setting is bigger, each sound volume will decrease. HOW DOES IT WORK? The sound server gets information about sounds to be played on standard input. The information is a line: All those numbers are hex. The file ~/.crossfire/sounds contains description of sound numbers and types. For example: 3 0 5 0 Means that normal sound SOUND_FUMBLE spell should be played as it's source was 5 units to the right of player. Sounds are mixed in special buffers, which are in fact one buffer, which should be big enough for the biggest sound to be played. The buffers, if contain anything, are sent one by one to the sound device. Each buffer is cleaned after playing. Sounds data is multiplied by some ratio (<1) evaluated from it's position and volume and added to the buffers, starting from the next after the one being played. So bigger buffer means bigger delay, before the sound is actually played, but the smaller buffer is, the bigger is possibility, we won't succeed filling the next buffer, before last is played. ------------------------------------------------------------------------------ IMAGES The client will get any images that it is missing from the server. This can include the entire image set. To decrease bandwidth used when actually playing the sounds, it is suggested you download the image archive and install it. The default location for the archive is /share/cfclient/, where is deteremined by the -prefix= option given when running configure. The mechanism the client uses to find a matching image file when the server tells it an image name is thus: 1) Look in ~/.crossfire/gfx. If an image is found here, irrespective of the set and checksum of the image on the server, it will be used. The only way images are placed into the gfx directory is by the user actually copying them to that directory. The gfx directory allows a user to override images with versions he prefers. 2) Look in ~/.crossfire/image-cache then /share/cfclient/crossfire-images. If the checksum matches the image from the respective directory is used. Note that if the checksums match, it really doesn't matter what image location we use, as it is the same image. 4) Get the image from the server. If -cache is set, a copy of it is put into ~/.crossfire/image-cache.