From: Zygo Blaxell Date: Mon, 2 Mar 2009 05:42:53 +0000 (-0500) Subject: http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.02.tar.gz X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=commitdiff_plain;h=cccbddbc4140cf9a06d7d95cc5c0ca36eb5d6e28 packetstormsecurity.org/UNIX/admin/xscreensaver-4.02.tar.gz -rw-r--r-- 1 zblaxell zblaxell 2201442 Mar 20 2002 xscreensaver-4.02.tar.gz b32cf3ed37680669a4a7ea2b945fadb5841fc6b3 xscreensaver-4.02.tar.gz --- diff --git a/README b/README index bd6de77d..f6063fde 100644 --- a/README +++ b/README @@ -57,17 +57,32 @@ there's no need to recompile or reinstall anything. ============ Along with the xscreensaver daemon itself, this package also includes -numerous graphics hacks for use as screensavers. There is nothing magic -about these: they are just programs that draw on the root window. - -More than 140 such programs are included. For details, see the xscreensaver -web page, or the enclosed manual pages. +numerous graphics hacks for use as screensavers. There is nothing +magic about these: they are just programs that draw on the root window. +More than 140 such programs are included. For details, see the +xscreensaver web page, or the enclosed manual pages. The latest version of xscreensaver is always available on the web at http://www.jwz.org/xscreensaver/. +Looking for tips on writing your own screensavers? There is an entry in +the XScreenSaver FAQ about that: http://www.jwz.org/xscreensaver/faq.html + ============ +Changes since 4.01: * Plugged a few minor leaks in `xscreensaver' and + `xscreensaver-demo'. + * New hacks, `cubenetic' and `fluidballs'. + * Sped up `pipes'. + * Fixed sphere projection error in `glplanet'; installed + a better image of earth. + * Added Win2K and MacOS 1 crashes to `bsod'. + * Put back previous (better) version of `forest' that + was accidentially downgraded in the last release. + * New version of `bumps'. + * Made FPS computation in GL hacks more efficient: it + will influence the results less, thus resulting in + higher (but more accurate) reported frame rates. Changes since 4.00: * New hacks: `twang', `glsnake', `boxed', `sballs', and `glforestfire'. * New hacks `apollonian', `euler2d', `juggle', diff --git a/config.h.in b/config.h.in index bb1d1040..0a16192a 100644 --- a/config.h.in +++ b/config.h.in @@ -374,6 +374,9 @@ /* Define this if you have the setrlimit function. */ #undef HAVE_SETRLIMIT +/* Define if you have the sbrk function. */ +#define HAVE_SBRK 1 + /* Define if you have the header file. */ #undef HAVE_UNISTD_H diff --git a/configure b/configure index 14fcbb04..af5ae026 100755 --- a/configure +++ b/configure @@ -16,8 +16,7 @@ ac_help="$ac_help Installation options: --with-hackdir=DIR Where to install the hundreds of demo executables. - Default: \`PREFIX/lib/xscreensaver/' -" + Default: \`PREFIX/lib/xscreensaver/'" ac_help="$ac_help " ac_help="$ac_help @@ -829,7 +828,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:844: checking host system type" >&5 +echo "configure:843: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -852,7 +851,7 @@ echo "$ac_t""$host" 1>&6 # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:867: checking for $ac_word" >&5 +echo "configure:866: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -882,7 +881,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:897: checking for $ac_word" >&5 +echo "configure:896: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -933,7 +932,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:948: checking for $ac_word" >&5 +echo "configure:947: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -965,7 +964,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:980: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:979: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -976,12 +975,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 991 "configure" +#line 990 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1007,12 +1006,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1022: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1021: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1027: checking whether we are using GNU C" >&5 +echo "configure:1026: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1021,7 +1020,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1040,7 +1039,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1055: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1054: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1074,7 +1073,7 @@ fi if test -z "$GCC"; then echo $ac_n "checking how to request ANSI compilation""... $ac_c" 1>&6 -echo "configure:1089: checking how to request ANSI compilation" >&5 +echo "configure:1088: checking how to request ANSI compilation" >&5 case "$host" in *-hpux* ) echo "$ac_t""HPUX: adding -Ae" 1>&6 @@ -1097,16 +1096,16 @@ echo "configure:1089: checking how to request ANSI compilation" >&5 fi echo $ac_n "checking whether the compiler works on ANSI C""... $ac_c" 1>&6 -echo "configure:1112: checking whether the compiler works on ANSI C" >&5 +echo "configure:1111: checking whether the compiler works on ANSI C" >&5 if test "$cross_compiling" = yes; then { echo "configure: error: Couldn't build even a trivial ANSI C program: check CC." 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then echo "$ac_t""yes" 1>&6 else @@ -1141,7 +1140,7 @@ fi if test -n "$GCC"; then if test -n "$GCC"; then echo $ac_n "checking whether gcc accepts -std""... $ac_c" 1>&6 -echo "configure:1156: checking whether gcc accepts -std" >&5 +echo "configure:1155: checking whether gcc accepts -std" >&5 if eval "test \"`echo '$''{'ac_cv_gcc_accepts_std'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1185,7 +1184,7 @@ echo "$ac_t""$ac_cv_gcc_accepts_std" 1>&6 fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1200: checking how to run the C preprocessor" >&5 +echo "configure:1199: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1200,13 +1199,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1217,13 +1216,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1234,13 +1233,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1265,12 +1264,12 @@ fi echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1280: checking for working const" >&5 +echo "configure:1279: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -1340,21 +1339,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:1355: checking for inline" >&5 +echo "configure:1354: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -1379,9 +1378,104 @@ EOF ;; esac +echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 +echo "configure:1394: checking for Cygwin environment" >&5 +if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_cygwin=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_cygwin=no +fi +rm -f conftest* +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_cygwin" 1>&6 +CYGWIN= +test "$ac_cv_cygwin" = yes && CYGWIN=yes +echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 +echo "configure:1427: checking for mingw32 environment" >&5 +if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_mingw32=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_mingw32=no +fi +rm -f conftest* +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_mingw32" 1>&6 +MINGW32= +test "$ac_cv_mingw32" = yes && MINGW32=yes + + +echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +echo "configure:1458: checking for executable suffix" >&5 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$CYGWIN" = yes || test "$MINGW32" = yes; then + ac_cv_exeext=.exe +else + rm -f conftest* + echo 'int main () { return 0; }' > conftest.$ac_ext + ac_cv_exeext= + if { (eval echo configure:1468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + for file in conftest.*; do + case $file in + *.c | *.o | *.obj) ;; + *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; + esac + done + else + { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } + fi + rm -f conftest* + test x"${ac_cv_exeext}" = x && ac_cv_exeext=no +fi +fi + +EXEEXT="" +test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} +echo "$ac_t""${ac_cv_exeext}" 1>&6 +ac_exeext=$EXEEXT + ac_bc_result=`echo 6+9 | bc 2>/dev/null` echo $ac_n "checking for bc""... $ac_c" 1>&6 -echo "configure:1396: checking for bc" >&5 +echo "configure:1490: checking for bc" >&5 if test "$ac_bc_result" = "15" ; then echo "$ac_t""yes" 1>&6 else @@ -1406,7 +1500,7 @@ echo "configure:1396: checking for bc" >&5 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1421: checking for a BSD compatible install" >&5 +echo "configure:1515: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1459,7 +1553,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether \"\${INSTALL} -d\" creates intermediate directories""... $ac_c" 1>&6 -echo "configure:1474: checking whether \"\${INSTALL} -d\" creates intermediate directories" >&5 +echo "configure:1568: checking whether \"\${INSTALL} -d\" creates intermediate directories" >&5 if eval "test \"`echo '$''{'ac_cv_install_d_creates_dirs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1481,7 +1575,7 @@ echo "$ac_t""$ac_cv_install_d_creates_dirs" 1>&6 if test "$ac_cv_install_d_creates_dirs" = no ; then echo $ac_n "checking whether \"mkdir -p\" creates intermediate directories""... $ac_c" 1>&6 -echo "configure:1496: checking whether \"mkdir -p\" creates intermediate directories" >&5 +echo "configure:1590: checking whether \"mkdir -p\" creates intermediate directories" >&5 if eval "test \"`echo '$''{'ac_cv_mkdir_p_creates_dirs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1512,7 +1606,7 @@ echo "$ac_t""$ac_cv_mkdir_p_creates_dirs" 1>&6 fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:1527: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:1621: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1548,12 +1642,12 @@ INSTALL_SCRIPT='${INSTALL}' # random libc stuff echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1563: checking for ANSI C header files" >&5 +echo "configure:1657: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1561,7 +1655,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1578,7 +1672,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1596,7 +1690,7 @@ 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 < EOF @@ -1617,7 +1711,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1628,7 +1722,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:1643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1655,17 +1749,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1670: checking for $ac_hdr" >&5 +echo "configure:1764: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1774: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1692,12 +1786,12 @@ fi done echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:1707: checking for mode_t" >&5 +echo "configure:1801: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1725,12 +1819,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:1740: checking for pid_t" >&5 +echo "configure:1834: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1758,12 +1852,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:1773: checking for size_t" >&5 +echo "configure:1867: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -1791,12 +1885,12 @@ EOF fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:1806: checking return type of signal handlers" >&5 +echo "configure:1900: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1813,7 +1907,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:1828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -1832,12 +1926,12 @@ EOF echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:1847: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:1941: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1846,7 +1940,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:1861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -1867,12 +1961,12 @@ EOF fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:1882: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:1976: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1888,7 +1982,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:1903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -1913,12 +2007,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:1928: checking for $ac_hdr that defines DIR" >&5 +echo "configure:2022: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -1926,7 +2020,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:1941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2035: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -1951,7 +2045,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:1966: checking for opendir in -ldir" >&5 +echo "configure:2060: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1959,7 +2053,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1992,7 +2086,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:2007: checking for opendir in -lx" >&5 +echo "configure:2101: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2000,7 +2094,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2034,12 +2128,12 @@ fi fi echo $ac_n "checking how to call gettimeofday""... $ac_c" 1>&6 -echo "configure:2049: checking how to call gettimeofday" >&5 +echo "configure:2143: checking how to call gettimeofday" >&5 if eval "test \"`echo '$''{'ac_cv_gettimeofday_args'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2048,7 +2142,7 @@ struct timeval tv; struct timezone tzp; gettimeofday(&tv, &tzp); ; return 0; } EOF -if { (eval echo configure:2063: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_gettimeofday_args=2 else @@ -2056,7 +2150,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < #include @@ -2064,7 +2158,7 @@ int main() { struct timeval tv; gettimeofday(&tv); ; return 0; } EOF -if { (eval echo configure:2079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_gettimeofday_args=1 else @@ -2100,15 +2194,15 @@ EOF echo "$ac_t""unknown" 1>&6 fi -for ac_func in select fcntl uname nice setpriority getcwd getwd putenv +for ac_func in select fcntl uname nice setpriority getcwd getwd putenv sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2118: checking for $ac_func" >&5 +echo "configure:2212: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2159,12 +2253,12 @@ done for ac_func in sigaction syslog realpath setrlimit do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2174: checking for $ac_func" >&5 +echo "configure:2268: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2212,12 +2306,12 @@ fi done echo $ac_n "checking for struct icmp""... $ac_c" 1>&6 -echo "configure:2227: checking for struct icmp" >&5 +echo "configure:2321: checking for struct icmp" >&5 if eval "test \"`echo '$''{'ac_cv_have_icmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2257,7 +2351,7 @@ struct icmp i; ; return 0; } EOF -if { (eval echo configure:2272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2366: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_icmp=yes else @@ -2277,12 +2371,12 @@ EOF fi echo $ac_n "checking for struct icmphdr""... $ac_c" 1>&6 -echo "configure:2292: checking for struct icmphdr" >&5 +echo "configure:2386: checking for struct icmphdr" >&5 if eval "test \"`echo '$''{'ac_cv_have_icmphdr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2317,7 +2411,7 @@ struct icmphdr i; ip.ip_hl = 0; ; return 0; } EOF -if { (eval echo configure:2332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_icmphdr=yes else @@ -2340,17 +2434,17 @@ for ac_hdr in crypt.h sys/select.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2355: checking for $ac_hdr" >&5 +echo "configure:2449: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2365: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2459: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2381,7 +2475,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2396: checking for $ac_word" >&5 +echo "configure:2490: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2420,7 +2514,7 @@ done PERL_VERSION=0 else echo $ac_n "checking perl version""... $ac_c" 1>&6 -echo "configure:2435: checking perl version" >&5 +echo "configure:2529: checking perl version" >&5 if eval "test \"`echo '$''{'ac_cv_perl_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2442,7 +2536,7 @@ fi # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:2457: checking for X" >&5 +echo "configure:2551: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -2504,12 +2598,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2524: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2618: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2578,14 +2672,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -2691,17 +2785,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:2706: checking whether -R must be followed by a space" >&5 +echo "configure:2800: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -2717,14 +2811,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -2756,7 +2850,7 @@ rm -f conftest* # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:2771: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:2865: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2764,7 +2858,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2797,7 +2891,7 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:2812: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:2906: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2805,7 +2899,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2845,12 +2939,12 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2860: checking for gethostbyname" >&5 +echo "configure:2954: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2894,7 +2988,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2909: checking for gethostbyname in -lnsl" >&5 +echo "configure:3003: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2902,7 +2996,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2943,12 +3037,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2958: checking for connect" >&5 +echo "configure:3052: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2992,7 +3086,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:3007: checking for connect in -lsocket" >&5 +echo "configure:3101: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3000,7 +3094,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3035,12 +3129,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:3050: checking for remove" >&5 +echo "configure:3144: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -3084,7 +3178,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:3099: checking for remove in -lposix" >&5 +echo "configure:3193: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3092,7 +3186,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3127,12 +3221,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:3142: checking for shmat" >&5 +echo "configure:3236: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -3176,7 +3270,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:3191: checking for shmat in -lipc" >&5 +echo "configure:3285: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3184,7 +3278,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3228,7 +3322,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:3243: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:3337: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3236,7 +3330,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3278,7 +3372,7 @@ fi echo $ac_n "checking for X app-defaults directory""... $ac_c" 1>&6 -echo "configure:3293: checking for X app-defaults directory" >&5 +echo "configure:3387: checking for X app-defaults directory" >&5 if eval "test \"`echo '$''{'ac_cv_x_app_defaults'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3485,7 +3579,7 @@ case "$host" in # Some versions of Slowlaris Motif require -lgen. But not all. Why? echo $ac_n "checking for regcmp in -lgen""... $ac_c" 1>&6 -echo "configure:3500: checking for regcmp in -lgen" >&5 +echo "configure:3594: checking for regcmp in -lgen" >&5 ac_lib_var=`echo gen'_'regcmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3493,7 +3587,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgen $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3528,7 +3622,7 @@ fi ;; esac echo $ac_n "checking for XPointer""... $ac_c" 1>&6 -echo "configure:3543: checking for XPointer" >&5 +echo "configure:3637: checking for XPointer" >&5 if eval "test \"`echo '$''{'ac_cv_xpointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3539,14 +3633,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { XPointer foo = (XPointer) 0; ; return 0; } EOF -if { (eval echo configure:3561: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_xpointer=yes else @@ -3584,17 +3678,17 @@ have_xmu=no CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/Xmu/Error.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xmu/Error.h""... $ac_c" 1>&6 -echo "configure:3599: checking for X11/Xmu/Error.h" >&5 +echo "configure:3693: checking for X11/Xmu/Error.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3703: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3643,7 +3737,7 @@ if test "$have_xmu" = yes ; then case "$host" in *-sunos4*) echo $ac_n "checking for the SunOS 4.1.x _get_wmShellWidgetClass bug""... $ac_c" 1>&6 -echo "configure:3658: checking for the SunOS 4.1.x _get_wmShellWidgetClass bug" >&5 +echo "configure:3752: checking for the SunOS 4.1.x _get_wmShellWidgetClass bug" >&5 if eval "test \"`echo '$''{'ac_cv_sunos_xmu_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3656,14 +3750,14 @@ else # with X libraries because we know it's SunOS. LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_sunos_xmu_bug=no else @@ -3679,21 +3773,21 @@ fi echo "$ac_t""$ac_cv_sunos_xmu_bug" 1>&6 if test "$ac_cv_sunos_xmu_bug" = yes ; then echo $ac_n "checking whether the compiler understands -static""... $ac_c" 1>&6 -echo "configure:3694: checking whether the compiler understands -static" >&5 +echo "configure:3788: checking whether the compiler understands -static" >&5 if eval "test \"`echo '$''{'ac_cv_ld_static'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -static" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_ld_static=yes else @@ -3832,7 +3926,7 @@ fi /*) echo $ac_n "checking for SGI SCREEN_SAVER headers""... $ac_c" 1>&6 -echo "configure:3847: checking for SGI SCREEN_SAVER headers" >&5 +echo "configure:3941: checking for SGI SCREEN_SAVER headers" >&5 d=$with_sgi/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -3842,7 +3936,7 @@ echo "configure:3847: checking for SGI SCREEN_SAVER headers" >&5 fi echo $ac_n "checking for SGI SCREEN_SAVER libs""... $ac_c" 1>&6 -echo "configure:3857: checking for SGI SCREEN_SAVER libs" >&5 +echo "configure:3951: checking for SGI SCREEN_SAVER libs" >&5 d=$with_sgi/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -3875,17 +3969,17 @@ if test "$with_sgi" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/XScreenSaver.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XScreenSaver.h""... $ac_c" 1>&6 -echo "configure:3890: checking for X11/extensions/XScreenSaver.h" >&5 +echo "configure:3984: checking for X11/extensions/XScreenSaver.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3994: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3942,7 +4036,7 @@ fi /*) echo $ac_n "checking for MIT-SCREEN-SAVER headers""... $ac_c" 1>&6 -echo "configure:3957: checking for MIT-SCREEN-SAVER headers" >&5 +echo "configure:4051: checking for MIT-SCREEN-SAVER headers" >&5 d=$with_mit/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -3952,7 +4046,7 @@ echo "configure:3957: checking for MIT-SCREEN-SAVER headers" >&5 fi echo $ac_n "checking for MIT-SCREEN-SAVER libs""... $ac_c" 1>&6 -echo "configure:3967: checking for MIT-SCREEN-SAVER libs" >&5 +echo "configure:4061: checking for MIT-SCREEN-SAVER libs" >&5 d=$with_mit/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -3985,17 +4079,17 @@ if test "$with_mit" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/scrnsaver.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/scrnsaver.h""... $ac_c" 1>&6 -echo "configure:4000: checking for X11/extensions/scrnsaver.h" >&5 +echo "configure:4094: checking for X11/extensions/scrnsaver.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4010: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4104: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4040,7 +4134,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XScreenSaverRegister in -lXext""... $ac_c" 1>&6 -echo "configure:4055: checking for XScreenSaverRegister in -lXext" >&5 +echo "configure:4149: checking for XScreenSaverRegister in -lXext" >&5 ac_lib_var=`echo Xext'_'XScreenSaverRegister | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4048,7 +4142,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4106,7 +4200,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XScreenSaverRegister in -lXExExt""... $ac_c" 1>&6 -echo "configure:4121: checking for XScreenSaverRegister in -lXExExt" >&5 +echo "configure:4215: checking for XScreenSaverRegister in -lXExExt" >&5 ac_lib_var=`echo XExExt'_'XScreenSaverRegister | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4114,7 +4208,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXExExt -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4175,7 +4269,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XScreenSaverRegister in -lXss""... $ac_c" 1>&6 -echo "configure:4190: checking for XScreenSaverRegister in -lXss" >&5 +echo "configure:4284: checking for XScreenSaverRegister in -lXss" >&5 ac_lib_var=`echo Xss'_'XScreenSaverRegister | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4183,7 +4277,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXss -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4260,7 +4354,7 @@ fi /*) echo $ac_n "checking for XIDLE headers""... $ac_c" 1>&6 -echo "configure:4275: checking for XIDLE headers" >&5 +echo "configure:4369: checking for XIDLE headers" >&5 d=$with_xidle/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4270,7 +4364,7 @@ echo "configure:4275: checking for XIDLE headers" >&5 fi echo $ac_n "checking for XIDLE libs""... $ac_c" 1>&6 -echo "configure:4285: checking for XIDLE libs" >&5 +echo "configure:4379: checking for XIDLE libs" >&5 d=$with_xidle/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4303,17 +4397,17 @@ if test "$with_xidle" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/xidle.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/xidle.h""... $ac_c" 1>&6 -echo "configure:4318: checking for X11/extensions/xidle.h" >&5 +echo "configure:4412: checking for X11/extensions/xidle.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4369,7 +4463,7 @@ fi /*) echo $ac_n "checking for SGI-VIDEO-CONTROL headers""... $ac_c" 1>&6 -echo "configure:4384: checking for SGI-VIDEO-CONTROL headers" >&5 +echo "configure:4478: checking for SGI-VIDEO-CONTROL headers" >&5 d=$with_sgivc/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4379,7 +4473,7 @@ echo "configure:4384: checking for SGI-VIDEO-CONTROL headers" >&5 fi echo $ac_n "checking for SGI-VIDEO-CONTROL libs""... $ac_c" 1>&6 -echo "configure:4394: checking for SGI-VIDEO-CONTROL libs" >&5 +echo "configure:4488: checking for SGI-VIDEO-CONTROL libs" >&5 d=$with_sgivc/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4414,17 +4508,17 @@ if test "$with_sgivc" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/XSGIvc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XSGIvc.h""... $ac_c" 1>&6 -echo "configure:4429: checking for X11/extensions/XSGIvc.h" >&5 +echo "configure:4523: checking for X11/extensions/XSGIvc.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4468,7 +4562,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XSGIvcQueryGammaMap in -lXsgivc""... $ac_c" 1>&6 -echo "configure:4483: checking for XSGIvcQueryGammaMap in -lXsgivc" >&5 +echo "configure:4577: checking for XSGIvcQueryGammaMap in -lXsgivc" >&5 ac_lib_var=`echo Xsgivc'_'XSGIvcQueryGammaMap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4476,7 +4570,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXsgivc -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4552,7 +4646,7 @@ fi /*) echo $ac_n "checking for DPMS headers""... $ac_c" 1>&6 -echo "configure:4567: checking for DPMS headers" >&5 +echo "configure:4661: checking for DPMS headers" >&5 d=$with_dpms/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4562,7 +4656,7 @@ echo "configure:4567: checking for DPMS headers" >&5 fi echo $ac_n "checking for DPMS libs""... $ac_c" 1>&6 -echo "configure:4577: checking for DPMS libs" >&5 +echo "configure:4671: checking for DPMS libs" >&5 d=$with_dpms/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4597,17 +4691,17 @@ if test "$with_dpms" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/dpms.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/dpms.h""... $ac_c" 1>&6 -echo "configure:4612: checking for X11/extensions/dpms.h" >&5 +echo "configure:4706: checking for X11/extensions/dpms.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4622: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4716: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4653,7 +4747,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for DPMSInfo in -lXext""... $ac_c" 1>&6 -echo "configure:4668: checking for DPMSInfo in -lXext" >&5 +echo "configure:4762: checking for DPMSInfo in -lXext" >&5 ac_lib_var=`echo Xext'_'DPMSInfo | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4661,7 +4755,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXext -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4718,7 +4812,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for DPMSInfo in -lXdpms""... $ac_c" 1>&6 -echo "configure:4733: checking for DPMSInfo in -lXdpms" >&5 +echo "configure:4827: checking for DPMSInfo in -lXdpms" >&5 ac_lib_var=`echo Xdpms'_'DPMSInfo | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4726,7 +4820,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXdpms -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4804,7 +4898,7 @@ fi /*) echo $ac_n "checking for XINERAMA headers""... $ac_c" 1>&6 -echo "configure:4819: checking for XINERAMA headers" >&5 +echo "configure:4913: checking for XINERAMA headers" >&5 d=$with_xinerama/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -4814,7 +4908,7 @@ echo "configure:4819: checking for XINERAMA headers" >&5 fi echo $ac_n "checking for XINERAMA libs""... $ac_c" 1>&6 -echo "configure:4829: checking for XINERAMA libs" >&5 +echo "configure:4923: checking for XINERAMA libs" >&5 d=$with_xinerama/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -4849,17 +4943,17 @@ if test "$with_xinerama" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/Xinerama.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/Xinerama.h""... $ac_c" 1>&6 -echo "configure:4864: checking for X11/extensions/Xinerama.h" >&5 +echo "configure:4958: checking for X11/extensions/Xinerama.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4905,7 +4999,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XineramaQueryExtension in -lXext""... $ac_c" 1>&6 -echo "configure:4920: checking for XineramaQueryExtension in -lXext" >&5 +echo "configure:5014: checking for XineramaQueryExtension in -lXext" >&5 ac_lib_var=`echo Xext'_'XineramaQueryExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4913,7 +5007,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXext -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4970,7 +5064,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XineramaQueryExtension in -lXinerama""... $ac_c" 1>&6 -echo "configure:4985: checking for XineramaQueryExtension in -lXinerama" >&5 +echo "configure:5079: checking for XineramaQueryExtension in -lXinerama" >&5 ac_lib_var=`echo Xinerama'_'XineramaQueryExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4978,7 +5072,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXinerama -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5055,7 +5149,7 @@ fi /*) echo $ac_n "checking for xf86vmode headers""... $ac_c" 1>&6 -echo "configure:5070: checking for xf86vmode headers" >&5 +echo "configure:5164: checking for xf86vmode headers" >&5 d=$with_xf86vmode/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -5065,7 +5159,7 @@ echo "configure:5070: checking for xf86vmode headers" >&5 fi echo $ac_n "checking for xf86vmode libs""... $ac_c" 1>&6 -echo "configure:5080: checking for xf86vmode libs" >&5 +echo "configure:5174: checking for xf86vmode libs" >&5 d=$with_xf86vmode/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -5100,17 +5194,17 @@ if test "$with_xf86vmode" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/xf86vmode.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/xf86vmode.h""... $ac_c" 1>&6 -echo "configure:5115: checking for X11/extensions/xf86vmode.h" >&5 +echo "configure:5209: checking for X11/extensions/xf86vmode.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5125: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5154,7 +5248,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XF86VidModeGetViewPort in -lXxf86vm""... $ac_c" 1>&6 -echo "configure:5169: checking for XF86VidModeGetViewPort in -lXxf86vm" >&5 +echo "configure:5263: checking for XF86VidModeGetViewPort in -lXxf86vm" >&5 ac_lib_var=`echo Xxf86vm'_'XF86VidModeGetViewPort | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5162,7 +5256,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXxf86vm -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5239,7 +5333,7 @@ fi /*) echo $ac_n "checking for xf86gamma headers""... $ac_c" 1>&6 -echo "configure:5254: checking for xf86gamma headers" >&5 +echo "configure:5348: checking for xf86gamma headers" >&5 d=$with_xf86gamma/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -5249,7 +5343,7 @@ echo "configure:5254: checking for xf86gamma headers" >&5 fi echo $ac_n "checking for xf86gamma libs""... $ac_c" 1>&6 -echo "configure:5264: checking for xf86gamma libs" >&5 +echo "configure:5358: checking for xf86gamma libs" >&5 d=$with_xf86gamma/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -5287,17 +5381,17 @@ if test "$with_xf86gamma" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/xf86vmode.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/xf86vmode.h""... $ac_c" 1>&6 -echo "configure:5302: checking for X11/extensions/xf86vmode.h" >&5 +echo "configure:5396: checking for X11/extensions/xf86vmode.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5312: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5342,7 +5436,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XF86VidModeSetGamma in -lXxf86vm""... $ac_c" 1>&6 -echo "configure:5357: checking for XF86VidModeSetGamma in -lXxf86vm" >&5 +echo "configure:5451: checking for XF86VidModeSetGamma in -lXxf86vm" >&5 ac_lib_var=`echo Xxf86vm'_'XF86VidModeSetGamma | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5350,7 +5444,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXxf86vm -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5409,7 +5503,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XF86VidModeSetGammaRamp in -lXxf86vm""... $ac_c" 1>&6 -echo "configure:5424: checking for XF86VidModeSetGammaRamp in -lXxf86vm" >&5 +echo "configure:5518: checking for XF86VidModeSetGammaRamp in -lXxf86vm" >&5 ac_lib_var=`echo Xxf86vm'_'XF86VidModeSetGammaRamp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5417,7 +5511,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXxf86vm -lXext -lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5494,7 +5588,7 @@ fi fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < EOF @@ -5532,7 +5626,7 @@ fi if test "$with_proc_interrupts" = yes; then echo $ac_n "checking whether /proc/interrupts contains keyboard data""... $ac_c" 1>&6 -echo "configure:5547: checking whether /proc/interrupts contains keyboard data" >&5 +echo "configure:5641: checking whether /proc/interrupts contains keyboard data" >&5 if eval "test \"`echo '$''{'ac_cv_have_proc_interrupts'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5665,7 +5759,7 @@ fi /*) echo $ac_n "checking for PAM headers""... $ac_c" 1>&6 -echo "configure:5680: checking for PAM headers" >&5 +echo "configure:5774: checking for PAM headers" >&5 d=$with_pam/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -5675,7 +5769,7 @@ echo "configure:5680: checking for PAM headers" >&5 fi echo $ac_n "checking for PAM libs""... $ac_c" 1>&6 -echo "configure:5690: checking for PAM libs" >&5 +echo "configure:5784: checking for PAM libs" >&5 d=$with_pam/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -5701,7 +5795,7 @@ echo "configure:5690: checking for PAM libs" >&5 if test "$enable_locking" = yes -a "$with_pam" = yes; then echo $ac_n "checking for PAM""... $ac_c" 1>&6 -echo "configure:5716: checking for PAM" >&5 +echo "configure:5810: checking for PAM" >&5 if eval "test \"`echo '$''{'ac_cv_pam'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5712,14 +5806,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { ; return 0; } EOF -if { (eval echo configure:5734: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5828: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_pam=yes else @@ -5744,7 +5838,7 @@ EOF # libpam typically requires dlopen and dlsym. On FreeBSD, # those are in libc. On Linux and Solaris, they're in libdl. echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:5759: checking for dlopen in -ldl" >&5 +echo "configure:5853: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5752,7 +5846,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5785,12 +5879,12 @@ fi echo $ac_n "checking how to call pam_strerror""... $ac_c" 1>&6 -echo "configure:5800: checking how to call pam_strerror" >&5 +echo "configure:5894: checking how to call pam_strerror" >&5 if eval "test \"`echo '$''{'ac_cv_pam_strerror_args'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -5800,7 +5894,7 @@ pam_handle_t *pamh = 0; char *s = pam_strerror(pamh, PAM_SUCCESS); ; return 0; } EOF -if { (eval echo configure:5815: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5909: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_pam_strerror_args=2 else @@ -5808,7 +5902,7 @@ else cat conftest.$ac_ext >&5 rm -rf conftest* cat > conftest.$ac_ext < #include @@ -5818,7 +5912,7 @@ char *s = pam_strerror(PAM_SUCCESS); ; return 0; } EOF -if { (eval echo configure:5833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_pam_strerror_args=1 else @@ -5875,7 +5969,7 @@ fi /*) echo $ac_n "checking for Kerberos headers""... $ac_c" 1>&6 -echo "configure:5890: checking for Kerberos headers" >&5 +echo "configure:5984: checking for Kerberos headers" >&5 d=$with_kerberos/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -5885,7 +5979,7 @@ echo "configure:5890: checking for Kerberos headers" >&5 fi echo $ac_n "checking for Kerberos libs""... $ac_c" 1>&6 -echo "configure:5900: checking for Kerberos libs" >&5 +echo "configure:5994: checking for Kerberos libs" >&5 d=$with_kerberos/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -5911,7 +6005,7 @@ echo "configure:5900: checking for Kerberos libs" >&5 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then echo $ac_n "checking for Kerberos 4""... $ac_c" 1>&6 -echo "configure:5926: checking for Kerberos 4" >&5 +echo "configure:6020: checking for Kerberos 4" >&5 if eval "test \"`echo '$''{'ac_cv_kerberos'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5922,14 +6016,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { ; return 0; } EOF -if { (eval echo configure:5944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_kerberos=yes else @@ -5944,7 +6038,7 @@ fi echo "$ac_t""$ac_cv_kerberos" 1>&6 echo $ac_n "checking for Kerberos 5""... $ac_c" 1>&6 -echo "configure:5959: checking for Kerberos 5" >&5 +echo "configure:6053: checking for Kerberos 5" >&5 if eval "test \"`echo '$''{'ac_cv_kerberos5'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5955,14 +6049,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { ; return 0; } EOF -if { (eval echo configure:5977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6071: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_kerberos5=yes else @@ -6009,12 +6103,12 @@ EOF if test "$have_kerberos" = yes ; then echo $ac_n "checking for res_search""... $ac_c" 1>&6 -echo "configure:6024: checking for res_search" >&5 +echo "configure:6118: checking for res_search" >&5 if eval "test \"`echo '$''{'ac_cv_func_res_search'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_res_search=yes" else @@ -6055,7 +6149,7 @@ if eval "test \"`echo '$ac_cv_func_'res_search`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for res_search in -lresolv""... $ac_c" 1>&6 -echo "configure:6070: checking for res_search in -lresolv" >&5 +echo "configure:6164: checking for res_search in -lresolv" >&5 ac_lib_var=`echo resolv'_'res_search | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6063,7 +6157,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lresolv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6129,7 +6223,7 @@ fi /*) echo $ac_n "checking for shadow password headers""... $ac_c" 1>&6 -echo "configure:6144: checking for shadow password headers" >&5 +echo "configure:6238: checking for shadow password headers" >&5 d=$with_shadow/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -6139,7 +6233,7 @@ echo "configure:6144: checking for shadow password headers" >&5 fi echo $ac_n "checking for shadow password libs""... $ac_c" 1>&6 -echo "configure:6154: checking for shadow password libs" >&5 +echo "configure:6248: checking for shadow password libs" >&5 d=$with_shadow/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -6177,7 +6271,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for Sun-style shadow passwords""... $ac_c" 1>&6 -echo "configure:6192: checking for Sun-style shadow passwords" >&5 +echo "configure:6286: checking for Sun-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_sun_adjunct'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6188,7 +6282,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -6201,7 +6295,7 @@ struct passwd_adjunct *p = getpwanam("nobody"); const char *pw = p->pwa_passwd; ; return 0; } EOF -if { (eval echo configure:6216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sun_adjunct=yes else @@ -6231,7 +6325,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for DEC-style shadow passwords""... $ac_c" 1>&6 -echo "configure:6246: checking for DEC-style shadow passwords" >&5 +echo "configure:6340: checking for DEC-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_enhanced_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6242,7 +6336,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -6259,7 +6353,7 @@ struct pr_passwd *p; pw = p->ufld.fd_encrypt; ; return 0; } EOF -if { (eval echo configure:6274: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_enhanced_passwd=yes else @@ -6283,7 +6377,7 @@ echo "$ac_t""$ac_cv_enhanced_passwd" 1>&6 # But on DEC, it's in -lsecurity. # echo $ac_n "checking for getprpwnam in -lprot""... $ac_c" 1>&6 -echo "configure:6298: checking for getprpwnam in -lprot" >&5 +echo "configure:6392: checking for getprpwnam in -lprot" >&5 ac_lib_var=`echo prot'_'getprpwnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6291,7 +6385,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lprot -lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6321,7 +6415,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for getprpwnam in -lsecurity""... $ac_c" 1>&6 -echo "configure:6336: checking for getprpwnam in -lsecurity" >&5 +echo "configure:6430: checking for getprpwnam in -lsecurity" >&5 ac_lib_var=`echo security'_'getprpwnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6329,7 +6423,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsecurity $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6373,7 +6467,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for HP-style shadow passwords""... $ac_c" 1>&6 -echo "configure:6388: checking for HP-style shadow passwords" >&5 +echo "configure:6482: checking for HP-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_hpux_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6384,7 +6478,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -6397,7 +6491,7 @@ struct s_passwd *p = getspwnam("nobody"); const char *pw = p->pw_passwd; ; return 0; } EOF -if { (eval echo configure:6412: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_hpux_passwd=yes else @@ -6418,7 +6512,7 @@ echo "$ac_t""$ac_cv_hpux_passwd" 1>&6 # on HPUX, bigcrypt is in -lsec echo $ac_n "checking for bigcrypt in -lsec""... $ac_c" 1>&6 -echo "configure:6433: checking for bigcrypt in -lsec" >&5 +echo "configure:6527: checking for bigcrypt in -lsec" >&5 ac_lib_var=`echo sec'_'bigcrypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6426,7 +6520,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsec $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6475,7 +6569,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for FreeBSD-style shadow passwords""... $ac_c" 1>&6 -echo "configure:6490: checking for FreeBSD-style shadow passwords" >&5 +echo "configure:6584: checking for FreeBSD-style shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_master_passwd'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6501,7 +6595,7 @@ fi if test "$with_shadow" = yes ; then echo $ac_n "checking for generic shadow passwords""... $ac_c" 1>&6 -echo "configure:6516: checking for generic shadow passwords" >&5 +echo "configure:6610: checking for generic shadow passwords" >&5 if eval "test \"`echo '$''{'ac_cv_shadow'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6512,7 +6606,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < #include @@ -6524,7 +6618,7 @@ struct spwd *p = getspnam("nobody"); const char *pw = p->sp_pwdp; ; return 0; } EOF -if { (eval echo configure:6539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_shadow=yes else @@ -6545,7 +6639,7 @@ echo "$ac_t""$ac_cv_shadow" 1>&6 # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc. have_getspnam=no echo $ac_n "checking for getspnam in -lc""... $ac_c" 1>&6 -echo "configure:6560: checking for getspnam in -lc" >&5 +echo "configure:6654: checking for getspnam in -lc" >&5 ac_lib_var=`echo c'_'getspnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6553,7 +6647,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6586,7 +6680,7 @@ fi if test "$have_getspnam" = no ; then echo $ac_n "checking for getspnam in -lgen""... $ac_c" 1>&6 -echo "configure:6601: checking for getspnam in -lgen" >&5 +echo "configure:6695: checking for getspnam in -lgen" >&5 ac_lib_var=`echo gen'_'getspnam | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6594,7 +6688,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgen $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6641,7 +6735,7 @@ if test "$enable_locking" = yes ; then # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc. have_crypt=no echo $ac_n "checking for crypt in -lc""... $ac_c" 1>&6 -echo "configure:6656: checking for crypt in -lc" >&5 +echo "configure:6750: checking for crypt in -lc" >&5 ac_lib_var=`echo c'_'crypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6649,7 +6743,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6682,7 +6776,7 @@ fi if test "$have_crypt" = no ; then echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:6697: checking for crypt in -lcrypt" >&5 +echo "configure:6791: checking for crypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6690,7 +6784,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcrypt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6785,7 +6879,7 @@ fi /*) echo $ac_n "checking for Motif headers""... $ac_c" 1>&6 -echo "configure:6800: checking for Motif headers" >&5 +echo "configure:6894: checking for Motif headers" >&5 d=$with_motif/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -6795,7 +6889,7 @@ echo "configure:6800: checking for Motif headers" >&5 fi echo $ac_n "checking for Motif libs""... $ac_c" 1>&6 -echo "configure:6810: checking for Motif libs" >&5 +echo "configure:6904: checking for Motif libs" >&5 d=$with_motif/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -6834,17 +6928,17 @@ if test "$with_motif" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:6849: checking for Xm/Xm.h" >&5 +echo "configure:6943: checking for Xm/Xm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6953: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6883,17 +6977,17 @@ if test "$have_motif" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "Xm/ComboBox.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/ComboBox.h""... $ac_c" 1>&6 -echo "configure:6898: checking for Xm/ComboBox.h" >&5 +echo "configure:6992: checking for Xm/ComboBox.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6908: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7002: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6956,7 +7050,7 @@ esac /*) echo $ac_n "checking for Gtk headers""... $ac_c" 1>&6 -echo "configure:6971: checking for Gtk headers" >&5 +echo "configure:7065: checking for Gtk headers" >&5 d=$with_gtk/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -6966,7 +7060,7 @@ echo "configure:6971: checking for Gtk headers" >&5 fi echo $ac_n "checking for Gtk libs""... $ac_c" 1>&6 -echo "configure:6981: checking for Gtk libs" >&5 +echo "configure:7075: checking for Gtk libs" >&5 d=$with_gtk/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -7024,7 +7118,7 @@ esac /*) echo $ac_n "checking for Gnome headers""... $ac_c" 1>&6 -echo "configure:7039: checking for Gnome headers" >&5 +echo "configure:7133: checking for Gnome headers" >&5 d=$with_gnome/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -7034,7 +7128,7 @@ echo "configure:7039: checking for Gnome headers" >&5 fi echo $ac_n "checking for Gnome libs""... $ac_c" 1>&6 -echo "configure:7049: checking for Gnome libs" >&5 +echo "configure:7143: checking for Gnome libs" >&5 d=$with_gnome/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -7068,21 +7162,21 @@ jurassic_gtk=no if test "$with_gtk" = yes; then have_gtk=no - # if the user specified --with-gtk=/foo/ then look in /foo/bin/ - # for glib-config and gtk-config. + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for glib-config, gtk-config, and gnome-config. # gtk_path="$PATH" if test ! -z "$gtk_dir"; then # canonicalize slashes. - gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gtk_dir:$gtk_path" + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + gtk_path="$foo:$gtk_path" fi - if test ! -z "gnome_dir"; then + if test ! -z "$gnome_dir"; then # canonicalize slashes. - gnome_dir=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gnome_dir:$gtk_path" + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + gtk_path="$foo:$gtk_path" fi for ac_prog in glib12-config glib-config @@ -7090,7 +7184,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7105: checking for $ac_word" >&5 +echo "configure:7199: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_glib_config'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7130,7 +7224,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7145: checking for $ac_word" >&5 +echo "configure:7239: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_gtk_config'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7172,7 +7266,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7187: checking for $ac_word" >&5 +echo "configure:7281: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_gnome_config'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7209,7 +7303,7 @@ done fi - if test -n "$glib_config" -a -n "gtk_config" ; then + if test -n "$glib_config" -a -n "$gtk_config" ; then have_gtk=yes if test "$with_gnome" = yes -a -n "$gnome_config" ; then have_gnome=yes @@ -7218,7 +7312,7 @@ done if test "$have_gtk" = yes; then echo $ac_n "checking Gtk version number""... $ac_c" 1>&6 -echo "configure:7233: checking Gtk version number" >&5 +echo "configure:7327: checking Gtk version number" >&5 if eval "test \"`echo '$''{'ac_cv_gtk_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7247,7 +7341,7 @@ echo "$ac_t""$ac_cv_gtk_version_string" 1>&6 if test "$have_gtk" = yes; then echo $ac_n "checking for Gtk includes""... $ac_c" 1>&6 -echo "configure:7262: checking for Gtk includes" >&5 +echo "configure:7356: checking for Gtk includes" >&5 if eval "test \"`echo '$''{'ac_cv_gtk_config_cflags'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7256,7 +7350,7 @@ fi echo "$ac_t""$ac_cv_gtk_config_cflags" 1>&6 echo $ac_n "checking for Gtk libs""... $ac_c" 1>&6 -echo "configure:7271: checking for Gtk libs" >&5 +echo "configure:7365: checking for Gtk libs" >&5 if eval "test \"`echo '$''{'ac_cv_gtk_config_libs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7271,9 +7365,9 @@ echo "$ac_t""$ac_cv_gtk_config_libs" 1>&6 # Check for Gnome Capplet support. # if test "$have_gnome" = yes -a "$have_gtk" = yes; then - gnome_config_libs="gtk capplet gnomeui xml gdk_pixbuf" + gnome_config_libs="gtk capplet gnomeui gdk_pixbuf" echo $ac_n "checking for Gnome capplet includes""... $ac_c" 1>&6 -echo "configure:7288: checking for Gnome capplet includes" >&5 +echo "configure:7382: checking for Gnome capplet includes" >&5 if eval "test \"`echo '$''{'ac_cv_gnome_config_cflags'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7296,7 +7390,7 @@ fi if test "$have_gnome" = yes -a "$have_gtk" = yes; then echo $ac_n "checking for Gnome capplet libs""... $ac_c" 1>&6 -echo "configure:7311: checking for Gnome capplet libs" >&5 +echo "configure:7405: checking for Gnome capplet libs" >&5 if eval "test \"`echo '$''{'ac_cv_gnome_config_libs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7353,7 +7447,7 @@ EOF LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for capplet_widget_changes_are_immediate in -lcapplet""... $ac_c" 1>&6 -echo "configure:7368: checking for capplet_widget_changes_are_immediate in -lcapplet" >&5 +echo "configure:7462: checking for capplet_widget_changes_are_immediate in -lcapplet" >&5 ac_lib_var=`echo capplet'_'capplet_widget_changes_are_immediate | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7361,7 +7455,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcapplet $ac_gnome_config_libs $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7421,7 +7515,7 @@ if test "$have_gnome" = yes; then # Extract the first word of "gnome-help-browser", so it can be a program name with args. set dummy gnome-help-browser; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7436: checking for $ac_word" >&5 +echo "configure:7530: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_have_gnome_help'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7455,7 +7549,7 @@ fi ############################################################################### # -# Check for -lxml (if we have Gtk) +# Check for -lxml # ############################################################################### @@ -7471,6 +7565,17 @@ else fi +# if --with-xml=/directory/ was specified, remember that directory so that +# we can also look for the `xml-config' program in that directory. +case "$with_xml" in + /*) + xml_dir="$with_xml" + ;; + *) + xml_dir="" + ;; +esac + case "$with_xml" in yes) ;; @@ -7478,7 +7583,7 @@ fi /*) echo $ac_n "checking for XML headers""... $ac_c" 1>&6 -echo "configure:7493: checking for XML headers" >&5 +echo "configure:7598: checking for XML headers" >&5 d=$with_xml/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -7488,7 +7593,7 @@ echo "configure:7493: checking for XML headers" >&5 fi echo $ac_n "checking for XML libs""... $ac_c" 1>&6 -echo "configure:7503: checking for XML libs" >&5 +echo "configure:7608: checking for XML libs" >&5 d=$with_xml/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -7517,20 +7622,94 @@ if test "$with_xml" != yes -a "$with_xml" != no ; then exit 1 fi -if test "$have_gtk" != yes; then - # don't bother if no GTK - with_xml=no -fi - if test "$with_xml" = yes; then have_xml=no - # the XML stuff is likely to be in GTK paths. - ac_save_X_CFLAGS="$X_CFLAGS" - ac_save_X_LIBS="$X_LIBS" - X_CFLAGS="$X_CFLAGS $ac_gtk_config_cflags" - X_LIBS="$X_LIBS $ac_gtk_config_libs" + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for for xml-config. + # + xml_path="$PATH" + if test ! -z "$gtk_dir"; then + # canonicalize slashes. + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + xml_path="$foo:$xml_path" + fi + + if test ! -z "$gnome_dir"; then + # canonicalize slashes. + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + xml_path="$foo:$xml_path" + fi + + for ac_prog in xml2-config xml-config +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:7662: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_xml_config'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$xml_config" in + /*) + ac_cv_path_xml_config="$xml_config" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_xml_config="$xml_config" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$xml_path" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_xml_config="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +xml_config="$ac_cv_path_xml_config" +if test -n "$xml_config"; then + echo "$ac_t""$xml_config" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$xml_config" && break +done + + + # If we found the xml-config program, run it to get flags. + # + if test -n "$xml_config" ; then + echo $ac_n "checking for XML includes""... $ac_c" 1>&6 +echo "configure:7702: checking for XML includes" >&5 +if eval "test \"`echo '$''{'ac_cv_xml_config_cflags'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_xml_config_cflags=`$xml_config --cflags` +fi + +echo "$ac_t""$ac_cv_xml_config_cflags" 1>&6 + echo $ac_n "checking for XML libs""... $ac_c" 1>&6 +echo "configure:7711: checking for XML libs" >&5 +if eval "test \"`echo '$''{'ac_cv_xml_config_libs'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_xml_config_libs=`$xml_config --libs` +fi + +echo "$ac_t""$ac_cv_xml_config_libs" 1>&6 + ac_xml_config_cflags=$ac_cv_xml_config_cflags + ac_xml_config_libs=$ac_cv_xml_config_libs + fi + + ac_save_xml_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags" ac_save_CPPFLAGS="$CPPFLAGS" if test \! -z "$includedir" ; then @@ -7539,17 +7718,17 @@ if test "$with_xml" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "xmlIO.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for xmlIO.h""... $ac_c" 1>&6 -echo "configure:7554: checking for xmlIO.h" >&5 +echo "configure:7733: checking for xmlIO.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7743: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7571,6 +7750,7 @@ else fi CPPFLAGS="$ac_save_CPPFLAGS" + CPPFLAGS="$ac_save_xml_CPPFLAGS" if test "$have_xml" = yes; then # we have the header, now check for the library @@ -7594,15 +7774,15 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for xmlParseChunk in -lxml""... $ac_c" 1>&6 -echo "configure:7609: checking for xmlParseChunk in -lxml" >&5 +echo "configure:7789: checking for xmlParseChunk in -lxml" >&5 ac_lib_var=`echo xml'_'xmlParseChunk | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lxml $LIBS" +LIBS="-lxml $ac_xml_config_libs $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7637,6 +7817,7 @@ EOF else echo "$ac_t""no" 1>&6 +true fi CPPFLAGS="$ac_save_CPPFLAGS" @@ -7645,8 +7826,14 @@ fi fi - X_CFLAGS="$ac_save_X_CFLAGS" - X_LIBS="$ac_save_X_LIBS" + if test "$have_xml" = yes; then + INCLUDES="$INCLUDES $ac_xml_config_cflags" + GTK_LIBS="$GTK_LIBS $ac_xml_config_libs" + cat >> confdefs.h <<\EOF +#define HAVE_XML 1 +EOF + + fi fi @@ -7660,7 +7847,7 @@ fi have_lesstif=no if test "$have_motif" = yes ; then echo $ac_n "checking whether Motif is really LessTif""... $ac_c" 1>&6 -echo "configure:7675: checking whether Motif is really LessTif" >&5 +echo "configure:7862: checking whether Motif is really LessTif" >&5 if eval "test \"`echo '$''{'ac_cv_have_lesstif'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7671,14 +7858,14 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < int main() { long vers = LesstifVersion; ; return 0; } EOF -if { (eval echo configure:7693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_lesstif=yes else @@ -7703,7 +7890,7 @@ if test "$have_lesstif" = yes ; then ltv=unknown echo unknown > conftest-lt echo $ac_n "checking LessTif version number""... $ac_c" 1>&6 -echo "configure:7718: checking LessTif version number" >&5 +echo "configure:7905: checking LessTif version number" >&5 if eval "test \"`echo '$''{'ac_cv_lesstif_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7718,7 +7905,7 @@ else ac_cv_lesstif_version_string=unknown else cat > conftest.$ac_ext < #include @@ -7731,7 +7918,7 @@ else exit(0); } EOF -if { (eval echo configure:7746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ltv=`cat conftest-lt` ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'` @@ -7761,7 +7948,7 @@ if test "$have_motif" = yes ; then mtv=unknown echo unknown > conftest-mt echo $ac_n "checking Motif version number""... $ac_c" 1>&6 -echo "configure:7776: checking Motif version number" >&5 +echo "configure:7963: checking Motif version number" >&5 if eval "test \"`echo '$''{'ac_cv_motif_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7776,7 +7963,7 @@ else ac_cv_motif_version_string=unknown else cat > conftest.$ac_ext < #include @@ -7789,7 +7976,7 @@ else exit(0); } EOF -if { (eval echo configure:7804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then mtv=`cat conftest-mt` ac_cv_motif_version=`echo $mtv | sed 's/ .*//'` @@ -7833,7 +8020,7 @@ fi motif_requires_xpm=no if test "$have_motif" = yes ; then echo $ac_n "checking whether Motif requires XPM""... $ac_c" 1>&6 -echo "configure:7848: checking whether Motif requires XPM" >&5 +echo "configure:8035: checking whether Motif requires XPM" >&5 if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000 then motif_requires_xpm=yes @@ -7875,7 +8062,7 @@ if test "$have_motif" = yes ; then LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XpQueryExtension in -lXp""... $ac_c" 1>&6 -echo "configure:7890: checking for XpQueryExtension in -lXp" >&5 +echo "configure:8077: checking for XpQueryExtension in -lXp" >&5 ac_lib_var=`echo Xp'_'XpQueryExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7883,7 +8070,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXp -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7948,7 +8135,7 @@ if test "$have_motif" = yes ; then LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for _Xsetlocale in -lXintl""... $ac_c" 1>&6 -echo "configure:7963: checking for _Xsetlocale in -lXintl" >&5 +echo "configure:8150: checking for _Xsetlocale in -lXintl" >&5 ac_lib_var=`echo Xintl'_'_Xsetlocale | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7956,7 +8143,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXintl -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8024,7 +8211,7 @@ fi /*) echo $ac_n "checking for GL headers""... $ac_c" 1>&6 -echo "configure:8039: checking for GL headers" >&5 +echo "configure:8226: checking for GL headers" >&5 d=$with_gl/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -8034,7 +8221,7 @@ echo "configure:8039: checking for GL headers" >&5 fi echo $ac_n "checking for GL libs""... $ac_c" 1>&6 -echo "configure:8049: checking for GL libs" >&5 +echo "configure:8236: checking for GL libs" >&5 d=$with_gl/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -8070,17 +8257,17 @@ if test "$with_gl" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/gl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/gl.h""... $ac_c" 1>&6 -echo "configure:8085: checking for GL/gl.h" >&5 +echo "configure:8272: checking for GL/gl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8095: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8282: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8111,17 +8298,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/glx.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/glx.h""... $ac_c" 1>&6 -echo "configure:8126: checking for GL/glx.h" >&5 +echo "configure:8313: checking for GL/glx.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8153,7 +8340,7 @@ fi # to link against. # echo $ac_n "checking whether GL is really MesaGL""... $ac_c" 1>&6 -echo "configure:8168: checking whether GL is really MesaGL" >&5 +echo "configure:8355: checking whether GL is really MesaGL" >&5 if eval "test \"`echo '$''{'ac_cv_have_mesa_gl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8165,7 +8352,7 @@ else fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" cat > conftest.$ac_ext < EOF @@ -8194,7 +8381,7 @@ echo "$ac_t""$ac_cv_have_mesa_gl" 1>&6 # if test "$ac_have_mesa_gl" = yes; then echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 -echo "configure:8209: checking for pthread_create in -lpthread" >&5 +echo "configure:8396: checking for pthread_create in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8202,7 +8389,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8260,7 +8447,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for glXCreateContext in -lMesaGL""... $ac_c" 1>&6 -echo "configure:8275: checking for glXCreateContext in -lMesaGL" >&5 +echo "configure:8462: checking for glXCreateContext in -lMesaGL" >&5 ac_lib_var=`echo MesaGL'_'glXCreateContext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8268,7 +8455,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lMesaGL -lMesaGLU $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8325,7 +8512,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for glXCreateContext in -lGL""... $ac_c" 1>&6 -echo "configure:8340: checking for glXCreateContext in -lGL" >&5 +echo "configure:8527: checking for glXCreateContext in -lGL" >&5 ac_lib_var=`echo GL'_'glXCreateContext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8333,7 +8520,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lGL -lGLU $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8402,12 +8589,12 @@ EOF if test "$ac_have_mesa_gl" = yes; then echo $ac_n "checking MesaGL version number""... $ac_c" 1>&6 -echo "configure:8417: checking MesaGL version number" >&5 +echo "configure:8604: checking MesaGL version number" >&5 if eval "test \"`echo '$''{'ac_cv_mesagl_version_string'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifndef MESA_MAJOR_VERSION @@ -8478,7 +8665,7 @@ echo "$ac_t""$ac_cv_mesagl_version_string" 1>&6 LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for glBindTexture in -l$gl_lib_1""... $ac_c" 1>&6 -echo "configure:8493: checking for glBindTexture in -l$gl_lib_1" >&5 +echo "configure:8680: checking for glBindTexture in -l$gl_lib_1" >&5 ac_lib_var=`echo $gl_lib_1'_'glBindTexture | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8486,7 +8673,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$gl_lib_1 $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8558,7 +8745,7 @@ fi /*) echo $ac_n "checking for GLE headers""... $ac_c" 1>&6 -echo "configure:8573: checking for GLE headers" >&5 +echo "configure:8760: checking for GLE headers" >&5 d=$with_gle/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -8568,7 +8755,7 @@ echo "configure:8573: checking for GLE headers" >&5 fi echo $ac_n "checking for GLE libs""... $ac_c" 1>&6 -echo "configure:8583: checking for GLE libs" >&5 +echo "configure:8770: checking for GLE libs" >&5 d=$with_gle/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -8604,17 +8791,17 @@ if test "$with_gle" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/gle.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/gle.h""... $ac_c" 1>&6 -echo "configure:8619: checking for GL/gle.h" >&5 +echo "configure:8806: checking for GL/gle.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8629: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8816: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8647,17 +8834,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/gutil.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/gutil.h""... $ac_c" 1>&6 -echo "configure:8662: checking for GL/gutil.h" >&5 +echo "configure:8849: checking for GL/gutil.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8688,17 +8875,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "GL/tube.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for GL/tube.h""... $ac_c" 1>&6 -echo "configure:8703: checking for GL/tube.h" >&5 +echo "configure:8890: checking for GL/tube.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8713: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8744,7 +8931,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for gleCreateGC in -lgle""... $ac_c" 1>&6 -echo "configure:8759: checking for gleCreateGC in -lgle" >&5 +echo "configure:8946: checking for gleCreateGC in -lgle" >&5 ac_lib_var=`echo gle'_'gleCreateGC | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8752,7 +8939,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8823,7 +9010,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for uview_direction in -lgle""... $ac_c" 1>&6 -echo "configure:8838: checking for uview_direction in -lgle" >&5 +echo "configure:9025: checking for uview_direction in -lgle" >&5 ac_lib_var=`echo gle'_'uview_direction | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8831,7 +9018,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgle $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8887,7 +9074,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for uview_direction_d in -lmatrix""... $ac_c" 1>&6 -echo "configure:8902: checking for uview_direction_d in -lmatrix" >&5 +echo "configure:9089: checking for uview_direction_d in -lmatrix" >&5 ac_lib_var=`echo matrix'_'uview_direction_d | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8895,7 +9082,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lmatrix $GL_LIBS -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8979,7 +9166,7 @@ fi /*) echo $ac_n "checking for XPM headers""... $ac_c" 1>&6 -echo "configure:8994: checking for XPM headers" >&5 +echo "configure:9181: checking for XPM headers" >&5 d=$with_xpm/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -8989,7 +9176,7 @@ echo "configure:8994: checking for XPM headers" >&5 fi echo $ac_n "checking for XPM libs""... $ac_c" 1>&6 -echo "configure:9004: checking for XPM libs" >&5 +echo "configure:9191: checking for XPM libs" >&5 d=$with_xpm/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -9022,17 +9209,17 @@ if test "$with_xpm" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/xpm.h""... $ac_c" 1>&6 -echo "configure:9037: checking for X11/xpm.h" >&5 +echo "configure:9224: checking for X11/xpm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9047: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9091,6 +9278,17 @@ else fi +# if --with-pixbuf=/directory/ was specified, remember that directory so that +# we can also look for the `gdk-pixbuf-config' program in that directory. +case "$with_gdk_pixbuf" in + /*) + gdk_pixbuf_dir="$with_gdk_pixbuf" + ;; + *) + gdk_pixbuf_dir="" + ;; +esac + case "$with_gdk_pixbuf" in yes) ;; @@ -9098,7 +9296,7 @@ fi /*) echo $ac_n "checking for GDK_PIXBUF headers""... $ac_c" 1>&6 -echo "configure:9113: checking for GDK_PIXBUF headers" >&5 +echo "configure:9311: checking for GDK_PIXBUF headers" >&5 d=$with_gdk_pixbuf/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -9108,7 +9306,7 @@ echo "configure:9113: checking for GDK_PIXBUF headers" >&5 fi echo $ac_n "checking for GDK_PIXBUF libs""... $ac_c" 1>&6 -echo "configure:9123: checking for GDK_PIXBUF libs" >&5 +echo "configure:9321: checking for GDK_PIXBUF libs" >&5 d=$with_gdk_pixbuf/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -9132,15 +9330,102 @@ echo "configure:9123: checking for GDK_PIXBUF libs" >&5 esac +if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then + echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf" + exit 1 +fi + if test "$with_gdk_pixbuf" = yes; then + have_gdk_pixbuf=no - if test "$have_gtk" = yes; then + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for for gdk-pixbuf-config. + # + gdk_pixbuf_path="$PATH" + + if test ! -z "$gtk_dir"; then + # canonicalize slashes. + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + gdk_pixbuf_path="$foo:$gdk_pixbuf_path" + fi - ac_save_gdk_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $ac_gtk_config_cflags" + if test ! -z "$gnome_dir"; then + # canonicalize slashes. + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + gdk_pixbuf_path="$foo:$gdk_pixbuf_path" + fi - have_gdk_pixbuf=no - + for ac_prog in gdk-pixbuf-config +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:9375: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_gdk_pixbuf_config'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$gdk_pixbuf_config" in + /*) + ac_cv_path_gdk_pixbuf_config="$gdk_pixbuf_config" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_gdk_pixbuf_config="$gdk_pixbuf_config" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$gdk_pixbuf_path" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_gdk_pixbuf_config="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +gdk_pixbuf_config="$ac_cv_path_gdk_pixbuf_config" +if test -n "$gdk_pixbuf_config"; then + echo "$ac_t""$gdk_pixbuf_config" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$gdk_pixbuf_config" && break +done + + + # If we found the gdk-pixbuf-config program, run it to get flags. + # + if test -n "$gdk_pixbuf_config" ; then + echo $ac_n "checking for gdk-pixbuf includes""... $ac_c" 1>&6 +echo "configure:9415: checking for gdk-pixbuf includes" >&5 +if eval "test \"`echo '$''{'ac_cv_gdk_pixbuf_config_cflags'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags` +fi + +echo "$ac_t""$ac_cv_gdk_pixbuf_config_cflags" 1>&6 + echo $ac_n "checking for gdk-pixbuf libs""... $ac_c" 1>&6 +echo "configure:9424: checking for gdk-pixbuf libs" >&5 +if eval "test \"`echo '$''{'ac_cv_gdk_pixbuf_config_libs'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs` +fi + +echo "$ac_t""$ac_cv_gdk_pixbuf_config_libs" 1>&6 + ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags + ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs + fi + + ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags" + + # check for header 1... + ac_save_CPPFLAGS="$CPPFLAGS" if test \! -z "$includedir" ; then CPPFLAGS="$CPPFLAGS -I$includedir" @@ -9148,17 +9433,17 @@ if test "$with_gdk_pixbuf" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "gdk-pixbuf/gdk-pixbuf.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for gdk-pixbuf/gdk-pixbuf.h""... $ac_c" 1>&6 -echo "configure:9163: checking for gdk-pixbuf/gdk-pixbuf.h" >&5 +echo "configure:9448: checking for gdk-pixbuf/gdk-pixbuf.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9180,9 +9465,11 @@ else fi CPPFLAGS="$ac_save_CPPFLAGS" - if test "$have_gdk_pixbuf" = yes; then - have_gdk_pixbuf=no - + + # if that worked, check for header 2... + if test "$have_gdk_pixbuf" = yes; then + have_gdk_pixbuf=no + ac_save_CPPFLAGS="$CPPFLAGS" if test \! -z "$includedir" ; then CPPFLAGS="$CPPFLAGS -I$includedir" @@ -9190,17 +9477,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "gdk-pixbuf/gdk-pixbuf-xlib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for gdk-pixbuf/gdk-pixbuf-xlib.h""... $ac_c" 1>&6 -echo "configure:9205: checking for gdk-pixbuf/gdk-pixbuf-xlib.h" >&5 +echo "configure:9492: checking for gdk-pixbuf/gdk-pixbuf-xlib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9502: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9222,22 +9509,153 @@ else fi CPPFLAGS="$ac_save_CPPFLAGS" - fi + fi + + CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS" + + if test "$have_gdk_pixbuf" = yes; then + # we have the headers, now check for the libraries + have_gdk_pixbuf=no + gdk_pixbuf_halfassed=yes + # library 1... + + ac_save_CPPFLAGS="$CPPFLAGS" + ac_save_LDFLAGS="$LDFLAGS" +# ac_save_LIBS="$LIBS" - CPPFLAGS="$ac_save_gdk_CPPFLAGS" + if test \! -z "$includedir" ; then + CPPFLAGS="$CPPFLAGS -I$includedir" + fi + # note: $X_CFLAGS includes $x_includes + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + if test \! -z "$libdir" ; then + LDFLAGS="$LDFLAGS -L$libdir" + fi + # note: $X_LIBS includes $x_libraries + LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" + + echo $ac_n "checking for gdk_pixbuf_new_from_file in -lgdk_pixbuf""... $ac_c" 1>&6 +echo "configure:9551: checking for gdk_pixbuf_new_from_file in -lgdk_pixbuf" >&5 +ac_lib_var=`echo gdk_pixbuf'_'gdk_pixbuf_new_from_file | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lgdk_pixbuf $ac_gdk_pixbuf_config_libs $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + have_gdk_pixbuf=yes +else + echo "$ac_t""no" 1>&6 +true +fi + + CPPFLAGS="$ac_save_CPPFLAGS" + LDFLAGS="$ac_save_LDFLAGS" +# LIBS="$ac_save_LIBS" + + # library 2... if test "$have_gdk_pixbuf" = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_GDK_PIXBUF 1 + + ac_save_CPPFLAGS="$CPPFLAGS" + ac_save_LDFLAGS="$LDFLAGS" +# ac_save_LIBS="$LIBS" + + if test \! -z "$includedir" ; then + CPPFLAGS="$CPPFLAGS -I$includedir" + fi + # note: $X_CFLAGS includes $x_includes + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + + if test \! -z "$libdir" ; then + LDFLAGS="$LDFLAGS -L$libdir" + fi + # note: $X_LIBS includes $x_libraries + LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" + + echo $ac_n "checking for gdk_pixbuf_xlib_init in -lgdk_pixbuf_xlib""... $ac_c" 1>&6 +echo "configure:9615: checking for gdk_pixbuf_xlib_init in -lgdk_pixbuf_xlib" >&5 +ac_lib_var=`echo gdk_pixbuf_xlib'_'gdk_pixbuf_xlib_init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lgdk_pixbuf_xlib $ac_gdk_pixbuf_config_libs $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + have_gdk_pixbuf=yes + gdk_pixbuf_halfassed=no +else + echo "$ac_t""no" 1>&6 +true +fi - XPM_LIBS="-lgdk_pixbuf -lgdk_pixbuf_xlib" + CPPFLAGS="$ac_save_CPPFLAGS" + LDFLAGS="$ac_save_LDFLAGS" +# LIBS="$ac_save_LIBS" + fi fi -elif test "$with_gdk_pixbuf" != no; then - echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf" - exit 1 + if test "$have_gdk_pixbuf" = yes; then + INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags" + XPM_LIBS="$ac_gdk_pixbuf_config_libs -lgdk_pixbuf -lgdk_pixbuf_xlib" + cat >> confdefs.h <<\EOF +#define HAVE_GDK_PIXBUF 1 +EOF + + fi fi @@ -9266,7 +9684,7 @@ fi /*) echo $ac_n "checking for JPEG headers""... $ac_c" 1>&6 -echo "configure:9281: checking for JPEG headers" >&5 +echo "configure:9699: checking for JPEG headers" >&5 d=$with_jpeg/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -9276,7 +9694,7 @@ echo "configure:9281: checking for JPEG headers" >&5 fi echo $ac_n "checking for JPEG libs""... $ac_c" 1>&6 -echo "configure:9291: checking for JPEG libs" >&5 +echo "configure:9709: checking for JPEG libs" >&5 d=$with_jpeg/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -9316,17 +9734,17 @@ if test "$with_jpeg" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6 -echo "configure:9331: checking for jpeglib.h" >&5 +echo "configure:9749: checking for jpeglib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9759: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9371,7 +9789,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for jpeg_start_compress in -ljpeg""... $ac_c" 1>&6 -echo "configure:9386: checking for jpeg_start_compress in -ljpeg" >&5 +echo "configure:9804: checking for jpeg_start_compress in -ljpeg" >&5 ac_lib_var=`echo jpeg'_'jpeg_start_compress | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -9379,7 +9797,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ljpeg $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9448,7 +9866,7 @@ fi /*) echo $ac_n "checking for XSHM headers""... $ac_c" 1>&6 -echo "configure:9463: checking for XSHM headers" >&5 +echo "configure:9881: checking for XSHM headers" >&5 d=$with_xshm/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -9458,7 +9876,7 @@ echo "configure:9463: checking for XSHM headers" >&5 fi echo $ac_n "checking for XSHM libs""... $ac_c" 1>&6 -echo "configure:9473: checking for XSHM libs" >&5 +echo "configure:9891: checking for XSHM libs" >&5 d=$with_xshm/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -9493,17 +9911,17 @@ if test "$with_xshm" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/XShm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XShm.h""... $ac_c" 1>&6 -echo "configure:9508: checking for X11/extensions/XShm.h" >&5 +echo "configure:9926: checking for X11/extensions/XShm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9518: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9936: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9537,17 +9955,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6 -echo "configure:9552: checking for sys/ipc.h" >&5 +echo "configure:9970: checking for sys/ipc.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9582,17 +10000,17 @@ fi CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "sys/shm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/shm.h""... $ac_c" 1>&6 -echo "configure:9597: checking for sys/shm.h" >&5 +echo "configure:10015: checking for sys/shm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9607: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9644,7 +10062,7 @@ fi LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS" echo $ac_n "checking for XShmQueryExtension in -lXextSam""... $ac_c" 1>&6 -echo "configure:9659: checking for XShmQueryExtension in -lXextSam" >&5 +echo "configure:10077: checking for XShmQueryExtension in -lXextSam" >&5 ac_lib_var=`echo XextSam'_'XShmQueryExtension | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -9652,7 +10070,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXextSam -lX11 -lXext -lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9730,7 +10148,7 @@ fi /*) echo $ac_n "checking for DOUBLE-BUFFER headers""... $ac_c" 1>&6 -echo "configure:9745: checking for DOUBLE-BUFFER headers" >&5 +echo "configure:10163: checking for DOUBLE-BUFFER headers" >&5 d=$with_xdbe/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -9740,7 +10158,7 @@ echo "configure:9745: checking for DOUBLE-BUFFER headers" >&5 fi echo $ac_n "checking for DOUBLE-BUFFER libs""... $ac_c" 1>&6 -echo "configure:9755: checking for DOUBLE-BUFFER libs" >&5 +echo "configure:10173: checking for DOUBLE-BUFFER libs" >&5 d=$with_xdbe/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -9774,17 +10192,17 @@ if test "$with_xdbe" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/Xdbe.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/Xdbe.h""... $ac_c" 1>&6 -echo "configure:9789: checking for X11/extensions/Xdbe.h" >&5 +echo "configure:10207: checking for X11/extensions/Xdbe.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9847,7 +10265,7 @@ fi /*) echo $ac_n "checking for XReadDisplay headers""... $ac_c" 1>&6 -echo "configure:9862: checking for XReadDisplay headers" >&5 +echo "configure:10280: checking for XReadDisplay headers" >&5 d=$with_readdisplay/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -9857,7 +10275,7 @@ echo "configure:9862: checking for XReadDisplay headers" >&5 fi echo $ac_n "checking for XReadDisplay libs""... $ac_c" 1>&6 -echo "configure:9872: checking for XReadDisplay libs" >&5 +echo "configure:10290: checking for XReadDisplay libs" >&5 d=$with_readdisplay/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -9890,17 +10308,17 @@ if test "$with_readdisplay" = yes; then CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_safe=`echo "X11/extensions/readdisplay.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/readdisplay.h""... $ac_c" 1>&6 -echo "configure:9905: checking for X11/extensions/readdisplay.h" >&5 +echo "configure:10323: checking for X11/extensions/readdisplay.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9915: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10333: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9965,7 +10383,7 @@ if test -n "$with_fortune_req" ; then set dummy $with_fortune_req ; fortune_tmp=$2 echo $ac_n "checking for $fortune_tmp""... $ac_c" 1>&6 -echo "configure:9980: checking for $fortune_tmp" >&5 +echo "configure:10398: checking for $fortune_tmp" >&5 if test -x "$fortune_tmp" ; then echo "$ac_t""yes" 1>&6 else @@ -9980,7 +10398,7 @@ echo "configure:9980: checking for $fortune_tmp" >&5 # Extract the first word of "$fortune_tmp", so it can be a program name with args. set dummy $fortune_tmp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9995: checking for $ac_word" >&5 +echo "configure:10413: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_fortune_tmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10034,7 +10452,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:10049: checking for $ac_word" >&5 +echo "configure:10467: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_fortune_tmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10077,7 +10495,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:10092: checking for $ac_word" >&5 +echo "configure:10510: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_fortune_tmp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10119,7 +10537,7 @@ done # fortune_tmp="$fortune_tmp zippy" echo $ac_n "checking for zippy quotes""... $ac_c" 1>&6 -echo "configure:10134: checking for zippy quotes" >&5 +echo "configure:10552: checking for zippy quotes" >&5 if ( $fortune_tmp >/dev/null 2>&1 ); then ac_cv_fortune_program="$fortune_tmp" echo "$ac_t""$fortune_tmp" 1>&6 @@ -10163,7 +10581,7 @@ fi /*) echo $ac_n "checking for setuid hacks headers""... $ac_c" 1>&6 -echo "configure:10178: checking for setuid hacks headers" >&5 +echo "configure:10596: checking for setuid hacks headers" >&5 d=$setuid_hacks/include if test -d $d; then X_CFLAGS="-I$d $X_CFLAGS" @@ -10173,7 +10591,7 @@ echo "configure:10178: checking for setuid hacks headers" >&5 fi echo $ac_n "checking for setuid hacks libs""... $ac_c" 1>&6 -echo "configure:10188: checking for setuid hacks libs" >&5 +echo "configure:10606: checking for setuid hacks libs" >&5 d=$setuid_hacks/lib if test -d $d; then X_LIBS="-L$d $X_LIBS" @@ -10309,6 +10727,7 @@ fi # Now that we know whether we have Gnome, we can decide where the XML # config files get installed. +# if test -z "$HACK_CONF_DIR" ; then if test -n "$GNOME_DATADIR" ; then HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers' @@ -10317,6 +10736,21 @@ if test -z "$HACK_CONF_DIR" ; then fi fi + + +# After computing $HACK_CONF_DIR, make sure $GTK_ICONDIR has a value +# so that we know where to install the Gtk pixmaps. +# +if test -n "$GNOME_DATADIR" ; then + GTK_ICONDIR='$(GNOME_DATADIR)/pixmaps' +elif test "$have_gtk" = yes; then + # should this be "$(prefix)/share/pixmaps"? But /usr/X11R6/share/ is wrong... + GTK_ICONDIR='/usr/share/pixmaps' +else + GTK_ICONDIR='' +fi + + # canonicalize slashes. HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'` @@ -10371,6 +10805,7 @@ HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'` + APPDEFAULTS=$ac_x_app_defaults @@ -10526,6 +10961,7 @@ s%@host_vendor@%$host_vendor%g s%@host_os@%$host_os%g s%@CC@%$CC%g s%@CPP@%$CPP%g +s%@EXEEXT@%$EXEEXT%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g @@ -10539,6 +10975,8 @@ s%@glib_config@%$glib_config%g s%@gtk_config@%$gtk_config%g s%@gnome_config@%$gnome_config%g s%@have_gnome_help@%$have_gnome_help%g +s%@xml_config@%$xml_config%g +s%@gdk_pixbuf_config@%$gdk_pixbuf_config%g s%@fortune_tmp@%$fortune_tmp%g s%@INCLUDES@%$INCLUDES%g s%@PREFERRED_DEMO_PROGRAM@%$PREFERRED_DEMO_PROGRAM%g @@ -10581,6 +11019,7 @@ s%@GNOMEHELP_Y@%$GNOMEHELP_Y%g s%@GNOMEHELP_N@%$GNOMEHELP_N%g s%@HACKDIR@%$HACKDIR%g s%@GNOME_DATADIR@%$GNOME_DATADIR%g +s%@GTK_ICONDIR@%$GTK_ICONDIR%g s%@HACK_CONF_DIR@%$HACK_CONF_DIR%g s%@APPDEFAULTS@%$APPDEFAULTS%g s%@DEPEND@%$DEPEND%g @@ -10998,11 +11437,11 @@ if test "$have_motif" = yes -a "$have_gtk" = no ; then fi -if test "$with_xpm_req" = yes ; then +if test "$with_xpm_req" = yes -a "$have_xpm" = no; then warnL 'Use of XPM was requested, but it was not found.' fi -if test "$with_gdk_pixbuf_req" = yes ; then +if test "$with_gdk_pixbuf_req" = yes -a "$have_gdk_pixbuf" = no; then warnL 'Use of GDK-Pixbuf was requested, but it was not found.' fi @@ -11024,6 +11463,14 @@ if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no; then warnL 'The GDK-Pixbuf library was not found.' fi + if test "$gdk_pixbuf_halfassed" = yes ; then + echo '' + warn2 'More specifically, we found the headers, but not the' + warn2 'libraries; so either GDK-Pixbuf is half-installed on this' + warn2 "system, or something else went wrong. The \`config.log'" + warn2 'file might contain some clues.' + fi + echo '' warn2 'Some of the demos will not be as colorful as they' warn2 'could be. You should consider installing Pixbuf or' @@ -11254,12 +11701,11 @@ if test "$do_dir_warning" = yes; then echo " will be installed in ${bindir}/." echo "" echo " The various graphics demos (140+ different executables) will" - echo " also be installed in ${HACKDIR}/." + echo " be installed in ${HACKDIR}/." echo "" - echo " If you would prefer the demos to be installed elsewhere" - echo " (for example, in a dedicated directory) you should re-run" - echo " configure with the --with-hackdir=DIR option. For more" - echo " information, run $0 --help." + echo " If you would prefer the demos to be installed elsewhere," + echo " you should re-run configure with the --with-hackdir=DIR" + echo " option. For more information, run \`./configure --help'." warning=yes fi diff --git a/configure.in b/configure.in index 335afa2f..f965a9cf 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,7 @@ # configure.in --- xscreensaver, Copyright (c) 1997-2000 Jamie Zawinski. # +AC_PREREQ(2.13) AC_INIT(driver/subprocs.c) AC_CONFIG_HEADER(config.h) @@ -746,6 +747,7 @@ AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE AC_PROG_CPP AC_C_CONST AC_C_INLINE +AC_EXEEXT AC_DEMAND_BC # stuff for Makefiles @@ -771,7 +773,7 @@ AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_HEADER_DIRENT AC_GETTIMEOFDAY_ARGS -AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv) +AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk) AC_CHECK_FUNCS(sigaction syslog realpath setrlimit) AC_CHECK_ICMP @@ -871,8 +873,7 @@ AC_ARG_WITH(hackdir,[ Installation options: --with-hackdir=DIR Where to install the hundreds of demo executables. - Default: \`PREFIX/lib/xscreensaver/' -], + Default: \`PREFIX/lib/xscreensaver/'], [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes]) if test x"$with_hackdir" = xyes; then @@ -1836,21 +1837,21 @@ jurassic_gtk=no if test "$with_gtk" = yes; then have_gtk=no - # if the user specified --with-gtk=/foo/ then look in /foo/bin/ - # for glib-config and gtk-config. + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for glib-config, gtk-config, and gnome-config. # gtk_path="$PATH" if test ! -z "$gtk_dir"; then # canonicalize slashes. - gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gtk_dir:$gtk_path" + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + gtk_path="$foo:$gtk_path" fi - if test ! -z "gnome_dir"; then + if test ! -z "$gnome_dir"; then # canonicalize slashes. - gnome_dir=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` - gtk_path="$gnome_dir:$gtk_path" + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + gtk_path="$foo:$gtk_path" fi AC_PATH_PROGS(glib_config, glib12-config glib-config,, $gtk_path) @@ -1860,7 +1861,7 @@ if test "$with_gtk" = yes; then AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path) fi - if test -n "$glib_config" -a -n "gtk_config" ; then + if test -n "$glib_config" -a -n "$gtk_config" ; then have_gtk=yes if test "$with_gnome" = yes -a -n "$gnome_config" ; then have_gnome=yes @@ -1901,7 +1902,7 @@ if test "$with_gtk" = yes; then # Check for Gnome Capplet support. # if test "$have_gnome" = yes -a "$have_gtk" = yes; then - gnome_config_libs="gtk capplet gnomeui xml gdk_pixbuf" + gnome_config_libs="gtk capplet gnomeui gdk_pixbuf" AC_MSG_CHECKING(for Gnome capplet includes) AC_CACHE_VAL(ac_cv_gnome_config_cflags, [if ( $gnome_config --cflags $gnome_config_libs 2>&1 >/dev/null | \ @@ -1978,7 +1979,7 @@ fi ############################################################################### # -# Check for -lxml (if we have Gtk) +# Check for -lxml # ############################################################################### @@ -1990,6 +1991,17 @@ AC_ARG_WITH(xml, the Gtk interface.], [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes]) +# if --with-xml=/directory/ was specified, remember that directory so that +# we can also look for the `xml-config' program in that directory. +case "$with_xml" in + /*) + xml_dir="$with_xml" + ;; + *) + xml_dir="" + ;; +esac + HANDLE_X_PATH_ARG(with_xml, --with-xml, XML) if test "$with_xml" != yes -a "$with_xml" != no ; then @@ -1997,21 +2009,43 @@ if test "$with_xml" != yes -a "$with_xml" != no ; then exit 1 fi -if test "$have_gtk" != yes; then - # don't bother if no GTK - with_xml=no -fi - if test "$with_xml" = yes; then have_xml=no - # the XML stuff is likely to be in GTK paths. - ac_save_X_CFLAGS="$X_CFLAGS" - ac_save_X_LIBS="$X_LIBS" - X_CFLAGS="$X_CFLAGS $ac_gtk_config_cflags" - X_LIBS="$X_LIBS $ac_gtk_config_libs" + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for for xml-config. + # + xml_path="$PATH" + + if test ! -z "$gtk_dir"; then + # canonicalize slashes. + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + xml_path="$foo:$xml_path" + fi + + if test ! -z "$gnome_dir"; then + # canonicalize slashes. + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + xml_path="$foo:$xml_path" + fi + + AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path) + # If we found the xml-config program, run it to get flags. + # + if test -n "$xml_config" ; then + AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags, + [ac_cv_xml_config_cflags=`$xml_config --cflags`]) + AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs, + [ac_cv_xml_config_libs=`$xml_config --libs`]) + ac_xml_config_cflags=$ac_cv_xml_config_cflags + ac_xml_config_libs=$ac_cv_xml_config_libs + fi + + ac_save_xml_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags" AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes]) + CPPFLAGS="$ac_save_xml_CPPFLAGS" if test "$have_xml" = yes; then # we have the header, now check for the library @@ -2021,11 +2055,16 @@ if test "$with_xml" = yes; then [have_xml=yes xml_halfassed=no XML_LIBS="-lxml" - AC_DEFINE(HAVE_XML)]) + AC_DEFINE(HAVE_XML)], + [true], + $ac_xml_config_libs) fi - X_CFLAGS="$ac_save_X_CFLAGS" - X_LIBS="$ac_save_X_LIBS" + if test "$have_xml" = yes; then + INCLUDES="$INCLUDES $ac_xml_config_cflags" + GTK_LIBS="$GTK_LIBS $ac_xml_config_libs" + AC_DEFINE(HAVE_XML) + fi fi @@ -2462,33 +2501,94 @@ AC_ARG_WITH(pixbuf, [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"], [with_gdk_pixbuf=yes]) +# if --with-pixbuf=/directory/ was specified, remember that directory so that +# we can also look for the `gdk-pixbuf-config' program in that directory. +case "$with_gdk_pixbuf" in + /*) + gdk_pixbuf_dir="$with_gdk_pixbuf" + ;; + *) + gdk_pixbuf_dir="" + ;; +esac + HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF) +if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then + echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf" + exit 1 +fi + if test "$with_gdk_pixbuf" = yes; then + have_gdk_pixbuf=no - if test "$have_gtk" = yes; then + # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then + # look in /foo/bin/ for for gdk-pixbuf-config. + # + gdk_pixbuf_path="$PATH" - ac_save_gdk_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $ac_gtk_config_cflags" + if test ! -z "$gtk_dir"; then + # canonicalize slashes. + foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'` + gdk_pixbuf_path="$foo:$gdk_pixbuf_path" + fi + if test ! -z "$gnome_dir"; then + # canonicalize slashes. + foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'` + gdk_pixbuf_path="$foo:$gdk_pixbuf_path" + fi + + AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path) + + # If we found the gdk-pixbuf-config program, run it to get flags. + # + if test -n "$gdk_pixbuf_config" ; then + AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags, + [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`]) + AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs, + [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`]) + ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags + ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs + fi + + ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags" + + # check for header 1... + AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes]) + + # if that worked, check for header 2... + if test "$have_gdk_pixbuf" = yes; then have_gdk_pixbuf=no - AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes]) - if test "$have_gdk_pixbuf" = yes; then - have_gdk_pixbuf=no - AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h, [have_gdk_pixbuf=yes]) - fi + AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h, [have_gdk_pixbuf=yes]) + fi - CPPFLAGS="$ac_save_gdk_CPPFLAGS" + CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS" + if test "$have_gdk_pixbuf" = yes; then + # we have the headers, now check for the libraries + have_gdk_pixbuf=no + gdk_pixbuf_halfassed=yes + # library 1... + AC_CHECK_X_LIB(gdk_pixbuf, gdk_pixbuf_new_from_file, + [have_gdk_pixbuf=yes], [true], + $ac_gdk_pixbuf_config_libs) + # library 2... if test "$have_gdk_pixbuf" = yes; then - AC_DEFINE(HAVE_GDK_PIXBUF) - XPM_LIBS="-lgdk_pixbuf -lgdk_pixbuf_xlib" + AC_CHECK_X_LIB(gdk_pixbuf_xlib, gdk_pixbuf_xlib_init, + [have_gdk_pixbuf=yes + gdk_pixbuf_halfassed=no], + [true], + $ac_gdk_pixbuf_config_libs) fi fi -elif test "$with_gdk_pixbuf" != no; then - echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf" - exit 1 + if test "$have_gdk_pixbuf" = yes; then + INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags" + XPM_LIBS="$ac_gdk_pixbuf_config_libs -lgdk_pixbuf -lgdk_pixbuf_xlib" + AC_DEFINE(HAVE_GDK_PIXBUF) + fi fi @@ -2870,6 +2970,7 @@ fi # Now that we know whether we have Gnome, we can decide where the XML # config files get installed. +# if test -z "$HACK_CONF_DIR" ; then if test -n "$GNOME_DATADIR" ; then HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers' @@ -2878,6 +2979,21 @@ if test -z "$HACK_CONF_DIR" ; then fi fi + + +# After computing $HACK_CONF_DIR, make sure $GTK_ICONDIR has a value +# so that we know where to install the Gtk pixmaps. +# +if test -n "$GNOME_DATADIR" ; then + GTK_ICONDIR='$(GNOME_DATADIR)/pixmaps' +elif test "$have_gtk" = yes; then + # should this be "$(prefix)/share/pixmaps"? But /usr/X11R6/share/ is wrong... + GTK_ICONDIR='/usr/share/pixmaps' +else + GTK_ICONDIR='' +fi + + # canonicalize slashes. HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'` @@ -2932,6 +3048,7 @@ AC_SUBST(GNOMEHELP_Y) AC_SUBST(GNOMEHELP_N) AC_SUBST(HACKDIR) AC_SUBST(GNOME_DATADIR) +AC_SUBST(GTK_ICONDIR) AC_SUBST(HACK_CONF_DIR) APPDEFAULTS=$ac_x_app_defaults @@ -3136,11 +3253,11 @@ if test "$have_motif" = yes -a "$have_gtk" = no ; then fi -if test "$with_xpm_req" = yes ; then +if test "$with_xpm_req" = yes -a "$have_xpm" = no; then warnL 'Use of XPM was requested, but it was not found.' fi -if test "$with_gdk_pixbuf_req" = yes ; then +if test "$with_gdk_pixbuf_req" = yes -a "$have_gdk_pixbuf" = no; then warnL 'Use of GDK-Pixbuf was requested, but it was not found.' fi @@ -3162,6 +3279,14 @@ if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no; then warnL 'The GDK-Pixbuf library was not found.' fi + if test "$gdk_pixbuf_halfassed" = yes ; then + echo '' + warn2 'More specifically, we found the headers, but not the' + warn2 'libraries; so either GDK-Pixbuf is half-installed on this' + warn2 "system, or something else went wrong. The \`config.log'" + warn2 'file might contain some clues.' + fi + echo '' warn2 'Some of the demos will not be as colorful as they' warn2 'could be. You should consider installing Pixbuf or' @@ -3392,12 +3517,11 @@ if test "$do_dir_warning" = yes; then echo " will be installed in ${bindir}/." echo "" echo " The various graphics demos (140+ different executables) will" - echo " also be installed in ${HACKDIR}/." + echo " be installed in ${HACKDIR}/." echo "" - echo " If you would prefer the demos to be installed elsewhere" - echo " (for example, in a dedicated directory) you should re-run" - echo " configure with the --with-hackdir=DIR option. For more" - echo " information, run $0 --help." + echo " If you would prefer the demos to be installed elsewhere," + echo " you should re-run configure with the --with-hackdir=DIR" + echo " option. For more information, run \`./configure --help'." warning=yes fi diff --git a/driver/Makefile.in b/driver/Makefile.in index 563e9028..2df4f3ea 100644 --- a/driver/Makefile.in +++ b/driver/Makefile.in @@ -20,16 +20,16 @@ GNOME_DATADIR = @GNOME_DATADIR@ GNOME_CCDIR_1 = $(GNOME_DATADIR)/control-center/Desktop GNOME_CCDIR_2 = $(GNOME_DATADIR)/control-center/capplets GNOME_PANELDIR = $(GNOME_DATADIR)/gnome/apps/Settings/Desktop -GNOME_ICONDIR = $(GNOME_DATADIR)/pixmaps GNOME_BINDIR = $(bindir) HACK_CONF_DIR = @HACK_CONF_DIR@ +GTK_ICONDIR = @GTK_ICONDIR@ CC = @CC@ CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ DEFS = @DEFS@ SUBP_DEFS = $(DEFS) -DDEFAULT_PATH_PREFIX='"@HACKDIR@"' -GTK_DEFS = $(DEFS) -DDEFAULT_ICONDIR='"$(GNOME_ICONDIR)"' +GTK_DEFS = $(DEFS) -DDEFAULT_ICONDIR='"$(GTK_ICONDIR)"' CONF_DEFS = -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"' LIBS = @LIBS@ @@ -127,7 +127,7 @@ GL_LIBS = @SAVER_GL_LIBS@ ICON_SRC = $(UTILS_SRC)/images LOGO = $(ICON_SRC)/logo-50.xpm -GNOME_ICONS = $(ICON_SRC)/screensaver-*.xpm +GTK_ICONS = $(ICON_SRC)/screensaver-*.xpm DEMO_UTIL_SRCS = $(UTILS_SRC)/resources.c $(UTILS_SRC)/usleep.c \ $(UTILS_SRC)/visual.c @@ -515,31 +515,31 @@ install-gnome:: screensaver-properties-capplet # xscreensaver.xpm install-gnome:: $(LOGO) - @if [ "$(GNOME_DATADIR)" != "" ]; then \ - if [ ! -d "$(install_prefix)$(GNOME_ICONDIR)" ]; then \ - echo $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)" ;\ - $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)" ;\ + @if [ "$(GTK_ICONDIR)" != "" ]; then \ + if [ ! -d "$(install_prefix)$(GTK_ICONDIR)" ]; then \ + echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)" ;\ + $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)" ;\ fi ;\ target=xscreensaver.xpm ;\ echo $(INSTALL_DATA) $(LOGO) \ - $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ + $(install_prefix)$(GTK_ICONDIR)/$$target ;\ $(INSTALL_DATA) $(LOGO) \ - $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ + $(install_prefix)$(GTK_ICONDIR)/$$target ;\ fi # ../utils/images/screensaver-*.xpm install-gnome:: - @if [ "$(GNOME_DATADIR)" != "" ]; then \ - if [ ! -d "$(install_prefix)$(GNOME_ICONDIR)" ]; then \ - echo $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)" ;\ - $(INSTALL_DIRS) "$(install_prefix)$(GNOME_ICONDIR)" ;\ + @if [ "$(GTK_ICONDIR)" != "" ]; then \ + if [ ! -d "$(install_prefix)$(GTK_ICONDIR)" ]; then \ + echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)" ;\ + $(INSTALL_DIRS) "$(install_prefix)$(GTK_ICONDIR)" ;\ fi ;\ - for target in $(GNOME_ICONS) ; do \ + for target in $(GTK_ICONS) ; do \ dest=`echo $$target | sed 's@^.*/@@'` ;\ echo $(INSTALL_DATA) $$target \ - $(install_prefix)$(GNOME_ICONDIR)/$$dest ;\ + $(install_prefix)$(GTK_ICONDIR)/$$dest ;\ $(INSTALL_DATA) $$target \ - $(install_prefix)$(GNOME_ICONDIR)/$$dest ;\ + $(install_prefix)$(GTK_ICONDIR)/$$dest ;\ done ;\ fi @@ -563,19 +563,19 @@ uninstall-gnome:: # xscreensaver.xpm uninstall-gnome:: - @if [ "$(GNOME_DATADIR)" != "" ]; then \ + @if [ "$(GTK_ICONDIR)" != "" ]; then \ target=xscreensaver.xpm ;\ - echo rm -f $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ - rm -f $(install_prefix)$(GNOME_ICONDIR)/$$target ;\ + echo rm -f $(install_prefix)$(GTK_ICONDIR)/$$target ;\ + rm -f $(install_prefix)$(GTK_ICONDIR)/$$target ;\ fi # xscreensaver.xpm uninstall-gnome:: - @if [ "$(GNOME_DATADIR)" != "" ]; then \ - for target in $(GNOME_ICONS) ; do \ + @if [ "$(GTK_ICONDIR)" != "" ]; then \ + for target in $(GTK_ICONS) ; do \ dest=`echo $$target | sed 's@^.*/@@'` ;\ - echo rm -f $(install_prefix)$(GNOME_ICONDIR)/$$dest ;\ - rm -f $(install_prefix)$(GNOME_ICONDIR)/$$dest ;\ + echo rm -f $(install_prefix)$(GTK_ICONDIR)/$$dest ;\ + rm -f $(install_prefix)$(GTK_ICONDIR)/$$dest ;\ done ;\ fi @@ -762,7 +762,8 @@ xscreensaver-command: $(CMD_OBJS) xscreensaver-demo: @PREFERRED_DEMO_PROGRAM@ - $(INSTALL_PROGRAM) @PREFERRED_DEMO_PROGRAM@ $@ + cp -p @PREFERRED_DEMO_PROGRAM@@EXEEXT@ $@@EXEEXT@ +# $(INSTALL_PROGRAM) @PREFERRED_DEMO_PROGRAM@ $@ xscreensaver-demo-Xm: $(DEMO_OBJS) $(MOTIF_OBJS) $(CC) $(LDFLAGS) -o $@ $(DEMO_OBJS) $(MOTIF_OBJS) $(LIBS) $(X_LIBS) \ diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in index cf6cef16..72f9ce0d 100644 --- a/driver/XScreenSaver.ad.in +++ b/driver/XScreenSaver.ad.in @@ -4,8 +4,8 @@ ! a screen saver and locker for the X window system ! by Jamie Zawinski ! -! version 4.01 -! 24-Feb-2002 +! version 4.02 +! 18-Mar-2002 ! ! See "man xscreensaver" for more info. The latest version is always ! available at http://www.jwz.org/xscreensaver/ @@ -279,7 +279,8 @@ -ncolors 230 \n\ - juggle -root \n\ polyominoes -root \n\ - thornbird -root \n\ +- thornbird -root \n\ + fluidballs -root \n\ color: bubbles -root \n\ default-n: webcollage -root \n\ default-n: "WebCollage (whacked)" \ @@ -324,6 +325,7 @@ @GL_KLUDGE@ GL: boxed -root \n\ @GL_KLUDGE@ GL: glforestfire -root \n\ @GL_KLUDGE@ GL: sballs -root \n\ +@GL_KLUDGE@ GL: cubenetic -root \n\ \ - xdaliclock -root -builtin3 -cycle \n\ - default-n: xearth -nofork -nostars -ncolors 50 \ @@ -615,6 +617,7 @@ XScreenSaver*doc.fontList: *-helvetica-medium-r-*-*-*-100-*-*-*-iso8859-1 *hacks.xfishtank.name: XFishTank *hacks.electricsheep.name: ElectricSheep *hacks.sphereEversion.name: SphereEversion +*hacks.fluidballs.name: FluidBalls ! obsolete, but still used by xscreensaver-demo-Xm. *hacks.documentation.isInstalled: True diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h index 68a28183..d00f9c00 100644 --- a/driver/XScreenSaver_ad.h +++ b/driver/XScreenSaver_ad.h @@ -182,7 +182,8 @@ -ncolors 230 \\n\ - juggle -root \\n\ polyominoes -root \\n\ - thornbird -root \\n\ +- thornbird -root \\n\ + fluidballs -root \\n\ color: bubbles -root \\n\ default-n: webcollage -root \\n\ default-n: \"WebCollage (whacked)\" \ @@ -227,6 +228,7 @@ GL: boxed -root \\n\ GL: glforestfire -root \\n\ GL: sballs -root \\n\ + GL: cubenetic -root \\n\ \ - xdaliclock -root -builtin3 -cycle \\n\ - default-n: xearth -nofork -nostars -ncolors 50 \ @@ -427,4 +429,5 @@ "*hacks.xfishtank.name: XFishTank", "*hacks.electricsheep.name: ElectricSheep", "*hacks.sphereEversion.name: SphereEversion", +"*hacks.fluidballs.name: FluidBalls", "*hacks.documentation.isInstalled: True", diff --git a/driver/demo-Gtk-conf.c b/driver/demo-Gtk-conf.c index d51d1df7..02dad2ba 100644 --- a/driver/demo-Gtk-conf.c +++ b/driver/demo-Gtk-conf.c @@ -1671,10 +1671,15 @@ load_configurator_1 (const char *program, const char *arguments, { const char *dir = HACK_CONFIGURATION_PATH; int L = strlen (dir); - char *file = (char *) malloc (L + strlen (program) + 10); + char *file; char *s; FILE *f; - conf_data *data = (conf_data *) calloc (1, sizeof(*data)); + conf_data *data; + + if (L == 0) return 0; + + file = (char *) malloc (L + strlen (program) + 10); + data = (conf_data *) calloc (1, sizeof(*data)); strcpy (file, dir); if (file[L-1] != '/') @@ -1703,7 +1708,12 @@ load_configurator_1 (const char *program, const char *arguments, fprintf (stderr, "%s: reading %s...\n", blurb(), file); res = fread (chars, 1, 4, f); - if (res <= 0) return 0; + if (res <= 0) + { + free (data); + data = 0; + goto DONE; + } ctxt = xmlCreatePushParserCtxt(NULL, NULL, chars, res, file); while ((res = fread(chars, 1, size, f)) > 0) @@ -1748,6 +1758,9 @@ load_configurator_1 (const char *program, const char *arguments, } data->progname = strdup (program); + + DONE: + free (file); return data; } @@ -1848,7 +1861,9 @@ free_conf_data (conf_data *data) gtk_widget_destroy (data->widget); if (data->progname) - free (data->progname);; + free (data->progname); + if (data->description) + free (data->description); memset (data, ~0, sizeof(*data)); free (data); diff --git a/driver/demo-Gtk.c b/driver/demo-Gtk.c index 26c69db6..dc6f4655 100644 --- a/driver/demo-Gtk.c +++ b/driver/demo-Gtk.c @@ -1874,8 +1874,18 @@ populate_prefs_page (state *s) saver_preferences *p = &s->prefs; char str[100]; + /* The file supports timeouts of less than a minute, but the GUI does + not, so throttle the values to be at least one minute (since "0" is + a bad rounding choice...) + */ +# define THROTTLE(NAME) if (p->NAME != 0 && p->NAME < 60000) p->NAME = 60000 + THROTTLE (timeout); + THROTTLE (cycle); + THROTTLE (passwd_timeout); +# undef THROTTLE + # define FMT_MINUTES(NAME,N) \ - sprintf (str, "%d", ((N) + 59) / (60 * 1000)); \ + sprintf (str, "%d", (((N / 1000) + 59) / 60)); \ gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, (NAME))), str) # define FMT_SECONDS(NAME,N) \ @@ -2012,6 +2022,10 @@ populate_popup_window (state *s) screenhack *hack = (hack_number >= 0 ? p->screenhacks[hack_number] : 0); char *doc_string = 0; + /* #### not in Gtk 1.2 + gtk_label_set_selectable (doc); + */ + # ifdef HAVE_XML if (s->cdata) { @@ -2796,7 +2810,7 @@ launch_preview_subproc (state *s) { saver_preferences *p = &s->prefs; Window id; - char *new_cmd; + char *new_cmd = 0; pid_t forked; const char *cmd = s->desired_preview_cmd; @@ -2808,7 +2822,7 @@ launch_preview_subproc (state *s) if (s->preview_suppressed_p) { kill_preview_subproc (s); - return; + goto DONE; } new_cmd = malloc (strlen (cmd) + 40); @@ -2831,7 +2845,7 @@ launch_preview_subproc (state *s) { s->running_preview_error_p = True; clear_preview_window (s); - return; + goto DONE; } switch ((int) (forked = fork ())) @@ -2842,7 +2856,8 @@ launch_preview_subproc (state *s) sprintf (buf, "%s: couldn't fork", blurb()); perror (buf); s->running_preview_error_p = True; - return; + goto DONE; + break; } case 0: { @@ -2876,6 +2891,10 @@ launch_preview_subproc (state *s) } schedule_preview_check (s); + + DONE: + if (new_cmd) free (new_cmd); + new_cmd = 0; } @@ -2902,6 +2921,11 @@ hack_environment (state *s) if (s->debug_p) fprintf (stderr, "%s: %s\n", blurb(), ndpy); + /* don't free(ndpy) -- some implementations of putenv (BSD 4.4, glibc + 2.0) copy the argument, but some (libc4,5, glibc 2.1.2) do not. + So we must leak it (and/or the previous setting). Yay. + */ + if (def_path && *def_path) { const char *opath = getenv("PATH"); @@ -2913,6 +2937,7 @@ hack_environment (state *s) if (putenv (npath)) abort (); + /* do not free(npath) -- see above */ if (s->debug_p) fprintf (stderr, "%s: added \"%s\" to $PATH\n", blurb(), def_path); @@ -3139,7 +3164,7 @@ static void the_network_is_not_the_computer (state *s) { Display *dpy = GDK_DISPLAY(); - char *rversion, *ruser, *rhost; + char *rversion = 0, *ruser = 0, *rhost = 0; char *luser, *lhost; char *msg = 0; struct passwd *p = getpwuid (getuid ()); @@ -3250,6 +3275,9 @@ the_network_is_not_the_computer (state *s) if (*msg) warning_dialog (s->toplevel_widget, msg, True, 1); + if (rversion) free (rversion); + if (ruser) free (ruser); + if (rhost) free (rhost); free (msg); } @@ -3424,7 +3452,10 @@ main (int argc, char **argv) } #ifdef DEFAULT_ICONDIR /* from -D on compile line */ - add_pixmap_directory (DEFAULT_ICONDIR); + { + const char *dir = DEFAULT_ICONDIR; + if (*dir) add_pixmap_directory (dir); + } #endif /* This is gross, but Gtk understands --display and not -display... diff --git a/driver/lock.c b/driver/lock.c index 277cfc3c..03890a90 100644 --- a/driver/lock.c +++ b/driver/lock.c @@ -1,5 +1,5 @@ /* lock.c --- handling the password dialog for locking-mode. - * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -187,7 +187,7 @@ make_passwd_window (saver_info *si) pw->heading_label = s; } - pw->user_string = (p && p->pw_name ? p->pw_name : "???"); + pw->user_string = strdup (p && p->pw_name ? p->pw_name : "???"); pw->passwd_string = strdup(""); f = get_string_resource ("passwd.headingFont", "Dialog.Font"); @@ -771,6 +771,9 @@ destroy_passwd_window (saver_info *si) Pixel white = WhitePixelOfScreen (ssi->screen); XEvent event; + memset (pw->typed_passwd, 0, sizeof(pw->typed_passwd)); + memset (pw->passwd_string, 0, strlen(pw->passwd_string)); + if (pw->timer) XtRemoveTimeOut (pw->timer); @@ -818,11 +821,15 @@ destroy_passwd_window (saver_info *si) if (pw->body_label) free (pw->body_label); if (pw->user_label) free (pw->user_label); if (pw->passwd_label) free (pw->passwd_label); + if (pw->date_label) free (pw->date_label); + if (pw->user_string) free (pw->user_string); + if (pw->passwd_string) free (pw->passwd_string); if (pw->heading_font) XFreeFont (si->dpy, pw->heading_font); if (pw->body_font) XFreeFont (si->dpy, pw->body_font); if (pw->label_font) XFreeFont (si->dpy, pw->label_font); if (pw->passwd_font) XFreeFont (si->dpy, pw->passwd_font); + if (pw->date_font) XFreeFont (si->dpy, pw->date_font); if (pw->foreground != black && pw->foreground != white) XFreeColors (si->dpy, cmap, &pw->foreground, 1, 0L); @@ -843,17 +850,23 @@ destroy_passwd_window (saver_info *si) if (pw->logo_pixmap) XFreePixmap (si->dpy, pw->logo_pixmap); - if (pw->logo_npixels && pw->logo_pixels) - XFreeColors (si->dpy, cmap, pw->logo_pixels, pw->logo_npixels, 0L); if (pw->logo_pixels) - free (pw->logo_pixels); + { + if (pw->logo_npixels) + XFreeColors (si->dpy, cmap, pw->logo_pixels, pw->logo_npixels, 0L); + free (pw->logo_pixels); + pw->logo_pixels = 0; + pw->logo_npixels = 0; + } - memset (pw, 0, sizeof(*pw)); - free (pw); + if (pw->save_under) + XFreePixmap (si->dpy, pw->save_under); if (cmap) XInstallColormap (si->dpy, cmap); + memset (pw, 0, sizeof(*pw)); + free (pw); si->pw_data = 0; } diff --git a/driver/passwd-pam.c b/driver/passwd-pam.c index 324e31fd..7083cfe4 100644 --- a/driver/passwd-pam.c +++ b/driver/passwd-pam.c @@ -1,7 +1,7 @@ /* passwd-pam.c --- verifying typed passwords with PAM * (Pluggable Authentication Modules.) * written by Bill Nottingham (and jwz) for - * xscreensaver, Copyright (c) 1993-2001 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -212,11 +212,12 @@ pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p) far as PAM is concerned...) */ { - const char *tty = ":0.0"; - status = pam_set_item (pamh, PAM_TTY, strdup(tty)); + char *tty = strdup (":0.0"); + status = pam_set_item (pamh, PAM_TTY, tty); if (verbose_p) fprintf (stderr, "%s: pam_set_item (p, PAM_TTY, \"%s\") ==> %d (%s)\n", blurb(), tty, status, PAM_STRERROR(pamh, status)); + free (tty); } /* Try to authenticate as the current user. @@ -263,8 +264,10 @@ pam_passwd_valid_p (const char *typed_passwd, Bool verbose_p) /* If that didn't work, set the user to root, and try to authenticate again. */ - c.user = "root"; - status = pam_set_item (pamh, PAM_USER, strdup(c.user)); + if (user) free (user); + user = strdup ("root"); + c.user = user; + status = pam_set_item (pamh, PAM_USER, c.user); if (verbose_p) fprintf (stderr, "%s: pam_set_item(p, PAM_USER, \"%s\") ==> %d (%s)\n", blurb(), c.user, status, PAM_STRERROR(pamh, status)); diff --git a/driver/passwd.c b/driver/passwd.c index b55334c9..9a9a4b88 100644 --- a/driver/passwd.c +++ b/driver/passwd.c @@ -1,5 +1,5 @@ /* passwd.c --- verifying typed passwords with the OS. - * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski + * xscreensaver, Copyright (c) 1993-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -23,6 +23,7 @@ #endif extern char *blurb(void); +extern void check_for_leaks (const char *where); /* blargh */ @@ -132,8 +133,12 @@ passwd_valid_p (const char *typed_passwd, Bool verbose_p) int i, j; for (i = 0; i < countof(methods); i++) { - if (methods[i].initted_p && - methods[i].valid_p (typed_passwd, verbose_p)) + int ok_p = (methods[i].initted_p && + methods[i].valid_p (typed_passwd, verbose_p)); + + check_for_leaks (methods[i].name); + + if (ok_p) { /* If we successfully authenticated by method N, but attempting to authenticate by method N-1 failed, mention that (since if diff --git a/driver/prefs.c b/driver/prefs.c index 46b93886..180dfca6 100644 --- a/driver/prefs.c +++ b/driver/prefs.c @@ -77,6 +77,8 @@ static void get_screenhacks (saver_preferences *p); static char *format_command (const char *cmd, Bool wrap_p); static void merge_system_screenhacks (saver_preferences *p, screenhack **system_list, int count); +static void stop_the_insanity (saver_preferences *p); + static char * chase_symlinks (const char *file) @@ -216,6 +218,7 @@ get_byte_resource (char *name, char *class) LOSE: fprintf (stderr, "%s: %s must be a number of bytes, not \"%s\".\n", progname, name, s); + free (s); return 0; } s2++; @@ -223,6 +226,7 @@ get_byte_resource (char *name, char *class) while (isspace(*s2)) s2++; if (*s2) goto LOSE; + free (s); return n; } @@ -632,6 +636,11 @@ write_init_file (saver_preferences *p, const char *version_string, if (n2) name = n2; + /* Throttle the various timeouts to reasonable values before writing + the file to disk. */ + stop_the_insanity (p); + + if (verbose_p) fprintf (stderr, "%s: writing \"%s\".\n", blurb(), name); @@ -701,6 +710,7 @@ write_init_file (saver_preferences *p, const char *version_string, *ss++ = '\n'; *ss = 0; } + free (hack_strings); } { @@ -939,6 +949,7 @@ free_screenhack_list (screenhack **list, int count) } + /* Populate `saver_preferences' with the contents of the resource database. Note that this may be called multiple times -- it is re-run each time the ~/.xscreensaver file is reloaded. @@ -1043,43 +1054,7 @@ load_init_file (saver_preferences *p) "Boolean"); p->use_proc_interrupts = get_boolean_resource ("procInterrupts", "Boolean"); - /* Throttle the various timeouts to reasonable values. - */ - if (p->passwd_timeout <= 0) p->passwd_timeout = 30000; /* 30 secs */ - if (p->timeout < 10000) p->timeout = 10000; /* 10 secs */ - if (p->cycle != 0 && p->cycle < 2000) p->cycle = 2000; /* 2 secs */ - if (p->pointer_timeout <= 0) p->pointer_timeout = 5000; /* 5 secs */ - if (p->notice_events_timeout <= 0) - p->notice_events_timeout = 10000; /* 10 secs */ - if (p->fade_seconds <= 0 || p->fade_ticks <= 0) - p->fade_p = False; - if (! p->fade_p) p->unfade_p = False; - - /* The DPMS settings may have the value 0. - But if they are negative, or are a range less than 10 seconds, - reset them to sensible defaults. (Since that must be a mistake.) - */ - if (p->dpms_standby != 0 && - p->dpms_standby < 10 * 1000) - p->dpms_standby = 2 * 60 * 60 * 1000; /* 2 hours */ - if (p->dpms_suspend != 0 && - p->dpms_suspend < 10 * 1000) - p->dpms_suspend = 2 * 60 * 60 * 1000; /* 2 hours */ - if (p->dpms_off != 0 && - p->dpms_off < 10 * 1000) - p->dpms_off = 4 * 60 * 60 * 1000; /* 4 hours */ - - if (p->dpms_standby == 0 && /* if *all* are 0, then DPMS is disabled */ - p->dpms_suspend == 0 && - p->dpms_off == 0) - p->dpms_enabled_p = False; - - - p->watchdog_timeout = p->cycle * 0.6; - if (p->watchdog_timeout < 30000) p->watchdog_timeout = 30000; /* 30 secs */ - if (p->watchdog_timeout > 3600000) p->watchdog_timeout = 3600000; /* 1 hr */ - - get_screenhacks (p); + get_screenhacks (p); /* Parse the "programs" resource. */ p->selected_hack = get_integer_resource ("selected", "Integer"); if (p->selected_hack < 0 || p->selected_hack >= p->screenhacks_count) @@ -1091,6 +1066,7 @@ load_init_file (saver_preferences *p) else if (s && !strcasecmp (s, "blank")) p->mode = BLANK_ONLY; else if (s && !strcasecmp (s, "off")) p->mode = DONT_BLANK; else p->mode = RANDOM_HACKS; + if (s) free (s); } if (system_default_screenhack_count) /* note: first_time is also true */ @@ -1110,6 +1086,10 @@ load_init_file (saver_preferences *p) p->timestamp_p = True; p->initial_delay = 0; } + + /* Throttle the various timeouts to reasonable values after reading the + disk file. */ + stop_the_insanity (p); } @@ -1319,7 +1299,10 @@ make_hack_name (const char *shell_command) sprintf (res_name, "hacks.%s.name", s); /* resource? */ s2 = get_string_resource (res_name, res_name); if (s2) - return s2; + { + free (s); + return s2; + } for (s2 = s; *s2; s2++) /* if it has any capitals, return it */ if (*s2 >= 'A' && *s2 <= 'Z') @@ -1481,9 +1464,51 @@ get_screenhacks (saver_preferences *p) start = end+1; } + free (d); + if (p->screenhacks_count == 0) { free (p->screenhacks); p->screenhacks = 0; } } + + +/* Make sure all the values in the preferences struct are sane. + */ +static void +stop_the_insanity (saver_preferences *p) +{ + if (p->passwd_timeout <= 0) p->passwd_timeout = 30000; /* 30 secs */ + if (p->timeout < 15000) p->timeout = 15000; /* 15 secs */ + if (p->cycle != 0 && p->cycle < 2000) p->cycle = 2000; /* 2 secs */ + if (p->pointer_timeout <= 0) p->pointer_timeout = 5000; /* 5 secs */ + if (p->notice_events_timeout <= 0) + p->notice_events_timeout = 10000; /* 10 secs */ + if (p->fade_seconds <= 0 || p->fade_ticks <= 0) + p->fade_p = False; + if (! p->fade_p) p->unfade_p = False; + + /* The DPMS settings may have the value 0. + But if they are negative, or are a range less than 10 seconds, + reset them to sensible defaults. (Since that must be a mistake.) + */ + if (p->dpms_standby != 0 && + p->dpms_standby < 10 * 1000) + p->dpms_standby = 2 * 60 * 60 * 1000; /* 2 hours */ + if (p->dpms_suspend != 0 && + p->dpms_suspend < 10 * 1000) + p->dpms_suspend = 2 * 60 * 60 * 1000; /* 2 hours */ + if (p->dpms_off != 0 && + p->dpms_off < 10 * 1000) + p->dpms_off = 4 * 60 * 60 * 1000; /* 4 hours */ + + if (p->dpms_standby == 0 && /* if *all* are 0, then DPMS is disabled */ + p->dpms_suspend == 0 && + p->dpms_off == 0) + p->dpms_enabled_p = False; + + p->watchdog_timeout = p->cycle * 0.6; + if (p->watchdog_timeout < 30000) p->watchdog_timeout = 30000; /* 30 secs */ + if (p->watchdog_timeout > 3600000) p->watchdog_timeout = 3600000; /* 1 hr */ +} diff --git a/driver/remote.c b/driver/remote.c index 38bc4c8b..2ecd7cbb 100644 --- a/driver/remote.c +++ b/driver/remote.c @@ -119,11 +119,15 @@ find_screensaver_window (Display *dpy, char **version) if (status == Success && type != None) { + Window ret = kids[i]; if (version) *version = v; - return kids[i]; + XFree (kids); + return ret; } } + + if (kids) XFree (kids); return 0; } @@ -132,6 +136,7 @@ static int send_xscreensaver_command (Display *dpy, Atom command, long arg, Window *window_ret, char **error_ret) { + int status = -1; char *v = 0; Window window = find_screensaver_window (dpy, &v); XWindowAttributes xgwa; @@ -148,15 +153,20 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg, if (error_ret) { *error_ret = strdup (err); - return -1; + status = -1; + goto DONE; } if (command == XA_EXIT) - /* Don't print an error if xscreensaver is already dead. */ - return 1; + { + /* Don't print an error if xscreensaver is already dead. */ + status = 1; + goto DONE; + } fprintf (stderr, "%s: %s\n", progname, err); - return -1; + status = -1; + goto DONE; } /* Select for property change events, so that we can read the response. */ @@ -176,7 +186,9 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg, *error_ret = strdup (err); else fprintf (stderr, "%s: %s\n", progname, err); - return -1; + + status = -1; + goto DONE; } XGetClassHint(dpy, window, &hint); @@ -188,7 +200,10 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg, *error_ret = strdup (err); else fprintf (stderr, "%s: %s\n", progname, err); - return -1; + + if (v) free (v); + status = -1; + goto DONE; } fprintf (stdout, "%s %s", hint.res_class, v); @@ -225,7 +240,8 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg, fprintf (stdout, "\n"); fflush (stdout); fprintf (stderr, "bad status format on root window.\n"); - return -1; + status = -1; + goto DONE; } blanked = (Atom) data[0]; @@ -286,12 +302,14 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg, fprintf (stdout, "\n"); fflush (stdout); fprintf (stderr, "no saver status on root window.\n"); - return -1; + status = -1; + goto DONE; } } /* No need to read a response for these commands. */ - return 1; + status = 1; + goto DONE; } else { @@ -326,11 +344,17 @@ send_xscreensaver_command (Display *dpy, Atom command, long arg, *error_ret = strdup (err); else fprintf (stderr, "%s: %s\n", progname, err); - return -1; + status = -1; + goto DONE; } } + + status = 0; + + DONE: + if (v) free (v); XSync (dpy, 0); - return 0; + return status; } diff --git a/driver/splash.c b/driver/splash.c index 0ae76a4a..55c4e9be 100644 --- a/driver/splash.c +++ b/driver/splash.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1991-2001 Jamie Zawinski +/* xscreensaver, Copyright (c) 1991-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -645,6 +645,7 @@ destroy_splash_window (saver_info *si) if (sp->heading_label) free (sp->heading_label); if (sp->body_label) free (sp->body_label); + if (sp->body2_label) free (sp->body2_label); if (sp->demo_label) free (sp->demo_label); #ifdef PREFS_BUTTON if (sp->prefs_label) free (sp->prefs_label); @@ -670,14 +671,17 @@ destroy_splash_window (saver_info *si) if (sp->logo_pixmap) XFreePixmap (si->dpy, sp->logo_pixmap); - if (sp->logo_npixels && sp->logo_pixels) - XFreeColors (si->dpy, cmap, sp->logo_pixels, sp->logo_npixels, 0L); if (sp->logo_pixels) - free (sp->logo_pixels); + { + if (sp->logo_npixels) + XFreeColors (si->dpy, cmap, sp->logo_pixels, sp->logo_npixels, 0L); + free (sp->logo_pixels); + sp->logo_pixels = 0; + sp->logo_npixels = 0; + } memset (sp, 0, sizeof(*sp)); free (sp); - si->sp_data = 0; } diff --git a/driver/subprocs.c b/driver/subprocs.c index 62ae9ae9..910d5cc9 100644 --- a/driver/subprocs.c +++ b/driver/subprocs.c @@ -732,8 +732,8 @@ spawn_screenhack_1 (saver_screen_info *ssi, Bool first_time_p) */ if (p->verbose_p) fprintf(stderr, - "%s: no suitable visuals for these programs.\n", - blurb()); + "%s: %d: no programs enabled, or no suitable visuals.\n", + blurb(), ssi->number); return; } else @@ -885,6 +885,11 @@ hack_environment (saver_info *si) if (putenv (npath)) abort (); + + /* don't free (npath) -- some implementations of putenv (BSD 4.4, + glibc 2.0) copy the argument, but some (libc4,5, glibc 2.1.2) + do not. So we must leak it (and/or the previous setting). Yay. + */ } #endif /* HAVE_PUTENV && DEFAULT_PATH_PREFIX */ } @@ -923,6 +928,7 @@ hack_subproc_environment (saver_screen_info *ssi) #ifdef HAVE_PUTENV if (putenv (ndpy)) abort (); + /* do not free(ndpy) -- see above. */ #endif /* HAVE_PUTENV */ } diff --git a/driver/test-passwd.c b/driver/test-passwd.c index 988b0012..9ef2cfe1 100644 --- a/driver/test-passwd.c +++ b/driver/test-passwd.c @@ -52,11 +52,14 @@ void start_notice_events_timer (saver_info *si, Window w, Bool b) {} Bool handle_clientmessage (saver_info *si, XEvent *e, Bool u) { return False; } int BadWindow_ehandler (Display *dpy, XErrorEvent *error) { exit(1); } const char *signal_name(int signal) { return "???"; } -void restore_real_vroot (saver_info *si) {} +Bool restore_real_vroot (saver_info *si) { return False; } void store_saver_status (saver_info *si) {} void saver_exit (saver_info *si, int status, const char *core) { exit(status);} int move_mouse_grab (saver_info *si, Window to, Cursor c, int ts) { return 0; } int mouse_screen (saver_info *si) { return 0; } +void check_for_leaks (const char *where) { } +void exec_command (const char *shell, const char *command, int nice) { } +void shutdown_stderr (saver_info *si) { } const char *blurb(void) { return progname; } Atom XA_SCREENSAVER, XA_DEMO, XA_PREFS; diff --git a/driver/test-xdpms.c b/driver/test-xdpms.c index 79a0dfdf..a401c38c 100644 --- a/driver/test-xdpms.c +++ b/driver/test-xdpms.c @@ -20,6 +20,7 @@ #endif #include +#include #include #include diff --git a/driver/timers.c b/driver/timers.c index 9f3877e5..5e73d5b1 100644 --- a/driver/timers.c +++ b/driver/timers.c @@ -1,6 +1,5 @@ /* timers.c --- detecting when the user is idle, and other timer-related tasks. - * xscreensaver, Copyright (c) 1991-1997, 1998 - * Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -15,8 +14,6 @@ # include "config.h" #endif -/* #define DEBUG_TIMERS */ - #include #include #include @@ -85,11 +82,9 @@ schedule_wakeup_event (saver_info *si, Time when, Bool verbose_p) si->timer_id = XtAppAddTimeOut (si->app, when, idle_timer, (XtPointer) si); -#ifdef DEBUG_TIMERS if (verbose_p) fprintf (stderr, "%s: starting idle_timer (%ld, %ld)\n", blurb(), when, si->timer_id); -#endif /* DEBUG_TIMERS */ } @@ -142,7 +137,7 @@ notice_events (saver_info *si, Window window, Bool top_p) */ XSelectInput (si->dpy, window, SubstructureNotifyMask | events); - if (top_p && p->verbose_p && (events & KeyPressMask)) + if (top_p && p->debug_p && (events & KeyPressMask)) { /* Only mention one window per tree (hack hack). */ fprintf (stderr, "%s: %d: selected KeyPress on 0x%lX\n", @@ -262,20 +257,16 @@ cycle_timer (XtPointer closure, XtIntervalId *id) si->cycle_id = XtAppAddTimeOut (si->app, how_long, cycle_timer, (XtPointer) si); -# ifdef DEBUG_TIMERS - if (p->verbose_p) + if (p->debug_p) fprintf (stderr, "%s: starting cycle_timer (%ld, %ld)\n", blurb(), how_long, si->cycle_id); -# endif /* DEBUG_TIMERS */ } -# ifdef DEBUG_TIMERS else { - if (p->verbose_p) + if (p->debug_p) fprintf (stderr, "%s: not starting cycle_timer: how_long == %d\n", blurb(), how_long); } -# endif /* DEBUG_TIMERS */ } @@ -302,15 +293,13 @@ reset_timers (saver_info *si) if (si->timer_id) { -#ifdef DEBUG_TIMERS - if (p->verbose_p) + if (p->debug_p) fprintf (stderr, "%s: killing idle_timer (%ld, %ld)\n", blurb(), p->timeout, si->timer_id); -#endif /* DEBUG_TIMERS */ XtRemoveTimeOut (si->timer_id); } - schedule_wakeup_event (si, p->timeout, p->verbose_p); /* sets si->timer_id */ + schedule_wakeup_event (si, p->timeout, p->debug_p); /* sets si->timer_id */ if (si->cycle_id) abort (); /* no cycle timer when inactive */ @@ -367,8 +356,7 @@ check_pointer_timer (XtPointer closure, XtIntervalId *id) active_p = True; -#ifdef DEBUG_TIMERS - if (p->verbose_p) + if (p->debug_p) { if (root_x == ssi->poll_mouse_last_root_x && root_y == ssi->poll_mouse_last_root_y && @@ -401,8 +389,6 @@ check_pointer_timer (XtPointer closure, XtIntervalId *id) } } -#endif /* DEBUG_TIMERS */ - si->last_activity_screen = ssi; ssi->poll_mouse_last_root_x = root_x; ssi->poll_mouse_last_root_y = root_y; @@ -415,11 +401,6 @@ check_pointer_timer (XtPointer closure, XtIntervalId *id) si->using_proc_interrupts && proc_interrupts_activity_p (si)) { -# ifdef DEBUG_TIMERS - if (p->verbose_p) - fprintf (stderr, "%s: /proc/interrupts activity at %s.\n", - blurb(), timestring()); -# endif /* DEBUG_TIMERS */ active_p = True; } #endif /* HAVE_PROC_INTERRUPTS */ @@ -456,8 +437,7 @@ check_for_clock_skew (saver_info *si) time_t now = time ((time_t *) 0); long shift = now - si->last_wall_clock_time; -#ifdef DEBUG_TIMERS - if (p->verbose_p) + if (p->debug_p) { int i = (si->last_wall_clock_time == 0 ? 0 : shift); fprintf (stderr, @@ -465,7 +445,6 @@ check_for_clock_skew (saver_info *si) blurb(), (i / (60 * 60)), ((i / 60) % 60), (i % 60)); } -#endif /* DEBUG_TIMERS */ if (si->last_wall_clock_time != 0 && shift > (p->timeout / 1000)) @@ -616,7 +595,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p) is economical: for example, if the screensaver should come on in 5 minutes, and the user has been idle for 2 minutes, then this timeout will go off no sooner than 3 minutes from now. */ - schedule_wakeup_event (si, p->timeout, p->verbose_p); + schedule_wakeup_event (si, p->timeout, p->debug_p); if (polling_mouse_position) /* Check to see if the mouse has moved, and set up a repeating timer @@ -698,7 +677,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p) yet been idle for long enough. So re-signal the event. */ if (polling_for_idleness) - schedule_wakeup_event (si, p->timeout - idle, p->verbose_p); + schedule_wakeup_event (si, p->timeout - idle, p->debug_p); } } break; @@ -714,11 +693,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p) if (scanning_all_windows) { Window w = event.xcreatewindow.window; -#ifdef DEBUG_TIMERS - start_notice_events_timer (si, w, p->verbose_p); -#else /* !DEBUG_TIMERS */ - start_notice_events_timer (si, w, False); -#endif /* !DEBUG_TIMERS */ + start_notice_events_timer (si, w, p->debug_p); } break; @@ -728,8 +703,7 @@ sleep_until_idle (saver_info *si, Bool until_idle_p) case ButtonRelease: case MotionNotify: -#ifdef DEBUG_TIMERS - if (p->verbose_p) + if (p->debug_p) { Window root, window; int x, y; @@ -772,7 +746,6 @@ sleep_until_idle (saver_info *si, Bool until_idle_p) fprintf (stderr, " at %d,%d.\n", x, y); } } -#endif /* DEBUG_TIMERS */ /* If any widgets want to handle this event, let them. */ dispatch_event (si, &event); @@ -1036,8 +1009,8 @@ proc_interrupts_activity_p (saver_info *si) static char last_kbd_line[255] = { 0, }; static char last_ptr_line[255] = { 0, }; char new_line[sizeof(last_kbd_line)]; - Bool got_kbd = False, kbd_diff = False; - Bool got_ptr = False, ptr_diff = False; + Bool checked_kbd = False, kbd_changed = False; + Bool checked_ptr = False, ptr_changed = False; if (!f0) { @@ -1088,27 +1061,35 @@ proc_interrupts_activity_p (saver_info *si) while (fgets (new_line, sizeof(new_line)-1, f1)) { - if (!got_kbd && strstr (new_line, "keyboard")) + if (!checked_kbd && strstr (new_line, "keyboard")) { - kbd_diff = (*last_kbd_line && !!strcmp (new_line, last_kbd_line)); + kbd_changed = (*last_kbd_line && !!strcmp (new_line, last_kbd_line)); strcpy (last_kbd_line, new_line); - got_kbd = True; + checked_kbd = True; } - else if (!got_ptr && strstr (new_line, "PS/2 Mouse")) + else if (!checked_ptr && strstr (new_line, "PS/2 Mouse")) { - ptr_diff = (*last_ptr_line && !!strcmp (new_line, last_ptr_line)); + ptr_changed = (*last_ptr_line && !!strcmp (new_line, last_ptr_line)); strcpy (last_ptr_line, new_line); - got_ptr = True; + checked_ptr = True; } - if (got_kbd && got_ptr) + if (checked_kbd && checked_ptr) break; } - if (got_kbd || got_ptr) + if (checked_kbd || checked_ptr) { fclose (f1); - return (kbd_diff || ptr_diff); + + if (si->prefs.debug_p && (kbd_changed || ptr_changed)) + fprintf (stderr, "%s: /proc/interrupts activity: %s\n", + blurb(), + ((kbd_changed && ptr_changed) ? "mouse and kbd" : + kbd_changed ? "kbd" : + ptr_changed ? "mouse" : "ERR")); + + return (kbd_changed || ptr_changed); } @@ -1173,19 +1154,15 @@ watchdog_timer (XtPointer closure, XtIntervalId *id) if (si->dbox_up_p) { -#ifdef DEBUG_TIMERS - if (si->prefs.verbose_p) + if (si->prefs.debug_p) fprintf (stderr, "%s: dialog box is up: not raising screen.\n", blurb()); -#endif /* DEBUG_TIMERS */ } else { -#ifdef DEBUG_TIMERS - if (si->prefs.verbose_p) + if (si->prefs.debug_p) fprintf (stderr, "%s: watchdog timer raising %sscreen.\n", blurb(), (running_p ? "" : "and clearing ")); -#endif /* DEBUG_TIMERS */ raise_window (si, True, True, running_p); } @@ -1225,11 +1202,8 @@ reset_watchdog_timer (saver_info *si, Bool on_p) si->watchdog_id = XtAppAddTimeOut (si->app, p->watchdog_timeout, watchdog_timer, (XtPointer) si); -#ifdef DEBUG_TIMERS - if (p->verbose_p) + if (p->debug_p) fprintf (stderr, "%s: restarting watchdog_timer (%ld, %ld)\n", blurb(), p->watchdog_timeout, si->watchdog_id); -#endif /* DEBUG_TIMERS */ - } } diff --git a/driver/windows.c b/driver/windows.c index d6cb192e..49db1ea7 100644 --- a/driver/windows.c +++ b/driver/windows.c @@ -758,7 +758,7 @@ saver_exit (saver_info *si, int status, const char *dump_core_reason) if (bugp) fprintf(real_stderr, "%s: see http://www.jwz.org/xscreensaver/bugs.html\n" - "\t\tfor bug reporting information.\n\n", + "\t\t\tfor bug reporting information.\n\n", blurb()); # if defined(HAVE_GETCWD) @@ -884,6 +884,7 @@ store_saver_status (saver_info *si) XA_SCREENSAVER_STATUS, XA_INTEGER, 32, PropModeReplace, (unsigned char *) status, size); + free (status); } diff --git a/driver/xscreensaver-command.man b/driver/xscreensaver-command.man index 207f2fa9..8e98bf48 100644 --- a/driver/xscreensaver-command.man +++ b/driver/xscreensaver-command.man @@ -11,7 +11,7 @@ .if n .sp 1 .if t .sp .5 .. -.TH XScreenSaver 1 "24-Feb-2002 (4.01)" "X Version 11" +.TH XScreenSaver 1 "18-Mar-2002 (4.02)" "X Version 11" .SH NAME xscreensaver-command - control a running xscreensaver process .SH SYNOPSIS diff --git a/driver/xscreensaver-demo.man b/driver/xscreensaver-demo.man index a275a2ca..cd860888 100644 --- a/driver/xscreensaver-demo.man +++ b/driver/xscreensaver-demo.man @@ -11,7 +11,7 @@ .if n .sp 1 .if t .sp .5 .. -.TH XScreenSaver 1 "24-Feb-2002 (4.01)" "X Version 11" +.TH XScreenSaver 1 "18-Mar-2002 (4.02)" "X Version 11" .SH NAME xscreensaver-demo - interactively control the background xscreensaver daemon .SH SYNOPSIS diff --git a/driver/xscreensaver-getimage-file b/driver/xscreensaver-getimage-file index 2da17d59..36de487e 100755 --- a/driver/xscreensaver-getimage-file +++ b/driver/xscreensaver-getimage-file @@ -29,7 +29,10 @@ use strict; use POSIX; use Fcntl; -use Fcntl ':mode'; + +# use Fcntl ':mode'; # Perl 5.6ism? +use POSIX ':fcntl_h'; # more portable? + my $progname = $0; $progname =~ s@.*/@@g; my $version = q{ $Revision: 1.8 $ }; $version =~ s/^[^0-9]+([0-9.]+).*$/$1/; diff --git a/driver/xscreensaver-getimage-file.man b/driver/xscreensaver-getimage-file.man index ca0e92cb..8a9fbc9e 100644 --- a/driver/xscreensaver-getimage-file.man +++ b/driver/xscreensaver-getimage-file.man @@ -1,4 +1,4 @@ -.TH XScreenSaver 1 "24-Feb-2002 (4.01)" "X Version 11" +.TH XScreenSaver 1 "18-Mar-2002 (4.02)" "X Version 11" .SH NAME xscreensaver-getimage-file - put a randomly-selected image on the root window .SH SYNOPSIS diff --git a/driver/xscreensaver-getimage-video.man b/driver/xscreensaver-getimage-video.man index 2f051282..6a674b21 100644 --- a/driver/xscreensaver-getimage-video.man +++ b/driver/xscreensaver-getimage-video.man @@ -1,4 +1,4 @@ -.TH XScreenSaver 1 "24-Feb-2002 (4.01)" "X Version 11" +.TH XScreenSaver 1 "18-Mar-2002 (4.02)" "X Version 11" .SH NAME xscreensaver-getimage-video - put a video frame on the root window .SH SYNOPSIS diff --git a/driver/xscreensaver-getimage.c b/driver/xscreensaver-getimage.c index 46e3019e..04b75201 100644 --- a/driver/xscreensaver-getimage.c +++ b/driver/xscreensaver-getimage.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2001 by Jamie Zawinski +/* xscreensaver, Copyright (c) 2001, 2002 by Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -295,6 +295,12 @@ get_image (Screen *screen, Window window, Bool verbose_p) if (putenv (ndpy)) abort (); + + /* don't free (ndpy) -- some implementations of putenv (BSD + 4.4, glibc 2.0) copy the argument, but some (libc4,5, glibc + 2.1.2) do not. So we must leak it (and/or the previous + setting). Yay. + */ } # endif /* HAVE_PUTENV */ diff --git a/driver/xscreensaver-getimage.man b/driver/xscreensaver-getimage.man index 682c3512..6e95c3d9 100644 --- a/driver/xscreensaver-getimage.man +++ b/driver/xscreensaver-getimage.man @@ -1,4 +1,4 @@ -.TH XScreenSaver 1 "24-Feb-2002 (4.01)" "X Version 11" +.TH XScreenSaver 1 "18-Mar-2002 (4.02)" "X Version 11" .SH NAME xscreensaver-getimage - put some randomly-selected image on the root window .SH SYNOPSIS diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c index 628bcf1d..0e60dfcc 100644 --- a/driver/xscreensaver.c +++ b/driver/xscreensaver.c @@ -484,8 +484,6 @@ lock_initialization (saver_info *si, int *argc, char **argv) si->nolock_reason = "running under GDM"; } #endif /* NO_LOCKING */ - - hack_uid (si); } @@ -500,13 +498,17 @@ connect_to_server (saver_info *si, int *argc, char **argv) char *d = getenv ("DISPLAY"); if (!d || !*d) { - char ndpy[] = "DISPLAY=:0.0"; + char *ndpy = strdup("DISPLAY=:0.0"); /* if (si->prefs.verbose_p) */ /* sigh, too early to test this... */ fprintf (stderr, "%s: warning: $DISPLAY is not set: defaulting to \"%s\".\n", blurb(), ndpy+8); if (putenv (ndpy)) abort (); + /* don't free (ndpy) -- some implementations of putenv (BSD 4.4, + glibc 2.0) copy the argument, but some (libc4,5, glibc 2.1.2) + do not. So we must leak it (and/or the previous setting). Yay. + */ } #endif /* HAVE_PUTENV */ @@ -953,7 +955,13 @@ main_loop (saver_info *si) while (1) { Bool was_locked = False; + + if (p->verbose_p) + fprintf (stderr, "%s: awaiting idleness.\n", blurb()); + + check_for_leaks ("unblanked A"); sleep_until_idle (si, True); + check_for_leaks ("unblanked B"); if (p->verbose_p) { @@ -1059,7 +1067,10 @@ main_loop (saver_info *si) ok_to_unblank = True; do { + check_for_leaks ("blanked A"); sleep_until_idle (si, False); /* until not idle */ + check_for_leaks ("blanked B"); + maybe_reload_init_file (si); #ifndef NO_LOCKING @@ -1181,9 +1192,6 @@ main_loop (saver_info *si) } XSync (si->dpy, False); } - - if (p->verbose_p) - fprintf (stderr, "%s: awaiting idleness.\n", blurb()); } } @@ -1954,3 +1962,20 @@ display_is_on_console_p (saver_info *si) } return !not_on_console; } + + +/* Do a little bit of heap introspection... + */ +void +check_for_leaks (const char *where) +{ +#ifdef HAVE_SBRK + static unsigned long last_brk = 0; + int b = (unsigned long) sbrk(0); + if (last_brk && last_brk < b) + fprintf (stderr, "%s: %s: brk grew by %luK.\n", + blurb(), where, + (((b - last_brk) + 1023) / 1024)); + last_brk = b; +#endif /* HAVE_SBRK */ +} diff --git a/driver/xscreensaver.h b/driver/xscreensaver.h index 41b1d718..94a0d0cd 100644 --- a/driver/xscreensaver.h +++ b/driver/xscreensaver.h @@ -417,6 +417,7 @@ extern Bool window_exists_p (Display *dpy, Window window); extern char *timestring (void); extern Bool display_is_on_console_p (saver_info *si); extern Visual *get_best_gl_visual (saver_screen_info *ssi); +extern void check_for_leaks (const char *where); extern Atom XA_VROOT, XA_XSETROOT_ID, XA_ESETROOT_PMAP_ID, XA_XROOTPMAP_ID; extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID; diff --git a/driver/xscreensaver.man b/driver/xscreensaver.man index 93d9adf3..ee49dd9f 100644 --- a/driver/xscreensaver.man +++ b/driver/xscreensaver.man @@ -11,7 +11,7 @@ .if n .sp 1 .if t .sp .5 .. -.TH XScreenSaver 1 "24-Feb-2002 (4.01)" "X Version 11" +.TH XScreenSaver 1 "18-Mar-2002 (4.02)" "X Version 11" .SH NAME xscreensaver - extensible screen saver framework, plus locking .SH SYNOPSIS @@ -845,17 +845,26 @@ lock command. I understand that KDE has invented their own wrapper around xscreensaver, that is inferior to .BR xscreensaver-demo (1) -in any number of ways. I've never actually seen it. Presumably, there is -some way to turn off KDE's screensaver framework, and make it so that the -usual +in any number of ways. I've never actually seen it, but I'm told that +this is the way you disable it: +.RS 4 +.TP 3 +\fB1: Switch off KDE's screen saver.\fP +Open the ``\fIControl Center\fP'' and +select the ``\fILook and Feel / Screensaver\fP'' page. +Turn off the ``\fIEnable Screensaver\fP'' checkbox. +.TP 3 +\fB2: Add xscreensaver to your startup programs.\fP +Create a file in your \fI~/.kde2/Autostart/\fP directory +called \fIlaunch-xscreensaver\fP. Make that file be executable, +and contain a single line: \fI``xscreensaver\fP''. +.RE +.PP +Now use xscreensaver normally, controlling it via the usual .BR xscreensaver-demo (1) and .BR xscreensaver-command (1) -mechanisms are used, in a similar way to how one can reconfigure CDE and -VUE environments, above. - -But I don't know how. If you do, please let me know, and I'll document -it here. +mechanisms. .SH ADDING TO MENUS The .BR xscreensaver-command (1) diff --git a/driver/xset.c b/driver/xset.c index 6dabdb2d..f2afcee7 100644 --- a/driver/xset.c +++ b/driver/xset.c @@ -1,5 +1,5 @@ /* xset.c --- interacting with server extensions and the builtin screensaver. - * xscreensaver, Copyright (c) 1991-1998 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -223,16 +223,11 @@ disable_builtin_screensaver (saver_info *si, Bool unblank_screen_p) desired_prefer_blank != current_prefer_blank || desired_allow_exp != current_allow_exp) { - if (p->verbose_p && unblank_screen_p) - /* Used to print this all the time, but really, nobody cares. - Now only print it when verbose. */ - fprintf (stderr, - "%s disabling server builtin screensaver.\n" - "%s: you can re-enable it with \"xset s on\".\n", - blurb(), blurb()); - if (p->verbose_p) - fprintf (stderr, "%s: (xset s %d %d; xset s %s; xset s %s)\n", blurb(), + fprintf (stderr, + "%s: disabling server builtin screensaver:\n" + "%s: (xset s %d %d; xset s %s; xset s %s)\n", + blurb(), blurb(), desired_server_timeout, desired_server_interval, (desired_prefer_blank ? "blank" : "noblank"), (desired_allow_exp ? "expose" : "noexpose")); diff --git a/hacks/Makefile.in b/hacks/Makefile.in index 008ec75d..4f902f99 100644 --- a/hacks/Makefile.in +++ b/hacks/Makefile.in @@ -94,7 +94,7 @@ SRCS = attraction.c blitspin.c bouboule.c braid.c bubbles.c \ nerverot.c xrayswarm.c hyperball.c zoom.c whirlwindwarp.c \ rotzoomer.c whirlygig.c speedmine.c vermiculate.c \ xpm-pixmap.c webcollage-helper.c twang.c apollonian.c \ - euler2d.c juggle.c polyominoes.c thornbird.c + euler2d.c juggle.c polyominoes.c thornbird.c fluidballs.c SCRIPTS = vidwhacker webcollage OBJS = attraction.o blitspin.o bouboule.o braid.o bubbles.o \ @@ -117,7 +117,7 @@ OBJS = attraction.o blitspin.o bouboule.o braid.o bubbles.o \ nerverot.o xrayswarm.o hyperball.o zoom.o whirlwindwarp.o \ rotzoomer.o whirlygig.o speedmine.o vermiculate.o \ xpm-pixmap.o webcollage-helper.o twang.o apollonian.o \ - euler2d.o juggle.o polyominoes.o thornbird.o + euler2d.o juggle.o polyominoes.o thornbird.o fluidballs.o NEXES = attraction blitspin bouboule braid bubbles decayscreen deco \ drift flag flame forest vines galaxy grav greynetic halo \ @@ -133,7 +133,7 @@ NEXES = attraction blitspin bouboule braid bubbles decayscreen deco \ xsublim ccurve blaster bumps ripples xteevee xspirograph \ nerverot xrayswarm hyperball zoom whirlwindwarp rotzoomer \ whirlygig speedmine vermiculate twang apollonian euler2d \ - juggle polyominoes thornbird \ + juggle polyominoes thornbird fluidballs \ @JPEG_EXES@ SEXES = sonar JPEG_EXES = webcollage-helper @@ -280,9 +280,9 @@ install-xml: fi ; \ files=`cd $(srcdir)/config/ ; echo README $(STAR).xml` ; \ for file in $$files ; do \ - echo $(INSTALL_DATA) config/$$file \ + echo $(INSTALL_DATA) $(srcdir)/config/$$file \ $(install_prefix)$(HACK_CONF_DIR)/$$file ; \ - $(INSTALL_DATA) config/$$file \ + $(INSTALL_DATA) $(srcdir)/config/$$file \ $(install_prefix)$(HACK_CONF_DIR)/$$file ; \ done @@ -665,6 +665,9 @@ vermiculate: vermiculate.o $(HACK_OBJS) $(COL) twang: twang.o $(HACK_OBJS) $(GRAB) $(SHM) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) +fluidballs: fluidballs.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + # The rules for those hacks which follow the `xlockmore' API. # @@ -878,8 +881,8 @@ flag.o: $(srcdir)/xpm-pixmap.h flag.o: $(srcdir)/images/bob.xbm flame.o: $(srcdir)/screenhack.h flame.o: ../config.h -forest.o: $(srcdir)/xlockmore.h forest.o: ../config.h +forest.o: $(srcdir)/xlockmore.h forest.o: $(srcdir)/xlockmoreI.h forest.o: $(srcdir)/screenhack.h vines.o: $(srcdir)/xlockmore.h @@ -1093,6 +1096,7 @@ bsod.o: $(srcdir)/xpm-pixmap.h bsod.o: $(srcdir)/images/amiga.xpm bsod.o: $(srcdir)/images/atari.xbm bsod.o: $(srcdir)/images/mac.xbm +bsod.o: $(srcdir)/images/macbomb.xbm crystal.o: $(srcdir)/xlockmore.h crystal.o: ../config.h crystal.o: $(srcdir)/xlockmoreI.h @@ -1213,4 +1217,6 @@ thornbird.o: $(srcdir)/xlockmore.h thornbird.o: ../config.h thornbird.o: $(srcdir)/xlockmoreI.h thornbird.o: $(srcdir)/screenhack.h +fluidballs.o: $(srcdir)/screenhack.h +fluidballs.o: ../config.h diff --git a/hacks/bsod.c b/hacks/bsod.c index 8178dd46..e516c813 100644 --- a/hacks/bsod.c +++ b/hacks/bsod.c @@ -27,6 +27,7 @@ #include "images/amiga.xpm" #include "images/atari.xbm" #include "images/mac.xbm" +#include "images/macbomb.xbm" static int @@ -194,7 +195,7 @@ bsod_sleep(Display *dpy, int seconds) static Bool -windows (Display *dpy, Window window, int delay, Bool w95p) +windows (Display *dpy, Window window, int delay, int which) { XGCValues gcv; XWindowAttributes xgwa; @@ -261,18 +262,34 @@ windows (Display *dpy, Window window, int delay, Bool w95p) "contact your system administrator or technical support group." ); - if (!get_boolean_resource((w95p? "doWindows" : "doNT"), "DoWindows")) + const char *w2ka = + ("*** STOP: 0x000000D1 (0xE1D38000,0x0000001C,0x00000000,0xF09D42DA)\n" + "DRIVER_IRQL_NOT_LESS_OR_EQUAL \n" + "\n" + "*** Address F09D42DA base at F09D4000, DateStamp 39f459ff - CRASHDD.SYS\n" + "\n" + "Beginning dump of physical memory\n"); + const char *w2kb = + ("Physical memory dump complete. Contact your system administrator or\n" + "technical support group.\n"); + + if (which < 0 || which > 2) abort(); + + if (!get_boolean_resource((which == 0 ? "doWindows" : + which == 1 ? "doNT" : + "doWin2K"), + "DoWindows")) return False; XGetWindowAttributes (dpy, window, &xgwa); fontname = get_string_resource ((xgwa.height > 600 - ? (w95p - ? "windows95.font2" - : "windowsNT.font2") - : (w95p - ? "windows95.font" - : "windowsNT.font")), + ? (which == 0 ? "windows95.font2" : + which == 1 ? "windowsNT.font2" : + "windows2K.font2") + : (which == 0 ? "windows95.font" : + which == 1 ? "windowsNT.font" : + "windows2K.font")), "Windows.Font"); if (!fontname || !*fontname) fontname = (char *)def_font; font = XLoadQueryFont (dpy, fontname); @@ -282,14 +299,14 @@ windows (Display *dpy, Window window, int delay, Bool w95p) free (fontname); gcv.font = font->fid; - gcv.foreground = get_pixel_resource((w95p - ? "windows95.foreground" - : "windowsNT.foreground"), + gcv.foreground = get_pixel_resource((which == 0 ? "windows95.foreground" : + which == 1 ? "windowsNT.foreground" : + "windows2K.foreground"), "Windows.Foreground", dpy, xgwa.colormap); - gcv.background = get_pixel_resource((w95p - ? "windows95.background" - : "windowsNT.background"), + gcv.background = get_pixel_resource((which == 0 ? "windows95.background" : + which == 1 ? "windowsNT.background" : + "windows2K.background"), "Windows.Background", dpy, xgwa.colormap); XSetWindowBackground(dpy, window, gcv.background); @@ -297,11 +314,22 @@ windows (Display *dpy, Window window, int delay, Bool w95p) gc = XCreateGC(dpy, window, GCFont|GCForeground|GCBackground, &gcv); - if (w95p) + if (which == 0) draw_string(dpy, window, gc, &gcv, font, 0, 0, xgwa.width, xgwa.height, w95, 0); - else + else if (which == 1) draw_string(dpy, window, gc, &gcv, font, 0, 0, 10, 10, wnt, 750); + else + { + int line_height = font->ascent + font->descent + 1; + int x = 20; + int y = (xgwa.height / 4); + + draw_string(dpy, window, gc, &gcv, font, x, y, 10, 10, w2ka, 750); + y += line_height * 6; + bsod_sleep(dpy, 4); + draw_string(dpy, window, gc, &gcv, font, x, y, 10, 10, w2kb, 750); + } XFreeGC(dpy, gc); XSync(dpy, False); @@ -1142,6 +1170,59 @@ macsbug (Display *dpy, Window window, int delay) return True; } +static Bool +mac1 (Display *dpy, Window window, int delay) +{ + XGCValues gcv; + XWindowAttributes xgwa; + GC gc; + Pixmap pixmap = 0; + int pix_w = macbomb_width; + int pix_h = macbomb_height; + + if (!get_boolean_resource("doMac1", "DoMac1")) + return False; + + XGetWindowAttributes (dpy, window, &xgwa); + + gcv.foreground = get_pixel_resource("mac1.foreground", "Mac.Foreground", + dpy, xgwa.colormap); + gcv.background = get_pixel_resource("mac1.background", "Mac.Background", + dpy, xgwa.colormap); + XSetWindowBackground(dpy, window, gcv.background); + XClearWindow(dpy, window); + + gc = XCreateGC(dpy, window, GCForeground|GCBackground, &gcv); + + pixmap = XCreatePixmapFromBitmapData(dpy, window, (char *) macbomb_bits, + macbomb_width, macbomb_height, + gcv.foreground, + gcv.background, + xgwa.depth); + + { + int x = (xgwa.width - pix_w) / 2; + int y = (xgwa.height - pix_h) / 2; + if (y < 0) y = 0; + XFillRectangle (dpy, window, gc, 0, 0, xgwa.width, xgwa.height); + XSync(dpy, False); + if (bsod_sleep(dpy, 1)) + goto DONE; + XCopyArea(dpy, pixmap, window, gc, 0, 0, pix_w, pix_h, x, y); + } + + DONE: + XFreeGC(dpy, gc); + XFreePixmap(dpy, pixmap); + XSync(dpy, False); + bsod_sleep(dpy, delay); + XClearWindow(dpy, window); + return True; +} + + + + /* blit damage * @@ -1211,11 +1292,13 @@ blitdamage (Display *dpy, Window window, int delay) chunk_w, chunk_h, x, y); - bsod_sleep(dpy, 0); + if (bsod_sleep(dpy, 0)) + goto DONE; } bsod_sleep(dpy, delay); + DONE: XFreeGC(dpy, gc0); return True; @@ -1452,29 +1535,35 @@ sparc_solaris (Display* dpy, Window window, int delay) ts = make_solaris_console (dpy, window); solaris_puts (ts, msg1, 0); - bsod_sleep (dpy, 3); + if (bsod_sleep (dpy, 3)) + goto DONE; solaris_puts (ts, msg2, 0); - bsod_sleep (dpy, 2); + if (bsod_sleep (dpy, 2)) + goto DONE; for (i = 1; i <= 100; ++i) { sprintf(buf, "\b\b\b\b\b\b\b\b\b\b\b%3d%% done", i); solaris_puts(ts, buf, 0); - usleep(100000); + if (bsod_sleep (dpy, -1)) + goto DONE; } solaris_puts (ts, msg3, 0); - bsod_sleep (dpy, 2); + if (bsod_sleep (dpy, 2)) + goto DONE; solaris_puts (ts, msg4, 0); - bsod_sleep(dpy, 3); + if (bsod_sleep(dpy, 3)) + goto DONE; XFillRectangle (ts->dpy, ts->window, ts->gc, 0, 0, ts->width, ts->height); bsod_sleep (dpy, 3); + DONE: free_solaris_console (ts); return True; @@ -1488,11 +1577,13 @@ char *defaults [] = { "*doWindows: True", "*doNT: True", + "*doWin2K: True", "*doAmiga: True", "*doMac: True", - "*doAtari: False", /* boring */ "*doMacsBug: True", + "*doMac1: True", "*doSCO: True", + "*doAtari: False", /* boring */ "*doBSD: False", /* boring */ "*doSparcLinux: False", /* boring */ "*doBlitDamage: True", @@ -1523,6 +1614,9 @@ char *defaults [] = { ".MacsBug.background: White", ".MacsBug.borderColor: #AAAAAA", + ".mac1.foreground: Black", + ".mac1.background: White", + ".SCO.font: -*-courier-bold-r-*-*-*-120-*-*-m-*-*-*", ".SCO.font2: -*-courier-bold-r-*-*-*-140-*-*-m-*-*-*", ".SCO.foreground: White", @@ -1552,6 +1646,8 @@ XrmOptionDescRec options [] = { { "-no-windows", ".doWindows", XrmoptionNoArg, "False" }, { "-nt", ".doNT", XrmoptionNoArg, "True" }, { "-no-nt", ".doNT", XrmoptionNoArg, "False" }, + { "-2k", ".doWin2K", XrmoptionNoArg, "True" }, + { "-no-2k", ".doWin2K", XrmoptionNoArg, "False" }, { "-amiga", ".doAmiga", XrmoptionNoArg, "True" }, { "-no-amiga", ".doAmiga", XrmoptionNoArg, "False" }, { "-mac", ".doMac", XrmoptionNoArg, "True" }, @@ -1594,20 +1690,22 @@ screenhack (Display *dpy, Window window) while (1) { Bool did; - do { i = (random() & 0xFF) % 11; } while (i == j); + do { i = (random() & 0xFF) % 13; } while (i == j); switch (i) { - case 0: did = windows(dpy, window, delay, True); break; - case 1: did = windows(dpy, window, delay, False); break; - case 2: did = amiga(dpy, window, delay); break; - case 3: did = mac(dpy, window, delay); break; - case 4: did = macsbug(dpy, window, delay); break; - case 5: did = sco(dpy, window, delay); break; - case 6: did = sparc_linux(dpy, window, delay); break; - case 7: did = bsd(dpy, window, delay); break; - case 8: did = atari(dpy, window, delay); break; - case 9: did = blitdamage(dpy, window, delay); break; - case 10: did = sparc_solaris(dpy, window, delay); break; + case 0: did = windows(dpy, window, delay, 0); break; + case 1: did = windows(dpy, window, delay, 1); break; + case 2: did = windows(dpy, window, delay, 2); break; + case 3: did = amiga(dpy, window, delay); break; + case 4: did = mac(dpy, window, delay); break; + case 5: did = macsbug(dpy, window, delay); break; + case 6: did = mac1(dpy, window, delay); break; + case 7: did = sco(dpy, window, delay); break; + case 8: did = sparc_linux(dpy, window, delay); break; + case 9: did = bsd(dpy, window, delay); break; + case 10: did = atari(dpy, window, delay); break; + case 11: did = blitdamage(dpy, window, delay); break; + case 12: did = sparc_solaris(dpy, window, delay); break; default: abort(); break; } loop++; diff --git a/hacks/bsod.man b/hacks/bsod.man index 3c64cbd8..98c0f964 100644 --- a/hacks/bsod.man +++ b/hacks/bsod.man @@ -67,15 +67,17 @@ Notable X resources supported include the following, which control which hacks are displayed and which aren't. .BR doWindows , .BR doNT , +.BR doWin2K , .BR doAmiga , .BR doMac , .BR doMacsBug , .BR doSCO , .BR doAtari , -.BR doBlitDamage , +.BR doBSD , .BR doSparcLinux , +.BR doBlitDamage , and -.BR doSSolaris . +.BR doSolaris . Each of these is a Boolean resource, they all default to true, except for doSparcLinux and doAtari, which are turned off by default, because they're really not all that interesting looking unless you're a fan of those systems. diff --git a/hacks/bumps.c b/hacks/bumps.c index 5eedaf7c..8718bfda 100644 --- a/hacks/bumps.c +++ b/hacks/bumps.c @@ -1,4 +1,4 @@ -/* Bumps, Copyright (c) 1999 Shane Smit +/* Bumps, Copyright (c) 2002 Shane Smit * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -8,7 +8,7 @@ * software for any purpose. It is provided "as is" without express or * implied warranty. * - * Module: "Bumps.cpp" + * Module: "bumps.c" * Tab Size: 4 * * Description: @@ -21,6 +21,7 @@ * Modification History: * [10/01/99] - Shane Smit: Creation * [10/08/99] - Shane Smit: Port to C. (Ick) + * [03/08/02] - Shane Smit: New movement code. */ @@ -53,7 +54,7 @@ void CreateSpotLight( SSpotLight *pSpotLight, uint16_ iDiameter, uint16_ nColorC pSpotLight->aLightMap[ ( ( iHeight + (pSpotLight->nDiameter/2) ) * pSpotLight->nDiameter ) + iWidth + (pSpotLight->nDiameter/2) ] = (uint8_)nDelta; } - /* The actual lightmap... 1/2 of the entire lightmap. */ + /* The actual lightmap... Use 1/4 to save time within the loop. */ pSpotLight->nRadius = pSpotLight->nDiameter / 4; for( iHeight=-pSpotLight->nRadius; iHeightnRadius; iHeight++ ) @@ -64,59 +65,48 @@ void CreateSpotLight( SSpotLight *pSpotLight, uint16_ iDiameter, uint16_ nColorC pSpotLight->aLightMap[ ( ( iHeight + (pSpotLight->nDiameter/2) ) * pSpotLight->nDiameter ) + iWidth + (pSpotLight->nDiameter/2) ] = (uint8_)nDelta; } - CreateTables( pSpotLight ); - pSpotLight->nRadius = pSpotLight->nDiameter / 2; /* Now set the radius back to what it should be. */ - pSpotLight->nAngleX = RANDOM() % pSpotLight->nDegreeCount; - pSpotLight->nAngleY = RANDOM() % pSpotLight->nDegreeCount; - pSpotLight->nVelocityX = ( RANDOM() % 3 ) + 1; - pSpotLight->nVelocityY = ( RANDOM() % 3 ) + 1; + pSpotLight->nAccelX = 0; + pSpotLight->nAccelY = 0; + pSpotLight->nVelocityX = ( RANDOM() % 2 ) ? pSpotLight->nVelocityMax : -pSpotLight->nVelocityMax; + pSpotLight->nVelocityY = ( RANDOM() % 2 ) ? pSpotLight->nVelocityMax : -pSpotLight->nVelocityMax; } -void CreateTables( SSpotLight *pSpotLight ) +void CalcLightPos( SBumps *pBumps ) { - double nUnit; - uint16_ iDegree; - - pSpotLight->nDegreeCount = get_integer_resource( "degrees", "Integer" ); - if( pSpotLight->nDegreeCount < 180 ) pSpotLight->nDegreeCount = 180; /* Less than 180 will show trails in higher resolutions. */ -#ifdef VERBOSE - printf( "%s: Using a %d degree circle.\n", progclass, pSpotLight->nDegreeCount ); -#endif - - pSpotLight->aSinTable = calloc( pSpotLight->nDegreeCount, sizeof(double) ); - - /* This funtion builds the Sine Lookup Tables. */ - nUnit = (double)( PI * 2.0F ) / (double)( pSpotLight->nDegreeCount ); - - for( iDegree=0; iDegreenDegreeCount; iDegree++) - pSpotLight->aSinTable[ iDegree ] = sin( nUnit * (double)iDegree ); -} + SSpotLight *pSpotLight = &pBumps->SpotLight; + float nGravity; + /* X */ + if( pSpotLight->nXPos < pSpotLight->nDiameter * 1 ) nGravity = 1.0f; + else if( pSpotLight->nXPos > pBumps->iWinWidth - ( pSpotLight->nDiameter * 1 ) ) nGravity = -1.0f; + else nGravity = ( ( RANDOM() % 201 ) / 100.0f ) - 1.0f; + + pSpotLight->nAccelX += nGravity * ( pSpotLight->nAccelMax / 10.0f ); + if( pSpotLight->nAccelX < -pSpotLight->nAccelMax ) pSpotLight->nAccelX = -pSpotLight->nAccelMax; + else if( pSpotLight->nAccelX > pSpotLight->nAccelMax ) pSpotLight->nAccelX = pSpotLight->nAccelMax; -void CalcLightPos( SSpotLight *pSpotLight, uint16_ *pXPos, uint16_ *pYPos ) -{ - pSpotLight->nVelocityX += ( RANDOM() % 2 ) ? 0.05F : -0.05F; - if( pSpotLight->nVelocityX < 1 ) pSpotLight->nVelocityX = 1; - else if( pSpotLight->nVelocityX > 3 ) pSpotLight->nVelocityX = 3; + pSpotLight->nVelocityX += pSpotLight->nAccelX; + if( pSpotLight->nVelocityX < -pSpotLight->nVelocityMax ) pSpotLight->nVelocityX = -pSpotLight->nVelocityMax; + else if( pSpotLight->nVelocityX > pSpotLight->nVelocityMax ) pSpotLight->nVelocityX = pSpotLight->nVelocityMax; - pSpotLight->nVelocityX += ( RANDOM() % 2 ) ? 0.05F : -0.05F; - if( pSpotLight->nVelocityY < 1 ) pSpotLight->nVelocityX = 1; - else if( pSpotLight->nVelocityY > 3 ) pSpotLight->nVelocityX = 3; - - pSpotLight->nAngleX += pSpotLight->nVelocityX; - if( pSpotLight->nAngleX >= pSpotLight->nDegreeCount ) pSpotLight->nAngleX -= pSpotLight->nDegreeCount; + pSpotLight->nXPos += pSpotLight->nVelocityX; - pSpotLight->nAngleY += pSpotLight->nVelocityY; - if( pSpotLight->nAngleY >= pSpotLight->nDegreeCount ) pSpotLight->nAngleY -= pSpotLight->nDegreeCount; + /* Y */ + if( pSpotLight->nYPos < pSpotLight->nDiameter * 1 ) nGravity = 1.0f; + else if( pSpotLight->nYPos > pBumps->iWinHeight - ( pSpotLight->nDiameter * 1 ) ) nGravity = -1.0f; + else nGravity = ( ( RANDOM() % 201 ) / 100.0f ) - 1.0f; + + pSpotLight->nAccelY += nGravity * ( pSpotLight->nAccelMax / 10.0f ); + if( pSpotLight->nAccelY < -pSpotLight->nAccelMax ) pSpotLight->nAccelY = -pSpotLight->nAccelMax; + else if( pSpotLight->nAccelY > pSpotLight->nAccelMax ) pSpotLight->nAccelY = pSpotLight->nAccelMax; - *pXPos = (uint16_)( ( pSpotLight->iWinXCenter - pSpotLight->nRadius ) * pSpotLight->aSinTable[ (uint16_)pSpotLight->nAngleX ] ) + pSpotLight->iWinXCenter; - *pYPos = (uint16_)( ( pSpotLight->iWinYCenter - pSpotLight->nRadius ) * pSpotLight->aSinTable[ (uint16_)pSpotLight->nAngleY ] ) + pSpotLight->iWinYCenter; + pSpotLight->nVelocityY += pSpotLight->nAccelY; + if( pSpotLight->nVelocityY < -pSpotLight->nVelocityMax ) pSpotLight->nVelocityY = -pSpotLight->nVelocityMax; + else if( pSpotLight->nVelocityY > pSpotLight->nVelocityMax ) pSpotLight->nVelocityY = pSpotLight->nVelocityMax; - /* Offset to upper left hand corner. */ - *pXPos -= pSpotLight->nRadius; - *pYPos -= pSpotLight->nRadius; + pSpotLight->nYPos += pSpotLight->nVelocityY; } @@ -131,8 +121,10 @@ void CreateBumps( SBumps *pBumps, Display *pNewDisplay, Window NewWin ) XGetWindowAttributes( pNewDisplay, NewWin, &XWinAttribs ); pBumps->iWinWidth = XWinAttribs.width; pBumps->iWinHeight = XWinAttribs.height; - pBumps->SpotLight.iWinXCenter = XWinAttribs.width / 2; - pBumps->SpotLight.iWinYCenter = XWinAttribs.height / 2; + pBumps->SpotLight.nXPos = XWinAttribs.width / 2.0f; + pBumps->SpotLight.nYPos = XWinAttribs.height / 2.0f; + pBumps->SpotLight.nVelocityMax = ( ( XWinAttribs.width < XWinAttribs.height ) ? XWinAttribs.width : XWinAttribs.height ) / 128.0f; + pBumps->SpotLight.nAccelMax = pBumps->SpotLight.nVelocityMax / 10.0f; pBumps->pDisplay = pNewDisplay; pBumps->Win = NewWin; @@ -179,6 +171,14 @@ void SetPalette( SBumps *pBumps, XWindowAttributes *pXWinAttribs ) Color.red = RANDOM() % 0xFFFF; Color.green = RANDOM() % 0xFFFF; Color.blue = RANDOM() % 0xFFFF; + + /* Make one color full intesity to avoid dark spotlights. */ + switch( RANDOM() % 3 ) + { + case 0: Color.red = 0xFFFF; break; + case 1: Color.green = 0xFFFF; break; + case 2: Color.blue = 0xFFFF; break; + } if( strcasecmp( sColor, "random" ) && !XParseColor( pBumps->pDisplay, pXWinAttribs->colormap, sColor, &Color ) ) fprintf( stderr, "%s: color %s not found in database. Choosing random...\n", progname, sColor ); @@ -310,7 +310,11 @@ void Execute( SBumps *pBumps ) uint8_ *pLOffset; int16_ nX, nY; uint16_ nColor; - CalcLightPos( &pBumps->SpotLight, &nLightXPos, &nLightYPos ); + CalcLightPos( pBumps ); + + /* Offset to upper left hand corner. */ + nLightXPos = pBumps->SpotLight.nXPos - pBumps->SpotLight.nRadius; + nLightYPos = pBumps->SpotLight.nYPos - pBumps->SpotLight.nRadius; for( iHeight=nLightYPos, iLightHeight=0; iLightHeightSpotLight.nDiameter; iHeight++, iLightHeight++ ) { @@ -392,9 +396,5 @@ void screenhack( Display *pDisplay, Window Win ) } -/* - * End of Module: "Bumps.cpp" - */ - /* vim: ts=4 */ diff --git a/hacks/bumps.h b/hacks/bumps.h index f5e8c292..120be961 100644 --- a/hacks/bumps.h +++ b/hacks/bumps.h @@ -1,4 +1,4 @@ -/* Bumps, Copyright (c) 1999 Shane Smit +/* Bumps, Copyright (c) 2001 Shane Smit * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -12,11 +12,12 @@ * Tab Size: 4 * * Description: - * Header file for module "Bumps.cpp" + * Header file for module "Bumps.c" * * Modification History: * [10/01/99] - Shane Smit: Creation * [10/08/99] - Shane Smit: Port to C. (Ick) + * [03/08/02] - Shane Smit: New movement code. */ @@ -31,7 +32,6 @@ /* Defines: */ /* #define VERBOSE */ -#define PI 3.141592654 #define RANDOM() ((int) (random() & 0X7FFFFFFFL)) typedef signed char int8_; @@ -49,7 +49,6 @@ char *progclass = "Bumps"; char *defaults [] = { ".background: black", ".foreground: white", - "*degrees: 360", "*color: random", "*colorcount: 64", "*delay: 50000", @@ -62,7 +61,6 @@ char *defaults [] = { }; XrmOptionDescRec options [] = { - { "-degrees", ".degrees", XrmoptionSepArg, 0 }, { "-color", ".color", XrmoptionSepArg, 0 }, { "-colorcount", ".colorcount", XrmoptionSepArg, 0 }, { "-delay", ".delay", XrmoptionSepArg, 0 }, @@ -76,20 +74,18 @@ XrmOptionDescRec options [] = { * a member of TBumps. */ typedef struct { - uint16_ nDegreeCount; - double *aSinTable; - uint8_ *aLightMap; uint16_ nDiameter, nRadius; - float nAngleX, nAngleY; /* Spotlight's movement direction. */ + float nAccelX, nAccelY; + float nAccelMax; float nVelocityX, nVelocityY; - uint16_ iWinXCenter, iWinYCenter; + float nVelocityMax; + float nXPos, nYPos; } SSpotLight; void CreateSpotLight( SSpotLight *, uint16_, uint16_ ); void CreateTables( SSpotLight * ); -void CalcLightPos( SSpotLight *, uint16_ *, uint16_ * ); -void DestroySpotLight( SSpotLight *pSpotLight ) { free( pSpotLight->aLightMap ); free( pSpotLight->aSinTable ); } +void DestroySpotLight( SSpotLight *pSpotLight ) { free( pSpotLight->aLightMap ); } /* The entire program's operation is contained within this structure. */ @@ -121,9 +117,5 @@ void SoftenBumpMap( SBumps * ); #endif /* _BUMPS_H */ -/* - * End of Module: "Bumps.h" - */ - /* vim: ts=4 */ diff --git a/hacks/compile_axp.com b/hacks/compile_axp.com index 27fc3d71..7f4f7ee9 100644 --- a/hacks/compile_axp.com +++ b/hacks/compile_axp.com @@ -6,8 +6,8 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BOUBOULE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BRAID.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BSOD.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES-DEFAULT.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUMPS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CCURVE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) COMPASS.C @@ -28,6 +28,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAG.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAME.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLOW.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLUIDBALLS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FOREST.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GALAXY.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GOOP.C @@ -53,8 +54,8 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOUNTAIN.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NERVEROT.C diff --git a/hacks/compile_decc.com b/hacks/compile_decc.com index 27fc3d71..7f4f7ee9 100644 --- a/hacks/compile_decc.com +++ b/hacks/compile_decc.com @@ -6,8 +6,8 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BOUBOULE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BRAID.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BSOD.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES-DEFAULT.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUBBLES.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) BUMPS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) CCURVE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) COMPASS.C @@ -28,6 +28,7 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAG.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLAME.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLOW.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FLUIDBALLS.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) FOREST.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GALAXY.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) GOOP.C @@ -53,8 +54,8 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LMORPH.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) LOOP.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MAZE.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOIRE2.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MOUNTAIN.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) MUNCH.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) NERVEROT.C diff --git a/hacks/config/README b/hacks/config/README index 5f4ca9a4..8475692b 100644 --- a/hacks/config/README +++ b/hacks/config/README @@ -4,8 +4,8 @@ a screen saver and locker for the X window system by Jamie Zawinski - version 4.01 - 24-Feb-2002 + version 4.02 + 18-Mar-2002 http://www.jwz.org/xscreensaver/ diff --git a/hacks/config/bsod.xml b/hacks/config/bsod.xml index 69debf0f..ed9d10c6 100644 --- a/hacks/config/bsod.xml +++ b/hacks/config/bsod.xml @@ -10,18 +10,20 @@
- - - - - + + + + + + - - - - - + + + + + +
diff --git a/hacks/config/cubenetic.xml b/hacks/config/cubenetic.xml new file mode 100644 index 00000000..3be42f5c --- /dev/null +++ b/hacks/config/cubenetic.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + <_description> +Draws a pulsating set of overlapping boxes with ever-chaning blobby +patterns undulating across their surfaces. It's sort of a cubist Lavalite. +Written by Jamie Zawinski. + + diff --git a/hacks/config/glplanet.xml b/hacks/config/glplanet.xml index 42a75f2b..4534d241 100644 --- a/hacks/config/glplanet.xml +++ b/hacks/config/glplanet.xml @@ -6,7 +6,7 @@ - + diff --git a/hacks/config/pipes.xml b/hacks/config/pipes.xml index c8c56621..c50953b1 100644 --- a/hacks/config/pipes.xml +++ b/hacks/config/pipes.xml @@ -36,6 +36,8 @@ + + diff --git a/hacks/fluidballs.c b/hacks/fluidballs.c new file mode 100644 index 00000000..528c9994 --- /dev/null +++ b/hacks/fluidballs.c @@ -0,0 +1,676 @@ +/* fluidballs, Copyright (c) 2000 by Peter Birtles + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * Ported to X11 and xscreensaver by jwz, 27-Feb-2002. + * + * http://astronomy.swin.edu.au/~pbourke/modelling/fluid/ + */ + +#include +#include "screenhack.h" +#include + + +typedef struct { + Display *dpy; + Window window; + XWindowAttributes xgwa; + + GC draw_gc; /* most of the balls */ + GC draw_gc2; /* the ball being dragged with the mouse */ + GC erase_gc; + XColor fg; + XColor fg2; + + int count; /* number of balls */ + float xmin, ymin; /* rectangle of window, relative to root */ + float xmax, ymax; + + int mouse_ball; /* index of ball being dragged, or 0 if none. */ + + float tc; /* time constant (time-warp multiplier) */ + float accx; /* horizontal acceleration (wind) */ + float accy; /* vertical acceleration (gravity) */ + + float *vx, *vy; /* current ball velocities */ + float *px, *py; /* current ball positions */ + float *opx, *opy; /* previous ball positions */ + float *r; /* ball radiuses */ + + float e; /* coefficient of friction, I think? */ + float max_radius; /* largest radius of any ball */ + + Bool shake_p; /* Whether to mess with gravity when things settle. */ + float shake_threshold; + int time_since_shake; + + Bool fps_p; /* Whether to draw some text at the bottom. */ + GC font_gc; + int font_height; + int font_baseline; + int frame_count; + int collision_count; + +} b_state; + + + +/* Finds the origin of the window relative to the root window, by + walking up the window tree until it reaches the top. + */ +static void +window_origin (Display *dpy, Window window, int *x, int *y) +{ + Window root, parent, *kids; + unsigned int nkids; + XWindowAttributes xgwa; + int wx, wy; + XGetWindowAttributes (dpy, window, &xgwa); + + wx = xgwa.x; + wy = xgwa.y; + + kids = 0; + *x = 0; + *y = 0; + + if (XQueryTree (dpy, window, &root, &parent, &kids, &nkids)) + { + if (parent && parent != root) + { + int px, py; + window_origin (dpy, parent, &px, &py); + wx += px; + wy += py; + } + } + if (kids) XFree (kids); + *x = wx; + *y = wy; +} + + +/* Queries the window position to see if the window has moved or resized. + We poll this instead of waiting for ConfigureNotify events, because + when the window manager moves the window, only one ConfigureNotify + comes in: at the end of the motion. If we poll, we can react to the + new position while the window is still being moved. (Assuming the WM + does OpaqueMove, of course.) + */ +static void +check_window_moved (b_state *state) +{ + float oxmin = state->xmin; + float oymin = state->ymin; + float oymax = state->ymax; + int wx, wy; + XGetWindowAttributes (state->dpy, state->window, &state->xgwa); + window_origin (state->dpy, state->window, &wx, &wy); + state->xmin = wx; + state->ymin = wy; + state->xmax = state->xmin + state->xgwa.width; + state->ymax = state->ymin + state->xgwa.height - state->font_height; + + /* Only need to erase the window if the origin moved */ + if (oxmin != state->xmin || oymin != state->ymin) + XClearWindow (state->dpy, state->window); + else if (state->fps_p && oymax != state->ymax) + XFillRectangle (state->dpy, state->window, state->erase_gc, + 0, state->xgwa.height - state->font_height, + state->xgwa.width, state->font_height); + +} + + +/* Returns the position of the mouse relative to the root window. + */ +static void +query_mouse (b_state *state, int *x, int *y) +{ + Window root1, child1; + int mouse_x, mouse_y, root_x, root_y; + unsigned int mask; + if (XQueryPointer (state->dpy, state->window, &root1, &child1, + &root_x, &root_y, &mouse_x, &mouse_y, &mask)) + { + *x = root_x; + *y = root_y; + } + else + { + *x = -9999; + *y = -9999; + } +} + +/* Re-pick the colors of the balls, and the mouse-ball. + */ +static void +recolor (b_state *state) +{ + if (state->fg.flags) + XFreeColors (state->dpy, state->xgwa.colormap, &state->fg.pixel, 1, 0); + if (state->fg2.flags) + XFreeColors (state->dpy, state->xgwa.colormap, &state->fg2.pixel, 1, 0); + + state->fg.flags = DoRed|DoGreen|DoBlue; + state->fg.red = 0x8888 + (random() % 0x8888); + state->fg.green = 0x8888 + (random() % 0x8888); + state->fg.blue = 0x8888 + (random() % 0x8888); + + state->fg2.flags = DoRed|DoGreen|DoBlue; + state->fg2.red = 0x8888 + (random() % 0x8888); + state->fg2.green = 0x8888 + (random() % 0x8888); + state->fg2.blue = 0x8888 + (random() % 0x8888); + + if (XAllocColor (state->dpy, state->xgwa.colormap, &state->fg)) + XSetForeground (state->dpy, state->draw_gc, state->fg.pixel); + + if (XAllocColor (state->dpy, state->xgwa.colormap, &state->fg2)) + XSetForeground (state->dpy, state->draw_gc2, state->fg2.pixel); +} + + +/* Initialize the state structure and various X data. + */ +static b_state * +init_balls (Display *dpy, Window window) +{ + int i; + float extx, exty; + b_state *state = (b_state *) calloc (1, sizeof(*state)); + XGCValues gcv; + + state->dpy = dpy; + state->window = window; + + check_window_moved (state); + + /* Select ButtonRelease events on the external window, if no other app has + already selected it (only one app can select it at a time: BadAccess. */ + if (! (state->xgwa.all_event_masks & ButtonReleaseMask)) + XSelectInput (state->dpy, state->window, + state->xgwa.your_event_mask | ButtonReleaseMask); + + gcv.foreground = get_pixel_resource("foreground", "Foreground", + state->dpy, state->xgwa.colormap); + gcv.background = get_pixel_resource("background", "Background", + state->dpy, state->xgwa.colormap); + state->draw_gc = XCreateGC (state->dpy, state->window, + GCForeground|GCBackground, &gcv); + + gcv.foreground = get_pixel_resource("mouseForeground", "MouseForeground", + state->dpy, state->xgwa.colormap); + state->draw_gc2 = XCreateGC (state->dpy, state->window, + GCForeground|GCBackground, &gcv); + + gcv.foreground = gcv.background; + state->erase_gc = XCreateGC (state->dpy, state->window, + GCForeground|GCBackground, &gcv); + + recolor (state); + + extx = state->xmax - state->xmin; + exty = state->ymax - state->ymin; + + state->count = get_integer_resource ("count", "Count"); + if (state->count < 1) state->count = 20; + + state->max_radius = get_float_resource ("size", "Size") / 2; + if (state->max_radius < 1.0) state->max_radius = 1.0; + + state->accx = get_float_resource ("wind", "Wind"); + if (state->accx < -1.0 || state->accx > 1.0) state->accx = 0; + + state->accy = get_float_resource ("gravity", "Gravity"); + if (state->accy < -1.0 || state->accy > 1.0) state->accy = 0.01; + + state->e = get_float_resource ("friction", "Friction"); + if (state->e < 0.2 || state->e > 1.0) state->e = 0.97; + + state->tc = get_float_resource ("timeScale", "TimeScale"); + if (state->tc <= 0 || state->tc > 10) state->tc = 1.0; + + state->shake_p = get_boolean_resource ("shake", "Shake"); + state->shake_threshold = get_float_resource ("shakeThreshold", + "ShakeThreshold"); + + state->fps_p = get_boolean_resource ("doFPS", "DoFPS"); + if (state->fps_p) + { + XFontStruct *font; + char *fontname = get_string_resource ("font", "Font"); + const char *def_font = "fixed"; + if (!fontname || !*fontname) fontname = (char *)def_font; + font = XLoadQueryFont (dpy, fontname); + if (!font) font = XLoadQueryFont (dpy, def_font); + if (!font) exit(-1); + gcv.font = font->fid; + gcv.foreground = get_pixel_resource("textColor", "Foreground", + state->dpy, state->xgwa.colormap); + state->font_gc = XCreateGC(dpy, window, + GCFont|GCForeground|GCBackground, &gcv); + state->font_height = font->ascent + font->descent; + state->font_baseline = font->descent; + } + + state->r = (float *) malloc (sizeof (*state->r) * (state->count + 1)); + state->vx = (float *) malloc (sizeof (*state->vx) * (state->count + 1)); + state->vy = (float *) malloc (sizeof (*state->vy) * (state->count + 1)); + state->px = (float *) malloc (sizeof (*state->px) * (state->count + 1)); + state->py = (float *) malloc (sizeof (*state->py) * (state->count + 1)); + state->opx = (float *) malloc (sizeof (*state->opx) * (state->count + 1)); + state->opy = (float *) malloc (sizeof (*state->opy) * (state->count + 1)); + + for (i=1; i<=state->count; i++) + { + state->px[i] = frand(extx) + state->xmin; + state->py[i] = frand(exty) + state->ymin; + state->vx[i] = frand(0.2); + state->vy[i] = frand(0.2); + + state->r[i] = state->max_radius; + + /* not quite: */ + /* state->r[i] = 4 + (random() % (int) (state->max_radius - 4)); */ + } + + return state; +} + + +/* Messes with gravity: permute "down" to be in a random direction. + */ +static void +shake (b_state *state) +{ + float a = state->accx; + float b = state->accy; + int i = random() % 4; + + switch (i) + { + case 0: + state->accx = a; + state->accy = b; + break; + case 1: + state->accx = -a; + state->accy = -b; + break; + case 2: + state->accx = b; + state->accy = a; + break; + case 3: + state->accx = -b; + state->accy = -a; + break; + default: + abort(); + break; + } + + state->time_since_shake = 0; + recolor (state); +} + + +/* Look at the current time, and update state->time_since_shake. + Draw the FPS display if desired. + */ +static void +check_wall_clock (b_state *state, float max_d) +{ + static int tick = 0; + state->frame_count++; + + if (tick++ > 20) /* don't call gettimeofday() too often -- it's slow. */ + { + static struct timeval last = { 0, }; + struct timeval now; +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&now, &tzp); +# else + gettimeofday(&now); +# endif + + if (last.tv_sec == 0) + last = now; + + tick = 0; + if (now.tv_sec == last.tv_sec) + return; + + state->time_since_shake += (now.tv_sec - last.tv_sec); + + if (state->fps_p) + { + static char buf[1024]; + float elapsed = ((now.tv_sec + (now.tv_usec / 1000000.0)) - + (last.tv_sec + (last.tv_usec / 1000000.0))); + float fps = state->frame_count / elapsed; + float cps = state->collision_count / elapsed; + + sprintf (buf, " FPS: %.2f Collisions: %.f/frame Max motion: %.3f", + fps, cps/fps, max_d); + + XFillRectangle (state->dpy, state->window, state->erase_gc, + 0, state->xgwa.height - state->font_height, + state->xgwa.width, state->font_height); + XDrawImageString (state->dpy, state->window, state->font_gc, + 0, state->xgwa.height - state->font_baseline, + buf, strlen(buf)); + } + + state->frame_count = 0; + state->collision_count = 0; + last = now; + } +} + + +/* Erases the balls at their previous positions, and draws the new ones. + */ +static void +repaint_balls (b_state *state) +{ + int a; + int x1a, x2a, y1a, y2a; + int x1b, x2b, y1b, y2b; + float max_d = 0; + + for (a=1; a <= state->count; a++) + { + GC gc; + x1a = (state->opx[a] - state->r[a] - state->xmin); + y1a = (state->opy[a] - state->r[a] - state->ymin); + x2a = (state->opx[a] + state->r[a] - state->xmin); + y2a = (state->opy[a] + state->r[a] - state->ymin); + + x1b = (state->px[a] - state->r[a] - state->xmin); + y1b = (state->py[a] - state->r[a] - state->ymin); + x2b = (state->px[a] + state->r[a] - state->xmin); + y2b = (state->py[a] + state->r[a] - state->ymin); + +/* if (x1a != x1b || y1a != y1b) -- leaves turds if we optimize this */ + { + gc = state->erase_gc; + XFillArc (state->dpy, state->window, gc, + x1a, y1a, x2a-x1a, y2a-y1a, + 0, 360*64); + } + + if (state->mouse_ball == a) + gc = state->draw_gc2; + else + gc = state->draw_gc; + + XFillArc (state->dpy, state->window, gc, + x1b, y1b, x2b-x1b, y2b-y1b, + 0, 360*64); + + if (state->shake_p) + { + /* distance this ball moved this frame */ + float d = ((state->px[a] - state->opx[a]) * + (state->px[a] - state->opx[a]) + + (state->py[a] - state->opy[a]) * + (state->py[a] - state->opy[a])); + if (d > max_d) max_d = d; + } + + state->opx[a] = state->px[a]; + state->opy[a] = state->py[a]; + } + + if (state->shake_p && state->time_since_shake > 5) + { + max_d /= state->max_radius; + if (max_d < state->shake_threshold || /* when its stable */ + state->time_since_shake > 30) /* or when 30 secs has passed */ + { + shake (state); + } + } + + check_wall_clock (state, max_d); +} + + +/* Implements the laws of physics: move balls to their new positions. + */ +static void +update_balls (b_state *state) +{ + int a, b; + float d, nx, ny, m, vxa, vya, vxb, vyb, dd, cdx, cdy, cosam; + float dee2 = state->max_radius * state->max_radius * 4; + + check_window_moved (state); + + /* If we're currently tracking the mouse, update that ball first. + */ + if (state->mouse_ball != 0) + { + int mouse_x, mouse_y; + query_mouse (state, &mouse_x, &mouse_y); + state->px[state->mouse_ball] = mouse_x; + state->py[state->mouse_ball] = mouse_y; + state->vx[state->mouse_ball] = + (0.1 * + (state->px[state->mouse_ball] - state->opx[state->mouse_ball]) * + state->tc); + state->vy[state->mouse_ball] = + (0.1 * + (state->py[state->mouse_ball] - state->opy[state->mouse_ball]) * + state->tc); + } + + /* For each ball, compute the influence of every other ball. */ + for (a=1; a <= state->count; a++) + if (a != state->mouse_ball) + for (b=1; b <= state->count; b++) + if (a != b) + { + d = ((state->px[a] - state->px[b]) * + (state->px[a] - state->px[b]) + + (state->py[a] - state->py[b]) * + (state->py[a] - state->py[b])); + if (d < dee2) + { + state->collision_count++; + d = sqrt(d); + vxa = state->vx[a]; + vya = state->vy[a]; + vxb = state->vx[b]; + vyb = state->vy[b]; + nx = state->px[b] - state->px[a]; + ny = state->py[b] - state->py[a]; + if (d < -0.0001 || d > 0.0001) + { + cdx = nx/d; + cdy = ny/d; + dd = state->r[a] + state->r[b] - d; + state->px[a] -= dd*cdx; /* just move them apart */ + state->py[a] -= dd*cdy; /* no physical rationale, sorry */ + state->px[b] += dd*cdx; + state->py[b] += dd*cdy; + m = sqrt (state->vx[a] * state->vx[a] + + state->vy[a] * state->vy[a]); + if (m < -0.0001 || m > 0.0001) /* A's velocity > 0 ? */ + { + cosam = ((cdx * state->vx[a] + cdy * state->vy[a]) * + state->e); + vxa -= cdx * cosam; + vya -= cdy * cosam; /* conserve momentum */ + vxb += cdx * cosam; + vyb += cdy * cosam; + } + m = sqrt (state->vx[b] * + state->vx[b] + + state->vy[b] * + state->vy[b]); + if (m < -0.0001 || m > 0.0001) + { + cosam = ((cdx * state->vx[b] + cdy * state->vy[b]) * + state->e); + vxa += cdx * cosam; + vya += cdy * cosam; + vxb -= cdx * cosam; + vyb -= cdy * cosam; + } + } + state->vx[a] = vxa; + state->vy[a] = vya; + state->vx[b] = vxb; + state->vy[b] = vyb; + } + } + + /* Force all balls to be on screen. + */ + for (a=1; a <= state->count; a++) + { + if (state->px[a] <= (state->xmin + state->r[a])) + { + state->px[a] = state->xmin + state->r[a]; + state->vx[a] = -state->vx[a] * state->e; + } + if (state->px[a] >= (state->xmax - state->r[a])) + { + state->px[a] = state->xmax - state->r[a]; + state->vx[a] = -state->vx[a] * state->e; + } + if (state->py[a] <= (state->ymin + state->r[a])) + { + state->py[a] = state->ymin + state->r[a]; + state->vy[a] = -state->vy[a] * state->e; + } + if (state->py[a] >= (state->ymax - state->r[a])) + { + state->py[a] = state->ymax - state->r[a]; + state->vy[a] = -state->vy[a] * state->e; + } + } + + /* Apply gravity to all balls. + */ + for (a=1; a <= state->count; a++) + if (a != state->mouse_ball) + { + state->vx[a] += state->accx * state->tc; + state->vy[a] += state->accy * state->tc; + state->px[a] += state->vx[a] * state->tc; + state->py[a] += state->vy[a] * state->tc; + } +} + + +/* Handle X events, specifically, allow a ball to be picked up with the mouse. + */ +static void +handle_events (b_state *state) +{ + XSync (state->dpy, False); + while (XPending (state->dpy)) + { + XEvent event; + XNextEvent (state->dpy, &event); + if (event.xany.type == ButtonPress) + { + int i; + float fmx = event.xbutton.x_root; + float fmy = event.xbutton.y_root; + if (state->mouse_ball != 0) /* second down-click? drop the ball. */ + { + state->mouse_ball = 0; + return; + } + else + for (i=1; i <= state->count; i++) + { + float d = ((state->px[i] - fmx) * (state->px[i] - fmx) + + (state->py[i] - fmy) * (state->py[i] - fmy)); + float r = state->r[i]; + if (d < r*r) + { + state->mouse_ball = i; + return; + } + } + } + else if (event.xany.type == ButtonRelease) /* drop the ball */ + { + state->mouse_ball = 0; + return; + } + else if (event.xany.type == ConfigureNotify) + { + /* This is redundant, since we poll this every iteration. */ + check_window_moved (state); + } + + screenhack_handle_event (state->dpy, &event); + } +} + + +char *progclass = "FluidBalls"; + +char *defaults [] = { + ".background: black", + ".textColor: yellow", + ".font: -*-helvetica-*-r-*-*-*-180-*-*-p-*-*-*", + "*delay: 10000", + "*count: 300", + "*size: 25", + "*gravity: 0.01", + "*wind: 0.00", + "*friction: 0.97", + "*timeScale: 1.0", + "*doFPS: False", + "*shake: True", + "*shakeThreshold: 0.015", + 0 +}; + +XrmOptionDescRec options [] = { + { "-delay", ".delay", XrmoptionSepArg, 0 }, + { "-count", ".count", XrmoptionSepArg, 0 }, + { "-size", ".size", XrmoptionSepArg, 0 }, + { "-count", ".count", XrmoptionSepArg, 0 }, + { "-gravity", ".gravity", XrmoptionSepArg, 0 }, + { "-wind", ".wind", XrmoptionSepArg, 0 }, + { "-friction", ".friction", XrmoptionSepArg, 0 }, + { "-fps", ".doFPS", XrmoptionNoArg, "True" }, + { "-no-fps", ".doFPS", XrmoptionNoArg, "False" }, + { "-shake", ".shake", XrmoptionNoArg, "True" }, + { "-no-shake", ".shake", XrmoptionNoArg, "False" }, + { 0, 0, 0, 0 } +}; + +void +screenhack (Display *dpy, Window window) +{ + b_state *state = init_balls(dpy, window); + int delay = get_integer_resource ("delay", "Integer"); + + while (1) + { + repaint_balls(state); + update_balls(state); + + XSync (dpy, False); + handle_events (state); + if (delay) usleep (delay); + } +} diff --git a/hacks/forest.c b/hacks/forest.c index ce57b7b9..5882bb34 100644 --- a/hacks/forest.c +++ b/hacks/forest.c @@ -1,226 +1,241 @@ -/* -*- Mode: C; tab-width: 4 -*- */ -/* forest --- binary trees in a fractal forest */ - -#if !defined( lint ) && !defined( SABER ) -static const char sccsid[] = "@(#)forest.c 5.00 2000/11/01 xlockmore"; - -#endif - -/*- - * Copyright (c) 1995 Pascal Pensa - * - * Original idea : Guillaume Ramey - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation. +/* forest.c (aka xtree.c), Copyright (c) 1999 + * Peter Baumung * - * This file is provided AS IS with no warranties of any kind. The author - * shall have no liability with respect to the infringement of copyrights, - * trade secrets or any patents by this file or any part thereof. In no - * event will the author be liable for any lost revenue or profits or - * other special, indirect and consequential damages. - * - * Revision History: - * 01-Nov-2000: Allocation checks - * 10-May-1997: Compatible with xscreensaver + * Most code taken from + * xscreensaver, Copyright (c) 1992, 1995, 1997 + * Jamie Zawinski * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. */ -#ifdef STANDALONE -#define MODE_forest -#define PROGCLASS "Forest" -#define HACK_INIT init_forest -#define HACK_DRAW draw_forest -#define forest_opts xlockmore_opts -#define DEFAULTS "*delay: 500000 \n" \ - "*count: 100 \n" \ - "*cycles: 200 \n" \ - "*ncolors: 20 \n" -#define UNIFORM_COLORS -#include "xlockmore.h" /* in xscreensaver distribution */ -#else /* STANDALONE */ -#include "xlock.h" /* in xlockmore distribution */ - -#endif /* STANDALONE */ - -#ifdef MODE_forest - -ModeSpecOpt forest_opts = -{0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL}; +#include "config.h" -#ifdef USE_MODULES -ModStruct forest_description = -{"forest", "init_forest", "draw_forest", "release_forest", - "refresh_forest", "init_forest", (char *) NULL, &forest_opts, - 400000, 100, 200, 1, 64, 1.0, "", - "Shows binary trees of a fractal forest", 0, NULL}; +/* ****************************** NOTE ****************************** -#endif + This is not the xlockmore version of forest, but a much better + looking rewrite. Be careful not to delete it in a merging frenzy... -#define MINTREES 1 - -#define MINHEIGHT 20 /* Tree height range */ -#define MAXHEIGHT 40 - -#define MINANGLE 15 /* (degree) angle between soon */ -#define MAXANGLE 35 -#define RANDANGLE 15 /* (degree) Max random angle from default */ - -#define REDUCE 90 /* Height % from father */ - -#define ITERLEVEL 10 /* Tree iteration */ - -#define COLORSPEED 2 /* Color increment */ - -/* degree to radian */ -#define DEGTORAD(x) (((float)(x)) * M_PI / 180.0) + ********************************************************************** + */ -#define RANGE_RAND(min,max) ((min) + NRAND((max) - (min))) +#ifdef STANDALONE +# define PROGCLASS "Forest" /*"XTree"*/ +# define HACK_INIT init_trees +# define HACK_DRAW draw_trees +# define trees_opts xlockmore_opts +# define DEFAULTS "*delay: 500000 \n" \ + "*ncolors: 20 \n" \ + "*eraseSpeed: 400 \n" \ + "*eraseMode: -1 \n" \ + "*installColormap False" +# include "xlockmore.h" /* from the xscreensaver distribution */ +#else /* !STANDALONE */ +# include "xlock.h" /* from the xlockmore distribution */ +#endif /* !STANDALONE */ + +ModeSpecOpt trees_opts = {0, NULL, 0, NULL, NULL}; typedef struct { - int width; - int height; - int time; /* up time */ - int ntrees; -} foreststruct; - -static foreststruct *forests = (foreststruct *) NULL; - -static void -draw_tree(ModeInfo * mi, - short int x, short int y, short int len, - float a, float as, short int c, short int level) - /* Father's end */ - /* Length */ - /* color */ - /* Height level */ - /* Father's angle */ - /* Father's angle step */ -{ - Display *display = MI_DISPLAY(mi); - Window window = MI_WINDOW(mi); - GC gc = MI_GC(mi); - short x_1, y_1, x_2, y_2; - float a1, a2; - - /* left */ - - a1 = a + as + DEGTORAD(NRAND(2 * RANDANGLE) - RANDANGLE); - - x_1 = x + (short) (COSF(a1) * ((float) len)); - y_1 = y + (short) (SINF(a1) * ((float) len)); - - /* right */ - - a2 = a - as + DEGTORAD(NRAND(2 * RANDANGLE) - RANDANGLE); - - x_2 = x + (short) (COSF(a2) * ((float) len)); - y_2 = y + (short) (SINF(a2) * ((float) len)); - - if (MI_NPIXELS(mi) > 2) { - XSetForeground(display, gc, MI_PIXEL(mi, c)); - c = (c + COLORSPEED) % MI_NPIXELS(mi); - } else - XSetForeground(display, gc, MI_WHITE_PIXEL(mi)); - - XDrawLine(display, window, gc, x, y, x_1, y_1); - XDrawLine(display, window, gc, x, y, x_2, y_2); - - if (level < 2) { - XDrawLine(display, window, gc, x + 1, y, x_1 + 1, y_1); - XDrawLine(display, window, gc, x + 1, y, x_2 + 1, y_2); - } - len = (len * REDUCE * 10) / 1000; - - if (level < ITERLEVEL) { - draw_tree(mi, x_1, y_1, len, a1, as, c, level + 1); - draw_tree(mi, x_2, y_2, len, a2, as, c, level + 1); - } + int x; + int y; + int thick; + double size; + long color; + int toDo; + int season; +} treestruct; + +static treestruct *trees = NULL; + +XColor colors[20]; +int color; + +static long colorM[12] = {0xff0000, 0xff8000, 0xffff00, 0x80ff00, + 0x00ff00, 0x00ff80, 0x00ffff, 0x0080ff, + 0x0000ff, 0x8000ff, 0xff00ff, 0xff0080}; + +static long colorV[12] = {0x0a0000, 0x0a0500, 0x0a0a00, 0x050a00, + 0x000a00, 0x000a05, 0x000a0a, 0x00050a, + 0x00000a, 0x05000a, 0x0a000a, 0x0a0005}; + +void init_trees(ModeInfo * mi) { + unsigned long pixels[20]; + treestruct *tree; + Display *display = MI_DISPLAY(mi); + GC gc = MI_GC(mi); + int i; + + if (trees == NULL) { + trees = (treestruct *) calloc(MI_NUM_SCREENS(mi), sizeof (treestruct)); + if (trees == NULL) { + return; + } + + if (mi->npixels > 20) { + printf("%d colors selected. Setting limit to 20...\n", mi->npixels); + mi->npixels = 20; + } + + if (mi->npixels < 4) { + for (i = 0; i < mi->npixels; i++) { + colors[i].red = 65535 * (i & 1); + colors[i].green = 65535 * (i & 1); + colors[i].blue = 65535 * (i & 1); + colors[i].flags = DoRed | DoGreen | DoBlue; + } + } else { + if (mi->npixels < 8) { + for (i = 0; i < mi->npixels; i++) { + colors[i].red = 32768 + 4096 * (i % 4); + colors[i].green = 32768 + 4096 * (i % 4); + colors[i].blue = 32768 + 4096 * (i % 4); + colors[i].flags = DoRed | DoGreen | DoBlue; + } + } else { + for (i = 0; i < mi->npixels; i++) { + colors[i].red = 24576 + 4096 * (i % 4); + colors[i].green = 10240 + 2048 * (i % 4); + colors[i].blue = 0; + colors[i].flags = DoRed | DoGreen | DoBlue; + } + } + } + + for (i = 0; i < mi->npixels; i++) + if (!XAllocColor(display, mi->xgwa.colormap, &colors[i])) break; + color = i; + + XSetForeground(display, gc, colors[1].pixel); + } + + XClearWindow(display, MI_WINDOW(mi)); + XSetLineAttributes(display, gc, 2, LineSolid, CapButt, JoinMiter); + tree = &trees[MI_SCREEN(mi)]; + tree->toDo = 25; + tree->season = NRAND(12); + + for (i = 4; i < mi->npixels; i++) { + int sIndex = (tree->season + (i-4) / 4) % 12; + long color = colorM[sIndex] - 2 * colorV[sIndex] * (i % 4); + colors[i].red = (color & 0xff0000) / 256; + colors[i].green = (color & 0x00ff00); + colors[i].blue = (color & 0x0000ff) * 256; + colors[i].flags = DoRed | DoGreen | DoBlue; + } + + for (i = 0; i < color; i++) + pixels[i] = colors[i].pixel; + + XFreeColors(display, mi->xgwa.colormap, pixels, mi->npixels, 0L); + + for (i = 0; i < mi->npixels; i++) + if (!XAllocColor(display, mi->xgwa.colormap, &colors[i])) break; + + color = i; } -void -init_forest(ModeInfo * mi) -{ - foreststruct *fp; - - if (forests == NULL) { - if ((forests = (foreststruct *) calloc(MI_NUM_SCREENS(mi), - sizeof (foreststruct))) == NULL) - return; - } - fp = &forests[MI_SCREEN(mi)]; - - fp->width = MI_WIDTH(mi); - fp->height = MI_HEIGHT(mi); - fp->time = 0; - - fp->ntrees = MI_COUNT(mi); - if (fp->ntrees < -MINTREES) - fp->ntrees = NRAND(-fp->ntrees - MINTREES + 1) + MINTREES; - else if (fp->ntrees < MINTREES) - fp->ntrees = MINTREES; - - MI_CLEARWINDOW(mi); +double rRand(double a, double b) { + return (a+(b-a)*NRAND(10001)/10000.0); } -void -draw_forest(ModeInfo * mi) -{ - Display *display = MI_DISPLAY(mi); - GC gc = MI_GC(mi); - short x, y, x_2, y_2, len, c = 0; - float a, as; - foreststruct *fp; - - if (forests == NULL) - return; - fp = &forests[MI_SCREEN(mi)]; - - MI_IS_DRAWN(mi) = True; - if (fp->time < fp->ntrees) { - - x = RANGE_RAND(0, fp->width); - y = RANGE_RAND(0, fp->height + MAXHEIGHT); - a = -M_PI / 2.0 + DEGTORAD(NRAND(2 * RANDANGLE) - RANDANGLE); - as = DEGTORAD(RANGE_RAND(MINANGLE, MAXANGLE)); - len = ((RANGE_RAND(MINHEIGHT, MAXHEIGHT) * (fp->width / 20)) / 50) + 2; - - if (MI_NPIXELS(mi) > 2) { - c = NRAND(MI_NPIXELS(mi)); - XSetForeground(display, gc, MI_PIXEL(mi, c)); - c = (c + COLORSPEED) % MI_NPIXELS(mi); - } else - XSetForeground(display, gc, MI_WHITE_PIXEL(mi)); - - x_2 = x + (short) (COSF(a) * ((float) len)); - y_2 = y + (short) (SINF(a) * ((float) len)); - - XDrawLine(display, MI_WINDOW(mi), gc, x, y, x_2, y_2); - XDrawLine(display, MI_WINDOW(mi), gc, x + 1, y, x_2 + 1, y_2); - - draw_tree(mi, x_2, y_2, (len * REDUCE) / 100, a, as, c, 1); - } - if (++fp->time > MI_CYCLES(mi)) { - init_forest(mi); - } +void draw_line(ModeInfo * mi, + int x1, int y1, int x2, int y2, + double angle, int widths, int widthe) { + + Display *display = MI_DISPLAY(mi); + GC gc = MI_GC(mi); + double sns = 0.5*widths*sin(angle + M_PI_2); + double css = 0.5*widths*cos(angle + M_PI_2); + double sne = 0.5*widthe*sin(angle + M_PI_2); + double cse = 0.5*widthe*cos(angle + M_PI_2); + + int xs1 = (int) (x1-sns); + int xs2 = (int) (x1+sns); + int ys1 = (int) (y1-css); + int ys2 = (int) (y1+css); + int xe1 = (int) (x2-sne); + int xe2 = (int) (x2+sne); + int ye1 = (int) (y2-cse); + int ye2 = (int) (y2+cse); + int i; + + for (i = 0; i < widths; i++) { + if (color >= 4) + XSetForeground(display, gc, colors[i*4/widths].pixel); + XDrawLine(display, MI_WINDOW(mi), gc, + xs1+(xs2-xs1)*i/widths, ys1+(ys2-ys1)*i/widths, + xe1+(xe2-xe1)*i/widths, ye1+(ye2-ye1)*i/widths); + } } -void -release_forest(ModeInfo * mi) -{ - if (forests != NULL) { - (void) free((void *) forests); - forests = (foreststruct *) NULL; - } +void draw_tree_rec(ModeInfo * mi, double thick, int x, int y, double angle) { + treestruct *tree = &trees[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + GC gc = MI_GC(mi); + int length = (24+NRAND(12))*tree->size; + int a = (int) (x - length*sin(angle)); + int b = (int) (y - length*cos(angle)); + int i; + + draw_line(mi, x, y, a, b, angle, thick*tree->size, 0.68*thick*tree->size); + + if (thick > 2) { + draw_tree_rec(mi, 0.68*thick, a, b, 0.8*angle+rRand(-0.2, 0.2)); + if (thick < tree->thick-1) { + draw_tree_rec(mi, 0.68*thick, a, b, angle+rRand(0.2, 0.9)); + draw_tree_rec(mi, 0.68*thick, (a+x)/2, (b+y)/2, angle-rRand(0.2, 0.9)); + } + } + + if (thick < 0.5*tree->thick) { + int nleaf = 12 + NRAND(4); + XArc leaf[16]; + for (i = 0; i < nleaf; i++) { + leaf[i].x = a + (int) (tree->size * rRand(-12, 12)); + leaf[i].y = b + (int) (tree->size * rRand(-12, 12)); + leaf[i].width = (int) (tree->size * rRand(2, 6)); + leaf[i].height = leaf[i].width; + leaf[i].angle1 = 0; + leaf[i].angle2 = 360 * 64; + } + if (mi->npixels >= 4) + XSetForeground(display, gc, colors[tree->color+NRAND(4)].pixel); + XFillArcs(display, MI_WINDOW(mi), gc, leaf, nleaf); + } } -void -refresh_forest(ModeInfo * mi) -{ - MI_CLEARWINDOW(mi); +void draw_trees(ModeInfo * mi) { + treestruct *tree = &trees[MI_SCREEN(mi)]; + int width = MI_WIN_WIDTH(mi); + int height = MI_WIN_HEIGHT(mi); + + if (--(tree->toDo) == 0) { + usleep(3000000); + init_trees(mi); + } + + tree->x = NRAND(width); + tree->y = (int) (1.25 * height * (1 - tree->toDo / 23.0)); + tree->thick = rRand(7, 12); + tree->size = height / 480.0; + if (color < 8) { + tree->color = 0; + } else { + tree->color = 4 * (1 + NRAND(color / 4 - 1)); + } + + draw_tree_rec(mi, tree->thick, tree->x, tree->y, rRand(-0.1, 0.1)); } -#endif /* MODE_forest */ +void release_trees(ModeInfo * mi) { + if (trees != NULL) { + (void) free((void *) trees); + trees = NULL; + } +} diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in index 5b8f0280..9e01c299 100644 --- a/hacks/glx/Makefile.in +++ b/hacks/glx/Makefile.in @@ -79,7 +79,8 @@ SRCS = xscreensaver-gl-helper.c \ stonerview-view.c starwars.c glut_stroke.c glut_swidth.c \ gltext.c molecule.c dangerball.c sphere.c tube.c circuit.c \ menger.c engine.c flipscreen3d.c font-ximage.c \ - grab-ximage.c glsnake.c boxed.c glforestfire.c sballs.c + grab-ximage.c glsnake.c boxed.c glforestfire.c sballs.c \ + cubenetic.c OBJS = xscreensaver-gl-helper.o \ atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \ @@ -95,13 +96,14 @@ OBJS = xscreensaver-gl-helper.o \ stonerview-view.o starwars.o glut_stroke.o glut_swidth.o \ gltext.o molecule.o dangerball.o sphere.o tube.o circuit.o \ menger.o engine.o flipscreen3d.o font-ximage.o \ - grab-ximage.o glsnake.o boxed.o glforestfire.o sballs.o + grab-ximage.o glsnake.o boxed.o glforestfire.o sballs.o \ + cubenetic.o GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \ morph3d rubik atlantis lament bubble3d glplanet pulsar \ sierpinski3d gflux stonerview starwars gltext molecule \ dangerball circuit menger engine flipscreen3d glsnake boxed \ - glforestfire sballs + glforestfire sballs cubenetic GLE_EXES = extrusion GL_UTIL_EXES = xscreensaver-gl-helper HACK_EXES = @GL_EXES@ @GLE_EXES@ @@ -385,6 +387,10 @@ glforestfire: glforestfire.o $(HACK_OBJS) xpm-ximage.o sballs: sballs.o $(HACK_OBJS) xpm-ximage.o $(CC_HACK) -o $@ $@.o $(HACK_OBJS) xpm-ximage.o $(XPM_LIBS) +cubenetic: cubenetic.o $(HACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) + + # This one works differently (it's not xlock-like.) # STONER_OBJS=stonerview.o stonerview-move.o stonerview-osc.o stonerview-view.o \ @@ -464,7 +470,7 @@ fps.o: ../../config.h xpm-ximage.o: ../../config.h glplanet.o: ../../config.h glplanet.o: $(srcdir)/sphere.h -glplanet.o: $(HACK_SRC)/images/earth.xbm +glplanet.o: $(HACK_SRC)/images/earth.xpm glplanet.o: $(srcdir)/xpm-ximage.h pulsar.o: ../../config.h extrusion.o: ../../config.h @@ -507,7 +513,6 @@ dangerball.o: ../../config.h dangerball.o: $(srcdir)/sphere.h dangerball.o: $(srcdir)/tube.h sphere.o: ../../config.h -sphere.o: $(srcdir)/tube.h tube.o: ../../config.h tube.o: $(srcdir)/tube.h circuit.o: ../../config.h @@ -529,4 +534,5 @@ sballs.o: ../../config.h sballs.o: $(srcdir)/xpm-ximage.h sballs.o: $(HACK_SRC)/images/sball.xpm sballs.o: $(HACK_SRC)/images/sball-bg.xpm +cubenetic.o: ../../config.h diff --git a/hacks/glx/boxed.c b/hacks/glx/boxed.c index b973f083..30d5f6f8 100644 --- a/hacks/glx/boxed.c +++ b/hacks/glx/boxed.c @@ -1071,8 +1071,19 @@ pinit(ModeInfo * mi) glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 256, 256, - GL_RGB, GL_UNSIGNED_BYTE, gp->tex1); + + clear_gl_error(); + i = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 256, 256, + GL_RGB, GL_UNSIGNED_BYTE, gp->tex1); + if (i) + { + const char *s = gluErrorString (i); + fprintf (stderr, "%s: error mipmapping texture: %s\n", + progname, (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); diff --git a/hacks/glx/cage.c b/hacks/glx/cage.c index a2983bcd..5f0e4e44 100644 --- a/hacks/glx/cage.c +++ b/hacks/glx/cage.c @@ -319,6 +319,7 @@ reshape_cage(ModeInfo * mi, int width, int height) static void pinit(void) { + int status; glClearDepth(1.0); glClearColor(0.0, 0.0, 0.0, 1.0); @@ -345,8 +346,20 @@ pinit(void) glEnable(GL_CULL_FACE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, WoodTextureWidth, WoodTextureHeight, - GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, + WoodTextureWidth, WoodTextureHeight, + GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + if (status) + { + const char *s = gluErrorString (status); + fprintf (stderr, "%s: error mipmapping texture: %s\n", + progname, (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); diff --git a/hacks/glx/circuit.c b/hacks/glx/circuit.c index 0c28e9fb..faa30df2 100644 --- a/hacks/glx/circuit.c +++ b/hacks/glx/circuit.c @@ -1708,7 +1708,7 @@ TexNum * fonttexturealloc (const char *str, float *fg, float *bg) { static char *strings[50]; /* max of 40 textures */ static int w[50], h[50]; - int i; + int i, status; static int init; XImage *ximage; char *c; @@ -1737,8 +1737,20 @@ TexNum * fonttexturealloc (const char *str, float *fg, float *bg) for (i = 1 ; strings[i] != NULL ; i++); /* set i to the next unused value */ glBindTexture(GL_TEXTURE_2D, i); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - gluBuild2DMipmaps(GL_TEXTURE_2D, 4, ximage->width, ximage->height, GL_RGBA, - GL_UNSIGNED_BYTE, ximage->data); + + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 4, ximage->width, ximage->height, + GL_RGBA, GL_UNSIGNED_BYTE, ximage->data); + if (status) + { + const char *s = gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, ximage->width, ximage->height, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + t = malloc(sizeof(TexNum)); t->w = ximage->width; t->h = ximage->height; diff --git a/hacks/glx/cubenetic.c b/hacks/glx/cubenetic.c new file mode 100644 index 00000000..4b4815e3 --- /dev/null +++ b/hacks/glx/cubenetic.c @@ -0,0 +1,662 @@ +/* cubenetic, Copyright (c) 2002 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +#include + +extern XtAppContext app; + +#define PROGCLASS "Cubenetic" +#define HACK_INIT init_cube +#define HACK_DRAW draw_cube +#define HACK_RESHAPE reshape_cube +#define ccs_opts xlockmore_opts + +#define DEF_SPIN "XYZ" +#define DEF_WANDER "True" +#define DEF_TEXTURE "True" + +#define DEF_WAVE_COUNT "3" +#define DEF_WAVE_SPEED "80" +#define DEF_WAVE_RADIUS "512" + +#define DEFAULTS "*delay: 30000 \n" \ + "*count: 5 \n" \ + "*showFPS: False \n" \ + "*wireframe: False \n" \ + "*spin: " DEF_SPIN "\n" \ + "*wander: " DEF_WANDER "\n" \ + "*texture: " DEF_TEXTURE"\n" \ + "*waves: " DEF_WAVE_COUNT "\n" \ + "*waveSpeed: " DEF_WAVE_SPEED "\n" \ + "*waveRadius: " DEF_WAVE_RADIUS "\n" \ + +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + +#include "xlockmore.h" +#include "colors.h" +#include + +#ifdef USE_GL /* whole file */ + +#include + +typedef struct { + int color; + GLfloat x, y, z; + GLfloat w, h, d; + int frame; + GLfloat dx, dy, dz; + GLfloat dw, dh, dd; +} cube; + +typedef struct { + int x, y; + double xth, yth; +} wave_src; + +typedef struct { + int nwaves; + int radius; + int speed; + wave_src *srcs; + int *heights; +} waves; + + +typedef struct { + GLXContext *glx_context; + + GLfloat rotx, roty, rotz; /* current object rotation */ + GLfloat dx, dy, dz; /* current rotational velocity */ + GLfloat ddx, ddy, ddz; /* current rotational acceleration */ + GLfloat d_max; /* max velocity */ + Bool spin_x, spin_y, spin_z; + + GLuint cube_list; + GLuint texture_id; + int ncubes; + cube *cubes; + waves *waves; + + int texture_width, texture_height; + unsigned char *texture; + + int ncolors; + XColor *cube_colors; + XColor *texture_colors; + +} cube_configuration; + +static cube_configuration *ccs = NULL; + +static char *do_spin; +static Bool do_wander; +static Bool do_texture; + +static int wave_count; +static int wave_speed; +static int wave_radius; +static int texture_size = 256; + +static XrmOptionDescRec opts[] = { + { "-spin", ".spin", XrmoptionSepArg, 0 }, + { "+spin", ".spin", XrmoptionNoArg, "" }, + { "-wander", ".wander", XrmoptionNoArg, "True" }, + { "+wander", ".wander", XrmoptionNoArg, "False" }, + {"-texture", ".texture", XrmoptionNoArg, (caddr_t) "true" }, + {"+texture", ".texture", XrmoptionNoArg, (caddr_t) "false" }, + {"-waves", ".waves", XrmoptionSepArg, 0 }, + {"-wave-speed", ".waveSpeed", XrmoptionSepArg, 0 }, + {"-wave-radius", ".waveRadius", XrmoptionSepArg, 0 }, +}; + +static argtype vars[] = { + {(caddr_t *) &do_spin, "spin", "Spin", DEF_SPIN, t_String}, + {(caddr_t *) &do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, + {(caddr_t *) &do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, + {(caddr_t *) &wave_count, "waves", "Waves", DEF_WAVE_COUNT, t_Int}, + {(caddr_t *) &wave_speed, "waveSpeed", "WaveSpeed", DEF_WAVE_SPEED, t_Int}, + {(caddr_t *) &wave_radius,"waveRadius","WaveRadius", DEF_WAVE_RADIUS,t_Int}, +}; + +ModeSpecOpt ccs_opts = {countof(opts), opts, countof(vars), vars, NULL}; + + +static void +unit_cube (Bool wire) +{ + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* front */ + glNormal3f (0, 0, 1); + glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, 0.5); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, 0.5); + glTexCoord2f(1, 1); glVertex3f (-0.5, -0.5, 0.5); + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* back */ + glNormal3f (0, 0, -1); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f ( 0.5, -0.5, -0.5); + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* left */ + glNormal3f (-1, 0, 0); + glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, 0.5); + glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f (-0.5, -0.5, 0.5); + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* right */ + glNormal3f (1, 0, 0); + glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, 0.5); + glEnd(); + + if (wire) return; + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* top */ + glNormal3f (0, 1, 0); + glTexCoord2f(0, 0); glVertex3f ( 0.5, 0.5, 0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, 0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f (-0.5, 0.5, -0.5); + glTexCoord2f(1, 0); glVertex3f (-0.5, 0.5, 0.5); + glEnd(); + + glBegin (wire ? GL_LINE_LOOP : GL_QUADS); /* bottom */ + glNormal3f (0, -1, 0); + glTexCoord2f(1, 0); glVertex3f (-0.5, -0.5, 0.5); + glTexCoord2f(0, 0); glVertex3f (-0.5, -0.5, -0.5); + glTexCoord2f(0, 1); glVertex3f ( 0.5, -0.5, -0.5); + glTexCoord2f(1, 1); glVertex3f ( 0.5, -0.5, 0.5); + glEnd(); +} + + + +/* Window management, etc + */ +void +reshape_cube (ModeInfo *mi, int width, int height) +{ + GLfloat h = (GLfloat) height / (GLfloat) width; + + glViewport (0, 0, (GLint) width, (GLint) height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective( 30.0, 1/h, 1.0, 100.0 ); + gluLookAt( 0.0, 0.0, 15.0, + 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -15.0); + + glClear(GL_COLOR_BUFFER_BIT); +} + + +/* lifted from lament.c */ +#define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n)))) +#define RANDSIGN() ((random() & 1) ? 1 : -1) + +static void +rotate(GLfloat *pos, GLfloat *v, GLfloat *dv, GLfloat max_v) +{ + double ppos = *pos; + + /* tick position */ + if (ppos < 0) + ppos = -(ppos + *v); + else + ppos += *v; + + if (ppos > 1.0) + ppos -= 1.0; + else if (ppos < 0) + ppos += 1.0; + + if (ppos < 0) abort(); + if (ppos > 1.0) abort(); + *pos = (*pos > 0 ? ppos : -ppos); + + /* accelerate */ + *v += *dv; + + /* clamp velocity */ + if (*v > max_v || *v < -max_v) + { + *dv = -*dv; + } + /* If it stops, start it going in the other direction. */ + else if (*v < 0) + { + if (random() % 4) + { + *v = 0; + + /* keep going in the same direction */ + if (random() % 2) + *dv = 0; + else if (*dv < 0) + *dv = -*dv; + } + else + { + /* reverse gears */ + *v = -*v; + *dv = -*dv; + *pos = -*pos; + } + } + + /* Alter direction of rotational acceleration randomly. */ + if (! (random() % 120)) + *dv = -*dv; + + /* Change acceleration very occasionally. */ + if (! (random() % 200)) + { + if (*dv == 0) + *dv = 0.00001; + else if (random() & 1) + *dv *= 1.2; + else + *dv *= 0.8; + } +} + + + +/* Waves. + Adapted from ../hacks/interference.c by Hannu Mallat. + */ + +static void +init_wave (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + waves *ww; + int i; + cc->waves = ww = (waves *) calloc (sizeof(*cc->waves), 1); + ww->nwaves = wave_count; + ww->radius = wave_radius; + ww->speed = wave_speed; + ww->heights = (int *) calloc (sizeof(*ww->heights), ww->radius); + ww->srcs = (wave_src *) calloc (sizeof(*ww->srcs), ww->nwaves); + + for (i = 0; i < ww->radius; i++) + { + float max = (cc->ncolors * (ww->radius - i) / (float) ww->radius); + ww->heights[i] = ((max + max * cos(i / 50.0)) / 2.0); + } + + for (i = 0; i < ww->nwaves; i++) + { + ww->srcs[i].xth = frand(2.0) * M_PI; + ww->srcs[i].yth = frand(2.0) * M_PI; + } +} + +static void +interference (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + waves *ww = cc->waves; + int x, y, i; + + /* Move the wave origins around + */ + for (i = 0; i < ww->nwaves; i++) + { + ww->srcs[i].xth += (ww->speed / 1000.0); + if (ww->srcs[i].xth > 2*M_PI) + ww->srcs[i].xth -= 2*M_PI; + ww->srcs[i].yth += (ww->speed / 1000.0); + if (ww->srcs[i].yth > 2*M_PI) + ww->srcs[i].yth -= 2*M_PI; + + ww->srcs[i].x = (cc->texture_width/2 + + (cos (ww->srcs[i].xth) * + cc->texture_width / 2)); + ww->srcs[i].y = (cc->texture_height/2 + + (cos (ww->srcs[i].yth) * + cc->texture_height / 2)); + } + + /* Compute the effect of the waves on each pixel, + and generate the output map. + */ + for (y = 0; y < cc->texture_height; y++) + for (x = 0; x < cc->texture_width; x++) + { + int result = 0; + unsigned char *o; + for (i = 0; i < ww->nwaves; i++) + { + int dx = x - ww->srcs[i].x; + int dy = y - ww->srcs[i].y; + int dist = sqrt (dx*dx + dy*dy); + result += (dist > ww->radius ? 0 : ww->heights[dist]); + } + result %= cc->ncolors; + + o = cc->texture + (((y * cc->texture_width) + x) << 2); + o[0] = (cc->texture_colors[result].red >> 8); + o[1] = (cc->texture_colors[result].green >> 8); + o[2] = (cc->texture_colors[result].blue >> 8); + /* o[3] = 0xFF; */ + } +} + + +/* Textures + */ + +static void +init_texture (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + int i; + + glEnable(GL_TEXTURE_2D); + + clear_gl_error(); + glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + glGenTextures (1, &cc->texture_id); + glBindTexture (GL_TEXTURE_2D, cc->texture_id); + check_gl_error("texture binding"); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); + glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); + glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + check_gl_error("texture initialization"); + + cc->texture_width = texture_size; + cc->texture_height = texture_size; + + i = texture_size * texture_size * 4; + cc->texture = (char *) malloc (i); + memset (cc->texture, 0xFF, i); +} + + +static void +shuffle_texture (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + interference (mi); + clear_gl_error(); + glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, + cc->texture_width, cc->texture_height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, + cc->texture); + check_gl_error("texture"); +} + + +void +init_cube (ModeInfo *mi) +{ + int i; + cube_configuration *cc; + int wire = MI_IS_WIREFRAME(mi); + + if (!ccs) { + ccs = (cube_configuration *) + calloc (MI_NUM_SCREENS(mi), sizeof (cube_configuration)); + if (!ccs) { + fprintf(stderr, "%s: out of memory\n", progname); + exit(1); + } + } + + cc = &ccs[MI_SCREEN(mi)]; + + if ((cc->glx_context = init_GL(mi)) != NULL) { + reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + + if (!wire) + { + static GLfloat pos[4] = {1.0, 0.5, 1.0, 0.0}; + static GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0}; + static GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + } + + + { + char *s = do_spin; + while (*s) + { + if (*s == 'x' || *s == 'X') cc->spin_x = 1; + else if (*s == 'y' || *s == 'Y') cc->spin_y = 1; + else if (*s == 'z' || *s == 'Z') cc->spin_z = 1; + else + { + fprintf (stderr, + "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n", + progname, do_spin); + exit (1); + } + s++; + } + } + + cc->rotx = frand(1.0) * RANDSIGN(); + cc->roty = frand(1.0) * RANDSIGN(); + cc->rotz = frand(1.0) * RANDSIGN(); + + /* bell curve from 0-6 degrees, avg 3 */ + cc->dx = (frand(0.7) + frand(0.7) + frand(0.7)) / (360/2); + cc->dy = (frand(0.7) + frand(0.7) + frand(0.7)) / (360/2); + cc->dz = (frand(0.7) + frand(0.7) + frand(0.7)) / (360/2); + + cc->d_max = cc->dx * 2; + + cc->ddx = 0.00006 + frand(0.00003); + cc->ddy = 0.00006 + frand(0.00003); + cc->ddz = 0.00006 + frand(0.00003); + + cc->ncolors = 256; + cc->texture_colors = (XColor *) calloc(cc->ncolors, sizeof(XColor)); + cc->cube_colors = (XColor *) calloc(cc->ncolors, sizeof(XColor)); + + { + double H[3], S[3], V[3]; + int shift = 60; + H[0] = frand(360.0); + H[1] = ((H[0] + shift) < 360) ? (H[0]+shift) : (H[0] + shift - 360); + H[2] = ((H[1] + shift) < 360) ? (H[1]+shift) : (H[1] + shift - 360); + S[0] = S[1] = S[2] = 1.0; + V[0] = V[1] = V[2] = 1.0; + make_color_loop(0, 0, + H[0], S[0], V[0], + H[1], S[1], V[1], + H[2], S[2], V[2], + cc->texture_colors, &cc->ncolors, + False, False); + + make_smooth_colormap (0, 0, 0, + cc->cube_colors, &cc->ncolors, + False, 0, False); + } + + cc->ncubes = MI_COUNT (mi); + cc->cubes = (cube *) calloc (sizeof(cube), cc->ncubes); + for (i = 0; i < cc->ncubes; i++) + { + cube *cube = &cc->cubes[i]; + cube->color = random() % cc->ncolors; + cube->w = 1.0; + cube->h = 1.0; + cube->d = 1.0; + cube->dx = frand(0.1); + cube->dy = frand(0.1); + cube->dz = frand(0.1); + cube->dw = frand(0.1); + cube->dh = frand(0.1); + cube->dd = frand(0.1); + } + + if (wire) + do_texture = False; + + if (do_texture) + { + init_texture (mi); + init_wave (mi); + shuffle_texture (mi); + } + + cc->cube_list = glGenLists (1); + glNewList (cc->cube_list, GL_COMPILE); + unit_cube (wire); + glEndList (); +} + + +static void +shuffle_cubes (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + int i; + for (i = 0; i < cc->ncubes; i++) + { +# define SINOID(SCALE,FRAME,SIZE) \ + ((((1 + sin((FRAME * (SCALE)) / 2 * M_PI)) / 2.0) * (SIZE)) - (SIZE)/2) + + cube *cube = &cc->cubes[i]; + cube->x = SINOID(cube->dx, cube->frame, 0.5); + cube->y = SINOID(cube->dy, cube->frame, 0.5); + cube->z = SINOID(cube->dz, cube->frame, 0.5); + cube->w = SINOID(cube->dw, cube->frame, 0.9) + 1.0; + cube->h = SINOID(cube->dh, cube->frame, 0.9) + 1.0; + cube->d = SINOID(cube->dd, cube->frame, 0.9) + 1.0; + cube->frame++; +# undef SINOID + } +} + + +void +draw_cube (ModeInfo *mi) +{ + cube_configuration *cc = &ccs[MI_SCREEN(mi)]; + Display *dpy = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + int i; + + if (!cc->glx_context) + return; + + glShadeModel(GL_FLAT); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix (); + + glScalef(1.1, 1.1, 1.1); + + { + GLfloat x, y, z; + + if (do_wander) + { + static int frame = 0; + +# define SINOID(SCALE,SIZE) \ + ((((1 + sin((frame * (SCALE)) / 2 * M_PI)) / 2.0) * (SIZE)) - (SIZE)/2) + + x = SINOID(0.0071, 8.0); + y = SINOID(0.0053, 6.0); + z = SINOID(0.0037, 15.0); + frame++; + glTranslatef(x, y, z); + } + + if (cc->spin_x || cc->spin_y || cc->spin_z) + { + x = cc->rotx; + y = cc->roty; + z = cc->rotz; + if (x < 0) x = 1 - (x + 1); + if (y < 0) y = 1 - (y + 1); + if (z < 0) z = 1 - (z + 1); + + if (cc->spin_x) glRotatef(x * 360, 1.0, 0.0, 0.0); + if (cc->spin_y) glRotatef(y * 360, 0.0, 1.0, 0.0); + if (cc->spin_z) glRotatef(z * 360, 0.0, 0.0, 1.0); + + rotate(&cc->rotx, &cc->dx, &cc->ddx, cc->d_max); + rotate(&cc->roty, &cc->dy, &cc->ddy, cc->d_max); + rotate(&cc->rotz, &cc->dz, &cc->ddz, cc->d_max); + } + } + + glScalef (2.5, 2.5, 2.5); + + for (i = 0; i < cc->ncubes; i++) + { + cube *cube = &cc->cubes[i]; + GLfloat color[4]; + color[0] = cc->cube_colors[cube->color].red / 65536.0; + color[1] = cc->cube_colors[cube->color].green / 65536.0; + color[2] = cc->cube_colors[cube->color].blue / 65536.0; + color[3] = 1.0; + cube->color++; + if (cube->color >= cc->ncolors) cube->color = 0; + + glPushMatrix (); + glTranslatef (cube->x, cube->y, cube->z); + glScalef (cube->w, cube->h, cube->d); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color); + glCallList (cc->cube_list); + glPopMatrix (); + } + + shuffle_cubes (mi); + if (do_texture) + shuffle_texture (mi); + + glPopMatrix(); + + if (mi->fps_p) do_fps (mi); + glFinish(); + + glXSwapBuffers(dpy, window); +} + +#endif /* USE_GL */ diff --git a/hacks/glx/dangerball.c b/hacks/glx/dangerball.c index d189602a..746b7b24 100644 --- a/hacks/glx/dangerball.c +++ b/hacks/glx/dangerball.c @@ -1,4 +1,4 @@ -/* dangerball, Copyright (c) 2001 Jamie Zawinski +/* dangerball, Copyright (c) 2001, 2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -119,25 +119,6 @@ reshape_ball (ModeInfo *mi, int width, int height) } -static void -gl_init (ModeInfo *mi) -{ -/* ball_configuration *bp = &bps[MI_SCREEN(mi)]; */ - int wire = MI_IS_WIREFRAME(mi); - - static GLfloat pos[4] = {5.0, 5.0, 10.0, 1.0}; - - if (!wire) - { - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - } -} - - /* lifted from lament.c */ #define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n)))) #define RANDSIGN() ((random() & 1) ? 1 : -1) @@ -296,10 +277,27 @@ init_ball (ModeInfo *mi) bp = &bps[MI_SCREEN(mi)]; - if ((bp->glx_context = init_GL(mi)) != NULL) { - gl_init(mi); - reshape_ball (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); - } + bp->glx_context = init_GL(mi); + + reshape_ball (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } bp->rotx = frand(1.0) * RANDSIGN(); bp->roty = frand(1.0) * RANDSIGN(); @@ -349,8 +347,16 @@ draw_ball (ModeInfo *mi) Window window = MI_WINDOW(mi); int c2; - static GLfloat color1[4] = {0.0, 0.0, 0.0, 1.0}; - static GLfloat color2[4] = {0.0, 0.0, 0.0, 1.0}; + /* #### I'm not getting specular reflections on the ball, + and I can't figure out why. + */ + + static GLfloat bcolor[4] = {0.0, 0.0, 0.0, 1.0}; + static GLfloat scolor[4] = {0.0, 0.0, 0.0, 1.0}; + static GLfloat bspec[4] = {1.0, 1.0, 1.0, 1.0}; + static GLfloat sspec[4] = {0.0, 0.0, 0.0, 1.0}; + static GLfloat bshiny = 128.0; + static GLfloat sshiny = 0.0; if (!bp->glx_context) return; @@ -403,14 +409,14 @@ draw_ball (ModeInfo *mi) } } - color1[0] = bp->colors[bp->ccolor].red / 65536.0; - color1[1] = bp->colors[bp->ccolor].green / 65536.0; - color1[2] = bp->colors[bp->ccolor].blue / 65536.0; + bcolor[0] = bp->colors[bp->ccolor].red / 65536.0; + bcolor[1] = bp->colors[bp->ccolor].green / 65536.0; + bcolor[2] = bp->colors[bp->ccolor].blue / 65536.0; c2 = (bp->ccolor + bp->color_shift) % bp->ncolors; - color2[0] = bp->colors[c2].red / 65536.0; - color2[1] = bp->colors[c2].green / 65536.0; - color2[2] = bp->colors[c2].blue / 65536.0; + scolor[0] = bp->colors[c2].red / 65536.0; + scolor[1] = bp->colors[c2].green / 65536.0; + scolor[2] = bp->colors[c2].blue / 65536.0; bp->ccolor++; if (bp->ccolor >= bp->ncolors) bp->ccolor = 0; @@ -419,10 +425,14 @@ draw_ball (ModeInfo *mi) move_spikes (mi); - glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color1); + glMaterialfv (GL_FRONT, GL_SPECULAR, bspec); + glMateriali (GL_FRONT, GL_SHININESS, bshiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor); glCallList (bp->ball_list); - glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color2); + glMaterialfv (GL_FRONT, GL_SPECULAR, sspec); + glMaterialf (GL_FRONT, GL_SHININESS, sshiny); + glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, scolor); draw_spikes (mi); glPopMatrix (); diff --git a/hacks/glx/extrusion.c b/hacks/glx/extrusion.c index 81cdeb91..0f35ffb6 100644 --- a/hacks/glx/extrusion.c +++ b/hacks/glx/extrusion.c @@ -454,10 +454,20 @@ void Create_Texture(char *filename, int do_mipmap, int do_texture_quality) } if (do_mipmap) { - gluBuild2DMipmaps(GL_TEXTURE_2D, format, width, height, - format, GL_UNSIGNED_BYTE, image); - } - else { + int status; + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, format, width, height, + format, GL_UNSIGNED_BYTE, image); + if (status) + { + const char *s = gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, width, height, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + } else { clear_gl_error(); glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, image); diff --git a/hacks/glx/flipscreen3d.c b/hacks/glx/flipscreen3d.c index 2134fbcf..8ccc710e 100644 --- a/hacks/glx/flipscreen3d.c +++ b/hacks/glx/flipscreen3d.c @@ -389,6 +389,12 @@ void getSnapshot (ModeInfo *modeinfo) status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, ximage->width, ximage->height, GL_RGBA, GL_UNSIGNED_BYTE, ximage->data); + + if (!status && glGetError()) + /* Some implementations of gluBuild2DMipmaps(), but set a GL error anyway. + We could just call check_gl_error(), but that would exit. */ + status = -1; + if (status) { const char *s = gluErrorString (status); diff --git a/hacks/glx/fps.c b/hacks/glx/fps.c index 16ee1b08..7da5123b 100644 --- a/hacks/glx/fps.c +++ b/hacks/glx/fps.c @@ -32,7 +32,6 @@ extern void check_gl_error (const char *type); static int fps_text_x = 10; static int fps_text_y = 10; static int fps_ascent, fps_descent; -static int fps_sample_frames = 10; static GLuint font_dlist; static Bool fps_clear_p = False; @@ -72,13 +71,12 @@ fps_init (ModeInfo *mi) static void fps_print_string (ModeInfo *mi, GLfloat x, GLfloat y, const char *string) { - /* save the current state */ - /* note: could be expensive! */ - if (y < 0) y = mi->xgwa.height + y; +# ifdef DEBUG clear_gl_error (); +# endif /* Sadly, this causes a stall of the graphics pipeline (as would the equivalent calls to glGet*.) But there's no way around this, short @@ -133,7 +131,7 @@ fps_print_string (ModeInfo *mi, GLfloat x, GLfloat y, const char *string) if (fps_clear_p) { glColor3f (0, 0, 0); - glRecti (x, y - fps_descent, + glRecti (x / 2, y - fps_descent, mi->xgwa.width - x, y + fps_ascent + fps_descent); } @@ -165,23 +163,26 @@ fps_print_string (ModeInfo *mi, GLfloat x, GLfloat y, const char *string) void do_fps (ModeInfo *mi) { - /* every N frames, get the time and use it to get the frames per second */ - static int frame_counter = -1; - static double oldtime = 0; /* time in usecs, as a double */ - static double newtime = 0; - + static Bool initted_p = False; + static int last_ifps = 0; + static int frame_count = 0; + static struct timeval prev = { 0, }; + static struct timeval now = { 0, }; static char msg [1024] = { 0, }; - if (frame_counter == -1) + if (!initted_p) { + initted_p = True; fps_init (mi); - frame_counter = fps_sample_frames; + strcpy (msg, "FPS: (accumulating...)"); } - if (frame_counter++ == fps_sample_frames) + /* Every N frames (where N is approximately one second's worth of frames) + check the wall clock. We do this because checking the wall clock is + a slow operation. + */ + if (frame_count++ >= last_ifps) { - double fps; - struct timeval now; # ifdef GETTIMEOFDAY_TWO_ARGS struct timezone tzp; gettimeofday(&now, &tzp); @@ -189,34 +190,38 @@ do_fps (ModeInfo *mi) gettimeofday(&now); # endif - oldtime = newtime; - newtime = now.tv_sec + ((double) now.tv_usec * 0.000001); + if (prev.tv_sec == 0) + prev = now; + } + + /* If we've probed the wall-clock time, regenerate the string. + */ + if (now.tv_sec != prev.tv_sec) + { + double uprev = prev.tv_sec + ((double) prev.tv_usec * 0.000001); + double unow = now.tv_sec + ((double) now.tv_usec * 0.000001); + double fps = frame_count / (unow - uprev); - fps = fps_sample_frames / (newtime - oldtime); + prev = now; + frame_count = 0; + last_ifps = fps; - if (fps < 0.0001) - { - strcpy(msg, "FPS: (accumulating...)"); - } - else + sprintf (msg, "FPS: %.02f", fps); + + if (mi->pause != 0) { - sprintf(msg, "FPS: %.02f", fps); - - if (mi->pause != 0) - { - char buf[40]; - sprintf(buf, "%f", mi->pause / 1000000.0); /* FTSO C */ - while(*buf && buf[strlen(buf)-1] == '0') - buf[strlen(buf)-1] = 0; - if (buf[strlen(buf)-1] == '.') - buf[strlen(buf)-1] = 0; - sprintf(msg + strlen(msg), " (including %s sec/frame delay)", - buf); - } + char buf[40]; + sprintf(buf, "%f", mi->pause / 1000000.0); /* FTSO C */ + while(*buf && buf[strlen(buf)-1] == '0') + buf[strlen(buf)-1] = 0; + if (buf[strlen(buf)-1] == '.') + buf[strlen(buf)-1] = 0; + sprintf(msg + strlen(msg), " (including %s sec/frame delay)", + buf); } - - frame_counter = 0; } + /* Print the string every frame (or else nothing will show up.) + */ fps_print_string (mi, fps_text_x, fps_text_y, msg); } diff --git a/hacks/glx/glplanet.c b/hacks/glx/glplanet.c index 0685386f..20632b9a 100644 --- a/hacks/glx/glplanet.c +++ b/hacks/glx/glplanet.c @@ -52,7 +52,7 @@ "*showFPS: False \n" \ "*rotate: True \n" \ "*roll: True \n" \ - "*bounce: True \n" \ + "*wander: True \n" \ "*wireframe: False \n" \ "*light: True \n" \ "*texture: True \n" \ @@ -83,9 +83,9 @@ #define DEF_ROTATE "True" #define DEF_ROLL "True" -#define DEF_BOUNCE "True" +#define DEF_WANDER "True" #define DEF_TEXTURE "True" -#define DEF_STARS "True" +#define DEF_STARS "True" #define DEF_LIGHT "True" #define DEF_IMAGE "BUILTIN" @@ -94,7 +94,7 @@ static int do_rotate; static int do_roll; -static int do_bounce; +static int do_wander; static int do_texture; static int do_stars; static int do_light; @@ -104,8 +104,8 @@ static XrmOptionDescRec opts[] = { {"+rotate", ".glplanet.rotate", XrmoptionNoArg, (caddr_t) "false" }, {"-roll", ".glplanet.roll", XrmoptionNoArg, (caddr_t) "true" }, {"+roll", ".glplanet.roll", XrmoptionNoArg, (caddr_t) "false" }, - {"-bounce", ".glplanet.bounce", XrmoptionNoArg, (caddr_t) "true" }, - {"+bounce", ".glplanet.bounce", XrmoptionNoArg, (caddr_t) "false" }, + {"-wander", ".glplanet.wander", XrmoptionNoArg, (caddr_t) "true" }, + {"+wander", ".glplanet.wander", XrmoptionNoArg, (caddr_t) "false" }, {"-texture", ".glplanet.texture", XrmoptionNoArg, (caddr_t) "true" }, {"+texture", ".glplanet.texture", XrmoptionNoArg, (caddr_t) "false" }, {"-stars", ".glplanet.stars", XrmoptionNoArg, (caddr_t) "true" }, @@ -118,7 +118,7 @@ static XrmOptionDescRec opts[] = { static argtype vars[] = { {(caddr_t *) &do_rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool}, {(caddr_t *) &do_roll, "roll", "Roll", DEF_ROLL, t_Bool}, - {(caddr_t *) &do_bounce, "bounce", "Bounce", DEF_BOUNCE, t_Bool}, + {(caddr_t *) &do_wander, "wander", "Wander", DEF_WANDER, t_Bool}, {(caddr_t *) &do_texture, "texture", "Texture", DEF_TEXTURE, t_Bool}, {(caddr_t *) &do_stars, "stars", "Stars", DEF_STARS, t_Bool}, {(caddr_t *) &do_light, "light", "Light", DEF_LIGHT, t_Bool}, @@ -135,7 +135,7 @@ ModStruct planet_description = "Animates texture mapped sphere (planet)", 0, NULL}; #endif -#include "../images/earth.xbm" +#include "../images/earth.xpm" #include "xpm-ximage.h" @@ -173,6 +173,8 @@ typedef struct { GLfloat dx, dy, dz; GLfloat box_width, box_height, box_depth; + GLfloat sunpos[4]; + } planetstruct; @@ -182,49 +184,32 @@ static planetstruct *planets = NULL; static inline void normalize(GLfloat v[3]) { - GLfloat d = (GLfloat) sqrt((double) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2])); - - if (d != 0) { - v[0] /= d; - v[1] /= d; - v[2] /= d; - } else { - v[0] = v[1] = v[2] = 0; + GLfloat d = (GLfloat) sqrt((double) (v[0] * v[0] + + v[1] * v[1] + + v[2] * v[2])); + if (d != 0) + { + v[0] /= d; + v[1] /= d; + v[2] /= d; + } + else + { + v[0] = v[1] = v[2] = 0; } } /* Set up and enable texturing on our object */ static void -setup_xbm_texture (char *bits, int width, int height, - XColor *fgc, XColor *bgc) +setup_xpm_texture (ModeInfo *mi, char **xpm_data) { - unsigned int fg = (((fgc->red >> 8) << 16) | - ((fgc->green >> 8) << 8) | - ((fgc->blue >> 8))); - unsigned int bg = (((bgc->red >> 8) << 16) | - ((bgc->green >> 8) << 8) | - ((bgc->blue >> 8))); - - unsigned char *data = (unsigned char *) - malloc ((width * height * 24) / 8); - unsigned char *out = data; - int x, y; - - for (y = 0; y < height; y++) - for (x = 0; x < width; x++) - { - unsigned char byte = bits [(y * (width / 8) + (x / 8))]; - unsigned char bit = (byte & (1 << (x % 8))) >> (x % 8); - unsigned int word = (bit ? bg : fg); - *out++ = (word & 0xFF0000) >> 16; - *out++ = (word & 0x00FF00) >> 8; - *out++ = (word & 0x0000FF); - } - + XImage *image = xpm_to_ximage (MI_DISPLAY (mi), MI_VISUAL (mi), + MI_COLORMAP (mi), xpm_data); clear_gl_error(); - glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, data); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + image->width, image->height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, image->data); check_gl_error("texture"); /* setup parameters for texturing */ @@ -267,92 +252,47 @@ setup_file_texture (ModeInfo *mi, char *filename) static void setup_texture(ModeInfo * mi) { - planetstruct *gp = &planets[MI_SCREEN(mi)]; +/* planetstruct *gp = &planets[MI_SCREEN(mi)];*/ + + glEnable(GL_TEXTURE_2D); + if (!which_image || !*which_image || !strcmp(which_image, "BUILTIN")) - setup_xbm_texture (earth_bits, earth_width, earth_height, - &gp->fg, &gp->bg); + setup_xpm_texture (mi, earth_xpm); else setup_file_texture (mi, which_image); -} - - -/* Set up and enable lighting */ -static void -setup_light(void) -{ - /* set a number of parameters which make the scene look much nicer */ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glShadeModel(GL_SMOOTH); -} - -/* Set up and enable face culling so we don't see the inside of the sphere */ -static void -setup_face(void) -{ - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); + check_gl_error("texture initialization"); } -#if 0 -/* Function for determining points on the surface of the sphere */ -static void inline ParametricSphere(float theta, float rho, GLfloat *vector) -{ - vector[0] = -sin(theta) * sin(rho); - vector[1] = cos(theta) * sin(rho); - vector[2] = cos(rho); - -#if DO_HELIX - vector[0] = -(1- cos(theta)) * cos(rho); - vector[1] = -(1- cos(theta)) * sin(rho); - vector[2] = -(sin(theta) + rho); -#endif /* DO_HELIX */ - - return; -} -#endif - - -/* lame way to generate some random stars */ -void generate_stars(int width, int height) +void +init_stars (ModeInfo *mi) { int i, j; - int max_size = 3; + GLfloat max_size = 3; GLfloat inc = 0.5; int steps = max_size / inc; + int width = MI_WIDTH(mi); + int height = MI_HEIGHT(mi); planetstruct *gp = &planets[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + if (!wire) + glEnable (GL_POINT_SMOOTH); + gp->starlist = glGenLists(1); glNewList(gp->starlist, GL_COMPILE); - /* this hackery makes the viewport map one-to-one with Vertex arguments */ - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, width, 0, height); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - /* disable depth testing for the stars, so they don't obscure the planet */ - glDisable(GL_DEPTH_TEST); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glColor3f(1,1,1); - - glEnable(GL_POINT_SMOOTH); + glScalef (1.0/width, 1.0/height, 1); for (j = 1; j <= steps; j++) { glPointSize(inc * j); glBegin(GL_POINTS); - for(i = 0 ; i < NUM_STARS / steps; i++) + for (i = 0 ; i < NUM_STARS / steps; i++) { glColor3f (0.6 + frand(0.3), 0.6 + frand(0.3), @@ -362,88 +302,117 @@ void generate_stars(int width, int height) } glEnd(); } - - /* return to original PROJECT and MODELVIEW */ - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - - glEndList(); -} - -/* Set up lighting */ -static void -init_sun (ModeInfo * mi) -{ - GLfloat light[4]; - light[0] = frand(2.0) - 1.0; - light[1] = frand(2.0) - 1.0; - light[2] = 1.0; - light[3] = 0; - - glLightfv(GL_LIGHT0, GL_POSITION, light); + check_gl_error("stars initialization"); } -/* Initialization function for screen saver */ -static void -pinit(ModeInfo * mi) +void +draw_stars (ModeInfo * mi) { - Bool wire = MI_IS_WIREFRAME(mi); + int width = MI_WIDTH(mi); + int height = MI_HEIGHT(mi); + planetstruct *gp = &planets[MI_SCREEN(mi)]; + + /* Sadly, this causes a stall of the graphics pipeline (as would the + equivalent calls to glGet*.) But there's no way around this, short + of having each caller set up the specific display matrix we need + here, which would kind of defeat the purpose of centralizing this + code in one file. + */ + glPushAttrib(GL_TRANSFORM_BIT | /* for matrix contents */ + GL_ENABLE_BIT | /* for various glDisable calls */ + GL_CURRENT_BIT | /* for glColor3f() */ + GL_LIST_BIT); /* for glListBase() */ + { + check_gl_error ("glPushAttrib"); + + /* disable lighting and texturing when drawing stars! + (glPopAttrib() restores these.) + */ + glDisable(GL_TEXTURE_2D); + glDisable(GL_LIGHTING); + glDisable(GL_DEPTH_TEST); + + /* glPopAttrib() does not restore matrix changes, so we must + push/pop the matrix stacks to be non-intrusive there. + */ + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + { + check_gl_error ("glPushMatrix"); + glLoadIdentity(); - if (wire) { - glEnable(GL_LINE_SMOOTH); - do_texture = False; - } + /* Each matrix mode has its own stack, so we need to push/pop + them separately. */ + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + { + check_gl_error ("glPushMatrix"); + glLoadIdentity(); - /* turn on various options we like */ - if (do_texture) - setup_texture(mi); - if (do_light) - setup_light(); + gluOrtho2D (0, width, 0, height); + check_gl_error ("gluOrtho2D"); - setup_face(); + /* Draw the stars */ + glScalef (width, height, 1); + glCallList(gp->starlist); + check_gl_error ("drawing stars"); + } + glPopMatrix(); + } + glMatrixMode(GL_PROJECTION); + glPopMatrix(); - if (do_stars) { - glEnable(GL_POINT_SMOOTH); - generate_stars(MI_WIDTH(mi), MI_HEIGHT(mi)); } + /* clean up after our state changes */ + glPopAttrib(); + check_gl_error ("glPopAttrib"); +} - gp->platelist=glGenLists(1); - glNewList(gp->platelist, GL_COMPILE); - glPushMatrix (); - glScalef (RADIUS, RADIUS, RADIUS); - unit_sphere (STACKS, SLICES, wire); - glPopMatrix (); - glEndList(); - init_sun (mi); -} +/* Set up lighting */ static void -draw_sphere(ModeInfo * mi) +init_sun (ModeInfo * mi) { planetstruct *gp = &planets[MI_SCREEN(mi)]; - glEnable(GL_DEPTH_TEST); + GLfloat lamb[4] = { 0.0, 0.0, 0.0, 1.0 }; + GLfloat ldif[4] = { 1.0, 1.0, 1.0, 1.0 }; + GLfloat spec[4] = { 1.0, 1.0, 1.0, 1.0 }; - /* turn on the various attributes for making the sphere look nice */ - if (do_texture) - glEnable(GL_TEXTURE_2D); + GLfloat mamb[4] = { 0.5, 0.5, 0.5, 1.0 }; + GLfloat mdif[4] = { 1.0, 1.0, 1.0, 1.0 }; + GLfloat mpec[4] = { 1.0, 1.0, 1.0, 1.0 }; + GLfloat shiny = .4; - if (do_light) - { - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); - } + gp->sunpos[0] = 1.00 - frand(2.00); + gp->sunpos[1] = 0.25 - frand(0.50); + gp->sunpos[2] = -1.00; + gp->sunpos[3] = 0.00; + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + + glLightfv (GL_LIGHT0, GL_POSITION, gp->sunpos); + glLightfv (GL_LIGHT0, GL_AMBIENT, lamb); + glLightfv (GL_LIGHT0, GL_DIFFUSE, ldif); + glLightfv (GL_LIGHT0, GL_SPECULAR, spec); + + glMaterialfv (GL_FRONT, GL_AMBIENT, mamb); + glMaterialfv (GL_FRONT, GL_DIFFUSE, mdif); + glMaterialfv (GL_FRONT, GL_SPECULAR, mpec); + glMaterialf (GL_FRONT, GL_SHININESS, shiny); - glCallList(gp->platelist); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glShadeModel(GL_SMOOTH); + + check_gl_error("lighting"); } @@ -495,7 +464,7 @@ rotate_and_move (ModeInfo * mi) while (gp->tz > 360) gp->tz -= 360; } - if (do_bounce) + if (do_wander) { static int frame = 0; # define SINOID(SCALE,SIZE) \ @@ -508,9 +477,8 @@ rotate_and_move (ModeInfo * mi) } -/* Standard reshape function */ void -reshape_planet(ModeInfo *mi, int width, int height) +reshape_planet (ModeInfo *mi, int width, int height) { GLfloat h = (GLfloat) height / (GLfloat) width; @@ -520,17 +488,18 @@ reshape_planet(ModeInfo *mi, int width, int height) glFrustum(-1.0, 1.0, -h, h, 5.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glTranslatef(0.0, 0.0, -DIST); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } void -init_planet(ModeInfo * mi) +init_planet (ModeInfo * mi) { - int screen = MI_SCREEN(mi); - planetstruct *gp; + int screen = MI_SCREEN(mi); + Bool wire = MI_IS_WIREFRAME(mi); if (planets == NULL) { if ((planets = (planetstruct *) calloc(MI_NUM_SCREENS(mi), @@ -541,6 +510,10 @@ init_planet(ModeInfo * mi) pick_velocity (mi); + if ((gp->glx_context = init_GL(mi)) != NULL) { + reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); + } + { char *f = get_string_resource("imageForeground", "Foreground"); char *b = get_string_resource("imageBackground", "Background"); @@ -570,18 +543,38 @@ init_planet(ModeInfo * mi) free (b); } + if (wire) + { + do_texture = False; + do_light = False; + glEnable (GL_LINE_SMOOTH); + } - gp->window = MI_WINDOW(mi); - if ((gp->glx_context = init_GL(mi)) != NULL) { - reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); - pinit(mi); - } else { - MI_CLEARWINDOW(mi); - } + if (do_texture) + setup_texture (mi); + + if (do_light) + init_sun (mi); + + if (do_stars) + init_stars (mi); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + glCullFace(GL_BACK); + + gp->platelist = glGenLists(1); + glNewList (gp->platelist, GL_COMPILE); + glColor3f (1,1,1); + glPushMatrix (); + glScalef (RADIUS, RADIUS, RADIUS); + unit_sphere (STACKS, SLICES, wire); + glPopMatrix (); + glEndList(); } void -draw_planet(ModeInfo * mi) +draw_planet (ModeInfo * mi) { planetstruct *gp = &planets[MI_SCREEN(mi)]; Display *display = MI_DISPLAY(mi); @@ -593,35 +586,23 @@ draw_planet(ModeInfo * mi) glDrawBuffer(GL_BACK); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glXMakeCurrent(display, window, *(gp->glx_context)); - + glXMakeCurrent (display, window, *(gp->glx_context)); - if (do_stars) { - /* protect our modelview matrix and attributes */ - glPushMatrix(); - glCallList(gp->starlist); - glPopMatrix(); - } + if (do_stars) + draw_stars (mi); - /* protect our modelview matrix and attributes */ glPushMatrix(); - glPushAttrib(GL_ALL_ATTRIB_BITS); - { - /* this pair of rotations seem to be necessary to orient the earth correctly */ - glRotatef(90,0,0,1); - glRotatef(90,0,1,0); - - glTranslatef(gp->xpos, gp->ypos, gp->zpos); - glRotatef(gp->tx, 1, 0, 0); - glRotatef(gp->ty, 0, 1, 0); - glRotatef(gp->tz, 0, 0, 1); - /* draw the sphere */ - draw_sphere(mi); - } - glPopMatrix(); - glPopAttrib(); + glRotatef (90,1,0,0); + glTranslatef (gp->xpos, gp->ypos, gp->zpos); + + glRotatef (gp->tx, 1, 0, 0); + glRotatef (gp->ty, 0, 1, 0); + glRotatef (gp->tz, 0, 0, 1); + glLightfv (GL_LIGHT0, GL_POSITION, gp->sunpos); + glCallList (gp->platelist); + glPopMatrix(); if (mi->fps_p) do_fps (mi); glFinish(); @@ -630,11 +611,12 @@ draw_planet(ModeInfo * mi) rotate_and_move (mi); } + void -release_planet(ModeInfo * mi) +release_planet (ModeInfo * mi) { if (planets != NULL) { - int screen; + int screen; for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) { planetstruct *gp = &planets[screen]; diff --git a/hacks/glx/glsnake.c b/hacks/glx/glsnake.c index d54082b1..66c12555 100644 --- a/hacks/glx/glsnake.c +++ b/hacks/glx/glsnake.c @@ -53,7 +53,7 @@ extern XtAppContext app; "*zspin: " DEF_ZSPIN " \n" \ "*scarycolour:" DEF_SCARYCOLOUR " \n" \ "*labels: " DEF_LABELS " \n" \ - "*labelfont: -*-helvetica-medium-r-*-*-*-120-*\n" \ + "*labelfont: -*-times-bold-r-normal-*-180-*\n" \ @@ -65,7 +65,7 @@ extern XtAppContext app; #ifdef USE_GL /* whole file */ #include -#include +#include #include #include #include @@ -98,8 +98,8 @@ typedef struct { int is_legal; int last_turn; int selected; - struct timeb last_iteration; - struct timeb last_morph; + struct timeval last_iteration; + struct timeval last_morph; int morphing; nodeang_t node[24]; GLfloat roty; @@ -693,8 +693,17 @@ void glsnake_init(ModeInfo *mi) { bp->dragging = 0; bp->interactive = 0; - ftime(&(bp->last_iteration)); - memcpy(&(bp->last_morph), &(bp->last_iteration), sizeof(struct timeb)); + { +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(&bp->last_iteration, &tzp); +# else + gettimeofday(&bp->last_iteration); +# endif + } + + memcpy(&bp->last_morph, &(bp->last_iteration), + sizeof(bp->last_morph)); /* srand((unsigned int) bp->last_iteration.time); */ /* load the model files */ @@ -871,7 +880,7 @@ void glsnake_idol(glsnake_configuration * bp) { long morf_msec; float iter_angle_max; int i; - struct timeb current_time; + struct timeval current_time; int still_morphing; /* Do nothing to the model if we are paused */ @@ -880,8 +889,15 @@ void glsnake_idol(glsnake_configuration * bp) { usleep(1); return; } - /* ftime is winDOS compatible */ - ftime(¤t_time); + + { +# ifdef GETTIMEOFDAY_TWO_ARGS + struct timezone tzp; + gettimeofday(¤t_time, &tzp); +# else + gettimeofday(¤t_time); +# endif + } /* Well, ftime gives time with millisecond resolution. * if current time is exactly equal to last iteration, @@ -892,18 +908,20 @@ void glsnake_idol(glsnake_configuration * bp) { * it would be the same * b) The code will divide by zero */ - iter_msec = (long) current_time.millitm - bp->last_iteration.millitm + - ((long) current_time.time - bp->last_iteration.time) * 1000L; + iter_msec = ((long) current_time.tv_usec - bp->last_iteration.tv_usec)/1000L + + ((long) current_time.tv_sec - bp->last_iteration.tv_sec) * 1000L; if (iter_msec) { /* save the current time */ - memcpy(&(bp->last_iteration), ¤t_time, sizeof(struct timeb)); + memcpy(&bp->last_iteration, ¤t_time, + sizeof(bp->last_iteration)); /* work out if we have to switch models */ - morf_msec = bp->last_iteration.millitm - bp->last_morph.millitm + - ((long) (bp->last_iteration.time - bp->last_morph.time) * 1000L); + morf_msec = (bp->last_iteration.tv_usec - bp->last_morph.tv_usec)/1000L + + ((long) (bp->last_iteration.tv_sec - bp->last_morph.tv_sec) * 1000L); if ((morf_msec > statictime) && !bp->interactive) { - memcpy(&(bp->last_morph), &(bp->last_iteration), sizeof(struct timeb)); + memcpy(&bp->last_morph, &(bp->last_iteration), + sizeof(bp->last_morph)); start_morph(RAND(bp->m_count), 0, bp); } diff --git a/hacks/glx/menger.c b/hacks/glx/menger.c index 96ddaccd..e1364c44 100644 --- a/hacks/glx/menger.c +++ b/hacks/glx/menger.c @@ -1,4 +1,4 @@ -/* menger, Copyright (c) 2001 Jamie Zawinski +/* menger, Copyright (c) 2001, 2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -189,25 +189,6 @@ reshape_sponge (ModeInfo *mi, int width, int height) } -static void -gl_init (ModeInfo *mi) -{ -/* sponge_configuration *sp = &sps[MI_SCREEN(mi)]; */ - int wire = MI_IS_WIREFRAME(mi); - - static GLfloat pos[4] = {-4.0, 3.0, 10.0, 1.0}; - - if (!wire) - { - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - } -} - - /* lifted from lament.c */ #define RAND(n) ((long) ((random() & 0x7fffffff) % ((long) (n)))) #define RANDSIGN() ((random() & 1) ? 1 : -1) @@ -524,6 +505,7 @@ void init_sponge (ModeInfo *mi) { sponge_configuration *sp; + int wire = MI_IS_WIREFRAME(mi); if (!sps) { sps = (sponge_configuration *) @@ -539,10 +521,29 @@ init_sponge (ModeInfo *mi) sp = &sps[MI_SCREEN(mi)]; if ((sp->glx_context = init_GL(mi)) != NULL) { - gl_init(mi); reshape_sponge (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); } + if (!wire) + { + static GLfloat pos0[4] = {-1.0, -1.0, 1.0, 0.1}; + static GLfloat pos1[4] = { 1.0, -0.2, 0.2, 0.1}; + static GLfloat dif0[4] = {1.0, 1.0, 1.0, 1.0}; + static GLfloat dif1[4] = {1.0, 1.0, 1.0, 1.0}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos0); + glLightfv(GL_LIGHT1, GL_POSITION, pos1); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif0); + glLightfv(GL_LIGHT1, GL_DIFFUSE, dif1); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + } + sp->rotx = frand(1.0) * RANDSIGN(); sp->roty = frand(1.0) * RANDSIGN(); sp->rotz = frand(1.0) * RANDSIGN(); diff --git a/hacks/glx/moebius.c b/hacks/glx/moebius.c index 15e3732e..0220cbbb 100644 --- a/hacks/glx/moebius.c +++ b/hacks/glx/moebius.c @@ -584,6 +584,7 @@ reshape_moebius(ModeInfo * mi, int width, int height) static void pinit(void) { + int status; glClearDepth(1.0); glClearColor(0.0, 0.0, 0.0, 1.0); @@ -609,8 +610,21 @@ pinit(void) glDisable(GL_CULL_FACE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, WoodTextureWidth, WoodTextureHeight, - GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, + WoodTextureWidth, WoodTextureHeight, + GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + if (status) + { + const char *s = gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, WoodTextureWidth, WoodTextureHeight, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); diff --git a/hacks/glx/molecule.c b/hacks/glx/molecule.c index 02b83624..0ad814ed 100644 --- a/hacks/glx/molecule.c +++ b/hacks/glx/molecule.c @@ -1200,8 +1200,14 @@ reshape_molecule (ModeInfo *mi, int width, int height) static void gl_init (ModeInfo *mi) { - static GLfloat pos[4] = {5.0, 5.0, 10.0, 1.0}; + static GLfloat pos[4] = {1.0, 0.4, 0.9, 0.0}; + static GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + static GLfloat dif[4] = {0.8, 0.8, 0.8, 1.0}; + static GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); orig_do_labels = do_labels; orig_do_bonds = do_bonds; diff --git a/hacks/glx/pipes.c b/hacks/glx/pipes.c index 31a0bdd3..db1e792d 100644 --- a/hacks/glx/pipes.c +++ b/hacks/glx/pipes.c @@ -64,6 +64,7 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; "*fpsSolid: True \n" \ "*fisheye: True \n" \ "*tightturns: False \n" \ + "*doubleBuffer: True \n" \ "*rotatepipes: True \n" # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -79,10 +80,12 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; #define DEF_FISHEYE "True" #define DEF_TIGHTTURNS "False" #define DEF_ROTATEPIPES "True" +#define DEF_DBUF "False" #define NofSysTypes 3 static int factory; static Bool fisheye, tightturns, rotatepipes; +static Bool dbuf_p; static XrmOptionDescRec opts[] = { @@ -92,21 +95,25 @@ static XrmOptionDescRec opts[] = {"-tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "on"}, {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, (caddr_t) "off"}, {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "on"}, - {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "off"} + {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, (caddr_t) "off"}, + {"-db", ".pipes.doubleBuffer", XrmoptionNoArg, (caddr_t) "on"}, + {"+db", ".pipes.doubleBuffer", XrmoptionNoArg, (caddr_t) "off"}, }; static argtype vars[] = { {(caddr_t *) & factory, "factory", "Factory", DEF_FACTORY, t_Int}, {(caddr_t *) & fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool}, {(caddr_t *) & tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool}, - {(caddr_t *) & rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool} + {(caddr_t *) & rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool}, + {(caddr_t *) & dbuf_p, "doubleBuffer", "DoubleBuffer", DEF_DBUF, t_Bool} }; static OptionStruct desc[] = { {"-factory num", "how much extra equipment in pipes (0 for none)"}, {"-/+fisheye", "turn on/off zoomed-in view of pipes"}, {"-/+tightturns", "turn on/off tight turns"}, - {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"} + {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"}, + {"-/+db", "turn on/off double buffering"} }; ModeSpecOpt pipes_opts = @@ -534,7 +541,7 @@ pinit(ModeInfo * mi, int zera) if (zera) { pp->system_number = 1; - glDrawBuffer(GL_FRONT_AND_BACK); + glDrawBuffer(dbuf_p ? GL_BACK : GL_FRONT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); (void) memset(pp->Cells, 0, sizeof (pp->Cells)); for (X = 0; X < HCELLS; X++) { @@ -731,7 +738,8 @@ draw_pipes(ModeInfo * mi) /* If the maximum number of system was drawn, restart (clearing the screen), */ /* else start a new system. */ if (++pp->system_number > pp->number_of_systems) { - (void) sleep(1); + if (!mi->fps_p) + sleep(1); pinit(mi, 1); } else { pinit(mi, 0); @@ -961,7 +969,8 @@ draw_pipes(ModeInfo * mi) glFlush(); - glXSwapBuffers(display, window); + if (dbuf_p) + glXSwapBuffers(display, window); if (mi->fps_p) do_fps (mi); } diff --git a/hacks/glx/pulsar.c b/hacks/glx/pulsar.c index 9d894f40..6e619446 100644 --- a/hacks/glx/pulsar.c +++ b/hacks/glx/pulsar.c @@ -436,7 +436,6 @@ void Create_Texture(char *filename) { int height, width; GLubyte *image; - GLint a; int format; if ( !strncmp(filename, "BUILTIN", 7)) @@ -476,7 +475,21 @@ void Create_Texture(char *filename) /* mipmaps make the image look much nicer */ if (do_mipmap) - a=gluBuild2DMipmaps(GL_TEXTURE_2D, format, width, height, format, GL_UNSIGNED_BYTE, image); + { + int status; + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, format, width, height, format, + GL_UNSIGNED_BYTE, image); + if (status) + { + const char *s = gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, width, height, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + } else { clear_gl_error(); diff --git a/hacks/glx/sphere.c b/hacks/glx/sphere.c index d11eb9f1..5aba74f0 100644 --- a/hacks/glx/sphere.c +++ b/hacks/glx/sphere.c @@ -1,4 +1,4 @@ -/* sphere, Copyright (c) 1998 David Konerding +/* sphere, Copyright (c) 2002 Paul Bourke * Utility function to create a unit sphere in GL. * * Permission to use, copy, modify, distribute, and sell this software and its @@ -9,85 +9,88 @@ * software for any purpose. It is provided "as is" without express or * implied warranty. * - * 8-Oct-98: dek Released initial version of "glplanet" - * 21-Mar-01: jwz@jwz.org Broke sphere routine out into its own file. + * 8-Oct-98: dek Released initial version of "glplanet" + * 21-Mar-01: jwz@jwz.org Broke sphere routine out into its own file. + * 28-Feb-02: jwz@jwz.org New implementation from Paul Bourke: + * http://astronomy.swin.edu.au/~pbourke/opengl/sphere/ */ #include "config.h" #include #include #include -#include "tube.h" -/* Function for determining points on the surface of the sphere */ -static void -parametric_sphere (float theta, float rho, GLfloat *vector) -{ - vector[0] = -sin(theta) * sin(rho); - vector[1] = cos(theta) * sin(rho); - vector[2] = cos(rho); -} +typedef struct { GLfloat x, y, z; } XYZ; void unit_sphere (int stacks, int slices, Bool wire) { - int i, j; - float drho, dtheta; - float rho, theta; - GLfloat vector[3]; - GLfloat ds, dt, t, s; + int i,j; + double theta1, theta2, theta3; + XYZ e, p; + XYZ la, lb; + XYZ c = {0, 0, 0}; /* center */ + double r = 1.0; /* radius */ + int stacks2 = stacks * 2; - if (!wire) - glShadeModel(GL_SMOOTH); + if (r < 0) + r = -r; + if (slices < 0) + slices = -slices; + + if (slices < 4 || stacks < 2 || r <= 0) + { + glBegin (GL_POINTS); + glVertex3f (c.x, c.y, c.z); + glEnd(); + return; + } - /* Generate a sphere with quadrilaterals. - * Quad vertices are determined using a parametric sphere function. - * For fun, you could generate practically any parameteric surface and - * map an image onto it. - */ - drho = M_PI / stacks; - dtheta = 2.0 * M_PI / slices; - ds = 1.0 / slices; - dt = 1.0 / stacks; + glFrontFace(GL_CW); - glFrontFace(GL_CCW); - glBegin (wire ? GL_LINE_LOOP : GL_QUADS); + for (j = 0; j < stacks; j++) + { + theta1 = j * (M_PI+M_PI) / stacks2 - M_PI_2; + theta2 = (j + 1) * (M_PI+M_PI) / stacks2 - M_PI_2; - t = 0.0; - for (i=0; i < stacks; i++) { - rho = i * drho; - s = 0.0; - for (j=0; j < slices; j++) { - theta = j * dtheta; + glBegin (wire ? GL_LINE_LOOP : GL_TRIANGLE_STRIP); + for (i = 0; i <= slices; i++) + { + theta3 = i * (M_PI+M_PI) / slices; - glTexCoord2f (s,t); - parametric_sphere (theta, rho, vector); - glNormal3fv (vector); - parametric_sphere (theta, rho, vector); - glVertex3f (vector[0], vector[1], vector[2]); + if (wire && i != 0) + { + glVertex3f (lb.x, lb.y, lb.z); + glVertex3f (la.x, la.y, la.z); + } - glTexCoord2f (s,t+dt); - parametric_sphere (theta, rho+drho, vector); - glNormal3fv (vector); - parametric_sphere (theta, rho+drho, vector); - glVertex3f (vector[0], vector[1], vector[2]); + e.x = cos (theta2) * cos(theta3); + e.y = sin (theta2); + e.z = cos (theta2) * sin(theta3); + p.x = c.x + r * e.x; + p.y = c.y + r * e.y; + p.z = c.z + r * e.z; - glTexCoord2f (s+ds,t+dt); - parametric_sphere (theta + dtheta, rho+drho, vector); - glNormal3fv (vector); - parametric_sphere (theta + dtheta, rho+drho, vector); - glVertex3f (vector[0], vector[1], vector[2]); + glNormal3f (e.x, e.y, e.z); + glTexCoord2f (i / (double)slices, + 2*(j+1) / (double)stacks2); + glVertex3f (p.x, p.y, p.z); + if (wire) la = p; - glTexCoord2f (s+ds, t); - parametric_sphere (theta + dtheta, rho, vector); - glNormal3fv (vector); - parametric_sphere (theta + dtheta, rho, vector); - glVertex3f (vector[0], vector[1], vector[2]); + e.x = cos(theta1) * cos(theta3); + e.y = sin(theta1); + e.z = cos(theta1) * sin(theta3); + p.x = c.x + r * e.x; + p.y = c.y + r * e.y; + p.z = c.z + r * e.z; - s = s + ds; + glNormal3f (e.x, e.y, e.z); + glTexCoord2f (i / (double)slices, + 2*j / (double)stacks2); + glVertex3f (p.x, p.y, p.z); + if (wire) lb = p; + } + glEnd(); } - t = t + dt; - } - glEnd(); } diff --git a/hacks/glx/stairs.c b/hacks/glx/stairs.c index e905cae4..6832bf41 100644 --- a/hacks/glx/stairs.c +++ b/hacks/glx/stairs.c @@ -440,6 +440,7 @@ reshape_stairs(ModeInfo * mi, int width, int height) static void pinit(void) { + int status; glClearDepth(1.0); glClearColor(0.0, 0.0, 0.0, 1.0); @@ -465,8 +466,21 @@ pinit(void) glEnable(GL_CULL_FACE); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, WoodTextureWidth, WoodTextureHeight, - GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + + clear_gl_error(); + status = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, + WoodTextureWidth, WoodTextureHeight, + GL_RGB, GL_UNSIGNED_BYTE, WoodTextureData); + if (status) + { + const char *s = gluErrorString (status); + fprintf (stderr, "%s: error mipmapping %dx%d texture: %s\n", + progname, WoodTextureWidth, WoodTextureHeight, + (s ? s : "(unknown)")); + exit (1); + } + check_gl_error("mipmapping"); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); diff --git a/hacks/images/earth.xbm b/hacks/images/earth.xbm deleted file mode 100644 index dab546ca..00000000 --- a/hacks/images/earth.xbm +++ /dev/null @@ -1,2192 +0,0 @@ -/* The surface of the earth. Created with: - xearth -proj mercator -noshade -ppm \ - | ppmtopgm | pgmtopbm -thresh | pbmtoxbm - */ -#define earth_width 512 -#define earth_height 512 -static char earth_bits[] = { - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x80,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x0f,0xfc,0x00,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0x07,0xfc,0x01,0xc2,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0x3f,0xff,0xdf,0x3f,0x00,0x7e,0x00, - 0xc0,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfe,0x1f,0xfe,0xff, - 0x3f,0x00,0x1e,0x00,0xc0,0x01,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0xfe,0x1f,0xfc,0xff,0x3f,0x00,0x3f,0x00,0xc0,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0xfe,0x1f,0xfc,0xff,0x37,0x00,0x3f,0x00,0x80,0x00,0xe0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0xff,0x1f,0xfc,0xff,0x03,0x00,0x7f, - 0x00,0x80,0x00,0xe2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0x1f,0xfc, - 0xff,0x03,0x00,0x8f,0x03,0x80,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xf0,0xff,0x1f,0xfc,0xff,0x03,0x00,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0xc0,0xff,0x3f,0xf8,0xff,0x07,0x00,0x0f,0x00,0x00,0x00, - 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x3f,0xe0,0xff,0x0f,0xf8,0xff,0x03,0x00, - 0xff,0x0c,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xc0,0x1f,0xf0,0xff,0x03, - 0xf0,0xff,0x01,0x00,0x3f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xc0, - 0x1f,0xf8,0xff,0x07,0xf0,0xff,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0xe0,0x3f,0xf8,0xff,0x07,0xf0,0xff,0x03,0x00,0x7e,0x00,0x00, - 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xe0,0x7f,0xfc,0xff,0x3f,0xf0,0xff,0x07, - 0x00,0xfe,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf0,0xff,0xff,0xff, - 0x3f,0x70,0xff,0x0f,0x00,0xf3,0x07,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, - 0xf0,0xff,0xff,0xff,0x7f,0x78,0xfc,0x1f,0x00,0xe3,0x0f,0x0e,0x00,0x00,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0f,0x40,0xf0,0xff,0xff,0xef,0x7f,0x38,0xfc,0x30,0x80,0xc3,0x0f, - 0x03,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x60,0xfc,0xff,0xff,0xef,0x7f,0x38,0xfc, - 0x00,0x80,0xc1,0xfd,0x03,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x70,0xfe,0xff,0xff, - 0xef,0x7f,0x38,0xf8,0x00,0x80,0xc1,0x70,0x06,0x00,0x00,0xe0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, - 0xf8,0xff,0xff,0xff,0xef,0xff,0x3c,0xf8,0x00,0x80,0x41,0x00,0x00,0x00,0x00, - 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0xef,0xff,0x3f,0xf8,0x00,0x80,0x41, - 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x87,0xff,0xff,0xff,0xff,0x3f, - 0xfc,0x00,0x80,0x41,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x81,0xff, - 0xf9,0xff,0xff,0x3f,0xfc,0x00,0xc0,0x41,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xe7,0x01,0xfe,0xf8,0xff,0xff,0xff,0x7f,0x00,0xf1,0x40,0x00,0x00,0x00, - 0x06,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xe7,0x03,0x7e,0xf8,0xff,0xff,0xff,0xff,0x00,0xff, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x7c,0xf8,0xff,0xff, - 0x7f,0xfe,0x80,0xff,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, - 0x7c,0xfc,0xff,0xff,0x3f,0xfc,0xcf,0x41,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x00,0x7c,0xfc,0xf7,0xff,0x7f,0xf8,0xff,0xc0,0x01,0x00,0x00, - 0x80,0xff,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x7c,0xfc,0xf7,0xff,0xff,0xff,0x7f, - 0x80,0x03,0x00,0x00,0xf8,0xff,0x08,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x78,0xf8,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xc0,0xff,0x7f,0x08,0xfc,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, - 0x00,0x78,0xf8,0xe3,0xf3,0xf7,0xff,0xff,0x07,0x00,0x0c,0xf3,0x7f,0x27,0x08, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x0d,0x00,0xc0,0x67,0xe3,0xc3,0xbf,0xff,0x07,0x80,0x39, - 0xf7,0x0f,0x00,0x08,0x36,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xc0,0x7f,0xc3,0xc3,0xbf, - 0xc7,0x03,0x80,0xf7,0xff,0x07,0x00,0x00,0x16,0x3f,0xbc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0x01,0xc0, - 0x7f,0x82,0x83,0xff,0xc7,0x01,0x00,0xfe,0xff,0x07,0x00,0x00,0x1c,0x4b,0x1c, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0, - 0xff,0x0f,0x00,0xe0,0x3f,0xc0,0x83,0xff,0xc7,0x00,0x00,0xfc,0xff,0x07,0x00, - 0x00,0x08,0x8b,0x0c,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0f,0xe0,0xff,0x03,0x00,0xe0,0x0f,0xc0,0x87,0xff,0xc7,0x08,0x00, - 0xf8,0xff,0x1f,0x00,0x00,0x00,0x8b,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xc0,0xff,0x07,0x70,0x70,0x0f,0xc0,0x07, - 0xfe,0x84,0x05,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x0f,0x00,0xe0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xf8,0x07,0xfe, - 0x3f,0xff,0xe1,0x1f,0x2c,0x00,0x01,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x03, - 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0xf0,0xff,0xff,0xff,0xff,0xe0,0x3f,0x1c,0x00,0x00,0x00,0xff,0xff,0x03, - 0x00,0x00,0x00,0x00,0x00,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x00,0xf0,0xff,0xff,0xff,0x3f,0xe0,0x3f,0x38,0x00,0x10, - 0xc8,0xff,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0xff,0x3f,0xf0, - 0x3f,0x78,0x00,0x18,0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff, - 0xff,0xff,0x3f,0xf8,0x3e,0xfe,0x01,0x30,0xfe,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x03,0x00,0xe0,0xff,0xff,0xff,0xff,0x3f,0x3c,0xfe,0x03,0xc0,0xff,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfc,0x27, - 0xc0,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xf0,0xff,0xff,0xff,0xff, - 0x1f,0x1c,0xfc,0xff,0xc0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x1c, - 0xff,0xff,0xff,0xff,0x1f,0x0c,0xfc,0xff,0x81,0xff,0x0f,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf0,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0x3f,0x0c,0xf8,0xff,0x81,0xff,0x1f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x00,0xc0,0x00,0xff,0x7f,0xfc,0xff,0x7f,0x0e,0xe0, - 0xff,0xc1,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x60,0x80,0xff,0x7f,0xf8, - 0xff,0xff,0x0f,0xc0,0xf1,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x30, - 0x80,0xf0,0x4f,0xf8,0x37,0xff,0x0f,0x00,0xc0,0xff,0xff,0xfb,0x01,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x00,0x38,0x00,0x70,0x07,0xfc,0xe3,0xff,0x3f,0x00,0x80,0xfb,0xff, - 0xa1,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x1c,0x00,0x70,0x87,0xfe,0x01,0xdf,0xff, - 0x01,0x00,0xff,0xff,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x1c,0x00,0x38,0x86, - 0xff,0x03,0x0f,0xff,0x01,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0x0e,0x00,0x00,0x06,0xff,0x83,0x07,0xfc,0x03,0x00,0xff,0xff,0x07,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x04,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0x1e,0x00,0x00,0x06,0x9f,0xc1,0x03,0xf8,0x3f,0x00,0xff, - 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xf0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0x3f,0x00,0x00,0x82,0x1f,0xe1,0x03, - 0xf0,0xff,0x81,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xf0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1f,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, - 0x86,0x1f,0xc0,0x03,0xf8,0xff,0xc3,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x00,0x00,0x86,0x3f,0xc0,0x01,0xfc,0xff,0xff,0xff,0xff,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xdf,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0x3f,0x80,0x01,0x7e,0xf8,0xff, - 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, - 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xfd,0xff,0x1f,0x00,0x00,0x80,0x7f,0x80, - 0x01,0x1f,0xf0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x01,0x00,0x00,0xc0,0xf9,0xff,0xff,0xff,0xf9,0xff,0x3f,0x00, - 0x00,0x00,0x7f,0x80,0xb1,0x0f,0xf8,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x30,0xe0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xe7, - 0xf8,0xff,0xff,0x00,0x00,0x80,0xff,0xc0,0xf1,0x0f,0x3c,0xfe,0xff,0xff,0xff, - 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0x30,0xf0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0x71,0x78,0xff,0xff,0x3f,0x00,0x80,0xff,0xc0,0xf9,0x07,0x0e, - 0xf4,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0x1f, - 0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0x08,0x78,0xff,0xff,0x7f,0x00,0x80,0xff, - 0xe4,0xff,0x03,0x07,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x02,0xfb, - 0xff,0xff,0xff,0xff,0xff,0x01,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1, - 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xf8,0x23,0x06,0x30,0xe3,0x3f, - 0xe0,0x00,0x80,0xff,0xfd,0xfe,0x03,0x01,0x82,0xff,0xff,0xff,0x3f,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0xc3,0xff,0xff,0xff,0xff,0xff,0x03,0xf8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xf0,0x01, - 0x00,0x00,0xc3,0x3f,0x00,0x00,0x80,0xff,0x7f,0xfc,0x81,0x01,0x00,0xff,0xff, - 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xdf,0xef,0xff,0xff,0xff,0x03,0x82,0xff,0xff,0xff,0xff,0x7f,0x03,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, - 0x00,0x00,0xc0,0x81,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0xff,0x3f,0xfc,0x81, - 0x01,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0x0f,0x83,0xff,0xff,0xff, - 0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x7e,0x00,0x00,0x00, - 0xfe,0x1f,0xf8,0x81,0x03,0x06,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfd,0xf9,0xff,0xff,0xff,0xff, - 0xc3,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x7c,0x00,0x00,0x00,0xfc,0x0f,0xf8,0x80,0x00,0x3f,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0xf8,0x1f,0xf8,0x80,0x00,0xcf,0xff, - 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xbf,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00,0x00,0xf8,0x0f,0xfc, - 0x83,0x00,0x8c,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0xff,0x1f,0xf9,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00, - 0x00,0xf8,0x0f,0xf8,0x87,0x00,0x14,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, - 0x00,0xf0,0xff,0xff,0xff,0x7f,0x17,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x0c,0x00,0x81,0xff,0x07,0xf8,0xc0,0x00,0x00,0xff,0xff,0xff,0x3f, - 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x71,0xe0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0xe0,0x83,0xff,0x0e,0xf8,0x00,0x00,0xc0, - 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x70, - 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x30,0xf8,0xff,0xff,0xff, - 0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x06,0x7e,0x0e, - 0xfc,0x01,0x00,0x00,0xfe,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, - 0xff,0xff,0x3f,0xe0,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x10, - 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff, - 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, - 0x1f,0x1c,0x7f,0x1c,0xfc,0x03,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,0xe0,0xfd,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x30,0xfc,0xff,0xff,0xff, - 0x0f,0xf0,0x8f,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xff,0x0f,0xfc,0x1f,0x7c,0xfe,0x0f,0x00,0x80,0xfe,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x3f,0xc0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,0x0f,0x04, - 0xfe,0x0f,0xfc,0xff,0x19,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfc,0x3f,0x38,0xf8,0x0f,0x00, - 0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xdc,0xff,0xff,0xff,0x3f, - 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xc0,0xff,0xff, - 0xff,0xff,0x0f,0x10,0xf8,0x03,0xf8,0xff,0x3e,0x00,0x00,0xf8,0xff,0xff,0x0f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xf8,0x7f, - 0x18,0xf0,0x7f,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfc, - 0xff,0xff,0xff,0x7f,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, - 0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x08,0xc0,0x01,0xf8,0x3f,0x3c,0x00,0x00, - 0xe0,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00, - 0x00,0x1c,0xe0,0xff,0x38,0xf8,0x9f,0x01,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00, - 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x21,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xf0, - 0x01,0x30,0x00,0x00,0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x7c,0x00,0x00,0x10,0xc0,0x3f,0x3f,0xd8,0x0f,0x9f,0x01,0xfc,0xff, - 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0x9f,0xf9,0xff,0x0f, - 0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x10,0x00,0x3f,0x1e,0x98,0x0f, - 0xbe,0x01,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, - 0xff,0x73,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xe0,0xff, - 0x0f,0xf0,0xff,0x0f,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xff,0xff, - 0xf7,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x78,0x02,0x00,0x10,0x00, - 0x40,0x06,0x88,0x1f,0xee,0x01,0xe8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, - 0xf8,0xff,0xff,0xff,0xff,0x39,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0xb0,0xff,0x1f,0xf8,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x83,0xff,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa, - 0x03,0x00,0x10,0x00,0x00,0x02,0x80,0x0f,0xfc,0x03,0x80,0xff,0xff,0x0f,0x00, - 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x7f,0x78,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x00,0x10,0xf8,0xff,0x1f,0xe4,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0x01,0x00,0x10,0x00,0x00,0x02,0x80,0x07,0xfc,0x03,0x80, - 0xff,0xff,0x27,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0x0f,0x00,0x08,0xf8,0x83,0x7f,0xc6,0x3f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x7c,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x02,0xc0, - 0x03,0xde,0x07,0xd0,0xff,0xff,0x23,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, - 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0x07,0x00,0x07,0x08, - 0x01,0x00,0xe4,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x00,0x00, - 0x00,0x00,0x02,0xc0,0x02,0xff,0x03,0x10,0xff,0xff,0x37,0x00,0x00,0x00,0x00, - 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff, - 0x07,0x00,0x01,0x1c,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x12,0x00,0x00,0x00,0x00,0x00,0x01,0xc0,0x01,0xff,0x01,0x00,0xff,0xff,0x3f, - 0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x3f,0xf8,0xff,0xf7,0x03,0x00,0x02,0x0e,0x00,0x00,0x80,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x80,0xff,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xff,0x0f, - 0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x40,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0xfc,0xff,0xff,0x01,0x00,0x00,0x06,0x02,0x00,0x00, - 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xc0,0xff,0x00,0x06, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xff,0x1f,0x20,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x8c,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfe,0xff,0xff,0x01,0x00,0x00, - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xec, - 0xc0,0xff,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x1c,0xc0,0xff,0xff,0x67,0x00,0x00,0x00, - 0x80,0x0b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff, - 0xff,0x03,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x14,0xe0,0xff,0xff, - 0x43,0x00,0x00,0x00,0x00,0xda,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xc3,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc1,0xff,0xff,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7f, - 0x34,0xe0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf7,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xcf,0xff,0xff, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x81,0xc9,0x7f,0x3e,0xc0,0xff,0xff,0x11,0x00,0x00,0x00,0x00,0xe2,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, - 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x02,0xff,0xff,0x3f,0xc0,0xff,0xff,0x63,0x00,0x00, - 0x00,0x00,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff, - 0xff,0x1f,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc4,0xfb,0xff,0x1f,0x00,0xff, - 0xff,0x3b,0x00,0x00,0x00,0x00,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xf1,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xf0,0x1f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x68,0xff, - 0xff,0x1f,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x20,0xf8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xe7, - 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x60,0xfe,0xff,0x07,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0xf8, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0x0f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xfc,0xff,0xc3,0x00,0xfe,0xff,0x1f,0x00, - 0x00,0x00,0x80,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc, - 0xff,0xfe,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x30,0x38,0x00,0x30,0x00,0x00,0x30,0xf8,0xff,0xc3,0x01, - 0xf8,0xff,0x03,0x00,0x00,0x00,0x90,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xfd,0xff,0xb9,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x1c,0x00,0x18,0x00,0x00,0x38, - 0xf0,0xef,0x03,0x10,0xfc,0xff,0x09,0x00,0x00,0x00,0x88,0xf8,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xb0,0x71,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, - 0xff,0x07,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0x00, - 0x00,0x00,0x90,0x1f,0xe0,0x47,0x00,0x30,0xf0,0xff,0x16,0x00,0x00,0x00,0xf0, - 0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0x7f,0xb0,0xc3, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfc,0xff,0xff,0x07,0x00,0x00,0xe0,0x1c,0x00,0x00,0x00,0x00,0x00, - 0x80,0xf8,0x03,0x00,0x00,0x00,0xc0,0x0f,0xe0,0x03,0x00,0x3c,0xf0,0xff,0x08, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, - 0xfe,0x7f,0x90,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,0x10,0x3c,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0xc0,0x3f,0xe6,0x07,0x10, - 0x38,0xf8,0xff,0x04,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0xfe,0x7f,0x90,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x18,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0xf8, - 0x3f,0xc7,0xef,0x30,0x38,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfe,0x7f,0x18,0x87,0x01,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, - 0xff,0xff,0x1f,0x00,0x00,0x1c,0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x01,0x78,0xfe,0xff,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfe,0x3f,0x30, - 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfc,0xff,0xff,0xff,0x1f,0x00,0x00,0x0c,0xff,0x7f,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,0xf0,0xff,0xff, - 0x00,0x00,0x00,0x10,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xfc,0x3f,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x06,0x00,0xfe,0xff,0xff,0xff,0x33,0x02,0x80,0x9e,0xff, - 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xf9,0xfd, - 0x03,0xe0,0xff,0xff,0x00,0x00,0x00,0x90,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xbf,0xf8,0x3f,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xff,0xff,0xff,0xff,0xf3, - 0x07,0x20,0xcf,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xff,0xff,0xfc,0xff,0x07,0xe0,0xff,0x7f,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf0,0x7f,0x20,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xff, - 0xff,0xff,0xff,0xff,0x07,0x00,0xfe,0xff,0xff,0x4f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x87,0xe0,0xff,0xff,0x00,0x00,0x00, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x7f, - 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x02,0x80,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfe,0xff,0xff,0x9f,0x02, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x9f,0xf9,0x0f,0xe1,0xff, - 0xff,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc9,0xff, - 0xff,0xff,0x9f,0x3f,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x84,0x03,0xc0,0xff,0xff,0xff,0xff,0xff,0xf7,0x07,0xfe, - 0xff,0xff,0xff,0x05,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0xc0,0xff,0xff,0xdf, - 0xf0,0x0f,0xe3,0xff,0xff,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x2f,0xc0,0xff,0xff,0xff,0xbf,0xfc,0x60,0x03,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8f,0x03,0xe4,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0xfb,0xff,0xff,0x7f,0x0a,0x00,0x00,0x00,0x00,0x08,0x00,0x00, - 0xe0,0xff,0xff,0xff,0x00,0x3f,0xf6,0xff,0xff,0x03,0x00,0xc8,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x07,0xe0,0xff,0xff,0xff,0x7f,0xf0,0xe0,0x04,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xcf,0x01,0xef, - 0xff,0xff,0xff,0xff,0xff,0xff,0x97,0xfb,0xff,0xff,0x7f,0x0a,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x01,0x3f,0xfc,0xff,0xff,0x01,0x00, - 0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x05,0x00,0xff,0xff,0xfb,0xff, - 0xc0,0xc1,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x80,0xff,0xa0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xf8,0xff,0xff,0xff, - 0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x00,0xfe,0xfc, - 0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, - 0xfe,0xff,0xf3,0xdf,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc0,0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3, - 0xfc,0xff,0xff,0xff,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0x00,0xfe,0xfd,0xff,0xff,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0x00,0x04,0xf0,0xff,0x7f,0x47,0x00,0xc0,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x7f,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0xff,0xff,0x00,0xfc,0xff,0xff,0xff,0x00,0xc0,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0x2f,0x00,0x00,0xe0,0x9f,0x1f,0x01,0x00,0xc0,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0xff,0x3d,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x80,0xff,0xff,0xff,0x00,0xf0,0xf7,0xff,0xff,0x01, - 0xc0,0xff,0xff,0x1f,0xbf,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0x1f,0x0f, - 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0x3f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff, - 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0xff,0xff,0xff,0x00,0xf0, - 0xff,0xff,0xff,0x01,0xc0,0xff,0xff,0x7f,0x01,0xff,0xff,0xff,0xff,0x0f,0x00, - 0x00,0x00,0x1e,0x07,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, - 0xfe,0xff,0xff,0xff,0xff,0x2f,0x00,0x38,0x00,0x00,0x00,0x80,0x00,0x80,0xff, - 0xff,0x7f,0x00,0xf0,0xff,0xff,0xff,0x01,0xe0,0xff,0xff,0x7f,0x00,0xff,0xff, - 0xff,0xff,0x0f,0x00,0x00,0x00,0xdc,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1f,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0x4f,0x02,0x00,0x00,0x00,0x00, - 0x80,0x00,0x80,0xff,0xff,0x3f,0x00,0xf8,0xff,0xff,0xff,0x01,0xf0,0xff,0xff, - 0x3f,0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x9c,0x01,0x00,0x00,0x38, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xf9,0x1f, - 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xdf,0x00, - 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xff,0xff,0x3f,0x00,0xf8,0xfb,0xff,0xff, - 0x03,0xf8,0xff,0xff,0x7f,0x00,0xfe,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x3c, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf0,0xfd,0x0f,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff, - 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf8,0xff,0x3f,0x00, - 0xf8,0xfb,0xff,0xff,0x03,0xf8,0xff,0xff,0x3f,0x00,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x01,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, - 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf0,0xff,0x7f,0x00,0xf8,0xf1,0xff,0xff,0x03,0xfc,0xff,0xff,0x7f,0x80,0xff, - 0xff,0xff,0xff,0x01,0x00,0x00,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0xf8,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xaf,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0xe0,0xf1,0xff,0xff,0x27,0xfc,0xff, - 0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xbc,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, - 0x03,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf, - 0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x00,0x60,0xf0,0xff, - 0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x70,0x00,0xfc, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xff,0xff,0x01,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xdf,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, - 0x00,0x00,0xf0,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x78,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xff,0xff,0x00,0x00,0xf0,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x00,0x78,0x00,0xdc,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x77,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x38,0x00,0x9c,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, - 0xff,0x01,0xfc,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x3f,0x00,0x00,0x00,0x00,0x10,0x24,0x00,0x00,0xf0,0x7f,0x00,0x00,0xe0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x1c,0x00, - 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xff,0xff,0xff,0x01,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0xc0, - 0x3f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x07,0x00,0x0e,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x01,0xf8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x00,0x00,0x00,0x00,0x00, - 0x3e,0x00,0x00,0xc0,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x01,0xfe, - 0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0,0x03,0x00,0x00,0xe0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xc0,0x83,0x02,0x04,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff, - 0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xc0,0x03,0x00,0x00, - 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xc0,0x03, - 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, - 0xc0,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0x00,0xc0,0x03,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x02,0x00,0x00,0x00, - 0x00,0x40,0x00,0x00,0xa0,0x03,0x00,0x20,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0x01,0xe0,0x03,0x00,0x04,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x83, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x06,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xc0,0x03,0x00,0x00,0x80,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x7f,0x00,0xe0,0x03,0x26,0x0c,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, - 0xbf,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x0c,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0xc0,0x07,0x00, - 0xc0,0x01,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xe0, - 0x03,0x60,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xf9,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0x00,0x00,0x00,0x00,0x48,0x00, - 0x00,0x80,0x07,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0x00,0xc0,0x03,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x31,0xff,0xff,0xcf,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1b,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x80,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x80,0x8f,0xe7,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xff,0xff, - 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0x7f,0x10,0x80,0xff,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x20,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x13,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00, - 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0x3f,0x18, - 0xc1,0x3f,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x00,0x20,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00, - 0x03,0x04,0x00,0x00,0x06,0x01,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xfc,0x7f,0x9c,0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, - 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xf8,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xe0,0xff,0x3f,0xf0,0x17,0x00,0x40,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x60,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00, - 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0x3f,0xf0,0x1f,0x00, - 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, - 0x00,0x00,0x60,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00, - 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff, - 0x37,0xb0,0x1f,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x80,0x01,0x00,0x00,0x00,0x00,0x60,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, - 0x00,0x80,0x3f,0x00,0x00,0x00,0x38,0xc0,0xfb,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xfc,0xff,0x77,0xf0,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0xe0,0xfc,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x00,0x00,0x00,0xc0,0x7f,0x00,0x00,0x00,0xfc,0xe3,0xfd,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0x71,0xf0,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0xe0, - 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xc0,0xfd,0x00,0x00,0x00,0x7f, - 0xfe,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xe0,0xff,0x79,0xfe,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, - 0x00,0x00,0x80,0xc0,0xfd,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xe3, - 0xff,0x51,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xc3,0xc3,0xff,0xf9,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0xe0,0xfe,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x03,0x00,0x00,0xf0,0x3f,0xe0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xc3,0xff,0xfb,0xff,0x00,0x00,0x00,0x00, - 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00, - 0xe0,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x13,0x00,0x00, - 0xe0,0x1f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xc1,0xff,0x93,0x47, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x1c,0x3e,0x00,0x00,0xf0,0x1f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1, - 0xc1,0x3f,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x08,0x3e,0x00,0x00,0xe0,0xff,0xc7,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xf1,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xf8,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0e,0x00,0x00,0x20,0xfb,0xcb, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x0f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x04,0x00, - 0x00,0x90,0xfd,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf8,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, - 0x00,0x0c,0xc4,0x07,0x00,0x2e,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7d,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, - 0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0xc0,0x03,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xd1, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7a,0x00,0xf0,0xf3,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x08,0xfe,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f, - 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0x00, - 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xf0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff, - 0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xa0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xfe,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x20,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0x01,0x0c,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x0f,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x01,0x0e,0x00,0x10,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x30,0x3c,0x00,0xfc,0x01,0x0f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0xff,0x7f,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xa0,0x00,0x00,0x78,0x3c, - 0x00,0x7c,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xc2, - 0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0x00,0xe0, - 0x00,0x00,0xf8,0x00,0x00,0x3e,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xb8,0x87,0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0x00,0xc0,0xe3,0x01,0x00,0xfc,0x3e,0x00,0x7c,0x00,0x0d,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0xff,0x3f,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x00,0x00,0xef,0xc3,0x01,0x00,0xfc,0x7f,0x00,0x7c,0x00, - 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0xff,0x1f,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xff,0xc2,0x07,0x00,0xfe, - 0xff,0x03,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0x1f,0xfe,0x07,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x01,0x00,0x00,0x00,0x00,0x00,0x80, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xff, - 0x86,0x0f,0x00,0xfe,0xff,0x07,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x08,0x1f,0xfe,0x07,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x03,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0xc0,0xff,0x0f,0x1e,0x00,0xfe,0xff,0x07,0xf0,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1f,0xfc,0x80,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x9f,0x03,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x00,0xe0,0xff,0x3e,0x3e,0x00,0x7e,0xfc,0x03,0xe0, - 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,0x3c,0xf0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0x7f,0x7e,0x38,0x00, - 0x10,0xe0,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf0,0x1f,0x9f,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x06,0x00,0x00,0x00,0x00,0x00, - 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x78, - 0x7f,0xfe,0x34,0xf8,0x03,0x00,0x00,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0xff,0x4f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x06,0x00, - 0x00,0x00,0x20,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x00,0xf0,0x7f,0xff,0x3d,0x3c,0x00,0x00,0x00,0xe0,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x27,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0c,0x00,0x00,0xf0,0xe3,0x03,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf8,0xff,0xff,0x7d,0x3c,0x00,0x00,0x00, - 0xf0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xcf, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x1c,0x00,0x00,0xfc,0xff,0x1f,0xfe,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0xff,0xff,0x7d, - 0x7c,0x00,0x00,0x00,0xf0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x38,0x00,0x00,0xfe,0xff, - 0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, - 0xfe,0xff,0x0f,0xff,0x78,0x00,0x00,0x80,0xe0,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc4,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x73, - 0x00,0x00,0xff,0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0x04,0x3e,0xff,0xfc,0x00,0x00,0x00,0x80,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x73,0x00,0x00,0xff,0xff,0x3f,0xfe,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x03,0x00,0xfc,0xff,0xfd,0x01,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0x00,0x00,0xfe,0xff,0x3f,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc, - 0xff,0xff,0x33,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x20,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x01,0x00,0xfe, - 0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xcf,0x01,0x00,0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0xcf,0x7f,0x06,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xdf,0x03,0x00,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, - 0xfc,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x80, - 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0x3f,0xfc,0xff,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x80,0xff,0xff,0x9f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x3f,0xf0, - 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xff,0xff,0x37, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, - 0x00,0x00,0x3c,0x80,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0xff,0x83,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xf7,0x07,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x1f,0x00,0xfe,0x83,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfe,0xc1,0xff,0x8f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x40,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x70,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf8,0xc1, - 0xff,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x78,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xe0,0x03,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0x87,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, - 0x00,0xc0,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xe0,0xff,0xe7,0x07, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x07,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x0c, - 0xf0,0xff,0xff,0x8f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0xbf,0x1f,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x9f, - 0xff,0x3f,0x00,0x00,0x00,0x40,0x00,0x00,0xc0,0xfd,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x1c,0x00,0x00,0x0e,0xff,0xff,0x00,0x00,0x00,0xc0,0x00,0x00,0xe0,0xfd,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0xfc,0xff,0x00,0x00,0x00,0xfc,0x00, - 0x00,0xf0,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0xf8,0xff,0x00, - 0x00,0x00,0xfe,0x01,0x00,0xf0,0xfc,0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x07,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x78,0x00,0x00, - 0x00,0xf0,0xff,0x01,0x00,0x00,0xfe,0x03,0x00,0xf0,0xfc,0xff,0xf8,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x70,0x00,0x00,0x00,0xf8,0xff,0x33,0x00,0x00,0xff,0x07,0x00,0xe0,0xff, - 0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xf8, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0x80,0xff, - 0x0f,0x00,0xe0,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0xfe,0xff, - 0x3f,0x00,0xc0,0xff,0x0f,0x00,0xc0,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xf7,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03, - 0x00,0x00,0xfe,0xff,0x3f,0x00,0xe0,0xff,0x8f,0x00,0x00,0xff,0xff,0xf9,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xf8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xe0,0x03,0x00,0x00,0xff,0xff,0x3f,0x00,0xf0,0xff,0xcf,0x01,0x00, - 0xfe,0xff,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xf9,0x3f,0x08,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0x80,0xff,0xff,0x7f,0x00,0xf8, - 0xff,0xff,0x01,0x00,0xfe,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x73,0x3e,0x08,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0xc0,0xff, - 0xff,0x7f,0x00,0xfc,0xff,0xff,0x01,0x00,0xfe,0xff,0x5b,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x09,0x08,0x00,0xfb,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0x0f,0x00,0xf8,0xff,0xff,0x7f,0x00,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff, - 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x03,0x00, - 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0x0f,0x00,0xfc,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x33, - 0x00,0xfe,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0xfe,0xff,0xff,0xff,0x00, - 0xfe,0xff,0xfb,0xf7,0x00,0xfe,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xc0,0xff, - 0xff,0xff,0xff,0x01,0xfe,0xff,0xfb,0xf7,0x01,0xff,0xff,0xdf,0xfd,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xe0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x18,0xe0,0xff,0xff,0xff,0xff,0x01,0xfe,0xff,0xff,0xf7,0xc3,0xff,0xbf, - 0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, - 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, - 0x08,0x00,0x00,0x00,0x00,0x10,0xfe,0xff,0xff,0xff,0xff,0x03,0xff,0xff,0xff, - 0xf7,0xcf,0xff,0xdf,0x1f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0xa0,0xff,0xe7,0xff,0xff,0xff, - 0x03,0xff,0xff,0xff,0xf7,0xef,0xff,0xff,0x6f,0xfe,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, - 0xff,0xff,0xff,0xff,0x07,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0x7f,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, - 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x10,0xe0,0x0f,0xff,0xff,0xff,0xff,0x07,0xff,0xff,0xff,0xe7,0xff,0xff, - 0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x01,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xff,0xff,0xff,0xff,0x0f,0xfd,0xff, - 0xff,0xef,0xff,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, - 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, - 0xff,0xcf,0xf9,0xff,0xff,0x1f,0xff,0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0x3f,0xfe,0xff,0x83,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0x3f,0xfc, - 0xff,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00, - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xf9, - 0xff,0x7f,0x3c,0xfc,0xff,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x78,0xfc,0x7f,0x80,0xff,0xbf,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xf8,0x3f,0x00,0xff, - 0x9e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, - 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3, - 0xf8,0x27,0x80,0xe3,0xdf,0xc7,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1f,0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0xf3,0x07,0x80,0xfb,0xff,0x83,0xc5,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x40,0xe4,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfe,0x07,0x80,0xdb,0xdf,0x8f,0x03, - 0xfc,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x80, - 0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf8,0x07,0xc0, - 0xe3,0xff,0x0f,0x01,0xc0,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x3f,0xf8,0x0f,0xc0,0xe3,0x3f,0x1c,0x00,0x00,0x7f,0xef,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x08,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xe0,0x1f,0xc0,0xc9,0xef,0xff,0x03,0x00,0x8e,0xdf, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x80,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa0,0x1f,0xe0,0x81,0xff,0xff, - 0x1f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, - 0x48,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x7d, - 0xe7,0x57,0xff,0xff,0x1f,0x00,0xfc,0xff,0xf6,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x81,0xff,0xff,0x33,0xff,0x7f,0x3f,0x00,0xf8,0xff,0xdf,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xc0,0x00,0xf0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0xff,0xff,0x1f,0xe0,0xf1, - 0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,0x00,0xf8, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff, - 0xf7,0xdf,0xe1,0xe3,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, - 0x00,0xe0,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf, - 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x3f,0x00,0x00,0x00,0x20,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x38,0xf8,0xff,0xdb,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf0,0x8d,0xf7,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0xfe, - 0xf9,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xe7,0xfd,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x00,0x00,0x00,0x02,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x37,0xf2,0xc7,0xff,0xff,0xff, - 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x02,0x80,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0, - 0xc7,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x02, - 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0xf8,0x07,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x01,0x00,0x00,0x04,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xf8,0x07,0xff,0xff,0xff,0xff,0xff,0xbf, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x04,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x04,0x00,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x03,0xf8,0x07,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x08,0x00,0x00,0x00,0x00,0xc0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x08,0x00,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x01, - 0xf0,0x07,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0f,0x00,0x80,0x07,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x02,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x01,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x01,0xde, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, - 0x00,0x00,0x00,0xf0,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00, - 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, - 0x00,0x00,0x01,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xbf,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x01,0x00,0x00,0x00,0x01,0xfe,0xbf,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0xfe,0x8f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, - 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, - 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, - 0xfc,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, - 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, - 0x00,0x00,0x00,0x00,0xfc,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x10,0x00,0x7e,0x80,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, - 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, - 0x00,0x7f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0x40,0x00,0x80,0x7f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0x7f,0x80,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0x7f,0xc0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, - 0x00,0xf8,0x7f,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0x00,0x00,0x00,0xfc,0x7f,0xc0,0xff,0xfb,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0x7f,0xe0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0x3f, - 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, - 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, - 0x00,0x00,0xfe,0x3f,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0x3f,0xf0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x02,0x00,0xf0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc, - 0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, - 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x00,0xfc,0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1f,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x7f,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, - 0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xf0,0x07, - 0x00,0x00,0xf0,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xc0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x01,0x00,0xfc,0x0f,0x00,0x00,0xf8,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0x00,0x40,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x01,0x80,0xff,0x1f,0x01,0x00,0xf8,0xff,0xff,0xff,0xcf, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xc0,0xff,0xbf,0x01,0x00,0xf8, - 0xff,0xff,0xff,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x80,0xc0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xc0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xc0,0xff, - 0xff,0x02,0x00,0xf8,0xff,0xff,0xff,0x0f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xe3, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, - 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0xfe,0xff,0xff,0x0f,0x00,0xf8,0xff,0xff,0xff,0x0f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x03,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0x1f,0x00,0xf8,0xff,0xff,0xff, - 0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0x1f,0x00, - 0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xf8,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1f,0x80,0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, - 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xd1,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xfe,0xff,0xff,0x7f,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x02,0x10,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0xff, - 0xff,0x3f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x03,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1f,0xfe,0xff,0xff,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x01,0xf0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, - 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0x0f,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x01,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf8,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x80,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x3f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xc0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x3f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xf0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xbf,0xf2,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf2,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1b,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x4f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf1,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6f,0xe8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xdf,0x88,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x4f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe8,0xef,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, - 0x00,0xee,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x3f,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1e,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0x06,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x1e, - 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x1e,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x06,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x83, - 0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0x3f,0x06,0xfc,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0x3f, - 0x02,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0x77, - 0xff,0xff,0xff,0x18,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xc6,0xff,0xff,0xfc,0xff,0xff,0xff,0x3f,0x04,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xc7,0xfd,0xff,0xe1,0xdf,0xff,0xff,0x0f,0x00,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xf7,0xff,0x87,0xff,0xff,0xff, - 0x00,0x02,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0c,0x7f,0xb3,0xff, - 0x00,0x30,0xff,0xff,0x08,0x02,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x30,0xff,0x01,0x00,0xfe,0xf7,0x1f,0x02,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x01,0x00,0x00,0x80,0xff,0x01,0x00,0xf8,0xe7,0x1f,0x03,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0x03,0x00,0xf8, - 0xfd,0x03,0x03,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00, - 0xff,0x03,0x00,0xe0,0x3c,0xdf,0x03,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x03,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x40,0x38,0xff,0x01,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, - 0xff,0xff,0xff,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0x00, - 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0xff,0xff,0xfd,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0xff,0xff,0xff,0x7f,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x7f,0xc0,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xc0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfe,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x06,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xf4,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x00,0xfc,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xe0,0x9f,0x3f,0xfe,0xff,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0x03,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, - 0x00,0xfe,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xcf,0xff,0xff,0xff,0xe7,0x0f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0x03,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf, - 0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xee,0xff,0xff,0xff,0xc7,0x3f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x9f,0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, - 0xff,0x87,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xfc,0xff,0xff,0xff,0x87,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0xfe,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x9f,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, - 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x38,0xf8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0x70,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x79, - 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc0,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xbf,0x38,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff, - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf1,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x38,0xbf,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x8f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x18,0xfe,0xff,0xff, - 0xef,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0x7f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x83,0x01,0x00,0x00,0x00,0x00,0x00, - 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, - 0x00,0xc0,0xff,0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0x07,0xfe,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x80,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x1f,0x00,0x80,0x1f,0x00,0xc0,0xff,0xfd,0xff,0xff,0xff,0x03, - 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, - 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x87,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x02,0x00,0x00,0x02,0x00,0x80,0x03,0xc3, - 0xff,0xff,0xff,0x00,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfe,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, - 0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, - 0x00,0x00,0x01,0x00,0xff,0xff,0x1f,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf8,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, - 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb, - 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xfb,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, - 0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xff,0xff,0xff,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf8,0xf7,0xf9,0xff,0x00,0xff,0xff,0xff,0xff,0xff, - 0x3f,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,0x00,0xff,0xff,0xff,0xff, - 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xe7,0xfc,0xff,0x00,0xfe, - 0xff,0xff,0xff,0xff,0x3f,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,0x00, - 0xfe,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f, - 0xfc,0x7f,0x00,0xfe,0xff,0xff,0x3f,0xfc,0x0f,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,0x00,0xfc,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xe0,0x1f,0xfe,0x3f,0x00,0xff,0xff,0x7f,0x00,0xe0,0x0f,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,0x00,0xf0,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1f,0xff,0x3f,0xc0,0xff,0xff,0x01,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,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xbf,0xff,0x1f,0xc0, - 0xff,0x7f,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,0x00,0x00,0x00,0x00, - 0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xff,0x07,0xc0,0xff,0x1f,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, - 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0xff,0x00,0xc0,0xbf,0x07,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,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x3f,0x00,0xe0,0xff,0x03,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,0x00,0x00,0x00,0x00,0x00,0x00,0xf4, - 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x1f,0x00, - 0xe0,0xff,0x01,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,0x00,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0x1f,0x00,0xe0,0xff,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, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0x3f,0x00,0xf0,0xff,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, - 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0xf8,0xff,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, - 0x0f,0xfe,0xff,0x01,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,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0x03,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,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0xff,0xff,0xff,0xff,0x1f,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,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0xfc,0xff,0xff,0xff,0xff,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0xff,0xff, - 0xff,0x1f,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,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x80,0xff,0xff,0xff,0x0f,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, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x1f,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0xf0,0xff,0x1f,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xfe,0x1f,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,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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}; diff --git a/hacks/images/earth.xpm b/hacks/images/earth.xpm new file mode 100644 index 00000000..851c89fc --- /dev/null +++ b/hacks/images/earth.xpm @@ -0,0 +1,303 @@ +/* XPM */ +static char *earth_xpm[] = { +/* width height ncolors chars_per_pixel */ +"512 256 40 1", +/* colors */ +" c #243C6C", +". c #22386A", +"X c #2A365E", +"o c #28485F", +"O c #5D544A", +"+ c #FEFFFF", +"@ c #9B6852", +"# c #2B446B", +"$ c #24447B", +"% c #D0ECF2", +"& c #BE8F63", +"* c #3E5C5F", +"= c #FBF7DD", +"- c #1C3C79", +"; c #786A63", +": c #244B8E", +"> c #244484", +", c #795C50", +"< c #2B4384", +"1 c #304D78", +"2 c #5D5B58", +"3 c #FCFCF4", +"4 c #1B3363", +"5 c #8DD9F0", +"6 c #233C7B", +"7 c #74BADE", +"8 c #D0C89D", +"9 c #5F6859", +"0 c #827B78", +"q c #233C6D", +"w c #2C3C65", +"e c #28448C", +"r c #2C447C", +"t c #2C3C7C", +"y c #FFFFFF", +"u c #1C346C", +"i c #243466", +"p c #334971", +"a c #2C3C74", +"s c None", +/* pixels */ +"55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555", +"555555555555555%5555555555555555555555555555555555555555555555555555555555557555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555", +"5555555%%5%%%%%%%%%%%%%%%%5%%%55555555555555%55%%%5%%%555555555555555555555555555%%%5555%%55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555", +"555555%%%%%%%%%%%555555%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555%%55555555555555555555555%%55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555", +"555555%%5555555555557555555%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555555555555555%%%%555555555555%5%555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555575555555555555555555555555555555555555555555555555555555555555555555555555", +"55555555555555555555%%%5%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555755555555755575555755555555", +"55555555577555555555555%%%%%%%%%%%%%%%%%%%%3%%%%%%%%%%%%%%%5%%%%3%%%%%%555555555555555555555555555555555555555555555555555%555%5555555555555555555555555555557557775555755555555555555555555555555555555777777555557577557577775555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557555555555555555555555555555555555555555555555555555555555755555555555555555555555", +"5555555555555555%%%%%5%55%3%%3%3%%%%%%%%%333%%%%%%5555%%%555%%%%%%%%%3333333%%%%%5555555%555%%555555555555555555555555555555555%55%55555555555555557777777777:77777777777755757777777777777777777777777777::7777777777777:::::77777777775575555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557777777777555755555555555555555555555555555555555555555555555555555555555555555555555555", +"55555555555555555%%%%%%3%%%%3%%3%3%%%%%%%333333%%%%%%%%%%%5%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5555555555555555555555555%%%%5%%%%55555555555555777::>>>>>$:$$$6q$6r<>>::::77777777777777777777:7::>$rrrrqq$q$q-$$$>>6$>>$r<::::::::::7777577757555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555777777755555555555555555555575555575777777777775557555555555555555555555555555555555555555555555755555555555555555555555555", +"5555555555555555555555%%3%333%%3333%%%%%%%3%%%%%%33333%%%%%%%%%%%%%%%%%%%%%%%%%%%55555555555555555555555555%5%5%%%5555%%%55555%%5555577777::::::$u-rr<<<$$q$6qq-qq-q666qqq--<:<::>:::::$$>::::$$<<:rr11:1$r$:::::1::::::<<:::::::777777777775555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555557777777755555555555%5555555775555555557777777777575555555555555555555555555555555555555555555555555555555555555555555555555", +"55555555555555555555555%%%%%3%%333%%%%%%55%%%%%%%%3%33%%%%33%%%%%%%%%%%%%%%%%%%%%%555555555555555%%%%%5555%5555555555555555555577::11qrr6u.11107700775555577777:0::::::>$quuuqqq qu.qrqurq1:::::<::11::75577777777:7::::::-6::77777::7:$q:77777::7755%55%%%%%%%%%55557777::::::1:rtrttrt$rrrraqq$<<<::777777755555777::11r1<$$rr$$$6:<<::::::1::::::7:7777777::::::::::::1:::1::771::::7777777777777777777777777777777777555555577577777757577777777755577555777775555557777757775555555555555555555555555555555%555555555555555555555555555555555555555555555555", +"5555555555555555555555555555555%%%%%%%5%%%%%5%%%%%55%%%%%%55%%%55555555555555555555555555555555555555555555577::::::1:1<$r1r1q 1775555555555%7755775555555557777011r--$$<7557555%%%55%%577%%%%%%%%%%%%%%%%%%%3%55%%%%%%57777:7777::::::::::77:1666$q---66q100000011p*001007700777000075555555557711$1075575%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33%%3%%%%%557777777777:16q6666$6$6$r1<$$$p000757770101ip1;0w22000075%%%%%%57011$---<175%33%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3%%%%%%%33%33%55577777:1q6rrrrrrar$rr1$qqq--q-q-q$$rr<1<$$<>>>775555555%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3%%33333333%33333333333333+%55577:1rrrrrrrrrr$aaq6r$rrrrr<16--1:77555%%%%%%%%%%%%%%%%%%%%3%3%3%%%333333333333333333333333333%577757:w11rrrrrrrrrr$r$tqrrrr<<$a111r1<1111 a12221;000122;20000071:7771<$$$>>6>$6<1:555555777775%%%%%%%33333%33333333333333333333333333333333333%%%%57::rrrrrrrr$rrra$qaqar$rrrrrrrrrrrrrrrrrrrrr<$1<1pp<1r<100000:<<<001::1q1p11101000rrr11r.p000;p1ar w11:77701rq6>>>$>>$>>$6>><<$$>---q->1:75%3%%33%3333333333333333333333333333333333333333%5771111r$rrrrrr$r$qqqqqrrrrrrrrrrrrrrrrrrrrrrr<$$>$>$6r<6t>e::e::7777577::0;;07007087%%==%%%%5555%%%%%%%%555555555555%%%%%%%%%%%%55%%%5", +"55%%5%%%%555555%%5%%%%%%%5%%5%%%%%%%%5%%%3%5555%55%%5%55555755555555555577:>$$$6q-q-q-6$t<111111100111111aq16$6>$>6$>>$>>6>>>$>>>>>66-u:7533%33333%3333333333333333333333333333333333333%57::1rrrrrrrrrrrr$qaqqr$rrrrrrrrrrrrrrrrrrrrrrrrr1$rr$rrr1r$r<16>6>6>6>$>>>$>>>>$>$$>>><<$rrr:::::::7777::::7775555%%5%%5%3++++yy++yy+3%33%++++++333%%%%%%%%%%%%%%%%", +"3+3%5555%%5555555%%55%%%%%%%%%%%%5%%%5%%%5%%%%%%55%%%5555555557:111>$$666<$$$qq10000000001:r$rqqqq6qq6$6111rq$qq<:111< q2000001ruq11121-$::::1777::-6>$>$>$>>>>$>6>>$>>>r><$r$t$:5%33%33333333333333333333333333333333333858000;11rrrrrrr$r$rr$$rtqq$6r$rrrrrrrrrr$rrrrrrrrrrrr1rr<1>>12::::::ra::::7777777::::2;;::::::::::77757007000878%%%5%3+++++++++++++++++++++++", +"5%%55555555555%%577777777775%%%%%%57:77:::::::::<<1::111:::::1$6$$>6r$$$$$$$6q1000000001101001<:<$r16>6>>6>>><$>>>$$>$$>$<175%33333333333333333333333333333333333%7711000rrrrrr$rrrrrrrrrtqqqta$rrrrrrr$rrrrrrrrrrrrrrr<$>>-$6q-6q--qq-qq6>:::::775%%%%%%%5555%%%7075555", +"4rr 177777777557::::$uqq.w1:17557:$---6-66>>6>>>>>$6>>>666>>6>>>>$>$>$$$$$tq100000002<10000000001:001100;1.aa11100;0;1up21.qqqq2;0;;r19;;;;01ppp05%7:$q--6$$>$>>$>$>r>$>><$<$rt>:775%33333333333333333333333333333333%%%8800121rrrrrrrr$rrrrrrrr6$qqa$t$rrr$rrrrrrrrrrrrrrrrr$rr$rrrrrrrrrrrrr::>>0000000001:001::>$$r6:<$r6qa11p1r1aqii44wwX4444ii4", +"pp.44rr$$$$$$$>>><><><<>>><><<><>$>>>$>$<>$$>$$6$6tt1100201u1100000000000000*0;90:qqqq.a1:1*a12;16><>$<$<>>$>$>r$::71:053333333333333333333333333333333335000;77::6rrrrrrrrrrrrrrrrqq6q$rr$rrrrrrrrrrrrrrrrrrrrr$>$$t$$6$66$$$$aqq-qq.qu....444ui.i4wp", +"211u.qqq66$666666q$6r$r$6666r111*111:1<<$$>$>$>$>>$>$$$<><><>r$>r>$$$tq66$$q$qqqa1qqq$q111010000009;;9999901$rr6qqqw.q1099*91$qaw1222;0000;00002;0,08570770:::66$<$>><$<$<$<$<$>rr$:::17333333333333333333333333333333%%%%5:u:071rrrrrrrrrrr$rrrr6r$qqqt$rrrr$rrrrrrrrrrrr$r$r$rrrr$rrrr$rr$$$rr1p121pp22021<$<1<1<<<<<1>66>r$$$$6$6$6111w11$<$>$>><$<$>r6>7777:7533333333333333333333333333333%075755711prrrrrrrrr$rrrrrrr$aqrt$rrrrrrrrrrrrrrrrrrrrrrrrrr$rr$q.q. 1wi111ar qww44444", +"uuu.qqqqtq$tqr$6$$r666$<0000;29;;;;;;;;;;;00;999999;;111::<$6q$111111200010:11011099111$q1101************12*92:awr$10911po*****rr$<><$<$>$<:77:1p7%33333333333333333333333333333+33357:1rrrrrrrrrrrrr$rrrr$6aqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr$r1r120@;9;000000000000000011111r$>r><>r>>><$$66-q$17%3333333333333333333333%%3+%%%5777:6qr$><$>>$r<110%333333333333333333333333507121wa66trrrrrrrrrrrrrrrrrrrrrr6qr6rrr$rrrrrrrrrrrrrrrrrrrrrrrrrp12;;;OO*99O9;;9;9;;;000000000000000011rrrr10011rr<:00000;0000000000000@@;;;;;,;;;000pr0@@000;,;;,,;,;;;,;;,,,,2,O,2OOOOOOOOOOOOOOOOOOOOOOOOO,2000,;;&;,,,,OO0=888888080&@,,,O,,,,,2;;,,O22222,,,O,2;;;;;;0000;00;;00000000000000000000000000", +";;000;*qq quqqqqqq$quqp;2;22222222200099222099O22929O2299**99999999999999999*999999999999999*9***999*oo9999*****99;9999**99******9;110020000$r$>$>>r>r<:1205+3333333333333333333+y%01qqqt$rrrrrrrr$rrrrr$rr$rrrrrrr$r$qaqrqrrrrrrrrrrrrrrrrrrrrrrr$rr$rp;@;99*9O999;;;;;999;9;;00;000000000002arr102ar<000000000000000000000;;;,;;;;;;@@00pr;;@@;;;;;;,;;;;;;22,;,,O,,2O,,OOOO99OOOOOOOOOOOOOOO2OO,,;;@022OOOOOOO2O,;080888808&,;;;O2,,,,,,,;,O,,,,2,,,,,,;;;;;;;;;;;;;00;00000;0000000000000;00000", +"000;000p10::<-qqqquqr1<.wp*oo*229;2922929999999*92999999999999999;9999*9999999***99111992999999*99999*o*999*****99922;99O99*******9;;1122011q6a$66qqqqr1100X;00;;08%777::6rr>r>$>$$<::008+33333333333333+%%%%%51qtrrrrrrrrrrrr$1<$$$$$$$<<$$r$r$rr6qq6rrrrrr$r$rrrrrrr$rrr$rrrr-1*1*9*9999*9**999999999***9**929**O99******22;00111rrqqq$6t$q6qq-10000;;0001XX0070:rr6$$>r>r<$r:75773+33333333333+3%7:711aqrrrrrrrrrrrrr11001rp12p1;001$rrr$rqq$q6rrrrrrrr$rrrrrrr$rrrrrrrr$p0;99OO929;@@@0;;;0;;,;9;;,;;000pa1<111<100000000000@@00;;0@;;0;;;;;;;;,,,;;,;;;;;;;;;;@@@;,,;99;;;;O,,O,,,92,29O99,9,99OO9O9OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO2OO8808388;0&8@O,,O,,;,;,,,,,,,O,,,,,OO,;;;;;;;,;2;0008@08888&@0;2;;0;;00;;0;;00", +"2u**p1;000012p...wp0;0;0;;22922***9**9292*O*;9OO999*9999999;999999999*9*99******::$***9**9**9****************o*****9999***********20rp;11:$qqtq$611:1:1000*O;;00:>uw111r$$$$r>$>r>rrap017+33333333333%50111qq$rrrrrrrrrrrrrr$111;000;000070;16$rt$6qqarr$rrr$rrrrrrrrrrrrrr$rr$$p;@OOOOOO9;;;0;ar6$1;;;;9;@99;0;01rr11aa1000000;0000@0@;;;;;;;;;;;;;;;;;OO;;9;,;;;;;;;;;;;;,;;29999929,99,9,,99229O9O9O9OOOO99O9OOOOOOOOOOOOOOOO9OOOOOOOOOOOOOOOOO,,@08=8808&8;,O00,,OO2,,,O,,,,O,,,,,,2,;;;2O2;O00O,0800088@;0;;0;;;;;0;;;00;0;", +"..4uu4ip20144uii..41p1*p*wp222**O*2**22*Oo;0080O*999999*999999999999*9999*9*********9999****99*9****oo*******o***oo***************11 1;0000:-$rqq10011*200100000007$.r$$tr><>$r$r$ta11%+3333333333%7-tr$rrrrrrrrrrrrrrrrrrr<<10000755%5711rr$rqqqqr6rrr$rrrrrrrrrrrrrrr$$$$r2;@,*O9OO9;;@;02$$r20;999,;2;;;@9;011100020000;000;;;;;9;99;;9;,;;;9;;,O,,,,,,2;,;,99;;;;29;999299999O,9,,,,,O99999O2OO99O9O9OOO9O9OOOOOOOOOOOO9OO,,OOOOOOOOOOOOOO*22O;8&8%=388%888800800;;;;,,,,,,,,,,,,OO2O,,O;20&,O58=888088&0;;;000000;002pXi", +"u4.4u.uuiw..w .i...iuuuuu.w2O2*O*90*9O;100%78%5700O2O9999*9999;9,99999999**99**9999********99999****9***o**o******oo************111 120001*211qqrr1rqqq.p20000000,01<66$>>$>r>r>r112992**O9O0009O998%8000&88800002OOOO99999999999*99**9***999***991****99***O******ooo****o#***o*2**9*9***rqqqqrq11 r<1rrqqr<$r>rrrr::8+3333+333571rrrrrrrrrrrrrrrrrrrrrrrrrrrta1<1t6q$>>>$>r>rtr$t::73+33+33+%7rqrrrrrrrrrrrrrrrrrrrrrrrrrrrrr$$6$rrrrrrr$r6qq qqrqr$rr$rrr$rrrrrra2;;,999OOOOO9;;;016$rr@@;9O92292222;@,,,9;;@;@@@;;;@;;;;;99999999999999O99,OOOOOO,999;;;;9999,,99,OO99O9O9O99O9OOO99O9O999OOOO9OOOOO9OOOOOOOOOOOO2OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO;@083y38%3%8880;;02O,;0;,8,03+==8,,OO0,XXO20;;;;;0%%8880000100#", +"..4i4......i..ii..ir0222222O****OO99;28%;O*99;009000&08870000;O02999999999O******9***9*9999*1-#1*****O***ooo*ooo*********9*aqq6q6qq6qqqq6wqqqr1ra;;000;001quuu4iw1r$q$$<$<>>>$$t$$1*************oo*oo**oooo***2>>>r>t>$>>><>$>r$<>r<$<>$>r><$><><>r><<$<<<$><><<><><>r<$><><><r<<><<<$r$rr$r$rrrr>rrrrrrrrrrrrrrrrrrrrrrrr$rrrrrrrrrrrrrrrrrrrqr1*99***p. q q$qtq61191a;@2;900qp01r$p;;r1@,,9O9,OOO99999O999,,,9OO999O999OO9999O9OO999O*OOOO,;,9999992999999999999O9O9OO99O9999O9OOOOOO22O9OOOOOOO,OO,,OOOOOOOO2OOOO2O9;00;O880080888@200,0888&0080808;98%=0*waarqrqtrr$tr6$rrrr$rr6$OOO7+8022i4i.i....4i4.4..4..4i.4i", +"...4i.....................44r1002w4.1*..uiu........i.......4ii4****;*OO;0080*O90009O****99,99*99*9***o*9*****oo**oo*o**o*****999*11qqa66qqa6$qwrq$q2;2;;222;;;p;;;;;,;0;:6>>r>r<><$<<$rrrrrrrrrrrr>rrrrrrrrrrr$rrr$rrrr$rrara2;9O9*.. q$q10;;p-p;9;;0;r11$rr0@,;;,;,,9999OO9*O999O9999OO9O9;9O99OO9OO9999O999O999OOO;,9,,99999,9,,9999,9OOOO9O9OOOOO,99OOOOOOOOO99OOOOOOOOOOOOOOOOOOOOO2O9OO,,;;08088&888008808808&00;058000O,838&;wq6$r$r$tqr$t$6r$t$6$q$6a2OO53&&OO1w......4..4..4i4i.4..4..", +".4.i4.4........i........ir1100144u ..u....4.u.......iii.iu....i4w*2**9O2;0280;2**O**99***999999**99**oo*9****o*ooo****o******9999;911$qqqqq$qq11qq1;;222,222;;220;;;2;;;1<>$r><<$<<<<$r$rr$rr$r$rrr$r$rrr<$rrrr$rrrrrrrr$>r<$$><>rr$rr$rrrrr$r$rrrr$<r1111p9O99*.q #29;*0;p;pr6$$rr$r19,,,,,9,,O9999OOO9OOO9999O99O999O9999O9999,9,99,9*OO9O9O99,@,@@@@;,,;@@@,,;;,,;,999,;,,,,,,,9OOOOOOO29OO,OOO,OOO,O2OO2OOOOO282;;OOOO;00;088800888=8808=88==8=80888;*w1rt$qrr$rtr6rr6rt$$$r$r$$r2O0=@O;,,w4.... ..4....4..4.4..4.4.", +"4i4.4i..ii...i...i4..w11w.ii............4..4.......i..i4..u.i.4..i.wiX**O*OOOO*99229OOO99*O****OO**************oo***ooo**oooo**O**;;122;;;;a q 12;;,2222OOO*o2,,9p;;;;;;,20011r6$666$t$r$$$r$r$r<$r$rrrrr<$rrrrr$rrrrrrrrrrrrrrrrrrrrrrrrrr$rrrrrrrr*9991**O9;*w u222*21p161r*2;21;,,9,OO9OO9OO,99OOOO9O9999999999,9O9,,99,9;@9,@@;,,9999O,,,9,,@@@@@@@@@@@@,@@,;;,;;;,,,@@;@@,@,,OOOOO2;,9;00O0O;0OOO,OOOOOOOO001090O;,O002888800888&@0;,@;;,,0&80O,,Oop*1$r6$qrr$a$t$r$$rt$t$t$r6*O8&,OO22p4..i. . ....4..4.4..4.4..", +".4..ii..i.i.......1ai.ii..........................u......ui......4r1#4***9OO*O*29O200;09O29O9*O***29*********o#*oo*o#****oo******9;22;;2;;; ...20;2OOOOOO*****2OO****22;2;2*20p$66qrr$r$r$t$rrrr$rrrrr$r$rrrrr$<>r$r$$rr$6*,2au q..........4...4.4.4.u.4....", +"..4....u.ui.i.....i......................u....................4..4.i.4.4iq*900900****O*O*90009O929*2**9************o*9o****o**oO**O*******2*******o***o*o*****o**O*O;9;0;;;;p*a1p.qq$rr$rtr$rrrr$rrrrrrr$rrrr11$12O9OOOOOOOOOOOOOOOOOOOOOOOOO9O9OOOOOOO,O,,,OO,,,,@;;,99O9;;9@@@@@@@@&@&&&&@&@@@@@@@&&&&&&&&&&&&&&&&&&&&&&@&&&&&&&&&&&&&&@@&8&8&&8@O;00,@;&880;O,,;,,,,@;0&888%8@@@@@@,;,,;888888,,,,,,@,,@,O;,,,2*,8@O2rr,O;r$r><>r$<<>$$6$qq.q...........u.4....u...4...", +"u.u.uuuuu...........................................u.........4.....4.4.4.4uw292X**O*****O*o0070***O992******************#****O***o********oo**OO**O***O**oO***pp*22ww11iii4w0;;;201q6$t$r$rr6rrrrrrrrrrrr$r$r$rrrrrrrrrrrrrrrr$rrrr>:<$6r66qqqq......u.u.u...u.u...u...u.", +"...u...................................................4........4..4.4....4.44*9*oO*9**O***;*O00OO**O999*************************$:-$******o****O*O**ooO*o**9*o*OO2;p44iiii 00;;;0;1rqa$r6rt$rr$r$r$rr$rrrrrrrrrrr$rrrrrrrrrrrrrrrrr<$<$>r><>>$<$$$$qqqq.uu.u.u.....u....uu..uuuu", +".u...u.u............................................................4.4.4..4i4X992*9929*9**;*O*oooO9*O9O*999*2********o**o*****p6::>--$o******o****oOoO**OOO****OO214ii..iiw12122021< qqqaq66r6rqr$rrrrr$rrrr<$rr$rrrrrrrrrrrrr$$t$6qququq..uuu.uuu..u.uuuuuu.u.", +"..u......................................................4..4..4...4.4...i.i4i4o990;99OO*2*O**2**o*O**O*999999***************ooq1**$-$$#*OO*****o*o**oO*Oo**O**OO,;*. i.ir ii4i4a1i10. aarqt$6$a$a$trrrrrrrrrrrrrrrrrrrrrrrrrtap,2$<r><<$>r$r6$6qqq.quuq.u.u.u...u......u.u", +".u.u.u..............................................................4.4.i4.4i44o99999222**o*00*000*o*O*O*O9**999*****************OO**9;91******o***oo**OoooO****9O2;111 1riiiiiiiii... wa aaqqq6qq$6r$rrrrrrrrrrrrrrrrrrrr<<<$<>r>r>$$<$r6qqqququ.u.uuuu.u.u..u.u.u.u.", +"u.u..............................................................4.4.i.....i4i4*;9909OOO*00000800000*o***OOO*99******************OO**$121::1$1OO****OOoo*OOOO**O*9**2*2111#ii.iiii...... w qqqqqqqqqtr$rrrrrrrrrrrrrrr<<<<<$r>r<$<>$<$t$6qqqq.u.qququ................", +"...............................................i....4..u....u..u....i.4uiui4i442;900999**20000800;000o00o*O****O*o*************O***o:$9;9*>>11oOO99OO**o*OOOOO*9ow1**9**w4i..iii....... ..... . q qaq$qr$rrrrrrrrrrrrrrrrrr2;1>><<<11r<$>$<$t$$6qqquuq.qu.q.qu..............", +".u.u............................................i.i...............4..4.i4i4.iii*;9999999O**00008000802*7*oO***o********************o-99991$$992***1*******OO*o#w4.*;p.i4ii.i................... .. qqqa6rrrrrrrrrrrrr<;,;211<<<><><$<>r>>r>$$>r$66qq ..q.qq..................", +"...........................i.i..............4.i....u..uu.u.u........i..4i4.4iiw99OO9,9999O2990000;08O008;***O***********O****OO****$>*99*9*pOO91##>#********w4i4i.p#4.i...4........................ . qqqr$rr$rrrrrrrr$<$$>$<$$6r$qqqqqu.q....................", +"................................................i.............u..4.4..4.4.iii.i9999999999999;9220;880;0000**O*O********************$>**9*9O2**>1******oooo*$4i....44........................... .. .... qrqtrr<$<<$$$$<$>r$6qqq u...........u..u..u..u..", +"..u............................................4............u.......i..4.444i4i*99O99;999999;0;O000;0;00080*OO**O9*******O*********1$**O*O1::>1***o***oO*O91...ii....................................... . qa$t$rrrr$<2@,,O;,,,,,OOOOO9*. 4;24ip;;@@2*4i4X2@,;;;;;;,@@@wiiiiw*922oXiiii.44;&&@@&&&8&;www4909&8&&&&&&&&&&&&&&&@&@@@@&&@@&&&8&00&888&&&&&@@@@@@@&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@&&&&&@,200OOOOOO9OOOO,OO,,2p6r<$<r>$>$$$$6r$rt$66qqqq..........u.............", +"..........................................................u.......4.iui.4..4ii4o9922990;99;99@8;28000985050o*OO999**99**O*O*O**************o*****o*ooo*O*oow.4........................................... . qq66$rrrrrr<$rr*;;,,;;,,,;;,;2*w . . .*2i.iw;;@&02w44*&@;@@@@@@&&&;2**;;@&&&&0;*w*op;@@&@&&@@&8&0 .p1q9&&&&&&&&&&&&&&&&@&&@@@@@@;888000&8&@&@@@@@&&@@@@&0&&&&&&&&&&&&&&&&&&&&&&&&&@&&@@&&&&@&,,,,OOO,O22OO,OOO,,,*6rrrr$r$$6tq6q6$6r6qqququ..........u.u..u..u...", +"...u..............................................4.............ii.i4iu..iu.4.i*2*0099;;;;29;@8&O8%80o28800OOO*99999999**O*OO*********O***O******ooo*O*o#.4i...4......................................... . qqaq6r$rrrrrrrrr<$<<<<<<<<<$r$$$tqqaq .. ...............................u..u..u..u........", +"...............................................................i.......i.4.......ui.4.4.4.4.4..4.u4p14.4X;O,OOO*O****4...4u.u.uiu..u..u.4woooo4uuu4.. .u...................................... ....... . . . . . . ..w. . .. ....iw4w=88&&&8&&&&&&888&88888=88888&&&@&&&&88&8888&&8888&@&88&88888888=88888&&&&&p rr0;;@@&&&&&88&88&888&8888&&090piwXwXwXwwX.4w;@;@@,@@,@@@@;,,@@@@@@&@@@;;;00;;2O,O,O,OOO,,,OOOOOOO,,OOOOOOO929991$rrr*,2r<<<rrrr<1;,,O9,OO2OOOO9992OOOOpqq#2X.i.w. w wqaarqarqrq$qqqw . . . ... . ... ....................u..u...u...........", +"..u..............................w# ..........4................i..4...4.u.u.u..u.u.444.4.4.u.uu.uu4u.u.u4i2***oOOo****wu4.4u.44o*oo*.u...u..u...u.oooo..iu..u....................................... ... .. . .... . . .... ...i..42==88&8=8=8888888888888888&&88888&&&8888&&88888&@@@@888&8888888888888888&8&@@pwi*000&&&&&88&888888888888880pXww. w..wiwXwiX.X442,,@@;9,@@@@@@@@@@&01rrrr1rr12,;,O,,OOOO2999O92Op. .#*pi....w wqw$wqqqa q .. .. . . ...... ..................................u....u....", +"................................i4*1............i....................4..u.....u.u..u..4.4.u.uu.u4..4.u..uuX9***Ooo*oO*o4.u..uuiooo*ou..u.........u.i...4oo*oo....................................... . ... . .. . . . .........wi.i4;=8888888=8888888888888888888888&&&&&888888888888&&@&88888888888888&88888&&&;p.w4p&&&@&&888888888888888888wiww w wwww.w.wwXwwi2@,@@,,@@@@@@@@@@@1rrrrr6$aaqaq qq q q q q q q . w .2,9O999,999999,,;;;,;,,,,@@@;;@@;210&@@@@&@@@@@0w.w w w w w.ww w w. w w . w w ww ww.w.wwww ww.ww.w.ww..ww w.w wwXw.ww.w.w.X.iwwo9;;@;2pwXwiXw@@@@;,2222,@piX*44.Xwii.iw1wwpp1X*pi... . . . . ...............................................", +"............................................u....u..u.u4.......i.i4444i4iii4i4i4i4i4.4i4.4444u.444.u.u4u.4.u.u...u..u..u.u..4...44.4.i4.4...u4;*ooo*oo**o*oooooooooo*oooo**o**o**O*******1::>rtrr6rqqqqqq qq q . q . . w229,O;,,,,,92,,,;;;;,,,@@@@@@;@@2r<0@@;@@@@@&@;#.ww ww#w w w w ww w w ww w www ww.w w.ww ww.wwww.w w.wi w.w .wiw....w...w*4*,,@,9pX4Xw.i;@&@,O22O2@;w4w;o*;;2iiiiw*wiwp;@@;*wp*.... ..... w.w..... ..................................4.......", +"........................................u.....u.......4..4.u.i..i.iiii4ii4ii4iii4i4i4.4.44.4.44..4u.u..uu.4.u.uu.uu.4.u.u..4.4....4..4i4..i.4p2oooo*o***ooo**oooo*o*oo*ooo*o*******o**O****:1#a$qtqaaqaqqq q q q q q qq q q . .*;;,;,,;,;9,,;,;;;;@@,@@@@@@@@@&2<0@@@@@@@@@@@p.ww ww w # ww.w w w w ww. w w ww .w w.www.ww.ww.w.www. w.ww. .w www X .iw..X.i*oX9O@@@9w;wiXwX;&@;O2,,@;iii*&@@;**p2ppi*w4***;@9;w 1po*wi.. . ww.ww..w .....................u...............u....", +"................................................u...u...........4.i4i4ii4ii4i.4....4..44..444u.4.4.4.4.4.u.u.u..u.uuu.4.4u444i...4.44.4.i4..4;2oooo*oo*o***o*o*oo*oooooo*ooo*oooo*o**********oo#1>t$qqqq q . .. q .p0;;9;,,,99,;9,,,@@@@@@@@@@@;,@@20;@@@@@@@@@;p.wwwww w w w. w.w w w w w w ww w .w .w.ww w w.w w.w w ww..w.wwwiw..Xw.w.w.ww...4p.2@O,@,202.pw42&&,O,,@@24ii2@@@p4Xw*p#4Xi4wp4w**;w4#*OO9*pw.i.i...pp ..p# ........................................", +"...................................................u..u....u..i...ii4ii4i4i..4..4..4..i.4.4.444444..4.4.u.u.u.u4.uuuu..u.44.44444.444i.i4..i400ooooo*o*ooo*ooooooooo*oooooo*oooo******oo*O*o**OO*:$ qqqq w q q . . q q q .*@,;;,,,,,,,,,@@@@@@@@@@@@@@@@@@@@;@;@@@@@@p.wwww ww.w w w w w.w w w w w w w w w. ww.ww ww wwww w www.w .w w..w..ww..wi.X..XpX;,,@@@0*#9wiw;;@;@@@&2i.w@@*;;wii4X2*w;;;2iw2,;2#**99*OO92w ..... ...ww*w i............................u.u......", +".........................................u.u..u.....u..u.u.u.u...i.4i4ii4i4i4.4..4i4.44.i444.4.4..4..4.u.u4..u.u...u.u.4...44i444.4.4.4.i.i44p*o*oooo***oooo*oooooo*oooo**ooo***o***o*OOoO**Oo*O*1O21121 q . q . . 4*0;,,,,,,,;,@,@,@@@@@@@@@@;@@@@@@@@;@@@@&;.w wwww w ww w w w w w w w.w w w.ww wwwww. .ww w ww w..w. ww.w.w..wi X ..w ...iXXX;;@@@2iwwwwi4X*ww2@;*iw.*;w,@*iXii2;w2*X;w4p;2;99O**O**O9O91a.... ...iw##w.....................................", +"......................................u..qu.q........u.u.qu.u..i.....i4ii4ii.i.4.i4i4.i44i.4444444.4.4u.u..4u.u.uuu.u.4.44.4444i4444.4.4i.4i4q1ooooooooo*ooo*o*oooooooooo**o****oooo*o**O******29O,;;,&&;#.. . .q q w. . i*;;,,,,;,,,,@@@@@@@@@@@@@;@@@@@@@@@@@@&@*.www www w. w w.w w..w w.w w www w w ww w w w www. .wwww. ..w.w .w..w.w..wiw .w.Xiiw;@;@2iw.X.w..i.iXp..wiw4;*w@;wXi.44iiii4wwiXiw29999*O*OOOO**1ri.i...4p*p......................................", +".................................uquq....u...u..u...u.u.u..u.u.4..4....4iii4i4i.i4i4..4i44444.44.u4.4...4.u..4.4u.4u.4.4..44i4444i4..i.4i4i4#00oo**o*ooo**o**oooo*ooo*oo*oooooo*oo*oo****OO***O*OO,,,O,@@;r..... . .... . . . . . 2;;,;;,,,,,@@@@@@@@@@@@@;;@@@@@@@;@@&@;ww.w.www ww ww.w w w.w w . w w w w .w. ww w.www .ww.w..w.w.www.w..ww...w.. . ...i.X.X2;@94iiwwiwX..wwiwwiwi#0oX*;p.wiXiXiXiiXwwwXw4.p*9*****o*OO91..#ww##9*ii ............................u......", +"........................................u..qu......uq..uq.....u.....i.4iii4iii4i4i4i4i4i4iii.444444..4.4..i4.u4.44.4..4.4.4i444i444.4.ii4i44p80oo*o*oo*ooooooo*ooo*ooooooo***o*o****oOo*****OOOOOO22,O,@@@211$.w . . .. . .w...q$1;;;,;,,,,@@@@@@@@@@@@@@;;@@@@@@@@;@@02w.w.w w w w w .w .w.w w.w ww w w w w w . w w. w.....w.w.w.w.w.ww..Xww.w.. .w.w iiwi4**2o*w.i.iiiwi.w.X.wwwpp4XpwwiXiiiiii.iw1p#2iX441********2O9*p#**11pX4..1.4.................................", +".................................u..u..q........u....u....u....u..4..ii4X4i4i4..i4i4i44444.4..4.4.4.44.u4.u.4..4.4..4..4.4444444i44.i4i4..44X0;oo*oooooooooo*oo*ooooooooooooo**oo**********OO*OOOOOOO,O,@@,2**$i .... . . . . w. $r;,;,,,9,@@@@@@@@@@@@@@@@2@@@@@@@@@@;@0ww.w.w wwww ww w w w w w .w w w w ww www w. w...w.w. www.w w.w.w.w...w.w.w. ..wii..iiX2@;;2ww**pwpw w.i.XwiwXXiX.i.XiXiXiXi.i4124.ii$*O*****O**O;;#iw#.i...i#1ww................u...............", +".....................................qu..u.q........q..u...u..........4i4ii.4i.4i4i4i4i4i44.4.44444u.4.4.4.4..4.u..4..4..4i4i444444i4i.4...4.00ooo*oo*ooooooooo*ooooooooooo*oooo***o***oo*OOOOOOOOOOOO,,@@,OO;1iw. . . q . . .2;;;,@,,@@@@@@@@@@@@@@@@;0@@@@@@@@@@@0p..w.www w w w.w www.w w w ww w w w w w . ww.. wwww... ..w.w.w.w.w.w.w.w.w.w.wwiX...i..iww2,@@;@@@0;*wiwwwi.iXwwXiiXiiww.iX.i*piiXii..i1*22*******O;*4i4ii......iw*. ..............................", +"............................................u......u..uq.u.u.........4iiii4i4i..4i4i4i4444i4.4...4..4.4.4.4..4.4.4.4i4..4i.4444ii..44.ui....u410oo**o*oooo*oo****oo**oooooooooo*o*********O**OOO2OOOOOO;;,OO,@1.. . . . . i#@,;,,@,@@@@@@@@@@@@;@@@@0@@@@@@@;@@@0w w.w w ww www w.w w w w.w .ww w w w w.w.wwww ww w.. .ww.www. w.w. w.ww.w.w.w....w....iwiiiXp**O;@@;;;pwww#wwwwX.wpwow2pwwwpi2wiiii..iw92;;9O**1#p*O2pi.. i.....iw*.##..............u..............", +"....................................u.................uq........4...4.i4i4iii4.4..i4.44iii4i4i4.44.4.4.4.4.4.4..4.44.4.4.4.4i4i44..4..........4;2o;9o*oo**o*****ooooooo*ooo***o***o*****Oo*OOOO2OOOOOO,OOOO,,;* .. . . . w . w ..w;@,,@,;@@@@@@@@@@;;,@;;@;;@;@@@@@@@@0w. w www w w w . ww w . w .w w w . w..w w ww.. ww.w.w.www.... w. . w..w.w.w..w.w.wiwiwii.iii4.4wo*w222*;;;;*p;;2**w*;2*XXiXXXi.X...iiwpw4p;,;;q4iX*O;w4 # ......4w#...w ..........................", +".....................................................q..u...4.....i4ii4i4iii4i.i..4.i4i4..i4i4.444.u4.4.4.4.4.4..4...4..4.4i4.4.iu4.....4.4...u10o2*o**o*o*oo***o*o*o*ooo*o*o*o*ooo**ooo*o*OOOO,O,OO,OOOO2O,,,Oi.. . . . .p0;;@;,,@@@@@@@@@@;@@@;;@;;;@,;@@@@@@@24w w ww.## w .w w w ww w w w www .w w w w.www w. . ww.wwwww.w.w w ..ww.w.w.w.. ...ii.i.X.w....wiii.iii.wpwX29wwXXX2;2wXiXiiiXiiiXi...i.i.ipp**i. iw**;pw#i.w.i.......pw...........................", +"..................................................uq..uq..u...4......4.ii4i4i.4i4..i.44i4.4i4i4..44.44.4.4.4.4..4..4u.4.44i4.4..4i...u4........41*ooo*oo*oo*o*o*oo*ooo*o*o**o*oo******OOO*OoOOOO,OOOOO22O**O@@*iw.. . ... . . . . . . i000;;@;;@@@@@@@@@@;,@@;;;;;0@00@@@@@@;w.wwww.w.ww ww w. w w .w w w w w. w w..ww. w. ww w w.w.w.w.w.wwww.w.wiw...w.w.iii.iiwi.i.w.wiw..i.ii.w;9iw4*@X4iXX.iXii.iii.i.i.....4i.4.w..i#*2;*#Xii..i......ww#w.........u...............", +"............................ .......................qq.q.uq.......4.i..4i.4i4iii..4.i4i4i4.4.4...44u4.4.4.4.4.44..444.4.4.4..i.4..u..u.....u...u10ooooo**ooo**oooooo*o*o*o***ooooo****OOOo*OOOO,OO,O2OOOOO22,2i.... . . . . .. . . . .4*0@;;@;@@@@@@@@@@@@;@@;;;;;@00;@@@@@@@;i w..w. w w ww w w w w w w. w ww . ww.w.w .www. w.www w ww. .w..w.ww.w.w...w..w.w..wiw....X....i.i...X..i...iXwwwpXiXXiiXiXiXX.iiwiiw.ii.i.i#w.....iiiX*X.wwi........4.#p....w.4.......u..........", +".......... ....................................u......u....u........4....ii4i4i4.i.4ii4i4.4.4i.4.44444.4.4.4.444.444.4.4.i.4u4..4.4.u.u..u...u..40;;*oooo*oo***oo*ooooooo***o***o***ooOO*OOOOO,,OOOOOOOOO*O*p4..X. . . . . ... . . .. .. . . ..p@,;@@0@&0;@@@@@@@@;@;@;;;;@00;@@@@@@@;.w.1ww .w.w.. .w w w w w w w.w. ww. ww w.www.w.www..w.wiw..w.www..w.w.X .w.ww...w.......X.w.wi...ii.wi...iwii.iiX.XXX**w1p...q ii.i.i.*o....iii..4.w.wr.i......wwu.......w...u..............", +"....................... .............u. .u............ququ.......4.i...i4.4..4ii.4ii4ii4i4.4.4.i..4.44..4.4.4444..444.4.44..4.4..u...u.u...u...u4a02OOoooooo***oooooo*ooo**ooOo**oo*oOOOOOOOOO,OOOOOOOOOO99#.. .. . . . . . . . ..40&;,,@@,;@&@@@@@@@@@;;;;;;;0@10@@@@@;@;iw.##w. w .pp.w w w w w w w . w. w ww www.ww w .wwww.w.www.w.www.w wiw...ww.w..w. .wi.w.w.w...i.i.wiw.w.iii.i......iiXiXXXw*p2;;*2*1iii..i19*i............i.i..i.... w.......i...4...u....u..u...", +"................ ...... ..................q.u...q..uq.q.q...............44...4i4iii4ii4i4i4.i4i4.4.4.444444444444.444444..44.4..4.u.u....u.u.u...400o9oooooo*Ooooooooo*o*oo*oOO*oo**OOOOOOOOO,OOOO2OOOOOO,;.... . .. .. . . . . . . 408@;,;&0@,@&&@@@@@&@@@;@;;;;;;00@;@@@;&;i w.wwr. wu90w w w w . w . w w www.w. www.w wwww w..wiw.w...wi. .....w.i..w..X...X......w....i.i..i..iii.iXiXiiiX4*;@,;;9;9pi.ii.419*#.. ........iii.i.................4.................", +"........................................u......u.....qq.uu.....u.......4..4.4.4i4i4ii4i4i4..4.4i4.4444.4444.44.4..4.4.4.4u..4..4...u....u...u....4u022ooooo**oo*o*oooooooo***OO*o***OOO*2OOO,,,OOO2OOOOO2;*u . . w. . . . ..8&,;&&&&@@&&&&@@@@@&@@;@;;;;;0;0;;;;@@@;.ww ww..200*. www w w www w w. w. wwww ww wwww.w ww w w ww.w.w wwX. w..w.w..w . ....wX. ....w..X.X.w.w.w.i...i..i.wiX4w2,@;;,92*p....i4*;9p4i. ......ii....................w....4.......u.u...", +".............................................q..q.quu..uq..qu.......u.4.4..4.44444ii4i44i4.4.4.4.4...44444.4444444444444..4..4444.4....u..u...u.4.410O**oooo*o*oo*ooO*oOOOoO*OOO**OOOOOOOOOO,,,,,O2OOOO,,w... . .. . . . . . . w42&;;@0&&&&&&&&@@&&@@@@;;;@@;;;;09;;;0;00;iw ww w iw00024 w w w w w. w w w www www www w www.w.w.ww. ..w.....w. .. .......wi.w..w...w......X.w.ii.iXiiiw*22iq*,,,;;,2922wi.ii4;@92* ........i....i................i......4...........", +"...................................................quqq.quq..q.........4.4..i...44i4i444i4i.4.4i4.44.4....4..44444i4.4.4.4444u4.4..4.4.....u.....u4<02Ooo*oooo*oooOOO*OOOOOOOOOOO**OOOOOO,,,,,,,,;OOO22;2u. . .. . . .w w . . . 408@;00&00&&&&&&&&@@@;;@@;@;;@;;;;;;;@0000w w ..i#0000; .w ww w w w w.ww w w.ww ww w w w.w.w .w.w.w ww.ww w.. .. . .w.. w..w... ..w.w.w......wi..wip2OO;2*2,@,;;,,2p4iiiii40@O,@*.......i...i................4wwi4........u.......", +".....iw ............ ...............................q...q.uuuqq..u....4.4..4.4.4..ii44i4444...4i44444444.4.4.44444444444444.4.444.4..u.4.u..u.u.u..4:02*00o9ooooooOO2OOOO2OOOOOOOO**OOOOOO,,,,,,,;O2OOOO2.. . .. . . .. .w.... . . . . . ..o88&000000&&&@&&&&&@,;;0@@;;;9;;;;;;00000r. w w.#*;;;000w ww w w w w w w ww www.ww w w.ww www.wwww. .w...ww....w .w. .......... ... .. .w....X.w..i...i.1;,,,,,,@,,;;;,,,@2.4i.i4@@O,,2q.........i...................#ii...4.4.4.4.4..u.", +"......iww ...................................qqq...qq.qu.q..q..u...4...4..i...4.4.4i4i44i4i.44.4.4.4444.4.4444i4i444.4.4.4.4.4......i4....u......u.u410;;00;*o9oOOOOOOOO,@;,OOOOO***OOOOO,,,,,,,,,O,OO;2*.. . . . . . . w . . ..i*=8&@0000&&&&&&&&&&@@@@@;;;;@;;;;;;000771.ww w.90;000&0w.w w w w a ww ww ww ww.www w wwww w.w ww.w .w..w .w. w.w..w . ..w. w . .. .. ...X..w..i..iwiir19,,,,@,2,,,@,@,,,,,;*i.4#@@O999 i. .......i..................www4...4.4.4.4.u4#r", +"..........................................ra...qu....q. ..uuu.q.u...u..u.uiui44.4i4444i44444444444444.4.44.444444.444444444..4u.uu4..u4.u.u.qq...q..4<00008;*0;oOOOO,;,,@@@;,,OO**O*OOOO,;;;;O,,OOOO,,91 . . . . . ... . . . . . . .. . . wi1=&&000&&&&&&&&&&&&&&&&0;;@;;;;;;;0077:1.w w.#00;000&0 w a w # w w w ww www w w wwww...w.. . . . w. ...w.w..... w...... .. ..wi..XiiX...iiip;;;,@@,,,,,@@@@@@@,@@@@2pu;@O;;99*............................... i.4..4.4.4....w ", +"........................................u..wrr .uq .q...u...q......u.u.u..u.4.i4i4i4.444.4i44.4.4.4.4..4u44.4i4i44..4.4....4..4....4u....u...u.q.q..q4.100002;;;OO22,,,;@@@@;,;*OOO*OOOO9;;,2*9O,OOOO2O*. . . . .. ...i*=&&@&&&&@&&&&&&&&&&&&@@&@;@;@;;;;0701..w ww .1;;000002.w www aq a w w . . .w. ww w www.w.w .wwwwwww w w .w . w... w .....w...w. .w..w..w.i...iXiwXi4w,@,@,,,,,@@@@@@@@@@@@@@,,2OOO,;,O1 .i...........................iw4.i4..4.4.44p1i4", +".....................................q.......ar qqqu.qu...q..u.u....q..u.u....u.4..444i444444444u4444u4.4.444444444444.u4.4u.4.u..4..u....u.uuu........4410;9OO;2O22;;;@@&@@;;;*OOOO22O2;;;2O*OOOOO2OOOp.. .. . . .... ....... . . .. . .40800&@0&&&&&&&&&@&&&&@&&&@@@;@;;000o.ww w .1;;;;0&&p w qa w q a w w . w w www . w w w.ww ..w .ww.w .. .. . . .........X.w.w... ..w...w.X...iiiX42@@@@@@,,,@@@@@@@&@@@@@@@@OOO,,,O*9w.......... ........... .......i.4.4.4.4.4..i ..", +".....................................w.. ..... qw#qu..u..q.qu..q.....u.u....u.uu...4...44.4.4.4..4.4.u4444.44i4i4..4....4.u..4..4.......u...u.. .u..u....u4:009O00*2;@;@&@&&0@;;2*OOO,,2;;;;;;OOOOO2OOO9w.. . ... . . . . . . . wio8&&&&@&&&&&&&&@&&&&&&&@@@@@0;;;@9p. w w w w#00;;000. q aqqqqa wqww w. w w . w .ww w w ww. ww. wwwww.w w .w w...................... i.ww....Xiiu442&@@@@@@@@@@@@@@@@@@@@@@@@,,2;,99,O;*w............. ..u.........u.4iwi4.4.4.4.4.4i..", +"........................................r....u....q .q.uquuu.q...u.....uu..u..u..u4.4.44.44444.444444u4uu.44.444.44.4.44u.4.4.4...u.u.....u..q.u.q.u....u.440000000;;;;@@@&@@&@,22OOOOO;;;,;;OO;9OO2OOO*q. .. . .. . . .... ....... . . . .. . .. .. .w.w408&@&&&&&&&&&&&&&&&@&@&&&&@@@;;9w.wwww w w 0000082. aqq6qa r#qw w w w w .w ww wwww w .w w.ww . ... . . .w....w........... . .w.w..w.w.4i#1;@@@@@@@@@@@@@@@@@@@@@&@@@@@@@@,,;9OO,,2*r ..................$ ...u.....4.4.4.4.4.44.", +"4..........................................u.....u q quuuqq.q.u.q..u....u.uu...u.....u.44i.4.4..4.4.4.444.444..4...u.u..4.u..4.4......u....u...qu.u........40&;70*02@,@@&&&&&@;;2;;;2,,;;,,,OOOOOOO9O991... ... . . . . . .. . . . . w . . ..w&&&&&&&&&&&&&&&&@2@&&&&&@@@;;@*.w w w w w.*;;0000p # $q #rq*r wqw ww.w w w ww wwwww w w www wwww.w w.. .w.w .w. ..w. ..w.. . .. ....Xii qp;;@@@@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@,O;,;,,,,,2. .q..........u.....*p4.w...i..4.4.4.4.4.4.", +".......... ..............q.................u.uuq.....q.qqu.quq..u........u...u.u.u.u.u..44444..4.44444.4.u..44444.u..4u.4u.4444.4u.uuu.uu.....q.u.uu.u..u..40&0&500*,;@@@&&&&@@;2;@;9292O22OOOOOOOOO2O,w...... . . . . .. ... .... ... . .... . ... .. . . . ..w . .498&@&&&&&&&&&&&&@0&&&&&@@@@@;;;w w wwww w0@;0@00w rq www 11 qwqw wq w w w w w.w w ww w w w w..w w . .w ..... w w .. ....w... ...... i4w;@@,,,,@@@@@@@@@@@@@@@@@@@@@@@@@&@@@@,OO,,,,OOO,pu aq..qqu.u.......4.**i. ..4.4.4.4.4.4....", +"............. ..............q.u..............uqquq.q.ququ..quq.uqu...u..u4.u..u.u......u44.4.4u.4..4.44..4.444...u.u.u4u.4.4.4.4...uu.qu.....uq.quu.....u4i4;80,&092;@&@@&@&&0&;2;@;;22OO*O*OO99OOOOO,p.... . .w. . . . . . .. .w . . . w w .w..408&&&&8888&&&&&&&&&&&0@&@@@;0@p w w w w.200;;0&9. a wq q q w a a a w w w www w w w w w www ww .w . . w. . .w . w ..w.. . . ...p;&&&,,,,,,@@@&@@@@@@@@@@@@@@@@@@@@&&&@@,OO,,,,,,O,2q..w ...q.u...........ppi............4..4.4", +"..4 i....... ...............q...i.i.......quq..qquuuuu .uuqu...u.quuu.u..u4.4.4u.u.uuu.4..4..44.4.4444.4.4.4.4444u4u44444.44444.uuu.uu.....u.uqu.qu......i40&0;;2,2O,@&&&@&&@,;22;;;9**22O*OOOOOOOOO9.... ... .. .. . . .... .. . . ..... . . . .. . . .. .... . . ..w.4280&&8888&&&&&&&&&&@&&&&0&@;@0p w# w w .*0;,;@0p w q a a qaqw q a w w w w w ww w w w.ww.w . .w .w . w .. . . .. . ......4*88&&&&@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,O,,,,,,OOO;p. ..q.qquqq........u.w....4.........4.4.", +"4....u...................q.u......i........q...u..q..qu.q.q.qu..u....u.u.u.4..4.4...uuuu.444.4.u4.4.4.4.u4.4444u.u4.44.4.4.4.4.4....u u.u......qq...u..4i4i4000;@;;O2O;@@@&&&@2;;;;;;2*29OOoOOOOO,9O;p.... . . .. . . .. . . . . . . . . .. . . .w.w w w ..w40=&&&888&&&&&&&&&&&@&&&&00@0@0* w w ww #0;;900ww q#a q qwq awqa# w a a w w w w w www . w ww.w. w. w .w . .w .. ..... w.w..w..i*&&&&&&@@@@@@@@@@,@@@@@@@@@@@@@@@@@@@&@@@,,,,,,,,O99;2u .....u.u.u.u.................u......4.4", +".....................u.....uu....iu......u.........q.qu .uqq.uu.q.u.qu.4.4.4.444.4u....u..444u..4u.i.44.444.4u4u..u.u4..44444444iu..u....u..u....uuiui.4.4w0020&;22,;,;@&@@@;;22;;0222;2***OOOO22**#u .. . .. . . .. . . .. . . ..... . . .. . . . ..w. . .w i4;=8&&&&&&&&&8&&&&&&&@&0&&@0;@&;.ww #wwq ww;0;0&;.# wwqwwwq rw # # qwqw w w. w ww w w. .w w .w w . . .w . ...w .w .w. .... ....u0&&&&&&@@@@@@@@@@,@@@@@@@@@@@@@@@@@&&@@&@,,,,,,;,,OOO,*w.....qqqqqu...............u..........4.", +"..4..u.u.u.u........u......u..u......4............u.qu.. ..u.u..q......u.4.4..44.4.4.4u.4.44.4..4.4.444.4u4.444.u.u4.4u4.44.4.4.4.......u......u.u..4.4iii4w8020@;2O;,@@&@;;,;29;;;;OOO*2*OOOO**w4uu.. . q . . . .. . . . . . . . .w.w . . . . . .w. .w . .. .ip8=&&&&&&8888&&&&&&&&&&&&0@0&0w w r w arrq20000p a a w qq q a qw w w a qw w w w wwww . ww.w w . . . w. . .. ....w..wX.w.X.40&@&@@&&@@@@@@@@,@@@@@@@@@@@&&@@&&&&&&&&@@,,,,,,,OO,,O,O q...q.u.u.u.u.........................", +"....u.u.................u...u.u.u...4.4i.....u.......u.uu.q.uqq.q.u.qu.u..4.4.4.4.4.4.4..44.444444444.44u4.44.u4u4..u444.4.444444.4.4.u..u4...u.u..u.4i4i44p&00;0;O2@@@&&;OO2O2;2;292Ooo*oO**#qu.... q q . . . w.. . . . . . . . .... . .. . .w . . w.. . . ...i48=&&8888&88&&&&&&&@&&&&&&02ri w#a waarrrr$10p#a a a a a q a a qq q wa w w ww.ww w . ww ... . . w. w. w w. . .. ...wii.iw1&@@@@@&&@@,,@@&@@,@@@@@@@@@@&&@&&&&&&&@@@@,,,,,O,,,,,O9* ....qqqu.............4......4..4..u..", +".u......u...........q..........u....iu.4..i........uquq.u.u.u..u...u....4..4.4.4.4.4.4.4..44.4.4.4.444.4.u4.i4.u4uu4.4.4.44u4.4.4..4...u4...ui4..u4...4i4i4#&0;0@2,;,@@&@,OO0;2OO;;;;****OO*.i........ q . . ..... . . . . . . . . . . . . . . w. . .w. . .w. .w.4088&&888888&&&&&&&&&&&&&&0i ww w ra$rar>wppi...... qqq6qqq qqqqqq. .... . . . . .. . .. ....... ..... .. . . .w . . wqar$r<<<>>rrr$rr$rrrrrr$r<<<<<<<<<;,@&&&&&&&@@@;@24.......q.......u...u............2wiu.4u..", +"..u....u.u.u4.u.u.uuquq...qu.q..q.q.qqqq.ququqqqq-q-qqq..uu..4......u...u.uu..uuuu.uu.u.u.uu...uuuuuuuuuuuuuu.4u4u.4u.4u4444.44444444.44..4.4.4i..4.4i44i0;0O@@@@@@@@@@@@@&&;;1u.uu.... qq qq6$t6qqaqqqqqq . ... .. . .... . ...... . . ...... .. .. .. . . . . q $r$r<<<<<<<>><<$rr$<$<<1<<<<<<<<<<<<><<<<<:<<r>>$-q..u.....u..uu.u.u..uu.u.uu.u.u.uuu.uu.uuuuuuuu.u.u.uu4u.uuu4u.4uu44.4.444444.4i44i4.4.4i.4i.4iiw;@2;90@@@@@@@@@@@@@@&@&;u.... .qqqq$$$r>$<$$6qqqqq ... . . .. . . ..... .... . . . . . . . qqrr<><<<<><<><><<<<<<><<<::<:<<:<$>>>$>>>66-q.............u.u.u..uuuuuuuuuuu.uu.uuuuuuuuuuuu.uuuuuuuu4u4uuu44u4444.4.4..4i4.4.4.4..4i.iii42@;0000@@@@@@@@@@@@@&@&;i.... q qq6$>r<<>r>r6qqqqqq.. . . . .. . .. ..... . . .... .. . . .. . .. .. . qar$<<<<<<<<><<<<<<<<<<<:<<::<<<:<$6>>$>>>>>>>>>>$6q ...u.u...q.q.u.uu.u..uuu.u.u.uuu.uuu.uu.uuuuuuuuuuuuuuuuu.4.44.4.4.444.4.4.4.4...4.4...4i4i4*@;0;0@@@@&@@@;@@&&&@;2.u.... qq6$$>r><$<>r$6qq uq. . .... . . .. . .... . . . .... . . .. . . . . a r$<><<<<<<<<<<><<<<<<<:<<:<<<:<<<$rrr$r<<<<6>$>>>>>>>>>>6>$6q.......quqq.q........uquuuuuu.uuuquu.uuuuu.u.uu.uuuuuuuuuuu4..uu444.44.4.i4.4..i4.4.4.4.i4i4X@80;@@&@@@&@;0@0ppwXuu.... qq6$>r><><>$qq q.q. . . . .. . ... .. ...... ........ ... ..... .w. ... qr$<<<<<<<<<><<<<<<><<<<><<<<<<<<<<:<>rrq q w w w w q q w q a . . .. .q. . .. . . . . . . q .... qqq.a#u..u1a. ......u.................u.u.u....uwOOp-666", +"qqqq666q66qqq..q..quq.qq6-qqqqqqqquqqqq6$>6>>>>>>>>>>>>>>>-q ...qqqqq6-q.q.qquq... uqu.uuu.u.uuuu.uuuuuuuuu..uu.uuuu.uu4.4.4.44.4444..4..4..4.4.i.i4ii4O@02@@@&&&&&@@&004uqu..... qq$$>$<>><><><>$q qq .. . .... . . .. .... . . ............. .. w . .w . . a$r><<<<<<<<<<<><><<<<<><<:<<<<<<<<<$>>>>>>>>>>>>$66qq qqqqq6$6qqq-q6qq-qqquq.uuu.uuuuuuuuuuu.u.uuuu.u.uuu.4uu4uu44444i44...i.444.4u....4.4iii4,802@@0@@@@&@;@&04...... qq6$$>>>>>>>><>>>r6q q qq . . . . .. ....... ...... .......... . . . . .. . qa$r<<<<<<<<<<<<<<<<<<<<<<<rrqq w w w w w w w w w q . w . . . . q . ... . .... . . . q. . . . . . ..q q.2;;9; .. ..q.......u..........uu.uu.u4*O29wpq6>6r6", +"rrrrrr$r6t66qqqqq.qq.q q-$$>$$$66--6-qqqq-$$>>>>>>>>>>>>>>>>6qqq6-q66>$6--666666qqqqqququuu.q.uquuuu.uuuu...u.u.uuuuuuuu4.4...4.4.4i........4.4..iiii4X,80;@00@@@@@;4**a........ q6$$<<<<<<><>>><<>$qq . . . . . . . . .. .......... .. . . . . . w $r<><<<<<<<<<<<><<<<<>$$", +"6$6$6$6$$$r6666qqq.qqqq6$$>6>>>>>>$$6--qqq66>>>>>>>>>>>>>>>>>666$$6$$6>>666$6$>666-qqqququuu.u...q.u.u.u.u.u.uuuuuuuuuu44..u4..44.i4.i4..4i4...4..4.i4w;*0;@00&&;@@;p14........ qq$$>$>>>><><><>><$$qq .q .. . . .. .. ...... ................ .. . .. . . . ... qqr<<<<<<<<<<<<<<<<<<<<<>$6$t", +"$6>6>6>6>6>$>6$66-qqq 6$$>><>$>>>>>>>>$6666$$>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>6>>66-q qquq.uuquuu.uu.uuuu.u.uuu4.uuuuuu.uu...u...44....i.....4...i.ii422p0,@;0@0;@@@22u........qq$$><<<<<<><><><>><$6q q . . . ....... ..... .. . . . . . wqr><<<<<<<<<<<<<<><<<><<<<<<>>$", +"6r$>$>$>6$>6$>>>$$6qqq6>>>>>>>>>>>>>>>>66>$>>>>>$>>>>>>>>>>>>>>>>>>>>>>>6>$6>6>>6>>$66qqqqquu.uuquuu.u.u.u.uu.uuu.uuuuuu..u.u...u......4..i.4..i4..ii.*X0;@@@@@;@;12wu........qqq$><>>>>>><><><>>>><6qq . . . .. .. .. .... ....... . .. . .. . . .. . .. qa$><<<<<<<<<<<<<><<><<<<<<<$6q.q.......u........4*0;O,*66$>6>>$>6$6", +"$>>6>6>6>>6>>>>>>6$$6$>>><>><>>>>>>>>>>>>>>>>>>$>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>6>>>6>66-qqququuuuu.u.uu.uuuu.u.uuuuuuuuu.u....u...........4....u.....i**0;@@0&@@@;0$4.......q q66$><><<<<><><><><><>$qqqq . . . . . . .. . . . q r$<<<<<<<<<<<<<><<<<<><<><<<>$qqq.qu.......u.u.uu*;OO,;r6$>>>$>>6>>>", +"6>>>$>>>$>>$>>>>>>6>$6>>>>>>><><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>6>>>6>>>>>$66qqq.q.uuuuu.u.u.uu4.u.u.u.uuuuuuu.u.u.u...................4.42220;@0@@@0;;.u.......qqq$$>><>$>>>>><>><><><<>$qq . . . . .... .. ..... . . .. .. . . .. . a$qrr<><<<<<<><<<<<<><<><<<<<><<<<>>>6qqqquu..u........w;OO2;16>6>6$6>>$6$>", +">$>$>$>$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$>>>>>>>>>6>>>>>>>>>>>>>>>>>6>>>6>>>6>6>>>6$6qqqq.qu...uu.u.u.u.u..uuuuuuuu.......qq-qq ..i.i....i....4w2w0;;;;;;@;iu.... qq qq6$6$$>$<<<<<><><>><><><>$qqq . . . . .... .. . . . . . qa$r><<<<<<<<<<<<<<<<<<<<<><:<<<<$aqw a rw #w#awa a a qwqw w wq w qarrr><>>>66qqqq.........q...121<6>6>>>>>$>>>>>", +">>$>>>$>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>6>>>>>6>$>6-qq.-..u.uu.u.u..u.4u.uuuuuuuu..u.u...q6qqq....u...u......;;002;;@@0@a44....qqqqq66$$<><<$>>>>>><>><<<><<>$$q .. . . ... .... .... .. .... . .... . . . . qar<<<><<<<<<<<<<<<<<><<><<<<<<<>>>>>>6qqqqqu....qqqqqq-pr66$6>$>>>>>>>>>>", +">>>>$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>6>6>>66>6>6>>>6>$666qq.q.uu.u.u.uu.uuu.u.uuuuuu..u4..uqq666qqq ....q.. qup*280;0;;@00011. qqqq6$$$<>>r$<$<<<<<><>><>><<><<>$q . ... . ..... . .. . . . . w . . . aar$<<><<<<<<<<<<<<<<><<<<<><:<<<<$ra w a a w wawa a a a a w wa a a q#qaarawq# w w w w w www w w w qaq q q . . . . q q qqqq6>>><><>>>>>qqq.q...qqqqqqq6->>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>6>>>>>6>>>>>>>>>6>6>>6>>>>6>>>>>>$6qqqq...uu..u..u.4u.uuuuuuuu.u..u..uq-6666qqqq qqqqqqqquX07;2,;,@@@9::.qqq6$$>>>>r$<>r>>>$><><><><>><<><>$qq . .. .. .. ... .. .. ..... . . . .. qr$<><<<<<<<<<<<<<<<<<<<><<><<><><<>>>>>><>>>>>6qqq q.qq-6q6q6>$6>6>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>6>>>>6>>>6>>>6>6>>>$66-qqq.u4.u.4u.u.4uuuuuu.u..4u...u.qq666$66q-qq6qqq66-X,0800,,;@0@;1rqq6$$6><><$><>r>r><><><>>><>r$qq. .. . . ... .... .. . . . qaa6r<<<>e<><<<<<<<><<<<><<><<<<<:<><<>>><><><>>>>>>>>$q-qqqqqq6-6$$6>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>6>6>>>6>>6>6>>>6>>>6>>>>>6>>>6qq ...u..u..4uu.u.uuuu..u.4.4.u..qq6$6$$$6-666q6$66p;;80,;,;0@@*-6$$$$$>r$$>$<>r>$>r><>><>r><<<<<6$q q . . ... .. ..... .. .. .... . . . . . . qaa$r<<<<<<><<<<<<><<<<><<><<<<><:<<<<<<><><>>>>>><><><>>>$6qqqqqqqr6>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>><><>>>>>>>>>>>>>>>>>>>>6>>6>>>>6>>>6>>>6>>>>>6>$6qq ..uu..u.u4.u4uuuuuuu.......4..qq66$6$$6$$66$r$6r;;70;@@;0@;t>$><<>>r>><$>>r>r><$r><<><><><><>$$q q . . . . . . . .. . . .. qqa$r$<<<><<><<<<<<<<><<><<><<><:<:<><<>>>e>>><>e>>>>>>>>6qqqqqqr6>6>>>>>>>>>>>>>>>>>>", +">>>>>>>>6>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>>>>><>>>>>>6>>>6>>>>>>>>6>>6-q..uu.u4.uu..u.uu.u.uu.u..u..u..q66$$>$>>>>>>>>$6*080,;;;@1r$>>$>>$>>>$>>$>>$<$<<$<$<><$>>><$<<<><$raq . ... . . . ... .. .. ... .. .. . . $ar$r><><<><><<><<<<<><<<><<><<<<<:<<:<:e<<<<<<<><<>><>>>>>><>>>>>>>>$-q-qqq6>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><><>>>>>><>>>>>>><><>>>>>>>>>>>>6>6>>>>6>>>6>>6>>6>>>>>>>>>>>>>>>>$>6-qq..u.uu.4uuuuuuu.u..u.u......uq6666$>$>6>$>>6>6*00;,,;006>>$$>><>>$>1r1<$<>><>$<$<<<><<<>><<<><><$taq . . . .. . .. . . . . wqqq$r><<<<><<:<:<<<<:<<>e<:<::<:<:<<<:<<<<$rrrrar#qaqwqa w awawaw w w awawaw#qwaw w wwww w w w w a a qaqaar$rr$$$$rr6rt$$$$$r6$6r6qqqqaaqqqqqqqqqqqqqqqqqqqqqqq qqqqq qaq q qqq6$>>><><><>>e<>>>>>>>e><>><>>>>>$6q-q-6$6>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>6>>>6>>>>>>>>>>>>6>6>>6>6>666qqu.uuuu.uuuuu.4.u4uu.u.u4...u.qq666>>>$>>>>>$>>a20&,;@@01->>>>$>>>>r222<$>$$<$<$<><><<>><>><><><<<<>:<><><<>:<><<<r>><>><><$<<>r>>>>><>e<>>>>>>>>>>e><>>>>>>66qqqq66>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>>>>>>>>>>>>>>>6-qquuuu..u.uu..u.uu..u.4....u..qq-6$>$>>6>>6>6>6rw;0;;;;;2>6>$>><>>$<r><><>$<>r>><><<>><><<<>><<$rqqa . ... . . . .. . . . qaa$$<><<<<><<<><:e:<<<<><<<:<:<:<><><><><><><><>><>><>e><<><<$><><><<<<><<<><>>$>>>>>>$><<><>>><<><><>>>>>>>>>>>><>e>>e>>>66q-qqq$>6<>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>6>>>>>>>>>>>6>>6>>>>>>>>>6>>>6>>66-qq..u.u.u.uuuu.u.u4.u.uu...u.uqq-$6$>6>>>>>$6>6r200;2;@@p->>$>$<>>>>>><><>$<><>>><>>>>>>>><><<>$$r$qqqq . .... . . . .. . . .q qa$r$<><e<<><<ee<<<<:<<><<>:<:<:<:<:e>e>e>e>e>e>e>e><<>e<<<><<><>:e:><<><<>>><><<<>>e>>>>>ee>>>>>>>>>e>ee>e>e>>>>6qq-q-6>><>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>>>>6>>>>>>6>>66-qu.uu4uu.u.uuu.u..u.u.u.u.....qq-66$66>$>6>>$>6a;0;22;@0116>>$><>>$>>r><>>$<>><><<>>>><><><><>>><<>$>$r$qqq q q . qqaqa$r$<><<><<<><<:<:<<><:<:e><<:<<><<<:<::::<::<<<<<<<:<:<><><><><>e>e>e:ee><>><>>><>><>><>>:<>eeee>e>>>>>>e>>><>>e>>>>>>-q-qq6>>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>6>>>>>>>>>6>>>>66>6>>>>6666-qu.uu4u.u.u.u.uu.u4u.4.4.u.u..q-$6-66>>$>6>$>>6a*2;;;;001<>>>>>>>$<>>$>r>>$>>>>>>>><>>>>>>>><<><><<>$r6qaqqq qaqqaqaaqqqqq qq q . aqaq$$<$<><<><>e<<<><<><<<<><<<<<<<><<<><<<:>:e:eee<><>><>>e>e>ee>e<>>>>><>>:><>e>e:<::e>>>>>>e>>>e>>>>>>>e>>>e<<>>>>6qqq-6>>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>6>>>>>>>>6>>>>>>>>>>>>6>6>66-6qqu.u..uuuuu.u..u4..u.4......q.qq-6666$6>>6>6>>>6aa;;21rrr$r>$>>>>>$<><>$r><><><>><>><><><><>><><>><$><<$$6aqqqqaqqa6q6qq6qqqqqqqqqq qqq qaqaqq$$$>r<<<<><<<<:<<><<><<>:<<<><<<<><><<<<><:<<<<>:<<<:<:><<<e>>eee<<>><>>e:>e>e>>>e>e>e>e>>e>e>e>>>>>e>e>>>e>>>>>>>6-q-66>>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>6>6>>6>6>>>>>>>>66-qq..uu.u.u.uu4..uu..u.u4.u....uqqq66666$>>>>>>>>>>66<>>6><$><>>>$>>$>>>>>><>>>><>>>>>>>>>><><><><><<>><>>$$$$$r$rr$r$r>$$$rr$$$6qqq6qqqqaqaaq6q$rrr>r<><<<<<<><><<><><<<<<<><<<<<><<<<><:<<<:<<:<::<:<:<::<:<:<::::<:<:<:<<<<::<:<::<::>e><<<><><><><<<<<><>>>e>>>>>>e>e>e>e>e>>>:>>>>>>>e>>e>e>e>>>>>ee>>>6qqq6>>>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>6>>>>>>>>>>>>6>6>6>6>>666-q..uuuuuuuu.u.4uu.u.4....uq.qqqqqq6$66>6>6>>>$>>>>>>>>>$>$>>$>>$>>>>>>>$><><>>><>><><><>><><><><>><<><<<<<<<$<><<<<>r<<<><r$>$$r$$r$>$$$$$rr$<<<<<<<<><<<<<><<<<<<<<<<<<><<<<<><<<<<rr$rrrawr q $ a#aaa$awr a$q$$r$rr$r<<><<<<<<:e<:>e<>ee:e><><<:>e>e><><<<e>e>>:>:e>:>:>e>>>e>e>e:<>>>>>e>e>>>>>$66q66>6>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>6>>6>>>>>>>>>>>$66-qquuuuuuuuu.uuu..4u..u.uq q-q--6666$$$>>>>>>>>>>>>>>>$>$>r>><<<>r>$>><><$><>><>><>>><><<><><><><<<><<<><>>>>><<<><>>>>><><><><>><>>><><<<<<<<><><><<<<<<<<<<<<<<><<<<<<<<><<<<><<<>:<:<<:<:<::<::<:<::<:::<:::<:<:<::<:e:<:<><<<e<>e<:<:<<><><<:e><><><>>e>e>e>e>>e>e>e>ee>e>>e>><<>>e>ee>>>>ee>e>>>>$6-666>>>>>6>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>>>>>>>>>>>>>>6>6>6>6$66-qqquuqqquu.uuuu.uu..u..qqq-666$6$>>>>>6>6>>>>>>>>>>>>>$><>>$<>>>>>>><>>>><>><>><>><><<>><><<<<<>e><><<<<<<<><<><<<><><<><>><<$<<><><>><><>r<<><<<<><><<<><<<<<<><<<><<<<<<:<:<:<<<<:<:<:<<::<::::<::<::::::<:::<::<:<:<:<<<<<<<<<<:e<:<::<:<:ee<>:<:e<:<::>e>e>ee>e>e>:>>e>>e>>e><>e>>e>e>>><>>>$666$$6>6>>6>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>6>>6>>>>>>6>>>>6>>>>>>>>>>>>>666---qqq.qqququuu...u..uqqq666$>>>6$6>>>>>>>$>>>>>>>>>$>>>$><>>>$<><><>><>><<>><>>>><>><<><><><><><><<><<<><><><><><>>><><><><<><<<<><<><><><><><<<<<<<<<<<><<<<<<<<<<><<><<><<<<:<<:<::<::<<:<:<::<:::<::::::<::<::<:::<:::<:<<<>r$r$rrr<<<>rrr$rr<><<::<<:e:<:::e::::::::<:::::<<<<<<:e:<:>:e<><>ee<:<e>eee>e<>><>>e>><>>>ee>>>>>>>$6666>666>6>6>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>>>>>>>>>>>>>6>6>6>6>6>6>6>6666-qqqqqqqqquuu.u... q6$>>>6>$>>>>>>>>6>>>>>>>>>>>>>$><>$<$<>><$<><>><>>><>>><><<<<>><><><><><><><<><><><<<<<<<><<><><><><<<><<><<><><><<><<<><<<><><<<<<<><<<<<<<<<><<<><<><<<:<:<:e<<<<<<<<<><<ee:e<<:<:e:<:>e<>e>e>>ee>>e>e>e<>e>>>>>>>>>>$6666666>>6>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>6>>6>>>>>>>>>>>>>>>>6>6$6-66-q-qqqu.u.uuuqq66>>>>>>>>>>6>>>>>>>>>>>>>>>>>>>>$>>>>>>$><><<>>>><>>>><>>r<<><<><><><><><><<><><<<<><><>><><><><><><>><<><<><><<<<><<><<<><><<<<<<<<<<<<><<<<><><<:><<><:<<<:<<<:<:<::<:<<<<:<:<:::::<::::::<::<::::::::::<:::::<::e:::::<:<::e:e<:::::::<:ee:ee<::e:<:e<::><><<<><<>>>e<>>>>eee>>>>>6>>$66$666>>>>>>6>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>>>>>>>>6>6>6>6>6>6>6>>>$>6>$666-qqqqq..qqq6$$>>>>>>>>>>>>>6>>>>>>>>>>>>>>>>>>>>$>><:>>>>><><>>><><>>>>><<><><><><><><<>><><><><<<<><><><><><><><><><<>><<<><><<<><<><<<<><<<<<<<<<<<<<<<<:<<<:<::::::>:<:<:ee:e:ee>e>ee>>><>e>e>>>>e>>>>e>>e>>>>>>>>>>6666$666>6>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>6>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>6>>>>66-qqqqq-q6$>>>>>6>>>>>>>>>>>>>>>>>>>>>>>>>>><><1:>>>>>>>><>>>><>>><>><><><><><><>><<><<><><><>><><><><><><><><><><<<><><><><><><<<<><<><<><><<<<<<<:<<:<:<<:<:<e:<><><<><<><<><><<><>>>>e>e>>>>>>>>>e>>>>>>>666-666666>6>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>6>>>>>>>$>>6>>>>>>$6-q6666>6>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>66::0:111>><>><><>><<>><>><><><><><><<>><>><<<><<><><><><><><><><><<<<><<><<<><<<<<<><><><<><<<<<<::<<:<:<:<<:<<:<:::::::::::::::::::::::::::::::::::::::::::::<:::::::::::::::::::::::::::::::::e::::eee:eeee:eeee::::<::ee>e::eee:<>e>e><>>>e>>>>>>>>>>>ee>>>>>>>66-qq-666$$>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>>>6>>>6>>>>>>>>>>>>>>>6$>6$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$:<:$777700<>>>>><>>>>>><><><>><><><><><><>><><<>><><><><><><><><><><><<><><<$<><><><><<><<<<><><e<<><<<<<<<<<><<><><<><<>e<<<>e6><<<<<><<><><><><><><><<>>>>>>>>><><>>>>>>>>>$66q-qqq666>>", +">>>>>><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>>>>>>>>>><>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>6>>6>>>>>>>>6>>>>>>>>>6>>>>6>>6>6>>>>>>>>>>>>>>>>>>>>>>>>>>>$>$>$$10777:1<<1<>>>>><>>>>>>>><><><><>e><><><><<><>><><><<><><><><><><><><><<<<><<<<<><<><<<<<<><<<<<<:::<:e<:<>><<:<<<<<<<<<<<<<<><<<><e<<><<<><<><<<><>::r<><<>e:<><><>e>e>>>>>>>>>>>>>>>>>>>>>>>>>>666q-qqq6$6", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>>>>>>>>>>>>>>>e>>>>>>>>>>>>>>>>>>>>>>>>6>>>>>>6>>6>>>>>>>>>>>>>>>6>>>>>>>>>>>>>>>>6>>>$>>$>$>$>-:5%7:::e>>>e<><>>>>>>>><>><><><><><<>e><><><><><><<><><><><><><><><<><><<>r><><<<><<><><:<<<:<:<:::<:<:::<::::::::::::::e::::e:::e:::e:::ee:e:e:::::::e:e<:<$<<<1<<$><::::::::e:::e:::e:ee:e:e:ee:e:ee:e::e:e::e::><<:<:<<<<$><<<<01-::-6-6$6><<<-6>:::::><<<<<>r<>$666-6<><<-----u0%1--6$<$<><::1e::::::<>><<><>e>e><>e>e>><>e<><>>>>>>>>>$66$66$>>", +">>>>>>>>>>>>>>>>>>>>>>>e>>>>>>>>>>>>>>>>>>>>>e>>>>e>>>>>>>>e>e>ee>ee>>ee><><>>>>>e>e>e>e>>>e>>>>>>>>>>>>6>>>>>>>>>>>>>>6>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$>>66-$:55887::e>e<>>>>><>><>><><><><><><<><<><><><><><><><<<><<><><>><<<<<<><<<<<<<::::e:<<:>617$6666-><<11>>q<055%55770:116$1755%%77:::--6$>$-11::170-qqr:707777%777::::>--q-6tr<>><>>>e>>>e>>>>>>>>><>>>>>>>>>>>>>6>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ee>e>>>>e>>>e>>>>ee>>>>ee>e>e>e>>ee>>>>>>>6>><>>>>>>>>6>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6>$>$>$$::17+=7::::::<<:e:<:<>>><><>>><><><>e>e<>><>e>e><<><><><><><<><><>><><><<><<<><<<<<>:<:<<<:<:e<:::<:::::::::::::::<::::::::e:::::::ee::e:e::::<<<><<$:015y+yy+y++3701<<<<>>>>><<<::::e:e::eee:ee:e::e:::700077%+5707755%%%5%%7%+y+++++++++%55%yyy+++3%577755%553%%++++5777yy++y++y+yy+3%%55777:<$--6e::::::::>>e<><>>>>>e>><<<>>><>>><>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>e>>>e>>>ee<>ee>e>e>ee>>>>>>>>>>>>6>>>>>6>>>>>>>>>>>>>>>e>e>e>>>>>>>>>>><>>>>>>>>$>$>>>66:717+%1:::::::eee>ee>>>>><>e<<><><><><<<>e<><>e<<<<<><<><<<><<><><<><><><<<><<<><><<><::<<:<<<:<::<::<:::<:::::<::<::<::::::::e:::ee:<:e<:<::e::<>111007%05++%+yy++yy+++y%%%557777770:1:1::e:::::ee::<::1:7%%+++3+++yyyyyyyyy+yyy++++y+++y+++yyy++++yyyyyy+y++++yy+y++yyy++yy+yyyy+y+yyy++y+yy+y+++3%577:$--q6$r-><><>>>>>>>>>><>>>><>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>e>e>>e<>>eee<>e>ee>ee>e>e>>ee>e>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>>>>>>>>>>><>>>>>>$>6>6>---6rqu03%0::::::::e<:ee>e<>><<>:e<e>e>e<<>e>e>e><><><><><<><><<><<<<<<<<<<<<:<<:::<::<<<<:::<::<:<::::<:<<:<<:::<:::::::e:1:<<11<:<::1e<<07%++++yy++y+y++yyyyy+yy+y++yyy+yy+++++3+7<::e:e:e:e<7%%+++yyy++++++y+yyyy++++y+++yy++++yyyy+yy++++yyyyyy++y+++++++++++++++++yy+yyy+yy+y+++++++++++yy++y3%57:::$:<--q-66><>>>>>><<>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>>>>ee>>eeeee>e>>ee>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>>>>>>>>>>>>>>>>>>-6$>-:77:-:$0++3%%:::::::::<><><><><<<><<<><><><<<><<<>e<><<>><><><><<><<<<<><<<><<:e0%371<<1<:1:73y+yyyyyyyyyyyyyyyyyyyyyyy++yyy+++yyy+++++yyyyy++++yyyyy+++yy++++++++++yyyyyyy++yyyyy+++++++++++++y+++++3%%+5777771$--66<><><>>>>>>>>>>>>>>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>eee:ee>eeeeeee>eee<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>e>>>>>>>>>>>>>>>>$::66::%35::%%+++33%7:ee><<<>e>e><:e>e>e<><<<><><<<<><<><<<><:<<:<:<<<><<$tr>>>>>>>>6>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>>><>eee>ee:eee>e>e<:ee>e>e:>ee><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>e>e>>>e>>e>>>>>>>>>>>>>$>11$-q1753%05++++33+57:e::e::<:<>:<<<><<><<<:><<<<><<<><><<<><<>e>e><><><<><<<<<6->1<-<<6<:$$611><<>1rr11111080570110557785%%5577010100755%%+++yyyyyyyy++3yy+yy++yyyyyyyyyyyyyyyyyyy+yyyyyyyyyyyyyy%%5::::5+yyyyyyy++++yyyyyyyyyyyyyyy++++yy++yyyyyyyyy+++yyyyy+yyyyyyy++yy++++++++++++++++yy++yyyyyyy+y+333++++++++yyyyyy++++y++++yy+++%%5757777:u--6>$>>$>$>>>>><", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>e>e>e:eee>ee:eeeeee>e>><>>>>>>>>>------>->>>>>>>ee><<>>><>>>>>>>>>>>6<:<:::177%%+513+++3333%7:>:::::::>e<:<<>eeee<<><:<:e<:><:<:ee:<:<<<<<><<>r6-q17%%%1qr1571110016>>$6>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>e:>ee>e>>e><><>><>>>><><>>>>6q170:00:01<><>>>>>>>>><>><>>>>>>>>-->$a17%577%%++%17++++++%%7:<:<:::>:::ee>e:><>:e><<e<<<<<$6-q-$:017++++%50%y=%33%%%57%3y++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+y++yyy+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy57:773+yy+yyyyyyyyyyyyy++yyyyyyyyyyyyyyyy+y++yyyyyyyyy+yyyyyyyyyyyyyyyyy++++++++yyyy++++++yyyyyyyyy++++3++3++++++++++++++yyyyyyyyyyyyyyyy+y++++++376>>>>>>>>>>>>", +">>>>>>>>>>>>><><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>><>><>e><>e><>->>>>>>>><>e>e>ee><>-$><<>>$<$6::1108855701-----$:6>:>->-6>>$><$--:016$<1<17777501$0+++++++%5::::::e:::<:<:<::e<>e<<<><<>$>>>>>>>>>", +">>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>6-6-17:>$-6>>>$---->----6-6--:7:$-------u187777%3%%%757775775%%7777:$>>-u-:7771$:57177:::075%++++++++%77:::::::::::e:e::>:<::<:<<<<<<<<<><>$<$-17%3++++++y+++++++y++++y++yyyyyyy+y+y+y++yyyyyyyyyyyyyyyyyyyyyyyyy++yy+y+y+y++y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+++yyyyy+yyyyyyyyyyy++yyyyyyyyyyyyyyyyyyyyy+yyyyyyy++yyyyyyyyyyyyyyyyyyyyyyyyyy++++yy++++++++yyyyyyyyy+3+y++++++++yyyyyyyyyyyyyyyyy+yyyyyyy3%8%016><>>>$>>>>>>>", +">>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6----666>-::::08%%%705%5577:::7::7:::::5+%57:77770000%%%%++++yyyy+++yyyyyy+++3%%%5773+55%575%%%33+++++y++++++3351<::::e::::::::::e:::e:e::<::<:e:<>$>>>$>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$6----u--$<:0701:77:%++++3+++y+++++y++++++++++++++++++y+yyy+++++++++++++++++++++++++++++yyyy++++yyyyy++++y+++++3++++333%%0-$<><:::::::::::::e::::6>$>>$>>>$>>>>>>>", +">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>6$6-66$--><:::175%5%++++++333++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++333%%%57::>>>>ee::::::::::::::::::<::e:<:<:e<<<<<<<<$$r::0557%3%3+++++++++++++++++++++++y+y+yyyy+yyyyyyy+yyyyyyy+yyyyyyyyyyyyyyyyyyyy+y+y+y++y+y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+++yyyyyyyyyyyyyyyyyyyyy++yyyyyyyyyyyyyyyyyyyyy+yyyyyyyyy++++yyyyyy++yyyyy+++yyyyyyyyy%16u->><>>>>>>>>$>>>>>>>>>", +">>>>>>>$>>>>>>>>>>>>>>>>>>>>>>>>$>>>>6-<::::775%%+++++yyyy++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3333%%%%%%%%555777::::>><$>$>>>$>>$>>$>$>>>>>", +"><>>>>><><><>>>>>>>><>>>$6>>-->-----u:700000%++yy+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3%%%%%%%5%55555555555%%5557777::>6-$<:07%%%++++++++++++++++++++++++++++++++++++y+y++++y+yyyyyyyyyyyyyyy+++++yyyyyyyyyyyyyy+y+y+y+y++y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyyyyyyyyyyyyyyyyyyyyyy++yyyyyyyyyyyyyyy+yyyyyyyyyyyyyy+++++yyyyyy++yyyy+++y++yyyyyy+y0u6rr$$6$$><$>>>$>>>$><><", +">>><><>>>>6---------u---$$1575%557::77075575%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%5%555%5%5%%55%55555%55%%5555557:::>>>$>6>>>>>>><>>$r:775%3++yyy+++++++++++++++++++++++++++++y+++++y+++++++++yyyyyyyyyyyyyy++y+y+y+y+yyyyyyyyy+y+y+y+y++y+y++y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyyyy+yyyyyyyyyyyyyyyyyyyyyyy++yyyyyyyyy+++++yy++yyyyyy+++++++++++++++yy++yy++yyyyyy++37<-u17:::->>>$>>$>>>>>>>", +"><>>>$--><:0777777777755%%%+++yyyy+++3%3+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%5%%%5%5%5555555%5555555555%%%5557777777755%55%555%3yy++++++++++++++++++++++++++y++++++++++++++++++y+y+y+y+yyyyyyyyyyyyyyy+yyyy++yyyyyyyyyyyyyyyyyy++y+y++y++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+++yyyy++++++++yyyyyyyyyyyyyyy+++%5550<1<<>------>$>$><>", +"---6<1075%++++++++yyyyy++yy++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%333%%5%5%%%55555%55555555%%333++yyyyy+++++yyyyyyy+++++++++++++++++++++++++++++++y+++++++y3+++++++++y+y+y+yyyyyyyyyyyyyyyyyyyy+y+yyyyyyyyyyyyyyyyy+y++y+y++y++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyy+++yyyyy+++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+++yyyyy++++++++yyyyyyyyyyyyyyy++++++++%%%%555770:<$-----", +"0775%3y+yyy+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3333%%%%%5%555%%%%%%%5%5%%5%%3++++++++++++++++++++++++++++++++++++++++++++++++++++++3+++++++++++++++++++y+yy++yyyyyyyyyyyyyyyyyyy++yyyyyyyyyyyyyyyyyyy+y++y+y++y+y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyy+++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+++yyyyy++++++++yyyyyyyyyyyyyyy+++++++++++yy+++yy3%%7701:", +"y+yy+y++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3%%%%%5%%%%%%3%%33+3%5%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yyy++yyyyyyyyyyyy+y++++yyyyyyyyyyyyyy+y++y+y++y+y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyy+++yyy+++yyyyyyyyyyyyyyyyyyy+yyyy++yyyyyy+yyy+yyy++++++++++++++++++yy++++yy++++yyy+++++++y+++++++++y+yyyy++y", +"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++3+++++++++++++++++++++++++++++++++++++++++++++++++++33%%%%%%%%%%%%%%%%%%3++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++y++y+y+++y+++y+yyyyyyyyyyyyyyyyyy+y+yyyyyyyyyyyy+y+yyy+y+y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyyyyyyyyyyyyyyyyyyyyy++yyyyyyyyyy+yyyyy++++++yy++++++++yy++++yy++yyyyy+++++++yyy+++++++++++++y++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++33%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++y++++++++++++y++y+y+++y+y+y+yyyyyyyyyyyyyyyyy++yyyyyyyyyyyyy++yyyy++y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++++yyyyyyyyyyyyyyyyyyyyy+yyy++yyyy++yyyyyyyyyyyyyyy+++yyyyyyy+++yyy++++++yy++++++++++++++++++yyy+++++++++yyy++++++++++++++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++y+yy++++y++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yyy+++++y+++++y+++y+++++++++++++y++++++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++++yyyyyyyyyyyyyyy+yyyyy+yyy++yyyy++yyyyyyyyyyyyyyy+++yyyyyyy+++yyy++++++yy++++++++++++++++++yyy+++++++++yyy++++++++++++++++", +"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yy++++++++++++y+++++++y+++++y++++++++yy++++y+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++yyyyyy++yy++yyyyyyyyy++++yy+++yyy++yyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyyyyyy+yyy++yy++++++++yy++++++yyy+yyy+++++++++++++yyy++++++++++", +"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yy++++++++++++++++++++++++++y++++++++yy++++++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++yyyyyy++yy++yyyyyyyyy++++yy+++yyy++yyyyyyyyyyyyyyyyyyyyyyyyyyy+yyyyyyyyy+yyy++yy++++++++yy++++++yyy+yyy+++++++++++++yyy++++++++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yyyy++++++++++++++++++yy++++yy++++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++yyyyyyyyyyyy++++yyyyyyy+++yyyyy+++yyyyy++++++yyyyyyyyyyyyyyy+yyyyy+++++yyyyy++++++++++++++++yy+++++++++++++++++++++++++++++++++yy++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yyyy++++++++++++++++++yy++++yy++++yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy++yyyyyyyyyyyy++++yyyyyyy+++yyyyy+++yyyyy++++++yyyyyyyyyyyyyyy+yyyyy+++++yyyyy++++++++++++++++yy+++++++++++++++++++++++++++++++++yy++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yyyyy+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyy++++++yyyy++++++++++yy++++++++++++++++yyy++++++++++++++++++++++++++++yyy+yyy++++++++++++++++++++++++yyyy++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yyyyy+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy+yyy++++++yyyy++++++++++yy++++++++++++++++yyy++++++++++++++++++++++++++++yyy+yyy++++++++++++++++++++++++yyyy++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" +}; diff --git a/hacks/images/macbomb.xbm b/hacks/images/macbomb.xbm new file mode 100644 index 00000000..c6532765 --- /dev/null +++ b/hacks/images/macbomb.xbm @@ -0,0 +1,474 @@ +#define macbomb_width 448 +#define macbomb_height 126 +static char macbomb_bits[] = { + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x80,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xf9, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x98,0x19,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,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00, + 0x00,0x00,0x40,0x40,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,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0x00,0x00,0x20, + 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,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0x00,0x80,0x10,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x98,0x19,0x00,0x00,0x00,0x04,0x08,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00, + 0x00,0x10,0x01,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,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0x00,0x40,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0x19,0x00,0x00,0xe0,0x03,0x50,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98, + 0x19,0x00,0x00,0x10,0x8c,0x03,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, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0x08, + 0x70,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0x08,0x00,0x10,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x98,0x19,0x00,0x00,0x08,0x40,0x22,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19, + 0x00,0x00,0x7f,0x20,0x40,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,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0x7f,0x10, + 0x82,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0x7f,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x98,0x19,0x00,0xc0,0xff,0x01,0x02,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00, + 0xf0,0xff,0x07,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,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xf0,0xff,0x07,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xf8,0xff,0x0f,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x98,0x19,0x00,0xf8,0xff,0x0f,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, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xfc, + 0xff,0x1e,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xfc,0xff,0x1f,0x00,0x00, + 0x00,0x00,0x80,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0x19,0x00,0xfc,0xff,0x1d,0x00,0x00,0x00,0x00,0x80,0x81, + 0xc7,0xb6,0xcd,0x00,0x78,0x80,0x63,0xc6,0xf1,0x78,0xfc,0x07,0x78,0x6c,0x9b, + 0xc7,0x06,0x1e,0x0e,0xc7,0xcc,0xb6,0x79,0xf8,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98, + 0x19,0x00,0xfc,0xff,0x1d,0x00,0x00,0x00,0x00,0x80,0xc3,0xcc,0x71,0xcc,0x00, + 0xc4,0xc0,0x64,0x66,0x62,0xcc,0xcc,0x0c,0xcc,0x1c,0xc7,0xcc,0x01,0x33,0x93, + 0xc9,0xcc,0x71,0xcc,0xcc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xfc,0xff, + 0x1d,0x00,0x00,0x00,0x00,0x00,0xc7,0xcc,0x30,0xcc,0x00,0xf8,0xc0,0x61,0xe6, + 0x60,0xcc,0xcc,0x0c,0xcc,0x0c,0xc3,0xcc,0x00,0x33,0x83,0xc1,0xcc,0x30,0xcc, + 0xcc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00, + 0x00,0x00,0xce,0xcc,0x30,0xcc,0x00,0xcc,0x80,0x63,0xc6,0x61,0xfc,0xcc,0x0c, + 0xfc,0x0c,0xc3,0xcc,0x00,0x33,0x83,0xc1,0xcc,0x30,0xfc,0xcc,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x98,0x19,0x00,0xfc,0xff,0x1e,0x00,0x00,0x00,0x00,0x00,0xcc,0xcc, + 0x30,0xcc,0x00,0xcc,0x00,0x67,0x86,0x63,0x0c,0xcc,0x0c,0x0c,0x0c,0xc3,0xcc, + 0x00,0x33,0x83,0xc1,0xcc,0x30,0x0c,0xcc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19, + 0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x00,0x80,0xcc,0xcc,0x30,0xcc,0x0c,0xcc, + 0x40,0x66,0x26,0x63,0x8c,0xcc,0x0c,0x8c,0x0c,0xc3,0xcc,0x00,0x33,0x93,0xc9, + 0xcc,0x30,0x8c,0xcc,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xf8,0xbf,0x0f, + 0x00,0x00,0x00,0x00,0x00,0x87,0xc7,0x30,0xf8,0x0c,0xf8,0x80,0xc3,0xc7,0xc1, + 0x78,0xcc,0x0c,0x78,0x0c,0x83,0xc7,0x00,0x1e,0x0e,0x87,0xcf,0x30,0x78,0xf8, + 0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc0,0x08,0x00,0x00,0x00,0x06,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,0x98,0x19,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc4,0x04,0x00,0x00,0x20,0x06,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,0x98,0x19,0x00, + 0xc0,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00, + 0xc0,0x03,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,0x98,0x19,0x00,0x00,0x7f,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x98,0x19,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, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x98,0x19,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,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0x19,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,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98, + 0x19,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x98,0x19,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,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19, + 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,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x98,0x19,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,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x98,0x19,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, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x98,0x19,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,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0x19,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,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98, + 0x19,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x98,0x19,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,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19, + 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, + 0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0xc0,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x98,0x19,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,0xc0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0xc0, + 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0xc0,0x07,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x98,0x19,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,0xc0,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x98,0x19,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,0x40,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x0c, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0x19,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,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98, + 0x19,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x98,0x19,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,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19, + 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,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x98,0x19,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,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x98,0x19,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, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x98,0x19,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,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0x19,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,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98, + 0x19,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x8c,0x0f,0x00,0x00,0x8f, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x8c,0x19,0x00,0x80,0x19,0x0c,0x00,0x00,0x00, + 0x00,0x00,0x98,0x19,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,0x00,0x00, + 0x00,0x00,0x8c,0x19,0x00,0x80,0x19,0x06,0x00,0x00,0x00,0x00,0x00,0x98,0x19, + 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,0x00,0x00,0x00,0x00,0x8c,0x19, + 0xf8,0x81,0x19,0x0f,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x8c,0x19,0x00,0x80,0x19,0x18, + 0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, + 0x0f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,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,0x8c,0x19,0xf8,0x81,0x19,0x18,0x00,0x00,0x00,0x00, + 0x00,0x98,0x19,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x30, + 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x8c,0x19,0x00,0x80,0x19,0x18,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x19,0x00, + 0x80,0x99,0x18,0x00,0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x80,0x01,0x00,0x00, + 0x00,0x00,0x00,0xc0,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x0f,0x00,0x00,0x0f,0x0f,0x00, + 0x00,0x00,0x00,0x00,0x98,0x19,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x08,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, + 0x98,0x19,0x00,0x40,0xf8,0x00,0x00,0x18,0x00,0x80,0x01,0x01,0x00,0x42,0x01, + 0x00,0x00,0x00,0x00,0x00,0x10,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,0x98,0x19,0x00,0x40, + 0x98,0x01,0x00,0x18,0x00,0x80,0x01,0x01,0x00,0x22,0x02,0x00,0x00,0x00,0x00, + 0x00,0x10,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,0x98,0x19,0x00,0x40,0x98,0xf1,0x70,0x3c, + 0x1e,0xdb,0x03,0x01,0x00,0x42,0x44,0x41,0x11,0x51,0x15,0x14,0x10,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,0x98,0x19,0x00,0x40,0x98,0x99,0x99,0x18,0x31,0x87,0x01,0x01, + 0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x10,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,0x98, + 0x19,0x00,0x40,0xf8,0x98,0x39,0x18,0x3e,0x83,0x01,0x01,0x00,0x42,0x41,0x44, + 0x10,0x11,0x11,0x11,0x10,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,0x98,0x19,0x00,0x40,0x98, + 0xf9,0x71,0x18,0x33,0x83,0x01,0x01,0x00,0x22,0xa2,0x82,0x20,0x22,0x22,0x2a, + 0x10,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,0x98,0x19,0x00,0x40,0x98,0x19,0xe0,0x18,0x33, + 0x83,0x01,0x01,0x00,0x42,0x44,0x00,0x11,0x11,0x11,0x01,0x10,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,0x98,0x19,0x00,0x40,0x98,0x19,0xc9,0x18,0x33,0x83,0x01,0x01,0x00, + 0x22,0x22,0x20,0x22,0x22,0x22,0x22,0x10,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,0x98,0x19, + 0x00,0x40,0x98,0xf1,0x70,0x30,0x3e,0x03,0x03,0x01,0x00,0x42,0x44,0x41,0x41, + 0x11,0x11,0x14,0x10,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,0x98,0x19,0x00,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x10, + 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,0x98,0x19,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x08,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,0x98,0x19,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x0c, + 0x00,0x00,0x00,0x00,0x00,0x00,0x0c,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,0x98,0x19,0x00, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x06,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,0x98,0x19,0x00,0x00,0x06,0x00,0x00, + 0x00,0x00,0x00,0x30,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x03,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,0x98,0x19,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x0f, + 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,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, + 0x98,0x19,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,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x19,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x98,0x19,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,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98, + 0x19,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,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0xf9,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x9f,0x01,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,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01, + 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,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff}; diff --git a/hacks/screenhack.c b/hacks/screenhack.c index 7c11b35b..9d11b350 100644 --- a/hacks/screenhack.c +++ b/hacks/screenhack.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001 +/* xscreensaver, Copyright (c) 1992, 1995, 1997, 1998, 2001, 2002 * Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its @@ -496,6 +496,18 @@ main (int argc, char **argv) cmap = xgwa.colormap; visual = xgwa.visual; visual_warning (screen, window, visual, cmap, True); + + /* Select KeyPress events on the external window. + */ + xgwa.your_event_mask |= KeyPressMask; + XSelectInput (dpy, window, xgwa.your_event_mask); + + /* Select ButtonPress events on the external window, if no other + app has already selected it (only one app can select ButtonPress + at a time: BadAccess results.) + */ + if (! (xgwa.all_event_masks & ButtonPressMask)) + XSelectInput (dpy, window, xgwa.your_event_mask | ButtonPressMask); } else if (root_p) { diff --git a/hacks/screenhack.h b/hacks/screenhack.h index 158a251f..4236e8d4 100644 --- a/hacks/screenhack.h +++ b/hacks/screenhack.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1992-2001 Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -102,5 +102,7 @@ extern void screenhack_handle_events (Display*); #define bzero __ERROR_use_memset_not_bzero_in_xscreensaver__ #undef bcopy #define bcopy __ERROR_use_memcpy_not_bcopy_in_xscreensaver__ +#undef ftime +#define ftime __ERROR_use_gettimeofday_not_ftime_in_xscreensaver__ #endif /* __SCREENHACK_H__ */ diff --git a/hacks/webcollage-helper.c b/hacks/webcollage-helper.c index 0b95dc5f..99bd7829 100644 --- a/hacks/webcollage-helper.c +++ b/hacks/webcollage-helper.c @@ -236,7 +236,7 @@ write_pixbuf (GdkPixbuf *pb, const char *file) cinfo.in_color_space = JCS_RGB; jpeg_set_defaults (&cinfo); - cinfo.progressive_mode = TRUE; + jpeg_simple_progression (&cinfo); jpeg_set_quality (&cinfo, jpeg_quality, TRUE); jpeg_start_compress (&cinfo, TRUE); diff --git a/setup.com b/setup.com index c986b602..1261a42e 100644 --- a/setup.com +++ b/setup.com @@ -32,6 +32,7 @@ $ fadeplot :== $'mydir'fadeplot $ flag :== $'mydir'flag $ flame :== $'mydir'flame $ flow :== $'mydir'flow +$ fluidballs :== $'mydir'fluidballs $ forest :== $'mydir'forest $ galaxy :== $'mydir'galaxy $ goop :== $'mydir'goop @@ -57,8 +58,8 @@ $ lissie :== $'mydir'lissie $ lmorph :== $'mydir'lmorph $ loop :== $'mydir'loop $ maze :== $'mydir'maze -$ moire2 :== $'mydir'moire2 $ moire :== $'mydir'moire +$ moire2 :== $'mydir'moire2 $ mountain :== $'mydir'mountain $ munch :== $'mydir'munch $ nerverot :== $'mydir'nerverot diff --git a/utils/colors.c b/utils/colors.c index 94d6acbd..c9615394 100644 --- a/utils/colors.c +++ b/utils/colors.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997, 2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -578,7 +578,7 @@ make_uniform_colormap (Display *dpy, Visual *visual, Colormap cmap, 0, S, V, 359, S, V, colors, &ncolors, - False, True, + False, allocate_p, (writable_pP && *writable_pP)); /* If we tried for writable cells and got none, try for non-writable. */ diff --git a/utils/compile_axp.com b/utils/compile_axp.com index a10edcc0..1fadffd5 100644 --- a/utils/compile_axp.com +++ b/utils/compile_axp.com @@ -11,8 +11,8 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) OVERLAY.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) RESOURCES.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SPLINE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) USLEEP.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL-GL.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-GTOD.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-STRDUP.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XDBE.C diff --git a/utils/compile_decc.com b/utils/compile_decc.com index d8aed70b..fe09afa1 100644 --- a/utils/compile_decc.com +++ b/utils/compile_decc.com @@ -11,8 +11,8 @@ $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) OVERLAY.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) RESOURCES.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) SPLINE.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) USLEEP.C -$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL-GL.C +$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VISUAL.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-GTOD.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) VMS-STRDUP.C $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H)/INCL=([],[-]) XDBE.C diff --git a/utils/images/logo-180.xpm b/utils/images/logo-180.xpm index ab9c59b3..563fa6a7 100644 --- a/utils/images/logo-180.xpm +++ b/utils/images/logo-180.xpm @@ -1,7 +1,7 @@ /* XPM */ /* XScreenSaver Logo, designed by Angela Goodman - Copyright (c) 2001 by Jamie Zawinski + Copyright (c) 2001, 2002 by Jamie Zawinski Unauthorized use or reproduction prohibited. http://www.jwz.org/xscreensaver/ @@ -10,21 +10,21 @@ static unsigned const char * const logo_180_xpm[] = { "180 180 16 1", " c None m None", -". c #020204 m #000000", -"+ c #929291 m #000000", -"@ c #A30204 m #000000", +") c #FF0000 m #FFFFFF", +", c #FFFFFF m #FFFFFF", +". c #000000 m #000000", +"- c #ED9E00 m #FFFFFF", +"' c #4F3504 m #000000", +"= c #DBDBDB m #000000", +"> c #B0B0B0 m #000000", +"+ c #929292 m #000000", +"; c #797979 m #000000", +"@ c #A30000 m #000000", "# c #604D28 m #000000", -"$ c #600204 m #000000", +"$ c #600000 m #000000", "% c #37332D m #000000", "& c #2D0C05 m #000000", -"* c #A46E04 m #000000", -"= c #DBDBDA m #000000", -"- c #ED9E04 m #FFFFFF", -"; c #797977 m #000000", -"> c #B0B0AE m #000000", -", c #FEFEFC m #FFFFFF", -"' c #4F3504 m #000000", -") c #FD0204 m #FFFFFF", +"* c #A46E00 m #000000", " ", " . ", " .. ", diff --git a/utils/images/logo-50.xpm b/utils/images/logo-50.xpm index 5ca5d63f..eee542f7 100644 --- a/utils/images/logo-50.xpm +++ b/utils/images/logo-50.xpm @@ -1,7 +1,7 @@ /* XPM */ /* XScreenSaver Logo, designed by Angela Goodman - Copyright (c) 2001 by Jamie Zawinski + Copyright (c) 2001, 2002 by Jamie Zawinski Unauthorized use or reproduction prohibited. http://www.jwz.org/xscreensaver/ @@ -10,19 +10,19 @@ static unsigned const char * const logo_50_xpm[] = { "50 50 16 1", " c None m None", -". c #050305 m #000000", -"+ c #989798 m #000000", +"& c #FF0000 m #FFFFFF", +", c #FFFFFF m #FFFFFF", +". c #000000 m #000000", +"= c #CCCCCC m #000000", +"- c #B0B0B0 m #000000", +"+ c #989898 m #000000", +"; c #707070 m #000000", "@ c #A30805 m #000000", "# c #5E4D34 m #000000", "$ c #A6531B m #000000", "% c #620805 m #000000", -"& c #FA0204 m #FFFFFF", "* c #A63013 m #000000", -"= c #CCCBCB m #000000", -"- c #B1B0AE m #000000", -"; c #707070 m #000000", "> c #523410 m #000000", -", c #FCFCFA m #FFFFFF", "' c #AC6C44 m #000000", ") c #24221C m #000000", " ", diff --git a/utils/logo.c b/utils/logo.c index 428aa2f5..21cc4d40 100644 --- a/utils/logo.c +++ b/utils/logo.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2001 Jamie Zawinski +/* xscreensaver, Copyright (c) 2001-2002 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -55,7 +55,7 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, { int w, w8, h, ncolors, nbytes; char c; - int i; + int i, pixel_count; struct { char byte; int cr; int cg; int cb; @@ -136,6 +136,7 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, if (depth == 1) transparent_color = 1; pixels = (unsigned long *) calloc (ncolors+1, sizeof(*pixels)); + pixel_count = 0; for (i = 0; i < ncolors; i++) { if (cmap[i].cr == -1) /* transparent */ @@ -152,10 +153,15 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, if (depth == 1 || !XAllocColor (dpy, colormap, &color)) { - color.pixel = (cmap[i].mr ? 1 : 0); + color.red = (cmap[i].mr << 8) | cmap[i].mr; + color.green = (cmap[i].mg << 8) | cmap[i].mg; + color.blue = (cmap[i].mb << 8) | cmap[i].mb; + if (!XAllocColor (dpy, colormap, &color)) + abort(); } - pixels[i] = color.pixel; - rmap[(int) cmap[i].byte] = i; + pixels[pixel_count] = color.pixel; + rmap[(int) cmap[i].byte] = pixel_count; + pixel_count++; } } @@ -165,8 +171,7 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, if (ximage) { int x, y; - ximage->data = (char *) - calloc ( ximage->height, ximage->bytes_per_line); + ximage->data = (char *) calloc (ximage->height, ximage->bytes_per_line); for (y = 0; y < h; y++) { const unsigned char *line = *data++; @@ -185,7 +190,7 @@ parse_xpm_data (Display *dpy, Visual *visual, Colormap colormap, int depth, *width_ret = w; *height_ret = h; *pixels_ret = pixels; - *npixels_ret = ncolors; + *npixels_ret = pixel_count; return ximage; } @@ -201,8 +206,7 @@ xscreensaver_logo (Display *dpy, Window window, Colormap cmap, Pixmap *mask_ret, Bool big_p) { - int npixels, iw, ih; - unsigned long *pixels; + int iw, ih; XImage *image; Pixmap p = 0; XWindowAttributes xgwa; @@ -213,8 +217,9 @@ xscreensaver_logo (Display *dpy, Window window, Colormap cmap, image = parse_xpm_data (dpy, xgwa.visual, xgwa.colormap, xgwa.depth, background_color, (big_p ? logo_180_xpm : logo_50_xpm), - &iw, &ih, &pixels, &npixels, + &iw, &ih, pixels_ret, npixels_ret, (mask_ret ? &mask : 0)); + if (image) { XGCValues gcv; @@ -222,6 +227,8 @@ xscreensaver_logo (Display *dpy, Window window, Colormap cmap, p = XCreatePixmap (dpy, window, iw, ih, xgwa.depth); gc = XCreateGC (dpy, p, 0, &gcv); XPutImage (dpy, p, gc, image, 0, 0, 0, 0, iw, ih); + free (image->data); + image->data = 0; XDestroyImage (image); XFreeGC (dpy, gc); diff --git a/utils/version.h b/utils/version.h index 942d03b9..035b2100 100644 --- a/utils/version.h +++ b/utils/version.h @@ -1,2 +1,2 @@ static const char screensaver_id[] = - "@(#)xscreensaver 4.01 (24-Feb-2002), by Jamie Zawinski (jwz@jwz.org)"; + "@(#)xscreensaver 4.02 (18-Mar-2002), by Jamie Zawinski (jwz@jwz.org)"; diff --git a/xscreensaver.lsm b/xscreensaver.lsm index d8983cb5..3e7f5d59 100644 --- a/xscreensaver.lsm +++ b/xscreensaver.lsm @@ -1,7 +1,7 @@ Begin3 Title: xscreensaver -Version: 4.01 -Entered-date: 24FEB02 +Version: 4.02 +Entered-date: 18MAR02 Description: A modular screen saver and locker for the X Window System. Highly customizable: allows the use of any program that can draw on the root window as a display mode. @@ -10,16 +10,16 @@ Keywords: screen saver, screen lock, lock, xlock, X11 Author: jwz@jwz.org (Jamie Zawinski) Maintained-by: jwz@jwz.org (Jamie Zawinski) Primary-site: http://www.jwz.org/xscreensaver/ - 2156K xscreensaver-4.01.tar.gz - 56K xscreensaver.README + 2205K xscreensaver-4.02.tar.gz + 57K xscreensaver.README 1K xscreensaver.lsm Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/ - 2156K xscreensaver-4.01.tar.gz - 56K xscreensaver.README + 2205K xscreensaver-4.02.tar.gz + 57K xscreensaver.README 1K xscreensaver.lsm Alternate-site: ftp.x.org /contrib/applications/ - 2156K xscreensaver-4.01.tar.gz - 56K xscreensaver.README + 2205K xscreensaver-4.02.tar.gz + 57K xscreensaver.README 1K xscreensaver.lsm Platforms: Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD, BSDI, SCO, OSF1, Ultrix, VMS. diff --git a/xscreensaver.spec b/xscreensaver.spec index 6d7a6cb1..cd858e4b 100644 --- a/xscreensaver.spec +++ b/xscreensaver.spec @@ -1,5 +1,5 @@ %define name xscreensaver -%define version 4.01 +%define version 4.02 %define release 1 %define serial 1 %define x11_prefix /usr/X11R6